diff --git a/accounts/package-lock.json b/accounts/package-lock.json index 0b9e9cc883..9cd1409d3d 100644 --- a/accounts/package-lock.json +++ b/accounts/package-lock.json @@ -1635,11 +1635,6 @@ "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" }, - "abab": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", - "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=" - }, "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -1654,24 +1649,11 @@ "negotiator": "0.6.2" } }, - "acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" - }, "acorn-dynamic-import": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==" }, - "acorn-globals": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", - "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=", - "requires": { - "acorn": "^4.0.4" - } - }, "acorn-jsx": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz", @@ -1687,11 +1669,6 @@ "resolved": "https://registry.npmjs.org/address/-/address-1.0.3.tgz", "integrity": "sha512-z55ocwKBRLryBs394Sm3ushTtBeg6VAeuku7utSoSnsJKvKcnXFIyC6vh27n3rXyxSgkJBBCAvyOn7gSUcTYjg==" }, - "after": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", - "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=" - }, "agent-base": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", @@ -1899,11 +1876,6 @@ "es-abstract": "^1.13.0" } }, - "arraybuffer.slice": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz", - "integrity": "sha1-8zshWfBTKj8xB6JywMz70a0peco=" - }, "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", @@ -3199,11 +3171,6 @@ "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" }, - "backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" - }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -3259,11 +3226,6 @@ } } }, - "base64-arraybuffer": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", - "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=" - }, "base64-js": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", @@ -3282,14 +3244,6 @@ "tweetnacl": "^0.14.3" } }, - "better-assert": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", - "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", - "requires": { - "callsite": "1.0.0" - } - }, "big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", @@ -3300,11 +3254,6 @@ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" }, - "blob": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", - "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=" - }, "bluebird": { "version": "3.5.5", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz", @@ -3638,11 +3587,6 @@ "caller-callsite": "^2.0.0" } }, - "callsite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=" - }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -3940,47 +3884,6 @@ } } }, - "cloudboost": { - "version": "6.6.6", - "resolved": "https://registry.npmjs.org/cloudboost/-/cloudboost-6.6.6.tgz", - "integrity": "sha1-x1YYauPJSGZw+aEmRW1s5sRtcNw=", - "requires": { - "axios": "^0.14.0", - "bluebird": "^3.4.6", - "form-data": "^2.1.2", - "jsdom": "^9.10.0", - "localStorage": "^1.0.3", - "localforage": "^1.5.0", - "socket.io-client": "^1.7.1" - }, - "dependencies": { - "axios": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.14.0.tgz", - "integrity": "sha1-QPJPL06RO5+qQ9OnsuQKuHKa+pA=", - "requires": { - "follow-redirects": "0.0.7" - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "follow-redirects": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-0.0.7.tgz", - "integrity": "sha1-NLkLqyqRGqNHVx2pDyK9NuzYqRk=", - "requires": { - "debug": "^2.2.0", - "stream-consume": "^0.1.0" - } - } - } - }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -4082,21 +3985,11 @@ "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" }, - "component-bind": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", - "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=" - }, "component-emitter": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" }, - "component-inherit": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", - "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=" - }, "components": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/components/-/components-0.1.0.tgz", @@ -4218,11 +4111,6 @@ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" }, - "content-type-parser": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/content-type-parser/-/content-type-parser-1.0.2.tgz", - "integrity": "sha512-lM4l4CnMEwOLHAHr/P6MEZwZFPJFtAAKgL6pogbXmVZggIqXhdB6RbBtPOTsw2FcXwYhehRGERJmRrjOiIB8pQ==" - }, "convert-source-map": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", @@ -4675,14 +4563,6 @@ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" }, - "cssstyle": { - "version": "0.2.37", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", - "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", - "requires": { - "cssom": "0.3.x" - } - }, "csstype": { "version": "2.6.6", "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.6.tgz", @@ -5264,53 +5144,6 @@ "once": "^1.4.0" } }, - "engine.io-client": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.8.5.tgz", - "integrity": "sha512-AYTgHyeVUPitsseqjoedjhYJapNVoSPShbZ+tEUX9/73jgZ/Z3sUlJf9oYgdEBBdVhupUpUqSxH0kBCXlQnmZg==", - "requires": { - "component-emitter": "1.2.1", - "component-inherit": "0.0.3", - "debug": "2.3.3", - "engine.io-parser": "1.3.2", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "parsejson": "0.0.3", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "ws": "~1.1.5", - "xmlhttprequest-ssl": "1.5.3", - "yeast": "0.1.2" - }, - "dependencies": { - "debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "requires": { - "ms": "0.7.2" - } - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=" - } - } - }, - "engine.io-parser": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.3.2.tgz", - "integrity": "sha1-k3sHnwAH0Ik+xW1GyyILjLQ1Igo=", - "requires": { - "after": "0.8.2", - "arraybuffer.slice": "0.0.6", - "base64-arraybuffer": "0.1.5", - "blob": "0.0.4", - "has-binary": "0.1.7", - "wtf-8": "1.0.0" - } - }, "enhanced-resolve": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", @@ -6421,16 +6254,6 @@ "worker-rpc": "^0.1.0" } }, - "form-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.0.tgz", - "integrity": "sha512-WXieX3G/8side6VIqx44ablyULoGruSde5PNTxoUyo5CeyAMX6nVWUd0rgist/EuX655cjhUhTo1Fo3tRYqbcA==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, "forwarded": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", @@ -7198,19 +7021,6 @@ } } }, - "has-binary": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz", - "integrity": "sha1-aOYesWIQyVRaClzOBqhzkS/h5ow=", - "requires": { - "isarray": "0.0.1" - } - }, - "has-cors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", - "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=" - }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -7569,11 +7379,6 @@ "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" }, - "immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" - }, "immer": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/immer/-/immer-1.10.0.tgz", @@ -7628,11 +7433,6 @@ "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=" }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" - }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -8763,32 +8563,6 @@ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" }, - "jsdom": { - "version": "9.12.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-9.12.0.tgz", - "integrity": "sha1-6MVG//ywbADUgzyoRBD+1/igl9Q=", - "requires": { - "abab": "^1.0.3", - "acorn": "^4.0.4", - "acorn-globals": "^3.1.0", - "array-equal": "^1.0.0", - "content-type-parser": "^1.0.1", - "cssom": ">= 0.3.2 < 0.4.0", - "cssstyle": ">= 0.2.37 < 0.3.0", - "escodegen": "^1.6.1", - "html-encoding-sniffer": "^1.0.1", - "nwmatcher": ">= 1.3.9 < 2.0.0", - "parse5": "^1.5.1", - "request": "^2.79.0", - "sax": "^1.2.1", - "symbol-tree": "^3.2.1", - "tough-cookie": "^2.3.2", - "webidl-conversions": "^4.0.0", - "whatwg-encoding": "^1.0.1", - "whatwg-url": "^4.3.0", - "xml-name-validator": "^2.0.1" - } - }, "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -8949,14 +8723,6 @@ "type-check": "~0.3.2" } }, - "lie": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", - "integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=", - "requires": { - "immediate": "~3.0.5" - } - }, "load-json-file": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", @@ -9058,19 +8824,6 @@ "resolved": "https://registry.npmjs.org/loaders.css/-/loaders.css-0.1.2.tgz", "integrity": "sha1-Op+0NybHMzSjgUKvnQYpAZtlh0M=" }, - "localStorage": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/localStorage/-/localStorage-1.0.4.tgz", - "integrity": "sha512-r35zrihcDiX+dqWlJSeIwS9nrF95OQTgqMFm3FB2D/+XgdmZtcutZOb7t0xXkhOEM8a9kpuu7cc28g1g36I5DQ==" - }, - "localforage": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.7.3.tgz", - "integrity": "sha512-1TulyYfc4udS7ECSBT2vwJksWbkwwTX8BzeUIiq8Y07Riy7bDAAnxDaPU/tWyOVmQAcWJIEIFP9lPfBGqVoPgQ==", - "requires": { - "lie": "3.1.1" - } - }, "locate-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", @@ -9777,11 +9530,6 @@ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, - "nwmatcher": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.4.tgz", - "integrity": "sha512-3iuY4N5dhgMpCUrOVnuAdGrgxVqV2cJpM+XNccjR2DKOB1RUP0aA+wGXEiNziG/UKboFyGBIoKOaNlJxx8bciQ==" - }, "nwsapi": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.4.tgz", @@ -9797,11 +9545,6 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, - "object-component": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", - "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=" - }, "object-copy": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", @@ -10029,11 +9772,6 @@ "wordwrap": "~1.0.0" } }, - "options": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", - "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=" - }, "original": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", @@ -10175,35 +9913,6 @@ "json-parse-better-errors": "^1.0.1" } }, - "parse5": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz", - "integrity": "sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=" - }, - "parsejson": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.3.tgz", - "integrity": "sha1-q343WfIJ7OmUN5c/fQ8fZK4OZKs=", - "requires": { - "better-assert": "~1.0.0" - } - }, - "parseqs": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", - "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", - "requires": { - "better-assert": "~1.0.0" - } - }, - "parseuri": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", - "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", - "requires": { - "better-assert": "~1.0.0" - } - }, "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -13295,70 +13004,6 @@ } } }, - "socket.io-client": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.7.4.tgz", - "integrity": "sha1-7J+CA1btme9tNX8HVtZIcXvdQoE=", - "requires": { - "backo2": "1.0.2", - "component-bind": "1.0.0", - "component-emitter": "1.2.1", - "debug": "2.3.3", - "engine.io-client": "~1.8.4", - "has-binary": "0.1.7", - "indexof": "0.0.1", - "object-component": "0.0.3", - "parseuri": "0.0.5", - "socket.io-parser": "2.3.1", - "to-array": "0.1.4" - }, - "dependencies": { - "debug": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", - "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", - "requires": { - "ms": "0.7.2" - } - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=" - } - } - }, - "socket.io-parser": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.3.1.tgz", - "integrity": "sha1-3VMgJRA85Clpcya+/WQAX8/ltKA=", - "requires": { - "component-emitter": "1.1.2", - "debug": "2.2.0", - "isarray": "0.0.1", - "json3": "3.3.2" - }, - "dependencies": { - "component-emitter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz", - "integrity": "sha1-KWWU8nU9qmOZbSrwjRWpURbJrsM=" - }, - "debug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", - "requires": { - "ms": "0.7.1" - } - }, - "ms": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" - } - } - }, "sockjs": { "version": "0.3.19", "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", @@ -13625,11 +13270,6 @@ "readable-stream": "^2.0.2" } }, - "stream-consume": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.1.tgz", - "integrity": "sha512-tNa3hzgkjEP7XbCkbRXe1jpg+ievoa0O4SCFlMOYEscGSS4JJsckGL8swUyAa/ApGU3Ae4t6Honor4HhL+tRyg==" - }, "stream-each": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", @@ -13984,11 +13624,6 @@ "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=" }, - "to-array": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", - "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=" - }, "to-arraybuffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", @@ -14085,11 +13720,6 @@ "punycode": "^2.1.1" } }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" - }, "trim-right": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", @@ -14173,11 +13803,6 @@ "source-map": "~0.6.1" } }, - "ultron": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", - "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=" - }, "uncontrollable": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-5.1.0.tgz", @@ -14764,22 +14389,6 @@ "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" }, - "whatwg-url": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-4.8.0.tgz", - "integrity": "sha1-0pgaqRSMHgCkHFphMRZqtGg7vMA=", - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - }, - "dependencies": { - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" - } - } - }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -15040,35 +14649,11 @@ "signal-exit": "^3.0.2" } }, - "ws": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz", - "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==", - "requires": { - "options": ">=0.0.5", - "ultron": "1.0.x" - } - }, - "wtf-8": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wtf-8/-/wtf-8-1.0.0.tgz", - "integrity": "sha1-OS2LotDxw00e4tYw8V0O+2jhBIo=" - }, - "xml-name-validator": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz", - "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=" - }, "xmlchars": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.1.1.tgz", "integrity": "sha512-7hew1RPJ1iIuje/Y01bGD/mXokXxegAgVS+e+E0wSi2ILHQkYAH1+JXARwTjZSM4Z4Z+c73aKspEcqj+zPPL/w==" }, - "xmlhttprequest-ssl": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz", - "integrity": "sha1-GFqIjATspGw+QHDZn3tJ3jUomS0=" - }, "xregexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz", @@ -15131,11 +14716,6 @@ "requires": { "fd-slicer": "~1.0.1" } - }, - "yeast": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", - "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=" } } } diff --git a/home/package-lock.json b/home/package-lock.json index f0e023ab49..e7ff428d7d 100755 --- a/home/package-lock.json +++ b/home/package-lock.json @@ -505,12 +505,6 @@ "@babel/types": "^7.3.0" } }, - "@types/core-js": { - "version": "0.9.46", - "resolved": "https://registry.npmjs.org/@types/core-js/-/core-js-0.9.46.tgz", - "integrity": "sha512-LooLR6XHes9V+kNYRz1Qm8w3atw9QMn7XeZUmIpUelllF9BdryeUKd/u0Wh5ErcjpWfG39NrToU9MF7ngsTFVw==", - "dev": true - }, "@types/istanbul-lib-coverage": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", @@ -536,22 +530,10 @@ "@types/istanbul-lib-report": "*" } }, - "@types/mkdirp": { - "version": "0.3.29", - "resolved": "https://registry.npmjs.org/@types/mkdirp/-/mkdirp-0.3.29.tgz", - "integrity": "sha1-fyrX7FX5FEgvybHsS7GuYCjUYGY=", - "dev": true - }, "@types/node": { - "version": "9.6.26", - "resolved": "https://registry.npmjs.org/@types/node/-/node-9.6.26.tgz", - "integrity": "sha512-3LKKscYUZdZreOuvnly8oWsCA1TOWtmkV3mbcUnV34f+nqDWJic+4SGjRi1C/sPHnZcSs/x209O+Dgy8aWHt2A==", - "dev": true - }, - "@types/rimraf": { - "version": "0.0.28", - "resolved": "https://registry.npmjs.org/@types/rimraf/-/rimraf-0.0.28.tgz", - "integrity": "sha1-VWJRm8eWPKyoq/fxKMrjtZTUHQY=", + "version": "12.6.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.6.9.tgz", + "integrity": "sha512-+YB9FtyxXGyD54p8rXwWaN1EWEyar5L58GlGWgtH2I9rGmLGBQcw63+0jw+ujqVavNuO47S1ByAjm9zdHMnskw==", "dev": true }, "@types/stack-utils": { @@ -573,12 +555,12 @@ "dev": true }, "accepts": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz", - "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=", + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", "requires": { - "mime-types": "~2.1.16", - "negotiator": "0.6.1" + "mime-types": "~2.1.24", + "negotiator": "0.6.2" } }, "acorn": { @@ -605,6 +587,12 @@ } } }, + "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 + }, "acorn-walk": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz", @@ -620,6 +608,18 @@ "es6-promisify": "^5.0.0" } }, + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, "ansi-align": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", @@ -660,6 +660,15 @@ "normalize-path": "^2.1.1" } }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, "argv": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/argv/-/argv-0.0.2.tgz", @@ -701,6 +710,16 @@ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" }, + "array-includes": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", + "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.7.0" + } + }, "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", @@ -885,26 +904,41 @@ } }, "bluebird": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", - "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz", + "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==", "dev": true }, "body-parser": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", - "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", "requires": { - "bytes": "3.0.0", + "bytes": "3.1.0", "content-type": "~1.0.4", "debug": "2.6.9", - "depd": "~1.1.1", - "http-errors": "~1.6.2", - "iconv-lite": "0.4.19", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", "on-finished": "~2.3.0", - "qs": "6.5.1", - "raw-body": "2.3.2", - "type-is": "~1.6.15" + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + } } }, "boxen": { @@ -1006,9 +1040,9 @@ "dev": true }, "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" }, "cache-base": { "version": "1.0.1", @@ -1033,15 +1067,6 @@ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, - "camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", - "requires": { - "no-case": "^2.2.0", - "upper-case": "^1.1.1" - } - }, "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", @@ -1122,15 +1147,12 @@ "dev": true }, "chrome-launcher": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.10.2.tgz", - "integrity": "sha512-E+kTHlGgtitPPu8Rci0E4XBasirKtTn6DjqFn8tTLp/7xCUzqb6lig9Il+HLkcudzKvT/aLxJbzbyNCe03w1AA==", + "version": "0.10.7", + "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.10.7.tgz", + "integrity": "sha512-IoQLp64s2n8OQuvKZwt77CscVj3UlV2Dj7yZtd1EBMld9mSdGcsGy9fN5hd/r4vJuWZR09it78n1+A17gB+AIQ==", "dev": true, "requires": { - "@types/core-js": "^0.9.41", - "@types/mkdirp": "^0.3.29", - "@types/node": "^9.3.0", - "@types/rimraf": "^0.0.28", + "@types/node": "*", "is-wsl": "^1.1.0", "lighthouse-logger": "^1.0.0", "mkdirp": "0.5.1", @@ -1166,21 +1188,6 @@ } } }, - "clean-css": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.11.tgz", - "integrity": "sha1-Ls3xRaujj1R0DybO/Q/z4D4SXWo=", - "requires": { - "source-map": "0.5.x" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - } - } - }, "cli-boxes": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", @@ -1196,6 +1203,23 @@ "restore-cursor": "^2.0.0" } }, + "cli-table": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz", + "integrity": "sha1-9TsFJmqLGguTSz0IIebi3FkUriM=", + "dev": true, + "requires": { + "colors": "1.0.3" + }, + "dependencies": { + "colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", + "dev": true + } + } + }, "cli-width": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", @@ -1256,11 +1280,6 @@ "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=", "dev": true }, - "commander": { - "version": "2.12.2", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz", - "integrity": "sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA==" - }, "component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", @@ -1268,25 +1287,37 @@ "dev": true }, "compressible": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.13.tgz", - "integrity": "sha1-DRAgq5JLL9tNYnmHXH1tq6a6p6k=", + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.17.tgz", + "integrity": "sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw==", "requires": { - "mime-db": ">= 1.33.0 < 2" + "mime-db": ">= 1.40.0 < 2" } }, "compression": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.2.tgz", - "integrity": "sha1-qv+81qr4VLROuygDU9WtFlH1mmk=", + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", "requires": { - "accepts": "~1.3.4", + "accepts": "~1.3.5", "bytes": "3.0.0", - "compressible": "~2.0.13", + "compressible": "~2.0.16", "debug": "2.6.9", - "on-headers": "~1.0.1", - "safe-buffer": "5.1.1", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", "vary": "~1.1.2" + }, + "dependencies": { + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } } }, "concat-map": { @@ -1322,9 +1353,19 @@ } }, "content-disposition": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "requires": { + "safe-buffer": "5.1.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } }, "content-type": { "version": "1.0.4", @@ -1343,7 +1384,8 @@ "cookie": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true }, "cookie-signature": { "version": "1.0.6", @@ -1357,9 +1399,9 @@ "dev": true }, "core-js": { - "version": "2.5.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", - "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==", + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", + "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==", "dev": true }, "core-util-is": { @@ -1586,6 +1628,15 @@ "integrity": "sha512-xLqpez+Zj9GKSnPWS0WZw1igGocZ+uua8+y+5dDNTT934N3QuY1sp2LkHzwiaYQGz60hMq0pjAshdeXm5VUOEw==", "dev": true }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, "domexception": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", @@ -1631,9 +1682,15 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "ejs": { - "version": "2.5.7", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.5.7.tgz", - "integrity": "sha1-zIcsFoiArjxxiXYv1f/ACJbJUYo=" + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.6.2.tgz", + "integrity": "sha512-PcW2a0tyTuPHz3tWyYqtK6r1fZ3gp+3Sop8Ph+ZYN81Ob5rwmbHEzaqs10N3BEsaGTkh/ooniXK+WwszGlc2+Q==" + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true }, "encodeurl": { "version": "1.0.2", @@ -1730,12 +1787,265 @@ } } }, + "eslint": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", + "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.9.1", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^4.0.3", + "eslint-utils": "^1.3.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^5.0.1", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.7.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^6.2.2", + "js-yaml": "^3.13.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.11", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^5.5.1", + "strip-ansi": "^4.0.0", + "strip-json-comments": "^2.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0" + }, + "dependencies": { + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "inquirer": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.0.tgz", + "integrity": "sha512-scfHejeG/lVZSpvCXpsB4j/wQNPM5JC8kiElOI0OUTwmc1RTpXr4H32/HOlQHcZiYl2z2VElwuCVDRG8vFmbnA==", + "dev": true, + "requires": { + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.12", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true + } + } + }, + "eslint-plugin-react": { + "version": "7.14.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.14.3.tgz", + "integrity": "sha512-EzdyyBWC4Uz2hPYBiEJrKCUi2Fn+BJ9B/pJQcjw5X+x/H2Nm59S4MJIvL4O5NEE0+WbnQwEBxWY03oUk+Bc3FA==", + "dev": true, + "requires": { + "array-includes": "^3.0.3", + "doctrine": "^2.1.0", + "has": "^1.0.3", + "jsx-ast-utils": "^2.1.0", + "object.entries": "^1.1.0", + "object.fromentries": "^2.0.0", + "object.values": "^1.1.0", + "prop-types": "^15.7.2", + "resolve": "^1.10.1" + }, + "dependencies": { + "resolve": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", + "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + } + } + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.0.tgz", + "integrity": "sha512-7ehnzPaP5IIEh1r1tkjuIrxqhNkzUJa9z3R92tLJdZIVdWaczEhr3EbhGtsMrVxi1KeR8qA7Off6SWc5WNQqyQ==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.0.0" + } + }, + "eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "dev": true + }, + "espree": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", + "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", + "dev": true, + "requires": { + "acorn": "^6.0.7", + "acorn-jsx": "^5.0.0", + "eslint-visitor-keys": "^1.0.0" + }, + "dependencies": { + "acorn": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.2.1.tgz", + "integrity": "sha512-JD0xT5FCRDNyjDda3Lrg/IxFscp9q4tiYtxE1/nOzlKCk7hIRuYjhq1kCNkbPjMRMZuFq20HNQn1I9k8Oj0E+Q==", + "dev": true + } + } + }, "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, + "esquery": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", + "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "dev": true, + "requires": { + "estraverse": "^4.0.0" + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, "estraverse": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", @@ -1775,18 +2085,29 @@ "dev": true }, "execa": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", - "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.11.0.tgz", + "integrity": "sha512-k5AR22vCt1DcfeiRixW46U5tMLtBg44ssdJM9PiXw3D8Bn5qyxFCSnKY/eR22y+ctFDGPqafpaXg2G4Emyua4A==", "dev": true, "requires": { "cross-spawn": "^6.0.0", - "get-stream": "^3.0.0", + "get-stream": "^4.0.0", "is-stream": "^1.1.0", "npm-run-path": "^2.0.0", "p-finally": "^1.0.0", "signal-exit": "^3.0.0", "strip-eof": "^1.0.0" + }, + "dependencies": { + "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" + } + } } }, "exit": { @@ -1845,63 +2166,59 @@ } }, "express": { - "version": "4.16.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.16.2.tgz", - "integrity": "sha1-41xt/i1kt9ygpc1PIXgb4ymeB2w=", + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", "requires": { - "accepts": "~1.3.4", + "accepts": "~1.3.7", "array-flatten": "1.1.1", - "body-parser": "1.18.2", - "content-disposition": "0.5.2", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", "content-type": "~1.0.4", - "cookie": "0.3.1", + "cookie": "0.4.0", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "~1.1.1", - "encodeurl": "~1.0.1", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.1.0", + "finalhandler": "~1.1.2", "fresh": "0.5.2", "merge-descriptors": "1.0.1", "methods": "~1.1.2", "on-finished": "~2.3.0", - "parseurl": "~1.3.2", + "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.2", - "qs": "6.5.1", - "range-parser": "~1.2.0", - "safe-buffer": "5.1.1", - "send": "0.16.1", - "serve-static": "1.13.1", - "setprototypeof": "1.1.0", - "statuses": "~1.3.1", - "type-is": "~1.6.15", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" }, "dependencies": { - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" }, - "statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" } } }, - "express-minify-html": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/express-minify-html/-/express-minify-html-0.12.0.tgz", - "integrity": "sha512-T31JAiPYPCosfiBeKX5CTkIUhbs78NHAn8dfvX4T5wz1PRLkgGJmLqEzDk1BgIzzzXcmbsof9YtNF6cJQEsPrw==", - "requires": { - "html-minifier": "3.5.7", - "lodash.merge": "4.6.0" - } - }, "express-seojs": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/express-seojs/-/express-seojs-0.0.5.tgz", @@ -2027,6 +2344,12 @@ "integrity": "sha1-HkW7vsxndLPBlfrSg1EJxtdIzD8=", "dev": true }, + "fast-deep-equal": { + "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-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", @@ -2065,6 +2388,15 @@ "escape-string-regexp": "^1.0.5" } }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", @@ -2089,24 +2421,17 @@ } }, "finalhandler": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", - "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", "requires": { "debug": "2.6.9", - "encodeurl": "~1.0.1", + "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.3.1", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", "unpipe": "~1.0.0" - }, - "dependencies": { - "statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" - } } }, "find-up": { @@ -2118,6 +2443,48 @@ "locate-path": "^3.0.0" } }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + }, + "dependencies": { + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "flatted": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", + "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", + "dev": true + }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -2720,6 +3087,12 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, "get-caller-file": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", @@ -2898,10 +3271,11 @@ } } }, - "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=" + "hoek": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-5.0.4.tgz", + "integrity": "sha512-Alr4ZQgoMlnere5FZJsIyfIjORBqZll5POhDsF4q64dPuJR6rNxXdDxtHSQq8OXRurhmx+PWYEE8bXRROY8h0w==", + "dev": true }, "hosted-git-info": { "version": "2.7.1", @@ -2918,53 +3292,16 @@ "whatwg-encoding": "^1.0.1" } }, - "html-minifier": { - "version": "3.5.7", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.7.tgz", - "integrity": "sha512-GISXn6oKDo7+gVpKOgZJTbHMCUI2TSGfpg/8jgencWhWJsvEmsvp3M8emX7QocsXsYznWloLib3OeSfeyb/ewg==", - "requires": { - "camel-case": "3.0.x", - "clean-css": "4.1.x", - "commander": "2.12.x", - "he": "1.1.x", - "ncname": "1.0.x", - "param-case": "2.1.x", - "relateurl": "0.2.x", - "uglify-js": "3.2.x" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "uglify-js": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.2.2.tgz", - "integrity": "sha512-++1NO/zZIEdWf6cDIGceSJQPX31SqIpbVAHwFG5+240MtZqPG/NIPoinj8zlXQtAfMBqEt1Jyv2FiLP3n9gVhQ==", - "requires": { - "commander": "~2.12.1", - "source-map": "~0.6.1" - } - } - } - }, "http-errors": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", - "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", "requires": { - "depd": "1.1.1", + "depd": "~1.1.2", "inherits": "2.0.3", - "setprototypeof": "1.0.3", - "statuses": ">= 1.3.1 < 2" - }, - "dependencies": { - "depd": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", - "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" - } + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" } }, "http-link-header": { @@ -2974,12 +3311,12 @@ "dev": true }, "https-proxy-agent": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz", - "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.2.tgz", + "integrity": "sha512-c8Ndjc9Bkpfx/vCJueCPy0jlP4ccCCSNDp8xwCZzPjKJUm+B+u9WX2x98Qx4n1PiMNTWo3D7KK5ifNV/yJyRzg==", "dev": true, "requires": { - "agent-base": "^4.1.0", + "agent-base": "^4.3.0", "debug": "^3.1.0" }, "dependencies": { @@ -3003,7 +3340,14 @@ "iconv-lite": { "version": "0.4.19", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", + "dev": true + }, + "ignore": { + "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 }, "image-ssim": { "version": "0.2.0", @@ -3011,6 +3355,24 @@ "integrity": "sha1-g7Qsei5uS4VQVHf+aRf128VkIOU=", "dev": true }, + "import-fresh": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.1.0.tgz", + "integrity": "sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "dependencies": { + "resolve-from": { + "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 + } + } + }, "import-lazy": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", @@ -3101,9 +3463,9 @@ "dev": true }, "ipaddr.js": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.5.2.tgz", - "integrity": "sha1-1LUFvemUaYfM8PxY2QEP+WB+P6A=" + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", + "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==" }, "is-accessor-descriptor": { "version": "0.1.6", @@ -3365,10 +3727,21 @@ "dev": true }, "isemail": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/isemail/-/isemail-2.2.1.tgz", - "integrity": "sha1-A1PT2aYpUQgMJiwqoKQrjqjp4qY=", - "dev": true + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/isemail/-/isemail-3.2.0.tgz", + "integrity": "sha512-zKqkK+O+dGqevc93KNsbZ/TqTUFd46MwWjYOoMrjIMZ51eU7DtQG3Wmd9SQQT7i7RVnuTPEiYEWHU3MSbxC1Tg==", + "dev": true, + "requires": { + "punycode": "2.x.x" + }, + "dependencies": { + "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 + } + } }, "isexe": { "version": "2.0.0", @@ -3544,12 +3917,6 @@ "handlebars": "^4.1.2" } }, - "items": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/items/-/items-2.1.1.tgz", - "integrity": "sha1-i9FtnIOxlSneWuoyGsqtp4NkoZg=", - "dev": true - }, "jest": { "version": "24.8.0", "resolved": "https://registry.npmjs.org/jest/-/jest-24.8.0.tgz", @@ -4100,24 +4467,14 @@ } }, "joi": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/joi/-/joi-9.2.0.tgz", - "integrity": "sha1-M4WseQGSEwy+Iw6ALsAskhW7/to=", + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-13.7.0.tgz", + "integrity": "sha512-xuY5VkHfeOYK3Hdi91ulocfuFopwgbSORmIwzcwHKESQhC7w1kD5jaVSPnqDxS2I8t3RZ9omCKAxNwXN5zG1/Q==", "dev": true, "requires": { - "hoek": "4.x.x", - "isemail": "2.x.x", - "items": "2.x.x", - "moment": "2.x.x", - "topo": "2.x.x" - }, - "dependencies": { - "hoek": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", - "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", - "dev": true - } + "hoek": "5.x.x", + "isemail": "3.x.x", + "topo": "3.x.x" } }, "jpeg-js": { @@ -4138,6 +4495,16 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", @@ -4194,6 +4561,18 @@ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" }, + "json-schema-traverse": { + "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://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", @@ -4235,6 +4614,16 @@ } } }, + "jsx-ast-utils": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.2.1.tgz", + "integrity": "sha512-v3FxCcAf20DayI+uxnCuw795+oOIkVu6EnJ1+kSzhqqTZHNkTZ7B66ZgLp4oLJ/gbA64cI0B7WRoHZMSRdyVRQ==", + "dev": true, + "requires": { + "array-includes": "^3.0.3", + "object.assign": "^4.1.0" + } + }, "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", @@ -4478,9 +4867,9 @@ } }, "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", "dev": true }, "lodash.isequal": { @@ -4489,11 +4878,6 @@ "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", "dev": true }, - "lodash.merge": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.0.tgz", - "integrity": "sha1-aYhLoUSsM/5plzemCG3v+t0PicU=" - }, "lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", @@ -4519,11 +4903,6 @@ "signal-exit": "^3.0.0" } }, - "lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=" - }, "lowercase-keys": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", @@ -4702,21 +5081,21 @@ } }, "mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" }, "mime-db": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" }, "mime-types": { - "version": "2.1.18", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", - "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", "requires": { - "mime-db": "~1.33.0" + "mime-db": "1.40.0" } }, "mimic-fn": { @@ -4778,12 +5157,6 @@ } } }, - "moment": { - "version": "2.22.2", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.2.tgz", - "integrity": "sha1-PCV/mDn8DpP/UxSWMiOeuQeD/2Y=", - "dev": true - }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -4827,18 +5200,10 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, - "ncname": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ncname/-/ncname-1.0.0.tgz", - "integrity": "sha1-W1etGLHKCShk72Kwse2BlPODtxw=", - "requires": { - "xml-char-classes": "^1.0.0" - } - }, "negotiator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" }, "neo-async": { "version": "2.6.1", @@ -4852,14 +5217,6 @@ "integrity": "sha512-2NpiFHqC87y/zFke0fC0spBXL3bBsoh/p5H1EFhshxjCR5+0g2d6BiXbUFz9v1sAcxsk2htp2eQnNIci2dIYcA==", "dev": true }, - "no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", - "requires": { - "lower-case": "^1.1.1" - } - }, "node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -4907,12 +5264,13 @@ } }, "npm-audit-ci-wrapper": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/npm-audit-ci-wrapper/-/npm-audit-ci-wrapper-2.2.1.tgz", - "integrity": "sha512-SPlvkyQwvMxVe6gvYIVOu6GOCVnGrl6NhROT9fhh1jVnLC6jy/AREAwvI0pPjjdIXlAOtGKmssb5JSfzGLuiDQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/npm-audit-ci-wrapper/-/npm-audit-ci-wrapper-2.3.0.tgz", + "integrity": "sha512-sGY7y/9vNb7CMPPRZWOpFrjmTuiYWn73UwpSpm5H1kNyGkGlUa7i148/dR4NSneqUeUSnQV3Bs/hX2oSY4vgLg==", "dev": true, "requires": { - "argv": "0.0.2" + "argv": "0.0.2", + "cli-table": "^0.3.1" } }, "npm-run-path": { @@ -4993,6 +5351,42 @@ "isobject": "^3.0.0" } }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.entries": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.0.tgz", + "integrity": "sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.12.0", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "object.fromentries": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.0.tgz", + "integrity": "sha512-9iLiI6H083uiqUuvzyY6qrlmc/Gz8hLQFOcb/Ri/0xXFkSNS3ctV+CbE6yM2+AnkYfOB3dGjdzC0wrMLIhQICA==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.11.0", + "function-bind": "^1.1.1", + "has": "^1.0.1" + } + }, "object.getownpropertydescriptors": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", @@ -5012,6 +5406,18 @@ "isobject": "^3.0.1" } }, + "object.values": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.0.tgz", + "integrity": "sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.12.0", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -5021,9 +5427,9 @@ } }, "on-headers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", - "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" }, "once": { "version": "1.4.0", @@ -5220,12 +5626,13 @@ "semver": "^5.1.0" } }, - "param-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, "requires": { - "no-case": "^2.2.0" + "callsites": "^3.0.0" } }, "parse-cache-control": { @@ -5250,9 +5657,9 @@ "dev": true }, "parseurl": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", - "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" }, "pascalcase": { "version": "0.1.1", @@ -5467,9 +5874,9 @@ "dev": true }, "prerender-node": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/prerender-node/-/prerender-node-3.2.4.tgz", - "integrity": "sha512-a8rDQQWSpZ1fVnvQ5CFmrO8UXTzxazIxIlrF5r68Zf+j4RgMp8E0IMWq/iewpzvQrP1fvvmEZz8LUxFLkrZXfQ==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/prerender-node/-/prerender-node-3.2.5.tgz", + "integrity": "sha512-8vV2kXkYp82mgOqNbcQUBEzVEreB0khNxsASiHVRLfK9PR60mHg2m33QHe/TcOrr0XRsBFYK4j8FgmLMah9ZXw==", "requires": { "request": "^2.88.0" } @@ -5516,13 +5923,24 @@ "sisteransi": "^1.0.0" } }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "dev": true, + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, "proxy-addr": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.2.tgz", - "integrity": "sha1-ZXFQT0e7mI7IGAJT+F3X4UlSvew=", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", + "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", "requires": { "forwarded": "~0.1.2", - "ipaddr.js": "1.5.2" + "ipaddr.js": "1.9.0" } }, "proxy-from-env": { @@ -5532,12 +5950,12 @@ "dev": true }, "ps-tree": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.1.0.tgz", - "integrity": "sha1-tCGyQUDWID8e08dplrRCewjowBQ=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.2.0.tgz", + "integrity": "sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==", "dev": true, "requires": { - "event-stream": "~3.3.0" + "event-stream": "=3.3.4" } }, "pseudomap": { @@ -5567,9 +5985,9 @@ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" }, "puppeteer": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-1.18.0.tgz", - "integrity": "sha512-NCwSN4wEIj43k4jO8Asa5nzibrIDFHWykqkZFjkGr0/f6U73k1ysql0gadQmOGLtZewXvvWqlNo+4ZMgX+5vZA==", + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-1.19.0.tgz", + "integrity": "sha512-2S6E6ygpoqcECaagDbBopoSOPDv0pAZvTbnBgUY+6hq0/XDFDOLEMNlHF/SKJlzcaZ9ckiKjKDuueWI3FN/WXw==", "dev": true, "requires": { "debug": "^4.1.0", @@ -5625,9 +6043,9 @@ "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" }, "range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" }, "raven": { "version": "2.6.3", @@ -5651,14 +6069,24 @@ } }, "raw-body": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", - "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", "requires": { - "bytes": "3.0.0", - "http-errors": "1.6.2", - "iconv-lite": "0.4.19", + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", "unpipe": "1.0.0" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + } } }, "rc": { @@ -5765,6 +6193,12 @@ "safe-regex": "^1.1.0" } }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true + }, "registry-auth-token": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", @@ -5784,11 +6218,6 @@ "rc": "^1.0.1" } }, - "relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=" - }, "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", @@ -6109,10 +6538,20 @@ "rx-lite": "*" } }, + "rxjs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz", + "integrity": "sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, "safe-buffer": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true }, "safe-regex": { "version": "1.1.0", @@ -6193,41 +6632,41 @@ } }, "send": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz", - "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==", + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", "requires": { "debug": "2.6.9", - "depd": "~1.1.1", + "depd": "~1.1.2", "destroy": "~1.0.4", - "encodeurl": "~1.0.1", + "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "~1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.3.1" + "range-parser": "~1.2.1", + "statuses": "~1.5.0" }, "dependencies": { - "statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" } } }, "serve-static": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz", - "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", "requires": { - "encodeurl": "~1.0.1", + "encodeurl": "~1.0.2", "escape-html": "~1.0.3", - "parseurl": "~1.3.2", - "send": "0.16.1" + "parseurl": "~1.3.3", + "send": "0.17.1" } }, "set-blocking": { @@ -6260,9 +6699,9 @@ } }, "setprototypeof": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", - "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" }, "shebang-command": { "version": "1.2.0", @@ -6303,6 +6742,17 @@ "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", "dev": true }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "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://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -6514,6 +6964,12 @@ "extend-shallow": "^3.0.0" } }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, "sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", @@ -6558,28 +7014,34 @@ "dev": true }, "start-server-and-test": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/start-server-and-test/-/start-server-and-test-1.7.0.tgz", - "integrity": "sha512-I2gbtuCIReARSihgaf4AvCBk1aee4f6cQJkZUsU/1MaA4hfq4gUaEenOoYLuryVJWF2hA4ryX3WjGBmWM+VcMQ==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/start-server-and-test/-/start-server-and-test-1.9.1.tgz", + "integrity": "sha512-vRtUxxW34Li+EvemuWtgASyR2KBE+DPoEJ/l5REe+cKxm31jadGm1PSDVBronqQVsvhncRGm4iZc53pFH+FNEA==", "dev": true, "requires": { - "bluebird": "3.5.1", + "bluebird": "3.5.5", "check-more-types": "2.24.0", - "debug": "3.1.0", - "execa": "0.10.0", + "debug": "4.1.1", + "execa": "0.11.0", "lazy-ass": "1.6.0", - "ps-tree": "1.1.0", - "wait-on": "2.1.0" + "ps-tree": "1.2.0", + "wait-on": "3.2.0" }, "dependencies": { "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "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.0.0" + "ms": "^2.1.1" } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true } } }, @@ -6605,9 +7067,9 @@ } }, "statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" }, "stealthy-require": { "version": "1.1.1", @@ -6712,6 +7174,52 @@ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", "dev": true }, + "table": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.5.tgz", + "integrity": "sha512-oGa2Hl7CQjfoaogtrOHEJroOcYILTx7BZWLGsJIlzoWmB2zmguhNfPJZsWPKYek/MgCxfco54gEi31d1uN2hFA==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, "term-size": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", @@ -6835,6 +7343,12 @@ } } }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, "throat": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", @@ -6916,19 +7430,24 @@ "repeat-string": "^1.6.1" } }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, "topo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/topo/-/topo-2.0.2.tgz", - "integrity": "sha1-zVYVdSU5BXwNwEkaYhw7xvvh0YI=", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/topo/-/topo-3.0.3.tgz", + "integrity": "sha512-IgpPtvD4kjrJ7CRA3ov2FhWQADwv+Tdqbsf1ZnPUSAtCJ9e1Z44MmoSGDXGk4IppoZA7jd/QRkNddlLJWlUZsQ==", "dev": true, "requires": { - "hoek": "4.x.x" + "hoek": "6.x.x" }, "dependencies": { "hoek": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", - "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz", + "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==", "dev": true } } @@ -6980,6 +7499,12 @@ "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", "dev": true }, + "tslib": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", + "dev": true + }, "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", @@ -7004,12 +7529,12 @@ } }, "type-is": { - "version": "1.6.16", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", - "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "requires": { "media-typer": "0.3.0", - "mime-types": "~2.1.18" + "mime-types": "~2.1.24" } }, "typedarray": { @@ -7140,11 +7665,6 @@ "xdg-basedir": "^3.0.0" } }, - "upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=" - }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", @@ -7244,15 +7764,15 @@ } }, "wait-on": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-2.1.0.tgz", - "integrity": "sha512-hDwJ674+7dfiiK/cxtYCwPxlnjXDjto/pCz1PF02sXUhqCqCWsgvxZln0699PReWqXXgkxqkF6DDo5Rj9sjNvw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-3.2.0.tgz", + "integrity": "sha512-QUGNKlKLDyY6W/qHdxaRlXUAgLPe+3mLL/tRByHpRNcHs/c7dZXbu+OnJWGNux6tU1WFh/Z8aEwvbuzSAu79Zg==", "dev": true, "requires": { - "core-js": "^2.4.1", - "joi": "^9.2.0", + "core-js": "^2.5.7", + "joi": "^13.0.0", "minimist": "^1.2.0", - "request": "^2.78.0", + "request": "^2.88.0", "rx": "^4.1.0" } }, @@ -7385,6 +7905,15 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, "write-file-atomic": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", @@ -7411,11 +7940,6 @@ "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", "dev": true }, - "xml-char-classes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/xml-char-classes/-/xml-char-classes-1.0.0.tgz", - "integrity": "sha1-ZGV4SKIP/F31g6Qq2KJ3tFErvE0=" - }, "xml-name-validator": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", diff --git a/home/package.json b/home/package.json index 8e84e334d8..c86576e93d 100755 --- a/home/package.json +++ b/home/package.json @@ -11,26 +11,26 @@ "audit": "npm-audit-ci-wrapper --threshold=high" }, "dependencies": { - "body-parser": "^1.14.1", - "compression": "^1.7.0", - "ejs": "^2.3.1", - "express": "^4.12.3", - "express-minify-html": "^0.12.0", + "body-parser": "^1.19.0", + "compression": "^1.7.4", + "ejs": "^2.6.2", + "express": "^4.17.1", "express-seojs": "0.0.5", "path": "^0.11.14", - "prerender-node": "^3.2.4", + "prerender-node": "^3.2.5", "q": "^1.4.1", "request": "^2.88.0", "twitter-node-client": "0.0.6" }, "devDependencies": { - "chrome-launcher": "^0.10.2", + "chrome-launcher": "^0.10.7", + "eslint": "5.16.0", + "eslint-plugin-react": "^7.14.3", "faker": "^4.1.0", "jest": "^24.8.0", "lighthouse": "^2.9.4", - "eslint": "5.16.0", - "npm-audit-ci-wrapper": "^2.2.1", - "puppeteer": "^1.18.0", - "start-server-and-test": "^1.7.0" + "npm-audit-ci-wrapper": "^2.3.0", + "puppeteer": "^1.19.0", + "start-server-and-test": "^1.9.1" } } diff --git a/home/server.js b/home/server.js index 9de1faab9e..209145095e 100755 --- a/home/server.js +++ b/home/server.js @@ -3,30 +3,11 @@ var app = express(); var bodyParser = require('body-parser'); var request = require('request'); var path = require('path'); -var minifyHTML = require('express-minify-html'); var compression = require('compression'); - app.use(bodyParser.json()); app.use(bodyParser.urlencoded({extended: true})); - -//If its in production, then compress everything. -if(process.env && process.env.PRODUCTION){ - app.use(minifyHTML({ - override: true, - exception_url: false, - htmlMinifier: { - removeComments: true, - collapseWhitespace: true, - collapseBooleanAttributes: true, - removeAttributeQuotes: true, - removeEmptyAttributes: true, - minifyJS: true - } - })); -} - app.use(compression()); app.use('*', function(req, res, next) { diff --git a/probe/index.js b/probe/index.js index 2237566611..2ac458b00c 100755 --- a/probe/index.js +++ b/probe/index.js @@ -1,27 +1,27 @@ -var express = require('express'); -var app = express(); -var http = require('http').createServer(app); -var cors = require('cors'); -const Main = require('./workers/main'); -const cron = require('node-cron'); - -app.use(cors()); -app.set('port', process.env.PORT || 3008); - -http.listen(app.get('port'), function () { - // eslint-disable-next-line +var express = require('express'); +var app = express(); +var http = require('http').createServer(app); +var cors = require('cors'); +const Main = require('./workers/main'); +const cron = require('node-cron'); + +app.use(cors()); +app.set('port', process.env.PORT || 3008); + +http.listen(app.get('port'), function () { + // eslint-disable-next-line console.log('Server Started on port ' + app.get('port')); -}); - -app.get('/', function (req, res) { - res.setHeader('Content-Type', 'application/json'); - res.send(JSON.stringify({ - status: 200, - message: 'Service Status - OK', - })); -}); - -// This cron runs every minute -cron.schedule('* * * * *',() =>{Main.runJob();}); - -module.exports = app; +}); + +app.get('/', function (req, res) { + res.setHeader('Content-Type', 'application/json'); + res.send(JSON.stringify({ + status: 200, + message: 'Service Status - OK', + })); +}); + +// This cron runs every minute +cron.schedule('* * * * *',() =>{Main.runJob();}); + +module.exports = app; diff --git a/probe/utils/api.js b/probe/utils/api.js index 6b73e804ba..a020dedb41 100755 --- a/probe/utils/api.js +++ b/probe/utils/api.js @@ -1,99 +1,99 @@ -const axios = require('axios'); -const config = require('./config'); - -var headers = { - 'Access-Control-Allow-Origin': '*', - 'Accept': 'application/json', - 'Content-Type': 'application/json;charset=UTF-8', - 'probeName': config.probeName, - 'probeKey': config.accessKey -}; - -module.exports = { - postApi: (url, data) => { - return new Promise((resolve, reject) => { - axios({ - method: 'POST', - url: `${config.serverUrl}/${url}`, - headers, - data - }) - .then(function (response) { - resolve(response.data); - }) - .catch(function (error) { - if (error && error.response && error.response.data) - error = error.response.data; - if (error && error.data) { - error = error.data; - } - reject(error); - }); - }); - }, - - getApi: (url) => { - return new Promise((resolve, reject) => { - axios({ - method: 'GET', - url: `${config.serverUrl}/${url}`, - headers - }) - .then(function (response) { - resolve(response.data); - }) - .catch(function (error) { - if (error && error.response && error.response.data) - error = error.response.data; - if (error && error.data) { - error = error.data; - } - reject(error); - }); - }); - }, - - putApi: (url, data) => { - return new Promise((resolve, reject) => { - axios({ - method: 'PUT', - url: `${config.serverUrl}/${url}`, - headers, - data - }) - .then(function (response) { - resolve(response.data); - }) - .catch(function (error) { - if (error && error.response && error.response.data) - error = error.response.data; - if (error && error.data) { - error = error.data; - } - reject(error); - }); - }); - }, - - deleteApi: (url, data) => { - return new Promise((resolve, reject) => { - axios({ - method: 'DELETE', - url: `${config.serverUrl}/${url}`, - headers, - data - }) - .then(function (response) { - resolve(response.data); - }) - .catch(function (error) { - if (error && error.response && error.response.data) - error = error.response.data; - if (error && error.data) { - error = error.data; - } - reject(error); - }); - }); - } -}; +const axios = require('axios'); +const config = require('./config'); + +var headers = { + 'Access-Control-Allow-Origin': '*', + 'Accept': 'application/json', + 'Content-Type': 'application/json;charset=UTF-8', + 'probeName': config.probeName, + 'probeKey': config.accessKey +}; + +module.exports = { + postApi: (url, data) => { + return new Promise((resolve, reject) => { + axios({ + method: 'POST', + url: `${config.serverUrl}/${url}`, + headers, + data + }) + .then(function (response) { + resolve(response.data); + }) + .catch(function (error) { + if (error && error.response && error.response.data) + error = error.response.data; + if (error && error.data) { + error = error.data; + } + reject(error); + }); + }); + }, + + getApi: (url) => { + return new Promise((resolve, reject) => { + axios({ + method: 'GET', + url: `${config.serverUrl}/${url}`, + headers + }) + .then(function (response) { + resolve(response.data); + }) + .catch(function (error) { + if (error && error.response && error.response.data) + error = error.response.data; + if (error && error.data) { + error = error.data; + } + reject(error); + }); + }); + }, + + putApi: (url, data) => { + return new Promise((resolve, reject) => { + axios({ + method: 'PUT', + url: `${config.serverUrl}/${url}`, + headers, + data + }) + .then(function (response) { + resolve(response.data); + }) + .catch(function (error) { + if (error && error.response && error.response.data) + error = error.response.data; + if (error && error.data) { + error = error.data; + } + reject(error); + }); + }); + }, + + deleteApi: (url, data) => { + return new Promise((resolve, reject) => { + axios({ + method: 'DELETE', + url: `${config.serverUrl}/${url}`, + headers, + data + }) + .then(function (response) { + resolve(response.data); + }) + .catch(function (error) { + if (error && error.response && error.response.data) + error = error.response.data; + if (error && error.data) { + error = error.data; + } + reject(error); + }); + }); + } +}; diff --git a/probe/utils/apiService.js b/probe/utils/apiService.js index cac7c8f847..5c1fbc9a4f 100755 --- a/probe/utils/apiService.js +++ b/probe/utils/apiService.js @@ -1,10 +1,10 @@ -const postApi = require('./api').postApi; - -module.exports = { - setMonitorTime: async function (monitorId,responseTime,responseStatus,status) { - return await postApi(`probe/setTime/${monitorId}`,{responseTime,responseStatus,status}); - }, - getMonitorTime: async function (monitorId,date) { - return await postApi(`probe/getTime/${monitorId}`,date); - }, +const postApi = require('./api').postApi; + +module.exports = { + setMonitorTime: async function (monitorId,responseTime,responseStatus,status) { + return await postApi(`probe/setTime/${monitorId}`,{responseTime,responseStatus,status}); + }, + getMonitorTime: async function (monitorId,date) { + return await postApi(`probe/getTime/${monitorId}`,date); + }, }; \ No newline at end of file diff --git a/probe/utils/conditionCheck.js b/probe/utils/conditionCheck.js index ed7f77daf4..2ecb457690 100755 --- a/probe/utils/conditionCheck.js +++ b/probe/utils/conditionCheck.js @@ -1,305 +1,305 @@ -var _ = require('lodash'); -module.exports = { - headers: async (val, type) => { - let header = {}; - if (type && type.length) { - header['Content-Type'] = type; - } - if (val && val.length) { - val.map(head => { - header[head.key] = head.value; - }); - } - return header; - }, - - body: async (val, type) => { - let bodyContent = {}; - if (type && type === 'formData' && val && val[0] && val[0].key) { - val.map(bod => { - bodyContent[bod.key] = bod.value; - }); - bodyContent = JSON.stringify(bodyContent); - } - else if (type && type === 'text' && val && val.length) { - bodyContent = val; - } - return bodyContent; - }, - - conditions: async (respTime, resp, con) => { - let stat = true; - if (con && con.and && con.and.length) { - stat = await checkAnd(respTime, con.and, resp.status || resp.statusCode || null, resp.body || null); - } - else if (con && con.or && con.or.length) { - stat = await checkOr(respTime, con.or, resp.status || resp.statusCode || null, resp.body || null); - } - return stat; - }, -}; - - -const checkAnd = async (respTime, con, statusCode, body) => { - let validity = true; - for (let i = 0; i < con.length; i++) { - if (con[i] && con[i].responseType && con[i].responseType === 'responseTime') { - if (con[i] && con[i].filter && con[i].filter === 'greaterThan') { - if (!(con[i] && con[i].field1 && respTime && respTime > con[i].field1)) { - validity = false; - } - } - else if (con[i] && con[i].filter && con[i].filter === 'lessThan') { - if (!(con[i] && con[i].field1 && respTime && respTime < con[i].field1)) { - validity = false; - } - } - else if (con[i] && con[i].filter && con[i].filter === 'inBetween') { - if (!(con[i] && con[i].field1 && respTime && con[i].field2 && respTime > con[i].field1 && respTime < con[i].field2)) { - validity = false; - } - } - else if (con[i] && con[i].filter && con[i].filter === 'equalTo') { - if (!(con[i] && con[i].field1 && respTime && respTime == con[i].field1)) { - validity = false; - } - } - else if (con[i] && con[i].filter && con[i].filter === 'notEqualTo') { - if (!(con[i] && con[i].field1 && respTime && respTime != con[i].field1)) { - validity = false; - } - } - else if (con[i] && con[i].filter && con[i].filter === 'gtEqualTo') { - if (!(con[i] && con[i].field1 && respTime && respTime >= con[i].field1)) { - validity = false; - } - } - else if (con[i] && con[i].filter && con[i].filter === 'ltEqualTo') { - if (!(con[i] && con[i].field1 && respTime && respTime <= con[i].field1)) { - validity = false; - } - } - } - else if (con[i] && con[i].responseType === 'doesRespond') { - if (con[i] && con[i].filter && con[i].filter === 'isUp') { - if (!(con[i] && con[i].filter && respTime)) { - validity = false; - } - } - else if (con[i] && con[i].filter && con[i].filter === 'isDown') { - if (!(con[i] && con[i].filter && !respTime)) { - validity = false; - } - } - } - else if (con[i] && con[i].responseType === 'statusCode') { - if (con[i] && con[i].filter && con[i].filter === 'greaterThan') { - if (!(con[i] && con[i].field1 && statusCode && statusCode > con[i].field1)) { - validity = false; - } - } - else if (con[i] && con[i].filter && con[i].filter === 'lessThan') { - if (!(con[i] && con[i].field1 && statusCode && statusCode < con[i].field1)) { - validity = false; - } - } - else if (con[i] && con[i].filter && con[i].filter === 'inBetween') { - if (!(con[i] && con[i].field1 && statusCode && con[i].field2 && statusCode > con[i].field1 && statusCode < con[i].field2)) { - validity = false; - } - } - else if (con[i] && con[i].filter && con[i].filter === 'equalTo') { - if (!(con[i] && con[i].field1 && statusCode && statusCode == con[i].field1)) { - validity = false; - } - } - else if (con[i] && con[i].filter && con[i].filter === 'notEqualTo') { - if (!(con[i] && con[i].field1 && statusCode && statusCode != con[i].field1)) { - validity = false; - } - } - else if (con[i] && con[i].filter && con[i].filter === 'gtEqualTo') { - if (!(con[i] && con[i].field1 && statusCode && statusCode >= con[i].field1)) { - validity = false; - } - } - else if (con[i] && con[i].filter && con[i].filter === 'ltEqualTo') { - if (!(con[i] && con[i].field1 && statusCode && statusCode <= con[i].field1)) { - validity = false; - } - } - } - else if (con[i] && con[i].responseType === 'responseBody') { - if (con[i] && con[i].filter && con[i].filter === 'contains') { - if (!(con[i] && con[i].field1 && body && body[con[i].field1])) { - validity = false; - } - } - else if (con[i] && con[i].filter && con[i].filter === 'doesNotContain') { - if (!(con[i] && con[i].field1 && body && !body[con[i].field1])) { - validity = false; - } - } - else if (con[i] && con[i].filter && con[i].filter === 'jsExpression') { - if (!(con[i] && con[i].field1 && body && body[con[i].field1] === con[i].field1)) { - validity = false; - } - } - else if (con[i] && con[i].filter && con[i].filter === 'empty') { - if (!(con[i] && con[i].filter && body && _.isEmpty(body))) { - validity = false; - } - } - else if (con[i] && con[i].filter && con[i].filter === 'notEmpty') { - if (!(con[i] && con[i].filter && body && !_.isEmpty(body))) { - validity = false; - } - } - } - if (con[i] && con[i].collection && con[i].collection.and && con[i].collection.and.length) { - let temp = await checkAnd(respTime, con[i].collection.and, statusCode, body); - if (!temp) { - validity = temp; - } - } - else if (con[i] && con[i].collection && con[i].collection.or && con[i].collection.or.length) { - let temp1 = await checkOr(respTime, con[i].collection.or, statusCode, body); - if (!temp1) { - validity = temp1; - } - } - } - return validity; -}; - -const checkOr = async (respTime, con, statusCode, body) => { - let validity = false; - for (let i = 0; i < con.length; i++) { - if (con[i] && con[i].responseType === 'responseTime') { - if (con[i] && con[i].filter && con[i].filter === 'greaterThan') { - if (con[i] && con[i].field1 && respTime && respTime > con[i].field1) { - validity = true; - } - } - else if (con[i] && con[i].filter && con[i].filter === 'lessThan') { - if (con[i] && con[i].field1 && respTime && respTime < con[i].field1) { - validity = true; - } - } - else if (con[i] && con[i].filter && con[i].filter === 'inBetween') { - if (con[i] && con[i].field1 && respTime && con[i].field2 && respTime > con[i].field1 && respTime < con[i].field2) { - validity = true; - } - } - else if (con[i] && con[i].filter && con[i].filter === 'equalTo') { - if (con[i] && con[i].field1 && respTime && respTime == con[i].field1) { - validity = true; - } - } - else if (con[i] && con[i].filter && con[i].filter === 'notEqualTo') { - if (con[i] && con[i].field1 && respTime && respTime != con[i].field1) { - validity = true; - } - } - else if (con[i] && con[i].filter && con[i].filter === 'gtEqualTo') { - if (con[i] && con[i].field1 && respTime && respTime >= con[i].field1) { - validity = true; - } - } - else if (con[i] && con[i].filter && con[i].filter === 'ltEqualTo') { - if (con[i] && con[i].field1 && respTime && respTime <= con[i].field1) { - validity = true; - } - } - } - else if (con[i] && con[i].responseType === 'doesRespond') { - if (con[i] && con[i].filter && con[i].filter === 'isUp') { - if (con[i] && con[i].filter && respTime) { - validity = true; - } - } - else if (con[i] && con[i].filter && con[i].filter === 'isDown') { - if (con[i] && con[i].filter && !respTime) { - validity = true; - } - } - } - else if (con[i] && con[i].responseType === 'statusCode') { - if (con[i] && con[i].filter && con[i].filter === 'greaterThan') { - if (con[i] && con[i].field1 && statusCode && statusCode > con[i].field1) { - validity = true; - } - } - else if (con[i] && con[i].filter && con[i].filter === 'lessThan') { - if (con[i] && con[i].field1 && statusCode && statusCode < con[i].field1) { - validity = true; - } - } - else if (con[i] && con[i].filter && con[i].filter === 'inBetween') { - if (con[i] && con[i].field1 && statusCode && con[i].field2 && statusCode > con[i].field1 && statusCode < con[i].field2) { - validity = true; - } - } - else if (con[i] && con[i].filter && con[i].filter === 'equalTo') { - if (con[i] && con[i].field1 && statusCode && statusCode == con[i].field1) { - validity = true; - } - } - else if (con[i] && con[i].filter && con[i].filter === 'notEqualTo') { - if (con[i] && con[i].field1 && statusCode && statusCode != con[i].field1) { - validity = true; - } - } - else if (con[i] && con[i].filter && con[i].filter === 'gtEqualTo') { - if (con[i] && con[i].field1 && statusCode && statusCode >= con[i].field1) { - validity = true; - } - } - else if (con[i] && con[i].filter && con[i].filter === 'ltEqualTo') { - if (con[i] && con[i].field1 && statusCode && statusCode <= con[i].field1) { - validity = true; - } - } - } - else if (con[i] && con[i].responseType === 'responseBody') { - if (con[i] && con[i].filter && con[i].filter === 'contains') { - if (con[i] && con[i].field1 && body && body[con[i].field1]) { - validity = true; - } - } - else if (con[i] && con[i].filter && con[i].filter === 'doesNotContain') { - if (con[i] && con[i].field1 && body && !body[con[i].field1]) { - validity = true; - } - } - else if (con[i] && con[i].filter && con[i].filter === 'jsExpression') { - if (con[i] && con[i].field1 && body && body[con[i].field1] === con[i].field1) { - validity = true; - } - } - else if (con[i] && con[i].filter && con[i].filter === 'empty') { - if (con[i] && con[i].filter && body && _.isEmpty(body)) { - validity = true; - } - } - else if (con[i] && con[i].filter && con[i].filter === 'notEmpty') { - if (con[i] && con[i].filter && body && !_.isEmpty(body)) { - validity = true; - } - } - } - if (con[i] && con[i].collection && con[i].collection.and && con[i].collection.and.length) { - let temp = await checkAnd(respTime, con[i].collection.and, statusCode, body); - if (temp) { - validity = temp; - } - } - else if (con[i] && con[i].collection && con[i].collection.or && con[i].collection.or.length) { - let temp1 = await checkOr(respTime, con[i].collection.or, statusCode, body); - if (temp1) { - validity = temp1; - } - } - } - return validity; +var _ = require('lodash'); +module.exports = { + headers: async (val, type) => { + let header = {}; + if (type && type.length) { + header['Content-Type'] = type; + } + if (val && val.length) { + val.map(head => { + header[head.key] = head.value; + }); + } + return header; + }, + + body: async (val, type) => { + let bodyContent = {}; + if (type && type === 'formData' && val && val[0] && val[0].key) { + val.map(bod => { + bodyContent[bod.key] = bod.value; + }); + bodyContent = JSON.stringify(bodyContent); + } + else if (type && type === 'text' && val && val.length) { + bodyContent = val; + } + return bodyContent; + }, + + conditions: async (respTime, resp, con) => { + let stat = true; + if (con && con.and && con.and.length) { + stat = await checkAnd(respTime, con.and, resp.status || resp.statusCode || null, resp.body || null); + } + else if (con && con.or && con.or.length) { + stat = await checkOr(respTime, con.or, resp.status || resp.statusCode || null, resp.body || null); + } + return stat; + }, +}; + + +const checkAnd = async (respTime, con, statusCode, body) => { + let validity = true; + for (let i = 0; i < con.length; i++) { + if (con[i] && con[i].responseType && con[i].responseType === 'responseTime') { + if (con[i] && con[i].filter && con[i].filter === 'greaterThan') { + if (!(con[i] && con[i].field1 && respTime && respTime > con[i].field1)) { + validity = false; + } + } + else if (con[i] && con[i].filter && con[i].filter === 'lessThan') { + if (!(con[i] && con[i].field1 && respTime && respTime < con[i].field1)) { + validity = false; + } + } + else if (con[i] && con[i].filter && con[i].filter === 'inBetween') { + if (!(con[i] && con[i].field1 && respTime && con[i].field2 && respTime > con[i].field1 && respTime < con[i].field2)) { + validity = false; + } + } + else if (con[i] && con[i].filter && con[i].filter === 'equalTo') { + if (!(con[i] && con[i].field1 && respTime && respTime == con[i].field1)) { + validity = false; + } + } + else if (con[i] && con[i].filter && con[i].filter === 'notEqualTo') { + if (!(con[i] && con[i].field1 && respTime && respTime != con[i].field1)) { + validity = false; + } + } + else if (con[i] && con[i].filter && con[i].filter === 'gtEqualTo') { + if (!(con[i] && con[i].field1 && respTime && respTime >= con[i].field1)) { + validity = false; + } + } + else if (con[i] && con[i].filter && con[i].filter === 'ltEqualTo') { + if (!(con[i] && con[i].field1 && respTime && respTime <= con[i].field1)) { + validity = false; + } + } + } + else if (con[i] && con[i].responseType === 'doesRespond') { + if (con[i] && con[i].filter && con[i].filter === 'isUp') { + if (!(con[i] && con[i].filter && respTime)) { + validity = false; + } + } + else if (con[i] && con[i].filter && con[i].filter === 'isDown') { + if (!(con[i] && con[i].filter && !respTime)) { + validity = false; + } + } + } + else if (con[i] && con[i].responseType === 'statusCode') { + if (con[i] && con[i].filter && con[i].filter === 'greaterThan') { + if (!(con[i] && con[i].field1 && statusCode && statusCode > con[i].field1)) { + validity = false; + } + } + else if (con[i] && con[i].filter && con[i].filter === 'lessThan') { + if (!(con[i] && con[i].field1 && statusCode && statusCode < con[i].field1)) { + validity = false; + } + } + else if (con[i] && con[i].filter && con[i].filter === 'inBetween') { + if (!(con[i] && con[i].field1 && statusCode && con[i].field2 && statusCode > con[i].field1 && statusCode < con[i].field2)) { + validity = false; + } + } + else if (con[i] && con[i].filter && con[i].filter === 'equalTo') { + if (!(con[i] && con[i].field1 && statusCode && statusCode == con[i].field1)) { + validity = false; + } + } + else if (con[i] && con[i].filter && con[i].filter === 'notEqualTo') { + if (!(con[i] && con[i].field1 && statusCode && statusCode != con[i].field1)) { + validity = false; + } + } + else if (con[i] && con[i].filter && con[i].filter === 'gtEqualTo') { + if (!(con[i] && con[i].field1 && statusCode && statusCode >= con[i].field1)) { + validity = false; + } + } + else if (con[i] && con[i].filter && con[i].filter === 'ltEqualTo') { + if (!(con[i] && con[i].field1 && statusCode && statusCode <= con[i].field1)) { + validity = false; + } + } + } + else if (con[i] && con[i].responseType === 'responseBody') { + if (con[i] && con[i].filter && con[i].filter === 'contains') { + if (!(con[i] && con[i].field1 && body && body[con[i].field1])) { + validity = false; + } + } + else if (con[i] && con[i].filter && con[i].filter === 'doesNotContain') { + if (!(con[i] && con[i].field1 && body && !body[con[i].field1])) { + validity = false; + } + } + else if (con[i] && con[i].filter && con[i].filter === 'jsExpression') { + if (!(con[i] && con[i].field1 && body && body[con[i].field1] === con[i].field1)) { + validity = false; + } + } + else if (con[i] && con[i].filter && con[i].filter === 'empty') { + if (!(con[i] && con[i].filter && body && _.isEmpty(body))) { + validity = false; + } + } + else if (con[i] && con[i].filter && con[i].filter === 'notEmpty') { + if (!(con[i] && con[i].filter && body && !_.isEmpty(body))) { + validity = false; + } + } + } + if (con[i] && con[i].collection && con[i].collection.and && con[i].collection.and.length) { + let temp = await checkAnd(respTime, con[i].collection.and, statusCode, body); + if (!temp) { + validity = temp; + } + } + else if (con[i] && con[i].collection && con[i].collection.or && con[i].collection.or.length) { + let temp1 = await checkOr(respTime, con[i].collection.or, statusCode, body); + if (!temp1) { + validity = temp1; + } + } + } + return validity; +}; + +const checkOr = async (respTime, con, statusCode, body) => { + let validity = false; + for (let i = 0; i < con.length; i++) { + if (con[i] && con[i].responseType === 'responseTime') { + if (con[i] && con[i].filter && con[i].filter === 'greaterThan') { + if (con[i] && con[i].field1 && respTime && respTime > con[i].field1) { + validity = true; + } + } + else if (con[i] && con[i].filter && con[i].filter === 'lessThan') { + if (con[i] && con[i].field1 && respTime && respTime < con[i].field1) { + validity = true; + } + } + else if (con[i] && con[i].filter && con[i].filter === 'inBetween') { + if (con[i] && con[i].field1 && respTime && con[i].field2 && respTime > con[i].field1 && respTime < con[i].field2) { + validity = true; + } + } + else if (con[i] && con[i].filter && con[i].filter === 'equalTo') { + if (con[i] && con[i].field1 && respTime && respTime == con[i].field1) { + validity = true; + } + } + else if (con[i] && con[i].filter && con[i].filter === 'notEqualTo') { + if (con[i] && con[i].field1 && respTime && respTime != con[i].field1) { + validity = true; + } + } + else if (con[i] && con[i].filter && con[i].filter === 'gtEqualTo') { + if (con[i] && con[i].field1 && respTime && respTime >= con[i].field1) { + validity = true; + } + } + else if (con[i] && con[i].filter && con[i].filter === 'ltEqualTo') { + if (con[i] && con[i].field1 && respTime && respTime <= con[i].field1) { + validity = true; + } + } + } + else if (con[i] && con[i].responseType === 'doesRespond') { + if (con[i] && con[i].filter && con[i].filter === 'isUp') { + if (con[i] && con[i].filter && respTime) { + validity = true; + } + } + else if (con[i] && con[i].filter && con[i].filter === 'isDown') { + if (con[i] && con[i].filter && !respTime) { + validity = true; + } + } + } + else if (con[i] && con[i].responseType === 'statusCode') { + if (con[i] && con[i].filter && con[i].filter === 'greaterThan') { + if (con[i] && con[i].field1 && statusCode && statusCode > con[i].field1) { + validity = true; + } + } + else if (con[i] && con[i].filter && con[i].filter === 'lessThan') { + if (con[i] && con[i].field1 && statusCode && statusCode < con[i].field1) { + validity = true; + } + } + else if (con[i] && con[i].filter && con[i].filter === 'inBetween') { + if (con[i] && con[i].field1 && statusCode && con[i].field2 && statusCode > con[i].field1 && statusCode < con[i].field2) { + validity = true; + } + } + else if (con[i] && con[i].filter && con[i].filter === 'equalTo') { + if (con[i] && con[i].field1 && statusCode && statusCode == con[i].field1) { + validity = true; + } + } + else if (con[i] && con[i].filter && con[i].filter === 'notEqualTo') { + if (con[i] && con[i].field1 && statusCode && statusCode != con[i].field1) { + validity = true; + } + } + else if (con[i] && con[i].filter && con[i].filter === 'gtEqualTo') { + if (con[i] && con[i].field1 && statusCode && statusCode >= con[i].field1) { + validity = true; + } + } + else if (con[i] && con[i].filter && con[i].filter === 'ltEqualTo') { + if (con[i] && con[i].field1 && statusCode && statusCode <= con[i].field1) { + validity = true; + } + } + } + else if (con[i] && con[i].responseType === 'responseBody') { + if (con[i] && con[i].filter && con[i].filter === 'contains') { + if (con[i] && con[i].field1 && body && body[con[i].field1]) { + validity = true; + } + } + else if (con[i] && con[i].filter && con[i].filter === 'doesNotContain') { + if (con[i] && con[i].field1 && body && !body[con[i].field1]) { + validity = true; + } + } + else if (con[i] && con[i].filter && con[i].filter === 'jsExpression') { + if (con[i] && con[i].field1 && body && body[con[i].field1] === con[i].field1) { + validity = true; + } + } + else if (con[i] && con[i].filter && con[i].filter === 'empty') { + if (con[i] && con[i].filter && body && _.isEmpty(body)) { + validity = true; + } + } + else if (con[i] && con[i].filter && con[i].filter === 'notEmpty') { + if (con[i] && con[i].filter && body && !_.isEmpty(body)) { + validity = true; + } + } + } + if (con[i] && con[i].collection && con[i].collection.and && con[i].collection.and.length) { + let temp = await checkAnd(respTime, con[i].collection.and, statusCode, body); + if (temp) { + validity = temp; + } + } + else if (con[i] && con[i].collection && con[i].collection.or && con[i].collection.or.length) { + let temp1 = await checkOr(respTime, con[i].collection.or, statusCode, body); + if (temp1) { + validity = temp1; + } + } + } + return validity; }; \ No newline at end of file diff --git a/probe/utils/config.js b/probe/utils/config.js index 861f5225db..5ba1bfc514 100755 --- a/probe/utils/config.js +++ b/probe/utils/config.js @@ -1,5 +1,5 @@ -module.exports = { - serverUrl: process.env['SERVER_URL'] || 'http://localhost:3002', - probeName: process.env['PROBE_NAME'] || 'First Probe', - accessKey : process.env['ACCESS_KEY'] || '33b674ca-9fdd-11e9-a2a3-2a2ae2dbcce4', -}; +module.exports = { + serverUrl: process.env['SERVER_URL'] || 'http://localhost:3002', + probeName: process.env['PROBE_NAME'] || 'First Probe', + accessKey : process.env['ACCESS_KEY'] || '33b674ca-9fdd-11e9-a2a3-2a2ae2dbcce4', +}; diff --git a/probe/utils/errorService.js b/probe/utils/errorService.js index 8fb7df7dd3..f78e183ae1 100755 --- a/probe/utils/errorService.js +++ b/probe/utils/errorService.js @@ -1,22 +1,22 @@ -const winston = require('winston'); -const Slack = require('winston-slack-transport'); - -if (process.env.PORT) { - winston.add(Slack, { - webhook_url: 'https://hooks.slack.com/services/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', - channel: '#fyipe-logs', - username: 'Error Bot', - handleExceptions: true - }); -} - -module.exports = { - log: (functionName, error) => { - error = error && error.message ? error.message : error; - winston.error(JSON.stringify({ - 'error': String(error), - 'functionName': String(functionName), - 'stack': new Error().stack - }, 0, 2)); - } +const winston = require('winston'); +const Slack = require('winston-slack-transport'); + +if (process.env.PORT) { + winston.add(Slack, { + webhook_url: 'https://hooks.slack.com/services/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', + channel: '#fyipe-logs', + username: 'Error Bot', + handleExceptions: true + }); +} + +module.exports = { + log: (functionName, error) => { + error = error && error.message ? error.message : error; + winston.error(JSON.stringify({ + 'error': String(error), + 'functionName': String(functionName), + 'stack': new Error().stack + }, 0, 2)); + } }; \ No newline at end of file diff --git a/probe/workers/apiMonitors.js b/probe/workers/apiMonitors.js index d66b098755..d453a4f180 100755 --- a/probe/workers/apiMonitors.js +++ b/probe/workers/apiMonitors.js @@ -1,92 +1,92 @@ -/* eslint-disable no-console */ -const ConditionCheck = require('../utils/conditionCheck'); -const ApiService = require('../utils/apiService'); -const ErrorService = require('../utils/errorService'); -const fetch = require('node-fetch'); - - -// it collects all monitors then ping them one by one to store their response -// checks if the website of the url in the monitors is up or down -// creates incident if a website is down and resolves it when they come back up -module.exports = { - ping: async (monitor) => { - if (monitor && monitor.type) { - if (monitor.data.url) { - try { - let headers = await ConditionCheck.headers(monitor.headers, monitor.bodyType); - let body = await ConditionCheck.body(monitor && monitor.text && monitor.text.length ? monitor.text : monitor.formData, monitor && monitor.text && monitor.text.length ?'text':'formData'); - var { res, resp } = await pingfetch(monitor.data.url, monitor.method, body, headers); - } catch (error) { - ErrorService.log('ping.pingFetch', error); - throw error; - } - try { - await pingService(monitor, res, resp); - } catch (error) { - ErrorService.log('ping.pingService', error); - throw error; - } - } else { - return; - } - } else { - return; - } - } -}; - -var pingService = async (monitor, res, resp) => { - let validUp = await (monitor && monitor.criteria && monitor.criteria.up ? ConditionCheck.conditions(res, resp, monitor.criteria.up) : false); - let validDegraded = await (monitor && monitor.criteria && monitor.criteria.degraded ? ConditionCheck.conditions(res, resp, monitor.criteria.degraded) : false); - let validDown = await (monitor && monitor.criteria && monitor.criteria.down ? ConditionCheck.conditions(res, resp, monitor.criteria.down) : false); - if (validDown) { - try { - await ApiService.setMonitorTime(monitor._id, res, resp.status, 'offline'); - } catch (error) { - ErrorService.log('ApiService.setMonitorTime', error); - throw error; - } - } - else if (validDegraded) { - try { - await ApiService.setMonitorTime(monitor._id, res, resp.status, 'degraded'); - } catch (error) { - ErrorService.log('ApiService.setMonitorTime', error); - throw error; - } - } - else if (validUp) { - try { - await ApiService.setMonitorTime(monitor._id, res, resp.status, 'online'); - } catch (error) { - ErrorService.log('ApiService.setMonitorTime', error); - throw error; - } - } - else { - try { - await ApiService.setMonitorTime(monitor._id, res, resp.status, 'unknown'); - } catch (error) { - ErrorService.log('ApiService.setMonitorTime', error); - throw error; - } - } -}; - -var pingfetch = async (url, method, body, headers) => { - let now = (new Date()).getTime(); - var resp = null; - var res = null; - try { - resp = await fetch(url, { - method: method, - body: body, - headers: headers, - timeout: 10000 - }); - res = (new Date()).getTime() - now; - } catch (error) { - resp = error; - } - return { res, resp }; +/* eslint-disable no-console */ +const ConditionCheck = require('../utils/conditionCheck'); +const ApiService = require('../utils/apiService'); +const ErrorService = require('../utils/errorService'); +const fetch = require('node-fetch'); + + +// it collects all monitors then ping them one by one to store their response +// checks if the website of the url in the monitors is up or down +// creates incident if a website is down and resolves it when they come back up +module.exports = { + ping: async (monitor) => { + if (monitor && monitor.type) { + if (monitor.data.url) { + try { + let headers = await ConditionCheck.headers(monitor.headers, monitor.bodyType); + let body = await ConditionCheck.body(monitor && monitor.text && monitor.text.length ? monitor.text : monitor.formData, monitor && monitor.text && monitor.text.length ?'text':'formData'); + var { res, resp } = await pingfetch(monitor.data.url, monitor.method, body, headers); + } catch (error) { + ErrorService.log('ping.pingFetch', error); + throw error; + } + try { + await pingService(monitor, res, resp); + } catch (error) { + ErrorService.log('ping.pingService', error); + throw error; + } + } else { + return; + } + } else { + return; + } + } +}; + +var pingService = async (monitor, res, resp) => { + let validUp = await (monitor && monitor.criteria && monitor.criteria.up ? ConditionCheck.conditions(res, resp, monitor.criteria.up) : false); + let validDegraded = await (monitor && monitor.criteria && monitor.criteria.degraded ? ConditionCheck.conditions(res, resp, monitor.criteria.degraded) : false); + let validDown = await (monitor && monitor.criteria && monitor.criteria.down ? ConditionCheck.conditions(res, resp, monitor.criteria.down) : false); + if (validDown) { + try { + await ApiService.setMonitorTime(monitor._id, res, resp.status, 'offline'); + } catch (error) { + ErrorService.log('ApiService.setMonitorTime', error); + throw error; + } + } + else if (validDegraded) { + try { + await ApiService.setMonitorTime(monitor._id, res, resp.status, 'degraded'); + } catch (error) { + ErrorService.log('ApiService.setMonitorTime', error); + throw error; + } + } + else if (validUp) { + try { + await ApiService.setMonitorTime(monitor._id, res, resp.status, 'online'); + } catch (error) { + ErrorService.log('ApiService.setMonitorTime', error); + throw error; + } + } + else { + try { + await ApiService.setMonitorTime(monitor._id, res, resp.status, 'unknown'); + } catch (error) { + ErrorService.log('ApiService.setMonitorTime', error); + throw error; + } + } +}; + +var pingfetch = async (url, method, body, headers) => { + let now = (new Date()).getTime(); + var resp = null; + var res = null; + try { + resp = await fetch(url, { + method: method, + body: body, + headers: headers, + timeout: 10000 + }); + res = (new Date()).getTime() - now; + } catch (error) { + resp = error; + } + return { res, resp }; }; \ No newline at end of file diff --git a/probe/workers/deviceMonitors.js b/probe/workers/deviceMonitors.js index d74e5c3a94..8b9f4f16c5 100755 --- a/probe/workers/deviceMonitors.js +++ b/probe/workers/deviceMonitors.js @@ -1,68 +1,68 @@ -const moment = require('moment'); -const ApiService = require('../utils/apiService'); -const ErrorService = require('../utils/errorService'); -// it collects all IOT device monitors then check the last time they where pinged -// If the difference is greater than 2 minutes -// creates incident if a website is down and resolves it when they come back up -module.exports = { - ping: async (monitor) => { - var newDate = new moment(); - var resDate = new Date(); - if (monitor && monitor.type) { - var d = new moment(monitor.lastPingTime); - - if (newDate.diff(d, 'minutes') > 3) { - try { - var time = await ApiService.getMonitorTime(monitor._id, newDate); - } catch (error) { - ErrorService.log('ApiService.getMonitorTime', error); - throw error; - } - if (time.status === 'online') { - try { - await pingService(monitor); - } catch (error) { - ErrorService.log('ping.pingService', error); - throw error; - } - } - } else { - var res = (new Date()).getTime() - resDate.getTime(); - try { - var newTime = await ApiService.getMonitorTime(monitor._id, newDate); - } catch (error) { - ErrorService.log('ApiService.getMonitorTime', error); - throw error; - } - if (newTime.status === 'offline') { - try { - await pingService(monitor, res); - } catch (error) { - ErrorService.log('ping.pingService', error); - throw error; - } - } - } - } else { - return; - } - } -}; - -var pingService = async (monitor, res) => { - if (res) { - try { - await ApiService.setMonitorTime(monitor._id, res,null, 'online'); - } catch (error) { - ErrorService.log('ApiService.setMonitorTime', error); - throw error; - } - } else { - try { - await ApiService.setMonitorTime(monitor._id, 0,null, 'offline'); - } catch (error) { - ErrorService.log('ApiService.setMonitorTime', error); - throw error; - } - } -}; +const moment = require('moment'); +const ApiService = require('../utils/apiService'); +const ErrorService = require('../utils/errorService'); +// it collects all IOT device monitors then check the last time they where pinged +// If the difference is greater than 2 minutes +// creates incident if a website is down and resolves it when they come back up +module.exports = { + ping: async (monitor) => { + var newDate = new moment(); + var resDate = new Date(); + if (monitor && monitor.type) { + var d = new moment(monitor.lastPingTime); + + if (newDate.diff(d, 'minutes') > 3) { + try { + var time = await ApiService.getMonitorTime(monitor._id, newDate); + } catch (error) { + ErrorService.log('ApiService.getMonitorTime', error); + throw error; + } + if (time.status === 'online') { + try { + await pingService(monitor); + } catch (error) { + ErrorService.log('ping.pingService', error); + throw error; + } + } + } else { + var res = (new Date()).getTime() - resDate.getTime(); + try { + var newTime = await ApiService.getMonitorTime(monitor._id, newDate); + } catch (error) { + ErrorService.log('ApiService.getMonitorTime', error); + throw error; + } + if (newTime.status === 'offline') { + try { + await pingService(monitor, res); + } catch (error) { + ErrorService.log('ping.pingService', error); + throw error; + } + } + } + } else { + return; + } + } +}; + +var pingService = async (monitor, res) => { + if (res) { + try { + await ApiService.setMonitorTime(monitor._id, res,null, 'online'); + } catch (error) { + ErrorService.log('ApiService.setMonitorTime', error); + throw error; + } + } else { + try { + await ApiService.setMonitorTime(monitor._id, 0,null, 'offline'); + } catch (error) { + ErrorService.log('ApiService.setMonitorTime', error); + throw error; + } + } +}; diff --git a/probe/workers/main.js b/probe/workers/main.js index 72df8fcf4f..2e348369a7 100755 --- a/probe/workers/main.js +++ b/probe/workers/main.js @@ -1,27 +1,27 @@ -/** - * - * Copyright HackerBay, Inc. - * - */ -const getApi = require('../utils/api').getApi; -const ApiMonitors = require('./apiMonitors'); -const UrlMonitors = require('./urlMonitors'); -const DeviceMonitors = require('./deviceMonitors'); - -module.exports = { - runJob: async function () { - let monitors = await getApi('probe/monitors'); - monitors = monitors.data; - await Promise.all(monitors.map(monitor =>{ - if(monitor.type === 'api'){ - ApiMonitors.ping(monitor); - } - else if(monitor.type === 'url'){ - UrlMonitors.ping(monitor); - } - else if(monitor.type === 'device'){ - DeviceMonitors.ping(monitor); - } - })); - }, +/** + * + * Copyright HackerBay, Inc. + * + */ +const getApi = require('../utils/api').getApi; +const ApiMonitors = require('./apiMonitors'); +const UrlMonitors = require('./urlMonitors'); +const DeviceMonitors = require('./deviceMonitors'); + +module.exports = { + runJob: async function () { + let monitors = await getApi('probe/monitors'); + monitors = monitors.data; + await Promise.all(monitors.map(monitor =>{ + if(monitor.type === 'api'){ + ApiMonitors.ping(monitor); + } + else if(monitor.type === 'url'){ + UrlMonitors.ping(monitor); + } + else if(monitor.type === 'device'){ + DeviceMonitors.ping(monitor); + } + })); + }, }; \ No newline at end of file diff --git a/probe/workers/urlMonitors.js b/probe/workers/urlMonitors.js index 6cba174921..13865b0c69 100755 --- a/probe/workers/urlMonitors.js +++ b/probe/workers/urlMonitors.js @@ -1,86 +1,86 @@ -/* eslint-disable no-console */ -const ApiService = require('../utils/apiService'); -const ErrorService = require('../utils/errorService'); -const ConditionCheck = require('../utils/conditionCheck'); -const fetch = require('node-fetch'); - - -// it collects all monitors then ping them one by one to store their response -// checks if the website of the url in the monitors is up or down -// creates incident if a website is down and resolves it when they come back up -module.exports = { - ping: async (monitor) => { - if (monitor && monitor.type) { - if (monitor.data.url) { - try { - var { res, resp } = await pingfetch(monitor.data.url); - } catch (error) { - ErrorService.log('ping.pingFetch', error); - throw error; - } - try { - await pingService(monitor, res, resp); - } catch (error) { - ErrorService.log('ping.pingService', error); - throw error; - } - } else { - return; - } - } else { - return; - } - } -}; - - -var pingService = async (monitor, res, resp) => { - let validUp = await (monitor && monitor.criteria && monitor.criteria.up ? ConditionCheck.conditions(res, resp, monitor.criteria.up) : false); - let validDegraded = await (monitor && monitor.criteria && monitor.criteria.degraded ? ConditionCheck.conditions(res, resp, monitor.criteria.degraded) : false); - let validDown = await (monitor && monitor.criteria && monitor.criteria.down ? ConditionCheck.conditions(res, resp, monitor.criteria.down) : false); - if (validDown) { - try { - await ApiService.setMonitorTime(monitor._id, res, resp.status || null, 'offline'); - } catch (error) { - ErrorService.log('ApiService.setMonitorTime', error); - throw error; - } - } - else if (validDegraded) { - try { - await ApiService.setMonitorTime(monitor._id, res, resp.status || null, 'degraded'); - } catch (error) { - ErrorService.log('ApiService.setMonitorTime', error); - throw error; - } - } - else if (validUp) { - try { - await ApiService.setMonitorTime(monitor._id, res, resp.status || null, 'online'); - } catch (error) { - ErrorService.log('ApiService.setMonitorTime', error); - throw error; - } - } - else { - try { - await ApiService.setMonitorTime(monitor._id, res, resp.status || null, 'unknown'); - } catch (error) { - ErrorService.log('ApiService.setMonitorTime', error); - throw error; - } - } -}; - -const pingfetch = async (url) => { - let now = (new Date()).getTime(); - var resp = null; - var res = null; - try { - resp = await fetch(url, { timeout: 5000 }); - res = (new Date()).getTime() - now; - } catch (error) { - resp = error; - } - return { res, resp }; +/* eslint-disable no-console */ +const ApiService = require('../utils/apiService'); +const ErrorService = require('../utils/errorService'); +const ConditionCheck = require('../utils/conditionCheck'); +const fetch = require('node-fetch'); + + +// it collects all monitors then ping them one by one to store their response +// checks if the website of the url in the monitors is up or down +// creates incident if a website is down and resolves it when they come back up +module.exports = { + ping: async (monitor) => { + if (monitor && monitor.type) { + if (monitor.data.url) { + try { + var { res, resp } = await pingfetch(monitor.data.url); + } catch (error) { + ErrorService.log('ping.pingFetch', error); + throw error; + } + try { + await pingService(monitor, res, resp); + } catch (error) { + ErrorService.log('ping.pingService', error); + throw error; + } + } else { + return; + } + } else { + return; + } + } +}; + + +var pingService = async (monitor, res, resp) => { + let validUp = await (monitor && monitor.criteria && monitor.criteria.up ? ConditionCheck.conditions(res, resp, monitor.criteria.up) : false); + let validDegraded = await (monitor && monitor.criteria && monitor.criteria.degraded ? ConditionCheck.conditions(res, resp, monitor.criteria.degraded) : false); + let validDown = await (monitor && monitor.criteria && monitor.criteria.down ? ConditionCheck.conditions(res, resp, monitor.criteria.down) : false); + if (validDown) { + try { + await ApiService.setMonitorTime(monitor._id, res, resp.status || null, 'offline'); + } catch (error) { + ErrorService.log('ApiService.setMonitorTime', error); + throw error; + } + } + else if (validDegraded) { + try { + await ApiService.setMonitorTime(monitor._id, res, resp.status || null, 'degraded'); + } catch (error) { + ErrorService.log('ApiService.setMonitorTime', error); + throw error; + } + } + else if (validUp) { + try { + await ApiService.setMonitorTime(monitor._id, res, resp.status || null, 'online'); + } catch (error) { + ErrorService.log('ApiService.setMonitorTime', error); + throw error; + } + } + else { + try { + await ApiService.setMonitorTime(monitor._id, res, resp.status || null, 'unknown'); + } catch (error) { + ErrorService.log('ApiService.setMonitorTime', error); + throw error; + } + } +}; + +const pingfetch = async (url) => { + let now = (new Date()).getTime(); + var resp = null; + var res = null; + try { + resp = await fetch(url, { timeout: 5000 }); + res = (new Date()).getTime() - now; + } catch (error) { + resp = error; + } + return { res, resp }; }; \ No newline at end of file