From 3eab79c0b5782085d5645835e8d2ba807d4f6702 Mon Sep 17 00:00:00 2001 From: Jeremy Jackson Date: Thu, 27 Dec 2018 10:05:21 -0700 Subject: [PATCH 01/29] Updated packages to latest versions. --- package-lock.json | 1635 ++++++++++++++++++++++++++++----------------- package.json | 14 +- 2 files changed, 1046 insertions(+), 603 deletions(-) diff --git a/package-lock.json b/package-lock.json index 55062de..5761806 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,83 +4,166 @@ "lockfileVersion": 1, "requires": true, "dependencies": { - "@samverschueren/stream-to-observable": { - "version": "0.3.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz", - "integrity": "sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg==", + "@babel/code-frame": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", "dev": true, "requires": { - "any-observable": "^0.3.0" + "@babel/highlight": "^7.0.0" } }, - "acorn": { - "version": "5.7.3", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/acorn/-/acorn-5.7.3.tgz", - "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", - "dev": true + "@babel/highlight": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", + "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } }, - "acorn-jsx": { - "version": "3.0.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/acorn-jsx/-/acorn-jsx-3.0.1.tgz", - "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "@iamstarkov/listr-update-renderer": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@iamstarkov/listr-update-renderer/-/listr-update-renderer-0.4.1.tgz", + "integrity": "sha512-IJyxQWsYDEkf8C8QthBn5N8tIUR9V9je6j3sMIpAkonaadjbvxmRC6RAhpa3RKxndhNnU2M6iNbtJwd7usQYIA==", "dev": true, "requires": { - "acorn": "^3.0.4" + "chalk": "^1.1.3", + "cli-truncate": "^0.2.1", + "elegant-spinner": "^1.0.1", + "figures": "^1.7.0", + "indent-string": "^3.0.0", + "log-symbols": "^1.0.2", + "log-update": "^2.3.0", + "strip-ansi": "^3.0.1" }, "dependencies": { - "acorn": { - "version": "3.3.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "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": "http://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" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "dev": true, + "requires": { + "chalk": "^1.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "http://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "dev": true } } }, - "ajv": { - "version": "5.5.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "@samverschueren/stream-to-observable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz", + "integrity": "sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg==", "dev": true, "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" + "any-observable": "^0.3.0" } }, - "ajv-keywords": { - "version": "2.1.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/ajv-keywords/-/ajv-keywords-2.1.1.tgz", - "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", + "acorn": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.4.tgz", + "integrity": "sha512-VY4i5EKSKkofY2I+6QLTbTTN/UvEQPCo6eiwzzSaSWfpaDhOmStMCMod6wmuPciNq+XS0faCglFu2lHZpdHUtg==", + "dev": true + }, + "acorn-jsx": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz", + "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==", "dev": true }, + "ajv": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.2.tgz", + "integrity": "sha512-FBHEW6Jf5TB9MGBgUUA9XHkTbjXYfAUjY43ACMfmdMRHniyoMHjHjzD50OK8LGDWQwp4rWEsIq5kEqq7rvIM1g==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, "ansi-escapes": { "version": "3.1.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/ansi-escapes/-/ansi-escapes-3.1.0.tgz", + "resolved": "http://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", "dev": true }, "ansi-regex": { - "version": "2.1.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "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": "2.2.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/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" + } }, "any-observable": { "version": "0.3.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/any-observable/-/any-observable-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz", "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==", "dev": true }, "argparse": { "version": "1.0.10", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/argparse/-/argparse-1.0.10.tgz", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "requires": { @@ -89,80 +172,75 @@ }, "arr-diff": { "version": "4.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/arr-diff/-/arr-diff-4.0.0.tgz", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", "dev": true }, "arr-flatten": { "version": "1.1.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/arr-flatten/-/arr-flatten-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", "dev": true }, "arr-union": { "version": "3.1.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/arr-union/-/arr-union-3.1.0.tgz", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", "dev": true }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, "array-unique": { "version": "0.3.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/array-unique/-/array-unique-0.3.2.tgz", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, "assign-symbols": { "version": "1.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/assign-symbols/-/assign-symbols-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", "dev": true }, - "async": { + "astral-regex": { "version": "1.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/async/-/async-1.0.0.tgz", - "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=" + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", + "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "requires": { + "lodash": "^4.17.10" + } }, "atob": { "version": "2.1.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/atob/-/atob-2.1.2.tgz", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", "dev": true }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - }, - "dependencies": { - "chalk": { - "version": "1.1.3", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/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" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, "balanced-match": { "version": "1.0.0", "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/balanced-match/-/balanced-match-1.0.0.tgz", @@ -171,7 +249,7 @@ }, "base": { "version": "0.11.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/base/-/base-0.11.2.tgz", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "dev": true, "requires": { @@ -186,7 +264,7 @@ "dependencies": { "define-property": { "version": "1.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/define-property/-/define-property-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { @@ -195,7 +273,7 @@ }, "is-accessor-descriptor": { "version": "1.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { @@ -204,7 +282,7 @@ }, "is-data-descriptor": { "version": "1.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { @@ -213,7 +291,7 @@ }, "is-descriptor": { "version": "1.0.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/is-descriptor/-/is-descriptor-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { @@ -236,7 +314,7 @@ }, "braces": { "version": "2.3.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/braces/-/braces-2.3.2.tgz", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, "requires": { @@ -254,7 +332,7 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/extend-shallow/-/extend-shallow-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { @@ -269,15 +347,15 @@ "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true }, - "buffer-from": { + "builtin-modules": { "version": "1.1.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", "dev": true }, "cache-base": { "version": "1.0.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/cache-base/-/cache-base-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", "dev": true, "requires": { @@ -294,7 +372,7 @@ }, "caller-callsite": { "version": "2.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/caller-callsite/-/caller-callsite-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", "dev": true, "requires": { @@ -303,7 +381,7 @@ "dependencies": { "callsites": { "version": "2.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/callsites/-/callsites-2.0.0.tgz", + "resolved": "http://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", "dev": true } @@ -311,7 +389,7 @@ }, "caller-path": { "version": "0.1.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/caller-path/-/caller-path-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", "dev": true, "requires": { @@ -320,62 +398,42 @@ }, "callsites": { "version": "0.2.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/callsites/-/callsites-0.2.0.tgz", + "resolved": "http://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", "dev": true }, "chalk": { "version": "2.4.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/chalk/-/chalk-2.4.1.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "chardet": { - "version": "0.4.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/chardet/-/chardet-0.4.2.tgz", - "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "dev": true }, "ci-info": { "version": "1.6.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/ci-info/-/ci-info-1.6.0.tgz", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", "dev": true }, "circular-json": { "version": "0.3.3", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/circular-json/-/circular-json-0.3.3.tgz", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", "dev": true }, "class-utils": { "version": "0.3.6", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/class-utils/-/class-utils-0.3.6.tgz", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "dev": true, "requires": { @@ -387,7 +445,7 @@ "dependencies": { "define-property": { "version": "0.2.5", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/define-property/-/define-property-0.2.5.tgz", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { @@ -398,7 +456,7 @@ }, "cli-cursor": { "version": "2.1.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/cli-cursor/-/cli-cursor-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "dev": true, "requires": { @@ -407,7 +465,7 @@ }, "cli-truncate": { "version": "0.2.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/cli-truncate/-/cli-truncate-0.2.1.tgz", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", "dev": true, "requires": { @@ -415,9 +473,15 @@ "string-width": "^1.0.1" }, "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, "is-fullwidth-code-point": { "version": "1.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { @@ -426,13 +490,13 @@ }, "slice-ansi": { "version": "0.0.4", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/slice-ansi/-/slice-ansi-0.0.4.tgz", + "resolved": "http://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", "dev": true }, "string-width": { "version": "1.0.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/string-width/-/string-width-1.0.2.tgz", + "resolved": "http://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { @@ -443,7 +507,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { @@ -454,25 +518,19 @@ }, "cli-width": { "version": "2.2.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/cli-width/-/cli-width-2.2.0.tgz", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", "dev": true }, - "co": { - "version": "4.6.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, "code-point-at": { "version": "1.1.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/code-point-at/-/code-point-at-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, "collection-visit": { "version": "1.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/collection-visit/-/collection-visit-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", "dev": true, "requires": { @@ -480,11 +538,19 @@ "object-visit": "^1.0.0" } }, + "color": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz", + "integrity": "sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==", + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.2" + } + }, "color-convert": { "version": "1.9.3", "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, "requires": { "color-name": "1.1.3" } @@ -492,23 +558,45 @@ "color-name": { "version": "1.1.3", "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "color-string": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", + "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "colornames": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/colornames/-/colornames-1.1.1.tgz", + "integrity": "sha1-+IiQMGhcfE/54qVZ9Qd+t2qBb5Y=" }, "colors": { - "version": "1.0.3", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/colors/-/colors-1.0.3.tgz", - "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=" + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz", + "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==" + }, + "colorspace": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.1.tgz", + "integrity": "sha512-pI3btWyiuz7Ken0BWh9Elzsmv2bM9AhA7psXib4anUXy/orfZ/E0MbQwhSOG/9L8hLlalqrU0UhOuqxW1YjmVw==", + "requires": { + "color": "3.0.x", + "text-hex": "1.0.x" + } }, "commander": { "version": "2.19.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/commander/-/commander-2.19.0.tgz", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", "dev": true }, "component-emitter": { "version": "1.2.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/component-emitter/-/component-emitter-1.2.1.tgz", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", "dev": true }, @@ -518,21 +606,9 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, "copy-descriptor": { "version": "0.1.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", "dev": true }, @@ -543,7 +619,7 @@ }, "cosmiconfig": { "version": "5.0.7", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/cosmiconfig/-/cosmiconfig-5.0.7.tgz", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.0.7.tgz", "integrity": "sha512-PcLqxTKiDmNT6pSpy4N6KtuPwb53W+2tzNvwOZw0WH9N6O0vLIBq0x8aj8Oj75ere4YcGi48bDFCL+3fRJdlNA==", "dev": true, "requires": { @@ -554,31 +630,28 @@ } }, "cross-spawn": { - "version": "5.1.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, "requires": { - "lru-cache": "^4.0.1", + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", "shebang-command": "^1.2.0", "which": "^1.2.9" } }, - "cycle": { - "version": "1.0.3", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/cycle/-/cycle-1.0.3.tgz", - "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=" - }, "date-fns": { "version": "1.30.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/date-fns/-/date-fns-1.30.1.tgz", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", "dev": true }, "debug": { - "version": "3.2.6", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" @@ -586,25 +659,25 @@ }, "decode-uri-component": { "version": "0.2.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "dev": true }, "dedent": { "version": "0.7.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/dedent/-/dedent-0.7.0.tgz", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", "dev": true }, "deep-is": { "version": "0.1.3", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/deep-is/-/deep-is-0.1.3.tgz", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, "define-property": { "version": "2.0.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/define-property/-/define-property-2.0.2.tgz", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", "dev": true, "requires": { @@ -614,7 +687,7 @@ "dependencies": { "is-accessor-descriptor": { "version": "1.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { @@ -623,7 +696,7 @@ }, "is-data-descriptor": { "version": "1.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { @@ -632,7 +705,7 @@ }, "is-descriptor": { "version": "1.0.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/is-descriptor/-/is-descriptor-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { @@ -643,6 +716,30 @@ } } }, + "del": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", + "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", + "dev": true, + "requires": { + "globby": "^6.1.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "p-map": "^1.1.1", + "pify": "^3.0.0", + "rimraf": "^2.2.8" + } + }, + "diagnostics": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/diagnostics/-/diagnostics-1.1.1.tgz", + "integrity": "sha512-8wn1PmdunLJ9Tqbx+Fx/ZEuHfJf4NKSN2ZBj7SJC/OWRWha843+WsTjqMe1B5E3p28jqBlp+mJ2fPVxPyNgYKQ==", + "requires": { + "colorspace": "1.1.x", + "enabled": "1.0.x", + "kuler": "1.0.x" + } + }, "diff": { "version": "3.5.0", "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/diff/-/diff-3.5.0.tgz", @@ -651,7 +748,7 @@ }, "doctrine": { "version": "2.1.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/doctrine/-/doctrine-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, "requires": { @@ -660,13 +757,35 @@ }, "elegant-spinner": { "version": "1.0.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/elegant-spinner/-/elegant-spinner-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=", "dev": true }, + "enabled": { + "version": "1.0.2", + "resolved": "http://registry.npmjs.org/enabled/-/enabled-1.0.2.tgz", + "integrity": "sha1-ll9lE9LC0cX0ZStkouM5ZGf8L5M=", + "requires": { + "env-variable": "0.0.x" + } + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "env-variable": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/env-variable/-/env-variable-0.0.5.tgz", + "integrity": "sha512-zoB603vQReOFvTg5xMl9I1P2PnHsHQQKTEowsKKD7nseUfJq6UWzK+4YtlWUO1nhiQUxe6XMkk+JleSZD1NZFA==" + }, "error-ex": { "version": "1.3.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/error-ex/-/error-ex-1.3.2.tgz", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, "requires": { @@ -680,102 +799,107 @@ "dev": true }, "eslint": { - "version": "4.19.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/eslint/-/eslint-4.19.1.tgz", - "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", + "version": "5.11.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.11.1.tgz", + "integrity": "sha512-gOKhM8JwlFOc2acbOrkYR05NW8M6DCMSvfcJiBB5NDxRE1gv8kbvxKaC9u69e6ZGEMWXcswA/7eKR229cEIpvg==", "dev": true, "requires": { - "ajv": "^5.3.0", - "babel-code-frame": "^6.22.0", + "@babel/code-frame": "^7.0.0", + "ajv": "^6.5.3", "chalk": "^2.1.0", - "concat-stream": "^1.6.0", - "cross-spawn": "^5.1.0", - "debug": "^3.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", "doctrine": "^2.1.0", - "eslint-scope": "^3.7.1", + "eslint-scope": "^4.0.0", + "eslint-utils": "^1.3.1", "eslint-visitor-keys": "^1.0.0", - "espree": "^3.5.4", - "esquery": "^1.0.0", + "espree": "^5.0.0", + "esquery": "^1.0.1", "esutils": "^2.0.2", "file-entry-cache": "^2.0.0", "functional-red-black-tree": "^1.0.1", "glob": "^7.1.2", - "globals": "^11.0.1", - "ignore": "^3.3.3", + "globals": "^11.7.0", + "ignore": "^4.0.6", "imurmurhash": "^0.1.4", - "inquirer": "^3.0.6", - "is-resolvable": "^1.0.0", - "js-yaml": "^3.9.1", + "inquirer": "^6.1.0", + "js-yaml": "^3.12.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.3.0", - "lodash": "^4.17.4", - "minimatch": "^3.0.2", + "lodash": "^4.17.5", + "minimatch": "^3.0.4", "mkdirp": "^0.5.1", "natural-compare": "^1.4.0", "optionator": "^0.8.2", "path-is-inside": "^1.0.2", "pluralize": "^7.0.0", "progress": "^2.0.0", - "regexpp": "^1.0.1", + "regexpp": "^2.0.1", "require-uncached": "^1.0.3", - "semver": "^5.3.0", + "semver": "^5.5.1", "strip-ansi": "^4.0.0", - "strip-json-comments": "~2.0.1", - "table": "4.0.2", - "text-table": "~0.2.0" + "strip-json-comments": "^2.0.1", + "table": "^5.0.2", + "text-table": "^0.2.0" } }, "eslint-config-google": { - "version": "0.9.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/eslint-config-google/-/eslint-config-google-0.9.1.tgz", - "integrity": "sha512-5A83D+lH0PA81QMESKbLJd/a3ic8tPZtwUmqNrxMRo54nfFaUvtt89q/+icQ+fd66c2xQHn0KyFkzJDoAUfpZA==", + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.11.0.tgz", + "integrity": "sha512-z541Fs5TFaY7/35v/z100InQ2f3V2J7e3u/0yKrnImgsHjh6JWgSRngfC/mZepn/+XN16jUydt64k//kxXc1fw==", "dev": true }, "eslint-plugin-prettier": { - "version": "2.7.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/eslint-plugin-prettier/-/eslint-plugin-prettier-2.7.0.tgz", - "integrity": "sha512-CStQYJgALoQBw3FsBzH0VOVDRnJ/ZimUlpLm226U8qgqYJfPOY/CPK6wyRInMxh73HSKg5wyRwdS4BVYYHwokA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.0.0.tgz", + "integrity": "sha512-4g11opzhqq/8+AMmo5Vc2Gn7z9alZ4JqrbZ+D4i8KlSyxeQhZHlmIrY8U9Akf514MoEhogPa87Jgkq87aZ2Ohw==", "dev": true, "requires": { - "fast-diff": "^1.1.1", - "jest-docblock": "^21.0.0" + "prettier-linter-helpers": "^1.0.0" } }, "eslint-scope": { - "version": "3.7.3", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", + "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==", "dev": true, "requires": { "esrecurse": "^4.1.0", "estraverse": "^4.1.1" } }, + "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 + }, "eslint-visitor-keys": { "version": "1.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", "dev": true }, "espree": { - "version": "3.5.4", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/espree/-/espree-3.5.4.tgz", - "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.0.tgz", + "integrity": "sha512-1MpUfwsdS9MMoN7ZXqAr9e9UKdVHDcvrJpyx7mm1WuQlx/ygErEQBzgi5Nh5qBHIoYweprhtMkTCb9GhcAIcsA==", "dev": true, "requires": { - "acorn": "^5.5.0", - "acorn-jsx": "^3.0.0" + "acorn": "^6.0.2", + "acorn-jsx": "^5.0.0", + "eslint-visitor-keys": "^1.0.0" } }, "esprima": { "version": "4.0.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/esprima/-/esprima-4.0.1.tgz", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, "esquery": { "version": "1.0.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/esquery/-/esquery-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", "dev": true, "requires": { @@ -784,7 +908,7 @@ }, "esrecurse": { "version": "4.2.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/esrecurse/-/esrecurse-4.2.1.tgz", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", "dev": true, "requires": { @@ -793,24 +917,24 @@ }, "estraverse": { "version": "4.2.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/estraverse/-/estraverse-4.2.0.tgz", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", "dev": true }, "esutils": { "version": "2.0.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/esutils/-/esutils-2.0.2.tgz", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", "dev": true }, "execa": { - "version": "0.9.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/execa/-/execa-0.9.0.tgz", - "integrity": "sha512-BbUMBiX4hqiHZUA5+JujIjNb6TyAlp2D5KLheMjMluwOuzcnylDL4AxZYLLn1n2AGB49eSWwyKvvEQoRpnAtmA==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", "dev": true, "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", "is-stream": "^1.1.0", "npm-run-path": "^2.0.0", "p-finally": "^1.0.0", @@ -820,7 +944,7 @@ }, "expand-brackets": { "version": "2.1.4", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/expand-brackets/-/expand-brackets-2.1.4.tgz", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, "requires": { @@ -835,7 +959,7 @@ "dependencies": { "debug": { "version": "2.6.9", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/debug/-/debug-2.6.9.tgz", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { @@ -844,7 +968,7 @@ }, "define-property": { "version": "0.2.5", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/define-property/-/define-property-0.2.5.tgz", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { @@ -853,7 +977,7 @@ }, "extend-shallow": { "version": "2.0.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/extend-shallow/-/extend-shallow-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { @@ -862,7 +986,7 @@ }, "ms": { "version": "2.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/ms/-/ms-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true } @@ -870,7 +994,7 @@ }, "extend-shallow": { "version": "3.0.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/extend-shallow/-/extend-shallow-3.0.2.tgz", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "dev": true, "requires": { @@ -880,7 +1004,7 @@ "dependencies": { "is-extendable": { "version": "1.0.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/is-extendable/-/is-extendable-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, "requires": { @@ -890,19 +1014,19 @@ } }, "external-editor": { - "version": "2.2.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/external-editor/-/external-editor-2.2.0.tgz", - "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", + "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", "dev": true, "requires": { - "chardet": "^0.4.0", - "iconv-lite": "^0.4.17", + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", "tmp": "^0.0.33" } }, "extglob": { "version": "2.0.4", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/extglob/-/extglob-2.0.4.tgz", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, "requires": { @@ -918,7 +1042,7 @@ "dependencies": { "define-property": { "version": "1.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/define-property/-/define-property-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { @@ -927,7 +1051,7 @@ }, "extend-shallow": { "version": "2.0.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/extend-shallow/-/extend-shallow-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { @@ -936,7 +1060,7 @@ }, "is-accessor-descriptor": { "version": "1.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { @@ -945,7 +1069,7 @@ }, "is-data-descriptor": { "version": "1.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { @@ -954,7 +1078,7 @@ }, "is-descriptor": { "version": "1.0.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/is-descriptor/-/is-descriptor-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { @@ -965,38 +1089,43 @@ } } }, - "eyes": { - "version": "0.1.8", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/eyes/-/eyes-0.1.8.tgz", - "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=" - }, "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", "dev": true }, "fast-diff": { "version": "1.2.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/fast-diff/-/fast-diff-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", "dev": true }, "fast-json-stable-stringify": { "version": "2.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", "dev": true }, "fast-levenshtein": { "version": "2.0.6", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, + "fast-safe-stringify": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.6.tgz", + "integrity": "sha512-q8BZ89jjc+mz08rSxROs8VsrBBcn1SIw1kq9NjolL509tkABRk9io01RAjSaEv1Xb2uFLt8VtRiZbGp5H8iDtg==" + }, + "fecha": { + "version": "2.3.3", + "resolved": "http://registry.npmjs.org/fecha/-/fecha-2.3.3.tgz", + "integrity": "sha512-lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg==" + }, "figures": { "version": "2.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/figures/-/figures-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", "dev": true, "requires": { @@ -1005,7 +1134,7 @@ }, "file-entry-cache": { "version": "2.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", "dev": true, "requires": { @@ -1015,7 +1144,7 @@ }, "fill-range": { "version": "4.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/fill-range/-/fill-range-4.0.0.tgz", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { @@ -1027,7 +1156,7 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/extend-shallow/-/extend-shallow-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { @@ -1038,13 +1167,22 @@ }, "find-parent-dir": { "version": "0.3.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/find-parent-dir/-/find-parent-dir-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.0.tgz", "integrity": "sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=", "dev": true }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, "flat-cache": { "version": "1.3.4", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/flat-cache/-/flat-cache-1.3.4.tgz", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", "dev": true, "requires": { @@ -1056,13 +1194,13 @@ }, "for-in": { "version": "1.0.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/for-in/-/for-in-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, "fragment-cache": { "version": "0.2.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/fragment-cache/-/fragment-cache-0.2.1.tgz", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", "dev": true, "requires": { @@ -1077,31 +1215,51 @@ }, "functional-red-black-tree": { "version": "1.0.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, + "g-status": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/g-status/-/g-status-2.0.2.tgz", + "integrity": "sha512-kQoE9qH+T1AHKgSSD0Hkv98bobE90ILQcXAF4wvGgsr7uFqNvwmh8j+Lq3l0RVt3E3HjSbv2B9biEGcEtpHLCA==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "matcher": "^1.0.0", + "simple-git": "^1.85.0" + } + }, "get-own-enumerable-property-symbols": { "version": "3.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz", "integrity": "sha512-CIJYJC4GGF06TakLg8z4GQKvDsx9EMspVxOYih7LerEL/WosUnFIww45CGfxfeKHqlg3twgUrYRT1O3WQqjGCg==", "dev": true }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", "dev": true }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, "get-value": { "version": "2.0.6", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/get-value/-/get-value-2.0.6.tgz", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", "dev": true }, "glob": { "version": "7.1.3", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/glob/-/glob-7.1.3.tgz", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", "dev": true, "requires": { @@ -1115,13 +1273,34 @@ }, "globals": { "version": "11.9.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/globals/-/globals-11.9.0.tgz", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.9.0.tgz", "integrity": "sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg==", "dev": true }, + "globby": { + "version": "6.1.0", + "resolved": "http://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, "graceful-fs": { "version": "4.1.15", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/graceful-fs/-/graceful-fs-4.1.15.tgz", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", "dev": true }, @@ -1138,11 +1317,19 @@ }, "has-ansi": { "version": "2.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/has-ansi/-/has-ansi-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + } } }, "has-flag": { @@ -1153,7 +1340,7 @@ }, "has-value": { "version": "1.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/has-value/-/has-value-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", "dev": true, "requires": { @@ -1164,7 +1351,7 @@ }, "has-values": { "version": "1.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/has-values/-/has-values-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", "dev": true, "requires": { @@ -1174,7 +1361,7 @@ "dependencies": { "kind-of": { "version": "4.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/kind-of/-/kind-of-4.0.0.tgz", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { @@ -1189,20 +1376,33 @@ "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", "dev": true }, + "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==", + "dev": true + }, "husky": { - "version": "0.14.3", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/husky/-/husky-0.14.3.tgz", - "integrity": "sha512-e21wivqHpstpoiWA/Yi8eFti8E+sQDSS53cpJsPptPs295QTOQR0ZwnHo2TXy1XOpZFD9rPOd3NpmqTK6uMLJA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/husky/-/husky-1.2.1.tgz", + "integrity": "sha512-4Ylal3HWhnDvIszuiyLoVrSGI7QLg/ogkNCoHE34c+yZYzb9kBZNrlTOsdw92cGi3cJT8pPb6CdVfxFkLnc8Dg==", "dev": true, "requires": { - "is-ci": "^1.0.10", - "normalize-path": "^1.0.0", - "strip-indent": "^2.0.0" + "cosmiconfig": "^5.0.7", + "execa": "^1.0.0", + "find-up": "^3.0.0", + "get-stdin": "^6.0.0", + "is-ci": "^1.2.1", + "pkg-dir": "^3.0.0", + "please-upgrade-node": "^3.1.1", + "read-pkg": "^4.0.1", + "run-node": "^1.0.0", + "slash": "^2.0.0" } }, "iconv-lite": { "version": "0.4.24", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/iconv-lite/-/iconv-lite-0.4.24.tgz", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "requires": { @@ -1210,14 +1410,14 @@ } }, "ignore": { - "version": "3.3.10", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true }, "import-fresh": { "version": "2.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/import-fresh/-/import-fresh-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", "dev": true, "requires": { @@ -1227,7 +1427,7 @@ "dependencies": { "caller-path": { "version": "2.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/caller-path/-/caller-path-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", "dev": true, "requires": { @@ -1236,7 +1436,7 @@ }, "resolve-from": { "version": "3.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/resolve-from/-/resolve-from-3.0.0.tgz", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", "dev": true } @@ -1244,13 +1444,13 @@ }, "imurmurhash": { "version": "0.1.4", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/imurmurhash/-/imurmurhash-0.1.4.tgz", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, "indent-string": { "version": "3.2.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/indent-string/-/indent-string-3.2.0.tgz", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", "dev": true }, @@ -1270,30 +1470,46 @@ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "inquirer": { - "version": "3.3.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/inquirer/-/inquirer-3.3.0.tgz", - "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.1.tgz", + "integrity": "sha512-088kl3DRT2dLU5riVMKKr1DlImd6X7smDhpXUCkJDCKvTEJeRiXh0G132HG9u5a+6Ylw9plFRY7RuTnwohYSpg==", "dev": true, "requires": { "ansi-escapes": "^3.0.0", "chalk": "^2.0.0", "cli-cursor": "^2.1.0", "cli-width": "^2.0.0", - "external-editor": "^2.0.4", + "external-editor": "^3.0.0", "figures": "^2.0.0", - "lodash": "^4.3.0", + "lodash": "^4.17.10", "mute-stream": "0.0.7", "run-async": "^2.2.0", - "rx-lite": "^4.0.8", - "rx-lite-aggregates": "^4.0.8", + "rxjs": "^6.1.0", "string-width": "^2.1.0", - "strip-ansi": "^4.0.0", + "strip-ansi": "^5.0.0", "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.0.0.tgz", + "integrity": "sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w==", + "dev": true + }, + "strip-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.0.0.tgz", + "integrity": "sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow==", + "dev": true, + "requires": { + "ansi-regex": "^4.0.0" + } + } } }, "is-accessor-descriptor": { "version": "0.1.6", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "resolved": "http://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { @@ -1302,7 +1518,7 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/kind-of/-/kind-of-3.2.2.tgz", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { @@ -1313,19 +1529,28 @@ }, "is-arrayish": { "version": "0.2.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/is-arrayish/-/is-arrayish-0.2.1.tgz", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, "is-buffer": { "version": "1.1.6", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/is-buffer/-/is-buffer-1.1.6.tgz", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "^1.0.0" + } + }, "is-ci": { "version": "1.2.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/is-ci/-/is-ci-1.2.1.tgz", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", "dev": true, "requires": { @@ -1334,7 +1559,7 @@ }, "is-data-descriptor": { "version": "0.1.4", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "resolved": "http://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { @@ -1343,7 +1568,7 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/kind-of/-/kind-of-3.2.2.tgz", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { @@ -1354,7 +1579,7 @@ }, "is-descriptor": { "version": "0.1.6", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/is-descriptor/-/is-descriptor-0.1.6.tgz", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { @@ -1365,7 +1590,7 @@ "dependencies": { "kind-of": { "version": "5.1.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/kind-of/-/kind-of-5.1.0.tgz", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", "dev": true } @@ -1373,31 +1598,31 @@ }, "is-directory": { "version": "0.3.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/is-directory/-/is-directory-0.3.1.tgz", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", "dev": true }, "is-extendable": { "version": "0.1.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/is-extendable/-/is-extendable-0.1.1.tgz", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", "dev": true }, "is-extglob": { "version": "2.1.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/is-extglob/-/is-extglob-2.1.1.tgz", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, "is-glob": { "version": "4.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/is-glob/-/is-glob-4.0.0.tgz", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", "dev": true, "requires": { @@ -1406,7 +1631,7 @@ }, "is-number": { "version": "3.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/is-number/-/is-number-3.0.0.tgz", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { @@ -1415,7 +1640,7 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/kind-of/-/kind-of-3.2.2.tgz", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { @@ -1426,22 +1651,46 @@ }, "is-obj": { "version": "1.0.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/is-obj/-/is-obj-1.0.1.tgz", + "resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", "dev": true }, "is-observable": { "version": "1.1.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/is-observable/-/is-observable-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", "dev": true, "requires": { "symbol-observable": "^1.1.0" } }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "dev": true, + "requires": { + "is-path-inside": "^1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, "is-plain-object": { "version": "2.0.4", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/is-plain-object/-/is-plain-object-2.0.4.tgz", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "requires": { @@ -1450,31 +1699,24 @@ }, "is-promise": { "version": "2.1.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/is-promise/-/is-promise-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", "dev": true }, "is-regexp": { "version": "1.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/is-regexp/-/is-regexp-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", "dev": true }, - "is-resolvable": { - "version": "1.1.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", - "dev": true - }, "is-stream": { "version": "1.1.0", "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" }, "is-windows": { "version": "1.0.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/is-windows/-/is-windows-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true }, @@ -1485,36 +1727,25 @@ }, "isexe": { "version": "2.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/isexe/-/isexe-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, "isobject": { "version": "3.0.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/isobject/-/isobject-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, - "isstream": { - "version": "0.1.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, - "jest-docblock": { - "version": "21.2.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/jest-docblock/-/jest-docblock-21.2.0.tgz", - "integrity": "sha512-5IZ7sY9dBAYSV+YjQ0Ovb540Ku7AO9Z5o2Cg789xj167iQuZ2cG+z0f3Uct6WeYLbU6aQiM2pCs7sZ+4dotydw==", - "dev": true - }, "jest-get-type": { "version": "22.4.3", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/jest-get-type/-/jest-get-type-22.4.3.tgz", + "resolved": "http://registry.npmjs.org/jest-get-type/-/jest-get-type-22.4.3.tgz", "integrity": "sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w==", "dev": true }, "jest-validate": { "version": "23.6.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/jest-validate/-/jest-validate-23.6.0.tgz", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-23.6.0.tgz", "integrity": "sha512-OFKapYxe72yz7agrDAWi8v2WL8GIfVqcbKRCLbRG9PAxtzF9b1SEDdTpytNDN12z2fJynoBwpMpvj2R39plI2A==", "dev": true, "requires": { @@ -1525,14 +1756,14 @@ } }, "js-tokens": { - "version": "3.0.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, "js-yaml": { "version": "3.12.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/js-yaml/-/js-yaml-3.12.0.tgz", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", "dev": true, "requires": { @@ -1542,37 +1773,45 @@ }, "json-parse-better-errors": { "version": "1.0.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true }, "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", "dev": true }, "kind-of": { "version": "6.0.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/kind-of/-/kind-of-6.0.2.tgz", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true }, + "kuler": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-1.0.1.tgz", + "integrity": "sha512-J9nVUucG1p/skKul6DU3PUZrhs0LPulNaeUOox0IyXDi8S4CztTHs1gQphhuZmzXG7VOQSf6NJfKuzteQLv9gQ==", + "requires": { + "colornames": "^1.1.1" + } + }, "leven": { "version": "2.1.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/leven/-/leven-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", "dev": true }, "levn": { "version": "0.3.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/levn/-/levn-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", "dev": true, "requires": { @@ -1581,22 +1820,25 @@ } }, "lint-staged": { - "version": "7.3.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/lint-staged/-/lint-staged-7.3.0.tgz", - "integrity": "sha512-AXk40M9DAiPi7f4tdJggwuKIViUplYtVj1os1MVEteW7qOkU50EOehayCfO9TsoGK24o/EsWb41yrEgfJDDjCw==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-8.1.0.tgz", + "integrity": "sha512-yfSkyJy7EuVsaoxtUSEhrD81spdJOe/gMTGea3XaV7HyoRhTb9Gdlp6/JppRZERvKSEYXP9bjcmq6CA5oL2lYQ==", "dev": true, "requires": { + "@iamstarkov/listr-update-renderer": "0.4.1", "chalk": "^2.3.1", "commander": "^2.14.1", - "cosmiconfig": "^5.0.2", + "cosmiconfig": "5.0.6", "debug": "^3.1.0", "dedent": "^0.7.0", - "execa": "^0.9.0", + "del": "^3.0.0", + "execa": "^1.0.0", "find-parent-dir": "^0.3.0", + "g-status": "^2.0.2", "is-glob": "^4.0.0", "is-windows": "^1.0.2", "jest-validate": "^23.5.0", - "listr": "^0.14.1", + "listr": "^0.14.2", "lodash": "^4.17.5", "log-symbols": "^2.2.0", "micromatch": "^3.1.8", @@ -1605,14 +1847,36 @@ "path-is-inside": "^1.0.2", "pify": "^3.0.0", "please-upgrade-node": "^3.0.2", - "staged-git-files": "1.1.1", + "staged-git-files": "1.1.2", "string-argv": "^0.0.2", "stringify-object": "^3.2.2" + }, + "dependencies": { + "cosmiconfig": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.0.6.tgz", + "integrity": "sha512-6DWfizHriCrFWURP1/qyhsiFvYdlJzbCzmtFWh744+KyWsJo5+kPzUZZaMRSSItoYc0pxFX7gEO7ZC1/gN/7AQ==", + "dev": true, + "requires": { + "is-directory": "^0.3.1", + "js-yaml": "^3.9.0", + "parse-json": "^4.0.0" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } } }, "listr": { "version": "0.14.3", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/listr/-/listr-0.14.3.tgz", + "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz", "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==", "dev": true, "requires": { @@ -1629,7 +1893,7 @@ "dependencies": { "p-map": { "version": "2.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/p-map/-/p-map-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.0.0.tgz", "integrity": "sha512-GO107XdrSUmtHxVoi60qc9tUl/KkNKm+X2CF4P9amalpGxv5YqVPJNfSb0wcA+syCopkZvYYIzW8OVTQW59x/w==", "dev": true } @@ -1637,13 +1901,13 @@ }, "listr-silent-renderer": { "version": "1.1.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=", "dev": true }, "listr-update-renderer": { "version": "0.5.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz", + "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz", "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==", "dev": true, "requires": { @@ -1657,9 +1921,21 @@ "strip-ansi": "^3.0.1" }, "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "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://nexus.brightalgo.tech/repository/npm-registry/chalk/-/chalk-1.1.3.tgz", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -1672,7 +1948,7 @@ }, "figures": { "version": "1.7.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/figures/-/figures-1.7.0.tgz", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", "dev": true, "requires": { @@ -1682,7 +1958,7 @@ }, "log-symbols": { "version": "1.0.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/log-symbols/-/log-symbols-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", "dev": true, "requires": { @@ -1691,18 +1967,24 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { "ansi-regex": "^2.0.0" } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "http://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true } } }, "listr-verbose-renderer": { "version": "0.5.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz", + "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz", "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==", "dev": true, "requires": { @@ -1712,6 +1994,16 @@ "figures": "^2.0.0" } }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, "lodash": { "version": "4.17.11", "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/lodash/-/lodash-4.17.11.tgz", @@ -1719,7 +2011,7 @@ }, "log-symbols": { "version": "2.2.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/log-symbols/-/log-symbols-2.2.0.tgz", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", "dev": true, "requires": { @@ -1728,7 +2020,7 @@ }, "log-update": { "version": "2.3.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/log-update/-/log-update-2.3.0.tgz", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz", "integrity": "sha1-iDKP19HOeTiykoN0bwsbwSayRwg=", "dev": true, "requires": { @@ -1737,34 +2029,45 @@ "wrap-ansi": "^3.0.1" } }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, + "logform": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/logform/-/logform-1.10.0.tgz", + "integrity": "sha512-em5ojIhU18fIMOw/333mD+ZLE2fis0EzXl1ZwHx4iQzmpQi6odNiY/t+ITNr33JZhT9/KEaH+UPIipr6a9EjWg==", "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "colors": "^1.2.1", + "fast-safe-stringify": "^2.0.4", + "fecha": "^2.3.3", + "ms": "^2.1.1", + "triple-beam": "^1.2.0" } }, "map-cache": { "version": "0.2.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/map-cache/-/map-cache-0.2.2.tgz", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", "dev": true }, "map-visit": { "version": "1.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/map-visit/-/map-visit-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", "dev": true, "requires": { "object-visit": "^1.0.0" } }, + "matcher": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-1.1.1.tgz", + "integrity": "sha512-+BmqxWIubKTRKNWx/ahnCkk3mG8m7OturVlqq6HiojGJTd5hVYbgZm6WzcYPCoB+KBT4Vd6R7WSRG2OADNaCjg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.4" + } + }, "micromatch": { "version": "3.1.10", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/micromatch/-/micromatch-3.1.10.tgz", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, "requires": { @@ -1785,7 +2088,7 @@ }, "mimic-fn": { "version": "1.2.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/mimic-fn/-/mimic-fn-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", "dev": true }, @@ -1806,7 +2109,7 @@ }, "mixin-deep": { "version": "1.3.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/mixin-deep/-/mixin-deep-1.3.1.tgz", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", "dev": true, "requires": { @@ -1816,7 +2119,7 @@ "dependencies": { "is-extendable": { "version": "1.0.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/is-extendable/-/is-extendable-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, "requires": { @@ -1902,18 +2205,17 @@ "ms": { "version": "2.1.1", "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" }, "mute-stream": { "version": "0.0.7", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/mute-stream/-/mute-stream-0.0.7.tgz", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", "dev": true }, "nanomatch": { "version": "1.2.13", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/nanomatch/-/nanomatch-1.2.13.tgz", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", "dev": true, "requires": { @@ -1932,19 +2234,31 @@ }, "natural-compare": { "version": "1.4.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/natural-compare/-/natural-compare-1.4.0.tgz", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, - "normalize-path": { - "version": "1.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/normalize-path/-/normalize-path-1.0.0.tgz", - "integrity": "sha1-MtDkcvkf80VwHBWoMRAY07CpA3k=", + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, "npm-path": { "version": "2.0.4", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/npm-path/-/npm-path-2.0.4.tgz", + "resolved": "https://registry.npmjs.org/npm-path/-/npm-path-2.0.4.tgz", "integrity": "sha512-IFsj0R9C7ZdR5cP+ET342q77uSRdtWOlWpih5eC+lu29tIDbNEgDbzgVJ5UFvYHWhxDZ5TFkJafFioO0pPQjCw==", "dev": true, "requires": { @@ -1953,7 +2267,7 @@ }, "npm-run-path": { "version": "2.0.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/npm-run-path/-/npm-run-path-2.0.2.tgz", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "dev": true, "requires": { @@ -1962,7 +2276,7 @@ }, "npm-which": { "version": "3.0.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/npm-which/-/npm-which-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/npm-which/-/npm-which-3.0.1.tgz", "integrity": "sha1-kiXybsOihcIJyuZ8OxGmtKtxQKo=", "dev": true, "requires": { @@ -1973,19 +2287,19 @@ }, "number-is-nan": { "version": "1.0.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/number-is-nan/-/number-is-nan-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, "object-assign": { "version": "4.1.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/object-assign/-/object-assign-4.1.1.tgz", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, "object-copy": { "version": "0.1.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/object-copy/-/object-copy-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", "dev": true, "requires": { @@ -1996,7 +2310,7 @@ "dependencies": { "define-property": { "version": "0.2.5", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/define-property/-/define-property-0.2.5.tgz", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { @@ -2005,7 +2319,7 @@ }, "kind-of": { "version": "3.2.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/kind-of/-/kind-of-3.2.2.tgz", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { @@ -2016,7 +2330,7 @@ }, "object-visit": { "version": "1.0.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/object-visit/-/object-visit-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", "dev": true, "requires": { @@ -2025,7 +2339,7 @@ }, "object.pick": { "version": "1.3.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/object.pick/-/object.pick-1.3.0.tgz", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", "dev": true, "requires": { @@ -2041,9 +2355,14 @@ "wrappy": "1" } }, + "one-time": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-0.0.4.tgz", + "integrity": "sha1-+M33eISCb+Tf+T46nMN7HkSAdC4=" + }, "onetime": { "version": "2.0.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/onetime/-/onetime-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", "dev": true, "requires": { @@ -2052,7 +2371,7 @@ }, "optionator": { "version": "0.8.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/optionator/-/optionator-0.8.2.tgz", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", "dev": true, "requires": { @@ -2066,25 +2385,49 @@ }, "os-tmpdir": { "version": "1.0.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "resolved": "http://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, "p-finally": { "version": "1.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/p-finally/-/p-finally-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", "dev": true }, + "p-limit": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", + "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, "p-map": { "version": "1.2.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/p-map/-/p-map-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", "dev": true }, + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true + }, "parse-json": { "version": "4.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/parse-json/-/parse-json-4.0.0.tgz", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "dev": true, "requires": { @@ -2094,10 +2437,16 @@ }, "pascalcase": { "version": "0.1.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/pascalcase/-/pascalcase-0.1.1.tgz", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", "dev": true }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -2106,25 +2455,49 @@ }, "path-is-inside": { "version": "1.0.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/path-is-inside/-/path-is-inside-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", "dev": true }, "path-key": { "version": "2.0.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/path-key/-/path-key-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", "dev": true }, "pify": { "version": "3.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/pify/-/pify-3.0.0.tgz", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, "please-upgrade-node": { "version": "3.1.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/please-upgrade-node/-/please-upgrade-node-3.1.1.tgz", + "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.1.1.tgz", "integrity": "sha512-KY1uHnQ2NlQHqIJQpnh/i54rKkuxCEBx+voJIS/Mvb+L2iYd2NMotwduhKTMjfC1uKoX3VXOxLjIYG66dfJTVQ==", "dev": true, "requires": { @@ -2133,19 +2506,19 @@ }, "pluralize": { "version": "7.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/pluralize/-/pluralize-7.0.0.tgz", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", "dev": true }, "posix-character-classes": { "version": "0.1.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", "dev": true }, "prelude-ls": { "version": "1.1.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/prelude-ls/-/prelude-ls-1.1.2.tgz", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", "dev": true }, @@ -2155,31 +2528,23 @@ "integrity": "sha512-gAU9AGAPMaKb3NNSUUuhhFAS7SCO4ALTN4nRIn6PJ075Qd28Yn2Ig2ahEJWdJwJmlEBTUfC7mMUSFy8MwsOCfg==", "dev": true }, + "prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "requires": { + "fast-diff": "^1.1.2" + } + }, "pretty-format": { "version": "23.6.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/pretty-format/-/pretty-format-23.6.0.tgz", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-23.6.0.tgz", "integrity": "sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw==", "dev": true, "requires": { "ansi-regex": "^3.0.0", "ansi-styles": "^3.2.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - } } }, "process-nextick-args": { @@ -2189,16 +2554,37 @@ }, "progress": { "version": "2.0.3", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/progress/-/progress-2.0.3.tgz", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, + "read-pkg": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz", + "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=", + "dev": true, + "requires": { + "normalize-package-data": "^2.3.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0" + } + }, "readable-stream": { "version": "2.3.6", "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/readable-stream/-/readable-stream-2.3.6.tgz", @@ -2215,7 +2601,7 @@ }, "regex-not": { "version": "1.0.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/regex-not/-/regex-not-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", "dev": true, "requires": { @@ -2224,26 +2610,26 @@ } }, "regexpp": { - "version": "1.1.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/regexpp/-/regexpp-1.1.0.tgz", - "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", "dev": true }, "repeat-element": { "version": "1.1.3", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/repeat-element/-/repeat-element-1.1.3.tgz", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", "dev": true }, "repeat-string": { "version": "1.6.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/repeat-string/-/repeat-string-1.6.1.tgz", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, "require-uncached": { "version": "1.0.3", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/require-uncached/-/require-uncached-1.0.3.tgz", + "resolved": "http://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", "dev": true, "requires": { @@ -2253,19 +2639,19 @@ }, "resolve-from": { "version": "1.0.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/resolve-from/-/resolve-from-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", "dev": true }, "resolve-url": { "version": "0.2.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/resolve-url/-/resolve-url-0.2.1.tgz", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", "dev": true }, "restore-cursor": { "version": "2.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/restore-cursor/-/restore-cursor-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", "dev": true, "requires": { @@ -2275,13 +2661,13 @@ }, "ret": { "version": "0.1.15", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/ret/-/ret-0.1.15.tgz", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", "dev": true }, "rimraf": { "version": "2.6.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/rimraf/-/rimraf-2.6.2.tgz", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "dev": true, "requires": { @@ -2290,31 +2676,22 @@ }, "run-async": { "version": "2.3.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/run-async/-/run-async-2.3.0.tgz", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", "dev": true, "requires": { "is-promise": "^2.1.0" } }, - "rx-lite": { - "version": "4.0.8", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/rx-lite/-/rx-lite-4.0.8.tgz", - "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", + "run-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/run-node/-/run-node-1.0.0.tgz", + "integrity": "sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A==", "dev": true }, - "rx-lite-aggregates": { - "version": "4.0.8", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", - "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", - "dev": true, - "requires": { - "rx-lite": "*" - } - }, "rxjs": { "version": "6.3.3", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/rxjs/-/rxjs-6.3.3.tgz", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.3.tgz", "integrity": "sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==", "dev": true, "requires": { @@ -2328,7 +2705,7 @@ }, "safe-regex": { "version": "1.1.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/safe-regex/-/safe-regex-1.1.0.tgz", + "resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "dev": true, "requires": { @@ -2337,25 +2714,25 @@ }, "safer-buffer": { "version": "2.1.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/safer-buffer/-/safer-buffer-2.1.2.tgz", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, "semver": { "version": "5.6.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/semver/-/semver-5.6.0.tgz", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", "dev": true }, "semver-compare": { "version": "1.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/semver-compare/-/semver-compare-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", "dev": true }, "set-value": { "version": "2.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/set-value/-/set-value-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", "dev": true, "requires": { @@ -2367,7 +2744,7 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/extend-shallow/-/extend-shallow-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { @@ -2378,7 +2755,7 @@ }, "shebang-command": { "version": "1.2.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/shebang-command/-/shebang-command-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "dev": true, "requires": { @@ -2387,28 +2764,60 @@ }, "shebang-regex": { "version": "1.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/shebang-regex/-/shebang-regex-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, "signal-exit": { "version": "3.0.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/signal-exit/-/signal-exit-3.0.2.tgz", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, + "simple-git": { + "version": "1.107.0", + "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-1.107.0.tgz", + "integrity": "sha512-t4OK1JRlp4ayKRfcW6owrWcRVLyHRUlhGd0uN6ZZTqfDq8a5XpcUdOKiGRNobHEuMtNqzp0vcJNvhYWwh5PsQA==", + "dev": true, + "requires": { + "debug": "^4.0.1" + } + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + } + } + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, "slice-ansi": { - "version": "1.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/slice-ansi/-/slice-ansi-1.0.0.tgz", - "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.0.0.tgz", + "integrity": "sha512-4j2WTWjp3GsZ+AOagyzVbzp4vWGtZ0hEZ/gDY/uTvm6MTxUfTUIsnMIFb1bn8o0RuXiqUw15H1bue8f22Vw2oQ==", "dev": true, "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", "is-fullwidth-code-point": "^2.0.0" } }, "snapdragon": { "version": "0.8.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/snapdragon/-/snapdragon-0.8.2.tgz", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", "dev": true, "requires": { @@ -2424,7 +2833,7 @@ "dependencies": { "debug": { "version": "2.6.9", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/debug/-/debug-2.6.9.tgz", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { @@ -2433,7 +2842,7 @@ }, "define-property": { "version": "0.2.5", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/define-property/-/define-property-0.2.5.tgz", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { @@ -2442,7 +2851,7 @@ }, "extend-shallow": { "version": "2.0.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/extend-shallow/-/extend-shallow-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { @@ -2451,7 +2860,7 @@ }, "ms": { "version": "2.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/ms/-/ms-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true } @@ -2459,7 +2868,7 @@ }, "snapdragon-node": { "version": "2.1.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", "dev": true, "requires": { @@ -2470,7 +2879,7 @@ "dependencies": { "define-property": { "version": "1.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/define-property/-/define-property-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { @@ -2479,7 +2888,7 @@ }, "is-accessor-descriptor": { "version": "1.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { @@ -2488,7 +2897,7 @@ }, "is-data-descriptor": { "version": "1.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { @@ -2497,7 +2906,7 @@ }, "is-descriptor": { "version": "1.0.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/is-descriptor/-/is-descriptor-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { @@ -2510,7 +2919,7 @@ }, "snapdragon-util": { "version": "3.0.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", "dev": true, "requires": { @@ -2519,7 +2928,7 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/kind-of/-/kind-of-3.2.2.tgz", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { @@ -2530,13 +2939,13 @@ }, "source-map": { "version": "0.5.7", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/source-map/-/source-map-0.5.7.tgz", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, "source-map-resolve": { "version": "0.5.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", "dev": true, "requires": { @@ -2549,13 +2958,45 @@ }, "source-map-url": { "version": "0.4.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/source-map-url/-/source-map-url-0.4.0.tgz", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", "dev": true }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz", + "integrity": "sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g==", + "dev": true + }, "split-string": { "version": "3.1.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/split-string/-/split-string-3.1.0.tgz", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", "dev": true, "requires": { @@ -2564,7 +3005,7 @@ }, "sprintf-js": { "version": "1.0.3", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/sprintf-js/-/sprintf-js-1.0.3.tgz", + "resolved": "http://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, @@ -2574,14 +3015,14 @@ "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" }, "staged-git-files": { - "version": "1.1.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/staged-git-files/-/staged-git-files-1.1.1.tgz", - "integrity": "sha512-H89UNKr1rQJvI1c/PIR3kiAMBV23yvR7LItZiV74HWZwzt7f3YHuujJ9nJZlt58WlFox7XQsOahexwk7nTe69A==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/staged-git-files/-/staged-git-files-1.1.2.tgz", + "integrity": "sha512-0Eyrk6uXW6tg9PYkhi/V/J4zHp33aNyi2hOCmhFLqLTIhbgqWn5jlSzI+IU0VqrZq6+DbHcabQl/WP6P3BG0QA==", "dev": true }, "static-extend": { "version": "0.1.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/static-extend/-/static-extend-0.1.2.tgz", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", "dev": true, "requires": { @@ -2591,7 +3032,7 @@ "dependencies": { "define-property": { "version": "0.2.5", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/define-property/-/define-property-0.2.5.tgz", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { @@ -2602,13 +3043,13 @@ }, "string-argv": { "version": "0.0.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/string-argv/-/string-argv-0.0.2.tgz", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.0.2.tgz", "integrity": "sha1-2sMECGkMIfPDYwo/86BYd73L1zY=", "dev": true }, "string-width": { "version": "2.1.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/string-width/-/string-width-2.1.1.tgz", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { @@ -2626,7 +3067,7 @@ }, "stringify-object": { "version": "3.3.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/stringify-object/-/stringify-object-3.3.0.tgz", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", "dev": true, "requires": { @@ -2637,80 +3078,72 @@ }, "strip-ansi": { "version": "4.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/strip-ansi/-/strip-ansi-4.0.0.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { "ansi-regex": "^3.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - } } }, "strip-eof": { "version": "1.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/strip-eof/-/strip-eof-1.0.0.tgz", + "resolved": "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, - "strip-indent": { - "version": "2.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/strip-indent/-/strip-indent-2.0.0.tgz", - "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", - "dev": true - }, "strip-json-comments": { "version": "2.0.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true }, "supports-color": { - "version": "2.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } }, "symbol-observable": { "version": "1.2.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/symbol-observable/-/symbol-observable-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", "dev": true }, "table": { - "version": "4.0.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/table/-/table-4.0.2.tgz", - "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/table/-/table-5.1.1.tgz", + "integrity": "sha512-NUjapYb/qd4PeFW03HnAuOJ7OMcBkJlqeClWxeNlQ0lXGSb52oZXGzkO0/I0ARegQ2eUT1g2VDJH0eUxDRcHmw==", "dev": true, "requires": { - "ajv": "^5.2.3", - "ajv-keywords": "^2.1.0", - "chalk": "^2.1.0", - "lodash": "^4.17.4", - "slice-ansi": "1.0.0", + "ajv": "^6.6.1", + "lodash": "^4.17.11", + "slice-ansi": "2.0.0", "string-width": "^2.1.1" } }, + "text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==" + }, "text-table": { "version": "0.2.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/text-table/-/text-table-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, "through": { "version": "2.3.8", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/through/-/through-2.3.8.tgz", + "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, "tmp": { "version": "0.0.33", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/tmp/-/tmp-0.0.33.tgz", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, "requires": { @@ -2719,7 +3152,7 @@ }, "to-object-path": { "version": "0.3.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/to-object-path/-/to-object-path-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", "dev": true, "requires": { @@ -2728,7 +3161,7 @@ "dependencies": { "kind-of": { "version": "3.2.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/kind-of/-/kind-of-3.2.2.tgz", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { @@ -2739,7 +3172,7 @@ }, "to-regex": { "version": "3.0.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/to-regex/-/to-regex-3.0.2.tgz", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", "dev": true, "requires": { @@ -2751,7 +3184,7 @@ }, "to-regex-range": { "version": "2.1.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/to-regex-range/-/to-regex-range-2.1.1.tgz", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "dev": true, "requires": { @@ -2766,28 +3199,22 @@ }, "tslib": { "version": "1.9.3", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/tslib/-/tslib-1.9.3.tgz", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", "dev": true }, "type-check": { "version": "0.3.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/type-check/-/type-check-0.3.2.tgz", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", "dev": true, "requires": { "prelude-ls": "~1.1.2" } }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, "union-value": { "version": "1.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/union-value/-/union-value-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", "dev": true, "requires": { @@ -2799,7 +3226,7 @@ "dependencies": { "extend-shallow": { "version": "2.0.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/extend-shallow/-/extend-shallow-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { @@ -2808,7 +3235,7 @@ }, "set-value": { "version": "0.4.3", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/set-value/-/set-value-0.4.3.tgz", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", "dev": true, "requires": { @@ -2822,7 +3249,7 @@ }, "unset-value": { "version": "1.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/unset-value/-/unset-value-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", "dev": true, "requires": { @@ -2832,7 +3259,7 @@ "dependencies": { "has-value": { "version": "0.3.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/has-value/-/has-value-0.3.1.tgz", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", "dev": true, "requires": { @@ -2843,7 +3270,7 @@ "dependencies": { "isobject": { "version": "2.1.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/isobject/-/isobject-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", "dev": true, "requires": { @@ -2854,21 +3281,30 @@ }, "has-values": { "version": "0.1.4", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/has-values/-/has-values-0.1.4.tgz", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", "dev": true } } }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, "urix": { "version": "0.1.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/urix/-/urix-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", "dev": true }, "use": { "version": "3.1.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/use/-/use-3.1.1.tgz", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", "dev": true }, @@ -2877,9 +3313,19 @@ "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, "which": { "version": "1.3.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/which/-/which-1.3.1.tgz", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, "requires": { @@ -2887,22 +3333,25 @@ } }, "winston": { - "version": "2.4.4", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/winston/-/winston-2.4.4.tgz", - "integrity": "sha512-NBo2Pepn4hK4V01UfcWcDlmiVTs7VTB1h7bgnB0rgP146bYhMxX0ypCz3lBOfNxCO4Zuek7yeT+y/zM1OfMw4Q==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.1.0.tgz", + "integrity": "sha512-FsQfEE+8YIEeuZEYhHDk5cILo1HOcWkGwvoidLrDgPog0r4bser1lEIOco2dN9zpDJ1M88hfDgZvxe5z4xNcwg==", "requires": { - "async": "~1.0.0", - "colors": "1.0.x", - "cycle": "1.0.x", - "eyes": "0.1.x", - "isstream": "0.1.x", - "stack-trace": "0.0.x" + "async": "^2.6.0", + "diagnostics": "^1.1.1", + "is-stream": "^1.1.0", + "logform": "^1.9.1", + "one-time": "0.0.4", + "readable-stream": "^2.3.6", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.2.0" } }, "winston-transport": { - "version": "4.2.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/winston-transport/-/winston-transport-4.2.0.tgz", - "integrity": "sha512-0R1bvFqxSlK/ZKTH86nymOuKv/cT1PQBMuDdA7k7f0S9fM44dNH6bXnuxwXPrN8lefJgtZq08BKdyZ0DZIy/rg==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.3.0.tgz", + "integrity": "sha512-B2wPuwUi3vhzn/51Uukcao4dIduEiPOcOt9HJ3QeaXgkJ5Z7UwpBzxS4ZGNHtrxrUvTwemsQiSys0ihOf8Mp1A==", "requires": { "readable-stream": "^2.3.6", "triple-beam": "^1.2.0" @@ -2910,13 +3359,13 @@ }, "wordwrap": { "version": "1.0.0", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/wordwrap/-/wordwrap-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", "dev": true }, "wrap-ansi": { "version": "3.0.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/wrap-ansi/-/wrap-ansi-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", "integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=", "dev": true, "requires": { @@ -2932,18 +3381,12 @@ }, "write": { "version": "0.2.1", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/write/-/write-0.2.1.tgz", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", "dev": true, "requires": { "mkdirp": "^0.5.1" } - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://nexus.brightalgo.tech/repository/npm-registry/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true } } } diff --git a/package.json b/package.json index 1085690..7df451e 100644 --- a/package.json +++ b/package.json @@ -41,15 +41,15 @@ "dependencies": { "graylog2": "^0.2.1", "lodash": "^4.17.5", - "winston": "^2.4.0", - "winston-transport": "^4.2.0" + "winston": "^3.1.0", + "winston-transport": "^4.3.0" }, "devDependencies": { - "eslint": "^4.19.1", - "eslint-config-google": "^0.9.1", - "eslint-plugin-prettier": "^2.6.0", - "husky": "^0.14.3", - "lint-staged": "^7.2.2", + "eslint": "^5.11.1", + "eslint-config-google": "^0.11.0", + "eslint-plugin-prettier": "^3.0.0", + "husky": "^1.2.1", + "lint-staged": "^8.1.0", "mocha": "*", "prettier": "^1.11.1" }, From 486a2f5e53c805e4a25259034148ea98ce510ca8 Mon Sep 17 00:00:00 2001 From: Jeremy Jackson Date: Thu, 27 Dec 2018 10:16:57 -0700 Subject: [PATCH 02/29] Corrected linting errors for `prefer-const`. --- .gitignore | 3 ++- lib/winston-graylog2.js | 6 +++--- test/winston-graylog2-test.js | 36 +++++++++++++++++------------------ 3 files changed, 23 insertions(+), 22 deletions(-) diff --git a/.gitignore b/.gitignore index 6ccd6ad..e9cc2b7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ node_modules .svn -npm-debug.log \ No newline at end of file +npm-debug.log +*.swp diff --git a/lib/winston-graylog2.js b/lib/winston-graylog2.js index 125902d..f2bd410 100644 --- a/lib/winston-graylog2.js +++ b/lib/winston-graylog2.js @@ -11,8 +11,8 @@ const _ = require('lodash'); * @param {String} winstonLevel * @return {String} */ -let getMessageLevel = (function() { - let levels = { +const getMessageLevel = (function() { + const levels = { emerg: 'emergency', alert: 'alert', crit: 'critical', @@ -60,7 +60,7 @@ function prepareMeta(meta, staticMeta) { return meta; } -let Graylog2 = (winston.Graylog2 = function(options) { +const Graylog2 = (winston.Graylog2 = function(options) { winston.call(this, options); options = options || {}; diff --git a/test/winston-graylog2-test.js b/test/winston-graylog2-test.js index 45ee2f4..b485ea1 100644 --- a/test/winston-graylog2-test.js +++ b/test/winston-graylog2-test.js @@ -7,7 +7,7 @@ const WinstonGraylog2 = require('../lib/winston-graylog2.js'); describe('winstone-graylog2', function() { describe('Creating the trasport', function() { it('should have default properties when instantiated', function() { - let winstonGraylog2 = new WinstonGraylog2(); + const winstonGraylog2 = new WinstonGraylog2(); assert.ok(winstonGraylog2.name === 'graylog2'); assert.ok(winstonGraylog2.level === undefined); @@ -24,7 +24,7 @@ describe('winstone-graylog2', function() { }); it('should allow properties to be set when instantiated', function() { - let options = { + const options = { name: 'not-default', level: 'not-default', graylog: { @@ -36,7 +36,7 @@ describe('winstone-graylog2', function() { ], }, }; - let winstonGraylog2 = new WinstonGraylog2(options); + const winstonGraylog2 = new WinstonGraylog2(options); assert.ok(winstonGraylog2.name === options.name); assert.ok(winstonGraylog2.level === options.level); @@ -44,29 +44,29 @@ describe('winstone-graylog2', function() { }); it('should allow Winston properties to be set when instantiated', function() { - let options = { + const options = { handleExceptions: true, exceptionsLevel: 'not-default', }; - let winstonGraylog2 = new WinstonGraylog2(options); + const winstonGraylog2 = new WinstonGraylog2(options); assert.ok(winstonGraylog2.handleExceptions === options.handleExceptions); assert.ok(winstonGraylog2.exceptionsLevel === options.exceptionsLevel); }); it('should have a log function', function() { - let winstonGraylog2 = new WinstonGraylog2(); + const winstonGraylog2 = new WinstonGraylog2(); assert.ok(typeof winstonGraylog2.log === 'function'); }); it('should have prelog function', function() { - let winstonGraylog2 = new WinstonGraylog2(); + const winstonGraylog2 = new WinstonGraylog2(); assert.ok(typeof winstonGraylog2.prelog === 'function'); }); it('should have filter by prelog function', function(done) { - let msg = 'test'; - let winstonGraylog2 = new WinstonGraylog2(); + const msg = 'test'; + const winstonGraylog2 = new WinstonGraylog2(); winstonGraylog2.graylog2.info = function(data) { assert.ok(msg === data); done(); @@ -75,8 +75,8 @@ describe('winstone-graylog2', function() { }); it('should be able to set prelog function', function(done) { - let msg = ' test '; - let winstonGraylog2 = new WinstonGraylog2({ + const msg = ' test '; + const winstonGraylog2 = new WinstonGraylog2({ prelog: function(msg) { return msg.trim(); }, @@ -89,7 +89,7 @@ describe('winstone-graylog2', function() { }); it('can be registered as winston transport', function() { - let logger = new winston.Logger({ + const logger = new winston.Logger({ exitOnError: false, transports: [new WinstonGraylog2()], }); @@ -98,7 +98,7 @@ describe('winstone-graylog2', function() { }); it('can be registered as winston transport using the add() function', function() { - let logger = new winston.Logger({ + const logger = new winston.Logger({ exitOnError: false, transports: [], }); @@ -109,7 +109,7 @@ describe('winstone-graylog2', function() { }); it('should set graylog configuration', function() { - let graylogOptions = { + const graylogOptions = { servers: [ { host: 'somehost', @@ -117,20 +117,20 @@ describe('winstone-graylog2', function() { }, ], }; - let winstonGraylog2 = new WinstonGraylog2({ + const winstonGraylog2 = new WinstonGraylog2({ graylog: graylogOptions, }); assert.deepEqual(winstonGraylog2.graylog, graylogOptions); }); it('should have a processMeta function', function() { - let winstonGraylog2 = new WinstonGraylog2(); + const winstonGraylog2 = new WinstonGraylog2(); assert.ok(typeof winstonGraylog2.processMeta === 'function'); }); it('should be able to set the processMeta function', function() { - let extension = {foo: 'bar'}; - let winstonGraylog2 = new WinstonGraylog2({ + const extension = {foo: 'bar'}; + const winstonGraylog2 = new WinstonGraylog2({ processMeta: function(meta) { meta.testAttribute = extension; delete meta.baz; From 94fb8bb84080851c62eb5a9cfeb7a229ab26b76f Mon Sep 17 00:00:00 2001 From: Jeremy Jackson Date: Thu, 27 Dec 2018 13:34:37 -0700 Subject: [PATCH 03/29] Updated to use ES6 class and be winston3 compliant. --- lib/winston-graylog2.js | 130 +++++++++++++++++++--------------------- 1 file changed, 63 insertions(+), 67 deletions(-) diff --git a/lib/winston-graylog2.js b/lib/winston-graylog2.js index f2bd410..539ca0a 100644 --- a/lib/winston-graylog2.js +++ b/lib/winston-graylog2.js @@ -1,8 +1,7 @@ 'use strict'; -const util = require('util'); -const winston = require('winston-transport'); -const graylog2 = require('graylog2'); +const Transport = require('winston-transport'); +const {graylog: Graylog2ClientLibrary} = require('graylog2'); const _ = require('lodash'); /** @@ -40,74 +39,71 @@ const getMessageLevel = (function() { * @param {Object} staticMeta * @return {Object} */ -function prepareMeta(meta, staticMeta) { - meta = meta || {}; - - if (meta instanceof Error) { - meta = {error: meta.stack}; - } else if (typeof meta === 'object') { - meta = _.mapValues(meta, function(value) { - if (value instanceof Error) { - return value.stack; - } - - return value; +/** Class representing the Graylog2 Winston Transport */ +class Graylog2 extends Transport { + /** + * Create the transport + * @param {Object} options - The options for configuring the transport. + */ + constructor(options) { + super(options); + + options = options || {}; + this.graylog = _.get(options, 'graylog'); + if (!this.graylog) { + this.graylog = { + servers: [ + { + host: 'localhost', + port: 12201, + }, + ], + }; + } + + this.name = options.name || 'graylog2'; + this.exceptionsLevel = options.exceptionsLevel || 'not-default'; + + this.silent = options.silent || false; + this.handleExceptions = options.handleExceptions || false; + this.prelog = + typeof options.prelog === 'function' ? options.prelog : _.identity; + this.processMeta = + typeof options.processMeta === 'function' + ? options.processMeta + : _.identity; + this.staticMeta = options.staticMeta || {}; + + this.graylog2 = new Graylog2ClientLibrary(this.graylog); + + this.graylog2.on('error', function(error) { + console.error('Error while trying to write to graylog2:', error); }); } - meta = _.merge(meta, staticMeta); - - return meta; -} - -const Graylog2 = (winston.Graylog2 = function(options) { - winston.call(this, options); - - options = options || {}; - this.graylog = _.get(options, 'graylog'); - if (!this.graylog) { - this.graylog = { - servers: [ - { - host: 'localhost', - port: 12201, - }, - ], - }; + /** + * Log a message to Graylog2. + * + * Winston3 only allows the level and message. + * + * Metadata is attached when using `winston.createLogger()`. + * + * Callbacks are no longer supported, but you can instead listen for winston to emit events. + * + * @param {string} level - The log level ('emergency', 'alert', 'critical', 'error', 'warning', 'warning', 'notice', 'info', 'debug'). + * @param {string} msg - The message to send. + */ + log(level, msg) { + msg = this.prelog(msg); + this.graylog2[getMessageLevel(level)](msg.substring(0, 100), msg); } - this.name = options.name || 'graylog2'; - this.exceptionsLevel = options.exceptionsLevel || 'not-default'; - - this.silent = options.silent || false; - this.handleExceptions = options.handleExceptions || false; - this.prelog = - typeof options.prelog === 'function' ? options.prelog : _.identity; - this.processMeta = - typeof options.processMeta === 'function' - ? options.processMeta - : _.identity; - this.staticMeta = options.staticMeta || {}; - - this.graylog2 = new graylog2.graylog(this.graylog); // TODO: Fix in relation to https://eslint.org/docs/rules/new-cap - - this.graylog2.on('error', function(error) { - console.error('Error while trying to write to graylog2:', error); - }); -}); - -util.inherits(Graylog2, winston); - -Graylog2.prototype.log = function(level, msg, meta, callback) { - meta = this.processMeta(prepareMeta(meta, this.staticMeta)); - msg = this.prelog(msg); - - this.graylog2[getMessageLevel(level)](msg.substring(0, 100), msg, meta); - callback(null, true); -}; - -Graylog2.prototype.close = function() { - this.graylog2.close(); -}; + /** + * Closes the Graylog2 Winston Transport. + */ + close() { + this.graylog2.close(); + } +} module.exports = Graylog2; From c4e83a6bf13b8b909342309c6342085185cabdf0 Mon Sep 17 00:00:00 2001 From: Jeremy Jackson Date: Thu, 27 Dec 2018 13:36:31 -0700 Subject: [PATCH 04/29] Updated tests for ES6 & winston3 compliance. Removed inapplicable tests of `processMeta` because metadata is assigned logger level, not the transport level. Also corrected invocation methods and where tests are looking for confirmation that the transport was added to winston. --- test/winston-graylog2-test.js | 34 ++++++---------------------------- 1 file changed, 6 insertions(+), 28 deletions(-) diff --git a/test/winston-graylog2-test.js b/test/winston-graylog2-test.js index b485ea1..2e78145 100644 --- a/test/winston-graylog2-test.js +++ b/test/winston-graylog2-test.js @@ -4,7 +4,7 @@ const assert = require('assert'); const winston = require('winston'); const WinstonGraylog2 = require('../lib/winston-graylog2.js'); -describe('winstone-graylog2', function() { +describe('winston-graylog2', function() { describe('Creating the trasport', function() { it('should have default properties when instantiated', function() { const winstonGraylog2 = new WinstonGraylog2(); @@ -89,23 +89,23 @@ describe('winstone-graylog2', function() { }); it('can be registered as winston transport', function() { - const logger = new winston.Logger({ + const logger = winston.createLogger({ exitOnError: false, transports: [new WinstonGraylog2()], }); - assert.ok(logger.transports.hasOwnProperty('graylog2')); + assert.ok(logger._readableState.pipes.hasOwnProperty('graylog2')); }); it('can be registered as winston transport using the add() function', function() { - const logger = new winston.Logger({ + const logger = winston.createLogger({ exitOnError: false, transports: [], }); - logger.add(WinstonGraylog2); + logger.add(new WinstonGraylog2()); - assert.ok(logger.transports.hasOwnProperty('graylog2')); + assert.ok(logger._readableState.pipes.hasOwnProperty('graylog2')); }); it('should set graylog configuration', function() { @@ -122,27 +122,5 @@ describe('winstone-graylog2', function() { }); assert.deepEqual(winstonGraylog2.graylog, graylogOptions); }); - - it('should have a processMeta function', function() { - const winstonGraylog2 = new WinstonGraylog2(); - assert.ok(typeof winstonGraylog2.processMeta === 'function'); - }); - - it('should be able to set the processMeta function', function() { - const extension = {foo: 'bar'}; - const winstonGraylog2 = new WinstonGraylog2({ - processMeta: function(meta) { - meta.testAttribute = extension; - delete meta.baz; - return meta; - }, - }); - winstonGraylog2.graylog2.info = function(msg, _, meta) { - assert.equal(extension, meta.testAttribute); - assert.equal(undefined, meta.baz); - }; - - winstonGraylog2.log('info', 'alog', {baz: 'boo'}, function() {}); - }); }); }); From 3bceb8deaa2d405a31dd1c40b0095fb713929156 Mon Sep 17 00:00:00 2001 From: Jeremy Jackson Date: Thu, 27 Dec 2018 15:04:37 -0700 Subject: [PATCH 05/29] Updated tests to reflect change to `log()` usage. --- test/winston-graylog2-test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/winston-graylog2-test.js b/test/winston-graylog2-test.js index 2e78145..b2a2164 100644 --- a/test/winston-graylog2-test.js +++ b/test/winston-graylog2-test.js @@ -71,7 +71,7 @@ describe('winston-graylog2', function() { assert.ok(msg === data); done(); }; - winstonGraylog2.log('info', msg, {}, function() {}); + winstonGraylog2.log('info', msg); }); it('should be able to set prelog function', function(done) { @@ -85,7 +85,7 @@ describe('winston-graylog2', function() { assert.ok(data === 'test'); done(); }; - winstonGraylog2.log('info', msg, {}, function() {}); + winstonGraylog2.log('info', msg); }); it('can be registered as winston transport', function() { From 40fa75b3450db8eed7e48f155f3969a5bb38ea4a Mon Sep 17 00:00:00 2001 From: Jeremy Jackson Date: Thu, 27 Dec 2018 15:19:48 -0700 Subject: [PATCH 06/29] prelog and processMeta should be handled by formatters at the winston level. --- lib/winston-graylog2.js | 20 -------------------- test/winston-graylog2-test.js | 29 ----------------------------- 2 files changed, 49 deletions(-) diff --git a/lib/winston-graylog2.js b/lib/winston-graylog2.js index 539ca0a..7d25b6e 100644 --- a/lib/winston-graylog2.js +++ b/lib/winston-graylog2.js @@ -27,18 +27,6 @@ const getMessageLevel = (function() { }; })(); -/** - * Preparing metadata for graylog - * If we send a javascript `Error` object - * to gray log we'll end up with the - * `[object Object]` string. - * To have our infos we need to get the stack out of the error. - * Here we remap metadata to handle this kind of situation - * - * @param {Object} meta - * @param {Object} staticMeta - * @return {Object} - */ /** Class representing the Graylog2 Winston Transport */ class Graylog2 extends Transport { /** @@ -66,13 +54,6 @@ class Graylog2 extends Transport { this.silent = options.silent || false; this.handleExceptions = options.handleExceptions || false; - this.prelog = - typeof options.prelog === 'function' ? options.prelog : _.identity; - this.processMeta = - typeof options.processMeta === 'function' - ? options.processMeta - : _.identity; - this.staticMeta = options.staticMeta || {}; this.graylog2 = new Graylog2ClientLibrary(this.graylog); @@ -94,7 +75,6 @@ class Graylog2 extends Transport { * @param {string} msg - The message to send. */ log(level, msg) { - msg = this.prelog(msg); this.graylog2[getMessageLevel(level)](msg.substring(0, 100), msg); } diff --git a/test/winston-graylog2-test.js b/test/winston-graylog2-test.js index b2a2164..8537f6b 100644 --- a/test/winston-graylog2-test.js +++ b/test/winston-graylog2-test.js @@ -59,35 +59,6 @@ describe('winston-graylog2', function() { assert.ok(typeof winstonGraylog2.log === 'function'); }); - it('should have prelog function', function() { - const winstonGraylog2 = new WinstonGraylog2(); - assert.ok(typeof winstonGraylog2.prelog === 'function'); - }); - - it('should have filter by prelog function', function(done) { - const msg = 'test'; - const winstonGraylog2 = new WinstonGraylog2(); - winstonGraylog2.graylog2.info = function(data) { - assert.ok(msg === data); - done(); - }; - winstonGraylog2.log('info', msg); - }); - - it('should be able to set prelog function', function(done) { - const msg = ' test '; - const winstonGraylog2 = new WinstonGraylog2({ - prelog: function(msg) { - return msg.trim(); - }, - }); - winstonGraylog2.graylog2.info = function(data) { - assert.ok(data === 'test'); - done(); - }; - winstonGraylog2.log('info', msg); - }); - it('can be registered as winston transport', function() { const logger = winston.createLogger({ exitOnError: false, From 4c862fd819ef8e4041f962197c8dee3d7a340a1e Mon Sep 17 00:00:00 2001 From: Jeremy Jackson Date: Thu, 27 Dec 2018 15:45:35 -0700 Subject: [PATCH 07/29] Added log levels as functions. --- lib/winston-graylog2.js | 72 +++++++++++++++++++++++++++++++++++ test/winston-graylog2-test.js | 11 +++++- 2 files changed, 82 insertions(+), 1 deletion(-) diff --git a/lib/winston-graylog2.js b/lib/winston-graylog2.js index 7d25b6e..ebfd0e7 100644 --- a/lib/winston-graylog2.js +++ b/lib/winston-graylog2.js @@ -78,6 +78,78 @@ class Graylog2 extends Transport { this.graylog2[getMessageLevel(level)](msg.substring(0, 100), msg); } + /** + * Log Emergency message + * @param {string} msg - The message to send. + */ + emerg(msg) { + this.graylog2.emergency(msg.substring(0, 100), msg); + } + + /** + * Log Alert message + * @param {string} msg - The message to send. + */ + alert(msg) { + this.graylog2.alert(msg.substring(0, 100), msg); + } + + /** + * Log Critical message + * @param {string} msg - The message to send. + */ + crit(msg) { + this.graylog2.critical(msg.substring(0, 100), msg); + } + + /** + * Log Error message + * @param {string} msg - The message to send. + */ + error(msg) { + this.graylog2.error(msg.substring(0, 100), msg); + } + + /** + * Log Warning message + * @param {string} msg - The message to send. + */ + warning(msg) { + this.graylog2.warning(msg.substring(0, 100), msg); + } + + /** + * Log Warning message + * @param {string} msg - The message to send. + */ + warn(msg) { + this.graylog2.warning(msg.substring(0, 100), msg); + } + + /** + * Log Notice message + * @param {string} msg - The message to send. + */ + notice(msg) { + this.graylog2.info(msg.substring(0, 100), msg); + } + + /** + * Log Info message + * @param {string} msg - The message to send. + */ + info(msg) { + this.graylog2.info(msg.substring(0, 100), msg); + } + + /** + * Log Debug message + * @param {string} msg - The message to send. + */ + debug(msg) { + this.graylog2.debug(msg.substring(0, 100), msg); + } + /** * Closes the Graylog2 Winston Transport. */ diff --git a/test/winston-graylog2-test.js b/test/winston-graylog2-test.js index 8537f6b..f575f3c 100644 --- a/test/winston-graylog2-test.js +++ b/test/winston-graylog2-test.js @@ -54,9 +54,18 @@ describe('winston-graylog2', function() { assert.ok(winstonGraylog2.exceptionsLevel === options.exceptionsLevel); }); - it('should have a log function', function() { + it('should have a log function and functions for each logging level', function() { const winstonGraylog2 = new WinstonGraylog2(); assert.ok(typeof winstonGraylog2.log === 'function'); + assert.ok(typeof winstonGraylog2.emerg === 'function'); + assert.ok(typeof winstonGraylog2.alert === 'function'); + assert.ok(typeof winstonGraylog2.crit === 'function'); + assert.ok(typeof winstonGraylog2.error === 'function'); + assert.ok(typeof winstonGraylog2.warning === 'function'); + assert.ok(typeof winstonGraylog2.warn === 'function'); + assert.ok(typeof winstonGraylog2.notice === 'function'); + assert.ok(typeof winstonGraylog2.info === 'function'); + assert.ok(typeof winstonGraylog2.debug === 'function'); }); it('can be registered as winston transport', function() { From 9ed1a8822fd00dd52dbbb7e8f3ec8b89bc8540ff Mon Sep 17 00:00:00 2001 From: Jeremy Jackson Date: Thu, 27 Dec 2018 16:25:47 -0700 Subject: [PATCH 08/29] Correct the log signature to match Winston 3. --- lib/winston-graylog2.js | 88 +++-------------------------------- test/winston-graylog2-test.js | 9 ---- 2 files changed, 6 insertions(+), 91 deletions(-) diff --git a/lib/winston-graylog2.js b/lib/winston-graylog2.js index ebfd0e7..50f51a2 100644 --- a/lib/winston-graylog2.js +++ b/lib/winston-graylog2.js @@ -65,89 +65,13 @@ class Graylog2 extends Transport { /** * Log a message to Graylog2. * - * Winston3 only allows the level and message. - * - * Metadata is attached when using `winston.createLogger()`. - * - * Callbacks are no longer supported, but you can instead listen for winston to emit events. - * - * @param {string} level - The log level ('emergency', 'alert', 'critical', 'error', 'warning', 'warning', 'notice', 'info', 'debug'). - * @param {string} msg - The message to send. - */ - log(level, msg) { - this.graylog2[getMessageLevel(level)](msg.substring(0, 100), msg); - } - - /** - * Log Emergency message - * @param {string} msg - The message to send. - */ - emerg(msg) { - this.graylog2.emergency(msg.substring(0, 100), msg); - } - - /** - * Log Alert message - * @param {string} msg - The message to send. - */ - alert(msg) { - this.graylog2.alert(msg.substring(0, 100), msg); - } - - /** - * Log Critical message - * @param {string} msg - The message to send. - */ - crit(msg) { - this.graylog2.critical(msg.substring(0, 100), msg); - } - - /** - * Log Error message - * @param {string} msg - The message to send. - */ - error(msg) { - this.graylog2.error(msg.substring(0, 100), msg); - } - - /** - * Log Warning message - * @param {string} msg - The message to send. - */ - warning(msg) { - this.graylog2.warning(msg.substring(0, 100), msg); - } - - /** - * Log Warning message - * @param {string} msg - The message to send. - */ - warn(msg) { - this.graylog2.warning(msg.substring(0, 100), msg); - } - - /** - * Log Notice message - * @param {string} msg - The message to send. - */ - notice(msg) { - this.graylog2.info(msg.substring(0, 100), msg); - } - - /** - * Log Info message - * @param {string} msg - The message to send. - */ - info(msg) { - this.graylog2.info(msg.substring(0, 100), msg); - } - - /** - * Log Debug message - * @param {string} msg - The message to send. + * @param {Object} info - An object containing the `message` and `info`. + * @param {function} callback - Winston's callback to itself. */ - debug(msg) { - this.graylog2.debug(msg.substring(0, 100), msg); + log(info, callback) { + const {message, level} = info; + this.graylog2[getMessageLevel(level)](message.substring(0, 100), message); + callback(); } /** diff --git a/test/winston-graylog2-test.js b/test/winston-graylog2-test.js index f575f3c..891a1b5 100644 --- a/test/winston-graylog2-test.js +++ b/test/winston-graylog2-test.js @@ -57,15 +57,6 @@ describe('winston-graylog2', function() { it('should have a log function and functions for each logging level', function() { const winstonGraylog2 = new WinstonGraylog2(); assert.ok(typeof winstonGraylog2.log === 'function'); - assert.ok(typeof winstonGraylog2.emerg === 'function'); - assert.ok(typeof winstonGraylog2.alert === 'function'); - assert.ok(typeof winstonGraylog2.crit === 'function'); - assert.ok(typeof winstonGraylog2.error === 'function'); - assert.ok(typeof winstonGraylog2.warning === 'function'); - assert.ok(typeof winstonGraylog2.warn === 'function'); - assert.ok(typeof winstonGraylog2.notice === 'function'); - assert.ok(typeof winstonGraylog2.info === 'function'); - assert.ok(typeof winstonGraylog2.debug === 'function'); }); it('can be registered as winston transport', function() { From 71b4f7846cefdd55f755b59d959b01d13d0477b5 Mon Sep 17 00:00:00 2001 From: Jeremy Jackson Date: Thu, 27 Dec 2018 21:22:05 -0700 Subject: [PATCH 09/29] Re-added staticMeta option and updated eslint options. --- .eslintrc.json | 8 ++------ lib/winston-graylog2.js | 9 ++++++++- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 0514e28..0ff4739 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -7,7 +7,6 @@ }, "rules": { "quote-props": ["error", "as-needed"], - "new-cap": ["error", {"properties": false}], // TODO: remove once newcap errors are fixed. "quotes": ["error", "single", { "avoidEscape": true }], "max-len": [ "error", @@ -30,10 +29,7 @@ ] }, "parserOptions": { - "ecmaVersion": 6, - "sourceType": "module", - "ecmaFeatures": { - "experimentalObjectRestSpread": true - } + "ecmaVersion": 2018, + "sourceType": "module" } } diff --git a/lib/winston-graylog2.js b/lib/winston-graylog2.js index 50f51a2..8404669 100644 --- a/lib/winston-graylog2.js +++ b/lib/winston-graylog2.js @@ -55,6 +55,8 @@ class Graylog2 extends Transport { this.silent = options.silent || false; this.handleExceptions = options.handleExceptions || false; + this.staticMeta = options.staticMeta; + this.graylog2 = new Graylog2ClientLibrary(this.graylog); this.graylog2.on('error', function(error) { @@ -70,7 +72,12 @@ class Graylog2 extends Transport { */ log(info, callback) { const {message, level} = info; - this.graylog2[getMessageLevel(level)](message.substring(0, 100), message); + if (this.staticMeta) { + // prettier-ignore + this.graylog2[getMessageLevel(level)]( message.substring(0, 100), message, this.staticMeta); + } else { + this.graylog2[getMessageLevel(level)](message.substring(0, 100), message); + } callback(); } From 1269e175fed0a3bc9ea9130219325927869f90bf Mon Sep 17 00:00:00 2001 From: Jeremy Jackson Date: Thu, 27 Dec 2018 21:43:39 -0700 Subject: [PATCH 10/29] Corrected staticMeta. --- lib/winston-graylog2.js | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/lib/winston-graylog2.js b/lib/winston-graylog2.js index 8404669..32bbcd6 100644 --- a/lib/winston-graylog2.js +++ b/lib/winston-graylog2.js @@ -55,7 +55,7 @@ class Graylog2 extends Transport { this.silent = options.silent || false; this.handleExceptions = options.handleExceptions || false; - this.staticMeta = options.staticMeta; + this.staticMeta = options.staticMeta || {}; this.graylog2 = new Graylog2ClientLibrary(this.graylog); @@ -72,12 +72,8 @@ class Graylog2 extends Transport { */ log(info, callback) { const {message, level} = info; - if (this.staticMeta) { - // prettier-ignore - this.graylog2[getMessageLevel(level)]( message.substring(0, 100), message, this.staticMeta); - } else { - this.graylog2[getMessageLevel(level)](message.substring(0, 100), message); - } + // prettier-ignore + this.graylog2[getMessageLevel(level)]( message.substring(0, 100), message, this.staticMeta); callback(); } From 1fa40b1348ec0815c47ec4868ac50576440343b1 Mon Sep 17 00:00:00 2001 From: Jeremy Jackson Date: Thu, 27 Dec 2018 21:49:14 -0700 Subject: [PATCH 11/29] Updated readme for new usage. --- readme.md | 40 +++++++++++++++++++++++++++------------- 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/readme.md b/readme.md index f376042..cf76860 100644 --- a/readme.md +++ b/readme.md @@ -7,27 +7,40 @@ A [graylog2][0] transport for [winston][1] based on the [node-graylog2][2] Libra ## Installation Tested on node-0.10.x, requires npm. +Recently rewritten to use ES6 for better compatibility with Winston@3, +so please use only with NodeJS >=8. + +If you need to support older versions of Node, please use a version +compatible with `^winston-graylog2@1.1.0`. + ``` sh - $ npm install winston - $ npm install winston-graylog2 +$ npm install winston +$ npm install winston-graylog2 ``` ## Usage ```javascript - var winston = require('winston'); - winston.add(require('winston-graylog2'), options); +var winston = require('winston'); +var WinstonGraylog2 = require('winston-graylog2'); +var options = { ...... }; +winston.add(new winstonGraylog2(options)); ``` or ```javascript +var winston var WinstonGraylog2 = require('winston-graylog2'); -var logger = new(winston.Logger)({ - exitOnError: false, - transports: [new(WinstonGraylog2)(options)] - }); + +var options = { ...... }; +var logger = winston.createLogger({ + exitOnError: false, + transports: [ + new WinstonGraylog2(options), + ], +}); ``` ## Options @@ -37,8 +50,6 @@ var logger = new(winston.Logger)({ * __silent__: Boolean flag indicating whether to suppress output. (default: false) * __handleExceptions__: Boolean flag, whenever to handle uncaught exceptions. (default: false) * __exceptionsLevel__: Level of exceptions logs when handleExceptions is true. (default: error) -* __prelog__: Pre-filtering function, to clean message before sending to graylog2 (default: empty function) -* __processMeta__: Metadata post-filtering function, to clean the metadata (stack traces, process info) before sending them to graylog2 (default: empty function) * __graylog__: - __servers__; list of graylog2 servers * __host__: your server address (default: localhost) @@ -49,6 +60,12 @@ var logger = new(winston.Logger)({ * __staticMeta__: meta data to be always used by each logging message, for instance environment (development, staging, live) +Older versions of `winston-graylog2` allowed the __prelog__ and __processMeta__ options for +pre-processing logs and metadata attached to messages (such as stack traces). Winston 3 has +implemented independent, custom formatters for handling these things, and they are not longer +supported at the transport level. +[See the Winston docs for details on formatters.](https://github.com/winstonjs/winston#formats) + example: ```javascript @@ -57,9 +74,6 @@ example: level: 'debug', silent: false, handleExceptions: false, - prelog: function(msg) { - return msg.trim(); - }, graylog: { servers: [{host: 'localhost', port: 12201}, {host: 'remote.host', port: 12201}], hostname: 'myServer', From e88539d10602fda6be1a1120e9709fecbd35c18c Mon Sep 17 00:00:00 2001 From: Jeremy Jackson Date: Fri, 4 Jan 2019 10:53:10 -0700 Subject: [PATCH 12/29] Changed the `graylog2` property to `graylog2Client`. --- lib/winston-graylog2.js | 11 ++++++----- test/winston-graylog2-test.js | 4 ++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/lib/winston-graylog2.js b/lib/winston-graylog2.js index 50f51a2..c8e9d1e 100644 --- a/lib/winston-graylog2.js +++ b/lib/winston-graylog2.js @@ -1,7 +1,7 @@ 'use strict'; const Transport = require('winston-transport'); -const {graylog: Graylog2ClientLibrary} = require('graylog2'); +const {graylog: Graylog2Client} = require('graylog2'); const _ = require('lodash'); /** @@ -55,9 +55,9 @@ class Graylog2 extends Transport { this.silent = options.silent || false; this.handleExceptions = options.handleExceptions || false; - this.graylog2 = new Graylog2ClientLibrary(this.graylog); + this.graylog2Client = new Graylog2Client(this.graylog); - this.graylog2.on('error', function(error) { + this.graylog2Client.on('error', function(error) { console.error('Error while trying to write to graylog2:', error); }); } @@ -70,7 +70,8 @@ class Graylog2 extends Transport { */ log(info, callback) { const {message, level} = info; - this.graylog2[getMessageLevel(level)](message.substring(0, 100), message); + // prettier-ignore + this.graylog2Client[getMessageLevel(level)](message.substring(0, 100), message); callback(); } @@ -78,7 +79,7 @@ class Graylog2 extends Transport { * Closes the Graylog2 Winston Transport. */ close() { - this.graylog2.close(); + this.graylog2Client.close(); } } diff --git a/test/winston-graylog2-test.js b/test/winston-graylog2-test.js index 891a1b5..a416453 100644 --- a/test/winston-graylog2-test.js +++ b/test/winston-graylog2-test.js @@ -65,7 +65,7 @@ describe('winston-graylog2', function() { transports: [new WinstonGraylog2()], }); - assert.ok(logger._readableState.pipes.hasOwnProperty('graylog2')); + assert.ok(logger._readableState.pipes.hasOwnProperty('graylog2Client')); }); it('can be registered as winston transport using the add() function', function() { @@ -76,7 +76,7 @@ describe('winston-graylog2', function() { logger.add(new WinstonGraylog2()); - assert.ok(logger._readableState.pipes.hasOwnProperty('graylog2')); + assert.ok(logger._readableState.pipes.hasOwnProperty('graylog2Client')); }); it('should set graylog configuration', function() { From cc331d1db73b5d9c209b0da6c1b1c13f6c4fa565 Mon Sep 17 00:00:00 2001 From: Jeremy Jackson Date: Fri, 4 Jan 2019 15:20:53 -0700 Subject: [PATCH 13/29] Change engine to require Node >= 8.0.0 --- package.json | 2 +- readme.md | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/package.json b/package.json index 7df451e..39c6cc8 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "prettier": "^1.11.1" }, "engines": { - "node": ">= 0.10.0" + "node": ">= 8.0.0" }, "keywords": [ "logging", diff --git a/readme.md b/readme.md index cf76860..74abb1d 100644 --- a/readme.md +++ b/readme.md @@ -6,7 +6,6 @@ A [graylog2][0] transport for [winston][1] based on the [node-graylog2][2] Libra ## Installation -Tested on node-0.10.x, requires npm. Recently rewritten to use ES6 for better compatibility with Winston@3, so please use only with NodeJS >=8. From e9e7f178906092f325bb1794192d154c85f54107 Mon Sep 17 00:00:00 2001 From: Jeremy Jackson Date: Fri, 4 Jan 2019 15:38:09 -0700 Subject: [PATCH 14/29] Changed access pattern of `options`, allowing removal of lodash!!! --- lib/winston-graylog2.js | 3 +-- package.json | 1 - 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/winston-graylog2.js b/lib/winston-graylog2.js index 2c89ee7..7a939a2 100644 --- a/lib/winston-graylog2.js +++ b/lib/winston-graylog2.js @@ -2,7 +2,6 @@ const Transport = require('winston-transport'); const {graylog: Graylog2Client} = require('graylog2'); -const _ = require('lodash'); /** * Remapping winston level on graylog @@ -37,7 +36,7 @@ class Graylog2 extends Transport { super(options); options = options || {}; - this.graylog = _.get(options, 'graylog'); + this.graylog = options.graylog; if (!this.graylog) { this.graylog = { servers: [ diff --git a/package.json b/package.json index 39c6cc8..7cf2f83 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,6 @@ ], "dependencies": { "graylog2": "^0.2.1", - "lodash": "^4.17.5", "winston": "^3.1.0", "winston-transport": "^4.3.0" }, From 09403c3c824dddac45b39992a68072dfb60c924a Mon Sep 17 00:00:00 2001 From: Jeremy Jackson Date: Tue, 8 Jan 2019 20:39:42 -0700 Subject: [PATCH 15/29] Added format instructions and metadata handling. Extended the readme to include instructions for using formatters to get behavior that duplicates older version of `winston-graylog2`. Downside is that it requires using logform@^2.1.0, which hasn't been added to base winston yet. Also included a little code for including the metadata in the log output. Lastly, I noticed that the winston documentation suggests wrapping the call to the actual transport client in a setImmediate, so added that. --- lib/winston-graylog2.js | 8 ++++++-- readme.md | 45 +++++++++++++++++++++++++++++++++++++++-- 2 files changed, 49 insertions(+), 4 deletions(-) diff --git a/lib/winston-graylog2.js b/lib/winston-graylog2.js index 7a939a2..8a2c758 100644 --- a/lib/winston-graylog2.js +++ b/lib/winston-graylog2.js @@ -69,9 +69,13 @@ class Graylog2 extends Transport { * @param {function} callback - Winston's callback to itself. */ log(info, callback) { - const {message, level} = info; + const {message, level, ...metadata} = info; + const meta = Object.assign(metadata, this.staticMeta); + // prettier-ignore - this.graylog2Client[getMessageLevel(level)](message.substring(0, 100), message); + setImmediate(() => { + this.graylog2Client[getMessageLevel(level)](message.substring(0, 100), message, meta); + }); callback(); } diff --git a/readme.md b/readme.md index 74abb1d..0cdc44e 100644 --- a/readme.md +++ b/readme.md @@ -6,6 +6,7 @@ A [graylog2][0] transport for [winston][1] based on the [node-graylog2][2] Libra ## Installation +Tested on node-0.10.x, requires npm. Recently rewritten to use ES6 for better compatibility with Winston@3, so please use only with NodeJS >=8. @@ -24,7 +25,7 @@ var winston = require('winston'); var WinstonGraylog2 = require('winston-graylog2'); var options = { ...... }; -winston.add(new winstonGraylog2(options)); +winston.add(new WinstonGraylog2(options)); ``` or @@ -83,6 +84,46 @@ example: } ``` +## Upgrading from earlier versions of `winston-graylog2` + +Since `winston@3.x` relies heavily on a very powerful set of formatters there are a few formatting +actions that `winston-graylog2` no longer needs to do. The two primary cases are the inclusion of +a `meta` object, and converting errors so that the stack trace is included in the log message +rather than just the name of the error. + +`winston@3.x` includes an excellent formatter for dealing with `meta`, conveniently named +`metadata`. To use it, you can either grab it from the `winston.format` object, or use the one on +`logform.format`. See [the metadata formatter docs](https://github.com/winstonjs/logform#metadata) +for more details. + +For formatting Errors, `logform` (used under the hood by `winston.format` also includes an +excellent formatter which gives you the option to include the stack trace in the logged message. +**However**, the error formatter is only available with `logform@^2.1.0`, so at the time of this +writing you must explicitly require it rather than using `winston.format`. + +In order to get functionality identical to earlier versions of `winston-graylog2`, use both of +these formatters together with the json formatter. + +```javascript +var winston = require('winston'); +var { format } require('logform'); +var WinstonGraylog2 = require('winston-graylog2'); + +var options = { ...... }; +var logger = winston.createLogger({ + exitOnError: false, + formatters: format.combine( + format.errorr({ stack: true }), + format.metadata(), + ), + transports: [ + new WinstonGraylog2() ], +}); + +logger.info({ message: 'this is an info message', meta: 42 }); +logger.error({ message: new Error(FakeError), meta: 96 }); +``` + ## Log Levels Supported log levels, as from [node-graylog2][2], are the following @@ -98,7 +139,7 @@ notice | notice info | info debug | debug -**All other possibile winston's level, or custom levels, will default to `info`** +**All other possible winston levels, or custom levels, will default to `info`** [0]: http://www.graylog2.org [1]: https://github.com/flatiron/winston From 29b77ac293f357398ecd1211561c167db512f7eb Mon Sep 17 00:00:00 2001 From: Jeremy Jackson Date: Tue, 8 Jan 2019 20:52:58 -0700 Subject: [PATCH 16/29] Flatten metadata. --- lib/winston-graylog2.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/winston-graylog2.js b/lib/winston-graylog2.js index 8a2c758..538c709 100644 --- a/lib/winston-graylog2.js +++ b/lib/winston-graylog2.js @@ -70,7 +70,7 @@ class Graylog2 extends Transport { */ log(info, callback) { const {message, level, ...metadata} = info; - const meta = Object.assign(metadata, this.staticMeta); + const meta = Object.assign(metadata.metadata, this.staticMeta); // prettier-ignore setImmediate(() => { From fd2dd50581bdee9f2c194628518bc05afc9e7da2 Mon Sep 17 00:00:00 2001 From: Jeremy Jackson Date: Tue, 8 Jan 2019 22:30:26 -0700 Subject: [PATCH 17/29] Update readme.md --- readme.md | 1 - 1 file changed, 1 deletion(-) diff --git a/readme.md b/readme.md index 0cdc44e..74db382 100644 --- a/readme.md +++ b/readme.md @@ -6,7 +6,6 @@ A [graylog2][0] transport for [winston][1] based on the [node-graylog2][2] Libra ## Installation -Tested on node-0.10.x, requires npm. Recently rewritten to use ES6 for better compatibility with Winston@3, so please use only with NodeJS >=8. From b28824b9812f08c1cc48bf7f2631e6c9df57c855 Mon Sep 17 00:00:00 2001 From: Jeremy Jackson Date: Tue, 8 Jan 2019 22:34:35 -0700 Subject: [PATCH 18/29] Update readme.md --- readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/readme.md b/readme.md index 74db382..fec62ef 100644 --- a/readme.md +++ b/readme.md @@ -61,7 +61,7 @@ var logger = winston.createLogger({ Older versions of `winston-graylog2` allowed the __prelog__ and __processMeta__ options for pre-processing logs and metadata attached to messages (such as stack traces). Winston 3 has -implemented independent, custom formatters for handling these things, and they are not longer +implemented independent, custom formatters for handling these things, and they are no longer supported at the transport level. [See the Winston docs for details on formatters.](https://github.com/winstonjs/winston#formats) @@ -95,7 +95,7 @@ rather than just the name of the error. `logform.format`. See [the metadata formatter docs](https://github.com/winstonjs/logform#metadata) for more details. -For formatting Errors, `logform` (used under the hood by `winston.format` also includes an +For formatting Errors, `logform` (used under the hood by `winston.format`) also includes an excellent formatter which gives you the option to include the stack trace in the logged message. **However**, the error formatter is only available with `logform@^2.1.0`, so at the time of this writing you must explicitly require it rather than using `winston.format`. From b50d4b9c506db7a927a7d3de55bc2e24e302a0f8 Mon Sep 17 00:00:00 2001 From: Jeremy Jackson Date: Wed, 9 Jan 2019 00:00:08 -0700 Subject: [PATCH 19/29] Update .travis.yml --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index c7cfec4..dc94f6a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,7 +3,7 @@ language: node_js sudo: false node_js: - - 6.10 + - 8.0.0 install: - npm install --dev From 139253b9c33ce60a1a2e916ab6d5ee403640623f Mon Sep 17 00:00:00 2001 From: Jeremy Jackson Date: Wed, 9 Jan 2019 00:11:08 -0700 Subject: [PATCH 20/29] Update .travis.yml --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index dc94f6a..71f781a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,7 +3,7 @@ language: node_js sudo: false node_js: - - 8.0.0 + - 8.6.0 install: - npm install --dev From 5b93d254444c2cf68a24632ca2bc30c440825a62 Mon Sep 17 00:00:00 2001 From: Jeremy Jackson Date: Wed, 9 Jan 2019 11:39:48 -0700 Subject: [PATCH 21/29] Updated to require a minimum of Node 8.6. Due to language support issues, requiring a minimum of Node 8.6.0. Also modified travis to just do `npm install`, without `--dev` option since `npm install` now defaults to installing both `dependencies` and `devDependencies`. --- .travis.yml | 2 +- package.json | 2 +- readme.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 71f781a..92e3c58 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,7 +6,7 @@ node_js: - 8.6.0 install: - - npm install --dev + - npm install script: - yarn lint diff --git a/package.json b/package.json index 7cf2f83..65674af 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "prettier": "^1.11.1" }, "engines": { - "node": ">= 8.0.0" + "node": ">= 8.6.0" }, "keywords": [ "logging", diff --git a/readme.md b/readme.md index fec62ef..a2d42ee 100644 --- a/readme.md +++ b/readme.md @@ -7,7 +7,7 @@ A [graylog2][0] transport for [winston][1] based on the [node-graylog2][2] Libra ## Installation Recently rewritten to use ES6 for better compatibility with Winston@3, -so please use only with NodeJS >=8. +so please use only with NodeJS >=8.6.0. If you need to support older versions of Node, please use a version compatible with `^winston-graylog2@1.1.0`. From 6ee4adeff65fc043c73410621884df8160f501d8 Mon Sep 17 00:00:00 2001 From: Jeremy Jackson Date: Thu, 10 Jan 2019 09:47:25 -0700 Subject: [PATCH 22/29] Update readme.md --- readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/readme.md b/readme.md index a2d42ee..8ff1caa 100644 --- a/readme.md +++ b/readme.md @@ -101,7 +101,7 @@ excellent formatter which gives you the option to include the stack trace in the writing you must explicitly require it rather than using `winston.format`. In order to get functionality identical to earlier versions of `winston-graylog2`, use both of -these formatters together with the json formatter. +these formatters together. ```javascript var winston = require('winston'); @@ -116,7 +116,7 @@ var logger = winston.createLogger({ format.metadata(), ), transports: [ - new WinstonGraylog2() ], + new WinstonGraylog2(options) ], }); logger.info({ message: 'this is an info message', meta: 42 }); From 098349721fdb7fa0995c629cac822e794b848a37 Mon Sep 17 00:00:00 2001 From: Jeremy Jackson Date: Thu, 17 Jan 2019 17:38:04 -0700 Subject: [PATCH 23/29] Updated for Node 6.4.0 support. --- lib/winston-graylog2.js | 4 ++-- package.json | 2 +- readme.md | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/winston-graylog2.js b/lib/winston-graylog2.js index 538c709..f4ae603 100644 --- a/lib/winston-graylog2.js +++ b/lib/winston-graylog2.js @@ -69,8 +69,8 @@ class Graylog2 extends Transport { * @param {function} callback - Winston's callback to itself. */ log(info, callback) { - const {message, level, ...metadata} = info; - const meta = Object.assign(metadata.metadata, this.staticMeta); + const {message, level, metadata} = info; + const meta = Object.assign(metadata, this.staticMeta); // prettier-ignore setImmediate(() => { diff --git a/package.json b/package.json index 65674af..f1cf51b 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "prettier": "^1.11.1" }, "engines": { - "node": ">= 8.6.0" + "node": ">= 6.4.0" }, "keywords": [ "logging", diff --git a/readme.md b/readme.md index 8ff1caa..bb1c765 100644 --- a/readme.md +++ b/readme.md @@ -7,7 +7,7 @@ A [graylog2][0] transport for [winston][1] based on the [node-graylog2][2] Libra ## Installation Recently rewritten to use ES6 for better compatibility with Winston@3, -so please use only with NodeJS >=8.6.0. +so please use only with NodeJS >=6.4.0. If you need to support older versions of Node, please use a version compatible with `^winston-graylog2@1.1.0`. From bc07d3a8a130f0df7d2ea7bf98aa7538e9dc2faf Mon Sep 17 00:00:00 2001 From: Jeremy Jackson Date: Thu, 17 Jan 2019 17:41:01 -0700 Subject: [PATCH 24/29] Updated package versions again, and updated package.json for new way that husky wants to work. --- package-lock.json | 152 +++++++++++++++++++++++----------------------- package.json | 14 +++-- 2 files changed, 85 insertions(+), 81 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5761806..a326120 100644 --- a/package-lock.json +++ b/package-lock.json @@ -111,9 +111,9 @@ } }, "acorn": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.4.tgz", - "integrity": "sha512-VY4i5EKSKkofY2I+6QLTbTTN/UvEQPCo6eiwzzSaSWfpaDhOmStMCMod6wmuPciNq+XS0faCglFu2lHZpdHUtg==", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.5.tgz", + "integrity": "sha512-i33Zgp3XWtmZBMNvCr4azvOFeWVw1Rk6p3hfi3LUDvIFraOMywb1kAtrbi+med14m4Xfpqm3zRZMT+c0FNE7kg==", "dev": true }, "acorn-jsx": { @@ -123,9 +123,9 @@ "dev": true }, "ajv": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.2.tgz", - "integrity": "sha512-FBHEW6Jf5TB9MGBgUUA9XHkTbjXYfAUjY43ACMfmdMRHniyoMHjHjzD50OK8LGDWQwp4rWEsIq5kEqq7rvIM1g==", + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.7.0.tgz", + "integrity": "sha512-RZXPviBTtfmtka9n9sy1N5M5b82CbxWIR6HIis4s3WQTXDJamc/0gpCWNGz6EWdWp4DOfjzJfhz/AS9zVPjjWg==", "dev": true, "requires": { "fast-deep-equal": "^2.0.1", @@ -381,25 +381,25 @@ "dependencies": { "callsites": { "version": "2.0.0", - "resolved": "http://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", "dev": true } } }, "caller-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", - "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", "dev": true, "requires": { - "callsites": "^0.2.0" + "caller-callsite": "^2.0.0" } }, "callsites": { - "version": "0.2.0", - "resolved": "http://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", - "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.0.0.tgz", + "integrity": "sha512-tWnkwu9YEq2uzlBDI4RcLn8jrFvF9AOi8PxDNU3hZZjJcjkcRAq3vCI+vZcg1SuxISDYe86k9VZFwAxDiJGoAw==", "dev": true }, "chalk": { @@ -420,9 +420,9 @@ "dev": true }, "ci-info": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", - "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", "dev": true }, "circular-json": { @@ -627,6 +627,24 @@ "is-directory": "^0.3.1", "js-yaml": "^3.9.0", "parse-json": "^4.0.0" + }, + "dependencies": { + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } } }, "cross-spawn": { @@ -799,9 +817,9 @@ "dev": true }, "eslint": { - "version": "5.11.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.11.1.tgz", - "integrity": "sha512-gOKhM8JwlFOc2acbOrkYR05NW8M6DCMSvfcJiBB5NDxRE1gv8kbvxKaC9u69e6ZGEMWXcswA/7eKR229cEIpvg==", + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.12.0.tgz", + "integrity": "sha512-LntwyPxtOHrsJdcSwyQKVtHofPHdv+4+mFwEe91r2V13vqpM8yLr7b1sW+Oo/yheOPkWYsYlYJCkzlFAt8KV7g==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -821,6 +839,7 @@ "glob": "^7.1.2", "globals": "^11.7.0", "ignore": "^4.0.6", + "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "inquirer": "^6.1.0", "js-yaml": "^3.12.0", @@ -835,7 +854,6 @@ "pluralize": "^7.0.0", "progress": "^2.0.0", "regexpp": "^2.0.1", - "require-uncached": "^1.0.3", "semver": "^5.5.1", "strip-ansi": "^4.0.0", "strip-json-comments": "^2.0.1", @@ -850,9 +868,9 @@ "dev": true }, "eslint-plugin-prettier": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.0.0.tgz", - "integrity": "sha512-4g11opzhqq/8+AMmo5Vc2Gn7z9alZ4JqrbZ+D4i8KlSyxeQhZHlmIrY8U9Akf514MoEhogPa87Jgkq87aZ2Ohw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.0.1.tgz", + "integrity": "sha512-/PMttrarPAY78PLvV3xfWibMOdMDl57hmlQ2XqFeA37wd+CJ7WSxV7txqjVPHi/AAFKd2lX0ZqfsOc/i5yFCSQ==", "dev": true, "requires": { "prettier-linter-helpers": "^1.0.0" @@ -1272,9 +1290,9 @@ } }, "globals": { - "version": "11.9.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.9.0.tgz", - "integrity": "sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg==", + "version": "11.10.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.10.0.tgz", + "integrity": "sha512-0GZF1RiPKU97IHUO5TORo9w1PwrH/NBPl+fS7oMLdaTRiYmYbwK4NWoZWrAdd0/abG9R2BU+OiwyQpTpE6pdfQ==", "dev": true }, "globby": { @@ -1383,16 +1401,16 @@ "dev": true }, "husky": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/husky/-/husky-1.2.1.tgz", - "integrity": "sha512-4Ylal3HWhnDvIszuiyLoVrSGI7QLg/ogkNCoHE34c+yZYzb9kBZNrlTOsdw92cGi3cJT8pPb6CdVfxFkLnc8Dg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/husky/-/husky-1.3.1.tgz", + "integrity": "sha512-86U6sVVVf4b5NYSZ0yvv88dRgBSSXXmHaiq5pP4KDj5JVzdwKgBjEtUPOm8hcoytezFwbU+7gotXNhpHdystlg==", "dev": true, "requires": { "cosmiconfig": "^5.0.7", "execa": "^1.0.0", "find-up": "^3.0.0", "get-stdin": "^6.0.0", - "is-ci": "^1.2.1", + "is-ci": "^2.0.0", "pkg-dir": "^3.0.0", "please-upgrade-node": "^3.1.1", "read-pkg": "^4.0.1", @@ -1416,30 +1434,13 @@ "dev": true }, "import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.0.0.tgz", + "integrity": "sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ==", "dev": true, "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - }, - "dependencies": { - "caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", - "dev": true, - "requires": { - "caller-callsite": "^2.0.0" - } - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - } + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" } }, "imurmurhash": { @@ -1541,7 +1542,7 @@ }, "is-builtin-module": { "version": "1.0.0", - "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "dev": true, "requires": { @@ -1549,12 +1550,12 @@ } }, "is-ci": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", - "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", "dev": true, "requires": { - "ci-info": "^1.5.0" + "ci-info": "^2.0.0" } }, "is-data-descriptor": { @@ -2385,7 +2386,7 @@ }, "os-tmpdir": { "version": "1.0.2", - "resolved": "http://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, @@ -2425,6 +2426,15 @@ "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", "dev": true }, + "parent-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.0.tgz", + "integrity": "sha512-8Mf5juOMmiE4FcmzYc4IaiS9L3+9paz2KOiXzkRviCP6aDmN49Hz6EMWz0lGNp9pX80GvvAuLADtyGfW/Em3TA==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, "parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", @@ -2627,20 +2637,10 @@ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, - "require-uncached": { - "version": "1.0.3", - "resolved": "http://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", - "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", - "dev": true, - "requires": { - "caller-path": "^0.1.0", - "resolve-from": "^1.0.0" - } - }, "resolve-from": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, "resolve-url": { @@ -3113,9 +3113,9 @@ "dev": true }, "table": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/table/-/table-5.1.1.tgz", - "integrity": "sha512-NUjapYb/qd4PeFW03HnAuOJ7OMcBkJlqeClWxeNlQ0lXGSb52oZXGzkO0/I0ARegQ2eUT1g2VDJH0eUxDRcHmw==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/table/-/table-5.2.1.tgz", + "integrity": "sha512-qmhNs2GEHNqY5fd2Mo+8N1r2sw/rvTAAvBZTaTx+Y7PHLypqyrxr1MdIu0pLw6Xvl/Gi4ONu/sdceP8vvUjkyA==", "dev": true, "requires": { "ajv": "^6.6.1", @@ -3137,7 +3137,7 @@ }, "through": { "version": "2.3.8", - "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, diff --git a/package.json b/package.json index f1cf51b..b7a512e 100644 --- a/package.json +++ b/package.json @@ -44,10 +44,10 @@ "winston-transport": "^4.3.0" }, "devDependencies": { - "eslint": "^5.11.1", + "eslint": "^5.12.0", "eslint-config-google": "^0.11.0", - "eslint-plugin-prettier": "^3.0.0", - "husky": "^1.2.1", + "eslint-plugin-prettier": "^3.0.1", + "husky": "^1.3.1", "lint-staged": "^8.1.0", "mocha": "*", "prettier": "^1.11.1" @@ -71,8 +71,12 @@ }, "scripts": { "test": "mocha -b", - "lint": "eslint lib/ test/", - "precommit": "lint-staged" + "lint": "eslint lib/ test/" + }, + "husky": { + "hooks": { + "pre-commit": "lint-staged" + } }, "lint-staged": { "*.js": [ From 78a6f2800d3c1c5352d38fa28a4f5632e6027615 Mon Sep 17 00:00:00 2001 From: Jeremy Jackson Date: Thu, 17 Jan 2019 17:50:15 -0700 Subject: [PATCH 25/29] Updated readme example to include passing metadata as a separate object. --- readme.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/readme.md b/readme.md index bb1c765..18da0ba 100644 --- a/readme.md +++ b/readme.md @@ -119,8 +119,13 @@ var logger = winston.createLogger({ new WinstonGraylog2(options) ], }); -logger.info({ message: 'this is an info message', meta: 42 }); -logger.error({ message: new Error(FakeError), meta: 96 }); +logger.info({ message: 'this is an info message', answer: 42 }); +// or equivalently +logger.info('this is an info message', { answer: 42 }); + +logger.error({ message: new Error(FakeError), somenumber: 96 }); +// or equivalently +logger.error(new Error('FakeError'), { somenumber: 96 }); ``` ## Log Levels From aaacee4bb0842f2980995df66c3dc839153514f1 Mon Sep 17 00:00:00 2001 From: Jeremy Jackson Date: Thu, 17 Jan 2019 17:51:19 -0700 Subject: [PATCH 26/29] Roll back Node version in travis. --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 92e3c58..f123eda 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,7 +3,7 @@ language: node_js sudo: false node_js: - - 8.6.0 + - 6.4.0 install: - npm install From 9a35a7027dc34c9712d1fbfb36b059796b585893 Mon Sep 17 00:00:00 2001 From: Jeremy Jackson Date: Fri, 18 Jan 2019 17:56:18 -0700 Subject: [PATCH 27/29] Added end-to-end test with mocked udp listener. --- package-lock.json | 31 ++++++++++---- package.json | 3 +- test/e2e.js | 103 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 128 insertions(+), 9 deletions(-) create mode 100644 test/e2e.js diff --git a/package-lock.json b/package-lock.json index a326120..44af87a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -381,7 +381,7 @@ "dependencies": { "callsites": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "resolved": "http://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", "dev": true } @@ -1138,7 +1138,7 @@ }, "fecha": { "version": "2.3.3", - "resolved": "http://registry.npmjs.org/fecha/-/fecha-2.3.3.tgz", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-2.3.3.tgz", "integrity": "sha512-lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg==" }, "figures": { @@ -1542,7 +1542,7 @@ }, "is-builtin-module": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "dev": true, "requires": { @@ -2031,9 +2031,10 @@ } }, "logform": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/logform/-/logform-1.10.0.tgz", - "integrity": "sha512-em5ojIhU18fIMOw/333mD+ZLE2fis0EzXl1ZwHx4iQzmpQi6odNiY/t+ITNr33JZhT9/KEaH+UPIipr6a9EjWg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.1.0.tgz", + "integrity": "sha512-srZ6qfWCHLX0HVBuWiBC9CPWh61PFrj/akMSQTEqVOgik8fbpg849VU/kepesr6kBZ42Jsk8Duuabim6hAh27w==", + "dev": true, "requires": { "colors": "^1.2.1", "fast-safe-stringify": "^2.0.4", @@ -2386,7 +2387,7 @@ }, "os-tmpdir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "resolved": "http://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, @@ -3137,7 +3138,7 @@ }, "through": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, @@ -3346,6 +3347,20 @@ "stack-trace": "0.0.x", "triple-beam": "^1.3.0", "winston-transport": "^4.2.0" + }, + "dependencies": { + "logform": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/logform/-/logform-1.10.0.tgz", + "integrity": "sha512-em5ojIhU18fIMOw/333mD+ZLE2fis0EzXl1ZwHx4iQzmpQi6odNiY/t+ITNr33JZhT9/KEaH+UPIipr6a9EjWg==", + "requires": { + "colors": "^1.2.1", + "fast-safe-stringify": "^2.0.4", + "fecha": "^2.3.3", + "ms": "^2.1.1", + "triple-beam": "^1.2.0" + } + } } }, "winston-transport": { diff --git a/package.json b/package.json index b7a512e..bf3bed2 100644 --- a/package.json +++ b/package.json @@ -49,6 +49,7 @@ "eslint-plugin-prettier": "^3.0.1", "husky": "^1.3.1", "lint-staged": "^8.1.0", + "logform": "^2.1.0", "mocha": "*", "prettier": "^1.11.1" }, @@ -70,7 +71,7 @@ "url": "http://github.com/flite/winston-graylog2.git" }, "scripts": { - "test": "mocha -b", + "test": "mocha -b --exit", "lint": "eslint lib/ test/" }, "husky": { diff --git a/test/e2e.js b/test/e2e.js new file mode 100644 index 0000000..827078e --- /dev/null +++ b/test/e2e.js @@ -0,0 +1,103 @@ +'use strict'; + +const assert = require('assert'); +const winston = require('winston'); +const {format} = require('logform'); +const WinstonGraylog2 = require('../lib/winston-graylog2.js'); + +const dgram = require('dgram'); +const socket = dgram.createSocket('udp4'); +socket.bind(12201, '127.0.0.1'); + +const options = { + name: 'wgl-example', + level: 'debug', + silent: false, + graylog: { + servers: [{host: 'localhost', port: 12201}], + }, + staticMeta: { + me: 'you', + }, +}; + +const logger = winston.createLogger({ + level: 'debug', + levels: { + emerg: 0, + alert: 1, + crit: 2, + error: 3, + warn: 4, + notice: 5, + info: 6, + debug: 7, + }, + format: format.combine(format.errors({stack: true}), format.metadata()), + transports: [new WinstonGraylog2(options)], +}); + +socket.on('listening', () => { + let emergCheck; + let alertCheck; + let critCheck; + let errorCheck; + let warnCheck; + let noticeCheck; + let infoCheck; + let debugCheck; + + socket.on('message', (msg) => { + const message = JSON.parse(msg.toString()); + if (message.level === 0) emergCheck = message; + if (message.level === 1) alertCheck = message; + if (message.level === 2) critCheck = message; + if (message.level === 3) errorCheck = message; + if (message.level === 4) warnCheck = message; + if (message.level === 5) noticeCheck = message; + if (message.level === 6) infoCheck = message; + if (message.level === 7) debugCheck = message; + }); + + logger.emerg('emergency dude'); + logger.alert('alert me'); + logger.crit('critical engines'); + logger.error(new Error('Fake Error')); + logger.warn('warning noise'); + logger.notice('notice me senpai', {some: 'thing'}); + logger.info('info achieved', {hi: 'there'}); + logger.debug('debug something', {everything: 1}); + + describe('End-to-End test of winston-graylog2', function(done) { + it('should send emergency message with static metadata', () => { + assert.equal(emergCheck.short_message, 'emergency dude'); + assert.equal(emergCheck._me, 'you'); + }); + it('should send alert message', () => { + assert.equal(alertCheck.short_message, 'alert me'); + }); + it('should send critical message', () => { + assert.equal(critCheck.short_message, 'critical engines'); + }); + it('should send error message', () => { + assert.equal(errorCheck.short_message, 'Fake Error'); + assert(errorCheck._stack); + }); + it('should send warn message', () => { + assert.equal(warnCheck.short_message, 'warning noise'); + }); + it('should send notice message with metadata', () => { + assert.equal(noticeCheck.short_message, 'notice me senpai'); + assert.equal(noticeCheck._some, 'thing'); + }); + it('should send info message with metadata', () => { + assert.equal(infoCheck.short_message, 'info achieved'); + assert.equal(infoCheck._hi, 'there'); + }); + it('should send debug message with metadata', () => { + assert.equal(debugCheck.short_message, 'debug something'); + assert.equal(debugCheck._everything, 1); + }); + after(() => socket.close(done)); + }); +}); From d12f290eea989351fed203f77a79d66b0c6993f2 Mon Sep 17 00:00:00 2001 From: Jeremy Jackson Date: Mon, 21 Jan 2019 18:04:23 -0700 Subject: [PATCH 28/29] Update readme.md --- readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/readme.md b/readme.md index 18da0ba..b20ceec 100644 --- a/readme.md +++ b/readme.md @@ -105,13 +105,13 @@ these formatters together. ```javascript var winston = require('winston'); -var { format } require('logform'); +var { format } = require('logform'); var WinstonGraylog2 = require('winston-graylog2'); var options = { ...... }; var logger = winston.createLogger({ exitOnError: false, - formatters: format.combine( + format: format.combine( format.errorr({ stack: true }), format.metadata(), ), From 6b54b3435d3a922eb16735b9bb2fc64c1ef69954 Mon Sep 17 00:00:00 2001 From: Jeremy Jackson Date: Wed, 23 Jan 2019 17:57:26 -0700 Subject: [PATCH 29/29] Correcting TypeError that occurs when metadata and staticMeta are null or undefined. --- lib/winston-graylog2.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/winston-graylog2.js b/lib/winston-graylog2.js index f4ae603..dd955fa 100644 --- a/lib/winston-graylog2.js +++ b/lib/winston-graylog2.js @@ -70,7 +70,7 @@ class Graylog2 extends Transport { */ log(info, callback) { const {message, level, metadata} = info; - const meta = Object.assign(metadata, this.staticMeta); + const meta = Object.assign({}, metadata, this.staticMeta); // prettier-ignore setImmediate(() => {