From b15326f7d4252157da8d8a2c71edf69a39dec2c8 Mon Sep 17 00:00:00 2001 From: Mcat12 Date: Thu, 17 Jan 2019 20:58:41 -0800 Subject: [PATCH] Update packages to the latest versions It seems an update to the formatter caused the license headers to get reformatted, so that is the bulk of the changes. The other large change is that the translate HOC function was renamed to withNamespaces. With the license headers all getting updated, I updated the year to 2019. Signed-off-by: Mcat12 --- LICENSE | 2 +- make-fake-data.js | 16 +- package-lock.json | 1197 ++++++++--------- package.json | 52 +- src/components/common/Alert.js | 16 +- src/components/common/Alert.test.js | 16 +- src/components/common/BoxedLayoutButton.js | 16 +- .../common/BoxedLayoutButton.test.js | 16 +- src/components/common/Footer.js | 20 +- src/components/common/Footer.test.js | 16 +- src/components/common/FooterUpdateStatus.js | 20 +- src/components/common/Header.js | 16 +- src/components/common/NavButton.js | 16 +- src/components/common/NavDropdown.js | 16 +- src/components/common/Sidebar.js | 20 +- src/components/common/Sidebar.test.js | 16 +- src/components/common/StatusBadge.js | 10 + src/components/common/StatusBadge.test.js | 16 +- src/components/common/WithAPIData.js | 16 +- src/components/dashboard/ChartTooltip.js | 26 +- src/components/dashboard/ClientsGraph.js | 20 +- src/components/dashboard/ClientsGraph.test.js | 16 +- .../dashboard/GenericDoughnutChart.js | 22 +- .../dashboard/GenericDoughnutChart.test.js | 16 +- src/components/dashboard/QueriesGraph.js | 20 +- src/components/dashboard/QueryTypesChart.js | 20 +- src/components/dashboard/SummaryStats.js | 20 +- src/components/dashboard/SummaryStats.test.js | 16 +- src/components/dashboard/TopBlocked.js | 20 +- src/components/dashboard/TopBlocked.test.js | 16 +- src/components/dashboard/TopClients.js | 20 +- src/components/dashboard/TopClients.test.js | 16 +- src/components/dashboard/TopDomains.js | 20 +- src/components/dashboard/TopDomains.test.js | 16 +- src/components/dashboard/TopTable.js | 16 +- src/components/dashboard/TopTable.test.js | 16 +- src/components/dashboard/UpstreamsChart.js | 20 +- src/components/list/DomainInput.js | 20 +- src/components/list/DomainInput.test.js | 16 +- src/components/list/DomainList.js | 20 +- src/components/list/DomainList.test.js | 16 +- src/components/list/ListPage.js | 20 +- src/components/list/ListPage.test.js | 16 +- src/components/log/QueryLog.js | 20 +- src/components/login/ForgotPassword.js | 20 +- src/components/login/ForgotPassword.test.js | 16 +- .../settings/ConditionalForwardingSettings.js | 16 +- src/components/settings/DHCPInfo.js | 20 +- src/components/settings/DHCPInfo.test.js | 16 +- src/components/settings/DNSInfo.js | 20 +- src/components/settings/DnsList.js | 16 +- src/components/settings/DnsListItem.js | 16 +- src/components/settings/DnsListNewItem.js | 20 +- src/components/settings/DnsOptionSettings.js | 16 +- src/components/settings/FTLInfo.js | 20 +- src/components/settings/NetworkInfo.js | 20 +- src/components/settings/VersionCard.js | 20 +- src/components/settings/VersionInfo.js | 20 +- .../settings/preconfiguredUpstreams.js | 16 +- src/config.development.js | 16 +- src/config.js | 16 +- src/config.production.js | 16 +- src/containers/Full.js | 16 +- src/i18n.js | 10 + src/index.js | 16 +- src/routes.js | 16 +- src/scss/_custom.scss | 4 + src/scss/vendors/_variables.scss | 2 +- src/setupTests.js | 20 +- src/util/api.js | 10 + src/util/api.test.js | 16 +- src/util/http.js | 16 +- src/util/index.js | 16 +- src/validate.js | 16 +- src/validate.test.js | 16 +- src/views/Blacklist.js | 20 +- src/views/Dashboard.js | 16 +- src/views/Login.js | 20 +- src/views/Logout.js | 16 +- src/views/Networking.js | 20 +- src/views/Regexlist.js | 20 +- src/views/Versions.js | 16 +- src/views/Whitelist.js | 20 +- update-translations.js | 112 +- 84 files changed, 1332 insertions(+), 1399 deletions(-) diff --git a/LICENSE b/LICENSE index 23e6e81..7cd7baa 100644 --- a/LICENSE +++ b/LICENSE @@ -1,5 +1,5 @@ Pi-hole Web Interface -Copyright (C) 2017 Pi-hole, LLC (https://pi-hole.net) +Copyright (C) 2019 Pi-hole, LLC (https://pi-hole.net) This software is licensed under the European Union Public License diff --git a/make-fake-data.js b/make-fake-data.js index f6e56d4..a0b592b 100644 --- a/make-fake-data.js +++ b/make-fake-data.js @@ -1,12 +1,12 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* Create fake API data -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * Create fake API data + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ const faker = require("faker"); const fs = require("fs-extra"); diff --git a/package-lock.json b/package-lock.json index ac0ea03..f4e813f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -923,6 +923,27 @@ "regexpu-core": "^4.1.3" } }, + "@babel/polyfill": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.2.5.tgz", + "integrity": "sha512-8Y/t3MWThtMLYr0YNC/Q76tqN1w30+b0uQMeFUYauG2UGTR19zyUtFrAzT23zNtBxPp+LbE5E/nwV/q/r3y6ug==", + "requires": { + "core-js": "^2.5.7", + "regenerator-runtime": "^0.12.0" + }, + "dependencies": { + "core-js": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.2.tgz", + "integrity": "sha512-NdBPF/RVwPW6jr0NCILuyN9RiqLo2b1mddWHkUL+VnvcB7dzlnBJ1bXYntjpTGOgkZiiLWj2JxmOr7eGE3qK6g==" + }, + "regenerator-runtime": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", + "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==" + } + } + }, "@babel/preset-env": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.2.3.tgz", @@ -1007,7 +1028,6 @@ "version": "7.1.5", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.1.5.tgz", "integrity": "sha512-xKnPpXG/pvK1B90JkwwxSGii90rQGKtzcMt2gI5G6+M0REXaq6rOHsGC2ay6/d0Uje7zzvSzjEzfR3ENhFlrfA==", - "dev": true, "requires": { "regenerator-runtime": "^0.12.0" }, @@ -1015,8 +1035,7 @@ "regenerator-runtime": { "version": "0.12.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", - "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==", - "dev": true + "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==" } } }, @@ -1192,12 +1211,13 @@ } }, "@coreui/coreui": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@coreui/coreui/-/coreui-2.0.3.tgz", - "integrity": "sha512-NT6uuR9hkxhxohN9w3A4DJ951J/Sj980cAw5+rd4U+PNxsFgVFs/FRGujcLJrQTpqvBjUYDOxJiazktzIpn4jg==", + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@coreui/coreui/-/coreui-2.1.6.tgz", + "integrity": "sha512-04uY01hOXOaED85U/3IrBQpstC6wEE7fOft7nybuFy7uikTgreep6dWeNflKzWbIAMHQRwi5G0B4ZKNhgHG86w==", "requires": { + "@babel/polyfill": "^7.2.5", "@coreui/coreui-plugin-npm-postinstall": "^1.0.2", - "bootstrap": "^4.1.1" + "bootstrap": "^4.2.1" } }, "@coreui/coreui-plugin-chartjs-custom-tooltips": { @@ -1221,108 +1241,68 @@ "integrity": "sha512-yeeoWp+bNS84nP1977Y8UCiQ9pssO+f4QuVj3i0/gYZFjjvOgxx0dnyWhtowD5sLYnCRMPlPpqyjwXze3SlkYg==" }, "@coreui/icons": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@coreui/icons/-/icons-0.2.0.tgz", - "integrity": "sha512-FPpi7tagGA3xGGGjYOMBUoLVjqNinrPOsM+AjpYiYW9jrAeuY+eZfToEPyGvdbIFgGBsi7qwpUfwmDR8KcGwow==" + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@coreui/icons/-/icons-0.3.0.tgz", + "integrity": "sha512-RbBi5K5hUA8LUI9mM/i1BTaLjlyoS6kHwKbxWsH62+/j9L9WF8gAiJUhrNjMt1br8TY9RLeolyQys0E9480fIg==" }, "@coreui/react": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@coreui/react/-/react-2.0.4.tgz", - "integrity": "sha512-HD34O3cZ4Zd1lXQZfk9r+SxwnEFjkEjS0hKV3YxirHRnpMSnpBV7OWd1bTK9Dt8ClQMwRuUka3A8uQWZ3FkCdw==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@coreui/react/-/react-2.1.3.tgz", + "integrity": "sha512-9yqR3FhlG7agyAAFMwDo6RLjSrSU4IsV/DmYw2/xvnQyG9WJdoAb4+WIrXFdm5ZPdSltwc8ICk0m+e1g+qlqTA==", "requires": { - "@coreui/icons": "0.2.0", + "@coreui/icons": "0.3.0", "classnames": "^2.2.6", - "core-js": "^2.5.7", + "core-js": "^2.6.1", "prop-types": "^15.6.2", - "react-perfect-scrollbar": "^1.1.1", + "react-onclickout": "^2.0.8", + "react-perfect-scrollbar": "^1.4.4", "react-router-dom": "^4.3.1", - "reactstrap": "^6.1.0" + "reactstrap": "^7.0.2" }, "dependencies": { + "@babel/runtime": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.2.0.tgz", + "integrity": "sha512-oouEibCbHMVdZSDlJBO6bZmID/zA/G/Qx3H1d3rSNPTD+L8UNKvCat7aKWSJ74zYbm5zWGh0GQN0hKj8zYFTCg==", + "requires": { + "regenerator-runtime": "^0.12.0" + } + }, + "@coreui/icons": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@coreui/icons/-/icons-0.3.0.tgz", + "integrity": "sha512-RbBi5K5hUA8LUI9mM/i1BTaLjlyoS6kHwKbxWsH62+/j9L9WF8gAiJUhrNjMt1br8TY9RLeolyQys0E9480fIg==" + }, "classnames": { "version": "2.2.6", "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz", "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==" }, "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==" - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "requires": { - "loose-envify": "^1.0.0" - } - }, - "prop-types": { - "version": "15.6.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.2.tgz", - "integrity": "sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ==", - "requires": { - "loose-envify": "^1.3.1", - "object-assign": "^4.1.1" - } - }, - "react-popper": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-0.10.4.tgz", - "integrity": "sha1-rypBXqIike3VBGeNev2opu4ylao=", - "requires": { - "popper.js": "^1.14.1", - "prop-types": "^15.6.1" - } - }, - "react-router": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-4.3.1.tgz", - "integrity": "sha512-yrvL8AogDh2X42Dt9iknk4wF4V8bWREPirFfS9gLU1huk6qK41sg7Z/1S81jjTrGHxa3B8R3J6xIkDAA6CVarg==", - "requires": { - "history": "^4.7.2", - "hoist-non-react-statics": "^2.5.0", - "invariant": "^2.2.4", - "loose-envify": "^1.3.1", - "path-to-regexp": "^1.7.0", - "prop-types": "^15.6.1", - "warning": "^4.0.1" - } - }, - "react-router-dom": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-4.3.1.tgz", - "integrity": "sha512-c/MlywfxDdCp7EnB7YfPMOfMD3tOtIjrQlj/CKfNMBxdmpJP8xcz5P/UAFn3JbnQCNUxsHyVVqllF9LhgVyFCA==", - "requires": { - "history": "^4.7.2", - "invariant": "^2.2.4", - "loose-envify": "^1.3.1", - "prop-types": "^15.6.1", - "react-router": "^4.3.1", - "warning": "^4.0.1" - } + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.2.tgz", + "integrity": "sha512-NdBPF/RVwPW6jr0NCILuyN9RiqLo2b1mddWHkUL+VnvcB7dzlnBJ1bXYntjpTGOgkZiiLWj2JxmOr7eGE3qK6g==" }, "reactstrap": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/reactstrap/-/reactstrap-6.1.0.tgz", - "integrity": "sha512-ClxPR2aNGlnwxCI6tv9jRXA1MnsBSFs/Mus2cUJRVMGEEBuMoENhXilCCtR7yoQS0yJMmgGjM/Z37zRRy0k05g==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/reactstrap/-/reactstrap-7.1.0.tgz", + "integrity": "sha512-wtc4RkgnGn1TsZ0AxOZ2OqT+b8YmCWZj/tErPujWLepxzlEEhveZGC+uDerdaHVSAzJUP2DTk605iper7hutQQ==", "requires": { + "@babel/runtime": "^7.2.0", "classnames": "^2.2.3", "lodash.isfunction": "^3.0.9", "lodash.isobject": "^3.0.2", "lodash.tonumber": "^4.0.3", "prop-types": "^15.5.8", + "react-lifecycles-compat": "^3.0.4", "react-popper": "^0.10.4", "react-transition-group": "^2.3.1" } }, - "warning": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.1.tgz", - "integrity": "sha512-rAVtTNZw+cQPjvGp1ox0XC5Q2IBFyqoqh+QII4J/oguyu83Bax1apbo2eqB8bHRS+fqYUBagys6lqUoVwKSmXQ==", - "requires": { - "loose-envify": "^1.0.0" - } + "regenerator-runtime": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", + "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==" } } }, @@ -1399,9 +1379,9 @@ } }, "@types/node": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.5.0.tgz", - "integrity": "sha512-baXPuqA7EVcBUpA5so2K26DTzk7NCWBc9xrPMu9PbUMwgusJRm9zJBPhiDmJVEcnTQ3aOxUZeuFHpd9qMYDNRg==", + "version": "10.12.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz", + "integrity": "sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==", "dev": true }, "@types/q": { @@ -1744,16 +1724,6 @@ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", "dev": true }, - "anymatch": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", - "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", - "dev": true, - "requires": { - "micromatch": "^2.1.5", - "normalize-path": "^2.0.0" - } - }, "append-transform": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", @@ -1886,6 +1856,17 @@ "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", "dev": true }, + "array.prototype.flat": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.1.tgz", + "integrity": "sha512-rVqIs330nLJvfC7JqYvEWwqVr5QjYF1ib02i3YJtR/fICO6527Tjpc/e4Mvmxh3GIePPreRXMdaGyC99YphWEw==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.10.0", + "function-bind": "^1.1.1" + } + }, "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", @@ -2354,9 +2335,9 @@ }, "dependencies": { "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.2", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.2.tgz", + "integrity": "sha512-NdBPF/RVwPW6jr0NCILuyN9RiqLo2b1mddWHkUL+VnvcB7dzlnBJ1bXYntjpTGOgkZiiLWj2JxmOr7eGE3qK6g==", "dev": true }, "regenerator-runtime": { @@ -2888,9 +2869,9 @@ "dev": true }, "bootstrap": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.1.1.tgz", - "integrity": "sha512-SpiDSOcbg4J/PjVSt4ny5eY6j74VbVSjROY4Fb/WIUXBV9cnb5luyR4KnPvNoXuGnBK1T+nJIWqRsvU3yP8Mcg==" + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.2.1.tgz", + "integrity": "sha512-tt/7vIv3Gm2mnd/WeDx36nfGGHleil0Wg8IeB7eMrVkY0fZ5iTaBisSh8oNANc2IBsCc6vCgCNTIM/IEN0+50Q==" }, "bootstrap-daterangepicker": { "version": "3.0.3", @@ -3305,9 +3286,9 @@ "dev": true }, "chart.js": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-2.7.2.tgz", - "integrity": "sha512-90wl3V9xRZ8tnMvMlpcW+0Yg13BelsGS9P9t0ClaDxv/hdypHDr/YAGf+728m11P5ljwyB0ZHfPKCapZFqSqYA==", + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-2.7.3.tgz", + "integrity": "sha512-3+7k/DbR92m6BsMUYP6M0dMsMVZpMnwkUyNSAbqolHKsbIzH2Q4LWVEHHYq7v0fmEV8whXE0DrjANulw9j2K5g==", "requires": { "chartjs-color": "^2.1.0", "moment": "^2.10.2" @@ -3360,9 +3341,9 @@ } }, "htmlparser2": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", - "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.0.tgz", + "integrity": "sha512-J1nEUGv+MkXS0weHNWVKJJ+UrLfePxRWpN3C9bEi9fLxL2+ggW94DQvgYVXsaT30PGwYRIZKNZXuyMhp3Di4bQ==", "dev": true, "requires": { "domelementtype": "^1.3.0", @@ -3370,7 +3351,7 @@ "domutils": "^1.5.1", "entities": "^1.1.1", "inherits": "^2.0.1", - "readable-stream": "^2.0.2" + "readable-stream": "^3.0.6" } }, "parse5": { @@ -3381,6 +3362,26 @@ "requires": { "@types/node": "*" } + }, + "readable-stream": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.1.1.tgz", + "integrity": "sha512-DkN66hPyqDhnIQ6Jcsvx9bFjhw214O4poMBcIMgPVpQvNy9a0e0Uhg5SqySyDKAmUlwt8LonTBz1ezOnM8pUdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "string_decoder": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz", + "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } } } }, @@ -4892,6 +4893,18 @@ "dev": true, "requires": { "lodash.isequal": "^3.0" + }, + "dependencies": { + "lodash.isequal": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-3.0.4.tgz", + "integrity": "sha1-HDXrO27wzR/1F0Pj6jz3/f/ay2Q=", + "dev": true, + "requires": { + "lodash._baseisequal": "^3.0.0", + "lodash._bindcallback": "^3.0.0" + } + } } }, "deep-is": { @@ -5450,59 +5463,96 @@ "dev": true }, "enzyme": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/enzyme/-/enzyme-3.3.0.tgz", - "integrity": "sha512-l8csyPyLmtxskTz6pX9W8eDOyH1ckEtDttXk/vlFWCjv00SkjTjtoUrogqp4yEvMyneU9dUJoOLnqFoiHb8IHA==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/enzyme/-/enzyme-3.8.0.tgz", + "integrity": "sha512-bfsWo5nHyZm1O1vnIsbwdfhU989jk+squU9NKvB+Puwo5j6/Wg9pN5CO0YJelm98Dao3NPjkDZk+vvgwpMwYxw==", "dev": true, "requires": { + "array.prototype.flat": "^1.2.1", "cheerio": "^1.0.0-rc.2", - "function.prototype.name": "^1.0.3", - "has": "^1.0.1", + "function.prototype.name": "^1.1.0", + "has": "^1.0.3", "is-boolean-object": "^1.0.0", - "is-callable": "^1.1.3", + "is-callable": "^1.1.4", "is-number-object": "^1.0.3", "is-string": "^1.0.4", "is-subset": "^0.1.1", - "lodash": "^4.17.4", - "object-inspect": "^1.5.0", + "lodash.escape": "^4.0.1", + "lodash.isequal": "^4.5.0", + "object-inspect": "^1.6.0", "object-is": "^1.0.1", "object.assign": "^4.1.0", "object.entries": "^1.0.4", "object.values": "^1.0.4", "raf": "^3.4.0", - "rst-selector-parser": "^2.2.3" + "rst-selector-parser": "^2.2.3", + "string.prototype.trim": "^1.1.2" + }, + "dependencies": { + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", + "dev": true + } } }, "enzyme-adapter-react-16": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.1.1.tgz", - "integrity": "sha512-kC8pAtU2Jk3OJ0EG8Y2813dg9Ol0TXi7UNxHzHiWs30Jo/hj7alc//G1YpKUsPP1oKl9X+Lkx+WlGJpPYA+nvw==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.7.1.tgz", + "integrity": "sha512-OQXKgfHWyHN3sFu2nKj3mhgRcqIPIJX6aOzq5AHVFES4R9Dw/vCBZFMPyaG81g2AZ5DogVh39P3MMNUbqNLTcw==", "dev": true, "requires": { - "enzyme-adapter-utils": "^1.3.0", - "lodash": "^4.17.4", - "object.assign": "^4.0.4", + "enzyme-adapter-utils": "^1.9.0", + "function.prototype.name": "^1.1.0", + "object.assign": "^4.1.0", "object.values": "^1.0.4", - "prop-types": "^15.6.0", - "react-reconciler": "^0.7.0", + "prop-types": "^15.6.2", + "react-is": "^16.6.1", "react-test-renderer": "^16.0.0-0" + }, + "dependencies": { + "react-is": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.7.0.tgz", + "integrity": "sha512-Z0VRQdF4NPDoI0tsXVMLkJLiwEBa+RP66g0xDHxgxysxSoCUccSten4RTF/UFvZF1dZvZ9Zu1sx+MDXwcOR34g==", + "dev": true + } } }, "enzyme-adapter-utils": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/enzyme-adapter-utils/-/enzyme-adapter-utils-1.3.0.tgz", - "integrity": "sha512-vVXSt6uDv230DIv+ebCG66T1Pm36Kv+m74L1TrF4kaE7e1V7Q/LcxO0QRkajk5cA6R3uu9wJf5h13wOTezTbjA==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/enzyme-adapter-utils/-/enzyme-adapter-utils-1.9.1.tgz", + "integrity": "sha512-LWc88BbKztLXlpRf5Ba/pSMJRaNezAwZBvis3N/IuB65ltZEh2E2obWU9B36pAbw7rORYeBUuqc79OL17ZzN1A==", "dev": true, "requires": { - "lodash": "^4.17.4", - "object.assign": "^4.0.4", - "prop-types": "^15.6.0" + "function.prototype.name": "^1.1.0", + "object.assign": "^4.1.0", + "prop-types": "^15.6.2", + "semver": "^5.6.0" + }, + "dependencies": { + "semver": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "dev": true + } } }, "enzyme-matchers": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/enzyme-matchers/-/enzyme-matchers-6.0.2.tgz", - "integrity": "sha1-eU1OQyVNqqD//TpZHlhp/IYd7rI=", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/enzyme-matchers/-/enzyme-matchers-7.0.1.tgz", + "integrity": "sha512-1HmUK3frVSt7kim8icdx5LimuQm+DlklBRfy+dSlKd4SRxwlDGEM1LYTxL21/2kUZNl1XVUT5k5mec/D3k5jWw==", "dev": true, "requires": { "circular-json-es6": "^2.0.1", @@ -5510,9 +5560,9 @@ } }, "enzyme-to-json": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/enzyme-to-json/-/enzyme-to-json-3.3.4.tgz", - "integrity": "sha1-Z8YEDpMRgvGDQYry659DIyWKp38=", + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/enzyme-to-json/-/enzyme-to-json-3.3.5.tgz", + "integrity": "sha512-DmH1wJ68HyPqKSYXdQqB33ZotwfUhwQZW3IGXaNXgR69Iodaoj8TF/D9RjLdz4pEhGq2Tx2zwNUIjBuqoZeTgA==", "dev": true, "requires": { "lodash": "^4.17.4" @@ -6128,21 +6178,6 @@ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", "dev": true }, - "event-stream": { - "version": "3.3.4", - "resolved": "http://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", - "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", - "dev": true, - "requires": { - "duplexer": "~0.1.1", - "from": "~0", - "map-stream": "~0.1.0", - "pause-stream": "0.0.11", - "split": "0.3", - "stream-combiner": "~0.0.4", - "through": "~2.3.1" - } - }, "eventemitter3": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz", @@ -6826,21 +6861,33 @@ } }, "fetch-mock": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fetch-mock/-/fetch-mock-6.5.0.tgz", - "integrity": "sha512-vwvgI6OTwVZHJ1sSQRnkf7oR69NI/UCukNY7XXKxcaMeKVcAt0DtvGS8tZk/uNHP4sKLiSDUN8KGJcvWHDB+5w==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/fetch-mock/-/fetch-mock-7.3.0.tgz", + "integrity": "sha512-KxBeS8vsADFbWPVomuwxYqOJ2obZo6CidgkypjDPeu6zl+tAJvh2GfLDmJ8u//xgBGM9iOGwOxafeqAclilH2A==", "dev": true, "requires": { "babel-polyfill": "^6.26.0", "glob-to-regexp": "^0.4.0", - "path-to-regexp": "^2.2.1" + "path-to-regexp": "^2.2.1", + "whatwg-url": "^6.5.0" }, "dependencies": { "path-to-regexp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz", - "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.4.0.tgz", + "integrity": "sha512-G6zHoVqC6GGTQkZwF4lkuEyMbVOjoBKAEybQUypI1WTkqinCOrq2x6U2+phkJ1XsEMTy4LjtwPI7HW+NVrRR2w==", "dev": true + }, + "whatwg-url": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", + "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } } } }, @@ -7453,12 +7500,6 @@ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", "dev": true }, - "from": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", - "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", - "dev": true - }, "from2": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", @@ -7470,22 +7511,14 @@ } }, "fs-extra": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.0.tgz", - "integrity": "sha512-lk2cUCo8QzbiEWEbt7Cw3m27WMiRG321xsssbcIpfMhpRjrlC08WBOVQqj1/nQYYNnPtyIhP1oqLO3QwT2tPCw==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", "dev": true, "requires": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", "universalify": "^0.1.0" - }, - "dependencies": { - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - } } }, "fs-write-stream-atomic": { @@ -9078,14 +9111,14 @@ "dev": true }, "i18next": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-11.3.2.tgz", - "integrity": "sha512-Y5yN46k4wcXOvucXrqADQRK1CyIplwjKQ5Sv2IYdukQWjr5Gf2Y7y+4AsjQbpCtLWzotcMd7YDmkrIYzVje6hg==" + "version": "13.1.4", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-13.1.4.tgz", + "integrity": "sha512-qPmjdQrUQ4AGzKBGBpPLC7XiJoqbV/dGmDW/xmwbzAk60eavTkZ+s5FqoSAP2YeurPF8XpNWQaDvXNSWzT0ZYw==" }, "i18next-browser-languagedetector": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-2.2.0.tgz", - "integrity": "sha512-fKhsaJzXY2anqAPxn9bgxc5NrTcu1GnYiIwGfNFPkpfFneutHnuReb4x4suOVNMf9RTuiCxfR+UAF8aHhv89SQ==" + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-2.2.4.tgz", + "integrity": "sha512-wPbtH18FdOuB245I8Bhma5/XSDdN/HpYlX+wga1eMy+slhaFQSnrWX6fp+aYSL2eEuj0RlfHeEVz6Fo/lxAj6A==" }, "i18next-xhr-backend": { "version": "1.5.1", @@ -9373,9 +9406,9 @@ "dev": true }, "ionicons": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-3.0.0.tgz", - "integrity": "sha1-QLja9P16MRUL0AIWD2ZJbiKpjDw=" + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-4.5.1.tgz", + "integrity": "sha512-zqfkjpPKsdzzXePdE03IRw6xt7B6N3fcN/7NepyniuEWhKZLy7YpdZLegEwBmKeciXi7rIcv1O/hHJTdokUwXQ==" }, "ip": { "version": "1.1.5", @@ -10367,22 +10400,19 @@ } }, "jest-environment-enzyme": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/jest-environment-enzyme/-/jest-environment-enzyme-6.0.2.tgz", - "integrity": "sha1-iQUmYi1d6KggoYSdJoTwO8AG4O8=", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/jest-environment-enzyme/-/jest-environment-enzyme-7.0.1.tgz", + "integrity": "sha512-sZm/6tKC+//S4ASPefXSZJDkflzvxMRQKt24GYuXO+34IUTmpT5LzYJETtd4KJI8W42qMcc1F4qHV5Itb6romg==", "dev": true, "requires": { "jest-environment-jsdom": "^22.4.1" }, "dependencies": { - "acorn-globals": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.1.0.tgz", - "integrity": "sha512-KjZwU26uG3u6eZcfGbTULzFcsoz6pegNKtHPksZPOUsiKo5bUmiBPa38FuHZ/Eun+XYh/JCCkS9AS3Lu4McQOQ==", - "dev": true, - "requires": { - "acorn": "^5.0.0" - } + "abab": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz", + "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==", + "dev": true }, "ansi-styles": { "version": "3.2.1", @@ -10393,16 +10423,10 @@ "color-convert": "^1.9.0" } }, - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", - "dev": true - }, "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "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", @@ -10411,27 +10435,12 @@ } }, "color-convert": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz", - "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==", + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "requires": { - "color-name": "1.1.1" - } - }, - "color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", - "dev": true - }, - "cssstyle": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.3.1.tgz", - "integrity": "sha512-tNvaxM5blOnxanyxI6panOsnfiyLRj3HV4qjqqS45WPNS1usdYWRUQjqTEEELK73lpeP/1KoIGYUwrBn/VcECA==", - "dev": true, - "requires": { - "cssom": "0.3.x" + "color-name": "1.1.3" } }, "jest-environment-jsdom": { @@ -10480,36 +10489,36 @@ } }, "jsdom": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.11.0.tgz", - "integrity": "sha512-ou1VyfjwsSuWkudGxb03FotDajxAto6USAlmMZjE2lc0jCznt7sBWkhfRBRaWwbnmDqdMSTKTLT5d9sBFkkM7A==", + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", + "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", "dev": true, "requires": { - "abab": "^1.0.4", - "acorn": "^5.3.0", + "abab": "^2.0.0", + "acorn": "^5.5.3", "acorn-globals": "^4.1.0", "array-equal": "^1.0.0", "cssom": ">= 0.3.2 < 0.4.0", - "cssstyle": ">= 0.3.1 < 0.4.0", + "cssstyle": "^1.0.0", "data-urls": "^1.0.0", - "domexception": "^1.0.0", - "escodegen": "^1.9.0", + "domexception": "^1.0.1", + "escodegen": "^1.9.1", "html-encoding-sniffer": "^1.0.2", - "left-pad": "^1.2.0", - "nwsapi": "^2.0.0", + "left-pad": "^1.3.0", + "nwsapi": "^2.0.7", "parse5": "4.0.0", "pn": "^1.1.0", - "request": "^2.83.0", + "request": "^2.87.0", "request-promise-native": "^1.0.5", "sax": "^1.2.4", "symbol-tree": "^3.2.2", - "tough-cookie": "^2.3.3", + "tough-cookie": "^2.3.4", "w3c-hr-time": "^1.0.1", "webidl-conversions": "^4.0.2", "whatwg-encoding": "^1.0.3", "whatwg-mimetype": "^2.1.0", "whatwg-url": "^6.4.1", - "ws": "^4.0.0", + "ws": "^5.2.0", "xml-name-validator": "^3.0.0" } }, @@ -10519,12 +10528,6 @@ "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", "dev": true }, - "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 - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -10532,23 +10535,14 @@ "dev": true }, "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { "has-flag": "^3.0.0" } }, - "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, "whatwg-url": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", @@ -10559,12 +10553,6 @@ "tr46": "^1.0.1", "webidl-conversions": "^4.0.2" } - }, - "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true } } }, @@ -10664,14 +10652,14 @@ } }, "jest-enzyme": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/jest-enzyme/-/jest-enzyme-6.0.2.tgz", - "integrity": "sha1-vEZBad5sLVBgLgK7yUZEYFB/spU=", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/jest-enzyme/-/jest-enzyme-7.0.1.tgz", + "integrity": "sha512-IpHjNin+7bsRthciMMo5HVA9TTKZCsBkOPsS4qdIZvImZx94no362wwPeustn0SY/REyXm39wHPsORknuXUWmA==", "dev": true, "requires": { - "enzyme-matchers": "^6.0.2", + "enzyme-matchers": "^7.0.1", "enzyme-to-json": "^3.3.0", - "jest-environment-enzyme": "^6.0.2" + "jest-environment-enzyme": "^7.0.1" } }, "jest-get-type": { @@ -11479,9 +11467,9 @@ "integrity": "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg==" }, "js-base64": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.1.9.tgz", - "integrity": "sha1-8OgK4DmkvWVLXygfyT8EqRSn/M4=", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.0.tgz", + "integrity": "sha512-wlEBIZ5LP8usDylWbDNhKPEFVFdI5hCHpnVoT/Ysvoi/PRhJENm/Rlh9TvjYB38HFfKZN7OzEbRjmjvLkFw11g==", "dev": true }, "js-levenshtein": { @@ -12119,6 +12107,12 @@ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" }, + "lodash.escape": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz", + "integrity": "sha1-yQRGkMIeBClL6qUXcS/e0fqI3pg=", + "dev": true + }, "lodash.flattendeep": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", @@ -12138,14 +12132,10 @@ "dev": true }, "lodash.isequal": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-3.0.4.tgz", - "integrity": "sha1-HDXrO27wzR/1F0Pj6jz3/f/ay2Q=", - "dev": true, - "requires": { - "lodash._baseisequal": "^3.0.0", - "lodash._bindcallback": "^3.0.0" - } + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", + "dev": true }, "lodash.isfunction": { "version": "3.0.9", @@ -12321,12 +12311,6 @@ "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", "dev": true }, - "map-stream": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", - "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=", - "dev": true - }, "map-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", @@ -12635,6 +12619,12 @@ "resolved": "https://registry.npmjs.org/moment/-/moment-2.23.0.tgz", "integrity": "sha512-3IE39bHVqFbWWaPOMHZF98Q9c3LDKGTmypMiTM2QygGXXElkFWIH7GxfmlwmY2vwa+wmNsoYZmG2iusf1ZjJoA==" }, + "moo": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/moo/-/moo-0.4.3.tgz", + "integrity": "sha512-gFD2xGCl8YFgGHsqJ9NKRVdwlioeW3mI1iqfLNYQOv0+6JRwG58Zk9DIGQgyIaffSYaO1xsKnMaYzzNr1KyIAw==", + "dev": true + }, "move-concurrently": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", @@ -12746,21 +12736,22 @@ "dev": true }, "nearley": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.13.0.tgz", - "integrity": "sha512-ioYYogSaZhFlCpRizQgY3UT3G1qFXmHGY/5ozoFE3dMfiCRAeJfh+IPE3/eh9gCZvqLhPCWb4bLt7Bqzo+1mLQ==", + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.16.0.tgz", + "integrity": "sha512-Tr9XD3Vt/EujXbZBv6UAHYoLUSMQAxSsTnm9K3koXzjzNWY195NqALeyrzLZBKzAkL3gl92BcSogqrHjD8QuUg==", "dev": true, "requires": { - "nomnom": "~1.6.2", + "commander": "^2.19.0", + "moo": "^0.4.3", "railroad-diagrams": "^1.0.0", "randexp": "0.4.6", "semver": "^5.4.1" }, "dependencies": { "semver": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", "dev": true } } @@ -12793,9 +12784,9 @@ } }, "node-fetch": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.1.2.tgz", - "integrity": "sha1-q4hOjn5X44qUR1POxwb3iNF2i7U=", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.3.0.tgz", + "integrity": "sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA==", "dev": true }, "node-forge": { @@ -12918,9 +12909,9 @@ } }, "node-sass": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.9.4.tgz", - "integrity": "sha512-MXyurANsUoE4/6KmfMkwGcBzAnJQ5xJBGW7Ei6ea8KnUKuzHr/SguVBIi3uaUAHtZCPUYkvlJ3Ef5T5VAwVpaA==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.11.0.tgz", + "integrity": "sha512-bHUdHTphgQJZaF1LASx0kAviPH7sGlcyNhWade4eVIpFp6tsn7SV8xNMTbsQFpEV9VXpnwTTnNYlfsZXgGgmkA==", "dev": true, "requires": { "async-foreach": "^0.1.3", @@ -12944,6 +12935,18 @@ "true-case-path": "^1.0.2" }, "dependencies": { + "ajv": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.7.0.tgz", + "integrity": "sha512-RZXPviBTtfmtka9n9sy1N5M5b82CbxWIR6HIis4s3WQTXDJamc/0gpCWNGz6EWdWp4DOfjzJfhz/AS9zVPjjWg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, "aws4": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", @@ -12965,16 +12968,28 @@ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "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 + }, "har-validator": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz", - "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", "dev": true, "requires": { - "ajv": "^5.3.0", + "ajv": "^6.5.5", "har-schema": "^2.0.0" } }, + "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 + }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", @@ -13034,79 +13049,19 @@ } }, "node-sass-chokidar": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/node-sass-chokidar/-/node-sass-chokidar-1.3.0.tgz", - "integrity": "sha512-g8n2RUSo3nBSmqo6ShD2uyDjuN7X81YyuJO253VDw7bkL84TQ4DEO0MpD7gpsWMUL44avQigHgOL+peLD8Uwuw==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/node-sass-chokidar/-/node-sass-chokidar-1.3.4.tgz", + "integrity": "sha512-AEKBr58QFzU37Ubud90K1n+ljEpTDekJm5UCS8ZyoWgHoz2qx8f2vAaN8rECbqF1vYPid64NZBh98AKzHh9D9A==", "dev": true, "requires": { "async-foreach": "^0.1.3", - "chokidar": "^1.6.1", + "chokidar": "^2.0.4", "get-stdin": "^4.0.1", "glob": "^7.0.3", "meow": "^3.7.0", - "node-sass": "^4.7.2", + "node-sass": "^4.9.3", "sass-graph": "^2.1.1", "stdout-stream": "^1.4.0" - }, - "dependencies": { - "chokidar": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", - "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", - "dev": true, - "requires": { - "anymatch": "^1.3.0", - "async-each": "^1.0.0", - "fsevents": "^1.0.0", - "glob-parent": "^2.0.0", - "inherits": "^2.0.1", - "is-binary-path": "^1.0.0", - "is-glob": "^2.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0" - } - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } - } - }, - "nomnom": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.6.2.tgz", - "integrity": "sha1-hKZqJgF0QI/Ft3oY+IjszET7aXE=", - "dev": true, - "requires": { - "colors": "0.5.x", - "underscore": "~1.4.4" - }, - "dependencies": { - "colors": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/colors/-/colors-0.5.1.tgz", - "integrity": "sha1-fQAj6usVTo7p/Oddy5I9DtFmd3Q=", - "dev": true - } } }, "nopt": { @@ -13152,17 +13107,17 @@ "dev": true }, "npm-run-all": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.3.tgz", - "integrity": "sha512-aOG0N3Eo/WW+q6sUIdzcV2COS8VnTZCmdji0VQIAZF3b+a3YWb0AD0vFIyjKec18A7beLGbaQ5jFTNI2bPt9Cg==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", "dev": true, "requires": { - "ansi-styles": "^3.2.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.4", + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", "memorystream": "^0.3.1", "minimatch": "^3.0.4", - "ps-tree": "^1.1.0", + "pidtree": "^0.3.0", "read-pkg": "^3.0.0", "shell-quote": "^1.6.1", "string.prototype.padend": "^3.0.0" @@ -13178,9 +13133,9 @@ } }, "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "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", @@ -13189,20 +13144,14 @@ } }, "color-convert": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz", - "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==", + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "requires": { - "color-name": "1.1.1" + "color-name": "1.1.3" } }, - "color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", - "dev": true - }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", @@ -13216,12 +13165,6 @@ "which": "^1.2.9" } }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, "load-json-file": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", @@ -13234,15 +13177,6 @@ "strip-bom": "^3.0.0" } }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, "parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", @@ -13280,21 +13214,15 @@ } }, "semver": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", - "dev": true - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", "dev": true }, "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { "has-flag": "^3.0.0" @@ -13345,9 +13273,9 @@ "dev": true }, "nwsapi": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.0.4.tgz", - "integrity": "sha512-Zt6HRR6RcJkuj5/N9zeE7FN6YitRW//hK2wTOwX274IBphbY3Zf5+yn5mZ9v/SzAOTMjQNxZf9KkmPLWn0cV4g==", + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.0.9.tgz", + "integrity": "sha512-nlWFSCTYQcHk/6A9FFnfhKc14c3aFhfdNBXgo8Qgi9QTBu/qg3Ww+Uiz9wMzXd1T8GFxPc2QIHB6Qtf2XFryFQ==", "dev": true }, "oauth-sign": { @@ -13437,15 +13365,81 @@ } }, "object.entries": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.0.4.tgz", - "integrity": "sha1-G/mk3SKI9bM/Opk9JXZh8F0WGl8=", + "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.2", - "es-abstract": "^1.6.1", - "function-bind": "^1.1.0", - "has": "^1.0.1" + "define-properties": "^1.1.3", + "es-abstract": "^1.12.0", + "function-bind": "^1.1.1", + "has": "^1.0.3" + }, + "dependencies": { + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "es-abstract": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", + "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.0", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-keys": "^1.0.12" + } + }, + "es-to-primitive": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", + "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", + "dev": true + }, + "is-symbol": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", + "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "dev": true, + "requires": { + "has-symbols": "^1.0.0" + } + }, + "object-keys": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", + "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", + "dev": true + } } }, "object.getownpropertydescriptors": { @@ -13843,15 +13837,6 @@ } } }, - "pause-stream": { - "version": "0.0.11", - "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", - "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", - "dev": true, - "requires": { - "through": "~2.3" - } - }, "pbkdf2": { "version": "3.0.17", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", @@ -13876,6 +13861,12 @@ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", "dev": true }, + "pidtree": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.0.tgz", + "integrity": "sha512-9CT4NFlDcosssyg8KVFltgokyKZIFjoBxw8CTGy+5F38Y1eQWrt8tRayiUOXE+zVKQnYu5BR8JjCtvK3BcnBhg==", + "dev": true + }, "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", @@ -13956,9 +13947,9 @@ "dev": true }, "popper.js": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.14.3.tgz", - "integrity": "sha1-FDj5jQRqz3tNeM1QK/QYrGTU8JU=" + "version": "1.14.6", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.14.6.tgz", + "integrity": "sha512-AGwHGQBKumlk/MDfrSOf0JHhJCImdDMcGNoqKmKkU+68GFazv3CQ6q9r7Ja1sKDZmYWTckY/uLyEznheTDycnA==" }, "portfinder": { "version": "1.0.20", @@ -18277,9 +18268,9 @@ "dev": true }, "prettier": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.14.3.tgz", - "integrity": "sha512-qZDVnCrnpsRJJq5nSsiHCE3BYMED2OtsI+cmzIzF1QIfqm5ALf8tEJcO27zV1gKNKRPdhjO0dNWnrzssDQ1tFg==", + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.15.3.tgz", + "integrity": "sha512-gAU9AGAPMaKb3NNSUUuhhFAS7SCO4ALTN4nRIn6PJ075Qd28Yn2Ig2ahEJWdJwJmlEBTUfC7mMUSFy8MwsOCfg==", "dev": true }, "pretty-bytes": { @@ -18383,29 +18374,12 @@ } }, "prop-types": { - "version": "15.6.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.1.tgz", - "integrity": "sha512-4ec7bY1Y66LymSUOH/zARVYObB23AT2h8cf6e/O6ZALB/N0sqZFEx7rq6EYPX2MkOdKORuooI/H5k9TlR4q7kQ==", + "version": "15.6.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.2.tgz", + "integrity": "sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ==", "requires": { - "fbjs": "^0.8.16", "loose-envify": "^1.3.1", "object-assign": "^4.1.1" - }, - "dependencies": { - "fbjs": { - "version": "0.8.16", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.16.tgz", - "integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=", - "requires": { - "core-js": "^1.0.0", - "isomorphic-fetch": "^2.1.1", - "loose-envify": "^1.0.0", - "object-assign": "^4.1.0", - "promise": "^7.1.1", - "setimmediate": "^1.0.5", - "ua-parser-js": "^0.7.9" - } - } } }, "prop-types-extra": { @@ -18433,15 +18407,6 @@ "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", "dev": true }, - "ps-tree": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.1.0.tgz", - "integrity": "sha1-tCGyQUDWID8e08dplrRCewjowBQ=", - "dev": true, - "requires": { - "event-stream": "~3.3.0" - } - }, "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", @@ -18652,14 +18617,14 @@ } }, "react": { - "version": "16.4.1", - "resolved": "https://registry.npmjs.org/react/-/react-16.4.1.tgz", - "integrity": "sha512-3GEs0giKp6E0Oh/Y9ZC60CmYgUPnp7voH9fbjWsvXtYFb4EWtgQub0ADSq0sJR0BbHc4FThLLtzlcFaFXIorwg==", + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.7.0.tgz", + "integrity": "sha512-StCz3QY8lxTb5cl2HJxjwLFOXPIFQp+p+hxQfc8WE0QiLfCtIlKj8/+5tjjKm8uSTlAW+fCPaavGFS06V9Ar3A==", "requires": { - "fbjs": "^0.8.16", "loose-envify": "^1.1.0", "object-assign": "^4.1.1", - "prop-types": "^15.6.0" + "prop-types": "^15.6.2", + "scheduler": "^0.12.0" } }, "react-app-polyfill": { @@ -18762,9 +18727,9 @@ } }, "react-chartjs-2": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/react-chartjs-2/-/react-chartjs-2-2.7.2.tgz", - "integrity": "sha512-ncTSOZjlI9j3aXGbsiXEoCtb6oS5nixYe9wLWK+3af1aq7K/vcFkzA9faA5Z/q+fgMDWLEa078cWAyzymxvvYg==", + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/react-chartjs-2/-/react-chartjs-2-2.7.4.tgz", + "integrity": "sha512-lXTpBaDlk9rIMjRONjZd76dIUhEm3vOp2jOrJrsFG/UpFI5VqX8Xw83apVHTnUGJ968f8i/i/syLddls4NHy2g==", "requires": { "lodash": "^4.17.4", "prop-types": "^15.5.8" @@ -19023,14 +18988,14 @@ } }, "react-dom": { - "version": "16.4.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.4.1.tgz", - "integrity": "sha512-1Gin+wghF/7gl4Cqcvr1DxFX2Osz7ugxSwl6gBqCMpdrxHjIFUS7GYxrFftZ9Ln44FHw0JxCFD9YtZsrbR5/4A==", + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.7.0.tgz", + "integrity": "sha512-D0Ufv1ExCAmF38P2Uh1lwpminZFRXEINJe53zRAbm4KPwSyd6DY/uDoS0Blj9jvPpn1+wivKpZYc8aAAN/nAkg==", "requires": { - "fbjs": "^0.8.16", "loose-envify": "^1.1.0", "object-assign": "^4.1.1", - "prop-types": "^15.6.0" + "prop-types": "^15.6.2", + "scheduler": "^0.12.0" } }, "react-error-overlay": { @@ -19040,42 +19005,21 @@ "dev": true }, "react-i18next": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-7.6.1.tgz", - "integrity": "sha512-fyS70F3/YncuR9+h2VcmGQJOGmv0eUHMyjTPmaIDzrNRKxFnGcqgu7BFPC+69WJjZG2dTHBEhwEzmqi7Ia+qNQ==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-9.0.3.tgz", + "integrity": "sha512-N03buTFvhdMQsZMV5Bl283HNQpVfRmfCjUTvxxH3FieiQgDB4tcTgkPYj192CfxujNFfyKEj10hnN0Y670JPKQ==", "requires": { - "hoist-non-react-statics": "^2.3.1", - "html-parse-stringify2": "2.0.1", - "prop-types": "^15.6.0" + "@babel/runtime": "^7.1.2", + "hoist-non-react-statics": "3.0.1", + "html-parse-stringify2": "2.0.1" }, "dependencies": { - "fbjs": { - "version": "0.8.16", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.16.tgz", - "integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=", - "requires": { - "core-js": "^1.0.0", - "isomorphic-fetch": "^2.1.1", - "loose-envify": "^1.0.0", - "object-assign": "^4.1.0", - "promise": "^7.1.1", - "setimmediate": "^1.0.5", - "ua-parser-js": "^0.7.9" - } - }, "hoist-non-react-statics": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.0.tgz", - "integrity": "sha512-6Bl6XsDT1ntE0lHbIhr4Kp2PGcleGZ66qu5Jqk8lc0Xc/IeG6gVLmwUGs/K0Us+L8VWoKgj0uWdPMataOsm31w==" - }, - "prop-types": { - "version": "15.6.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.1.tgz", - "integrity": "sha512-4ec7bY1Y66LymSUOH/zARVYObB23AT2h8cf6e/O6ZALB/N0sqZFEx7rq6EYPX2MkOdKORuooI/H5k9TlR4q7kQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.0.1.tgz", + "integrity": "sha512-1kXwPsOi0OGQIZNVMPvgWJ9tSnGMiMfJdihqEzrPEXlHOBh9AAHXX/QYmAJTXztnz/K+PQ8ryCb4eGaN6HlGbQ==", "requires": { - "fbjs": "^0.8.16", - "loose-envify": "^1.3.1", - "object-assign": "^4.1.1" + "react-is": "^16.3.2" } } } @@ -19085,6 +19029,16 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.4.1.tgz", "integrity": "sha512-xpb0PpALlFWNw/q13A+1aHeyJyLYCg0/cCHPUA43zYluZuIPHaHL3k8OBsTgQtxqW0FhyDEMvi8fZ/+7+r4OSQ==" }, + "react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + }, + "react-onclickout": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/react-onclickout/-/react-onclickout-2.0.8.tgz", + "integrity": "sha1-0XixP7h6SBNWdhtFSqYN9wabLaQ=" + }, "react-onclickoutside": { "version": "6.7.1", "resolved": "https://registry.npmjs.org/react-onclickoutside/-/react-onclickoutside-6.7.1.tgz", @@ -19104,14 +19058,12 @@ } }, "react-perfect-scrollbar": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/react-perfect-scrollbar/-/react-perfect-scrollbar-1.1.1.tgz", - "integrity": "sha512-pwCaygwZoJ3vi3wMKi/gvVkWgyDq3tCrtvuPzILya/fwTjjnE6eHG2vMGcPjmxOaxSka1ydOQrfAiUM/pCoKVg==", + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/react-perfect-scrollbar/-/react-perfect-scrollbar-1.4.4.tgz", + "integrity": "sha512-Ivu3I8LiwJs4ZSxl0dS39uhtzElBQo1wTW2d+9CkR08UBGp9zWXWDVlG4AYGP3jGJrQZQIsBCznRROR0j6l3HQ==", "requires": { - "perfect-scrollbar": "^1.3.0", - "prop-types": "*", - "react": "^16.3.1", - "react-dom": "^16.3.1" + "perfect-scrollbar": "^1.4.0", + "prop-types": "^15.6.1" } }, "react-popper": { @@ -19123,18 +19075,6 @@ "prop-types": "^15.6.1" } }, - "react-reconciler": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.7.0.tgz", - "integrity": "sha512-50JwZ3yNyMS8fchN+jjWEJOH3Oze7UmhxeoJLn2j6f3NjpfCRbcmih83XTWmzqtar/ivd5f7tvQhvvhism2fgg==", - "dev": true, - "requires": { - "fbjs": "^0.8.16", - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.0" - } - }, "react-router": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/react-router/-/react-router-4.3.1.tgz", @@ -19306,47 +19246,83 @@ } }, "react-table": { - "version": "6.8.2", - "resolved": "https://registry.npmjs.org/react-table/-/react-table-6.8.2.tgz", - "integrity": "sha1-Olrvq8hZUzANFnhvowfDBhDbmtw=", + "version": "6.8.6", + "resolved": "https://registry.npmjs.org/react-table/-/react-table-6.8.6.tgz", + "integrity": "sha1-oK2LSDkxkFLVvvwBJgP7Fh5S7eM=", "requires": { "classnames": "^2.2.5" } }, "react-test-renderer": { - "version": "16.4.1", - "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.4.1.tgz", - "integrity": "sha512-wyyiPxRZOTpKnNIgUBOB6xPLTpIzwcQMIURhZvzUqZzezvHjaGNsDPBhMac5fIY3Jf5NuKxoGvV64zDSOECPPQ==", + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.7.0.tgz", + "integrity": "sha512-tFbhSjknSQ6+ttzmuGdv+SjQfmvGcq3PFKyPItohwhhOBmRoTf1We3Mlt3rJtIn85mjPXOkKV+TaKK4irvk9Yg==", "dev": true, "requires": { - "fbjs": "^0.8.16", "object-assign": "^4.1.1", - "prop-types": "^15.6.0", - "react-is": "^16.4.1" + "prop-types": "^15.6.2", + "react-is": "^16.7.0", + "scheduler": "^0.12.0" + }, + "dependencies": { + "react-is": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.7.0.tgz", + "integrity": "sha512-Z0VRQdF4NPDoI0tsXVMLkJLiwEBa+RP66g0xDHxgxysxSoCUccSten4RTF/UFvZF1dZvZ9Zu1sx+MDXwcOR34g==", + "dev": true + } } }, "react-transition-group": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.3.1.tgz", - "integrity": "sha512-hu4/LAOFSKjWt1+1hgnOv3ldxmt6lvZGTWz4KUkFrqzXrNDIVSu6txIcPszw7PNduR8en9YTN55JLRyd/L1ZiQ==", + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.5.3.tgz", + "integrity": "sha512-2DGFck6h99kLNr8pOFk+z4Soq3iISydwOFeeEVPjTN6+Y01CmvbWmnN02VuTWyFdnRtIDPe+wy2q6Ui8snBPZg==", "requires": { "dom-helpers": "^3.3.1", - "loose-envify": "^1.3.1", - "prop-types": "^15.6.1" + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2", + "react-lifecycles-compat": "^3.0.4" + }, + "dependencies": { + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + } } }, "reactstrap": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/reactstrap/-/reactstrap-6.1.0.tgz", - "integrity": "sha512-ClxPR2aNGlnwxCI6tv9jRXA1MnsBSFs/Mus2cUJRVMGEEBuMoENhXilCCtR7yoQS0yJMmgGjM/Z37zRRy0k05g==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/reactstrap/-/reactstrap-7.1.0.tgz", + "integrity": "sha512-wtc4RkgnGn1TsZ0AxOZ2OqT+b8YmCWZj/tErPujWLepxzlEEhveZGC+uDerdaHVSAzJUP2DTk605iper7hutQQ==", "requires": { + "@babel/runtime": "^7.2.0", "classnames": "^2.2.3", "lodash.isfunction": "^3.0.9", "lodash.isobject": "^3.0.2", "lodash.tonumber": "^4.0.3", "prop-types": "^15.5.8", + "react-lifecycles-compat": "^3.0.4", "react-popper": "^0.10.4", "react-transition-group": "^2.3.1" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.2.0.tgz", + "integrity": "sha512-oouEibCbHMVdZSDlJBO6bZmID/zA/G/Qx3H1d3rSNPTD+L8UNKvCat7aKWSJ74zYbm5zWGh0GQN0hKj8zYFTCg==", + "requires": { + "regenerator-runtime": "^0.12.0" + } + }, + "regenerator-runtime": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", + "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==" + } } }, "read-pkg": { @@ -20309,31 +20285,6 @@ "lodash": "^4.0.0", "scss-tokenizer": "^0.2.3", "yargs": "^7.0.0" - }, - "dependencies": { - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } } }, "sass-loader": { @@ -20425,6 +20376,15 @@ "xmlchars": "^1.3.1" } }, + "scheduler": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.12.0.tgz", + "integrity": "sha512-t7MBR28Akcp4Jm+QoR63XgAi9YgCUmgvDHqf5otgAj4QvdoBE4ImCX0ffehefePPG+aitiYHp0g/mW6s4Tp+dw==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, "schema-utils": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", @@ -21057,15 +21017,6 @@ } } }, - "split": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", - "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", - "dev": true, - "requires": { - "through": "2" - } - }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -21155,50 +21106,12 @@ "dev": true }, "stdout-stream": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.0.tgz", - "integrity": "sha1-osfIWH5U2UJ+qe2zrD8s1SLfN4s=", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", + "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", "dev": true, "requires": { "readable-stream": "^2.0.1" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "dev": true - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } } }, "stealthy-require": { @@ -21217,15 +21130,6 @@ "readable-stream": "^2.0.2" } }, - "stream-combiner": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", - "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", - "dev": true, - "requires": { - "duplexer": "~0.1.1" - } - }, "stream-each": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", @@ -21304,6 +21208,17 @@ "function-bind": "^1.0.2" } }, + "string.prototype.trim": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz", + "integrity": "sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.5.0", + "function-bind": "^1.0.2" + } + }, "string_decoder": { "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", @@ -22070,11 +21985,6 @@ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", "dev": true }, - "ua-parser-js": { - "version": "0.7.14", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.14.tgz", - "integrity": "sha1-EQ1T+kw/MmwSEpK76skE0uAzh8o=" - }, "uglify-js": { "version": "3.4.9", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz", @@ -22246,12 +22156,6 @@ } } }, - "underscore": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz", - "integrity": "sha1-YaajIBBiKvoHljvzJSA88SI51gQ=", - "dev": true - }, "unicode-canonical-property-names-ecmascript": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", @@ -23749,13 +23653,12 @@ } }, "ws": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-4.1.0.tgz", - "integrity": "sha512-ZGh/8kF9rrRNffkLFV4AzhvooEclrOH0xaugmqGsIfFgOE/pIz4fMc4Ef+5HSQqTEug2S9JZIWDR47duDSLfaA==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", + "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", "dev": true, "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0" + "async-limiter": "~1.0.0" } }, "xml-name-validator": { diff --git a/package.json b/package.json index 27f10b0..3f7b857 100644 --- a/package.json +++ b/package.json @@ -4,46 +4,46 @@ "private": true, "homepage": "/admin", "devDependencies": { - "enzyme": "^3.3.0", - "enzyme-adapter-react-16": "^1.1.1", + "enzyme": "^3.8.0", + "enzyme-adapter-react-16": "^1.7.1", "faker": "^4.1.0", - "fetch-mock": "^6.5.0", - "fs-extra": "^6.0.0", - "jest-enzyme": "^6.0.2", + "fetch-mock": "^7.3.0", + "fs-extra": "^7.0.1", + "jest-enzyme": "^7.0.1", "multi-progress": "^2.0.0", - "node-fetch": "^2.1.2", - "node-sass-chokidar": "^1.3.0", - "npm-run-all": "^4.1.3", - "prettier": "^1.14.3", + "node-fetch": "^2.3.0", + "node-sass-chokidar": "^1.3.4", + "npm-run-all": "^4.1.5", + "prettier": "^1.15.3", "react-scripts": "^2.1.3", - "react-test-renderer": "^16.4.1" + "react-test-renderer": "^16.7.0" }, "dependencies": { - "@coreui/coreui": "^2.0.2", + "@coreui/coreui": "^2.1.6", "@coreui/coreui-plugin-chartjs-custom-tooltips": "^1.2.0", - "@coreui/icons": "0.2.0", - "@coreui/react": "^2.0.4", + "@coreui/icons": "0.3.0", + "@coreui/react": "^2.1.3", "@fortawesome/fontawesome-free": "^5.6.3", - "bootstrap": "^4.1.1", + "bootstrap": "^4.2.1", "bootstrap-daterangepicker": "^3.0.3", - "chart.js": "^2.7.2", - "i18next": "^11.3.2", - "i18next-browser-languagedetector": "^2.2.0", + "chart.js": "^2.7.3", + "i18next": "^13.1.4", + "i18next-browser-languagedetector": "^2.2.4", "i18next-xhr-backend": "^1.5.1", - "ionicons": "^3.0.0", + "ionicons": "^4.5.1", "lodash.debounce": "^4.0.8", "moment": "^2.23.0", - "prop-types": "^15.6.1", - "react": "^16.4.1", + "prop-types": "^15.6.2", + "react": "^16.7.0", "react-bootstrap-daterangepicker": "^4.1.0", "react-bootstrap-typeahead": "^3.2.4", - "react-chartjs-2": "^2.7.2", - "react-dom": "^16.4.1", - "react-i18next": "^7.6.1", + "react-chartjs-2": "^2.7.4", + "react-dom": "^16.7.0", + "react-i18next": "^9.0.3", "react-router-dom": "^4.3.1", - "react-table": "^6.8.2", - "react-transition-group": "^2.3.1", - "reactstrap": "^6.1.0", + "react-table": "^6.8.6", + "react-transition-group": "^2.5.3", + "reactstrap": "^7.1.0", "sha.js": "^2.4.11", "simple-line-icons": "^2.4.1" }, diff --git a/src/components/common/Alert.js b/src/components/common/Alert.js index 8669ee3..40437d3 100644 --- a/src/components/common/Alert.js +++ b/src/components/common/Alert.js @@ -1,12 +1,12 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* Alert component -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * Alert component + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React from "react"; import PropTypes from "prop-types"; diff --git a/src/components/common/Alert.test.js b/src/components/common/Alert.test.js index 5f33193..9596dee 100644 --- a/src/components/common/Alert.test.js +++ b/src/components/common/Alert.test.js @@ -1,12 +1,12 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* Alert component test -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * Alert component test + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React from "react"; import { shallow } from "enzyme"; diff --git a/src/components/common/BoxedLayoutButton.js b/src/components/common/BoxedLayoutButton.js index 8ff17e1..070347d 100755 --- a/src/components/common/BoxedLayoutButton.js +++ b/src/components/common/BoxedLayoutButton.js @@ -1,12 +1,12 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2018 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* Boxed layout button -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * Boxed layout button + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React from "react"; diff --git a/src/components/common/BoxedLayoutButton.test.js b/src/components/common/BoxedLayoutButton.test.js index 8785a9f..08a55e5 100644 --- a/src/components/common/BoxedLayoutButton.test.js +++ b/src/components/common/BoxedLayoutButton.test.js @@ -1,12 +1,12 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* BoxedLayoutButton component test -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * BoxedLayoutButton component test + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React from "react"; import { shallow } from "enzyme"; diff --git a/src/components/common/Footer.js b/src/components/common/Footer.js index ff79d34..7c9de0d 100644 --- a/src/components/common/Footer.js +++ b/src/components/common/Footer.js @@ -1,15 +1,15 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* Footer component -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * Footer component + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React from "react"; -import { translate } from "react-i18next"; +import { withNamespaces } from "react-i18next"; import FooterUpdateStatus from "./FooterUpdateStatus"; const Footer = props => { @@ -32,4 +32,4 @@ const Footer = props => { ); }; -export default translate(["common", "footer"])(Footer); +export default withNamespaces(["common", "footer"])(Footer); diff --git a/src/components/common/Footer.test.js b/src/components/common/Footer.test.js index 405b9e4..5ba3a5b 100644 --- a/src/components/common/Footer.test.js +++ b/src/components/common/Footer.test.js @@ -1,12 +1,12 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* Footer component test -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * Footer component test + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React from "react"; import { shallow } from "enzyme"; diff --git a/src/components/common/FooterUpdateStatus.js b/src/components/common/FooterUpdateStatus.js index 1cdb7c1..53dddf2 100644 --- a/src/components/common/FooterUpdateStatus.js +++ b/src/components/common/FooterUpdateStatus.js @@ -1,15 +1,15 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* FooterUpdateStatus component -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * FooterUpdateStatus component + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React from "react"; -import { translate } from "react-i18next"; +import { withNamespaces } from "react-i18next"; import { Link } from "react-router-dom"; const FooterUpdateStatus = props => { @@ -27,4 +27,4 @@ const FooterUpdateStatus = props => { } }; -export default translate("footer")(FooterUpdateStatus); +export default withNamespaces("footer")(FooterUpdateStatus); diff --git a/src/components/common/Header.js b/src/components/common/Header.js index 61c15ce..7c52f2b 100644 --- a/src/components/common/Header.js +++ b/src/components/common/Header.js @@ -1,12 +1,12 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* Header component -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * Header component + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React from "react"; import { Link } from "react-router-dom"; diff --git a/src/components/common/NavButton.js b/src/components/common/NavButton.js index c480fa0..83edd74 100644 --- a/src/components/common/NavButton.js +++ b/src/components/common/NavButton.js @@ -1,12 +1,12 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* A button in the sidebar -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * A button in the sidebar + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ /* eslint-disable jsx-a11y/anchor-is-valid */ diff --git a/src/components/common/NavDropdown.js b/src/components/common/NavDropdown.js index 12a7340..a76c42c 100644 --- a/src/components/common/NavDropdown.js +++ b/src/components/common/NavDropdown.js @@ -1,12 +1,12 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* A dropdown in the sidebar -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * A dropdown in the sidebar + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ /* eslint-disable jsx-a11y/anchor-is-valid */ diff --git a/src/components/common/Sidebar.js b/src/components/common/Sidebar.js index ca793bd..70e737a 100644 --- a/src/components/common/Sidebar.js +++ b/src/components/common/Sidebar.js @@ -1,15 +1,15 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* Sidebar component -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * Sidebar component + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React from "react"; -import { translate } from "react-i18next"; +import { withNamespaces } from "react-i18next"; import { NavLink } from "react-router-dom"; import { Nav, NavItem } from "reactstrap"; import logo from "../../img/logo.svg"; @@ -102,4 +102,4 @@ const Sidebar = ({ items, ...props }) => { ); }; -export default translate(["common", "location"])(Sidebar); +export default withNamespaces(["common", "location"])(Sidebar); diff --git a/src/components/common/Sidebar.test.js b/src/components/common/Sidebar.test.js index 2f5f5a7..3c6176c 100644 --- a/src/components/common/Sidebar.test.js +++ b/src/components/common/Sidebar.test.js @@ -1,12 +1,12 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* Sidebar component test -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * Sidebar component test + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React from "react"; import { shallow } from "enzyme"; diff --git a/src/components/common/StatusBadge.js b/src/components/common/StatusBadge.js index ce1a9c7..a6b7dbb 100644 --- a/src/components/common/StatusBadge.js +++ b/src/components/common/StatusBadge.js @@ -1,3 +1,13 @@ +/* Pi-hole: A black hole for Internet advertisements + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * Status badge component + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ + import React, { Component } from "react"; import PropTypes from "prop-types"; import { translate } from "react-i18next"; diff --git a/src/components/common/StatusBadge.test.js b/src/components/common/StatusBadge.test.js index 534dd46..6e1e17c 100644 --- a/src/components/common/StatusBadge.test.js +++ b/src/components/common/StatusBadge.test.js @@ -1,12 +1,12 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* SummaryStats component test -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * SummaryStats component test + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React from "react"; import { shallow } from "enzyme"; diff --git a/src/components/common/WithAPIData.js b/src/components/common/WithAPIData.js index eb0c88a..575d393 100644 --- a/src/components/common/WithAPIData.js +++ b/src/components/common/WithAPIData.js @@ -1,12 +1,12 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* WithAPIData Component -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * WithAPIData Component + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import { Component } from "react"; import PropTypes from "prop-types"; diff --git a/src/components/dashboard/ChartTooltip.js b/src/components/dashboard/ChartTooltip.js index e5238c0..ecd0401 100644 --- a/src/components/dashboard/ChartTooltip.js +++ b/src/components/dashboard/ChartTooltip.js @@ -1,12 +1,12 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* Chart Tooltip component -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * Chart Tooltip component + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React, { Component } from "react"; import PropTypes from "prop-types"; @@ -67,10 +67,12 @@ class ChartTooltip extends Component { // Transform and sort the tooltip data let data = []; if (tooltip.body) { - data = tooltip.body.map(body => body.lines).map((item, i) => ({ - data: item[0], - colors: tooltip.labelColors[i] - })); + data = tooltip.body + .map(body => body.lines) + .map((item, i) => ({ + data: item[0], + colors: tooltip.labelColors[i] + })); } data.sort((a, b) => a.data.split(": ")[0].localeCompare(b.data.split(": ")[0]) diff --git a/src/components/dashboard/ClientsGraph.js b/src/components/dashboard/ClientsGraph.js index 3ed3ebf..0d2e992 100644 --- a/src/components/dashboard/ClientsGraph.js +++ b/src/components/dashboard/ClientsGraph.js @@ -1,18 +1,18 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* Clients Graph component -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * Clients Graph component + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React, { Component } from "react"; import ReactDOM from "react-dom"; import PropTypes from "prop-types"; import { Line } from "react-chartjs-2"; -import { translate } from "react-i18next"; +import { withNamespaces } from "react-i18next"; import { padNumber } from "../../util"; import api from "../../util/api"; import ChartTooltip from "./ChartTooltip"; @@ -193,7 +193,7 @@ export const loadingProps = { datasets: [] }; -export const TranslatedClientsGraph = translate("dashboard")(ClientsGraph); +export const TranslatedClientsGraph = withNamespaces("dashboard")(ClientsGraph); export default props => ( { i < colors.length ? colors[i] : "#" + - parseInt("" + Math.random() * 0xffffff, 10) - .toString(16) - .padStart(6, "0") + parseInt("" + Math.random() * 0xffffff, 10) + .toString(16) + .padStart(6, "0") ); i++; diff --git a/src/components/dashboard/GenericDoughnutChart.test.js b/src/components/dashboard/GenericDoughnutChart.test.js index 399dd52..c9f90a2 100644 --- a/src/components/dashboard/GenericDoughnutChart.test.js +++ b/src/components/dashboard/GenericDoughnutChart.test.js @@ -1,12 +1,12 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* GenericDoughnutChart component test -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * GenericDoughnutChart component test + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React from "react"; import { shallow } from "enzyme"; diff --git a/src/components/dashboard/QueriesGraph.js b/src/components/dashboard/QueriesGraph.js index 4245919..7c43ba5 100644 --- a/src/components/dashboard/QueriesGraph.js +++ b/src/components/dashboard/QueriesGraph.js @@ -1,17 +1,17 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* Queries Graph component -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * Queries Graph component + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React, { Component } from "react"; import PropTypes from "prop-types"; import { Line } from "react-chartjs-2"; -import { translate } from "react-i18next"; +import { withNamespaces } from "react-i18next"; import { padNumber } from "../../util"; import api from "../../util/api"; import { WithAPIData } from "../common/WithAPIData"; @@ -183,7 +183,7 @@ export const loadingProps = { blocked_over_time: [] }; -export const TranslatedQueriesGraph = translate("dashboard")(QueriesGraph); +export const TranslatedQueriesGraph = withNamespaces("dashboard")(QueriesGraph); export default props => ( ( /> ); -export default translate("dashboard")(QueryTypesChart); +export default withNamespaces("dashboard")(QueryTypesChart); diff --git a/src/components/dashboard/SummaryStats.js b/src/components/dashboard/SummaryStats.js index 4a54c93..bdb811e 100644 --- a/src/components/dashboard/SummaryStats.js +++ b/src/components/dashboard/SummaryStats.js @@ -1,16 +1,16 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* Summary Stats component -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * Summary Stats component + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React, { Component, Fragment } from "react"; import PropTypes from "prop-types"; -import { translate } from "react-i18next"; +import { withNamespaces } from "react-i18next"; import { WithAPIData } from "../common/WithAPIData"; import api from "../../util/api"; @@ -129,7 +129,7 @@ export const initialProps = { uniqueClients: "---" }; -export const TranslatedSummaryStats = translate(["common", "dashboard"])( +export const TranslatedSummaryStats = withNamespaces(["common", "dashboard"])( SummaryStats ); diff --git a/src/components/dashboard/SummaryStats.test.js b/src/components/dashboard/SummaryStats.test.js index 1808986..4749387 100644 --- a/src/components/dashboard/SummaryStats.test.js +++ b/src/components/dashboard/SummaryStats.test.js @@ -1,12 +1,12 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* SummaryStats component test -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * SummaryStats component test + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React from "react"; import { shallow } from "enzyme"; diff --git a/src/components/dashboard/TopBlocked.js b/src/components/dashboard/TopBlocked.js index a284f08..8141f97 100644 --- a/src/components/dashboard/TopBlocked.js +++ b/src/components/dashboard/TopBlocked.js @@ -1,15 +1,15 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* Top Blocked component -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * Top Blocked component + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React from "react"; -import { translate } from "react-i18next"; +import { withNamespaces } from "react-i18next"; import api from "../../util/api"; import TopTable from "./TopTable"; @@ -74,4 +74,4 @@ const TopBlocked = ({ t, ...props }) => ( /> ); -export default translate(["common", "dashboard"])(TopBlocked); +export default withNamespaces(["common", "dashboard"])(TopBlocked); diff --git a/src/components/dashboard/TopBlocked.test.js b/src/components/dashboard/TopBlocked.test.js index 2bd92e4..9821d34 100644 --- a/src/components/dashboard/TopBlocked.test.js +++ b/src/components/dashboard/TopBlocked.test.js @@ -1,12 +1,12 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* TopBlocked component test -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * TopBlocked component test + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React from "react"; import { transformData, generateRows } from "./TopBlocked"; diff --git a/src/components/dashboard/TopClients.js b/src/components/dashboard/TopClients.js index 6e78b04..a57e934 100644 --- a/src/components/dashboard/TopClients.js +++ b/src/components/dashboard/TopClients.js @@ -1,15 +1,15 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* Top Clients component -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * Top Clients component + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React from "react"; -import { translate } from "react-i18next"; +import { withNamespaces } from "react-i18next"; import api from "../../util/api"; import TopTable from "./TopTable"; @@ -74,4 +74,4 @@ const TopClients = ({ t, ...props }) => ( /> ); -export default translate(["common", "dashboard"])(TopClients); +export default withNamespaces(["common", "dashboard"])(TopClients); diff --git a/src/components/dashboard/TopClients.test.js b/src/components/dashboard/TopClients.test.js index 5a7e5c4..d94f40c 100644 --- a/src/components/dashboard/TopClients.test.js +++ b/src/components/dashboard/TopClients.test.js @@ -1,12 +1,12 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* TopClients component test -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * TopClients component test + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React from "react"; import { transformData, generateRows } from "./TopClients"; diff --git a/src/components/dashboard/TopDomains.js b/src/components/dashboard/TopDomains.js index e4f8263..778deed 100644 --- a/src/components/dashboard/TopDomains.js +++ b/src/components/dashboard/TopDomains.js @@ -1,15 +1,15 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* Top Domains component -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * Top Domains component + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React from "react"; -import { translate } from "react-i18next"; +import { withNamespaces } from "react-i18next"; import api from "../../util/api"; import TopTable from "./TopTable"; @@ -74,4 +74,4 @@ const TopDomains = ({ t, ...props }) => ( /> ); -export default translate(["common", "dashboard"])(TopDomains); +export default withNamespaces(["common", "dashboard"])(TopDomains); diff --git a/src/components/dashboard/TopDomains.test.js b/src/components/dashboard/TopDomains.test.js index 97bc8d8..c2473b9 100644 --- a/src/components/dashboard/TopDomains.test.js +++ b/src/components/dashboard/TopDomains.test.js @@ -1,12 +1,12 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* TopDomains component test -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * TopDomains component test + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React from "react"; import { generateRows, transformData } from "./TopDomains"; diff --git a/src/components/dashboard/TopTable.js b/src/components/dashboard/TopTable.js index d5abb5c..f8fb645 100644 --- a/src/components/dashboard/TopTable.js +++ b/src/components/dashboard/TopTable.js @@ -1,12 +1,12 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* Generic top items component -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * Generic top items component + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React, { Component } from "react"; import PropTypes from "prop-types"; diff --git a/src/components/dashboard/TopTable.test.js b/src/components/dashboard/TopTable.test.js index b1d3cc4..fe10196 100644 --- a/src/components/dashboard/TopTable.test.js +++ b/src/components/dashboard/TopTable.test.js @@ -1,12 +1,12 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* TopTable component test -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * TopTable component test + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React from "react"; import { shallow } from "enzyme"; diff --git a/src/components/dashboard/UpstreamsChart.js b/src/components/dashboard/UpstreamsChart.js index d73fd38..54c9eff 100644 --- a/src/components/dashboard/UpstreamsChart.js +++ b/src/components/dashboard/UpstreamsChart.js @@ -1,15 +1,15 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* Upstream Servers / Forward Destinations Chart component -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * Upstream Servers / Forward Destinations Chart component + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React from "react"; -import { translate } from "react-i18next"; +import { withNamespaces } from "react-i18next"; import api from "../../util/api"; import GenericDoughnutChart from "./GenericDoughnutChart"; @@ -27,4 +27,4 @@ const UpstreamsChart = ({ t }) => ( /> ); -export default translate("dashboard")(UpstreamsChart); +export default withNamespaces("dashboard")(UpstreamsChart); diff --git a/src/components/list/DomainInput.js b/src/components/list/DomainInput.js index 8429e72..5b243c1 100644 --- a/src/components/list/DomainInput.js +++ b/src/components/list/DomainInput.js @@ -1,16 +1,16 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* Domain Input component -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * Domain Input component + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React, { Component } from "react"; import PropTypes from "prop-types"; -import { translate } from "react-i18next"; +import { withNamespaces } from "react-i18next"; import api from "../../util/api"; class DomainInput extends Component { @@ -86,4 +86,4 @@ DomainInput.defaultProps = { placeholder: "" }; -export default translate(["common", "lists"])(DomainInput); +export default withNamespaces(["common", "lists"])(DomainInput); diff --git a/src/components/list/DomainInput.test.js b/src/components/list/DomainInput.test.js index a0f17b3..e5a54ae 100644 --- a/src/components/list/DomainInput.test.js +++ b/src/components/list/DomainInput.test.js @@ -1,12 +1,12 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* DomainInput component test -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * DomainInput component test + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React from "react"; import { shallow } from "enzyme"; diff --git a/src/components/list/DomainList.js b/src/components/list/DomainList.js index 59c2db1..a071e9d 100644 --- a/src/components/list/DomainList.js +++ b/src/components/list/DomainList.js @@ -1,16 +1,16 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* Domain List component -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * Domain List component + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React from "react"; import PropTypes from "prop-types"; -import { translate } from "react-i18next"; +import { withNamespaces } from "react-i18next"; import api from "../../util/api"; import { Button } from "reactstrap"; @@ -64,4 +64,4 @@ DomainList.propTypes = { onRemove: PropTypes.func.isRequired }; -export default translate(["common", "lists"])(DomainList); +export default withNamespaces(["common", "lists"])(DomainList); diff --git a/src/components/list/DomainList.test.js b/src/components/list/DomainList.test.js index 9e41556..681f6d9 100644 --- a/src/components/list/DomainList.test.js +++ b/src/components/list/DomainList.test.js @@ -1,12 +1,12 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* DomainList component test -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * DomainList component test + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React from "react"; import { shallow } from "enzyme"; diff --git a/src/components/list/ListPage.js b/src/components/list/ListPage.js index 3f844c8..243785d 100644 --- a/src/components/list/ListPage.js +++ b/src/components/list/ListPage.js @@ -1,16 +1,16 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* List Page component (abstracted whitelist, blacklist, etc) -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * List Page component (abstracted whitelist, blacklist, etc) + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React, { Component } from "react"; import PropTypes from "prop-types"; -import { translate } from "react-i18next"; +import { withNamespaces } from "react-i18next"; import DomainInput from "./DomainInput"; import Alert from "../common/Alert"; import DomainList from "./DomainList"; @@ -165,4 +165,4 @@ class ListPage extends Component { } } -export default translate(["common", "lists"])(ListPage); +export default withNamespaces(["common", "lists"])(ListPage); diff --git a/src/components/list/ListPage.test.js b/src/components/list/ListPage.test.js index 112a264..7f15358 100644 --- a/src/components/list/ListPage.test.js +++ b/src/components/list/ListPage.test.js @@ -1,12 +1,12 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* ListPage component test -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * ListPage component test + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React from "react"; import { shallow } from "enzyme"; diff --git a/src/components/log/QueryLog.js b/src/components/log/QueryLog.js index 5230aaf..840ca53 100644 --- a/src/components/log/QueryLog.js +++ b/src/components/log/QueryLog.js @@ -1,19 +1,19 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* Query Log component -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * Query Log component + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React, { Component, Fragment } from "react"; import ReactTable from "react-table"; import DateRangePicker from "react-bootstrap-daterangepicker"; import { Button } from "reactstrap"; import i18n from "i18next"; -import { translate } from "react-i18next"; +import { withNamespaces } from "react-i18next"; import debounce from "lodash.debounce"; import moment from "moment"; import { ignoreCancel, makeCancelable, padNumber } from "../../util"; @@ -518,4 +518,4 @@ const columns = t => [ } ]; -export default translate(["common", "query-log"])(QueryLog); +export default withNamespaces(["common", "query-log"])(QueryLog); diff --git a/src/components/login/ForgotPassword.js b/src/components/login/ForgotPassword.js index 85f7e8b..bfa2caa 100644 --- a/src/components/login/ForgotPassword.js +++ b/src/components/login/ForgotPassword.js @@ -1,16 +1,16 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* Forgot Password Reminder -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * Forgot Password Reminder + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React, { Component } from "react"; import PropTypes from "prop-types"; -import { translate } from "react-i18next"; +import { withNamespaces } from "react-i18next"; class ForgotPassword extends Component { state = { @@ -85,4 +85,4 @@ ForgotPassword.propTypes = { error: PropTypes.bool.isRequired }; -export default translate("login")(ForgotPassword); +export default withNamespaces("login")(ForgotPassword); diff --git a/src/components/login/ForgotPassword.test.js b/src/components/login/ForgotPassword.test.js index 602fdab..9e83523 100644 --- a/src/components/login/ForgotPassword.test.js +++ b/src/components/login/ForgotPassword.test.js @@ -1,12 +1,12 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* ForgotPassword component test -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * ForgotPassword component test + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React from "react"; import { shallow } from "enzyme"; diff --git a/src/components/settings/ConditionalForwardingSettings.js b/src/components/settings/ConditionalForwardingSettings.js index 39daf87..326cbaf 100644 --- a/src/components/settings/ConditionalForwardingSettings.js +++ b/src/components/settings/ConditionalForwardingSettings.js @@ -1,12 +1,12 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* Settings :: DNS :: Upstream DNS Servers -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * Settings :: DNS :: Upstream DNS Servers + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React, { Fragment } from "react"; import PropTypes from "prop-types"; diff --git a/src/components/settings/DHCPInfo.js b/src/components/settings/DHCPInfo.js index 2063ec0..407fb42 100644 --- a/src/components/settings/DHCPInfo.js +++ b/src/components/settings/DHCPInfo.js @@ -1,15 +1,15 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* Settings :: DHCP -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * Settings :: DHCP + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React, { Component } from "react"; -import { translate } from "react-i18next"; +import { withNamespaces } from "react-i18next"; import { ignoreCancel, makeCancelable } from "../../util"; import api from "../../util/api"; import { @@ -308,4 +308,4 @@ class DHCPInfo extends Component { } } -export default translate(["common", "settings", "api-errors"])(DHCPInfo); +export default withNamespaces(["common", "settings", "api-errors"])(DHCPInfo); diff --git a/src/components/settings/DHCPInfo.test.js b/src/components/settings/DHCPInfo.test.js index 4a4b23d..fde1cf2 100644 --- a/src/components/settings/DHCPInfo.test.js +++ b/src/components/settings/DHCPInfo.test.js @@ -1,12 +1,12 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* DHCPInfo component test -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * DHCPInfo component test + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React from "react"; import { shallow } from "enzyme"; diff --git a/src/components/settings/DNSInfo.js b/src/components/settings/DNSInfo.js index 3aa5cc6..a4a0495 100644 --- a/src/components/settings/DNSInfo.js +++ b/src/components/settings/DNSInfo.js @@ -1,15 +1,15 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* Settings :: DNS -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * Settings :: DNS + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React, { Component } from "react"; -import { translate } from "react-i18next"; +import { withNamespaces } from "react-i18next"; import { ignoreCancel, makeCancelable } from "../../util"; import api from "../../util/api"; import DnsList from "./DnsList"; @@ -229,4 +229,4 @@ class DNSInfo extends Component { } } -export default translate(["common", "settings"])(DNSInfo); +export default withNamespaces(["common", "settings"])(DNSInfo); diff --git a/src/components/settings/DnsList.js b/src/components/settings/DnsList.js index 7beaee2..84597de 100644 --- a/src/components/settings/DnsList.js +++ b/src/components/settings/DnsList.js @@ -1,12 +1,12 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* An Editable List of Upstream DNS Servers -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * An Editable List of Upstream DNS Servers + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React from "react"; import PropTypes from "prop-types"; diff --git a/src/components/settings/DnsListItem.js b/src/components/settings/DnsListItem.js index 7131f04..fecf7b2 100644 --- a/src/components/settings/DnsListItem.js +++ b/src/components/settings/DnsListItem.js @@ -1,12 +1,12 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* A Upstream DNS List Item -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * A Upstream DNS List Item + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React from "react"; import PropTypes from "prop-types"; diff --git a/src/components/settings/DnsListNewItem.js b/src/components/settings/DnsListNewItem.js index cd7e238..3f4621a 100644 --- a/src/components/settings/DnsListNewItem.js +++ b/src/components/settings/DnsListNewItem.js @@ -1,18 +1,18 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* Input For New DNS List Items -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * Input For New DNS List Items + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React, { Component } from "react"; import PropTypes from "prop-types"; import { Button, InputGroup, InputGroupAddon, ListGroupItem } from "reactstrap"; import { Typeahead } from "react-bootstrap-typeahead"; -import { translate } from "react-i18next"; +import { withNamespaces } from "react-i18next"; import { preconfiguredUpstreamOptions } from "./preconfiguredUpstreams"; /** @@ -92,4 +92,4 @@ class DnsListNewItem extends Component { } } -export default translate("settings")(DnsListNewItem); +export default withNamespaces("settings")(DnsListNewItem); diff --git a/src/components/settings/DnsOptionSettings.js b/src/components/settings/DnsOptionSettings.js index 782d58f..7faa201 100644 --- a/src/components/settings/DnsOptionSettings.js +++ b/src/components/settings/DnsOptionSettings.js @@ -1,12 +1,12 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* Settings :: DNS :: DNS Options -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * Settings :: DNS :: DNS Options + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React, { Fragment } from "react"; import PropTypes from "prop-types"; diff --git a/src/components/settings/FTLInfo.js b/src/components/settings/FTLInfo.js index 52e9f27..5a272b4 100644 --- a/src/components/settings/FTLInfo.js +++ b/src/components/settings/FTLInfo.js @@ -1,16 +1,16 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* Settings :: FTL Information component -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * Settings :: FTL Information component + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React, { Component } from "react"; import PropTypes from "prop-types"; -import { translate } from "react-i18next"; +import { withNamespaces } from "react-i18next"; import api from "../../util/api"; import { WithAPIData } from "../common/WithAPIData"; @@ -48,7 +48,7 @@ export const initialData = { sqliteVersion: "" }; -export const TranslatedFTLInfo = translate(["settings"])(FTLInfo); +export const TranslatedFTLInfo = withNamespaces(["settings"])(FTLInfo); export default props => ( ({ hostname: "" }); -export const TranslatedNetworkInfo = translate(["common", "settings"])( +export const TranslatedNetworkInfo = withNamespaces(["common", "settings"])( NetworkInfo ); diff --git a/src/components/settings/VersionCard.js b/src/components/settings/VersionCard.js index 794eed5..f8c201f 100644 --- a/src/components/settings/VersionCard.js +++ b/src/components/settings/VersionCard.js @@ -1,15 +1,15 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* Settings :: Version - Card component -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * Settings :: Version - Card component + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React, { Component } from "react"; -import { translate } from "react-i18next"; +import { withNamespaces } from "react-i18next"; import PropTypes from "prop-types"; import { Collapse } from "reactstrap"; @@ -75,4 +75,4 @@ class VersionCard extends Component { } } -export default translate(["common", "settings"])(VersionCard); +export default withNamespaces(["common", "settings"])(VersionCard); diff --git a/src/components/settings/VersionInfo.js b/src/components/settings/VersionInfo.js index c374413..f88bf0e 100644 --- a/src/components/settings/VersionInfo.js +++ b/src/components/settings/VersionInfo.js @@ -1,16 +1,16 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* Settings :: Version Information component -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * Settings :: Version Information component + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React, { Component } from "react"; import PropTypes from "prop-types"; -import { translate } from "react-i18next"; +import { withNamespaces } from "react-i18next"; import api from "../../util/api"; import VersionCard from "./VersionCard"; import { WithAPIData } from "../common/WithAPIData"; @@ -98,7 +98,7 @@ export const initialData = { } }; -export const TranslatedVersionInfo = translate(["common"])(VersionInfo); +export const TranslatedVersionInfo = withNamespaces(["common"])(VersionInfo); export default props => ( ({ - // This mock makes sure any components using the translate HoC receive the t function as a prop - translate: () => component => { + // This mock makes sure any components using the withNamespaces HoC receive the t function as a prop + withNamespaces: () => component => { component.defaultProps = { ...component.defaultProps, t: key => key }; return component; } diff --git a/src/util/api.js b/src/util/api.js index a1d5a0c..484c0a7 100644 --- a/src/util/api.js +++ b/src/util/api.js @@ -1,3 +1,13 @@ +/* Pi-hole: A black hole for Internet advertisements + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * API functions + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ + import http from "./http"; import config from "../config"; diff --git a/src/util/api.test.js b/src/util/api.test.js index cf0b2c4..3dbb66d 100644 --- a/src/util/api.test.js +++ b/src/util/api.test.js @@ -1,12 +1,12 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* Utility function tests -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * Utility function tests + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import api from "./api"; diff --git a/src/util/http.js b/src/util/http.js index 6740cc9..8004a42 100644 --- a/src/util/http.js +++ b/src/util/http.js @@ -1,12 +1,12 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* Basic HTTP functions for accessing API endpoints -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * Basic HTTP functions for accessing API endpoints + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import api from "./api"; import config from "../config"; diff --git a/src/util/index.js b/src/util/index.js index b7525bc..3976359 100644 --- a/src/util/index.js +++ b/src/util/index.js @@ -1,12 +1,12 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* Various utilities -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * Various utilities + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ /** * Pad a two digit number diff --git a/src/validate.js b/src/validate.js index dfcffad..cb3a3ee 100644 --- a/src/validate.js +++ b/src/validate.js @@ -1,12 +1,12 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* Utility functions for validating domains, hostnames etc. -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * Utility functions for validating domains, hostnames etc. + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ export function isValidHostname(hostname) { // Must not exceed 253 characters total diff --git a/src/validate.test.js b/src/validate.test.js index 4c46022..7629156 100644 --- a/src/validate.test.js +++ b/src/validate.test.js @@ -1,12 +1,12 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* Validation function tests -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * Validation function tests + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import { isPositiveNumber, diff --git a/src/views/Blacklist.js b/src/views/Blacklist.js index 4c3e1c5..8c67128 100644 --- a/src/views/Blacklist.js +++ b/src/views/Blacklist.js @@ -1,15 +1,15 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* Blacklist page -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * Blacklist page + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React from "react"; -import { translate } from "react-i18next"; +import { withNamespaces } from "react-i18next"; import api from "../util/api"; import ListPage from "../components/list/ListPage"; import { isValidDomain } from "../validate"; @@ -31,4 +31,4 @@ const Blacklist = props => { ); }; -export default translate("location")(Blacklist); +export default withNamespaces("location")(Blacklist); diff --git a/src/views/Dashboard.js b/src/views/Dashboard.js index 5b8ac7c..f2a92ea 100644 --- a/src/views/Dashboard.js +++ b/src/views/Dashboard.js @@ -1,12 +1,12 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* Dashboard page -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * Dashboard page + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React, { Fragment } from "react"; import SummaryStats from "../components/dashboard/SummaryStats"; diff --git a/src/views/Login.js b/src/views/Login.js index d65174f..c8d4580 100644 --- a/src/views/Login.js +++ b/src/views/Login.js @@ -1,12 +1,12 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* Login page -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * Login page + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React, { Component, Fragment } from "react"; import { Redirect } from "react-router-dom"; @@ -15,7 +15,7 @@ import api from "../util/api"; import logo from "../img/logo.svg"; import { routes } from "../routes"; import ForgotPassword from "../components/login/ForgotPassword"; -import { translate } from "react-i18next"; +import { withNamespaces } from "react-i18next"; import config from "../config"; class Login extends Component { @@ -176,4 +176,4 @@ class Login extends Component { } } -export default translate(["login", "location"])(Login); +export default withNamespaces(["login", "location"])(Login); diff --git a/src/views/Logout.js b/src/views/Logout.js index c1f6bab..ff1a84b 100644 --- a/src/views/Logout.js +++ b/src/views/Logout.js @@ -1,12 +1,12 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* Logout the user -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * Logout the user + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React, { Component } from "react"; import { Redirect } from "react-router-dom"; diff --git a/src/views/Networking.js b/src/views/Networking.js index 5402e4d..476058e 100644 --- a/src/views/Networking.js +++ b/src/views/Networking.js @@ -1,15 +1,15 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* Settings Page - Networking DNS & DHCP -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * Settings Page - Networking DNS & DHCP + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React, { Component } from "react"; -import { translate } from "react-i18next"; +import { withNamespaces } from "react-i18next"; import { Nav, NavItem, NavLink, TabContent, TabPane } from "reactstrap"; import DHCPInfo from "../components/settings/DHCPInfo"; import DNSInfo from "../components/settings/DNSInfo"; @@ -83,4 +83,4 @@ class Networking extends Component { } } -export default translate(["common", "settings"])(Networking); +export default withNamespaces(["common", "settings"])(Networking); diff --git a/src/views/Regexlist.js b/src/views/Regexlist.js index 08e39a5..509ac71 100644 --- a/src/views/Regexlist.js +++ b/src/views/Regexlist.js @@ -1,15 +1,15 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* Regexlist page -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * Regexlist page + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React from "react"; -import { translate } from "react-i18next"; +import { withNamespaces } from "react-i18next"; import ListPage from "../components/list/ListPage"; import api from "../util/api"; import { isValidRegex } from "../validate"; @@ -31,4 +31,4 @@ const Regexlist = props => { ); }; -export default translate(["location", "lists"])(Regexlist); +export default withNamespaces(["location", "lists"])(Regexlist); diff --git a/src/views/Versions.js b/src/views/Versions.js index 0436879..d20e60f 100644 --- a/src/views/Versions.js +++ b/src/views/Versions.js @@ -1,12 +1,12 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* Settings - Software versions -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * Settings - Software versions + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React from "react"; import VersionInfo from "../components/settings/VersionInfo"; diff --git a/src/views/Whitelist.js b/src/views/Whitelist.js index 73e7aad..2ffd055 100644 --- a/src/views/Whitelist.js +++ b/src/views/Whitelist.js @@ -1,15 +1,15 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* Whitelist page -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * Whitelist page + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ import React from "react"; -import { translate } from "react-i18next"; +import { withNamespaces } from "react-i18next"; import ListPage from "../components/list/ListPage"; import api from "../util/api"; import { isValidDomain } from "../validate"; @@ -31,4 +31,4 @@ const Whitelist = props => { ); }; -export default translate(["location", "lists"])(Whitelist); +export default withNamespaces(["location", "lists"])(Whitelist); diff --git a/update-translations.js b/update-translations.js index cf438ed..2dc8bad 100644 --- a/update-translations.js +++ b/update-translations.js @@ -1,16 +1,16 @@ /* Pi-hole: A black hole for Internet advertisements -* (c) 2017 Pi-hole, LLC (https://pi-hole.net) -* Network-wide ad blocking via your own hardware. -* -* Web Interface -* Update translations from POEditor -* -* This file is copyright under the latest version of the EUPL. -* Please see LICENSE file for your rights under this license. */ + * (c) 2019 Pi-hole, LLC (https://pi-hole.net) + * Network-wide ad blocking via your own hardware. + * + * Web Interface + * Update translations from POEditor + * + * This file is copyright under the latest version of the EUPL. + * Please see LICENSE file for your rights under this license. */ const fs = require("fs-extra"); -const fetch = require('node-fetch'); -const MultiProgress = require('multi-progress'); +const fetch = require("node-fetch"); +const MultiProgress = require("multi-progress"); const PROJECT_ID = 66305; const I18N_FOLDER = "public/i18n"; @@ -19,7 +19,7 @@ const multi = new MultiProgress(process.stderr); const apiToken = process.env.POEDITOR_API_TOKEN; -if(!apiToken) { +if (!apiToken) { console.log("Please set the POEDITOR_API_TOKEN environment variable"); process.exit(1); } @@ -40,23 +40,20 @@ function makeFormData(data) { * Return a list of languages which are at least 90% translated */ function getTranslatedLanguages() { - return fetch( - "https://api.poeditor.com/v2/languages/list", - { - method: "POST", - body: makeFormData({ - "api_token": apiToken, - "id": PROJECT_ID, - }), - headers: { "Content-Type": "application/x-www-form-urlencoded" } - } - ) + return fetch("https://api.poeditor.com/v2/languages/list", { + method: "POST", + body: makeFormData({ + api_token: apiToken, + id: PROJECT_ID + }), + headers: { "Content-Type": "application/x-www-form-urlencoded" } + }) .then(response => response.json()) .then(data => { return data.result.languages .filter(lang => lang.percentage >= 70) - .map(lang => lang.code) - }) + .map(lang => lang.code); + }); } /** @@ -67,20 +64,17 @@ function getTranslatedLanguages() { * @param bar the progress bar */ function fetchTag(lang, tag, bar) { - fetch( - "https://api.poeditor.com/v2/projects/export", - { - method: "POST", - body: makeFormData({ - "api_token": apiToken, - "id": PROJECT_ID, - "language": lang, - "type": "json", - "tags": tag - }), - headers: { "Content-Type": "application/x-www-form-urlencoded" } - } - ) + fetch("https://api.poeditor.com/v2/projects/export", { + method: "POST", + body: makeFormData({ + api_token: apiToken, + id: PROJECT_ID, + language: lang, + type: "json", + tags: tag + }), + headers: { "Content-Type": "application/x-www-form-urlencoded" } + }) .then(exportResponse => { bar.tick(); return exportResponse.json(); @@ -92,39 +86,42 @@ function fetchTag(lang, tag, bar) { }) .then(langData => { const parsedData = langData.reduce((map, item) => { - // Check for plurals - if(typeof item.definition === "string") { + if (typeof item.definition === "string") { map[item.term] = item.definition; - } else if(item.definition === null) { + } else if (item.definition === null) { // Don't add missing strings. They will be loaded from the fallback language. return map; } else { // Check if there's just singular and plural - if(Object.keys(item.definition).length === 2) { + if (Object.keys(item.definition).length === 2) { map[item.term] = item.definition["one"]; map[item.term + "_plural"] = item.definition["other"]; } else { // Map POEditor's plural keys to i18next's plural suffixes const pluralMap = { - "zero": "0", - "one": "1", - "two": "2", - "few": "3", - "many": "4", - "other": "5" + zero: "0", + one: "1", + two: "2", + few: "3", + many: "4", + other: "5" }; // Add the various plural keys - for(let plural of Object.keys(item.definition)) - map[item.term + "_" + pluralMap[plural]] = item.definition[plural]; + for (let plural of Object.keys(item.definition)) + map[item.term + "_" + pluralMap[plural]] = + item.definition[plural]; } } return map; }, {}); - fs.outputFileSync(`${I18N_FOLDER}/${lang}/${tag}.json`, JSON.stringify(parsedData, null, 4)); + fs.outputFileSync( + `${I18N_FOLDER}/${lang}/${tag}.json`, + JSON.stringify(parsedData, null, 4) + ); bar.tick(); }); } @@ -155,8 +152,7 @@ function fetchAllTags(lang) { // Render at 0% bar.tick(0); - for(const tag of tags) - fetchTag(lang, tag, bar); + for (const tag of tags) fetchTag(lang, tag, bar); } // Remove old translations @@ -165,10 +161,8 @@ fs.emptyDirSync(I18N_FOLDER); // Get the translated languages and download the translations console.log("Fetching languages"); -getTranslatedLanguages() - .then(languages => { - console.log(`Languages over 70% translated: ${languages.join(", ")}`); +getTranslatedLanguages().then(languages => { + console.log(`Languages over 70% translated: ${languages.join(", ")}`); - for(const lang of languages) - fetchAllTags(lang); - }); + for (const lang of languages) fetchAllTags(lang); +});