From a9dcbe418d6a82d674b11bc96a2f60f730dbc04b Mon Sep 17 00:00:00 2001 From: kevalbhatt Date: Wed, 6 Nov 2019 12:03:56 +0530 Subject: [PATCH 01/15] New changes to support key-level operators enable/disable --- example/src/App.js | 4 +- package-lock.json | 6778 ++++++++++++++++++++------------------------ src/OTokenizer.js | 17 +- 3 files changed, 3136 insertions(+), 3663 deletions(-) diff --git a/example/src/App.js b/example/src/App.js index 032a5a7..0b53ef0 100755 --- a/example/src/App.js +++ b/example/src/App.js @@ -21,7 +21,7 @@ export default class App extends Component { category: "Name", type: "text", isAllowDuplicateCategories: false, - operator: () => ["==", "!==", "containes"] + operator: () => null }, { category: "Price", type: "number" }, { category: "MarketCap", type: "number" }, @@ -32,6 +32,7 @@ export default class App extends Component { fuzzySearchKeyAttribute: "sectorName", isAllowCustomValue: false, isAllowDuplicateOptions: false, + operator: null, options: this.getSectorOptions }, { @@ -86,6 +87,7 @@ export default class App extends Component { return (
= 2.1.2 < 3" - } - }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true } } }, @@ -2981,11 +3062,71 @@ "widest-line": "^2.0.0" }, "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, "camelcase": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -2999,32 +3140,14 @@ } }, "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "dev": true, "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" } }, "brorand": { @@ -3128,20 +3251,20 @@ } }, "browserslist": { - "version": "4.5.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.5.6.tgz", - "integrity": "sha512-o/hPOtbU9oX507lIqon+UvPYqpx3mHc8cV3QemSBTXwkG8gSQSK6UKvXcE/DcleU3+A59XTUHyCvZ5qGy8xVAg==", + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.7.2.tgz", + "integrity": "sha512-uZavT/gZXJd2UTi9Ov7/Z340WOSQ3+m1iBVRUknf+okKxonL9P83S3ctiBDtuRmRu8PiCHjqyueqQ9HYlJhxiw==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30000963", - "electron-to-chromium": "^1.3.127", - "node-releases": "^1.1.17" + "caniuse-lite": "^1.0.30001004", + "electron-to-chromium": "^1.3.295", + "node-releases": "^1.1.38" } }, "bser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz", - "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dev": true, "requires": { "node-int64": "^0.4.0" @@ -3246,10 +3369,9 @@ } }, "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" }, "camelcase-keys": { "version": "2.1.0", @@ -3258,13 +3380,6 @@ "requires": { "camelcase": "^2.0.0", "map-obj": "^1.0.0" - }, - "dependencies": { - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" - } } }, "caniuse-api": { @@ -3292,15 +3407,15 @@ } }, "caniuse-db": { - "version": "1.0.30000967", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000967.tgz", - "integrity": "sha512-70gk6cLSD5rItxnZ7WUxyCpM9LAjEb1tVzlENQfXQXZS/IiGnfAC6u32G5cZFlDBKjNPBIta/QSx5CZLZepxRA==", + "version": "1.0.30001006", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30001006.tgz", + "integrity": "sha512-Xn25grc0GXATFnnEX+KP3IwEv6ZdHs4CALyLKvK8pBeeBe+hSpqy3/GyKBgEp4hn6o+bI+GNeNeQBf9PBOK0EQ==", "dev": true }, "caniuse-lite": { - "version": "1.0.30000967", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000967.tgz", - "integrity": "sha512-rUBIbap+VJfxTzrM4akJ00lkvVb5/n5v3EGXfWzSH5zT8aJmGzjA8HWhJ4U6kCpzxozUSnB+yvAYDRPY6mRpgQ==", + "version": "1.0.30001006", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001006.tgz", + "integrity": "sha512-MXnUVX27aGs/QINz+QG1sWSLDr3P1A3Hq5EUWoIt0T7K24DuvMxZEnh3Y5aHlJW6Bz2aApJdSewdYLd8zQnUuw==", "dev": true }, "capture-stack-trace": { @@ -3331,14 +3446,15 @@ } }, "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "chardet": { @@ -3348,9 +3464,9 @@ "dev": true }, "chokidar": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.5.tgz", - "integrity": "sha512-i0TprVWp+Kj4WRPtInjexJ8Q+BqTE909VpH8xVhXrJkoc5QC8VO9TryGOqTr+2hljzc1sC62t22h5tZePodM/A==", + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", "dev": true, "requires": { "anymatch": "^2.0.0", @@ -3388,6 +3504,207 @@ } } }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, "glob-parent": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", @@ -3409,6 +3726,35 @@ } } }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -3424,6 +3770,59 @@ "is-extglob": "^2.1.1" } }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "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" + } + } + } + }, + "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 + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -3461,33 +3860,6 @@ "dev": true, "requires": { "chalk": "^1.1.3" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } } }, "class-utils": { @@ -3564,26 +3936,6 @@ "string-width": "^1.0.1", "strip-ansi": "^3.0.1", "wrap-ansi": "^2.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } } }, "clone": { @@ -3620,6 +3972,37 @@ "@types/q": "^1.5.1", "chalk": "^2.4.1", "q": "^1.1.2" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "code-point-at": { @@ -3690,9 +4073,9 @@ "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==", "requires": { "delayed-stream": "~1.0.0" } @@ -3811,13 +4194,10 @@ "dev": true }, "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "dev": true, - "requires": { - "date-now": "^0.1.4" - } + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true }, "console-control-strings": { "version": "1.1.0", @@ -3837,10 +4217,13 @@ "dev": true }, "content-disposition": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", - "dev": true + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } }, "content-type": { "version": "1.0.4", @@ -3864,9 +4247,9 @@ } }, "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", "dev": true }, "cookie-signature": { @@ -3882,52 +4265,56 @@ "dev": true }, "core-js": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.0.1.tgz", - "integrity": "sha512-sco40rF+2KlE0ROMvydjkrVMMG1vYilP2ALoRXcYR4obqbYIuV3Bg+51GEDW+HF8n7NRA+iaA4qD0nD9lo9mew==", + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==", "dev": true }, "core-js-compat": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.0.1.tgz", - "integrity": "sha512-2pC3e+Ht/1/gD7Sim/sqzvRplMiRnFQVlPpDVaHtY9l7zZP7knamr3VRD6NyGfHd84MrDC0tAM9ulNxYMW0T3g==", + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.3.5.tgz", + "integrity": "sha512-44ZORuapx0MUht0MUk0p9lcQPh7n/LDXehimTmjCs0CYblpKZcqVd5w0OQDUDq5OQjEbazWObHDQJWvvHYPNTg==", "dev": true, "requires": { - "browserslist": "^4.5.4", - "core-js": "3.0.1", - "core-js-pure": "3.0.1", - "semver": "^6.0.0" + "browserslist": "^4.7.2", + "semver": "^6.3.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==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true } } }, - "core-js-pure": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.0.1.tgz", - "integrity": "sha512-mSxeQ6IghKW3MoyF4cz19GJ1cMm7761ON+WObSyLfTu/Jn3x7w4NwNFnrZxgl4MTSvYYepVLNuRtlB4loMwJ5g==", - "dev": true - }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "cosmiconfig": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.0.tgz", - "integrity": "sha512-nxt+Nfc3JAqf4WIWd0jXLjTJZmsPLrA9DDc4nRw2KFJQJK7DNooqSXrNI7tzLG50CF8axczly5UV929tBmh/7g==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", "dev": true, "requires": { "import-fresh": "^2.0.0", "is-directory": "^0.3.1", - "js-yaml": "^3.13.0", + "js-yaml": "^3.13.1", "parse-json": "^4.0.0" + }, + "dependencies": { + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + } } }, "create-ecdh": { @@ -3977,25 +4364,35 @@ } }, "cross-env": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.2.0.tgz", - "integrity": "sha512-jtdNFfFW1hB7sMhr/H6rW1Z45LFqyI431m3qU6bFXcQ3Eh7LtBuG3h74o7ohHZ3crrRkkqHlo4jYHFPcjroANg==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.2.1.tgz", + "integrity": "sha512-1yHhtcfAd1r4nwQgknowuUNfIT9E8dOMMspC36g45dN+iD1blloi7xp8X/xAIDnjHWyt1uQ8PHk2fkNaym7soQ==", "dev": true, "requires": { - "cross-spawn": "^6.0.5", - "is-windows": "^1.0.0" + "cross-spawn": "^6.0.5" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + } } }, "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", + "lru-cache": "^4.0.1", "which": "^1.2.9" } }, @@ -4052,33 +4449,6 @@ "source-list-map": "^2.0.0" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", @@ -4097,6 +4467,12 @@ "supports-color": "^3.2.3" } }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", @@ -4122,33 +4498,6 @@ "postcss-modules-values": "1.3.0" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", @@ -4175,6 +4524,12 @@ "postcss": "^6.0.1" } }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", @@ -4250,21 +4605,23 @@ } }, "css-tree": { - "version": "1.0.0-alpha.28", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.28.tgz", - "integrity": "sha512-joNNW1gCp3qFFzj4St6zk+Wh/NBv0vM5YbEreZk0SD4S23S+1xBKb6cLDg2uj4P4k/GUMlIm6cKIDqIG+vdt0w==", + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", "dev": true, "requires": { - "mdn-data": "~1.1.0", - "source-map": "^0.5.3" + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, - "css-url-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/css-url-regex/-/css-url-regex-1.1.0.tgz", - "integrity": "sha1-g4NCMMyfdMRX3lnuvRVD/uuDt+w=", - "dev": true - }, "css-what": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", @@ -4317,12 +4674,6 @@ "postcss-zindex": "^2.0.1" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, "autoprefixer": { "version": "6.7.7", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", @@ -4347,27 +4698,6 @@ "electron-to-chromium": "^1.2.7" } }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", @@ -4386,6 +4716,12 @@ "supports-color": "^3.2.3" } }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", @@ -4398,39 +4734,35 @@ } }, "csso": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/csso/-/csso-3.5.1.tgz", - "integrity": "sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.2.tgz", + "integrity": "sha512-kS7/oeNVXkHWxby5tHVxlhjizRCSv8QdU7hB2FpdAibDU8FjTAolhNjKNTiLzXtUrKT6HwClE81yXwEk1309wg==", "dev": true, "requires": { - "css-tree": "1.0.0-alpha.29" - }, - "dependencies": { - "css-tree": { - "version": "1.0.0-alpha.29", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.29.tgz", - "integrity": "sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg==", - "dev": true, - "requires": { - "mdn-data": "~1.1.0", - "source-map": "^0.5.3" - } - } + "css-tree": "1.0.0-alpha.37" } }, "cssom": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.6.tgz", - "integrity": "sha512-DtUeseGk9/GBW0hl0vVPpU22iHL6YB5BUX7ml1hB+GMpo0NX5G4voX3kdWiMSEguFtcW3Vh3djqNF4aIe6ne0A==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.1.tgz", + "integrity": "sha512-6Aajq0XmukE7HdXUU6IoSWuH1H6gH9z6qmagsstTiN7cW2FNTsb+J2Chs+ufPgZCsV/yo8oaEudQLrb9dGxSVQ==", "dev": true }, "cssstyle": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.2.2.tgz", - "integrity": "sha512-43wY3kl1CVQSvL7wUY1qXkxVGkStjpkDmVjiIKX8R97uhajy8Bybay78uOtqvh7Q5GK75dNPfW0geWjE6qQQow==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.0.0.tgz", + "integrity": "sha512-QXSAu2WBsSRXCPjvI43Y40m6fMevvyRm8JVAuF9ksQz5jha4pWP1wpaK7Yu5oLFc6+XAY+hj8YhefyXcBB53gg==", "dev": true, "requires": { - "cssom": "0.3.x" + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + } } }, "currently-unhandled": { @@ -4442,18 +4774,19 @@ } }, "d": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", - "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", "dev": true, "requires": { - "es5-ext": "^0.10.9" + "es5-ext": "^0.10.50", + "type": "^1.0.1" } }, "damerau-levenshtein": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz", - "integrity": "sha1-AxkcQyy27qFou3fzpV/9zLiXhRQ=", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.5.tgz", + "integrity": "sha512-CBCRqFnpu715iPmw1KrdOrzRqbdFwQTwAWyyyYS42+iAgHCuXZ+/TdMgQkUENPomxEz9z1BEzuQU2Xw0kUuAgA==", "dev": true }, "dashdash": { @@ -4475,12 +4808,6 @@ "whatwg-url": "^7.0.0" } }, - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", - "dev": true - }, "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", @@ -4502,10 +4829,18 @@ "dev": true }, "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", - "dev": true + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.0.tgz", + "integrity": "sha512-ZbfWJq/wN1Z273o7mUSjILYqehAktR2NVoSrOukDkU9kg2v/Uv89yU4Cvz8seJeAmtN5oqiefKq8FPuXOboqLw==", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } }, "deep-extend": { "version": "0.6.0", @@ -4526,17 +4861,6 @@ "dev": true, "requires": { "strip-bom": "^2.0.0" - }, - "dependencies": { - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - } } }, "define-properties": { @@ -4767,13 +5091,21 @@ } }, "dom-serializer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", - "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.1.tgz", + "integrity": "sha512-sK3ujri04WyjwQXVoK4PU3y8ula1stq10GJZpqHIUgoGZdsGzAGu65BnU3d08aTVSvO7mGPZUc0wTEDL+qGE0Q==", "dev": true, "requires": { - "domelementtype": "^1.3.0", - "entities": "^1.1.1" + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", + "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==", + "dev": true + } } }, "dom-urls": { @@ -4874,15 +5206,15 @@ "dev": true }, "electron-to-chromium": { - "version": "1.3.131", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.131.tgz", - "integrity": "sha512-NSO4jLeyGLWrT4mzzfYX8vt1MYCoMI5LxSYAjt0H9+LF/14JyiKJSyyjA6AJTxflZlEM5v3QU33F0ohbPMCAPg==", + "version": "1.3.296", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.296.tgz", + "integrity": "sha512-s5hv+TSJSVRsxH190De66YHb50pBGTweT9XGWYu/LMR20KX6TsjFzObo36CjVAzM+PUeeKSBRtm/mISlCzeojQ==", "dev": true }, "elliptic": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", - "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.1.tgz", + "integrity": "sha512-xvJINNLbTeWQjrl6X+7eQCrIy/YPv5XCpKW6kB5mKvtnGILoLDcySuwomfdzt0BMdLNVnuRNTuzKNHj0bva1Cg==", "dev": true, "requires": { "bn.js": "^4.4.0", @@ -4925,9 +5257,9 @@ } }, "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz", + "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==", "dev": true }, "errno": { @@ -4948,17 +5280,21 @@ } }, "es-abstract": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", - "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.16.0.tgz", + "integrity": "sha512-xdQnfykZ9JMEiasTAJZJdMWCQ1Vm00NBw79/AWi7ELfZuuPCSOMDZbT9mkOfSctVtfhb+sAAzrm+j//GjjLHLg==", "dev": true, "requires": { "es-to-primitive": "^1.2.0", "function-bind": "^1.1.1", "has": "^1.0.3", + "has-symbols": "^1.0.0", "is-callable": "^1.1.4", "is-regex": "^1.0.4", - "object-keys": "^1.0.12" + "object-inspect": "^1.6.0", + "object-keys": "^1.1.1", + "string.prototype.trimleft": "^2.1.0", + "string.prototype.trimright": "^2.1.0" } }, "es-to-primitive": { @@ -4973,14 +5309,14 @@ } }, "es5-ext": { - "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==", + "version": "0.10.52", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.52.tgz", + "integrity": "sha512-bWCbE9fbpYQY4CU6hJbJ1vSz70EClMlDgJ7BmwI+zEJhxrwjesZRPglGJlsZhu0334U3hI+gaspwksH9IGD6ag==", "dev": true, "requires": { "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.1", - "next-tick": "^1.0.0" + "es6-symbol": "~3.1.2", + "next-tick": "~1.0.0" } }, "es6-iterator": { @@ -5009,9 +5345,9 @@ } }, "es6-promise": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.6.tgz", - "integrity": "sha512-aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", "dev": true }, "es6-set": { @@ -5025,27 +5361,39 @@ "es6-iterator": "~2.0.1", "es6-symbol": "3.1.1", "event-emitter": "~0.3.5" + }, + "dependencies": { + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + } } }, "es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", "dev": true, "requires": { - "d": "1", - "es5-ext": "~0.10.14" + "d": "^1.0.1", + "ext": "^1.1.2" } }, "es6-weak-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", - "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", "dev": true, "requires": { "d": "1", - "es5-ext": "^0.10.14", - "es6-iterator": "^2.0.1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", "es6-symbol": "^3.1.1" } }, @@ -5061,9 +5409,9 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "escodegen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.1.tgz", - "integrity": "sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw==", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.12.0.tgz", + "integrity": "sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg==", "dev": true, "requires": { "esprima": "^3.1.3", @@ -5150,6 +5498,39 @@ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, "eslint-scope": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", @@ -5161,9 +5542,9 @@ } }, "import-fresh": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.0.0.tgz", - "integrity": "sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.1.0.tgz", + "integrity": "sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==", "dev": true, "requires": { "parent-module": "^1.0.0", @@ -5184,6 +5565,15 @@ "requires": { "ansi-regex": "^3.0.0" } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -5255,9 +5645,9 @@ } }, "eslint-module-utils": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.4.0.tgz", - "integrity": "sha512-14tltLm38Eu3zS+mt0KvILC3q8jyIAH518MlG+HO0p+yK885Lb1UHTY/UgR91eOyGdmxAPb+OLoW4znqIT6Ndw==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.4.1.tgz", + "integrity": "sha512-H6DOj+ejw7Tesdgbfs4jeS4YMFrT8uI8xwd1gtQqXssaR0EQ26L+2O/w6wkYFy2MymON0fTwHmXBvvfLNZVZEw==", "dev": true, "requires": { "debug": "^2.6.8", @@ -5282,12 +5672,12 @@ } }, "eslint-plugin-es": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-1.4.0.tgz", - "integrity": "sha512-XfFmgFdIUDgvaRAlaXUkxrRg5JSADoRC8IkKLc/cISeR3yHVMefFHQZpcyXXEUUPHfy5DwviBcrfqlyqEwlQVw==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-1.4.1.tgz", + "integrity": "sha512-5fa/gR2yR3NxQf+UXkeLeP8FBBl6tSgdrAz1+cF84v1FMM4twGwQoqTnn+QxFLcPOrF4pdKEJKDB/q9GoyJrCA==", "dev": true, "requires": { - "eslint-utils": "^1.3.0", + "eslint-utils": "^1.4.2", "regexpp": "^2.0.1" } }, @@ -5301,9 +5691,9 @@ } }, "eslint-plugin-import": { - "version": "2.17.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.17.2.tgz", - "integrity": "sha512-m+cSVxM7oLsIpmwNn2WXTJoReOF9f/CtLMo7qOVmKd1KntBy0hEcuNZ3erTmWjx+DxRO0Zcrm5KwAvI9wHcV5g==", + "version": "2.18.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz", + "integrity": "sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ==", "dev": true, "requires": { "array-includes": "^3.0.3", @@ -5313,10 +5703,10 @@ "eslint-import-resolver-node": "^0.3.2", "eslint-module-utils": "^2.4.0", "has": "^1.0.3", - "lodash": "^4.17.11", "minimatch": "^3.0.4", + "object.values": "^1.1.0", "read-pkg-up": "^2.0.0", - "resolve": "^1.10.0" + "resolve": "^1.11.0" }, "dependencies": { "debug": { @@ -5338,13 +5728,70 @@ "isarray": "^1.0.0" } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } }, "eslint-plugin-jsx-a11y": { "version": "5.1.1", @@ -5390,24 +5837,26 @@ } }, "eslint-plugin-promise": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.1.1.tgz", - "integrity": "sha512-faAHw7uzlNPy7b45J1guyjazw28M+7gJokKUjC5JSFoYfUEyy6Gw/i7YQvmv2Yk00sUjWcmzXQLpU1Ki/C2IZQ==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz", + "integrity": "sha512-VoM09vT7bfA7D+upt+FjeBO5eHIJQBUWki1aPvB+vbNiHS3+oGIJGIeyBtKQTME6UPXXy3vV07OL1tHd3ANuDw==", "dev": true }, "eslint-plugin-react": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.13.0.tgz", - "integrity": "sha512-uA5LrHylu8lW/eAH3bEQe9YdzpPaFd9yAJTwTi/i/BKTD7j6aQMKVAdGM/ML72zD6womuSK7EiGtMKuK06lWjQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.16.0.tgz", + "integrity": "sha512-GacBAATewhhptbK3/vTP09CbFrgUJmBSaaRcWdbQLFvUZy9yVcQxigBNHGPU/KE2AyHpzj3AWXpxoMTsIDiHug==", "dev": true, "requires": { "array-includes": "^3.0.3", "doctrine": "^2.1.0", "has": "^1.0.3", - "jsx-ast-utils": "^2.1.0", + "jsx-ast-utils": "^2.2.1", + "object.entries": "^1.1.0", "object.fromentries": "^2.0.0", + "object.values": "^1.1.0", "prop-types": "^15.7.2", - "resolve": "^1.10.1" + "resolve": "^1.12.0" }, "dependencies": { "doctrine": { @@ -5438,15 +5887,18 @@ } }, "eslint-utils": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.3.1.tgz", - "integrity": "sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q==", - "dev": true + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } }, "eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", + "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", "dev": true }, "espree": { @@ -5458,6 +5910,14 @@ "acorn": "^6.0.7", "acorn-jsx": "^5.0.0", "eslint-visitor-keys": "^1.0.0" + }, + "dependencies": { + "acorn": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.3.0.tgz", + "integrity": "sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA==", + "dev": true + } } }, "esprima": { @@ -5485,21 +5945,21 @@ } }, "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true }, "estree-walker": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.0.tgz", - "integrity": "sha512-peq1RfVAVzr3PU/jL31RaOjUKLoZJpObQWJJ+LgfcxDUifyLZ1RjPQZTl0pzj2uJ45b7A7XpyppXvxdEqzo4rw==", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", "dev": true }, "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, "etag": { @@ -5519,9 +5979,9 @@ } }, "eventemitter3": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", - "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz", + "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==", "dev": true }, "events": { @@ -5587,53 +6047,12 @@ } }, "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "dev": true, "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } + "is-posix-bracket": "^0.1.0" } }, "expand-range": { @@ -5643,39 +6062,6 @@ "dev": true, "requires": { "fill-range": "^2.1.0" - }, - "dependencies": { - "fill-range": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", - "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", - "dev": true, - "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^3.0.0", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" - } - }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } } }, "expand-tilde": { @@ -5688,39 +6074,39 @@ } }, "express": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz", - "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==", + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", "dev": true, "requires": { - "accepts": "~1.3.5", + "accepts": "~1.3.7", "array-flatten": "1.1.1", - "body-parser": "1.18.3", - "content-disposition": "0.5.2", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", "content-type": "~1.0.4", - "cookie": "0.3.1", + "cookie": "0.4.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "~1.1.2", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.1.1", + "finalhandler": "~1.1.2", "fresh": "0.5.2", "merge-descriptors": "1.0.1", "methods": "~1.1.2", "on-finished": "~2.3.0", - "parseurl": "~1.3.2", + "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.4", - "qs": "6.5.2", - "range-parser": "~1.2.0", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", "safe-buffer": "5.1.2", - "send": "0.16.2", - "serve-static": "1.13.2", - "setprototypeof": "1.1.0", - "statuses": "~1.4.0", - "type-is": "~1.6.16", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" }, @@ -5751,6 +6137,29 @@ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + } + } + }, + "ext": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.1.2.tgz", + "integrity": "sha512-/KLjJdTNyDepCihrk4HQt57nAE1IRCEo5jUt+WgWGCr1oARhibDvmI2DMcSNWood1T9AUWwq+jaV1wvRqaXfnA==", + "dev": true, + "requires": { + "type": "^2.0.0" + }, + "dependencies": { + "type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", + "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==", + "dev": true } } }, @@ -5781,9 +6190,9 @@ } }, "external-editor": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", - "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "dev": true, "requires": { "chardet": "^0.7.0", @@ -5792,74 +6201,12 @@ } }, "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "dev": true, "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "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 - } + "is-extglob": "^1.0.0" } }, "extract-text-webpack-plugin": { @@ -5902,9 +6249,9 @@ "dev": true }, "faye-websocket": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", - "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", "dev": true, "requires": { "websocket-driver": ">=0.5.1" @@ -5997,40 +6344,41 @@ "dev": true }, "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" }, "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "isarray": "1.0.0" } } } }, "finalhandler": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", - "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", "dev": true, "requires": { "debug": "2.6.9", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.4.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", "unpipe": "~1.0.0" }, "dependencies": { @@ -6063,12 +6411,12 @@ } }, "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "requires": { - "locate-path": "^2.0.0" + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, "flat-cache": { @@ -6080,27 +6428,38 @@ "flatted": "^2.0.0", "rimraf": "2.6.3", "write": "1.0.3" + }, + "dependencies": { + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } } }, "flatted": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.0.tgz", - "integrity": "sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", + "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", "dev": true }, "flatten": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", - "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", + "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==", "dev": true }, "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==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.9.0.tgz", + "integrity": "sha512-CRcPzsSIbXyVDl0QI01muNDu69S8trU4jArW9LpOt2WtC6LyUJetcIrmfHsRBx7/Jb6GHJUiuqyYxPooFfNt6A==", "dev": true, "requires": { - "debug": "^3.2.6" + "debug": "^3.0.0" }, "dependencies": { "debug": { @@ -6194,28 +6553,25 @@ "dependencies": { "abbrev": { "version": "1.1.1", - "resolved": false, - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "bundled": true, "dev": true, "optional": true }, "ansi-regex": { "version": "2.1.1", - "resolved": false, - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true + "bundled": true, + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", - "resolved": false, - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "bundled": true, "dev": true, "optional": true }, "are-we-there-yet": { "version": "1.1.5", - "resolved": false, - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -6225,15 +6581,15 @@ }, "balanced-match": { "version": "1.0.0", - "resolved": false, - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true + "bundled": true, + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", - "resolved": false, - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -6241,40 +6597,37 @@ }, "chownr": { "version": "1.1.1", - "resolved": false, - "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", + "bundled": true, "dev": true, "optional": true }, "code-point-at": { "version": "1.1.0", - "resolved": false, - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true + "bundled": true, + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", - "resolved": false, - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true + "bundled": true, + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", - "resolved": false, - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "dev": true + "bundled": true, + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", - "resolved": false, - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "bundled": true, "dev": true, "optional": true }, "debug": { "version": "4.1.1", - "resolved": false, - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -6283,29 +6636,25 @@ }, "deep-extend": { "version": "0.6.0", - "resolved": false, - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "bundled": true, "dev": true, "optional": true }, "delegates": { "version": "1.0.0", - "resolved": false, - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "bundled": true, "dev": true, "optional": true }, "detect-libc": { "version": "1.0.3", - "resolved": false, - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "bundled": true, "dev": true, "optional": true }, "fs-minipass": { "version": "1.2.5", - "resolved": false, - "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -6314,15 +6663,13 @@ }, "fs.realpath": { "version": "1.0.0", - "resolved": false, - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "bundled": true, "dev": true, "optional": true }, "gauge": { "version": "2.7.4", - "resolved": false, - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -6338,8 +6685,7 @@ }, "glob": { "version": "7.1.3", - "resolved": false, - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -6353,15 +6699,13 @@ }, "has-unicode": { "version": "2.0.1", - "resolved": false, - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "bundled": true, "dev": true, "optional": true }, "iconv-lite": { "version": "0.4.24", - "resolved": false, - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -6370,8 +6714,7 @@ }, "ignore-walk": { "version": "3.0.1", - "resolved": false, - "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -6380,8 +6723,7 @@ }, "inflight": { "version": "1.0.6", - "resolved": false, - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -6391,53 +6733,51 @@ }, "inherits": { "version": "2.0.3", - "resolved": false, - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true + "bundled": true, + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", - "resolved": false, - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "bundled": true, "dev": true, "optional": true }, "is-fullwidth-code-point": { "version": "1.0.0", - "resolved": false, - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } }, "isarray": { "version": "1.0.0", - "resolved": false, - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "bundled": true, "dev": true, "optional": true }, "minimatch": { "version": "3.0.4", - "resolved": false, - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { "version": "0.0.8", - "resolved": false, - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true + "bundled": true, + "dev": true, + "optional": true }, "minipass": { "version": "2.3.5", - "resolved": false, - "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", + "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -6445,8 +6785,7 @@ }, "minizlib": { "version": "1.2.1", - "resolved": false, - "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -6455,24 +6794,22 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": false, - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } }, "ms": { "version": "2.1.1", - "resolved": false, - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "bundled": true, "dev": true, "optional": true }, "needle": { "version": "2.3.0", - "resolved": false, - "integrity": "sha512-QBZu7aAFR0522EyaXZM0FZ9GLpq6lvQ3uq8gteiDUp7wKdy0lSd2hPlgFwVuW1CBkfEs9PfDQsQzZghLs/psdg==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -6483,8 +6820,7 @@ }, "node-pre-gyp": { "version": "0.12.0", - "resolved": false, - "integrity": "sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -6502,8 +6838,7 @@ }, "nopt": { "version": "4.0.1", - "resolved": false, - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -6513,15 +6848,13 @@ }, "npm-bundled": { "version": "1.0.6", - "resolved": false, - "integrity": "sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==", + "bundled": true, "dev": true, "optional": true }, "npm-packlist": { "version": "1.4.1", - "resolved": false, - "integrity": "sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -6531,8 +6864,7 @@ }, "npmlog": { "version": "4.1.2", - "resolved": false, - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -6544,44 +6876,40 @@ }, "number-is-nan": { "version": "1.0.1", - "resolved": false, - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true + "bundled": true, + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", - "resolved": false, - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "bundled": true, "dev": true, "optional": true }, "once": { "version": "1.4.0", - "resolved": false, - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } }, "os-homedir": { "version": "1.0.2", - "resolved": false, - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "bundled": true, "dev": true, "optional": true }, "os-tmpdir": { "version": "1.0.2", - "resolved": false, - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "bundled": true, "dev": true, "optional": true }, "osenv": { "version": "0.1.5", - "resolved": false, - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -6591,22 +6919,19 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": false, - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "bundled": true, "dev": true, "optional": true }, "process-nextick-args": { "version": "2.0.0", - "resolved": false, - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "bundled": true, "dev": true, "optional": true }, "rc": { "version": "1.2.8", - "resolved": false, - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -6618,8 +6943,7 @@ "dependencies": { "minimist": { "version": "1.2.0", - "resolved": false, - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "bundled": true, "dev": true, "optional": true } @@ -6627,8 +6951,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": false, - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -6643,8 +6966,7 @@ }, "rimraf": { "version": "2.6.3", - "resolved": false, - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -6653,50 +6975,45 @@ }, "safe-buffer": { "version": "5.1.2", - "resolved": false, - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "bundled": true, + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", - "resolved": false, - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "bundled": true, "dev": true, "optional": true }, "sax": { "version": "1.2.4", - "resolved": false, - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "bundled": true, "dev": true, "optional": true }, "semver": { "version": "5.7.0", - "resolved": false, - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "bundled": true, "dev": true, "optional": true }, "set-blocking": { "version": "2.0.0", - "resolved": false, - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "bundled": true, "dev": true, "optional": true }, "signal-exit": { "version": "3.0.2", - "resolved": false, - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "bundled": true, "dev": true, "optional": true }, "string-width": { "version": "1.0.2", - "resolved": false, - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -6705,8 +7022,7 @@ }, "string_decoder": { "version": "1.1.1", - "resolved": false, - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -6715,24 +7031,22 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": false, - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } }, "strip-json-comments": { "version": "2.0.1", - "resolved": false, - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "bundled": true, "dev": true, "optional": true }, "tar": { "version": "4.4.8", - "resolved": false, - "integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -6747,15 +7061,13 @@ }, "util-deprecate": { "version": "1.0.2", - "resolved": false, - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "bundled": true, "dev": true, "optional": true }, "wide-align": { "version": "1.1.3", - "resolved": false, - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "bundled": true, "dev": true, "optional": true, "requires": { @@ -6764,22 +7076,22 @@ }, "wrappy": { "version": "1.0.2", - "resolved": false, - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "bundled": true, + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", - "resolved": false, - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", - "dev": true + "bundled": true, + "dev": true, + "optional": true } } }, "fstream": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", - "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", "requires": { "graceful-fs": "^4.1.2", "inherits": "~2.0.0", @@ -6817,26 +7129,6 @@ "string-width": "^1.0.1", "strip-ansi": "^3.0.1", "wide-align": "^1.1.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } } }, "gaze": { @@ -6936,9 +7228,9 @@ } }, "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.5.tgz", + "integrity": "sha512-J9dlskqUXK1OeTOYBEn5s8aMukWMwWfs+rPTn/jn50Ux4MNXVhubL1wu/j2t+H4NVI+cXEcCaYellqaPVGXNqQ==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -7049,9 +7341,9 @@ } }, "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==" }, "growly": { "version": "1.3.0", @@ -7129,9 +7421,9 @@ "dev": true }, "handlebars": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz", - "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.1.tgz", + "integrity": "sha512-C29UoFzHe9yM61lOsIlCE5/mQVGrnIOrOq7maQl76L7tYPCgC1og0Ajt6uWnX4ZTxBPnjw+CUvawphwCfJgUnA==", "dev": true, "requires": { "neo-async": "^2.6.0", @@ -7217,6 +7509,26 @@ "kind-of": "^4.0.0" }, "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, "kind-of": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", @@ -7285,9 +7597,9 @@ } }, "hosted-git-info": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==" + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", + "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==" }, "hpack.js": { "version": "2.1.6", @@ -7399,10 +7711,16 @@ "readable-stream": "^3.1.1" }, "dependencies": { + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, "readable-stream": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.3.0.tgz", - "integrity": "sha512-EsI+s3k3XsW+fU8fQACLN59ky34AZ14LoeVZpYwmZvldCFo0r0gnelwF2TcMjLor/BTL5aDJVBMkss0dthToPw==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", + "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", "dev": true, "requires": { "inherits": "^2.0.3", @@ -7419,30 +7737,39 @@ "dev": true }, "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", "dev": true, "requires": { "depd": "~1.1.2", "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } } }, "http-parser-js": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.0.tgz", - "integrity": "sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w==", + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz", + "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=", "dev": true }, "http-proxy": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", - "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz", + "integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==", "dev": true, "requires": { - "eventemitter3": "^3.0.0", + "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", "requires-port": "^1.0.0" } @@ -7459,58 +7786,6 @@ "micromatch": "^2.3.11" }, "dependencies": { - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - }, - "dependencies": { - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - } - } - }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -7525,44 +7800,6 @@ "requires": { "is-extglob": "^2.1.0" } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - }, - "dependencies": { - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - } - } } } }, @@ -7697,12 +7934,6 @@ "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", "dev": true }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", - "dev": true - }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -7713,9 +7944,9 @@ } }, "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ini": { "version": "1.3.5", @@ -7724,9 +7955,9 @@ "dev": true }, "inquirer": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.3.1.tgz", - "integrity": "sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", + "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", "dev": true, "requires": { "ansi-escapes": "^3.2.0", @@ -7735,7 +7966,7 @@ "cli-width": "^2.0.0", "external-editor": "^3.0.3", "figures": "^2.0.0", - "lodash": "^4.17.11", + "lodash": "^4.17.12", "mute-stream": "0.0.7", "run-async": "^2.2.0", "rxjs": "^6.4.0", @@ -7745,11 +7976,58 @@ }, "dependencies": { "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", @@ -7757,6 +8035,23 @@ "dev": true, "requires": { "ansi-regex": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + } + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" } } } @@ -7796,6 +8091,12 @@ "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", "dev": true }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "dev": true + }, "ipaddr.js": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", @@ -7817,6 +8118,12 @@ "kind-of": "^3.0.2" } }, + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "dev": true + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -7937,9 +8244,12 @@ } }, "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } }, "is-glob": { "version": "2.0.1", @@ -7973,9 +8283,9 @@ "dev": true }, "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "dev": true, "requires": { "kind-of": "^3.0.2" @@ -8066,9 +8376,9 @@ "dev": true }, "is-retry-allowed": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", - "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", + "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==", "dev": true }, "is-root": { @@ -8243,6 +8553,12 @@ "requires": { "ms": "^2.1.1" } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true } } }, @@ -8270,69 +8586,6 @@ "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", "dev": true }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, "jest-cli": { "version": "20.0.4", "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-20.0.4.tgz", @@ -8370,33 +8623,6 @@ "worker-farm": "^1.3.1", "yargs": "^7.0.2" } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true } } }, @@ -8422,33 +8648,6 @@ "jest-resolve": "^20.0.4", "jest-validate": "^20.0.3", "pretty-format": "^20.0.3" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } } }, "jest-diff": { @@ -8461,33 +8660,6 @@ "diff": "^3.2.0", "jest-matcher-utils": "^20.0.3", "pretty-format": "^20.0.3" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } } }, "jest-docblock": { @@ -8528,6 +8700,12 @@ "acorn": "^4.0.4" } }, + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, "cssstyle": { "version": "0.2.37", "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", @@ -8624,73 +8802,6 @@ "micromatch": "^2.3.11", "sane": "~1.6.0", "worker-farm": "^1.3.1" - }, - "dependencies": { - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - } - } } }, "jest-jasmine2": { @@ -8708,33 +8819,6 @@ "jest-snapshot": "^20.0.3", "once": "^1.4.0", "p-map": "^1.1.1" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } } }, "jest-matcher-utils": { @@ -8745,33 +8829,6 @@ "requires": { "chalk": "^1.1.3", "pretty-format": "^20.0.3" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } } }, "jest-matchers": { @@ -8795,98 +8852,6 @@ "chalk": "^1.1.3", "micromatch": "^2.3.11", "slash": "^1.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } } }, "jest-mock": { @@ -8944,94 +8909,10 @@ "yargs": "^7.0.2" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", "dev": true } } @@ -9048,33 +8929,6 @@ "jest-util": "^20.0.3", "natural-compare": "^1.4.0", "pretty-format": "^20.0.3" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } } }, "jest-util": { @@ -9090,33 +8944,6 @@ "jest-validate": "^20.0.3", "leven": "^2.1.0", "mkdirp": "^0.5.1" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } } }, "jest-validate": { @@ -9129,33 +8956,6 @@ "jest-matcher-utils": "^20.0.3", "leven": "^2.1.0", "pretty-format": "^20.0.3" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } } }, "js-base64": { @@ -9191,37 +8991,50 @@ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" }, "jsdom": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.0.0.tgz", - "integrity": "sha512-rJnHm7CHyIj4tDyz9VaCt0f0P0nEh/wEmMfwp9mMixy+L/r8OW/BNcgmIlfZuBBnVQS3eRBpvd/qM3R7vr7e3A==", + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.2.0.tgz", + "integrity": "sha512-+hRyEfjRPFwTYMmSQ3/f7U9nP8ZNZmbkmUek760ZpxnCPWJIhaaLRuUSvpJ36fZKCGENxLwxClzwpOpnXNfChQ==", "dev": true, "requires": { "abab": "^2.0.0", - "acorn": "^6.0.4", - "acorn-globals": "^4.3.0", + "acorn": "^7.1.0", + "acorn-globals": "^4.3.2", "array-equal": "^1.0.0", - "cssom": "^0.3.4", - "cssstyle": "^1.1.1", + "cssom": "^0.4.1", + "cssstyle": "^2.0.0", "data-urls": "^1.1.0", "domexception": "^1.0.1", - "escodegen": "^1.11.0", + "escodegen": "^1.11.1", "html-encoding-sniffer": "^1.0.2", - "nwsapi": "^2.1.3", + "nwsapi": "^2.1.4", "parse5": "5.1.0", "pn": "^1.1.0", "request": "^2.88.0", - "request-promise-native": "^1.0.5", + "request-promise-native": "^1.0.7", "saxes": "^3.1.9", "symbol-tree": "^3.2.2", - "tough-cookie": "^2.5.0", + "tough-cookie": "^3.0.1", "w3c-hr-time": "^1.0.1", "w3c-xmlserializer": "^1.1.2", "webidl-conversions": "^4.0.2", "whatwg-encoding": "^1.0.5", "whatwg-mimetype": "^2.3.0", "whatwg-url": "^7.0.0", - "ws": "^6.1.2", + "ws": "^7.0.0", "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "tough-cookie": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", + "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", + "dev": true, + "requires": { + "ip-regex": "^2.1.0", + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + } } }, "jsesc": { @@ -9273,15 +9086,15 @@ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, "json3": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", - "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", + "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", "dev": true }, "json5": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", - "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz", + "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==", "dev": true, "requires": { "minimist": "^1.2.0" @@ -9314,12 +9127,13 @@ } }, "jsx-ast-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.1.0.tgz", - "integrity": "sha512-yDGDG2DS4JcqhA6blsuYbtsT09xL8AoLuUR2Gb5exrw7UEM19sBcOTq+YBBhrNbl0PUC4R4LnFu+dHg2HKeVvA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz", + "integrity": "sha512-EdIHFMm+1BPynpKOpdPqiOsvnIrInRGJD7bzPZdPkjitQEqpdpUuFpq4T0npZFKTiB3RhWFdGN+oqOJIdhDhQA==", "dev": true, "requires": { - "array-includes": "^3.0.3" + "array-includes": "^3.0.3", + "object.assign": "^4.1.0" } }, "killable": { @@ -9386,26 +9200,15 @@ } }, "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", - "dev": true, + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "requires": { "graceful-fs": "^4.1.2", "parse-json": "^2.2.0", "pify": "^2.0.0", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - } + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" } }, "loader-fs-cache": { @@ -9429,32 +9232,13 @@ "pkg-dir": "^1.0.0" } }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", "dev": true, "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "pkg-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", - "dev": true, - "requires": { - "find-up": "^1.0.0" + "find-up": "^1.0.0" } } } @@ -9495,12 +9279,20 @@ "requires": { "p-locate": "^2.0.0", "path-exists": "^3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } } }, "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" }, "lodash._reinterpolate": { "version": "3.0.0", @@ -9539,22 +9331,22 @@ "dev": true }, "lodash.template": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz", - "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", "dev": true, "requires": { - "lodash._reinterpolate": "~3.0.0", + "lodash._reinterpolate": "^3.0.0", "lodash.templatesettings": "^4.0.0" } }, "lodash.templatesettings": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz", - "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", "dev": true, "requires": { - "lodash._reinterpolate": "~3.0.0" + "lodash._reinterpolate": "^3.0.0" } }, "lodash.uniq": { @@ -9564,9 +9356,9 @@ "dev": true }, "loglevel": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", - "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=", + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.4.tgz", + "integrity": "sha512-p0b6mOGKcGa+7nnmKbpzR6qloPbrgLcnio++E+14Vo/XffOGwZtRpUhr8dTH/x2oCMmEoIU0Zwm3ZauhvYD17g==", "dev": true }, "longest": { @@ -9615,9 +9407,9 @@ } }, "magic-string": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.2.tgz", - "integrity": "sha512-iLs9mPjh9IuTtRsqqhNGYcZXGei0Nh/A4xirrsqW7c+QhKVFL2vm7U09ru6cHRD22azaP/wMDgI+HCqbETMTtg==", + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.4.tgz", + "integrity": "sha512-oycWO9nEVAP2RVPbIoDoA4Y7LFIJ3xRYov93gAyJhZkET1tNuB0u7uWkZS2LpBWTJUWnmau/To8ECWRC+jKNfw==", "dev": true, "requires": { "sourcemap-codec": "^1.4.4" @@ -9693,9 +9485,9 @@ } }, "mdn-data": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-1.1.4.tgz", - "integrity": "sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", "dev": true }, "media-typer": { @@ -9738,82 +9530,6 @@ "read-pkg-up": "^1.0.1", "redent": "^1.0.0", "trim-newlines": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "requires": { - "error-ex": "^1.2.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "requires": { - "is-utf8": "^0.2.0" - } - } } }, "merge": { @@ -9846,32 +9562,24 @@ "dev": true }, "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "dev": true, "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "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 - } + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" } }, "miller-rabin": { @@ -9935,9 +9643,9 @@ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" }, "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", "dev": true, "requires": { "for-in": "^1.0.2", @@ -9994,9 +9702,9 @@ "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" }, "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==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, "multicast-dns": { @@ -10022,9 +9730,9 @@ "dev": true }, "nan": { - "version": "2.13.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.13.2.tgz", - "integrity": "sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw==" + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" }, "nanomatch": { "version": "1.2.13", @@ -10045,6 +9753,18 @@ "to-regex": "^3.0.1" }, "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", @@ -10066,9 +9786,9 @@ "dev": true }, "neo-async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz", - "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", "dev": true }, "next-tick": { @@ -10093,9 +9813,9 @@ } }, "node-forge": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", - "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz", + "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==", "dev": true }, "node-gyp": { @@ -10131,9 +9851,9 @@ "dev": true }, "node-libs-browser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.0.tgz", - "integrity": "sha512-5MQunG/oyOaBdttrL40dA7bUfPORLRWMUJLQtMg7nluxUvk5XwnLdL9twQHFAjRx/y7mIMkLKT9++qPbbk6BZA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", "dev": true, "requires": { "assert": "^1.1.1", @@ -10146,7 +9866,7 @@ "events": "^3.0.0", "https-browserify": "^1.0.0", "os-browserify": "^0.3.0", - "path-browserify": "0.0.0", + "path-browserify": "0.0.1", "process": "^0.11.10", "punycode": "^1.2.4", "querystring-es3": "^0.2.0", @@ -10158,7 +9878,7 @@ "tty-browserify": "0.0.0", "url": "^0.11.0", "util": "^0.11.0", - "vm-browserify": "0.0.4" + "vm-browserify": "^1.0.1" }, "dependencies": { "punycode": { @@ -10170,9 +9890,9 @@ } }, "node-notifier": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.0.tgz", - "integrity": "sha512-SUDEb+o71XR5lXSTyivXd9J7fCloE3SyP4lSgt3lU2oSANiox+SxlNRGPjDKrwU1YN3ix2KN/VGGCg0t01rttQ==", + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.3.tgz", + "integrity": "sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q==", "dev": true, "requires": { "growly": "^1.3.0", @@ -10183,18 +9903,26 @@ } }, "node-releases": { - "version": "1.1.17", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.17.tgz", - "integrity": "sha512-/SCjetyta1m7YXLgtACZGDYJdCSIBAWorDWkGCGZlydP2Ll7J48l7j/JxNYZ+xsgSPbWfdulVS/aY+GdjUsQ7Q==", + "version": "1.1.39", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.39.tgz", + "integrity": "sha512-8MRC/ErwNCHOlAFycy9OPca46fQYUjbJRDcZTHVWIGXIjYLM73k70vv3WkYutVnM4cCo4hE0MqBVVZjP6vjISA==", "dev": true, "requires": { - "semver": "^5.3.0" + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } } }, "node-sass": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.12.0.tgz", - "integrity": "sha512-A1Iv4oN+Iel6EPv77/HddXErL2a+gZ4uBeZUy+a8O35CFYTXhgA8MgLCWBtwpGZdCvTvQ9d+bQxX/QC36GDPpQ==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.13.0.tgz", + "integrity": "sha512-W1XBrvoJ1dy7VsvTAS5q1V45lREbTlZQqFbiHb3R3OTTCma0XBtuG6xZ6Z4506nR4lmHPTqVRwxT6KgtWC97CA==", "requires": { "async-foreach": "^0.1.3", "chalk": "^1.1.1", @@ -10203,7 +9931,7 @@ "get-stdin": "^4.0.1", "glob": "^7.0.3", "in-publish": "^2.0.0", - "lodash": "^4.17.11", + "lodash": "^4.17.15", "meow": "^3.7.0", "mkdirp": "^0.5.1", "nan": "^2.13.2", @@ -10213,39 +9941,6 @@ "sass-graph": "^2.2.4", "stdout-stream": "^1.4.0", "true-case-path": "^1.0.2" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "cross-spawn": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", - "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", - "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } } }, "nopt": { @@ -10384,6 +10079,18 @@ "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==", "dev": true }, + "object-inspect": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz", + "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==", + "dev": true + }, + "object-is": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.1.tgz", + "integrity": "sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY=", + "dev": true + }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", @@ -10399,16 +10106,40 @@ "isobject": "^3.0.0" } }, - "object.fromentries": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.0.tgz", - "integrity": "sha512-9iLiI6H083uiqUuvzyY6qrlmc/Gz8hLQFOcb/Ri/0xXFkSNS3ctV+CbE6yM2+AnkYfOB3dGjdzC0wrMLIhQICA==", + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", "dev": true, "requires": { "define-properties": "^1.1.2", - "es-abstract": "^1.11.0", "function-bind": "^1.1.1", - "has": "^1.0.1" + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.entries": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.0.tgz", + "integrity": "sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.12.0", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "object.fromentries": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.1.tgz", + "integrity": "sha512-PUQv8Hbg3j2QX0IQYv3iAGCbGcu4yY4KQ92/dhA4sFSixBmSmp13UpDLs6jGK8rBtbmhNNIK99LD2k293jpiGA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.15.0", + "function-bind": "^1.1.1", + "has": "^1.0.3" } }, "object.getownpropertydescriptors": { @@ -10666,9 +10397,9 @@ } }, "parse-asn1": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz", - "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", "dev": true, "requires": { "asn1.js": "^4.0.0", @@ -10692,13 +10423,11 @@ } }, "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "error-ex": "^1.2.0" } }, "parse-passwd": { @@ -10726,9 +10455,9 @@ "dev": true }, "path-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", - "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", "dev": true }, "path-dirname": { @@ -10738,10 +10467,12 @@ "dev": true }, "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "requires": { + "pinkie-promise": "^2.0.0" + } }, "path-is-absolute": { "version": "1.0.1", @@ -10783,12 +10514,13 @@ } }, "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "dev": true, + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", "requires": { - "pify": "^2.0.0" + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, "pbkdf2": { @@ -10834,6 +10566,17 @@ "dev": true, "requires": { "find-up": "^2.1.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + } } }, "pluralize": { @@ -10849,36 +10592,33 @@ "dev": true }, "portfinder": { - "version": "1.0.20", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.20.tgz", - "integrity": "sha512-Yxe4mTyDzTd59PZJY4ojZR8F+E5e97iq2ZOHPz3HDgSvYC5siNad2tLooQ5y5QHyQhc3xVqvyk/eNA3wuoa7Sw==", + "version": "1.0.25", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz", + "integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==", "dev": true, "requires": { - "async": "^1.5.2", - "debug": "^2.2.0", - "mkdirp": "0.5.x" + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.1" }, "dependencies": { "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } }, "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true } } }, @@ -10899,11 +10639,40 @@ "supports-color": "^5.4.0" }, "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -10918,33 +10687,6 @@ "reduce-css-calc": "^1.2.6" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", @@ -10963,6 +10705,12 @@ "supports-color": "^3.2.3" } }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", @@ -10985,37 +10733,10 @@ "postcss-value-parser": "^3.2.3" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, "postcss": { @@ -11030,6 +10751,12 @@ "supports-color": "^3.2.3" } }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", @@ -11051,33 +10778,6 @@ "postcss-value-parser": "^3.1.2" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", @@ -11096,6 +10796,12 @@ "supports-color": "^3.2.3" } }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", @@ -11116,33 +10822,6 @@ "postcss": "^5.0.14" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", @@ -11161,6 +10840,12 @@ "supports-color": "^3.2.3" } }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", @@ -11181,33 +10866,6 @@ "postcss": "^5.0.4" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", @@ -11226,6 +10884,12 @@ "supports-color": "^3.2.3" } }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", @@ -11246,33 +10910,6 @@ "postcss": "^5.0.14" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", @@ -11291,6 +10928,12 @@ "supports-color": "^3.2.3" } }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", @@ -11311,33 +10954,6 @@ "postcss": "^5.0.16" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", @@ -11356,6 +10972,12 @@ "supports-color": "^3.2.3" } }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", @@ -11377,33 +10999,6 @@ "uniqs": "^2.0.0" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", @@ -11422,6 +11017,12 @@ "supports-color": "^3.2.3" } }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", @@ -11442,33 +11043,6 @@ "postcss": "^5.0.4" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", @@ -11487,6 +11061,12 @@ "supports-color": "^3.2.3" } }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", @@ -11533,15 +11113,6 @@ "parse-json": "^2.2.0", "require-from-string": "^1.1.0" } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } } } }, @@ -11569,15 +11140,6 @@ "parse-json": "^2.2.0", "require-from-string": "^1.1.0" } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } } } }, @@ -11605,15 +11167,6 @@ "parse-json": "^2.2.0", "require-from-string": "^1.1.0" } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } } } }, @@ -11640,33 +11193,6 @@ "postcss-value-parser": "^3.1.1" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", @@ -11685,6 +11211,12 @@ "supports-color": "^3.2.3" } }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", @@ -11705,33 +11237,6 @@ "postcss": "^5.0.4" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", @@ -11750,6 +11255,12 @@ "supports-color": "^3.2.3" } }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", @@ -11774,12 +11285,6 @@ "vendors": "^1.0.0" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, "browserslist": { "version": "1.7.7", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", @@ -11790,27 +11295,6 @@ "electron-to-chromium": "^1.2.7" } }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", @@ -11829,6 +11313,12 @@ "supports-color": "^3.2.3" } }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", @@ -11857,33 +11347,6 @@ "postcss-value-parser": "^3.0.2" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", @@ -11902,6 +11365,12 @@ "supports-color": "^3.2.3" } }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", @@ -11923,33 +11392,6 @@ "postcss-value-parser": "^3.3.0" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", @@ -11968,6 +11410,12 @@ "supports-color": "^3.2.3" } }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", @@ -11991,33 +11439,6 @@ "uniqs": "^2.0.0" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", @@ -12036,6 +11457,12 @@ "supports-color": "^3.2.3" } }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", @@ -12059,33 +11486,6 @@ "postcss-selector-parser": "^2.0.0" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", @@ -12104,6 +11504,12 @@ "supports-color": "^3.2.3" } }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", @@ -12128,10 +11534,41 @@ "string-hash": "^1.1.1" }, "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "postcss": { - "version": "7.0.16", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.16.tgz", - "integrity": "sha512-MOo8zNSlIqh22Uaa3drkdIAgUGEL+AD1ESiSdmElLUmE2uVDo1QloiT/IfW9qRw8Gw+Y/w69UVMGwbufMSftxA==", + "version": "7.0.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz", + "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -12204,33 +11641,6 @@ "postcss": "^5.0.5" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", @@ -12249,6 +11659,12 @@ "supports-color": "^3.2.3" } }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", @@ -12272,33 +11688,6 @@ "postcss-value-parser": "^3.2.3" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", @@ -12317,6 +11706,12 @@ "supports-color": "^3.2.3" } }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", @@ -12338,33 +11733,6 @@ "postcss-value-parser": "^3.0.1" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", @@ -12383,6 +11751,12 @@ "supports-color": "^3.2.3" } }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", @@ -12404,33 +11778,6 @@ "postcss-value-parser": "^3.0.2" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", @@ -12449,6 +11796,12 @@ "supports-color": "^3.2.3" } }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", @@ -12469,33 +11822,6 @@ "postcss": "^5.0.4" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", @@ -12514,6 +11840,12 @@ "supports-color": "^3.2.3" } }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", @@ -12536,33 +11868,6 @@ "postcss-value-parser": "^3.0.1" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", @@ -12581,6 +11886,12 @@ "supports-color": "^3.2.3" } }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", @@ -12615,33 +11926,6 @@ "svgo": "^0.7.0" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, "coa": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", @@ -12695,6 +11979,12 @@ "supports-color": "^3.2.3" } }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", @@ -12732,33 +12022,6 @@ "uniqs": "^2.0.0" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", @@ -12777,6 +12040,12 @@ "supports-color": "^3.2.3" } }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", @@ -12805,33 +12074,6 @@ "uniqs": "^2.0.0" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", @@ -12850,6 +12092,12 @@ "supports-color": "^3.2.3" } }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", @@ -12880,9 +12128,9 @@ "dev": true }, "prettier": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.17.0.tgz", - "integrity": "sha512-sXe5lSt2WQlCbydGETgfm1YBShgOX4HxQkFPvbxkcwgDvGDeqVau8h+12+lmSVlP3rHPz0oavfddSZg/q+Szjw==", + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.18.2.tgz", + "integrity": "sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw==", "dev": true }, "pretty-bytes": { @@ -12909,6 +12157,17 @@ "requires": { "ansi-regex": "^2.1.1", "ansi-styles": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + } } }, "private": { @@ -12924,9 +12183,9 @@ "dev": true }, "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "progress": { "version": "2.0.3", @@ -12982,9 +12241,9 @@ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" }, "psl": { - "version": "1.1.31", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==" + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.4.0.tgz", + "integrity": "sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw==" }, "public-encrypt": { "version": "4.0.3", @@ -13098,31 +12357,28 @@ } }, "range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "dev": true }, "raw-body": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", - "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", "dev": true, "requires": { - "bytes": "3.0.0", - "http-errors": "1.6.3", - "iconv-lite": "0.4.23", + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", "unpipe": "1.0.0" }, "dependencies": { - "iconv-lite": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true } } }, @@ -13139,15 +12395,14 @@ } }, "react": { - "version": "16.8.6", - "resolved": "https://registry.npmjs.org/react/-/react-16.8.6.tgz", - "integrity": "sha512-pC0uMkhLaHm11ZSJULfOBqV4tIZkx87ZLvbbQYunNixAAvjnC+snJCg0XQXn9VIsttVsbZP/H/ewzgsd5fxKXw==", + "version": "16.11.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.11.0.tgz", + "integrity": "sha512-M5Y8yITaLmU0ynd0r1Yvfq98Rmll6q8AxaEe88c8e7LxO8fZ2cNgmFt0aGAS9wzf1Ao32NKXtCl+/tVVtkxq6g==", "dev": true, "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.13.6" + "prop-types": "^15.6.2" } }, "react-dev-utils": { @@ -13183,22 +12438,12 @@ "dev": true }, "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "color-convert": "^1.9.0" } }, "chardet": { @@ -13251,15 +12496,6 @@ "through": "^2.3.6" }, "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -13279,36 +12515,57 @@ "requires": { "ansi-regex": "^3.0.0" } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, - "supports-color": { + "is-fullwidth-code-point": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, "react-dom": { - "version": "16.8.6", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.8.6.tgz", - "integrity": "sha512-1nL7PIq9LTL3fthPqwkvr2zY7phIPjYrT0jp4HjyEQrEROnw4dG41VVwi/wfoCneoleqrNX7iAD+pXebJZwrwA==", + "version": "16.11.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.11.0.tgz", + "integrity": "sha512-nrRyIUE1e7j8PaXSPtyRKtz+2y9ubW/ghNgqKFHHAHaeP0fpF5uXR+sq8IMRHC+ZUxw7W9NyCDTBtwWxvkb0iA==", "dev": true, "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", "prop-types": "^15.6.2", - "scheduler": "^0.13.6" + "scheduler": "^0.17.0" } }, "react-error-overlay": { @@ -13318,15 +12575,15 @@ "dev": true }, "react-is": { - "version": "16.8.6", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.6.tgz", - "integrity": "sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA==", + "version": "16.11.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.11.0.tgz", + "integrity": "sha512-gbBVYR2p8mnriqAwWx9LbuUrShnAuSCNnuPGyc7GJrMVQtPDAh8iLpv7FRuMPFb56KkaVZIYSz1PrjI9q0QPCw==", "dev": true }, "react-onclickoutside": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/react-onclickoutside/-/react-onclickoutside-6.8.0.tgz", - "integrity": "sha512-5Q4Rn7QLEoh7WIe66KFvYIpWJ49GeHoygP1/EtJyZjXKgrWH19Tf0Ty3lWyQzrEEDyLOwUvvmBFSE3dcDdvagA==" + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/react-onclickoutside/-/react-onclickoutside-6.9.0.tgz", + "integrity": "sha512-8ltIY3bC7oGhj2nPAvWOGi+xGFybPNhJM0V1H8hY/whNcXgmDeaeoCMPPd8VatrpTsUWjb/vGzrmu6SrXVty3A==" }, "react-scripts": { "version": "1.1.5", @@ -13417,10 +12674,13 @@ "dev": true }, "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } }, "babel-core": { "version": "6.26.0", @@ -13461,19 +12721,6 @@ "babylon": "^6.17.0" } }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, "chardet": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", @@ -13554,15 +12801,6 @@ "text-table": "~0.2.0" }, "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -13584,28 +12822,10 @@ } }, "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==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -13688,6 +12908,15 @@ "object-assign": "^4.0.1" } }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, "flat-cache": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", @@ -13745,15 +12974,6 @@ "through": "^2.3.6" }, "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -13764,27 +12984,15 @@ "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, "json-schema-traverse": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", @@ -13806,12 +13014,54 @@ "graceful-fs": "^4.1.6" } }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + }, "resolve": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.6.0.tgz", @@ -13821,6 +13071,15 @@ "path-parse": "^1.0.5" } }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, "slice-ansi": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", @@ -13830,12 +13089,46 @@ "is-fullwidth-code-point": "^2.0.0" } }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", "dev": true }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, "table": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/table/-/table-4.0.3.tgz", @@ -13851,9 +13144,9 @@ }, "dependencies": { "ajv": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", - "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", "dev": true, "requires": { "fast-deep-equal": "^2.0.1", @@ -13862,15 +13155,6 @@ "uri-js": "^4.2.2" } }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -13893,15 +13177,6 @@ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -13917,24 +13192,22 @@ } }, "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", - "dev": true, + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", "requires": { - "load-json-file": "^2.0.0", + "load-json-file": "^1.0.0", "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" + "path-type": "^1.0.0" } }, "read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", - "dev": true, + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", "requires": { - "find-up": "^2.0.0", - "read-pkg": "^2.0.0" + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" } }, "readable-stream": { @@ -13960,83 +13233,360 @@ "graceful-fs": "^4.1.11", "micromatch": "^3.1.10", "readable-stream": "^2.0.2" - } - }, - "recursive-readdir": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.1.tgz", - "integrity": "sha1-kO8jHQd4xc4JPJpI105cVCLROpk=", - "dev": true, - "requires": { - "minimatch": "3.0.3" }, "dependencies": { - "minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q=", + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, "requires": { - "brace-expansion": "^1.0.0" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } } - } - } - }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "requires": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" - } - }, - "reduce-css-calc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", - "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", - "dev": true, - "requires": { - "balanced-match": "^0.4.2", - "math-expression-evaluator": "^1.2.14", - "reduce-function-call": "^1.0.1" - }, - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", - "dev": true - } - } - }, - "reduce-function-call": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz", - "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=", - "dev": true, - "requires": { - "balanced-match": "^0.4.2" - }, - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", - "dev": true - } - } - }, - "regenerate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "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 + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "recursive-readdir": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.1.tgz", + "integrity": "sha1-kO8jHQd4xc4JPJpI105cVCLROpk=", + "dev": true, + "requires": { + "minimatch": "3.0.3" + }, + "dependencies": { + "minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q=", + "dev": true, + "requires": { + "brace-expansion": "^1.0.0" + } + } + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "reduce-css-calc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", + "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", + "dev": true, + "requires": { + "balanced-match": "^0.4.2", + "math-expression-evaluator": "^1.2.14", + "reduce-function-call": "^1.0.1" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", + "dev": true + } + } + }, + "reduce-function-call": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.3.tgz", + "integrity": "sha512-Hl/tuV2VDgWgCSEeWMLwxLZqX7OK59eU1guxXsRKTAyeYimivsKdtcV4fu3r710tpG5GmDKDhQ0HSZLExnNmyQ==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", "dev": true }, "regenerate-unicode-properties": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.0.2.tgz", - "integrity": "sha512-SbA/iNrBUf6Pv2zU8Ekv1Qbhv92yxL4hiDa2siuxs4KKn4oOoMDHXjAf7+Nz9qinUQ46B1LcWEi/PhJfPWpZWQ==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz", + "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==", "dev": true, "requires": { "regenerate": "^1.4.0" @@ -14049,9 +13599,9 @@ "dev": true }, "regenerator-transform": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.13.4.tgz", - "integrity": "sha512-T0QMBjK3J0MtxjPmdIMXm72Wvj2Abb0Bd4HADdfijwMdoIsyQZ6fWC7kDFhk2YinBBEMZDL7Y7wh0J1sGx3S4A==", + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.1.tgz", + "integrity": "sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ==", "dev": true, "requires": { "private": "^0.1.6" @@ -14076,11 +13626,14 @@ "safe-regex": "^1.1.0" } }, - "regexp-tree": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.6.tgz", - "integrity": "sha512-LFrA98Dw/heXqDojz7qKFdygZmFoiVlvE1Zp7Cq2cvF+ZA+03Gmhy0k0PQlsC1jvHPiTUSs+pDHEuSWv6+6D7w==", - "dev": true + "regexp.prototype.flags": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.2.0.tgz", + "integrity": "sha512-ztaw4M1VqgMwl9HlPpOuiYgItcHlunW0He2fE6eNfT6E/CF2FtYi9ofOYe4mKntstYk0Fyh/rDRBdS3AnxjlrA==", + "dev": true, + "requires": { + "define-properties": "^1.1.2" + } }, "regexpp": { "version": "2.0.1", @@ -14089,13 +13642,13 @@ "dev": true }, "regexpu-core": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.4.tgz", - "integrity": "sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz", + "integrity": "sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==", "dev": true, "requires": { "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.0.2", + "regenerate-unicode-properties": "^8.1.0", "regjsgen": "^0.5.0", "regjsparser": "^0.6.0", "unicode-match-property-ecmascript": "^1.0.4", @@ -14122,9 +13675,9 @@ } }, "regjsgen": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", - "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz", + "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==", "dev": true }, "regjsparser": { @@ -14238,22 +13791,6 @@ "tough-cookie": "~2.4.3", "tunnel-agent": "^0.6.0", "uuid": "^3.3.2" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - }, - "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", - "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - } - } } }, "request-promise-core": { @@ -14338,9 +13875,9 @@ "dev": true }, "resolve": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.1.tgz", - "integrity": "sha512-KuIe4mf++td/eFb6wkaPbMDnP6kObCaEtIDuHOUED6MNUo4K670KZUHuuvYPZDxNF0WVLw49n06M2m2dXphEzA==", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", + "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", "requires": { "path-parse": "^1.0.6" } @@ -14402,9 +13939,9 @@ } }, "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "requires": { "glob": "^7.1.3" } @@ -14516,11 +14053,40 @@ "style-inject": "^0.3.0" }, "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, @@ -14535,21 +14101,20 @@ }, "dependencies": { "mime": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.2.tgz", - "integrity": "sha512-zJBfZDkwRu+j3Pdd2aHsR5GfH2jIWhmL1ZzBoc+X+3JEti2hbArWcyJ+1laC1D2/U/W1a/+Cegj0/OnEU2ybjg==", + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", "dev": true } } }, "rollup-pluginutils": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.6.0.tgz", - "integrity": "sha512-aGQwspEF8oPKvg37u3p7h0cYNwmJR1sCBMZGZ5b9qy8HGtETknqjzcxrDRrcAnJNXN18lBH4Q9vZYth/p4n8jQ==", + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", "dev": true, "requires": { - "estree-walker": "^0.6.0", - "micromatch": "^3.1.10" + "estree-walker": "^0.6.1" } }, "run-async": { @@ -14577,9 +14142,9 @@ } }, "rxjs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.1.tgz", - "integrity": "sha512-y0j31WJc83wPu31vS1VlAFW5JGrnGC+j+TtGAa1fRQphy48+fDYiDmX8tjGloToEsMkxnouOg/1IzXGKkJnZMg==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", + "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -14657,18 +14222,18 @@ "dev": true }, "saxes": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.9.tgz", - "integrity": "sha512-FZeKhJglhJHk7eWG5YM0z46VHmI3KJpMBAQm3xa9meDvd+wevB5GuBB0wc0exPInZiBBHqi00DbS8AcvCGCFMw==", + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", + "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", "dev": true, "requires": { - "xmlchars": "^1.3.1" + "xmlchars": "^2.1.1" } }, "scheduler": { - "version": "0.13.6", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.13.6.tgz", - "integrity": "sha512-IWnObHt413ucAYKsD9J1QShUKkbKLQQHdxRyw73sw4FN26iWr3DY/H34xGPe4nmL1DwXyWmSWmMrA9TfQbE/XQ==", + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.17.0.tgz", + "integrity": "sha512-7rro8Io3tnCPuY4la/NuI5F2yfESpnfZyT6TtkXnSWVkcu0BCDJ+8gk5ozUaFaxpIyNuWAPXrH0yFcSi28fnDA==", "dev": true, "requires": { "loose-envify": "^1.1.0", @@ -14717,16 +14282,6 @@ "requires": { "js-base64": "^2.1.8", "source-map": "^0.4.2" - }, - "dependencies": { - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "requires": { - "amdefine": ">=0.0.4" - } - } } }, "select-hose": { @@ -14736,18 +14291,18 @@ "dev": true }, "selfsigned": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.4.tgz", - "integrity": "sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw==", + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz", + "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==", "dev": true, "requires": { - "node-forge": "0.7.5" + "node-forge": "0.9.0" } }, "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" }, "semver-diff": { "version": "2.1.0", @@ -14759,9 +14314,9 @@ } }, "send": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", "dev": true, "requires": { "debug": "2.6.9", @@ -14771,12 +14326,12 @@ "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "~1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" + "range-parser": "~1.2.1", + "statuses": "~1.5.0" }, "dependencies": { "debug": { @@ -14786,18 +14341,20 @@ "dev": true, "requires": { "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } } }, - "mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", - "dev": true - }, "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "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 } } @@ -14826,24 +14383,48 @@ "ms": "2.0.0" } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true } } }, "serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", "dev": true, "requires": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", - "parseurl": "~1.3.2", - "send": "0.16.2" + "parseurl": "~1.3.3", + "send": "0.17.1" } }, "serviceworker-cache-polyfill": { @@ -14858,9 +14439,9 @@ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, "set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", "dev": true, "requires": { "extend-shallow": "^2.0.1", @@ -14887,9 +14468,9 @@ "dev": true }, "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", "dev": true }, "sha.js": { @@ -14984,6 +14565,23 @@ "ansi-styles": "^3.2.0", "astral-regex": "^1.0.0", "is-fullwidth-code-point": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + } } }, "snapdragon": { @@ -15034,6 +14632,12 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true } } }, @@ -15171,10 +14775,12 @@ "dev": true }, "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "requires": { + "amdefine": ">=0.0.4" + } }, "source-map-resolve": { "version": "0.5.2", @@ -15196,6 +14802,14 @@ "dev": true, "requires": { "source-map": "^0.5.6" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } } }, "source-map-url": { @@ -15205,9 +14819,9 @@ "dev": true }, "sourcemap-codec": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.4.tgz", - "integrity": "sha512-CYAPYdBu34781kLHkaW3m6b/uUSyMOC2R61gcYMWooeuaGtjof86ZA/8T+qVPPt7np1085CR9hmMGrySwEc8Xg==", + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.6.tgz", + "integrity": "sha512-1ZooVLYFxC448piVLBbtOxFcXwnymH9oUF8nRd3CuYDVvkRBxRl6pB4Mtas5a4drtL+E8LDgFkQNcgIw6tc8Hg==", "dev": true }, "spdx-correct": { @@ -15234,9 +14848,9 @@ } }, "spdx-license-ids": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz", - "integrity": "sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==" + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==" }, "spdy": { "version": "3.4.7", @@ -15360,9 +14974,9 @@ } }, "statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", "dev": true }, "stdout-stream": { @@ -15424,27 +15038,33 @@ } }, "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - } + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string.prototype.trimleft": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz", + "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz", + "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" } }, "string_decoder": { @@ -15464,10 +15084,12 @@ } }, "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "requires": { + "is-utf8": "^0.2.0" + } }, "strip-eof": { "version": "1.0.0", @@ -15521,27 +15143,22 @@ } }, "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" }, "svgo": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.2.2.tgz", - "integrity": "sha512-rAfulcwp2D9jjdGu+0CuqlrAUin6bBWrpoqXWwKDZZZJfXcUXQSxLJOFJCQCSA0x0pP2U0TxSlJu2ROq5Bq6qA==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", "dev": true, "requires": { "chalk": "^2.4.1", "coa": "^2.0.2", "css-select": "^2.0.0", "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.28", - "css-url-regex": "^1.1.0", - "csso": "^3.5.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", "js-yaml": "^3.13.1", "mkdirp": "~0.5.1", "object.values": "^1.1.0", @@ -15549,6 +15166,37 @@ "stable": "^0.1.8", "unquote": "~1.1.1", "util.promisify": "~1.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "sw-precache": { @@ -15591,19 +15239,19 @@ } }, "symbol-tree": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", - "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", "dev": true }, "table": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/table/-/table-5.2.3.tgz", - "integrity": "sha512-N2RsDAMvDLvYwFcwbPyF3VmVSSkuF+G1e+8inhBLtHpvwXGw4QRPEZhihQNeEN0i1up6/f6ObCJXNdlRG3YVyQ==", + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", "dev": true, "requires": { - "ajv": "^6.9.1", - "lodash": "^4.17.11", + "ajv": "^6.10.2", + "lodash": "^4.17.14", "slice-ansi": "^2.1.0", "string-width": "^3.0.0" }, @@ -15614,6 +15262,12 @@ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -15643,12 +15297,12 @@ "dev": true }, "tar": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", - "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", + "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", "requires": { "block-stream": "*", - "fstream": "^1.0.2", + "fstream": "^1.0.12", "inherits": "2" } }, @@ -15672,161 +15326,12 @@ "object-assign": "^4.1.0", "read-pkg-up": "^1.0.1", "require-main-filename": "^1.0.1" - }, - "dependencies": { - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - } } }, "tether": { - "version": "1.4.6", - "resolved": "https://registry.npmjs.org/tether/-/tether-1.4.6.tgz", - "integrity": "sha512-TyWPw9O0ExqH9/ZBnQ0P1/mNI6LX16YPx5XvixC/ZvAqMkhGeXmKTTsMbSBn3ViOrPuQi/Uef11bVp3sd5UcQQ==" + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/tether/-/tether-1.4.7.tgz", + "integrity": "sha512-Z0J1aExjoFU8pybVkQAo/vD2wfSO63r+XOPfWQMC5qtf1bI7IWqNk4MiyBcgvvnY8kqnY06dVdvwTK2S3PU/Fw==" }, "text-table": { "version": "0.2.0", @@ -15847,9 +15352,9 @@ "dev": true }, "thunky": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.3.tgz", - "integrity": "sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", "dev": true }, "time-stamp": { @@ -15865,9 +15370,9 @@ "dev": true }, "timers-browserify": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", - "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", + "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", "dev": true, "requires": { "setimmediate": "^1.0.4" @@ -15929,8 +15434,25 @@ "requires": { "is-number": "^3.0.0", "repeat-string": "^1.6.1" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + } } }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true + }, "toposort": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", @@ -15938,13 +15460,19 @@ "dev": true }, "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" + "psl": "^1.1.24", + "punycode": "^1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + } } }, "tr46": { @@ -15985,9 +15513,9 @@ } }, "tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", "dev": true }, "tty-browserify": { @@ -16009,6 +15537,12 @@ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", @@ -16093,6 +15627,12 @@ "wordwrap": "0.0.2" } }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, "uglify-js": { "version": "2.8.29", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", @@ -16153,38 +15693,15 @@ "dev": true }, "union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", "dev": true, "requires": { "arr-union": "^3.1.0", "get-value": "^2.0.6", "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } + "set-value": "^2.0.1" } }, "uniq": { @@ -16273,9 +15790,9 @@ "dev": true }, "upath": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", - "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", "dev": true }, "update-notifier": { @@ -16294,6 +15811,37 @@ "latest-version": "^3.0.0", "semver-diff": "^2.0.0", "xdg-basedir": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "upper-case": { @@ -16311,9 +15859,9 @@ } }, "urijs": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.1.tgz", - "integrity": "sha512-xVrGVi94ueCJNrBSTjWqjvtgvl3cyOTThp2zaMaFNGp3F542TR6sM3f2o8RqZl+AwteClSVmoCyt0ka4RjQOQg==", + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.2.tgz", + "integrity": "sha512-s/UIq9ap4JPZ7H1EB5ULo/aOUbWqfDi7FKzMC2Nz+0Si8GiT1rIEaprt8hy3Vy2Ex2aJPpOQv4P4DuOZ+K1c6w==", "dev": true }, "urix": { @@ -16383,6 +15931,14 @@ "dev": true, "requires": { "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } } }, "util-deprecate": { @@ -16413,9 +15969,9 @@ "dev": true }, "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", + "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==" }, "validate-npm-package-license": { "version": "3.0.4", @@ -16433,9 +15989,9 @@ "dev": true }, "vendors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.2.tgz", - "integrity": "sha512-w/hry/368nO21AN9QljsaIhb9ZiZtZARoVH5f3CsFbawdLdayCgKRPup7CggujvySMxx0I91NOyxdVENohprLQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.3.tgz", + "integrity": "sha512-fOi47nsJP5Wqefa43kyWSg80qF+Q3XA6MUkgi7Hp1HQaKDQW4cQrK2D0P7mmbFtsV1N89am55Yru/nyEwRubcw==", "dev": true }, "verror": { @@ -16449,13 +16005,10 @@ } }, "vm-browserify": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", - "dev": true, - "requires": { - "indexof": "0.0.1" - } + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.0.tgz", + "integrity": "sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw==", + "dev": true }, "w3c-hr-time": { "version": "1.0.1", @@ -16572,6 +16125,12 @@ "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", "dev": true }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, "camelcase": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", @@ -16584,12 +16143,27 @@ "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", "dev": true }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, "has-flag": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", "dev": true }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, "json-schema-traverse": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", @@ -16602,6 +16176,18 @@ "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", "dev": true }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, "os-locale": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", @@ -16613,6 +16199,67 @@ "mem": "^1.1.0" } }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, "supports-color": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", @@ -16737,128 +16384,19 @@ "rimraf": "^2.2.8" } }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { - "is-utf8": "^0.2.0" + "has-flag": "^3.0.0" } }, "yargs": { @@ -16928,9 +16466,9 @@ } }, "webpack-sources": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz", - "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", "dev": true, "requires": { "source-list-map": "^2.0.0", @@ -16946,12 +16484,13 @@ } }, "websocket-driver": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", - "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz", + "integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==", "dev": true, "requires": { - "http-parser-js": ">=0.4.0", + "http-parser-js": ">=0.4.0 <0.4.11", + "safe-buffer": ">=5.1.0", "websocket-extensions": ">=0.1.1" } }, @@ -16983,9 +16522,9 @@ "dev": true }, "whatwg-url": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", - "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", "dev": true, "requires": { "lodash.sortby": "^4.7.0", @@ -17027,6 +16566,39 @@ "dev": true, "requires": { "string-width": "^2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } } }, "window-size": { @@ -17057,26 +16629,6 @@ "requires": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } } }, "wrappy": { @@ -17094,9 +16646,9 @@ } }, "write-file-atomic": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.2.tgz", - "integrity": "sha512-s0b6vB3xIVRLWywa6X9TOMA7k9zio0TMOsl9ZnDkliA/cfJlpHXAscj0gbHVJiTdIuAYpIyqS5GW91fqm6gG5g==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", "dev": true, "requires": { "graceful-fs": "^4.1.11", @@ -17105,12 +16657,12 @@ } }, "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.2.0.tgz", + "integrity": "sha512-+SqNqFbwTm/0DC18KYzIsMTnEWpLwJsiasW/O17la4iDRRIO9uaHbvKiAS3AHgTiuuWerK/brj4O6MYZkei9xg==", "dev": true, "requires": { - "async-limiter": "~1.0.0" + "async-limiter": "^1.0.0" } }, "xdg-basedir": { @@ -17126,15 +16678,15 @@ "dev": true }, "xmlchars": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-1.3.1.tgz", - "integrity": "sha512-tGkGJkN8XqCod7OT+EvGYK5Z4SfDQGD30zAa58OcnAa0RRWgzUEK72tkXhsX1FZd+rgnhRxFtmO+ihkp8LHSkw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", "dev": true }, "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "dev": true }, "y18n": { @@ -17171,98 +16723,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "requires": { - "error-ex": "^1.2.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "requires": { - "is-utf8": "^0.2.0" - } } } }, diff --git a/src/OTokenizer.js b/src/OTokenizer.js index 1b0661a..132391c 100644 --- a/src/OTokenizer.js +++ b/src/OTokenizer.js @@ -59,6 +59,14 @@ export default class OTokenizer extends Tokenizer { this.setState(val); }; + _getInputType() { + if (this.state.category != "" && (this.props.isAllowOperator && this._getCategoryOperator() !== null ? this.state.operator != "" : true)) { + return this._getCategoryType(); + } else { + return "text"; + } + } + _getCategoryOperator() { for (var i = 0; i < this.state.options.length; i++) { if (this.state.options[i].category == this.state.category) { @@ -91,7 +99,7 @@ export default class OTokenizer extends Tokenizer { } } return categories; - } else if (this.props.isAllowOperator && this.state.operator == "") { + } else if (this.props.isAllowOperator && this._getCategoryOperator() !== null && this.state.operator == "") { let categoryType = this._getCategoryType(); let categoryOperator = this._getCategoryOperator(); if (categoryOperator) { @@ -293,14 +301,17 @@ export default class OTokenizer extends Tokenizer { if (this.props.disabled) { return; } - const { isAllowOperator } = this.props; + let { isAllowOperator } = this.props; + if (this.state.category == "") { this.state.category = value; this.setState({ category: value }); this.typeaheadRef.setEntryText(""); return; } - + if (this.state.category !== "" && isAllowOperator) { + isAllowOperator = this._getCategoryOperator() !== null; + } if (isAllowOperator && this.state.operator == "") { this.state.operator = value; this.setState({ operator: value }); From c7a0eb0077f3593cdae7e664baa57962c9314779 Mon Sep 17 00:00:00 2001 From: sameer79 Date: Fri, 6 Dec 2019 11:00:44 +0530 Subject: [PATCH 02/15] Initial commit for query search --- example/src/App.js | 33 ++- src/CustomQueryTokenizer.js | 96 +++++++++ src/OTokenizer.js | 193 ++++++++++++++---- src/OTypeahead.js | 58 +++--- .../react-typeahead/tokenizer/index.js | 54 +++-- .../react-typeahead/tokenizer/token.js | 33 ++- .../react-typeahead/typeahead/index.js | 28 ++- .../react-typeahead/typeahead/option.js | 4 +- .../react-typeahead/typeahead/selector.js | 2 +- .../react-structured-filter/scss/style.scss | 32 ++- 10 files changed, 419 insertions(+), 114 deletions(-) create mode 100644 src/CustomQueryTokenizer.js diff --git a/example/src/App.js b/example/src/App.js index 0b53ef0..e3e26d4 100755 --- a/example/src/App.js +++ b/example/src/App.js @@ -12,21 +12,24 @@ export default class App extends Component { // NOTE: The operator will seen to UI only if props isAllowOperator={true} this.options = [ { + conditional:null, category: "Symbol", type: "textoptions", operator: ["==", "!="], options: this.getSymbolOptions }, { + conditional:null, category: "Name", type: "text", isAllowDuplicateCategories: false, - operator: () => null + operator: null }, - { category: "Price", type: "number" }, - { category: "MarketCap", type: "number" }, - { category: "IPO", type: "date" }, + { conditional:null, category: "Price", type: "number" }, + { conditional:null, category: "MarketCap", type: "number" }, + { conditional:null, category: "IPO", type: "date" }, { + conditional:null, category: "Sector", type: "textoptions", fuzzySearchKeyAttribute: "sectorName", @@ -36,10 +39,19 @@ export default class App extends Component { options: this.getSectorOptions }, { + conditional:null, category: "Industry", type: "textoptions", isAllowCustomValue: false, options: this.getIndustryOptions + }, + { + conditional: null, + category: "Query", + type: "custom", + isAllowCustomValue: true, + options: null, + operator: null, } ]; } @@ -80,7 +92,7 @@ export default class App extends Component { getTokenItem(obj) { let val = obj.children; - return `${val["category"]}: val`; + return
{`testing`}
; } render() { @@ -89,12 +101,13 @@ export default class App extends Component { { if (addedValue && addedValue.category === "Symbol" && addedValue.value === "TFSC") { this.options.push({ @@ -114,4 +127,4 @@ export default class App extends Component {
); } -} \ No newline at end of file +} diff --git a/src/CustomQueryTokenizer.js b/src/CustomQueryTokenizer.js new file mode 100644 index 0000000..fdd7a9d --- /dev/null +++ b/src/CustomQueryTokenizer.js @@ -0,0 +1,96 @@ +import React, {Component, Fragment} from 'react'; + +import ReactStructuredQuerySearch from "react-structured-query-search"; + +export default class CustomQueryTokenizer extends Component { + constructor(props) { + super(props); + this.state = { + selected : [] + }; + this.options = [ + { + conditional: "AND", + category: "Demo", + type: "textoptions", + operator: this.getOperatorOptions, + options: this.getSymbolOptions + }, + { + conditional: "OR", + category: "Sample", + type: "textoptions", + operator: this.getOperatorOptions, + options: this.getSymbolOptions + }, + { + conditional: ",", + category: "", + type: "textoptions", + operator: this.getOperatorOptions, + options: this.getSymbolOptions + }, + { + conditional: " )", + category: "", + type: "text", + operator: null, + options: null + } + ]; + } + + getOperatorOptions () { + return ["==", "!="]; + } + + getSymbolOptions () { + return ["TFSC", "PIL", "VNET"]; + } + + getTokenItem (obj) { + const val = obj.children; + return `${val.conditional} ${val.category} ${val.operator} ${val.value}`; + } + + trimText (val) { + return val.trim() === "" ? val.trim() : val + " "; + } + + updateParentInputText () { + let str = ''; + this.state.selected.forEach((s) => { + str += this.trimText(s.conditional); + str += this.trimText(s.category); + str += this.trimText(s.operator); + str += this.trimText(s.value); + }); + this.props.updatedInputText(str); + } + + render() { + return( + + console.log(val, 'onTokenAdd')} + customClasses={{ + input: "filter-tokenizer-text-input", + results: "filter-tokenizer-list__container", + listItem: "filter-tokenizer-list__item", + query: "custom-query" + }} + emptyParentCategoryState={this.props.emptyParentCategoryState} + updateParentInputText={this.updateParentInputText.bind(this)} + customQuery={true} + autoFocus={true} + /> + + ); + } +}; diff --git a/src/OTokenizer.js b/src/OTokenizer.js index 132391c..992cbc6 100644 --- a/src/OTokenizer.js +++ b/src/OTokenizer.js @@ -3,6 +3,7 @@ import ReactDOM from "react-dom"; import PropTypes from "prop-types"; import { Tokenizer } from "./lib/react-structured-filter/react-typeahead/react-typeahead"; import Typeahead from "./OTypeahead"; +import classNames from "classnames"; // Override the Tokenizer export default class OTokenizer extends Tokenizer { @@ -49,7 +50,7 @@ export default class OTokenizer extends Tokenizer { ) { return; } - if (this.state.focused === true && !this.typeaheadRef.isOptionsLoading()) { + if (this.state.focused === true && this.typeaheadRef && !this.typeaheadRef.isOptionsLoading()) { this.setState({ focused: false }); } } @@ -60,7 +61,9 @@ export default class OTokenizer extends Tokenizer { }; _getInputType() { - if (this.state.category != "" && (this.props.isAllowOperator && this._getCategoryOperator() !== null ? this.state.operator != "" : true)) { + if (this.state.category === "Query") { + return "custom"; + } else if (this.state.category != "" && (this.props.isAllowOperator && this._getCategoryOperator() !== null ? this.state.operator != "" : true)) { return this._getCategoryType(); } else { return "text"; @@ -75,8 +78,53 @@ export default class OTokenizer extends Tokenizer { } } + _checkConditionalOptions () { + return this.state.options.filter(function(o) { + return o.conditional !== null && o.conditional !== undefined && o.conditional !== ""; + }).length > 0 ? true : false; + } + + _checkSpeacialChar (val) { + var match = new RegExp(/[^a-zA-Z]/g); + return match.test(val); + } + + _showCloseBracketOptions (val) { + let showCloseBracket = this.state.selected.length > 0 ? true : !this._checkSpeacialChar(val); + if (this.state.selected.length > 0 && (val.includes(',') || val.includes(' )'))) { + showCloseBracket = this._bracketHasClosed() && !this.state.ediTableTokenId ? false : true; + } + return showCloseBracket; + } + + _bracketHasClosed = () => { + if (this.state.selected.length === 0) { + return false; + } + const obj = { open: 0, close: 0 }; + this.state.selected.map((s) => { + if (s.conditional.includes('(')) { + obj.open = ++obj.open + } else if (s.conditional.includes(')')) { + obj.close = ++obj.close + } + }); + return obj.open === obj.close; + } + _getOptionsForTypeahead() { - if (this.state.category == "") { + const closeBracket = this.state.conditional && this.state.conditional.includes(')') ? true : false; + if (this.state.conditional == "" && this._checkConditionalOptions()) { + var conditional = []; + for (var i = 0; i < this.state.options.length; i++) { + var options = this.state.options[i], + condition = options.conditional; + if (condition && this._showCloseBracketOptions(condition)) { + conditional.push(condition); + } + } + return conditional; + } else if (this.state.category == "" && !closeBracket ) { var categories = []; for (var i = 0; i < this.state.options.length; i++) { let options = this.state.options[i], @@ -91,15 +139,17 @@ export default class OTokenizer extends Tokenizer { let foundCategory = this.state.selected.find(function(obj) { return obj.category == category; }); - if (!foundCategory) { + if (!foundCategory && category.trim() !== "") { categories.push(category); } } else { - categories.push(category); + if (category.trim() !== "") { + categories.push(category); + } } } return categories; - } else if (this.props.isAllowOperator && this._getCategoryOperator() !== null && this.state.operator == "") { + } else if (this.props.isAllowOperator && this._getCategoryOperator() !== null && this.state.operator == "" && !this.state.conditional.includes(')')) { let categoryType = this._getCategoryType(); let categoryOperator = this._getCategoryOperator(); if (categoryOperator) { @@ -132,7 +182,7 @@ export default class OTokenizer extends Tokenizer { } else { if (typeof options === "function") { let opt = options(); - if (typeof opt == "object") { + if (typeof opt == "object" && !this.state.conditional.includes(')')) { if (opt instanceof Promise) { return opt; } else { @@ -198,7 +248,9 @@ export default class OTokenizer extends Tokenizer { } _getHeader() { - if (this.state.category == "") { + if (this.state.conditional == "" && this._checkConditionalOptions()) { + return this.props.conditionalHeader || "Conditional"; + } else if (this.state.category == "") { return this.props.categoryHeader || "Category"; } else if (this.props.isAllowOperator && this.state.operator == "") { return this.props.operatorHeader || "Operator"; @@ -255,7 +307,7 @@ export default class OTokenizer extends Tokenizer { _focusInput() { if (this.typeaheadRef) { var entry = this.typeaheadRef.getInputRef(); - if (entry) { + if (entry && entry.focus) { entry.focus(); } } @@ -302,8 +354,19 @@ export default class OTokenizer extends Tokenizer { return; } let { isAllowOperator } = this.props; + const closeBracket = this.state.conditional && this.state.conditional.includes(')') ? true : false; + if (this.state.conditional == "" && this._checkConditionalOptions()) { + var val = this._checkSpeacialChar(value) ? value : value + " ( " ; + this.state.conditional = val; + this.setState({ conditional: val}); + this.typeaheadRef.setEntryText(""); + if (this.props.customQuery && val === " )") { + this._addToken({value: val, isAllowOperator: false, closeToken: true}); + } + return; + } - if (this.state.category == "") { + if (this.state.category == "" && !closeBracket) { this.state.category = value; this.setState({ category: value }); this.typeaheadRef.setEntryText(""); @@ -312,23 +375,40 @@ export default class OTokenizer extends Tokenizer { if (this.state.category !== "" && isAllowOperator) { isAllowOperator = this._getCategoryOperator() !== null; } - if (isAllowOperator && this.state.operator == "") { + if (isAllowOperator && this.state.operator == "" && !closeBracket) { this.state.operator = value; this.setState({ operator: value }); this.typeaheadRef.setEntryText(""); return; } + this._addToken({value, isAllowOperator}); + }; + + _addToken = ({value, isAllowOperator, closeToken}) => { value = { + conditional: this.state.conditional, category: this.state.category, value: value }; - this.state.selected.push(value); + if (closeToken) { + value.value = ""; + value.operator = ""; + } + + if (this.state.ediTableTokenId !== null) { + this.state.selected[this.state.ediTableTokenId] = value; + this.state.ediTableTokenId = null; + } else { + this.state.selected.push(value); + } let stateObj = { selected: this.state.selected, - category: "" + conditional: "", + category: "", + ediTableTokenId: this.state.ediTableTokenId }; if (isAllowOperator) { @@ -347,9 +427,12 @@ export default class OTokenizer extends Tokenizer { Object.assign(stateObj, { options: newOptions }); } } - this.setState(stateObj, () => this.props.onTokenAdd(this.state.selected)); + this.setState(stateObj, () => { + this.props.onTokenAdd(this.state.selected); + this._focusInput(); + }); return; - }; + } _onClearAll = () => { if (this.props.disabled) { @@ -380,34 +463,58 @@ export default class OTokenizer extends Tokenizer { ); } - _getTypeahed({ classList }) { + _emptyParentCategoryState = () => { + this.setState({"category": ""}, () => { + this._focusInput(); + }); + } + + getTypeHeadHtmlContainer = (component, uniqKey) => { return ( - (this.typeaheadRef = ref)} - disabled={this.props.disabled} - isAllowOperator={this.props.isAllowOperator} - onElementFocused={this.onElementFocused} - isElemenFocused={this.state.focused} - fuzzySearchEmptyMessage={this.props.fuzzySearchEmptyMessage} - fuzzySearchKeyAttribute={this._getFuzzySearchKeyAttribute({ - category: this.state.category - })} - isAllowSearchDropDownHeader={this.props.isAllowSearchDropDownHeader} - renderSearchItem={this.props.renderSearchItem} - className={classList} - placeholder={this.props.placeholder} - customClasses={this.props.customClasses} - options={this._getOptionsForTypeahead()} - header={this._getHeader()} - datatype={this._getInputType()} - isAllowCustomValue={this._getAllowCustomValue({ - category: this.state.category - })} - defaultValue={this.props.defaultValue} - onOptionSelected={this._addTokenForValue} - onKeyDown={this._onKeyDown} - fromTokenizer={true} - /> +
+
{this.state.conditional}
+
{this.state.category}
+
{this.state.operator}
+ { component } +
); } -} \ No newline at end of file + + _getTypeahed({mykey, show}) { + var classes = {}; + classes[this.props.customClasses.typeahead] = !!this.props.customClasses.typeahead; + var classList = classNames(classes); + var typeHeadComp = this.typeaheadRef = ref} + disabled={this.props.disabled} + isAllowOperator={this.props.isAllowOperator} + onElementFocused={this.onElementFocused} + isElemenFocused={this.state.focused} + fuzzySearchEmptyMessage={this.props.fuzzySearchEmptyMessage} + fuzzySearchKeyAttribute={this._getFuzzySearchKeyAttribute({ + category: this.state.category + })} + isAllowSearchDropDownHeader={this.props.isAllowSearchDropDownHeader} + renderSearchItem={this.props.renderSearchItem} + className={classList} + placeholder={this.props.placeholder} + customClasses={this.props.customClasses} + options={this._getOptionsForTypeahead()} + header={this._getHeader()} + datatype={this._getInputType()} + isAllowCustomValue={this._getAllowCustomValue({ + category: this.state.category + })} + defaultValue={this.props.defaultValue} + onOptionSelected={this._addTokenForValue} + onKeyDown={this._onKeyDown} + fromTokenizer={true} + emptyParentCategoryState={this._emptyParentCategoryState} + customQuery={this.props.customQuery} + bracketHasClosed={this._bracketHasClosed} + updateParentInputText={this.props.updateParentInputText} + ediTableTokenId={this.state.ediTableTokenId} + />; + return show ? this.getTypeHeadHtmlContainer(typeHeadComp, mykey) : typeHeadComp; + } +} diff --git a/src/OTypeahead.js b/src/OTypeahead.js index dc3e0bd..4edb0bc 100644 --- a/src/OTypeahead.js +++ b/src/OTypeahead.js @@ -1,6 +1,7 @@ import React, { Component } from "react"; import PropTypes from "prop-types"; import { Typeahead } from "./lib/react-structured-filter/react-typeahead/react-typeahead"; +import CustomQueryTokenizer from './CustomQueryTokenizer'; // Override the Tokenizer export default class OTypeahead extends Typeahead { @@ -66,31 +67,38 @@ export default class OTypeahead extends Typeahead { } } - _getTypeaheadInput({ classList, inputClassList }) { + _getTypeaheadInput({classList, inputClassList}) { return ( -
- {this.state.loadingOptions ? ( - this.props.renderLoading ? ( - this.props.renderLoading() - ) : ( -
Loading...
- ) - ) : ( - (this.inputRef = ref)} onFocus={this._onFocus}> - (this.entryRef = ref)} - type={this.state.datatype == "number" ? "number" : "text"} - placeholder={this.props.placeholder} - className={inputClassList} - defaultValue={this.state.entryValue} - onChange={this._onTextEntryUpdated} - onKeyDown={this._onKeyDown} - disabled={this.props.disabled} - /> - {this._renderIncrementalSearchResults()} - - )} -
+
+ {this.state.loadingOptions + ? this.props.renderLoading + ? this.props.renderLoading () + :
Loading...
+ : (this.inputRef = ref)} onFocus={this._onFocus}> + {this.state.datatype == 'custom' + ? (this.entryRef = ref)} + type={this.state.datatype} + placeholder={this.props.placeholder} + defaultValue={this.state.entryValue} + parentCallBack={this.props.parentCallBack} + disabled={this.props.disabled} + updatedInputText={this._onTextEntryUpdated} + {...this.props} + /> + : (this.entryRef = ref)} + type={this.state.datatype == 'number' ? 'number' : 'text'} + placeholder={this.props.placeholder} + className={inputClassList} + defaultValue={this.state.entryValue} + onChange={this._onTextEntryUpdated} + onKeyDown={this._onKeyDown} + disabled={this.props.disabled} + />} + {this._renderIncrementalSearchResults ()} + } +
); } -} \ No newline at end of file +} diff --git a/src/lib/react-structured-filter/react-typeahead/tokenizer/index.js b/src/lib/react-structured-filter/react-typeahead/tokenizer/index.js index 503d37f..0853659 100755 --- a/src/lib/react-structured-filter/react-typeahead/tokenizer/index.js +++ b/src/lib/react-structured-filter/react-typeahead/tokenizer/index.js @@ -3,7 +3,7 @@ import propTypes from "prop-types"; import Token from "./token"; import KeyEvent from "../keyevent"; import Typeahead from "../typeahead"; -import classNames from "classNames"; +import classNames from "classnames"; /** * A typeahead that, when an option is selected, instead of simply filling @@ -49,10 +49,12 @@ export default class TypeaheadTokenizer extends Component { this.skipCategorySet = new Set(); this.state = { selected: [], + conditional: "", category: "", operator: "", options: this.props.options, - focused: false + focused: this.props.autoFocus || false, + ediTableTokenId: null }; this.state.selected = this.getDefaultSelectedValue(); } @@ -75,13 +77,16 @@ export default class TypeaheadTokenizer extends Component { (typeof selected.value == "string" ? selected.value : selected.value[fuzzySearchKeyAttribute]) + index; return ( - {selected} @@ -151,7 +156,6 @@ export default class TypeaheadTokenizer extends Component { if (event.keyCode !== KeyEvent.DOM_VK_BACK_SPACE) { return; } - // Remove token ONLY when bksp pressed at beginning of line // without a selection var entry = this.typeaheadRef.getInputRef(); @@ -160,9 +164,14 @@ export default class TypeaheadTokenizer extends Component { this.setState({ operator: "" }); } else if (this.state.category != "") { this.setState({ category: "" }); + } else if (this.state.conditional != "") { + this.setState({ conditional: "" }); } else { // No tokens if (!this.state.selected.length) { + if (this.props.emptyParentCategoryState) { + this.props.emptyParentCategoryState(); + } return; } this._removeTokenForValue(this.state.selected[this.state.selected.length - 1]); @@ -184,6 +193,11 @@ export default class TypeaheadTokenizer extends Component { return; }; + _editTokenForValue = value => { + const index = this.state.selected.indexOf(value); + this.setState({ ediTableTokenId: index}, () => setTimeout(() => {this._focusInput()}, 0)); + } + _addTokenForValue = value => { if (this.state.category == "") { this.setState({ category: value }); @@ -224,7 +238,7 @@ export default class TypeaheadTokenizer extends Component { } } - _getTypeahed({ classList }) { + _getTypeahed() { return ( (this.typeaheadRef = ref)} @@ -242,27 +256,33 @@ export default class TypeaheadTokenizer extends Component { } render() { - var classes = {}; - classes[this.props.customClasses.typeahead] = !!this.props.customClasses.typeahead; - var classList = classNames(classes); + var classes = { + 'filter-tokenizer': true + }; + classes[this.props.customClasses.query] = this.props.customClasses.query; + var classList = classNames(classes, { + "padding-for-clear-all" : this.props.isAllowClearAll, + "disabled": this.props.disabled + }); return (
{ this.node = node; }} >
- {this._renderTokens()} -
-
{this.state.category}
-
{this.state.operator}
- - {this._getTypeahed({ classList })} -
+ { this._renderTokens()} + { this.state.ediTableTokenId === null &&
+
{this.state.conditional}
+
{this.state.category}
+
{this.state.operator}
+ {this._getTypeahed ({show: false})} +
+ }
{this.props.isAllowClearAll ? this._getClearAllButton() : null}
); } -} \ No newline at end of file +} diff --git a/src/lib/react-structured-filter/react-typeahead/tokenizer/token.js b/src/lib/react-structured-filter/react-typeahead/tokenizer/token.js index 35badd9..ecc2cda 100755 --- a/src/lib/react-structured-filter/react-typeahead/tokenizer/token.js +++ b/src/lib/react-structured-filter/react-typeahead/tokenizer/token.js @@ -1,4 +1,4 @@ -import React, { Component } from "react"; +import React, { Component, Fragment } from "react"; import propTypes from "prop-types"; /** @@ -29,12 +29,31 @@ export default class Token extends Component { ); } + _makeEditButton() { + if (!this.props.onRemoveToken) { + return ""; + } + return ( + + 🖉 + + ); + } + getTokenValue() { let value = this.props.children["value"]; if (value && typeof value == "object") { return value[this.props.fuzzySearchKeyAttribute]; } else { - return value; + return value.trim(); } } @@ -42,17 +61,19 @@ export default class Token extends Component { if (this.props.renderTokenItem) { return this.props.renderTokenItem(this.props); } else { - let val = this.props.children; - return `${val["category"]} ${val.operator == undefined ? "" : val.operator} "${this.getTokenValue()}" `; + let val = this.props.children, + tokenVal = (val.conditional && val.conditional.includes(')')) ? this.getTokenValue() : `"${this.getTokenValue()}"`; + return `${val.conditional == undefined ? "" : val.conditional} ${val["category"]} ${val.operator == undefined ? "" : val.operator} ${tokenVal} `; } } render() { return (
- {this.getTokenItem()} {this._makeCloseButton()} + {this.getTokenItem()} + {this._makeEditButton()}
); } -} \ No newline at end of file +} diff --git a/src/lib/react-structured-filter/react-typeahead/typeahead/index.js b/src/lib/react-structured-filter/react-typeahead/typeahead/index.js index 163f6b8..554cc39 100755 --- a/src/lib/react-structured-filter/react-typeahead/typeahead/index.js +++ b/src/lib/react-structured-filter/react-typeahead/typeahead/index.js @@ -6,7 +6,7 @@ import TypeaheadSelector from "./selector"; import KeyEvent from "../keyevent"; import fuzzy from "fuzzy"; import DatePicker from "../../react-datepicker/datepicker.js"; -import classNames from "classNames"; +import classNames from "classnames"; /** * A "typeahead", an auto-completing text input @@ -70,11 +70,17 @@ export default class Typeahead extends Component { // A valid typeahead value selection: null, - focused: false + focused: this.props.isElemenFocused || false }; this.fuzzySearchKeyAttribute = this.props.fuzzySearchKeyAttribute; } + componentDidMount () { + if (this.props.isElemenFocused) { + this.entryRef.focus(); + } + } + componentWillReceiveProps(nextProps) { this.fuzzySearchKeyAttribute = nextProps.fuzzySearchKeyAttribute || this.props.fuzzySearchKeyAttribute; this.setState({ @@ -175,15 +181,22 @@ export default class Typeahead extends Component { this.props.onOptionSelected(option); } - _onTextEntryUpdated = () => { + _onTextEntryUpdated = (val) => { var value = ""; if (this.entryRef != null) { value = this.entryRef.value; } + if (this.state.datatype === "custom") { + value = val; + } this.setState({ visible: this.getOptionsForValue(value, this.state.options), selection: null, entryValue: value + }, () => { + if (this.state.datatype === "custom" && val !== undefined) { + this.props.onOptionSelected(value); + } }); }; @@ -225,9 +238,11 @@ export default class Typeahead extends Component { // If no options were provided so we can match on anything if (this.props.options.length === 0) { this._onOptionSelected(this.state.entryValue); - } else if (this.props.options.indexOf(this.state.entryValue) > -1 || (this.state.entryValue.trim() != "" && this.props.isAllowCustomValue)) { + } else if (this.props.options.indexOf(this.state.entryValue) > -1 || (this.state.entryValue && this.state.entryValue.trim() != "" && this.props.isAllowCustomValue)) { // If what has been typed in is an exact match of one of the options this._onOptionSelected(this.state.entryValue); + } else if (this.props.customQuery && this.props.bracketHasClosed()) { + this.props.updateParentInputText(); } } @@ -251,9 +266,8 @@ export default class Typeahead extends Component { _onFocus = event => { if (this.props.onElementFocused) { this.props.onElementFocused({ focused: true }); - } else { - this.setState({ focused: true }); } + this.setState({ focused: true }); }; isDescendant(parent, child) { @@ -330,4 +344,4 @@ export default class Typeahead extends Component { } return this._getTypeaheadInput({ classList, inputClassList }); } -} \ No newline at end of file +} diff --git a/src/lib/react-structured-filter/react-typeahead/typeahead/option.js b/src/lib/react-structured-filter/react-typeahead/typeahead/option.js index 40ba4eb..b082311 100755 --- a/src/lib/react-structured-filter/react-typeahead/typeahead/option.js +++ b/src/lib/react-structured-filter/react-typeahead/typeahead/option.js @@ -1,6 +1,6 @@ import React, { Component } from "react"; import propTypes from "prop-types"; -import classNames from "classNames"; +import classNames from "classnames"; /** * A single option within the TypeaheadSelector @@ -59,4 +59,4 @@ export default class TypeaheadOption extends Component { ); } -} \ No newline at end of file +} diff --git a/src/lib/react-structured-filter/react-typeahead/typeahead/selector.js b/src/lib/react-structured-filter/react-typeahead/typeahead/selector.js index 6584f10..45821d2 100755 --- a/src/lib/react-structured-filter/react-typeahead/typeahead/selector.js +++ b/src/lib/react-structured-filter/react-typeahead/typeahead/selector.js @@ -1,7 +1,7 @@ import React, { Component } from "react"; import propTypes from "prop-types"; import TypeaheadOption from "./option"; -import classNames from "classNames"; +import classNames from "classnames"; /** * Container for the options rendered as part of the autocompletion process diff --git a/src/lib/react-structured-filter/scss/style.scss b/src/lib/react-structured-filter/scss/style.scss index 9a6a76f..82062d0 100644 --- a/src/lib/react-structured-filter/scss/style.scss +++ b/src/lib/react-structured-filter/scss/style.scss @@ -41,7 +41,7 @@ } ul.typeahead-selector { z-index: 100; - position: absolute; + position: fixed; list-style: none; margin: 0; padding: 0; @@ -156,10 +156,33 @@ margin: 3px; padding: 5px; font-weight: bold; + .typeahead-token-close, + .typeahead-token-edit { + visibility: hidden; + text-decoration: none; + } + + &:hover > .typeahead-token-close, + &:hover > .typeahead-token-edit { + visibility: visible; + } + } + + .filter-tokenizer.custom-query { + border: none; + margin-top: -7px; + .token-collection{ + .typeahead-token { + background-color: transparent; + background-image: none; + border: none; + margin: 3px 0; + } + } } ul.typeahead-selector { z-index: 100; - position: absolute; + position: fixed; list-style: none; margin: 0; padding: 0; @@ -213,6 +236,9 @@ margin: 3px; padding: 5px; float: left; + .filter-conditional { + @extend %filter-popup; + } .filter-category { @extend %filter-popup; } @@ -344,4 +370,4 @@ &:focus { outline: none; } -} \ No newline at end of file +} From 434809acdf3f66319d711733f2b9dac8431db074 Mon Sep 17 00:00:00 2001 From: sameer79 Date: Mon, 9 Dec 2019 09:52:03 +0530 Subject: [PATCH 03/15] Pass query options from parent. --- example/src/App.js | 30 ++++++++++++++++++ src/CustomQueryTokenizer.js | 31 +------------------ src/OTokenizer.js | 4 +++ .../react-typeahead/tokenizer/index.js | 1 + 4 files changed, 36 insertions(+), 30 deletions(-) diff --git a/example/src/App.js b/example/src/App.js index e3e26d4..03f951f 100755 --- a/example/src/App.js +++ b/example/src/App.js @@ -52,6 +52,36 @@ export default class App extends Component { isAllowCustomValue: true, options: null, operator: null, + queryOptions: [ + { + conditional: "AND", + category: "Demo", + type: "textoptions", + operator: ["==", "!="], + options: ["demo1", "test2"] + }, + { + conditional: "OR", + category: "Sample", + type: "textoptions", + operator: ["==", "!="], + options: ["demo1", "test2"] + }, + { + conditional: ",", + category: "", + type: "textoptions", + operator: ["==", "!="], + options: ["demo1", "test2"] + }, + { + conditional: " )", + category: "", + type: "text", + operator: null, + options: null + } + ] } ]; } diff --git a/src/CustomQueryTokenizer.js b/src/CustomQueryTokenizer.js index fdd7a9d..55125ef 100644 --- a/src/CustomQueryTokenizer.js +++ b/src/CustomQueryTokenizer.js @@ -8,36 +8,7 @@ export default class CustomQueryTokenizer extends Component { this.state = { selected : [] }; - this.options = [ - { - conditional: "AND", - category: "Demo", - type: "textoptions", - operator: this.getOperatorOptions, - options: this.getSymbolOptions - }, - { - conditional: "OR", - category: "Sample", - type: "textoptions", - operator: this.getOperatorOptions, - options: this.getSymbolOptions - }, - { - conditional: ",", - category: "", - type: "textoptions", - operator: this.getOperatorOptions, - options: this.getSymbolOptions - }, - { - conditional: " )", - category: "", - type: "text", - operator: null, - options: null - } - ]; + this.options = this.props.queryOptions || []; } getOperatorOptions () { diff --git a/src/OTokenizer.js b/src/OTokenizer.js index 992cbc6..272011c 100644 --- a/src/OTokenizer.js +++ b/src/OTokenizer.js @@ -61,7 +61,10 @@ export default class OTokenizer extends Tokenizer { }; _getInputType() { + var that = this; if (this.state.category === "Query") { + var opt = this.state.options.find(function(f) { return f.category === that.state.category;}); + this.queryOptions = opt.queryOptions; return "custom"; } else if (this.state.category != "" && (this.props.isAllowOperator && this._getCategoryOperator() !== null ? this.state.operator != "" : true)) { return this._getCategoryType(); @@ -514,6 +517,7 @@ export default class OTokenizer extends Tokenizer { bracketHasClosed={this._bracketHasClosed} updateParentInputText={this.props.updateParentInputText} ediTableTokenId={this.state.ediTableTokenId} + queryOptions={this.queryOptions} />; return show ? this.getTypeHeadHtmlContainer(typeHeadComp, mykey) : typeHeadComp; } diff --git a/src/lib/react-structured-filter/react-typeahead/tokenizer/index.js b/src/lib/react-structured-filter/react-typeahead/tokenizer/index.js index 0853659..ad6dc92 100755 --- a/src/lib/react-structured-filter/react-typeahead/tokenizer/index.js +++ b/src/lib/react-structured-filter/react-typeahead/tokenizer/index.js @@ -57,6 +57,7 @@ export default class TypeaheadTokenizer extends Component { ediTableTokenId: null }; this.state.selected = this.getDefaultSelectedValue(); + this.queryOptions = []; } _renderTokens() { From 6296a99e690492ea9a407878bfa3c5eef9cbdf67 Mon Sep 17 00:00:00 2001 From: sameer79 Date: Mon, 9 Dec 2019 14:46:45 +0530 Subject: [PATCH 04/15] Reset after you done your work. --- example/src/App.js | 40 ++++++++----------- src/CustomQueryTokenizer.js | 4 +- src/OTokenizer.js | 9 +++-- .../react-structured-filter/scss/style.scss | 1 + 4 files changed, 25 insertions(+), 29 deletions(-) diff --git a/example/src/App.js b/example/src/App.js index 03f951f..cdde79a 100755 --- a/example/src/App.js +++ b/example/src/App.js @@ -13,41 +13,40 @@ export default class App extends Component { this.options = [ { conditional:null, - category: "Symbol", + category: "Type", type: "textoptions", operator: ["==", "!="], - options: this.getSymbolOptions - }, - { - conditional:null, - category: "Name", - type: "text", isAllowDuplicateCategories: false, - operator: null + options: this.getSymbolOptions }, - { conditional:null, category: "Price", type: "number" }, - { conditional:null, category: "MarketCap", type: "number" }, - { conditional:null, category: "IPO", type: "date" }, { conditional:null, - category: "Sector", + category: "Classification", type: "textoptions", + operator: ["==", "!="], + isAllowDuplicateCategories: false, fuzzySearchKeyAttribute: "sectorName", - isAllowCustomValue: false, - isAllowDuplicateOptions: false, - operator: null, options: this.getSectorOptions }, { conditional:null, - category: "Industry", + category: "Terms", type: "textoptions", - isAllowCustomValue: false, + operator: ["==", "!="], + isAllowDuplicateCategories: false, options: this.getIndustryOptions }, { + conditional:null, + category: "Label", + type: "text", + isAllowDuplicateCategories: false, + operator: null + }, + { conditional: null, category: "Query", + isAllowDuplicateCategories: false, type: "custom", isAllowCustomValue: true, options: null, @@ -130,12 +129,7 @@ export default class App extends Component {
{ diff --git a/src/CustomQueryTokenizer.js b/src/CustomQueryTokenizer.js index 55125ef..71fe48d 100644 --- a/src/CustomQueryTokenizer.js +++ b/src/CustomQueryTokenizer.js @@ -1,6 +1,6 @@ import React, {Component, Fragment} from 'react'; -import ReactStructuredQuerySearch from "react-structured-query-search"; +import Tokenizer from "./OTokenizer"; export default class CustomQueryTokenizer extends Component { constructor(props) { @@ -42,7 +42,7 @@ export default class CustomQueryTokenizer extends Component { render() { return( - Date: Wed, 11 Dec 2019 13:41:56 +0530 Subject: [PATCH 05/15] small fixes. --- example/src/App.js | 12 +++--- src/CustomQueryTokenizer.js | 1 + src/OTokenizer.js | 29 +++++++++++--- src/OTypeahead.js | 39 +++++++++++++------ .../react-typeahead/tokenizer/index.js | 16 ++++++-- .../react-typeahead/tokenizer/token.js | 16 ++++++-- .../react-typeahead/typeahead/index.js | 4 +- .../react-structured-filter/scss/style.scss | 7 ++++ 8 files changed, 93 insertions(+), 31 deletions(-) diff --git a/example/src/App.js b/example/src/App.js index cdde79a..bbdfe7f 100755 --- a/example/src/App.js +++ b/example/src/App.js @@ -31,12 +31,12 @@ export default class App extends Component { { conditional:null, category: "Terms", - type: "textoptions", + type: "textoptions", operator: ["==", "!="], - isAllowDuplicateCategories: false, - options: this.getIndustryOptions - }, - { + isAllowDuplicateCategories: true, + options: this.getIndustryOptions + }, + { conditional:null, category: "Label", type: "text", @@ -116,7 +116,7 @@ export default class App extends Component { * @return {[array]} */ getIndustryOptions() { - return [{ name: "Business Services", id: 1 }, { name: "Other Specialty Stores", id: 2 }]; + return [{ name: "Business Services", id: 1 }, { name: "Other Specialty Stores", id: 2 }, { name: "demo test", id: 3 }]; } getTokenItem(obj) { diff --git a/src/CustomQueryTokenizer.js b/src/CustomQueryTokenizer.js index 71fe48d..bb19065 100644 --- a/src/CustomQueryTokenizer.js +++ b/src/CustomQueryTokenizer.js @@ -60,6 +60,7 @@ export default class CustomQueryTokenizer extends Component { updateParentInputText={this.updateParentInputText.bind(this)} customQuery={true} autoFocus={true} + isAllowClearAll={false} /> ); diff --git a/src/OTokenizer.js b/src/OTokenizer.js index 00ede5e..8a02fbf 100644 --- a/src/OTokenizer.js +++ b/src/OTokenizer.js @@ -200,7 +200,7 @@ export default class OTokenizer extends Tokenizer { } filterOptionsValue({ options, category = this.state.category, selected = this.state.selected, fromDefaultValue }) { - if (this._getAllowDuplicateOptions({ constategory: category }) == false) { + if (this._getAllowDuplicateOptions({ category: category }) == false) { if (selected.length && category != "") { let optionsList = []; if (options && options.length) { @@ -219,6 +219,9 @@ export default class OTokenizer extends Tokenizer { }); options.forEach(val => { let foundOption = listToFindOptionOnIt.find(o => { + if(this.state.ediTableTokenId !== null && o.value[fuzzySearchKeyAttribute] === val[fuzzySearchKeyAttribute]){ + return false; + } if (typeof val === "object") { return o.value[fuzzySearchKeyAttribute] == val[fuzzySearchKeyAttribute]; } else { @@ -484,6 +487,18 @@ export default class OTokenizer extends Tokenizer { ); } + _updatedToken() { + this.setState({ + conditional: '', + category: '', + operator: '', + ediTableTokenId: null + }, () => { + this.props.onTokenAdd(this.state.selected); + this._focusInput(); + }); + } + _getTypeahed({mykey, show}) { var classes = {}; classes[this.props.customClasses.typeahead] = !!this.props.customClasses.typeahead; @@ -516,10 +531,12 @@ export default class OTokenizer extends Tokenizer { emptyParentCategoryState={this._emptyParentCategoryState} customQuery={this.props.customQuery} bracketHasClosed={this._bracketHasClosed} - updateParentInputText={this.props.updateParentInputText} - ediTableTokenId={this.state.ediTableTokenId} + updateParentInputText={this.props.updateParentInputText} + ediTableTokenId={this.state.ediTableTokenId} queryOptions={this.queryOptions} - />; - return show ? this.getTypeHeadHtmlContainer(typeHeadComp, mykey) : typeHeadComp; - } + ediTableTokenId={this.state.ediTableTokenId} + updatedToken={this._updatedToken.bind(this)} + />; + return show ? this.getTypeHeadHtmlContainer(typeHeadComp, mykey) : typeHeadComp; + } } diff --git a/src/OTypeahead.js b/src/OTypeahead.js index 4edb0bc..a2df643 100644 --- a/src/OTypeahead.js +++ b/src/OTypeahead.js @@ -1,4 +1,4 @@ -import React, { Component } from "react"; +import React, { Component, Fragment } from "react"; import PropTypes from "prop-types"; import { Typeahead } from "./lib/react-structured-filter/react-typeahead/react-typeahead"; import CustomQueryTokenizer from './CustomQueryTokenizer'; @@ -68,6 +68,9 @@ export default class OTypeahead extends Typeahead { } _getTypeaheadInput({classList, inputClassList}) { + if (this.props.ediTableTokenId !== null) { + inputClassList += ' editMode'; + } return (
{this.state.loadingOptions @@ -86,16 +89,30 @@ export default class OTypeahead extends Typeahead { updatedInputText={this._onTextEntryUpdated} {...this.props} /> - : (this.entryRef = ref)} - type={this.state.datatype == 'number' ? 'number' : 'text'} - placeholder={this.props.placeholder} - className={inputClassList} - defaultValue={this.state.entryValue} - onChange={this._onTextEntryUpdated} - onKeyDown={this._onKeyDown} - disabled={this.props.disabled} - />} + : + (this.entryRef = ref)} + type={this.state.datatype == 'number' ? 'number' : 'text'} + placeholder={this.props.placeholder} + className={inputClassList} + defaultValue={this.state.entryValue} + onChange={this._onTextEntryUpdated} + onKeyDown={this._onKeyDown} + disabled={this.props.disabled} + /> + { + this.props.ediTableTokenId !== null && + × + + } + } {this._renderIncrementalSearchResults ()} }
diff --git a/src/lib/react-structured-filter/react-typeahead/tokenizer/index.js b/src/lib/react-structured-filter/react-typeahead/tokenizer/index.js index ad6dc92..9f2c88a 100755 --- a/src/lib/react-structured-filter/react-typeahead/tokenizer/index.js +++ b/src/lib/react-structured-filter/react-typeahead/tokenizer/index.js @@ -75,8 +75,12 @@ export default class TypeaheadTokenizer extends Component { let mykey = selected.category + (this.props.isAllowOperator ? selected.operator : "") + - (typeof selected.value == "string" ? selected.value : selected.value[fuzzySearchKeyAttribute]) + - index; + (selected.value ? + (typeof selected.value == "string" + ? selected.value + : selected.value[fuzzySearchKeyAttribute]) + : "") + index; + return ( this.state.ediTableTokenId === index ? this._getTypeahed ({mykey, show: true}): { const index = this.state.selected.indexOf(value); - this.setState({ ediTableTokenId: index}, () => setTimeout(() => {this._focusInput()}, 0)); + this.setState({ + conditional: value.conditional || '', + category: value.category || '', + operator: value.operator, + value: null, + ediTableTokenId: index + }, () => setTimeout(() => {this._focusInput()}, 0)); } _addTokenForValue = value => { diff --git a/src/lib/react-structured-filter/react-typeahead/tokenizer/token.js b/src/lib/react-structured-filter/react-typeahead/tokenizer/token.js index ecc2cda..69e4fe0 100755 --- a/src/lib/react-structured-filter/react-typeahead/tokenizer/token.js +++ b/src/lib/react-structured-filter/react-typeahead/tokenizer/token.js @@ -63,16 +63,26 @@ export default class Token extends Component { } else { let val = this.props.children, tokenVal = (val.conditional && val.conditional.includes(')')) ? this.getTokenValue() : `"${this.getTokenValue()}"`; - return `${val.conditional == undefined ? "" : val.conditional} ${val["category"]} ${val.operator == undefined ? "" : val.operator} ${tokenVal} `; + return + + {val.conditional == undefined ? "" : val.conditional} + {val["category"]} + {val.operator == undefined ? "" : val.operator} + {tokenVal} + + ; } } render() { return (
- {this._makeCloseButton()} {this.getTokenItem()} - {this._makeEditButton()} + {this._makeCloseButton()}
); } diff --git a/src/lib/react-structured-filter/react-typeahead/typeahead/index.js b/src/lib/react-structured-filter/react-typeahead/typeahead/index.js index 554cc39..8a044b6 100755 --- a/src/lib/react-structured-filter/react-typeahead/typeahead/index.js +++ b/src/lib/react-structured-filter/react-typeahead/typeahead/index.js @@ -55,6 +55,7 @@ export default class Typeahead extends Component { this.entryRef = null; this.selRef = null; this.inputRef = null; + this.fuzzySearchKeyAttribute = this.props.fuzzySearchKeyAttribute; this.state = { // The set of all options... Does this need to be state? I guess for lazy load... loadingOptions: false, @@ -72,11 +73,10 @@ export default class Typeahead extends Component { selection: null, focused: this.props.isElemenFocused || false }; - this.fuzzySearchKeyAttribute = this.props.fuzzySearchKeyAttribute; } componentDidMount () { - if (this.props.isElemenFocused) { + if (this.props.isElemenFocused && this.entryRef && this.entryRef.focus) { this.entryRef.focus(); } } diff --git a/src/lib/react-structured-filter/scss/style.scss b/src/lib/react-structured-filter/scss/style.scss index 89c9c4e..55d31c7 100644 --- a/src/lib/react-structured-filter/scss/style.scss +++ b/src/lib/react-structured-filter/scss/style.scss @@ -372,3 +372,10 @@ outline: none; } } +.token-text:hover { + cursor: pointer; + text-decoration: underline; +} +.filter-tokenizer .typeahead input.editMode { + width: 90%; +} From bc1cccee79c956222fd5f67f974dd73125ad7013 Mon Sep 17 00:00:00 2001 From: sameer79 Date: Thu, 19 Dec 2019 14:59:11 +0530 Subject: [PATCH 06/15] Fix-for-breaking-when-edit-is-enable-and-your-press. --- example/src/App.js | 12 +-- src/CustomQueryTokenizer.js | 19 +++-- src/OTokenizer.js | 41 +++++----- src/OTypeahead.js | 81 ++++++++++--------- .../react-typeahead/tokenizer/index.js | 2 +- .../react-typeahead/typeahead/index.js | 4 +- 6 files changed, 87 insertions(+), 72 deletions(-) diff --git a/example/src/App.js b/example/src/App.js index bbdfe7f..fce6689 100755 --- a/example/src/App.js +++ b/example/src/App.js @@ -44,13 +44,13 @@ export default class App extends Component { operator: null }, { - conditional: null, - category: "Query", + conditional: null, + category: "Query", isAllowDuplicateCategories: false, - type: "custom", - isAllowCustomValue: true, - options: null, - operator: null, + type: "query", + isAllowCustomValue: true, + options: null, + operator: null, queryOptions: [ { conditional: "AND", diff --git a/src/CustomQueryTokenizer.js b/src/CustomQueryTokenizer.js index bb19065..4b6cf1b 100644 --- a/src/CustomQueryTokenizer.js +++ b/src/CustomQueryTokenizer.js @@ -39,7 +39,17 @@ export default class CustomQueryTokenizer extends Component { this.props.updatedInputText(str); } + updateParentToken = () => { + this.props.updatedToken(); + } + render() { + var classList = { + input: "filter-tokenizer-text-input", + results: "filter-tokenizer-list__container", + listItem: "filter-tokenizer-list__item", + query: "custom-query" + }; return( console.log(val, 'onTokenAdd')} - customClasses={{ - input: "filter-tokenizer-text-input", - results: "filter-tokenizer-list__container", - listItem: "filter-tokenizer-list__item", - query: "custom-query" - }} + customClasses={classList} emptyParentCategoryState={this.props.emptyParentCategoryState} updateParentInputText={this.updateParentInputText.bind(this)} customQuery={true} autoFocus={true} isAllowClearAll={false} + ediTableTokenId={this.props.ediTableTokenId} + updateParentToken={this.updateParentToken} /> ); diff --git a/src/OTokenizer.js b/src/OTokenizer.js index 8a02fbf..4a2a90f 100644 --- a/src/OTokenizer.js +++ b/src/OTokenizer.js @@ -58,17 +58,18 @@ export default class OTokenizer extends Tokenizer { onElementFocused = val => { this.setState(val); - }; + }; _getInputType() { - var that = this; - if (this.state.category === "Query" || this.state.category === "EntityFilter" || this.state.category === "ClassificationFilter") { + var that = this, + type = this._getCategoryType(); + if (this.state.category !== "" && type === 'query') { var opt = this.state.options.find(function(f) { return f.category === that.state.category;}); this.queryOptions = opt.queryOptions; - return "custom"; - } else if (this.state.category != "" && (this.props.isAllowOperator && this._getCategoryOperator() !== null ? this.state.operator != "" : true)) { - return this._getCategoryType(); - } else { + return type; + } else if (this.state.category != "" && (this.props.isAllowOperator && this._getCategoryOperator() !== null ? this.state.operator != "" : true)) { + return this._getCategoryType(); + } else { return "text"; } } @@ -361,7 +362,7 @@ export default class OTokenizer extends Tokenizer { return; } let { isAllowOperator } = this.props; - const closeBracket = this.state.conditional && this.state.conditional.includes(')') ? true : false; + const closeBracket = (value && value.toString() !== "[object Object]" && value.includes(')')) ? true : false; if (this.state.conditional == "" && this._checkConditionalOptions()) { var val = this._checkSpeacialChar(value) ? value : value + " ( " ; this.state.conditional = val; @@ -484,10 +485,10 @@ export default class OTokenizer extends Tokenizer {
{this.state.operator}
{ component }
- ); - } + ); + } - _updatedToken() { + _updatedToken = () => { this.setState({ conditional: '', category: '', @@ -502,8 +503,10 @@ export default class OTokenizer extends Tokenizer { _getTypeahed({mykey, show}) { var classes = {}; classes[this.props.customClasses.typeahead] = !!this.props.customClasses.typeahead; - var classList = classNames(classes); - var typeHeadComp = this.typeaheadRef = ref} disabled={this.props.disabled} isAllowOperator={this.props.isAllowOperator} @@ -516,7 +519,7 @@ export default class OTokenizer extends Tokenizer { isAllowSearchDropDownHeader={this.props.isAllowSearchDropDownHeader} renderSearchItem={this.props.renderSearchItem} className={classList} - placeholder={this.props.placeholder} + placeholder={placeholder} customClasses={this.props.customClasses} options={this._getOptionsForTypeahead()} header={this._getHeader()} @@ -529,13 +532,13 @@ export default class OTokenizer extends Tokenizer { onKeyDown={this._onKeyDown} fromTokenizer={true} emptyParentCategoryState={this._emptyParentCategoryState} - customQuery={this.props.customQuery} - bracketHasClosed={this._bracketHasClosed} + customQuery={this.props.customQuery} + bracketHasClosed={this._bracketHasClosed} updateParentInputText={this.props.updateParentInputText} - ediTableTokenId={this.state.ediTableTokenId} + ediTableTokenId={editId} queryOptions={this.queryOptions} - ediTableTokenId={this.state.ediTableTokenId} - updatedToken={this._updatedToken.bind(this)} + updatedToken={this._updatedToken} + updateParentToken={this.props.updateParentToken} />; return show ? this.getTypeHeadHtmlContainer(typeHeadComp, mykey) : typeHeadComp; } diff --git a/src/OTypeahead.js b/src/OTypeahead.js index a2df643..4f19054 100644 --- a/src/OTypeahead.js +++ b/src/OTypeahead.js @@ -71,48 +71,53 @@ export default class OTypeahead extends Typeahead { if (this.props.ediTableTokenId !== null) { inputClassList += ' editMode'; } - return ( -
- {this.state.loadingOptions + var closeBtn = this.closeRef = ref} + className="typeahead-token-close" + href="javascript:void(0)" + onClick={(event) => { + if (this.props.updateParentToken) { + this.props.updateParentToken(); + } else { + this.props.updatedToken(); + } + event.preventDefault(); + }} + > + × + ; + return ( +
+ {this.state.loadingOptions ? this.props.renderLoading ? this.props.renderLoading () :
Loading...
: (this.inputRef = ref)} onFocus={this._onFocus}> - {this.state.datatype == 'custom' - ? (this.entryRef = ref)} - type={this.state.datatype} - placeholder={this.props.placeholder} - defaultValue={this.state.entryValue} - parentCallBack={this.props.parentCallBack} - disabled={this.props.disabled} - updatedInputText={this._onTextEntryUpdated} - {...this.props} - /> - : - (this.entryRef = ref)} - type={this.state.datatype == 'number' ? 'number' : 'text'} - placeholder={this.props.placeholder} - className={inputClassList} - defaultValue={this.state.entryValue} - onChange={this._onTextEntryUpdated} - onKeyDown={this._onKeyDown} - disabled={this.props.disabled} - /> - { - this.props.ediTableTokenId !== null && - × - - } - } + {this.state.datatype == 'query' + ? (this.entryRef = ref)} + type={this.state.datatype} + placeholder={this.props.placeholder} + defaultValue={this.state.entryValue} + parentCallBack={this.props.parentCallBack} + disabled={this.props.disabled} + updatedInputText={this._onTextEntryUpdated} + {...this.props} + /> + : + (this.entryRef = ref)} + type={this.state.datatype == 'number' ? 'number' : 'text'} + placeholder={this.props.placeholder} + className={inputClassList} + defaultValue={this.state.entryValue} + onChange={this._onTextEntryUpdated} + onKeyDown={this._onKeyDown} + disabled={this.props.disabled} + /> + {this.props.ediTableTokenId !== null && this.props.ediTableTokenId !== undefined && closeBtn} + + } {this._renderIncrementalSearchResults ()} }
diff --git a/src/lib/react-structured-filter/react-typeahead/tokenizer/index.js b/src/lib/react-structured-filter/react-typeahead/tokenizer/index.js index 9f2c88a..8e21ec6 100755 --- a/src/lib/react-structured-filter/react-typeahead/tokenizer/index.js +++ b/src/lib/react-structured-filter/react-typeahead/tokenizer/index.js @@ -179,7 +179,7 @@ export default class TypeaheadTokenizer extends Component { } return; } - this._removeTokenForValue(this.state.selected[this.state.selected.length - 1]); + this.state.ediTableTokenId === null && this._removeTokenForValue(this.state.selected[this.state.selected.length - 1]); } event.preventDefault(); } diff --git a/src/lib/react-structured-filter/react-typeahead/typeahead/index.js b/src/lib/react-structured-filter/react-typeahead/typeahead/index.js index 8a044b6..e615ad8 100755 --- a/src/lib/react-structured-filter/react-typeahead/typeahead/index.js +++ b/src/lib/react-structured-filter/react-typeahead/typeahead/index.js @@ -186,7 +186,7 @@ export default class Typeahead extends Component { if (this.entryRef != null) { value = this.entryRef.value; } - if (this.state.datatype === "custom") { + if (this.state.datatype === "query") { value = val; } this.setState({ @@ -194,7 +194,7 @@ export default class Typeahead extends Component { selection: null, entryValue: value }, () => { - if (this.state.datatype === "custom" && val !== undefined) { + if (this.state.datatype === "query" && val !== undefined) { this.props.onOptionSelected(value); } }); From f1b416e8e1d46789d032af21afe68c15bc8bb65b Mon Sep 17 00:00:00 2001 From: sameer79 Date: Fri, 13 Dec 2019 10:25:29 +0530 Subject: [PATCH 07/15] Pass the conditional array fomr the custom query components. --- example/src/App.js | 35 +++++++------------ src/CustomQueryTokenizer.js | 2 ++ src/OTokenizer.js | 28 ++++++++------- .../react-typeahead/tokenizer/index.js | 4 ++- .../react-typeahead/tokenizer/token.js | 8 +++-- 5 files changed, 38 insertions(+), 39 deletions(-) diff --git a/example/src/App.js b/example/src/App.js index fce6689..fee6ced 100755 --- a/example/src/App.js +++ b/example/src/App.js @@ -9,27 +9,24 @@ export default class App extends Component { this.state = { SymbolData: [] }; - // NOTE: The operator will seen to UI only if props isAllowOperator={true} - this.options = [ - { - conditional:null, + // NOTE: The operator will seen to UI only if props isAllowOperator={true} + this.options = [ + { category: "Type", - type: "textoptions", - operator: ["==", "!="], + type: "textoptions", + operator: ["==", "!="], isAllowDuplicateCategories: false, options: this.getSymbolOptions - }, - { - conditional:null, + }, + { category: "Classification", - type: "textoptions", + type: "textoptions", operator: ["==", "!="], isAllowDuplicateCategories: false, fuzzySearchKeyAttribute: "sectorName", - options: this.getSectorOptions - }, - { - conditional:null, + options: this.getSectorOptions + }, + { category: "Terms", type: "textoptions", operator: ["==", "!="], @@ -37,14 +34,12 @@ export default class App extends Component { options: this.getIndustryOptions }, { - conditional:null, category: "Label", type: "text", isAllowDuplicateCategories: false, operator: null }, { - conditional: null, category: "Query", isAllowDuplicateCategories: false, type: "query", @@ -53,29 +48,25 @@ export default class App extends Component { operator: null, queryOptions: [ { - conditional: "AND", category: "Demo", type: "textoptions", operator: ["==", "!="], options: ["demo1", "test2"] }, { - conditional: "OR", category: "Sample", type: "textoptions", operator: ["==", "!="], options: ["demo1", "test2"] }, { - conditional: ",", - category: "", + category: "Test", type: "textoptions", operator: ["==", "!="], options: ["demo1", "test2"] }, { - conditional: " )", - category: "", + category: "Jason", type: "text", operator: null, options: null diff --git a/src/CustomQueryTokenizer.js b/src/CustomQueryTokenizer.js index 4b6cf1b..2819580 100644 --- a/src/CustomQueryTokenizer.js +++ b/src/CustomQueryTokenizer.js @@ -9,6 +9,7 @@ export default class CustomQueryTokenizer extends Component { selected : [] }; this.options = this.props.queryOptions || []; + this.conditionalList = this.props.conditionalList || [",", "AND","OR"," )"]; } getOperatorOptions () { @@ -68,6 +69,7 @@ export default class CustomQueryTokenizer extends Component { isAllowClearAll={false} ediTableTokenId={this.props.ediTableTokenId} updateParentToken={this.updateParentToken} + conditionalList={this.conditionalList} /> ); diff --git a/src/OTokenizer.js b/src/OTokenizer.js index 4a2a90f..a4de191 100644 --- a/src/OTokenizer.js +++ b/src/OTokenizer.js @@ -50,7 +50,7 @@ export default class OTokenizer extends Tokenizer { ) { return; } - if (this.state.focused === true && this.typeaheadRef && !this.typeaheadRef.isOptionsLoading()) { + if (this.state.focused === true && this.typeaheadRef && !this.typeaheadRef.isOptionsLoading() && (this.props.ediTableTokenId === null || this.props.ediTableTokenId === undefined)) { this.setState({ focused: false }); } } @@ -82,9 +82,12 @@ export default class OTokenizer extends Tokenizer { } } - _checkConditionalOptions () { - return this.state.options.filter(function(o) { - return o.conditional !== null && o.conditional !== undefined && o.conditional !== ""; + _checkConditionalOptions (val) { + if (!this.props.conditionalList) { + return false; + } + return this.props.conditionalList.filter(function(o) { + return o !== null && o !== undefined && o !== ""; }).length > 0 ? true : false; } @@ -120,9 +123,8 @@ export default class OTokenizer extends Tokenizer { const closeBracket = this.state.conditional && this.state.conditional.includes(')') ? true : false; if (this.state.conditional == "" && this._checkConditionalOptions()) { var conditional = []; - for (var i = 0; i < this.state.options.length; i++) { - var options = this.state.options[i], - condition = options.conditional; + for (var i = 0; i < this.props.conditionalList.length; i++) { + var condition = this.props.conditionalList[i]; if (condition && this._showCloseBracketOptions(condition)) { conditional.push(condition); } @@ -360,13 +362,13 @@ export default class OTokenizer extends Tokenizer { _addTokenForValue = value => { if (this.props.disabled) { return; - } - let { isAllowOperator } = this.props; + } + let { isAllowOperator } = this.props; const closeBracket = (value && value.toString() !== "[object Object]" && value.includes(')')) ? true : false; - if (this.state.conditional == "" && this._checkConditionalOptions()) { - var val = this._checkSpeacialChar(value) ? value : value + " ( " ; - this.state.conditional = val; - this.setState({ conditional: val}); + if (this.state.conditional == "" && this._checkConditionalOptions(value)) { + var val = this._checkSpeacialChar(value) ? value : value + " ( " ; + this.state.conditional = val; + this.setState({ conditional: val}); this.typeaheadRef.setEntryText(""); if (this.props.customQuery && val === " )") { this._addToken({value: val, isAllowOperator: false, closeToken: true}); diff --git a/src/lib/react-structured-filter/react-typeahead/tokenizer/index.js b/src/lib/react-structured-filter/react-typeahead/tokenizer/index.js index 8e21ec6..d217a6d 100755 --- a/src/lib/react-structured-filter/react-typeahead/tokenizer/index.js +++ b/src/lib/react-structured-filter/react-typeahead/tokenizer/index.js @@ -91,6 +91,7 @@ export default class TypeaheadTokenizer extends Component { fuzzySearchIdAttribute={this.props.fuzzySearchIdAttribute} onRemoveToken={this._removeTokenForValue} onEditToken={this._editTokenForValue.bind(this)} + ediTableTokenId={this.state.ediTableTokenId} {...this.props} > {selected} @@ -205,7 +206,8 @@ export default class TypeaheadTokenizer extends Component { category: value.category || '', operator: value.operator, value: null, - ediTableTokenId: index + ediTableTokenId: index, + focused: true }, () => setTimeout(() => {this._focusInput()}, 0)); } diff --git a/src/lib/react-structured-filter/react-typeahead/tokenizer/token.js b/src/lib/react-structured-filter/react-typeahead/tokenizer/token.js index 69e4fe0..8d7a6e7 100755 --- a/src/lib/react-structured-filter/react-typeahead/tokenizer/token.js +++ b/src/lib/react-structured-filter/react-typeahead/tokenizer/token.js @@ -12,7 +12,7 @@ export default class Token extends Component { }; _makeCloseButton() { - if (!this.props.onRemoveToken) { + if (!this.props.onRemoveToken || this.props.ediTableTokenId !== null) { return ""; } return ( @@ -62,7 +62,9 @@ export default class Token extends Component { return this.props.renderTokenItem(this.props); } else { let val = this.props.children, - tokenVal = (val.conditional && val.conditional.includes(')')) ? this.getTokenValue() : `"${this.getTokenValue()}"`; + tokenVal = (val.conditional && val.conditional.includes(')')) ? this.getTokenValue() : `"${this.getTokenValue()}"`, + type = this.props.customQuery ? 'query' : this.props.options.find((o) => o.category === val.category).type, + addColen = (type !== 'query' && (val.operator === undefined || val.operator === null)) ? ':' : ''; return {val.conditional == undefined ? "" : val.conditional} - {val["category"]} + {val["category"]}{addColen} {val.operator == undefined ? "" : val.operator} {tokenVal} From 298c650cd981548aa153aaef91a07dd57ee017dc Mon Sep 17 00:00:00 2001 From: sameer79 Date: Fri, 13 Dec 2019 16:58:41 +0530 Subject: [PATCH 08/15] Add query edit feature. --- example/src/App.js | 10 ++-- src/CustomQueryTokenizer.js | 50 ++++++++++++++++++- src/OTokenizer.js | 1 + src/OTypeahead.js | 1 + .../react-typeahead/tokenizer/index.js | 16 ++++-- 5 files changed, 69 insertions(+), 9 deletions(-) diff --git a/example/src/App.js b/example/src/App.js index fee6ced..5b0aef0 100755 --- a/example/src/App.js +++ b/example/src/App.js @@ -29,7 +29,7 @@ export default class App extends Component { { category: "Terms", type: "textoptions", - operator: ["==", "!="], + operator: null, isAllowDuplicateCategories: true, options: this.getIndustryOptions }, @@ -51,24 +51,24 @@ export default class App extends Component { category: "Demo", type: "textoptions", operator: ["==", "!="], - options: ["demo1", "test2"] + options: ["demo_1", "demo_2"] }, { category: "Sample", type: "textoptions", operator: ["==", "!="], - options: ["demo1", "test2"] + options: ["Sample_1", "Sample_2"] }, { category: "Test", type: "textoptions", operator: ["==", "!="], - options: ["demo1", "test2"] + options: ["Test_1", "Test_2"] }, { category: "Jason", type: "text", - operator: null, + operator: ["==", "!="], options: null } ] diff --git a/src/CustomQueryTokenizer.js b/src/CustomQueryTokenizer.js index 2819580..a249a93 100644 --- a/src/CustomQueryTokenizer.js +++ b/src/CustomQueryTokenizer.js @@ -6,12 +6,60 @@ export default class CustomQueryTokenizer extends Component { constructor(props) { super(props); this.state = { - selected : [] + selected : this.getSelectedValueArray() }; this.options = this.props.queryOptions || []; this.conditionalList = this.props.conditionalList || [",", "AND","OR"," )"]; } + getSelectedValueArray () { + if (!this.props.defaultSelected) { + return []; + } + const strArray = this.getTrimedSplitData(this.props.defaultSelected, ' ('), itemsList = []; + let obj = {}; + const recursionFunc = (arr, sideEffect) => { + arr.forEach((str, i) => { + if (["AND","OR"].includes(str)) { + obj.conditional = str + ' ('; + } + if (/[,]/.test(str)) { + return recursionFunc(this.getTrimedSplitData(str, ','), ','); + } + if (/[!=<>]/.test(str)) { + if (sideEffect && i > 0) { + obj.conditional = sideEffect; + } + const o = this.getTrimedSplitData(str, ' '); + obj.category = o[0]; + obj.operator = o[1]; + obj.value = o[2]; + if (Object.keys(obj).length === 4 && o.length > 3) { + itemsList.push(obj); + obj = {}; + return recursionFunc(o.slice(3)); + } + } + if (/[)]/.test(str) && !/[a-zA-Z0-9]/.test(str)) { + obj.conditional = str; + obj.category = ''; + obj.operator = ''; + obj.value = ''; + } + if (Object.keys(obj).length === 4) { + itemsList.push(obj); + obj = {}; + } + }); + }; + recursionFunc(strArray); + return itemsList; + } + + getTrimedSplitData (str, expression) { + return str.split(expression).filter((f) => f.trim() !== '') + } + getOperatorOptions () { return ["==", "!="]; } diff --git a/src/OTokenizer.js b/src/OTokenizer.js index a4de191..1f91a3e 100644 --- a/src/OTokenizer.js +++ b/src/OTokenizer.js @@ -541,6 +541,7 @@ export default class OTokenizer extends Tokenizer { queryOptions={this.queryOptions} updatedToken={this._updatedToken} updateParentToken={this.props.updateParentToken} + queryValueToEdit={this.state.queryValueToEdit} />; return show ? this.getTypeHeadHtmlContainer(typeHeadComp, mykey) : typeHeadComp; } diff --git a/src/OTypeahead.js b/src/OTypeahead.js index 4f19054..c531e28 100644 --- a/src/OTypeahead.js +++ b/src/OTypeahead.js @@ -102,6 +102,7 @@ export default class OTypeahead extends Typeahead { parentCallBack={this.props.parentCallBack} disabled={this.props.disabled} updatedInputText={this._onTextEntryUpdated} + defaultSelected={this.props.queryValueToEdit} {...this.props} /> : diff --git a/src/lib/react-structured-filter/react-typeahead/tokenizer/index.js b/src/lib/react-structured-filter/react-typeahead/tokenizer/index.js index d217a6d..fbff6a1 100755 --- a/src/lib/react-structured-filter/react-typeahead/tokenizer/index.js +++ b/src/lib/react-structured-filter/react-typeahead/tokenizer/index.js @@ -54,7 +54,8 @@ export default class TypeaheadTokenizer extends Component { operator: "", options: this.props.options, focused: this.props.autoFocus || false, - ediTableTokenId: null + ediTableTokenId: null, + queryValueToEdit: null }; this.state.selected = this.getDefaultSelectedValue(); this.queryOptions = []; @@ -180,6 +181,9 @@ export default class TypeaheadTokenizer extends Component { } return; } + if (this.state.ediTableTokenId === null || this.state.ediTableTokenId === undefined) { + this.state.queryValueToEdit = null; + } this.state.ediTableTokenId === null && this._removeTokenForValue(this.state.selected[this.state.selected.length - 1]); } event.preventDefault(); @@ -200,14 +204,20 @@ export default class TypeaheadTokenizer extends Component { }; _editTokenForValue = value => { - const index = this.state.selected.indexOf(value); + const index = this.state.selected.indexOf(value), + type = this.state.options.find((o) => o.category === value.category).type; + let queryVal = null; + if (type === 'query') { + queryVal = value.value.trim().substr(0, value.value.trim().length - 1); + } this.setState({ conditional: value.conditional || '', category: value.category || '', operator: value.operator, value: null, ediTableTokenId: index, - focused: true + focused: true, + queryValueToEdit: queryVal }, () => setTimeout(() => {this._focusInput()}, 0)); } From c50a11dbb04f412914148d488edfcc767627c3a0 Mon Sep 17 00:00:00 2001 From: sameer79 Date: Thu, 19 Dec 2019 16:17:15 +0530 Subject: [PATCH 09/15] Dynamically-add-close-bracket-to-query. --- example/src/App.js | 1 + src/OTokenizer.js | 19 ++++++++++++++----- .../react-typeahead/typeahead/index.js | 7 +++++-- 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/example/src/App.js b/example/src/App.js index 5b0aef0..93f650b 100755 --- a/example/src/App.js +++ b/example/src/App.js @@ -122,6 +122,7 @@ export default class App extends Component { isAllowOperator={true} defaultSelected={[]} options={this.options} + placeholder="Add filters..." // renderTokenItem={this.getTokenItem} updateOptions={({ updatedValues, addedValue }) => { if (addedValue && addedValue.category === "Symbol" && addedValue.value === "TFSC") { diff --git a/src/OTokenizer.js b/src/OTokenizer.js index 1f91a3e..b084d24 100644 --- a/src/OTokenizer.js +++ b/src/OTokenizer.js @@ -99,7 +99,7 @@ export default class OTokenizer extends Tokenizer { _showCloseBracketOptions (val) { let showCloseBracket = this.state.selected.length > 0 ? true : !this._checkSpeacialChar(val); if (this.state.selected.length > 0 && (val.includes(',') || val.includes(' )'))) { - showCloseBracket = this._bracketHasClosed() && !this.state.ediTableTokenId ? false : true; + showCloseBracket = this._bracketHasClosed().status && !this.state.ediTableTokenId ? false : true; } return showCloseBracket; } @@ -113,10 +113,10 @@ export default class OTokenizer extends Tokenizer { if (s.conditional.includes('(')) { obj.open = ++obj.open } else if (s.conditional.includes(')')) { - obj.close = ++obj.close + obj.close = s.conditional.trim().length > 1 ? s.conditional.trim().length : ++obj.close ; } }); - return obj.open === obj.close; + return {status: (obj.open === obj.close), openCount: obj.open, closeCount: obj.close}; } _getOptionsForTypeahead() { @@ -129,6 +129,15 @@ export default class OTokenizer extends Tokenizer { conditional.push(condition); } } + const bracket = this._bracketHasClosed(); + if (!bracket.status && (bracket.openCount - bracket.closeCount) > 1) { + let bracketClosed = '', counter = (bracket.openCount - bracket.closeCount); + while(counter > 0) { + bracketClosed += ')'; + counter--; + } + conditional.push(bracketClosed); + } return conditional; } else if (this.state.category == "" && !closeBracket ) { var categories = []; @@ -370,7 +379,7 @@ export default class OTokenizer extends Tokenizer { this.state.conditional = val; this.setState({ conditional: val}); this.typeaheadRef.setEntryText(""); - if (this.props.customQuery && val === " )") { + if (this.props.customQuery && val.includes(")")) { this._addToken({value: val, isAllowOperator: false, closeToken: true}); } return; @@ -507,7 +516,7 @@ export default class OTokenizer extends Tokenizer { classes[this.props.customClasses.typeahead] = !!this.props.customClasses.typeahead; var classList = classNames(classes), editId = (this.props.ediTableTokenId !== null && this.props.ediTableTokenId !== undefined) ? this.props.ediTableTokenId : this.state.ediTableTokenId, - placeholder = this.state.category.toLowerCase() || this.props.placeholder, + placeholder = this.state.category === '' ? this.props.placeholder : this._getHeader().toLowerCase(), typeHeadComp = this.typeaheadRef = ref} disabled={this.props.disabled} diff --git a/src/lib/react-structured-filter/react-typeahead/typeahead/index.js b/src/lib/react-structured-filter/react-typeahead/typeahead/index.js index e615ad8..e931fbd 100755 --- a/src/lib/react-structured-filter/react-typeahead/typeahead/index.js +++ b/src/lib/react-structured-filter/react-typeahead/typeahead/index.js @@ -241,8 +241,11 @@ export default class Typeahead extends Component { } else if (this.props.options.indexOf(this.state.entryValue) > -1 || (this.state.entryValue && this.state.entryValue.trim() != "" && this.props.isAllowCustomValue)) { // If what has been typed in is an exact match of one of the options this._onOptionSelected(this.state.entryValue); - } else if (this.props.customQuery && this.props.bracketHasClosed()) { - this.props.updateParentInputText(); + } else if (this.props.customQuery) { + var bracket = this.props.bracketHasClosed(); + if (bracket.openCount === bracket.closeCount) { + this.props.updateParentInputText(); + } } } From 4084f28841bdb372957a8731defd0b7e2aa54b13 Mon Sep 17 00:00:00 2001 From: sameer79 Date: Thu, 19 Dec 2019 19:39:06 +0530 Subject: [PATCH 10/15] Add jsonFormat to query output. --- example/src/App.js | 2 +- src/CustomQueryTokenizer.js | 6 +- src/OTokenizer.js | 97 ++++++++++++++++--- .../react-typeahead/tokenizer/index.js | 3 +- .../react-typeahead/typeahead/index.js | 4 +- 5 files changed, 92 insertions(+), 20 deletions(-) diff --git a/example/src/App.js b/example/src/App.js index 93f650b..623ab0f 100755 --- a/example/src/App.js +++ b/example/src/App.js @@ -120,7 +120,7 @@ export default class App extends Component {
{ @@ -108,7 +108,7 @@ export default class CustomQueryTokenizer extends Component { renderTokenItem={this.getTokenItem} conditionalHeader={"Conditional"} categoryHeader={'Selection'} - onTokenAdd={val => console.log(val, 'onTokenAdd')} + // onTokenAdd={val => console.log(val, 'onTokenAdd')} customClasses={classList} emptyParentCategoryState={this.props.emptyParentCategoryState} updateParentInputText={this.updateParentInputText.bind(this)} diff --git a/src/OTokenizer.js b/src/OTokenizer.js index b084d24..b78e62f 100644 --- a/src/OTokenizer.js +++ b/src/OTokenizer.js @@ -113,7 +113,7 @@ export default class OTokenizer extends Tokenizer { if (s.conditional.includes('(')) { obj.open = ++obj.open } else if (s.conditional.includes(')')) { - obj.close = s.conditional.trim().length > 1 ? s.conditional.trim().length : ++obj.close ; + obj.close = s.conditional.trim().length > 1 ? (s.conditional.trim().length + obj.close) : ++obj.close ; } }); return {status: (obj.open === obj.close), openCount: obj.open, closeCount: obj.close}; @@ -266,7 +266,7 @@ export default class OTokenizer extends Tokenizer { } } - _getHeader() { + _getHeader = () => { if (this.state.conditional == "" && this._checkConditionalOptions()) { return this.props.conditionalHeader || "Conditional"; } else if (this.state.category == "") { @@ -365,12 +365,12 @@ export default class OTokenizer extends Tokenizer { this.props.onTokenRemove(this.state.selected); }); - return; - }; + return; + }; - _addTokenForValue = value => { - if (this.props.disabled) { - return; + _addTokenForValue = (value, queryResult) => { + if (this.props.disabled) { + return; } let { isAllowOperator } = this.props; const closeBracket = (value && value.toString() !== "[object Object]" && value.includes(')')) ? true : false; @@ -400,6 +400,9 @@ export default class OTokenizer extends Tokenizer { this.typeaheadRef.setEntryText(""); return; } + if (queryResult) { + this._setQueryResult(queryResult); + } this._addToken({value, isAllowOperator}); }; @@ -447,12 +450,81 @@ export default class OTokenizer extends Tokenizer { } } this.setState(stateObj, () => { - this.props.onTokenAdd(this.state.selected); + const queryKeys = Object.keys(this.queryResultObj); + const selected = JSON.parse(JSON.stringify(this.state.selected)); + selected.map((s) => { + const index = queryKeys.findIndex((q) => q === s.category); + delete s.conditional; + if (index !== -1) { + s.jsonFormat = this.queryResultObj[queryKeys[index]]; + } + }); + this.props.onTokenAdd(selected); this._focusInput(); }); return; } + splitBySpace = (str) => { + return str.split(' ').filter((a) => a !== ''); + } + + _setQueryResult = (results) => { + this.queryResultObj[this.state.category] = {criterion: []}; + const obj = this.queryResultObj[this.state.category], opt = { open: 0, close: 0}; + results.forEach((a, i) => { + const condition = this.splitBySpace(a.conditional)[0]; + if (["AND","OR"].includes(condition) && i < 1) { + obj.condition = condition; + this.setCriterion(a, obj, opt); + } + if (/[,]/.test(a.conditional)) { + this.setCriterion(a, obj, opt, false); + } else if (/[(]/.test(a.conditional) && i > 0) { + this.setCriterion(a, obj, opt, true); + opt.open = ++opt.open; + } else if (/[)]/.test(a.conditional)) { + opt.close = ++opt.close; + } + }); + } + + setCriterion = (field, obj, opt, action) => { + let open = opt.open, close = opt.close; + if (obj.criterion.length === 0) { + obj.criterion = [this.getCriterionObj(field)]; + return; + } + const criterionNestedCall = (criterions) => { + const lastIndex = criterions.length - 1; + const lastObj = criterions[lastIndex]; + if(open > close && lastObj.criterion) { + open = --open; + return criterionNestedCall(criterions[criterions.length - 1].criterion); + } + if (open === close || open > close) { + if (action) { + const condition = this.splitBySpace(field.conditional)[0]; + criterions.push(this.getCriterionObj(field, condition)); + } else { + criterions.push(this.getCriterionObj(field)); + } + + } + }; + criterionNestedCall(obj.criterion); + } + + getCriterionObj = (o, condition) => { + const _o = { + attributeName: o.category, + operator: o.operator, + attributeValue: o.value + }; + + return !condition ? _o : {condition: condition, criterion: [_o]}; + } + _onClearAll = () => { if (this.props.disabled) { return; @@ -506,15 +578,14 @@ export default class OTokenizer extends Tokenizer { operator: '', ediTableTokenId: null }, () => { - this.props.onTokenAdd(this.state.selected); this._focusInput(); }); } - _getTypeahed({mykey, show}) { - var classes = {}; - classes[this.props.customClasses.typeahead] = !!this.props.customClasses.typeahead; - var classList = classNames(classes), + _getTypeahed({mykey, show}){ + var classes = {}; + classes[this.props.customClasses.typeahead] = !!this.props.customClasses.typeahead; + const classList = classNames(classes), editId = (this.props.ediTableTokenId !== null && this.props.ediTableTokenId !== undefined) ? this.props.ediTableTokenId : this.state.ediTableTokenId, placeholder = this.state.category === '' ? this.props.placeholder : this._getHeader().toLowerCase(), typeHeadComp = {this.state.conditional}
{this.state.category}
{this.state.operator}
- {this._getTypeahed ({show: false})} + {this._getTypeahed({show: false})}
} diff --git a/src/lib/react-structured-filter/react-typeahead/typeahead/index.js b/src/lib/react-structured-filter/react-typeahead/typeahead/index.js index e931fbd..138673a 100755 --- a/src/lib/react-structured-filter/react-typeahead/typeahead/index.js +++ b/src/lib/react-structured-filter/react-typeahead/typeahead/index.js @@ -181,7 +181,7 @@ export default class Typeahead extends Component { this.props.onOptionSelected(option); } - _onTextEntryUpdated = (val) => { + _onTextEntryUpdated = (val, queryResult) => { var value = ""; if (this.entryRef != null) { value = this.entryRef.value; @@ -195,7 +195,7 @@ export default class Typeahead extends Component { entryValue: value }, () => { if (this.state.datatype === "query" && val !== undefined) { - this.props.onOptionSelected(value); + this.props.onOptionSelected(value, queryResult); } }); }; From d592453d60bfe1183f4a0c5d7ec09acb361fffa9 Mon Sep 17 00:00:00 2001 From: sameer79 Date: Fri, 20 Dec 2019 19:28:25 +0530 Subject: [PATCH 11/15] Add the display name for options in category. --- example/src/App.js | 60 +++++++++++-------- src/OTokenizer.js | 41 ++++++------- src/OTypeahead.js | 17 +++--- .../react-typeahead/tokenizer/index.js | 19 ++++-- 4 files changed, 80 insertions(+), 57 deletions(-) diff --git a/example/src/App.js b/example/src/App.js index 623ab0f..15beccc 100755 --- a/example/src/App.js +++ b/example/src/App.js @@ -47,30 +47,42 @@ export default class App extends Component { options: null, operator: null, queryOptions: [ - { - category: "Demo", - type: "textoptions", - operator: ["==", "!="], - options: ["demo_1", "demo_2"] - }, - { - category: "Sample", - type: "textoptions", - operator: ["==", "!="], - options: ["Sample_1", "Sample_2"] - }, - { - category: "Test", - type: "textoptions", - operator: ["==", "!="], - options: ["Test_1", "Test_2"] - }, - { - category: "Jason", - type: "text", - operator: ["==", "!="], - options: null - } + { + category: { + name: "QualifiedName", + displayName: "QualifiedName (string)" + }, + type: "text", + operator: ["==", "!=", "contains", "begins with", "ends with", "is null", "is not null"], + options: null + }, + { + category: { + name: "Description", + displayName: "Description (string)" + }, + type: "text", + operator: ["==", "!=", "contains", "begins with", "ends with", "is null", "is not null"], + options: null + }, + { + category: { + name: "Name", + displayName: "Name (string)" + }, + type: "text", + operator: ["==", "!=", "contains", "begins with", "ends with", "is null", "is not null"], + options: null + }, + { + category: { + name: "Owner", + displayName: "Owner (string)" + }, + type: "text", + operator: ["==", "!=", "contains", "begins with", "ends with", "is null", "is not null"], + options: null + } ] } ]; diff --git a/src/OTokenizer.js b/src/OTokenizer.js index b78e62f..9742f84 100644 --- a/src/OTokenizer.js +++ b/src/OTokenizer.js @@ -23,9 +23,10 @@ export default class OTokenizer extends Tokenizer { } }); this.props.options.forEach(val => { - if (selectedValueSet[val.category]) { + const _category = this._getCategoryName(val.category); + if (selectedValueSet[_category]) { // escape category if options is not avilable. - this._getOptions({ options: val.options, category: val.category, selected: selectedValueSet[val.category], fromDefaultValue: true }); + this._getOptions({ options: val.options, category: _category, selected: selectedValueSet[_category], fromDefaultValue: true }); } }); return defaultValue; @@ -64,7 +65,7 @@ export default class OTokenizer extends Tokenizer { var that = this, type = this._getCategoryType(); if (this.state.category !== "" && type === 'query') { - var opt = this.state.options.find(function(f) { return f.category === that.state.category;}); + var opt = this.state.options.find(function(f) { return that._getCategoryName(f.category) === that.state.category;}); this.queryOptions = opt.queryOptions; return type; } else if (this.state.category != "" && (this.props.isAllowOperator && this._getCategoryOperator() !== null ? this.state.operator != "" : true)) { @@ -76,7 +77,7 @@ export default class OTokenizer extends Tokenizer { _getCategoryOperator() { for (var i = 0; i < this.state.options.length; i++) { - if (this.state.options[i].category == this.state.category) { + if (this._getCategoryName(this.state.options[i].category) == this.state.category) { return this.state.options[i].operator; } } @@ -143,7 +144,7 @@ export default class OTokenizer extends Tokenizer { var categories = []; for (var i = 0; i < this.state.options.length; i++) { let options = this.state.options[i], - category = options.category, + category = this._getCategoryName(options.category, true), editItem = this.state.ediTableTokenId !== null ? this.state.selected[this.state.ediTableTokenId] : {}, isAllowCustomValue = options.isAllowCustomValue == undefined ? false : options.isAllowCustomValue, isAllowDuplicateCategories = (options.isAllowDuplicateCategories == undefined || editItem.category === category) ? true : options.isAllowDuplicateCategories; @@ -282,7 +283,7 @@ export default class OTokenizer extends Tokenizer { _getAllowDuplicateCategories({ category, options = this.state.options }) { if (category) { for (var i = 0; i < options.length; i++) { - if (options[i].category == category) { + if (this._getCategoryName(options[i].category) == category) { return options[i].isAllowDuplicateCategories || true; } } @@ -294,7 +295,7 @@ export default class OTokenizer extends Tokenizer { _getAllowDuplicateOptions({ category, options = this.state.options }) { if (category) { for (var i = 0; i < options.length; i++) { - if (options[i].category == category) { + if (this._getCategoryName(options[i].category) == category) { return options[i].isAllowDuplicateOptions || false; } } @@ -306,7 +307,7 @@ export default class OTokenizer extends Tokenizer { _getAllowCustomValue({ category, options = this.state.options }) { if (category) { for (var i = 0; i < options.length; i++) { - if (options[i].category == category) { + if (this._getCategoryName(options[i].category) == category) { return options[i].isAllowCustomValue || false; } } @@ -317,7 +318,7 @@ export default class OTokenizer extends Tokenizer { _getFuzzySearchKeyAttribute({ category, options = this.state.options }) { for (var i = 0; i < options.length; i++) { - if (options[i].category == category) { + if (this._getCategoryName(options[i].category) == category) { return options[i].fuzzySearchKeyAttribute || "name"; } } @@ -374,7 +375,7 @@ export default class OTokenizer extends Tokenizer { } let { isAllowOperator } = this.props; const closeBracket = (value && value.toString() !== "[object Object]" && value.includes(')')) ? true : false; - if (this.state.conditional == "" && this._checkConditionalOptions(value)) { + if (this.state.conditional == "" && this._checkConditionalOptions()) { var val = this._checkSpeacialChar(value) ? value : value + " ( " ; this.state.conditional = val; this.setState({ conditional: val}); @@ -580,7 +581,7 @@ export default class OTokenizer extends Tokenizer { }, () => { this._focusInput(); }); - } + } _getTypeahed({mykey, show}){ var classes = {}; @@ -614,15 +615,15 @@ export default class OTokenizer extends Tokenizer { onKeyDown={this._onKeyDown} fromTokenizer={true} emptyParentCategoryState={this._emptyParentCategoryState} - customQuery={this.props.customQuery} - bracketHasClosed={this._bracketHasClosed} - updateParentInputText={this.props.updateParentInputText} - ediTableTokenId={editId} - queryOptions={this.queryOptions} - updatedToken={this._updatedToken} - updateParentToken={this.props.updateParentToken} - queryValueToEdit={this.state.queryValueToEdit} - />; + customQuery={this.props.customQuery} + bracketHasClosed={this._bracketHasClosed} + updateParentInputText={this.props.updateParentInputText} + ediTableTokenId={editId} + queryOptions={this.queryOptions} + updatedToken={this._updatedToken} + updateParentToken={this.props.updateParentToken} + queryValueToEdit={this.state.queryValueToEdit} + />; return show ? this.getTypeHeadHtmlContainer(typeHeadComp, mykey) : typeHeadComp; } } diff --git a/src/OTypeahead.js b/src/OTypeahead.js index c531e28..a9905b5 100644 --- a/src/OTypeahead.js +++ b/src/OTypeahead.js @@ -51,19 +51,22 @@ export default class OTypeahead extends Typeahead { _onOptionSelected(option) { if (option !== this.props.fuzzySearchEmptyMessage) { - var nEntry = this.entryRef; + var nEntry = this.entryRef, val = option; nEntry.focus(); - if (typeof option == "object") { - nEntry.value = option[this.props.fuzzySearchKeyAttribute]; + if (typeof val == "object") { + nEntry.value = val[this.props.fuzzySearchKeyAttribute]; } else { - nEntry.value = option; + if (val.includes('(')) { + val = val.split('(')[0].trim(); + } + nEntry.value = val; } this.setState({ visible: this.getOptionsForValue(option, this.state.options), - selection: option, - entryValue: option + selection: val, + entryValue: val }); - this.props.onOptionSelected(option); + this.props.onOptionSelected(val); } } diff --git a/src/lib/react-structured-filter/react-typeahead/tokenizer/index.js b/src/lib/react-structured-filter/react-typeahead/tokenizer/index.js index aabcb1a..9a93eee 100755 --- a/src/lib/react-structured-filter/react-typeahead/tokenizer/index.js +++ b/src/lib/react-structured-filter/react-typeahead/tokenizer/index.js @@ -107,7 +107,8 @@ export default class TypeaheadTokenizer extends Component { if (this.state.category == "") { var categories = []; for (var i = 0; i < this.state.options.length; i++) { - categories.push(this.state.options[i].category); + const _category = this._getCategoryName(this.state.options[i].category); + categories.push(_category); } return categories; } else if (this.state.operator == "") { @@ -131,6 +132,14 @@ export default class TypeaheadTokenizer extends Component { return this.state.options; } + _getCategoryName(category, displayTextFlag) { + let _category = category; + if (category.toString() === "[object Object]") { + _category = displayTextFlag ? (category.displayName || category.name) : category.name; + } + return _category; + } + _getHeader() { if (this.state.category == "") { return "Category"; @@ -139,13 +148,11 @@ export default class TypeaheadTokenizer extends Component { } else { return "Value"; } - - return this.state.options; } _getCategoryType() { for (var i = 0; i < this.state.options.length; i++) { - if (this.state.options[i].category == this.state.category) { + if (this._getCategoryName(this.state.options[i].category) == this.state.category) { return this.state.options[i].type; } } @@ -153,7 +160,7 @@ export default class TypeaheadTokenizer extends Component { _getCategoryOptions() { for (var i = 0; i < this.state.options.length; i++) { - if (this.state.options[i].category == this.state.category) { + if (this._getCategoryName(this.state.options[i].category) == this.state.category) { return this.state.options[i].options; } } @@ -206,7 +213,7 @@ export default class TypeaheadTokenizer extends Component { _editTokenForValue = value => { const index = this.state.selected.indexOf(value), - type = this.state.options.find((o) => o.category === value.category).type; + type = this.state.options.find((o) => this._getCategoryName(o.category) === value.category).type; let queryVal = null; if (type === 'query') { queryVal = value.value.trim().substr(0, value.value.trim().length - 1); From 21629bb271d916cf28288eda1d9bbe629ec4e18d Mon Sep 17 00:00:00 2001 From: sameer79 Date: Tue, 24 Dec 2019 10:47:39 +0530 Subject: [PATCH 12/15] Support grouping in options and string charater for operator i:e contains, begin with. --- example/src/App.js | 39 +++++++++--- src/CustomQueryTokenizer.js | 59 ++++++++++++++++--- src/OTokenizer.js | 13 ++-- .../react-typeahead/tokenizer/token.js | 19 ------ .../react-typeahead/typeahead/index.js | 2 +- .../react-typeahead/typeahead/option.js | 2 + .../react-typeahead/typeahead/selector.js | 58 +++++++++++++----- .../react-structured-filter/scss/style.scss | 6 ++ 8 files changed, 141 insertions(+), 57 deletions(-) diff --git a/example/src/App.js b/example/src/App.js index 15beccc..cada647 100755 --- a/example/src/App.js +++ b/example/src/App.js @@ -43,15 +43,18 @@ export default class App extends Component { category: "Query", isAllowDuplicateCategories: false, type: "query", - isAllowCustomValue: true, + isAllowCustomValue: true, options: null, - operator: null, + operator: null, + fuzzySearchKeyAttribute: "displayName", queryOptions: [ { category: { name: "QualifiedName", - displayName: "QualifiedName (string)" + displayName: "QualifiedName (string)", + group: 'In house' }, + fuzzySearchKeyAttribute: "displayName", type: "text", operator: ["==", "!=", "contains", "begins with", "ends with", "is null", "is not null"], options: null @@ -59,8 +62,10 @@ export default class App extends Component { { category: { name: "Description", - displayName: "Description (string)" + displayName: "Description (string)", + group: 'In house', }, + fuzzySearchKeyAttribute: "displayName", type: "text", operator: ["==", "!=", "contains", "begins with", "ends with", "is null", "is not null"], options: null @@ -68,8 +73,10 @@ export default class App extends Component { { category: { name: "Name", - displayName: "Name (string)" + displayName: "Name (string)", + group: 'out source' }, + fuzzySearchKeyAttribute: "displayName", type: "text", operator: ["==", "!=", "contains", "begins with", "ends with", "is null", "is not null"], options: null @@ -77,11 +84,27 @@ export default class App extends Component { { category: { name: "Owner", - displayName: "Owner (string)" + displayName: "Owner (string)", + group: 'out source' }, - type: "text", + fuzzySearchKeyAttribute: "displayName", + type: "textoptions", operator: ["==", "!=", "contains", "begins with", "ends with", "is null", "is not null"], - options: null + options: [{ + name: 'user1', + displayName: "User 1", + group: 'In house' + }, + { + name: 'user2', + displayName: "User 2", + group: 'out source' + }, + { + name: 'user3', + displayName: "User 3", + group: 'In house' + }] } ] } diff --git a/src/CustomQueryTokenizer.js b/src/CustomQueryTokenizer.js index 68e9a6f..b116c77 100644 --- a/src/CustomQueryTokenizer.js +++ b/src/CustomQueryTokenizer.js @@ -5,11 +5,51 @@ import Tokenizer from "./OTokenizer"; export default class CustomQueryTokenizer extends Component { constructor(props) { super(props); + this.options = this.props.queryOptions || []; + this.conditionalList = [",", "AND","OR"," )"]; + this.operators = this.getOperatorArray(); this.state = { selected : this.getSelectedValueArray() }; - this.options = this.props.queryOptions || []; - this.conditionalList = [",", "AND","OR"," )"]; + } + + getOperatorArray () { + if (!this.props.defaultSelected) { + return []; + } + let arr = []; + this.options.forEach((o) => { + arr = arr.concat(o.operator); + }); + return Array.from(new Set([...arr])); + } + + getOperatorValObject = (o) => { + if (!this.operators.includes(o[0])) { + const _opt = o.splice(2); + const _o = [o.join(' '), ..._opt]; + return this.getOperatorValObject(_o); + } + return o; + } + + containsOperator = (str) => { + if (str.includes(')') && str.split('')[0] === ")") { + return false; + } + const o = this.getTrimedSplitData(str, ' '), field = o.splice(0, 1)[0]; + const obj = this.getOperatorValObject(o), + operator = obj[0], + status = operator === undefined ? false : true, + val = obj[1], + arr = obj.splice(2) || []; + return { + status, + field, + operator, + val, + arr + }; } getSelectedValueArray () { @@ -22,22 +62,23 @@ export default class CustomQueryTokenizer extends Component { arr.forEach((str, i) => { if (["AND","OR"].includes(str)) { obj.conditional = str + ' ('; + return; } if (/[,]/.test(str)) { return recursionFunc(this.getTrimedSplitData(str, ','), ','); } - if (/[!=<>]/.test(str)) { + const o = this.containsOperator(str); + if (o.status) { if (sideEffect && i > 0) { obj.conditional = sideEffect; } - const o = this.getTrimedSplitData(str, ' '); - obj.category = o[0]; - obj.operator = o[1]; - obj.value = o[2]; - if (Object.keys(obj).length === 4 && o.length > 3) { + obj.category = o.field; + obj.operator = o.operator; + obj.value = o.val; + if (Object.keys(obj).length === 4 && o.arr && o.arr.length > 0) { itemsList.push(obj); obj = {}; - return recursionFunc(o.slice(3)); + return recursionFunc(o.arr); } } if (/[)]/.test(str) && !/[a-zA-Z0-9]/.test(str)) { diff --git a/src/OTokenizer.js b/src/OTokenizer.js index 9742f84..6dfff99 100644 --- a/src/OTokenizer.js +++ b/src/OTokenizer.js @@ -157,11 +157,11 @@ export default class OTokenizer extends Tokenizer { return obj.category == category; }); if (!foundCategory && category.trim() !== "") { - categories.push(category); + categories.push(options.category); } } else { if (category.trim() !== "") { - categories.push(category); + categories.push(options.category); } } } @@ -387,8 +387,9 @@ export default class OTokenizer extends Tokenizer { } if (this.state.category == "" && !closeBracket) { - this.state.category = value; - this.setState({ category: value }); + var _val = typeof value === "object" ? value.name : value; + this.state.category = _val; + this.setState({ category: _val }); this.typeaheadRef.setEntryText(""); return; } @@ -412,7 +413,7 @@ export default class OTokenizer extends Tokenizer { value = { conditional: this.state.conditional, category: this.state.category, - value: value + value: (this.props.customQuery && typeof value === "object" ? value.name : value) }; if (closeToken) { @@ -531,7 +532,7 @@ export default class OTokenizer extends Tokenizer { return; } this.skipCategorySet.clear(); - this.setState({ selected: [], category: "", operator: "" }, () => { + this.setState({ selected: [], category: "", operator: "", ediTableTokenId: null, queryValueToEdit: null}, () => { if (this.props.onClearAll) { this.props.onClearAll(this.state.selected); } diff --git a/src/lib/react-structured-filter/react-typeahead/tokenizer/token.js b/src/lib/react-structured-filter/react-typeahead/tokenizer/token.js index 8d7a6e7..321ce99 100755 --- a/src/lib/react-structured-filter/react-typeahead/tokenizer/token.js +++ b/src/lib/react-structured-filter/react-typeahead/tokenizer/token.js @@ -29,25 +29,6 @@ export default class Token extends Component { ); } - _makeEditButton() { - if (!this.props.onRemoveToken) { - return ""; - } - return ( - - 🖉 - - ); - } - getTokenValue() { let value = this.props.children["value"]; if (value && typeof value == "object") { diff --git a/src/lib/react-structured-filter/react-typeahead/typeahead/index.js b/src/lib/react-structured-filter/react-typeahead/typeahead/index.js index 138673a..20265a9 100755 --- a/src/lib/react-structured-filter/react-typeahead/typeahead/index.js +++ b/src/lib/react-structured-filter/react-typeahead/typeahead/index.js @@ -243,7 +243,7 @@ export default class Typeahead extends Component { this._onOptionSelected(this.state.entryValue); } else if (this.props.customQuery) { var bracket = this.props.bracketHasClosed(); - if (bracket.openCount === bracket.closeCount) { + if (bracket.openCount === bracket.closeCount && bracket.openCount > 0) { this.props.updateParentInputText(); } } diff --git a/src/lib/react-structured-filter/react-typeahead/typeahead/option.js b/src/lib/react-structured-filter/react-typeahead/typeahead/option.js index b082311..c900386 100755 --- a/src/lib/react-structured-filter/react-typeahead/typeahead/option.js +++ b/src/lib/react-structured-filter/react-typeahead/typeahead/option.js @@ -32,11 +32,13 @@ export default class TypeaheadOption extends Component { "typeahead-option": true }; classes[this.props.customClasses.listAnchor] = !!this.props.customClasses.listAnchor; + classes['group-items'] = this.props.grouping ? true : false; return classNames(classes); } _onClick = e => { e.stopPropagation(); + e.nativeEvent.stopImmediatePropagation(); if (this.props.disabled) { return; } diff --git a/src/lib/react-structured-filter/react-typeahead/typeahead/selector.js b/src/lib/react-structured-filter/react-typeahead/typeahead/selector.js index 45821d2..c587c2d 100755 --- a/src/lib/react-structured-filter/react-typeahead/typeahead/selector.js +++ b/src/lib/react-structured-filter/react-typeahead/typeahead/selector.js @@ -1,4 +1,4 @@ -import React, { Component } from "react"; +import React, { Component, Fragment } from "react"; import propTypes from "prop-types"; import TypeaheadOption from "./option"; import classNames from "classnames"; @@ -48,7 +48,7 @@ export default class TypeaheadSelector extends Component { return this.props.options[index]; } - _onClick(result) { + _onClick(result, event) { this.props.onOptionSelected(result); } @@ -92,30 +92,49 @@ export default class TypeaheadSelector extends Component { // } // }; - getSearchItem(item) { + getSearchItem(item, grouping) { if (this.props.renderSearchItem) { this.props.renderSearchItem(item); } else { if (typeof item == "object") { let attr = this.props.fuzzySearchKeyAttribute; - return item[attr] ? item[attr] : item["string"]; + return grouping && item.displayName ? item.displayName : item[attr] ? item[attr] : item["string"]; } else if (typeof item == "string") { return item; } } } - render() { - var classes = { - "typeahead-selector": true - }; - classes[this.props.customClasses.results] = this.props.customClasses.results; - var classList = classNames(classes); - this.selectedItemRef = null; - var results = this.props.options.map(function(result, i) { + groupingOptions = () => { + const opt={}; + this.props.options.forEach((option) => { + if (!opt[option.group]) { + opt[option.group] = []; + } + opt[option.group].push(option); + }); + return Object.keys(opt).map((k, i) => { + return +
  • {k}
  • + {this.getOptionsItems(opt[k], true)} +
    ; + }); + } + + getOptionsList = () => { + let options = this.props.options; + if (this.props.options && this.props.options.length && this.props.options[0].group) { + return this.groupingOptions(); + } else { + return this.getOptionsItems(options); + } + } + + getOptionsItems = (options, grouping = false) => { + return options.map(function(result, i) { let elementSelected = this.state.selectionIndex === i, disabledElement = result == this.props.fuzzySearchEmptyMessage, - item = this.getSearchItem(result); + item = this.getSearchItem(result, grouping); return ( {item} ); }, this); + } + + render() { + var classes = { + "typeahead-selector": true + }; + classes[this.props.customClasses.results] = this.props.customClasses.results; + var classList = classNames(classes); + this.selectedItemRef = null; + var results = this.getOptionsList(); return (
      (this.listParentRef = ref)}> {this.props.fromTokenizer === true && this.props.isAllowSearchDropDownHeader === true ? ( @@ -138,4 +168,4 @@ export default class TypeaheadSelector extends Component {
    ); } -} \ No newline at end of file +} diff --git a/src/lib/react-structured-filter/scss/style.scss b/src/lib/react-structured-filter/scss/style.scss index 55d31c7..f8104a5 100644 --- a/src/lib/react-structured-filter/scss/style.scss +++ b/src/lib/react-structured-filter/scss/style.scss @@ -80,10 +80,16 @@ cursor: not-allowed; } } + a.group-items { + padding: 5px 0px 5px 10px; + } } .hover a { @extend %extend_2; } + li.group-title { + padding: 5px; + } } } From c446c62fd3544f0afdf1c2faed29105ad85e26ab Mon Sep 17 00:00:00 2001 From: kevalbhatt Date: Mon, 6 Jan 2020 20:03:33 +0530 Subject: [PATCH 13/15] code alignment --- src/CustomQueryTokenizer.js | 82 ++-- src/OTokenizer.js | 357 ++++++++++-------- src/OTypeahead.js | 110 +++--- .../react-typeahead/tokenizer/index.js | 65 ++-- .../react-typeahead/tokenizer/token.js | 40 +- .../react-typeahead/typeahead/index.js | 30 +- .../react-typeahead/typeahead/option.js | 4 +- .../react-typeahead/typeahead/selector.js | 24 +- 8 files changed, 386 insertions(+), 326 deletions(-) diff --git a/src/CustomQueryTokenizer.js b/src/CustomQueryTokenizer.js index b116c77..da93d86 100644 --- a/src/CustomQueryTokenizer.js +++ b/src/CustomQueryTokenizer.js @@ -1,4 +1,4 @@ -import React, {Component, Fragment} from 'react'; +import React, { Component, Fragment } from "react"; import Tokenizer from "./OTokenizer"; @@ -6,38 +6,39 @@ export default class CustomQueryTokenizer extends Component { constructor(props) { super(props); this.options = this.props.queryOptions || []; - this.conditionalList = [",", "AND","OR"," )"]; + this.conditionalList = [",", "AND", "OR", " )"]; this.operators = this.getOperatorArray(); this.state = { - selected : this.getSelectedValueArray() + selected: this.getSelectedValueArray() }; } - getOperatorArray () { + getOperatorArray() { if (!this.props.defaultSelected) { return []; } let arr = []; - this.options.forEach((o) => { - arr = arr.concat(o.operator); + this.options.forEach(o => { + arr = arr.concat(o.operator); }); return Array.from(new Set([...arr])); } - getOperatorValObject = (o) => { + getOperatorValObject = o => { if (!this.operators.includes(o[0])) { const _opt = o.splice(2); - const _o = [o.join(' '), ..._opt]; + const _o = [o.join(" "), ..._opt]; return this.getOperatorValObject(_o); } return o; - } + }; - containsOperator = (str) => { - if (str.includes(')') && str.split('')[0] === ")") { + containsOperator = str => { + if (str.includes(")") && str.split("")[0] === ")") { return false; } - const o = this.getTrimedSplitData(str, ' '), field = o.splice(0, 1)[0]; + const o = this.getTrimedSplitData(str, " "), + field = o.splice(0, 1)[0]; const obj = this.getOperatorValObject(o), operator = obj[0], status = operator === undefined ? false : true, @@ -50,22 +51,23 @@ export default class CustomQueryTokenizer extends Component { val, arr }; - } + }; - getSelectedValueArray () { + getSelectedValueArray() { if (!this.props.defaultSelected) { return []; } - const strArray = this.getTrimedSplitData(this.props.defaultSelected, ' ('), itemsList = []; + const strArray = this.getTrimedSplitData(this.props.defaultSelected, " ("), + itemsList = []; let obj = {}; const recursionFunc = (arr, sideEffect) => { arr.forEach((str, i) => { - if (["AND","OR"].includes(str)) { - obj.conditional = str + ' ('; + if (["AND", "OR"].includes(str)) { + obj.conditional = str + " ("; return; } if (/[,]/.test(str)) { - return recursionFunc(this.getTrimedSplitData(str, ','), ','); + return recursionFunc(this.getTrimedSplitData(str, ","), ","); } const o = this.containsOperator(str); if (o.status) { @@ -83,9 +85,9 @@ export default class CustomQueryTokenizer extends Component { } if (/[)]/.test(str) && !/[a-zA-Z0-9]/.test(str)) { obj.conditional = str; - obj.category = ''; - obj.operator = ''; - obj.value = ''; + obj.category = ""; + obj.operator = ""; + obj.value = ""; } if (Object.keys(obj).length === 4) { itemsList.push(obj); @@ -97,30 +99,30 @@ export default class CustomQueryTokenizer extends Component { return itemsList; } - getTrimedSplitData (str, expression) { - return str.split(expression).filter((f) => f.trim() !== '') + getTrimedSplitData(str, expression) { + return str.split(expression).filter(f => f.trim() !== ""); } - getOperatorOptions () { + getOperatorOptions() { return ["==", "!="]; } - getSymbolOptions () { + getSymbolOptions() { return ["TFSC", "PIL", "VNET"]; } - getTokenItem (obj) { + getTokenItem(obj) { const val = obj.children; return `${val.conditional} ${val.category} ${val.operator} ${val.value}`; } - trimText (val) { + trimText(val) { return val.trim() === "" ? val.trim() : val + " "; } - updateParentInputText () { - let str = ''; - this.state.selected.forEach((s) => { + updateParentInputText() { + let str = ""; + this.state.selected.forEach(s => { str += this.trimText(s.conditional); str += this.trimText(s.category); str += this.trimText(s.operator); @@ -131,7 +133,7 @@ export default class CustomQueryTokenizer extends Component { updateParentToken = () => { this.props.updatedToken(); - } + }; render() { var classList = { @@ -140,17 +142,17 @@ export default class CustomQueryTokenizer extends Component { listItem: "filter-tokenizer-list__item", query: "custom-query" }; - return( + return ( console.log(val, 'onTokenAdd')} - customClasses={classList} + categoryHeader={"Selection"} + // onTokenAdd={val => console.log(val, 'onTokenAdd')} + customClasses={classList} emptyParentCategoryState={this.props.emptyParentCategoryState} updateParentInputText={this.updateParentInputText.bind(this)} customQuery={true} @@ -163,4 +165,4 @@ export default class CustomQueryTokenizer extends Component { ); } -}; +} \ No newline at end of file diff --git a/src/OTokenizer.js b/src/OTokenizer.js index 6dfff99..d0a2ba4 100644 --- a/src/OTokenizer.js +++ b/src/OTokenizer.js @@ -51,7 +51,12 @@ export default class OTokenizer extends Tokenizer { ) { return; } - if (this.state.focused === true && this.typeaheadRef && !this.typeaheadRef.isOptionsLoading() && (this.props.ediTableTokenId === null || this.props.ediTableTokenId === undefined)) { + if ( + this.state.focused === true && + this.typeaheadRef && + !this.typeaheadRef.isOptionsLoading() && + (this.props.ediTableTokenId === null || this.props.ediTableTokenId === undefined) + ) { this.setState({ focused: false }); } } @@ -59,18 +64,23 @@ export default class OTokenizer extends Tokenizer { onElementFocused = val => { this.setState(val); - }; - - _getInputType() { - var that = this, - type = this._getCategoryType(); - if (this.state.category !== "" && type === 'query') { - var opt = this.state.options.find(function(f) { return that._getCategoryName(f.category) === that.state.category;}); - this.queryOptions = opt.queryOptions; - return type; - } else if (this.state.category != "" && (this.props.isAllowOperator && this._getCategoryOperator() !== null ? this.state.operator != "" : true)) { - return this._getCategoryType(); - } else { + }; + + _getInputType() { + var that = this, + type = this._getCategoryType(); + if (this.state.category !== "" && type === "query") { + var opt = this.state.options.find(function(f) { + return that._getCategoryName(f.category) === that.state.category; + }); + this.queryOptions = opt.queryOptions; + return type; + } else if ( + this.state.category != "" && + (this.props.isAllowOperator && this._getCategoryOperator() !== null ? this.state.operator != "" : true) + ) { + return this._getCategoryType(); + } else { return "text"; } } @@ -83,23 +93,25 @@ export default class OTokenizer extends Tokenizer { } } - _checkConditionalOptions (val) { - if (!this.props.conditionalList) { - return false; - } - return this.props.conditionalList.filter(function(o) { - return o !== null && o !== undefined && o !== ""; - }).length > 0 ? true : false; + _checkConditionalOptions(val) { + if (!this.props.conditionalList) { + return false; + } + return this.props.conditionalList.filter(function(o) { + return o !== null && o !== undefined && o !== ""; + }).length > 0 + ? true + : false; } - _checkSpeacialChar (val) { - var match = new RegExp(/[^a-zA-Z]/g); + _checkSpeacialChar(val) { + var match = new RegExp(/[^a-zA-Z]/g); return match.test(val); } - _showCloseBracketOptions (val) { - let showCloseBracket = this.state.selected.length > 0 ? true : !this._checkSpeacialChar(val); - if (this.state.selected.length > 0 && (val.includes(',') || val.includes(' )'))) { + _showCloseBracketOptions(val) { + let showCloseBracket = this.state.selected.length > 0 ? true : !this._checkSpeacialChar(val); + if (this.state.selected.length > 0 && (val.includes(",") || val.includes(" )"))) { showCloseBracket = this._bracketHasClosed().status && !this.state.ediTableTokenId ? false : true; } return showCloseBracket; @@ -110,44 +122,46 @@ export default class OTokenizer extends Tokenizer { return false; } const obj = { open: 0, close: 0 }; - this.state.selected.map((s) => { - if (s.conditional.includes('(')) { - obj.open = ++obj.open - } else if (s.conditional.includes(')')) { - obj.close = s.conditional.trim().length > 1 ? (s.conditional.trim().length + obj.close) : ++obj.close ; - } - }); - return {status: (obj.open === obj.close), openCount: obj.open, closeCount: obj.close}; - } + this.state.selected.map(s => { + if (s.conditional.includes("(")) { + obj.open = ++obj.open; + } else if (s.conditional.includes(")")) { + obj.close = s.conditional.trim().length > 1 ? s.conditional.trim().length + obj.close : ++obj.close; + } + }); + return { status: obj.open === obj.close, openCount: obj.open, closeCount: obj.close }; + }; _getOptionsForTypeahead() { - const closeBracket = this.state.conditional && this.state.conditional.includes(')') ? true : false; + const closeBracket = this.state.conditional && this.state.conditional.includes(")") ? true : false; if (this.state.conditional == "" && this._checkConditionalOptions()) { var conditional = []; - for (var i = 0; i < this.props.conditionalList.length; i++) { - var condition = this.props.conditionalList[i]; - if (condition && this._showCloseBracketOptions(condition)) { - conditional.push(condition); - } + for (var i = 0; i < this.props.conditionalList.length; i++) { + var condition = this.props.conditionalList[i]; + if (condition && this._showCloseBracketOptions(condition)) { + conditional.push(condition); + } } const bracket = this._bracketHasClosed(); - if (!bracket.status && (bracket.openCount - bracket.closeCount) > 1) { - let bracketClosed = '', counter = (bracket.openCount - bracket.closeCount); - while(counter > 0) { - bracketClosed += ')'; - counter--; - } - conditional.push(bracketClosed); + if (!bracket.status && bracket.openCount - bracket.closeCount > 1) { + let bracketClosed = "", + counter = bracket.openCount - bracket.closeCount; + while (counter > 0) { + bracketClosed += ")"; + counter--; + } + conditional.push(bracketClosed); } return conditional; - } else if (this.state.category == "" && !closeBracket ) { + } else if (this.state.category == "" && !closeBracket) { var categories = []; for (var i = 0; i < this.state.options.length; i++) { let options = this.state.options[i], category = this._getCategoryName(options.category, true), - editItem = this.state.ediTableTokenId !== null ? this.state.selected[this.state.ediTableTokenId] : {}, + editItem = this.state.ediTableTokenId !== null ? this.state.selected[this.state.ediTableTokenId] : {}, isAllowCustomValue = options.isAllowCustomValue == undefined ? false : options.isAllowCustomValue, - isAllowDuplicateCategories = (options.isAllowDuplicateCategories == undefined || editItem.category === category) ? true : options.isAllowDuplicateCategories; + isAllowDuplicateCategories = + options.isAllowDuplicateCategories == undefined || editItem.category === category ? true : options.isAllowDuplicateCategories; if (isAllowCustomValue == false && this.skipCategorySet && this.skipCategorySet.has(category)) { continue; @@ -166,7 +180,12 @@ export default class OTokenizer extends Tokenizer { } } return categories; - } else if (this.props.isAllowOperator && this._getCategoryOperator() !== null && this.state.operator == "" && !this.state.conditional.includes(')')) { + } else if ( + this.props.isAllowOperator && + this._getCategoryOperator() !== null && + this.state.operator == "" && + !this.state.conditional.includes(")") + ) { let categoryType = this._getCategoryType(); let categoryOperator = this._getCategoryOperator(); if (categoryOperator) { @@ -199,7 +218,7 @@ export default class OTokenizer extends Tokenizer { } else { if (typeof options === "function") { let opt = options(); - if (typeof opt == "object" && !this.state.conditional.includes(')')) { + if (typeof opt == "object" && !this.state.conditional.includes(")")) { if (opt instanceof Promise) { return opt; } else { @@ -213,7 +232,7 @@ export default class OTokenizer extends Tokenizer { } filterOptionsValue({ options, category = this.state.category, selected = this.state.selected, fromDefaultValue }) { - if (this._getAllowDuplicateOptions({ category: category }) == false) { + if (this._getAllowDuplicateOptions({ category: category }) == false) { if (selected.length && category != "") { let optionsList = []; if (options && options.length) { @@ -232,9 +251,9 @@ export default class OTokenizer extends Tokenizer { }); options.forEach(val => { let foundOption = listToFindOptionOnIt.find(o => { - if(this.state.ediTableTokenId !== null && o.value[fuzzySearchKeyAttribute] === val[fuzzySearchKeyAttribute]){ - return false; - } + if (this.state.ediTableTokenId !== null && o.value[fuzzySearchKeyAttribute] === val[fuzzySearchKeyAttribute]) { + return false; + } if (typeof val === "object") { return o.value[fuzzySearchKeyAttribute] == val[fuzzySearchKeyAttribute]; } else { @@ -267,7 +286,7 @@ export default class OTokenizer extends Tokenizer { } } - _getHeader = () => { + _getHeader = () => { if (this.state.conditional == "" && this._checkConditionalOptions()) { return this.props.conditionalHeader || "Conditional"; } else if (this.state.category == "") { @@ -278,7 +297,7 @@ export default class OTokenizer extends Tokenizer { return this.props.valueHeader || "Value"; } return this.state.options; - } + }; _getAllowDuplicateCategories({ category, options = this.state.options }) { if (category) { @@ -366,22 +385,22 @@ export default class OTokenizer extends Tokenizer { this.props.onTokenRemove(this.state.selected); }); - return; - }; - - _addTokenForValue = (value, queryResult) => { - if (this.props.disabled) { - return; - } - let { isAllowOperator } = this.props; - const closeBracket = (value && value.toString() !== "[object Object]" && value.includes(')')) ? true : false; - if (this.state.conditional == "" && this._checkConditionalOptions()) { - var val = this._checkSpeacialChar(value) ? value : value + " ( " ; - this.state.conditional = val; - this.setState({ conditional: val}); + return; + }; + + _addTokenForValue = (value, queryResult) => { + if (this.props.disabled) { + return; + } + let { isAllowOperator } = this.props; + const closeBracket = value && value.toString() !== "[object Object]" && value.includes(")") ? true : false; + if (this.state.conditional == "" && this._checkConditionalOptions()) { + var val = this._checkSpeacialChar(value) ? value : value + " ( "; + this.state.conditional = val; + this.setState({ conditional: val }); this.typeaheadRef.setEntryText(""); if (this.props.customQuery && val.includes(")")) { - this._addToken({value: val, isAllowOperator: false, closeToken: true}); + this._addToken({ value: val, isAllowOperator: false, closeToken: true }); } return; } @@ -405,15 +424,14 @@ export default class OTokenizer extends Tokenizer { if (queryResult) { this._setQueryResult(queryResult); } - this._addToken({value, isAllowOperator}); + this._addToken({ value, isAllowOperator }); }; - _addToken = ({value, isAllowOperator, closeToken}) => { - + _addToken = ({ value, isAllowOperator, closeToken }) => { value = { conditional: this.state.conditional, category: this.state.category, - value: (this.props.customQuery && typeof value === "object" ? value.name : value) + value: this.props.customQuery && typeof value === "object" ? value.name : value }; if (closeToken) { @@ -454,8 +472,8 @@ export default class OTokenizer extends Tokenizer { this.setState(stateObj, () => { const queryKeys = Object.keys(this.queryResultObj); const selected = JSON.parse(JSON.stringify(this.state.selected)); - selected.map((s) => { - const index = queryKeys.findIndex((q) => q === s.category); + selected.map(s => { + const index = queryKeys.findIndex(q => q === s.category); delete s.conditional; if (index !== -1) { s.jsonFormat = this.queryResultObj[queryKeys[index]]; @@ -465,23 +483,24 @@ export default class OTokenizer extends Tokenizer { this._focusInput(); }); return; - } + }; - splitBySpace = (str) => { - return str.split(' ').filter((a) => a !== ''); - } + splitBySpace = str => { + return str.split(" ").filter(a => a !== ""); + }; - _setQueryResult = (results) => { - this.queryResultObj[this.state.category] = {criterion: []}; - const obj = this.queryResultObj[this.state.category], opt = { open: 0, close: 0}; + _setQueryResult = results => { + this.queryResultObj[this.state.category] = { criterion: [] }; + const obj = this.queryResultObj[this.state.category], + opt = { open: 0, close: 0 }; results.forEach((a, i) => { const condition = this.splitBySpace(a.conditional)[0]; - if (["AND","OR"].includes(condition) && i < 1) { - obj.condition = condition; - this.setCriterion(a, obj, opt); + if (["AND", "OR"].includes(condition) && i < 1) { + obj.condition = condition; + this.setCriterion(a, obj, opt); } if (/[,]/.test(a.conditional)) { - this.setCriterion(a, obj, opt, false); + this.setCriterion(a, obj, opt, false); } else if (/[(]/.test(a.conditional) && i > 0) { this.setCriterion(a, obj, opt, true); opt.open = ++opt.open; @@ -489,18 +508,19 @@ export default class OTokenizer extends Tokenizer { opt.close = ++opt.close; } }); - } + }; setCriterion = (field, obj, opt, action) => { - let open = opt.open, close = opt.close; + let open = opt.open, + close = opt.close; if (obj.criterion.length === 0) { obj.criterion = [this.getCriterionObj(field)]; return; } - const criterionNestedCall = (criterions) => { + const criterionNestedCall = criterions => { const lastIndex = criterions.length - 1; const lastObj = criterions[lastIndex]; - if(open > close && lastObj.criterion) { + if (open > close && lastObj.criterion) { open = --open; return criterionNestedCall(criterions[criterions.length - 1].criterion); } @@ -511,28 +531,27 @@ export default class OTokenizer extends Tokenizer { } else { criterions.push(this.getCriterionObj(field)); } - } }; criterionNestedCall(obj.criterion); - } + }; getCriterionObj = (o, condition) => { - const _o = { - attributeName: o.category, - operator: o.operator, - attributeValue: o.value - }; + const _o = { + attributeName: o.category, + operator: o.operator, + attributeValue: o.value + }; - return !condition ? _o : {condition: condition, criterion: [_o]}; - } + return !condition ? _o : { condition: condition, criterion: [_o] }; + }; _onClearAll = () => { if (this.props.disabled) { return; } this.skipCategorySet.clear(); - this.setState({ selected: [], category: "", operator: "", ediTableTokenId: null, queryValueToEdit: null}, () => { + this.setState({ selected: [], category: "", operator: "", ediTableTokenId: null, queryValueToEdit: null }, () => { if (this.props.onClearAll) { this.props.onClearAll(this.state.selected); } @@ -557,10 +576,10 @@ export default class OTokenizer extends Tokenizer { } _emptyParentCategoryState = () => { - this.setState({"category": ""}, () => { + this.setState({ category: "" }, () => { this._focusInput(); }); - } + }; getTypeHeadHtmlContainer = (component, uniqKey) => { return ( @@ -568,63 +587,71 @@ export default class OTokenizer extends Tokenizer {
    {this.state.conditional}
    {this.state.category}
    {this.state.operator}
    - { component } - - ); - } - - _updatedToken = () => { - this.setState({ - conditional: '', - category: '', - operator: '', - ediTableTokenId: null - }, () => { - this._focusInput(); - }); - } - - _getTypeahed({mykey, show}){ - var classes = {}; - classes[this.props.customClasses.typeahead] = !!this.props.customClasses.typeahead; - const classList = classNames(classes), - editId = (this.props.ediTableTokenId !== null && this.props.ediTableTokenId !== undefined) ? this.props.ediTableTokenId : this.state.ediTableTokenId, - placeholder = this.state.category === '' ? this.props.placeholder : this._getHeader().toLowerCase(), - typeHeadComp = this.typeaheadRef = ref} - disabled={this.props.disabled} - isAllowOperator={this.props.isAllowOperator} - onElementFocused={this.onElementFocused} - isElemenFocused={this.state.focused} - fuzzySearchEmptyMessage={this.props.fuzzySearchEmptyMessage} - fuzzySearchKeyAttribute={this._getFuzzySearchKeyAttribute({ - category: this.state.category - })} - isAllowSearchDropDownHeader={this.props.isAllowSearchDropDownHeader} - renderSearchItem={this.props.renderSearchItem} - className={classList} - placeholder={placeholder} - customClasses={this.props.customClasses} - options={this._getOptionsForTypeahead()} - header={this._getHeader()} - datatype={this._getInputType()} - isAllowCustomValue={this._getAllowCustomValue({ - category: this.state.category - })} - defaultValue={this.props.defaultValue} - onOptionSelected={this._addTokenForValue} - onKeyDown={this._onKeyDown} - fromTokenizer={true} - emptyParentCategoryState={this._emptyParentCategoryState} - customQuery={this.props.customQuery} - bracketHasClosed={this._bracketHasClosed} - updateParentInputText={this.props.updateParentInputText} - ediTableTokenId={editId} - queryOptions={this.queryOptions} - updatedToken={this._updatedToken} - updateParentToken={this.props.updateParentToken} - queryValueToEdit={this.state.queryValueToEdit} - />; - return show ? this.getTypeHeadHtmlContainer(typeHeadComp, mykey) : typeHeadComp; - } -} + {component} + + ); + }; + + _updatedToken = () => { + this.setState( + { + conditional: "", + category: "", + operator: "", + ediTableTokenId: null + }, + () => { + this._focusInput(); + } + ); + }; + + _getTypeahed({ mykey, show }) { + var classes = {}; + classes[this.props.customClasses.typeahead] = !!this.props.customClasses.typeahead; + const classList = classNames(classes), + editId = + this.props.ediTableTokenId !== null && this.props.ediTableTokenId !== undefined + ? this.props.ediTableTokenId + : this.state.ediTableTokenId, + placeholder = this.state.category === "" ? this.props.placeholder : this._getHeader().toLowerCase(), + typeHeadComp = ( + (this.typeaheadRef = ref)} + disabled={this.props.disabled} + isAllowOperator={this.props.isAllowOperator} + onElementFocused={this.onElementFocused} + isElemenFocused={this.state.focused} + fuzzySearchEmptyMessage={this.props.fuzzySearchEmptyMessage} + fuzzySearchKeyAttribute={this._getFuzzySearchKeyAttribute({ + category: this.state.category + })} + isAllowSearchDropDownHeader={this.props.isAllowSearchDropDownHeader} + renderSearchItem={this.props.renderSearchItem} + className={classList} + placeholder={placeholder} + customClasses={this.props.customClasses} + options={this._getOptionsForTypeahead()} + header={this._getHeader()} + datatype={this._getInputType()} + isAllowCustomValue={this._getAllowCustomValue({ + category: this.state.category + })} + defaultValue={this.props.defaultValue} + onOptionSelected={this._addTokenForValue} + onKeyDown={this._onKeyDown} + fromTokenizer={true} + emptyParentCategoryState={this._emptyParentCategoryState} + customQuery={this.props.customQuery} + bracketHasClosed={this._bracketHasClosed} + updateParentInputText={this.props.updateParentInputText} + ediTableTokenId={editId} + queryOptions={this.queryOptions} + updatedToken={this._updatedToken} + updateParentToken={this.props.updateParentToken} + queryValueToEdit={this.state.queryValueToEdit} + /> + ); + return show ? this.getTypeHeadHtmlContainer(typeHeadComp, mykey) : typeHeadComp; + } +} \ No newline at end of file diff --git a/src/OTypeahead.js b/src/OTypeahead.js index a9905b5..a79a68d 100644 --- a/src/OTypeahead.js +++ b/src/OTypeahead.js @@ -1,7 +1,7 @@ import React, { Component, Fragment } from "react"; import PropTypes from "prop-types"; import { Typeahead } from "./lib/react-structured-filter/react-typeahead/react-typeahead"; -import CustomQueryTokenizer from './CustomQueryTokenizer'; +import CustomQueryTokenizer from "./CustomQueryTokenizer"; // Override the Tokenizer export default class OTypeahead extends Typeahead { @@ -51,13 +51,14 @@ export default class OTypeahead extends Typeahead { _onOptionSelected(option) { if (option !== this.props.fuzzySearchEmptyMessage) { - var nEntry = this.entryRef, val = option; + var nEntry = this.entryRef, + val = option; nEntry.focus(); if (typeof val == "object") { nEntry.value = val[this.props.fuzzySearchKeyAttribute]; } else { - if (val.includes('(')) { - val = val.split('(')[0].trim(); + if (val.includes("(")) { + val = val.split("(")[0].trim(); } nEntry.value = val; } @@ -70,34 +71,39 @@ export default class OTypeahead extends Typeahead { } } - _getTypeaheadInput({classList, inputClassList}) { - if (this.props.ediTableTokenId !== null) { - inputClassList += ' editMode'; - } - var closeBtn = this.closeRef = ref} - className="typeahead-token-close" - href="javascript:void(0)" - onClick={(event) => { - if (this.props.updateParentToken) { - this.props.updateParentToken(); - } else { - this.props.updatedToken(); - } - event.preventDefault(); - }} - > - × - ; - return ( -
    - {this.state.loadingOptions - ? this.props.renderLoading - ? this.props.renderLoading () - :
    Loading...
    - : (this.inputRef = ref)} onFocus={this._onFocus}> - {this.state.datatype == 'query' - ? (this.closeRef = ref)} + className="typeahead-token-close" + href="javascript:void(0)" + onClick={event => { + if (this.props.updateParentToken) { + this.props.updateParentToken(); + } else { + this.props.updatedToken(); + } + event.preventDefault(); + }} + > + × + + ); + return ( +
    + {this.state.loadingOptions ? ( + this.props.renderLoading ? ( + this.props.renderLoading() + ) : ( +
    Loading...
    + ) + ) : ( + (this.inputRef = ref)} onFocus={this._onFocus}> + {this.state.datatype == "query" ? ( + (this.entryRef = ref)} type={this.state.datatype} placeholder={this.props.placeholder} @@ -105,26 +111,28 @@ export default class OTypeahead extends Typeahead { parentCallBack={this.props.parentCallBack} disabled={this.props.disabled} updatedInputText={this._onTextEntryUpdated} - defaultSelected={this.props.queryValueToEdit} + defaultSelected={this.props.queryValueToEdit} {...this.props} /> - : - (this.entryRef = ref)} - type={this.state.datatype == 'number' ? 'number' : 'text'} - placeholder={this.props.placeholder} - className={inputClassList} - defaultValue={this.state.entryValue} - onChange={this._onTextEntryUpdated} - onKeyDown={this._onKeyDown} - disabled={this.props.disabled} - /> - {this.props.ediTableTokenId !== null && this.props.ediTableTokenId !== undefined && closeBtn} - - } - {this._renderIncrementalSearchResults ()} - } -
    + ) : ( + + (this.entryRef = ref)} + type={this.state.datatype == "number" ? "number" : "text"} + placeholder={this.props.placeholder} + className={inputClassList} + defaultValue={this.state.entryValue} + onChange={this._onTextEntryUpdated} + onKeyDown={this._onKeyDown} + disabled={this.props.disabled} + /> + {this.props.ediTableTokenId !== null && this.props.ediTableTokenId !== undefined && closeBtn} + + )} + {this._renderIncrementalSearchResults()} +
    + )} +
    ); } -} +} \ No newline at end of file diff --git a/src/lib/react-structured-filter/react-typeahead/tokenizer/index.js b/src/lib/react-structured-filter/react-typeahead/tokenizer/index.js index 9a93eee..da57989 100755 --- a/src/lib/react-structured-filter/react-typeahead/tokenizer/index.js +++ b/src/lib/react-structured-filter/react-typeahead/tokenizer/index.js @@ -77,15 +77,13 @@ export default class TypeaheadTokenizer extends Component { let mykey = selected.category + (this.props.isAllowOperator ? selected.operator : "") + - (selected.value ? - (typeof selected.value == "string" - ? selected.value - : selected.value[fuzzySearchKeyAttribute]) - : "") + index; + (selected.value ? (typeof selected.value == "string" ? selected.value : selected.value[fuzzySearchKeyAttribute]) : "") + + index; - return ( - this.state.ediTableTokenId === index ? this._getTypeahed ({mykey, show: true}): - { const index = this.state.selected.indexOf(value), - type = this.state.options.find((o) => this._getCategoryName(o.category) === value.category).type; - let queryVal = null; - if (type === 'query') { + type = this.state.options.find(o => this._getCategoryName(o.category) === value.category).type; + let queryVal = null; + if (type === "query") { queryVal = value.value.trim().substr(0, value.value.trim().length - 1); } - this.setState({ - conditional: value.conditional || '', - category: value.category || '', - operator: value.operator, - value: null, - ediTableTokenId: index, - focused: true, - queryValueToEdit: queryVal - }, () => setTimeout(() => {this._focusInput()}, 0)); - } + this.setState( + { + conditional: value.conditional || "", + category: value.category || "", + operator: value.operator, + value: null, + ediTableTokenId: index, + focused: true, + queryValueToEdit: queryVal + }, + () => + setTimeout(() => { + this._focusInput(); + }, 0) + ); + }; _addTokenForValue = value => { if (this.state.category == "") { @@ -288,12 +292,12 @@ export default class TypeaheadTokenizer extends Component { render() { var classes = { - 'filter-tokenizer': true + "filter-tokenizer": true }; classes[this.props.customClasses.query] = this.props.customClasses.query; var classList = classNames(classes, { - "padding-for-clear-all" : this.props.isAllowClearAll, - "disabled": this.props.disabled + "padding-for-clear-all": this.props.isAllowClearAll, + disabled: this.props.disabled }); return (
    - { this._renderTokens()} - { this.state.ediTableTokenId === null &&
    + {this._renderTokens()} + {this.state.ediTableTokenId === null && ( +
    {this.state.conditional}
    {this.state.category}
    {this.state.operator}
    - {this._getTypeahed({show: false})} + {this._getTypeahed({ show: false })}
    - } + )}
    {this.props.isAllowClearAll ? this._getClearAllButton() : null}
    ); } -} +} \ No newline at end of file diff --git a/src/lib/react-structured-filter/react-typeahead/tokenizer/token.js b/src/lib/react-structured-filter/react-typeahead/tokenizer/token.js index 321ce99..e18da07 100755 --- a/src/lib/react-structured-filter/react-typeahead/tokenizer/token.js +++ b/src/lib/react-structured-filter/react-typeahead/tokenizer/token.js @@ -43,21 +43,29 @@ export default class Token extends Component { return this.props.renderTokenItem(this.props); } else { let val = this.props.children, - tokenVal = (val.conditional && val.conditional.includes(')')) ? this.getTokenValue() : `"${this.getTokenValue()}"`, - type = this.props.customQuery ? 'query' : this.props.options.find((o) => o.category === val.category).type, - addColen = (type !== 'query' && (val.operator === undefined || val.operator === null)) ? ':' : ''; - return - - {val.conditional == undefined ? "" : val.conditional} - {val["category"]}{addColen} - {val.operator == undefined ? "" : val.operator} - {tokenVal} - - ; + tokenVal = val.conditional && val.conditional.includes(")") ? this.getTokenValue() : `"${this.getTokenValue()}"`, + type = this.props.customQuery ? "query" : this.props.options.find(o => o.category === val.category).type, + addColen = type !== "query" && (val.operator === undefined || val.operator === null) ? ":" : ""; + return ( + + + {val.conditional == undefined ? "" : val.conditional} + + {val["category"]} + {addColen} + + {val.operator == undefined ? "" : val.operator} + {tokenVal} + + + ); } } @@ -69,4 +77,4 @@ export default class Token extends Component {
    ); } -} +} \ No newline at end of file diff --git a/src/lib/react-structured-filter/react-typeahead/typeahead/index.js b/src/lib/react-structured-filter/react-typeahead/typeahead/index.js index 20265a9..0fd7ecf 100755 --- a/src/lib/react-structured-filter/react-typeahead/typeahead/index.js +++ b/src/lib/react-structured-filter/react-typeahead/typeahead/index.js @@ -71,11 +71,11 @@ export default class Typeahead extends Component { // A valid typeahead value selection: null, - focused: this.props.isElemenFocused || false + focused: this.props.isElemenFocused || false }; } - componentDidMount () { + componentDidMount() { if (this.props.isElemenFocused && this.entryRef && this.entryRef.focus) { this.entryRef.focus(); } @@ -189,15 +189,18 @@ export default class Typeahead extends Component { if (this.state.datatype === "query") { value = val; } - this.setState({ - visible: this.getOptionsForValue(value, this.state.options), - selection: null, - entryValue: value - }, () => { - if (this.state.datatype === "query" && val !== undefined) { - this.props.onOptionSelected(value, queryResult); + this.setState( + { + visible: this.getOptionsForValue(value, this.state.options), + selection: null, + entryValue: value + }, + () => { + if (this.state.datatype === "query" && val !== undefined) { + this.props.onOptionSelected(value, queryResult); + } } - }); + ); }; _onEnter = event => { @@ -238,7 +241,10 @@ export default class Typeahead extends Component { // If no options were provided so we can match on anything if (this.props.options.length === 0) { this._onOptionSelected(this.state.entryValue); - } else if (this.props.options.indexOf(this.state.entryValue) > -1 || (this.state.entryValue && this.state.entryValue.trim() != "" && this.props.isAllowCustomValue)) { + } else if ( + this.props.options.indexOf(this.state.entryValue) > -1 || + (this.state.entryValue && this.state.entryValue.trim() != "" && this.props.isAllowCustomValue) + ) { // If what has been typed in is an exact match of one of the options this._onOptionSelected(this.state.entryValue); } else if (this.props.customQuery) { @@ -347,4 +353,4 @@ export default class Typeahead extends Component { } return this._getTypeaheadInput({ classList, inputClassList }); } -} +} \ No newline at end of file diff --git a/src/lib/react-structured-filter/react-typeahead/typeahead/option.js b/src/lib/react-structured-filter/react-typeahead/typeahead/option.js index c900386..915c51e 100755 --- a/src/lib/react-structured-filter/react-typeahead/typeahead/option.js +++ b/src/lib/react-structured-filter/react-typeahead/typeahead/option.js @@ -32,7 +32,7 @@ export default class TypeaheadOption extends Component { "typeahead-option": true }; classes[this.props.customClasses.listAnchor] = !!this.props.customClasses.listAnchor; - classes['group-items'] = this.props.grouping ? true : false; + classes["group-items"] = this.props.grouping ? true : false; return classNames(classes); } @@ -61,4 +61,4 @@ export default class TypeaheadOption extends Component { ); } -} +} \ No newline at end of file diff --git a/src/lib/react-structured-filter/react-typeahead/typeahead/selector.js b/src/lib/react-structured-filter/react-typeahead/typeahead/selector.js index c587c2d..e4462f9 100755 --- a/src/lib/react-structured-filter/react-typeahead/typeahead/selector.js +++ b/src/lib/react-structured-filter/react-typeahead/typeahead/selector.js @@ -106,20 +106,24 @@ export default class TypeaheadSelector extends Component { } groupingOptions = () => { - const opt={}; - this.props.options.forEach((option) => { + const opt = {}; + this.props.options.forEach(option => { if (!opt[option.group]) { opt[option.group] = []; } opt[option.group].push(option); }); return Object.keys(opt).map((k, i) => { - return -
  • {k}
  • - {this.getOptionsItems(opt[k], true)} -
    ; + return ( + +
  • + {k} +
  • + {this.getOptionsItems(opt[k], true)} +
    + ); }); - } + }; getOptionsList = () => { let options = this.props.options; @@ -128,7 +132,7 @@ export default class TypeaheadSelector extends Component { } else { return this.getOptionsItems(options); } - } + }; getOptionsItems = (options, grouping = false) => { return options.map(function(result, i) { @@ -149,7 +153,7 @@ export default class TypeaheadSelector extends Component { ); }, this); - } + }; render() { var classes = { @@ -168,4 +172,4 @@ export default class TypeaheadSelector extends Component { ); } -} +} \ No newline at end of file From 94a62051c8615f48f3a9259abd42a8b3aebd889d Mon Sep 17 00:00:00 2001 From: kevalbhatt Date: Tue, 7 Jan 2020 15:35:39 +0530 Subject: [PATCH 14/15] key-up,down group element issue fixed, on enter token creation issue fixed --- src/CustomQueryTokenizer.js | 1 + src/OTokenizer.js | 16 ++++- src/OTypeahead.js | 2 + .../react-typeahead/typeahead/index.js | 6 +- .../react-typeahead/typeahead/selector.js | 63 +++++++++++-------- 5 files changed, 56 insertions(+), 32 deletions(-) diff --git a/src/CustomQueryTokenizer.js b/src/CustomQueryTokenizer.js index da93d86..3a6f6ff 100644 --- a/src/CustomQueryTokenizer.js +++ b/src/CustomQueryTokenizer.js @@ -161,6 +161,7 @@ export default class CustomQueryTokenizer extends Component { ediTableTokenId={this.props.ediTableTokenId} updateParentToken={this.updateParentToken} conditionalList={this.conditionalList} + parentSetEntryText={this.props.parentSetEntryText} /> ); diff --git a/src/OTokenizer.js b/src/OTokenizer.js index d0a2ba4..c77cb9d 100644 --- a/src/OTokenizer.js +++ b/src/OTokenizer.js @@ -400,7 +400,16 @@ export default class OTokenizer extends Tokenizer { this.setState({ conditional: val }); this.typeaheadRef.setEntryText(""); if (this.props.customQuery && val.includes(")")) { - this._addToken({ value: val, isAllowOperator: false, closeToken: true }); + this._addToken({ + value: val, + isAllowOperator: false, + closeToken: true, + cb: () => { + if (this._bracketHasClosed().status && this.props.updateParentInputText) { + this.props.updateParentInputText(); + } + } + }); } return; } @@ -427,7 +436,7 @@ export default class OTokenizer extends Tokenizer { this._addToken({ value, isAllowOperator }); }; - _addToken = ({ value, isAllowOperator, closeToken }) => { + _addToken = ({ value, isAllowOperator, closeToken, cb }) => { value = { conditional: this.state.conditional, category: this.state.category, @@ -481,6 +490,9 @@ export default class OTokenizer extends Tokenizer { }); this.props.onTokenAdd(selected); this._focusInput(); + if (cb) { + cb(); + } }); return; }; diff --git a/src/OTypeahead.js b/src/OTypeahead.js index a79a68d..dcaa545 100644 --- a/src/OTypeahead.js +++ b/src/OTypeahead.js @@ -92,6 +92,7 @@ export default class OTypeahead extends Typeahead { × ); + return (
    {this.state.loadingOptions ? ( @@ -112,6 +113,7 @@ export default class OTypeahead extends Typeahead { disabled={this.props.disabled} updatedInputText={this._onTextEntryUpdated} defaultSelected={this.props.queryValueToEdit} + parentSetEntryText={this.setEntryText} {...this.props} /> ) : ( diff --git a/src/lib/react-structured-filter/react-typeahead/typeahead/index.js b/src/lib/react-structured-filter/react-typeahead/typeahead/index.js index 0fd7ecf..143d7df 100755 --- a/src/lib/react-structured-filter/react-typeahead/typeahead/index.js +++ b/src/lib/react-structured-filter/react-typeahead/typeahead/index.js @@ -124,12 +124,12 @@ export default class Typeahead extends Component { } } - setEntryText(value) { + setEntryText = value => { if (this.entryRef != null) { this.entryRef.value = value; } this._onTextEntryUpdated(); - } + }; _renderIncrementalSearchResults() { if (this.props.isElemenFocused == undefined) { @@ -197,7 +197,7 @@ export default class Typeahead extends Component { }, () => { if (this.state.datatype === "query" && val !== undefined) { - this.props.onOptionSelected(value, queryResult); + this.props.onOptionSelected(value, queryResult, this.entryRef); } } ); diff --git a/src/lib/react-structured-filter/react-typeahead/typeahead/selector.js b/src/lib/react-structured-filter/react-typeahead/typeahead/selector.js index e4462f9..e17f650 100755 --- a/src/lib/react-structured-filter/react-typeahead/typeahead/selector.js +++ b/src/lib/react-structured-filter/react-typeahead/typeahead/selector.js @@ -98,7 +98,12 @@ export default class TypeaheadSelector extends Component { } else { if (typeof item == "object") { let attr = this.props.fuzzySearchKeyAttribute; - return grouping && item.displayName ? item.displayName : item[attr] ? item[attr] : item["string"]; + if (grouping && item.displayName) { + return item.displayName; + } else { + return item[attr] || item["string"]; + } + //return grouping && item.displayName ? item.displayName : item[attr] ? item[attr] : item["string"]; } else if (typeof item == "string") { return item; } @@ -107,22 +112,14 @@ export default class TypeaheadSelector extends Component { groupingOptions = () => { const opt = {}; - this.props.options.forEach(option => { - if (!opt[option.group]) { - opt[option.group] = []; + this.props.options.sort((a, b) => { + if (a.group === b.group) { + return 0; } - opt[option.group].push(option); - }); - return Object.keys(opt).map((k, i) => { - return ( - -
  • - {k} -
  • - {this.getOptionsItems(opt[k], true)} -
    - ); + return a.group < b.group ? -1 : 1; }); + console.log(this.props.options); + return this.getOptionsItems(this.props.options, true); }; getOptionsList = () => { @@ -135,22 +132,34 @@ export default class TypeaheadSelector extends Component { }; getOptionsItems = (options, grouping = false) => { + let groupText = {}; return options.map(function(result, i) { let elementSelected = this.state.selectionIndex === i, disabledElement = result == this.props.fuzzySearchEmptyMessage, - item = this.getSearchItem(result, grouping); + item = this.getSearchItem(result, grouping), + Header = null; + if (grouping && !groupText[result.group]) { + groupText[result.group] = true; + Header = ( +
  • + {result.group} +
  • + ); + } return ( - - {item} - + + {Header} + + {item} + + ); }, this); }; From 8b2301dc99a8a2f1cf3878c7b27bd9a447efa4c8 Mon Sep 17 00:00:00 2001 From: kevalbhatt Date: Tue, 7 Jan 2020 15:53:47 +0530 Subject: [PATCH 15/15] sort lowercase chang --- example/src/App.js | 200 +++++++++--------- .../react-typeahead/typeahead/selector.js | 7 +- 2 files changed, 105 insertions(+), 102 deletions(-) diff --git a/example/src/App.js b/example/src/App.js index cada647..48b157c 100755 --- a/example/src/App.js +++ b/example/src/App.js @@ -9,104 +9,106 @@ export default class App extends Component { this.state = { SymbolData: [] }; - // NOTE: The operator will seen to UI only if props isAllowOperator={true} - this.options = [ - { - category: "Type", - type: "textoptions", - operator: ["==", "!="], + // NOTE: The operator will seen to UI only if props isAllowOperator={true} + this.options = [ + { + category: "Type", + type: "textoptions", + operator: ["==", "!="], + isAllowDuplicateCategories: false, + options: this.getSymbolOptions + }, + { + category: "Classification", + type: "textoptions", + operator: ["==", "!="], isAllowDuplicateCategories: false, - options: this.getSymbolOptions - }, - { - category: "Classification", - type: "textoptions", - operator: ["==", "!="], - isAllowDuplicateCategories: false, fuzzySearchKeyAttribute: "sectorName", - options: this.getSectorOptions - }, - { - category: "Terms", - type: "textoptions", - operator: null, - isAllowDuplicateCategories: true, - options: this.getIndustryOptions - }, - { - category: "Label", - type: "text", - isAllowDuplicateCategories: false, - operator: null - }, - { - category: "Query", - isAllowDuplicateCategories: false, - type: "query", - isAllowCustomValue: true, - options: null, - operator: null, - fuzzySearchKeyAttribute: "displayName", - queryOptions: [ - { - category: { - name: "QualifiedName", - displayName: "QualifiedName (string)", - group: 'In house' - }, - fuzzySearchKeyAttribute: "displayName", - type: "text", - operator: ["==", "!=", "contains", "begins with", "ends with", "is null", "is not null"], - options: null - }, - { - category: { - name: "Description", - displayName: "Description (string)", - group: 'In house', - }, - fuzzySearchKeyAttribute: "displayName", - type: "text", - operator: ["==", "!=", "contains", "begins with", "ends with", "is null", "is not null"], - options: null - }, - { - category: { - name: "Name", - displayName: "Name (string)", - group: 'out source' - }, - fuzzySearchKeyAttribute: "displayName", - type: "text", - operator: ["==", "!=", "contains", "begins with", "ends with", "is null", "is not null"], - options: null - }, - { - category: { - name: "Owner", - displayName: "Owner (string)", - group: 'out source' - }, - fuzzySearchKeyAttribute: "displayName", - type: "textoptions", - operator: ["==", "!=", "contains", "begins with", "ends with", "is null", "is not null"], - options: [{ - name: 'user1', - displayName: "User 1", - group: 'In house' - }, - { - name: 'user2', - displayName: "User 2", - group: 'out source' - }, - { - name: 'user3', - displayName: "User 3", - group: 'In house' - }] - } - ] + options: this.getSectorOptions + }, + { + category: "Terms", + type: "textoptions", + operator: null, + isAllowDuplicateCategories: true, + options: this.getIndustryOptions + }, + { + category: "Label", + type: "text", + isAllowDuplicateCategories: false, + operator: null + }, + { + category: "Query", + isAllowDuplicateCategories: false, + type: "query", + isAllowCustomValue: true, + options: null, + operator: null, + fuzzySearchKeyAttribute: "displayName", + queryOptions: [ + { + category: { + name: "QualifiedName", + displayName: "QualifiedName (string)", + group: "In house" + }, + fuzzySearchKeyAttribute: "displayName", + type: "text", + operator: ["==", "!=", "contains", "begins with", "ends with", "is null", "is not null"], + options: null + }, + { + category: { + name: "Description", + displayName: "Description (string)", + group: "In house" + }, + fuzzySearchKeyAttribute: "displayName", + type: "text", + operator: ["==", "!=", "contains", "begins with", "ends with", "is null", "is not null"], + options: null + }, + { + category: { + name: "Name", + displayName: "Name (string)", + group: "out source" + }, + fuzzySearchKeyAttribute: "displayName", + type: "text", + operator: ["==", "!=", "contains", "begins with", "ends with", "is null", "is not null"], + options: null + }, + { + category: { + name: "Owner", + displayName: "Owner (string)", + group: "out source" + }, + fuzzySearchKeyAttribute: "displayName", + type: "textoptions", + operator: ["==", "!=", "contains", "begins with", "ends with", "is null", "is not null"], + options: [ + { + name: "user1", + displayName: "User 1", + group: "In house" + }, + { + name: "user2", + displayName: "User 2", + group: "out source" + }, + { + name: "user3", + displayName: "User 3", + group: "In house" + } + ] + } + ] } ]; } @@ -142,7 +144,7 @@ export default class App extends Component { * @return {[array]} */ getIndustryOptions() { - return [{ name: "Business Services", id: 1 }, { name: "Other Specialty Stores", id: 2 }, { name: "demo test", id: 3 }]; + return [{ name: "Business Services", id: 1 }, { name: "Other Specialty Stores", id: 2 }, { name: "demo test", id: 3 }]; } getTokenItem(obj) { @@ -155,7 +157,7 @@ export default class App extends Component {
    ); } -} +} \ No newline at end of file diff --git a/src/lib/react-structured-filter/react-typeahead/typeahead/selector.js b/src/lib/react-structured-filter/react-typeahead/typeahead/selector.js index e17f650..feac6db 100755 --- a/src/lib/react-structured-filter/react-typeahead/typeahead/selector.js +++ b/src/lib/react-structured-filter/react-typeahead/typeahead/selector.js @@ -113,12 +113,13 @@ export default class TypeaheadSelector extends Component { groupingOptions = () => { const opt = {}; this.props.options.sort((a, b) => { - if (a.group === b.group) { + let aL = a.group.toLocaleLowerCase(), + bL = b.group.toLocaleLowerCase(); + if (aL === bL) { return 0; } - return a.group < b.group ? -1 : 1; + return aL < bL ? -1 : 1; }); - console.log(this.props.options); return this.getOptionsItems(this.props.options, true); };