From 5e6d945095f0923c4fb748a8fbfe94312a7bc021 Mon Sep 17 00:00:00 2001 From: Jasper Miller-Waugh Date: Wed, 27 Oct 2021 23:06:06 +1300 Subject: [PATCH 001/142] Most hacked in POC --- server/routers/api-router.js | 8 ++++++-- src/components/PublicGroupList.vue | 3 +++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/server/routers/api-router.js b/server/routers/api-router.js index fbe8136e5..be186ccca 100644 --- a/server/routers/api-router.js +++ b/server/routers/api-router.js @@ -141,9 +141,13 @@ router.get("/api/status-page/monitor-list", cache("5 minutes"), async (_request, await checkPublished(); const publicGroupList = []; let list = await R.find("group", " public = 1 ORDER BY weight "); - for (let groupBean of list) { - publicGroupList.push(await groupBean.toPublicJSON()); + let monitor_info = await groupBean.toPublicJSON() + monitor_info.monitorList = await Promise.all(monitor_info.monitorList.map( async (monitor)=>{ + let tags = await R.getAll("SELECT mt.monitor_id,mt.value, tag.name, tag.color FROM monitor_tag mt JOIN tag ON mt.tag_id = tag.id WHERE mt.monitor_id = ?", [monitor.id]); + return {...monitor,tags: tags} + })) + publicGroupList.push(monitor_info); } response.json(publicGroupList); diff --git a/src/components/PublicGroupList.vue b/src/components/PublicGroupList.vue index 23d19e6cd..39fb342e2 100644 --- a/src/components/PublicGroupList.vue +++ b/src/components/PublicGroupList.vue @@ -40,6 +40,7 @@ {{ monitor.element.name }} +
@@ -59,12 +60,14 @@ import Draggable from "vuedraggable"; import HeartbeatBar from "./HeartbeatBar.vue"; import Uptime from "./Uptime.vue"; +import Tag from "./Tag.vue"; export default { components: { Draggable, HeartbeatBar, Uptime, + Tag, }, props: { editMode: { From 9143b73f844ebd1214c2160a6e1319fa91191b6f Mon Sep 17 00:00:00 2001 From: Jasper Miller-Waugh Date: Thu, 28 Oct 2021 14:53:27 +1300 Subject: [PATCH 002/142] Styling for tags --- src/assets/app.scss | 4 ++++ src/components/PublicGroupList.vue | 3 +++ 2 files changed, 7 insertions(+) diff --git a/src/assets/app.scss b/src/assets/app.scss index e1a5d052d..ae1ff687c 100644 --- a/src/assets/app.scss +++ b/src/assets/app.scss @@ -346,6 +346,10 @@ textarea.form-control { &.active { background-color: #cdf8f4; } + // Removes margin to line up tags list with uptime percentage + .tags, .tag-wrapper:first-child { + margin-left: 0 !important; + } } } diff --git a/src/components/PublicGroupList.vue b/src/components/PublicGroupList.vue index 39fb342e2..97441d50e 100644 --- a/src/components/PublicGroupList.vue +++ b/src/components/PublicGroupList.vue @@ -40,6 +40,9 @@ {{ monitor.element.name }} + +
+
From 348c5ec995c34d7d17f1e44297e205f04858d787 Mon Sep 17 00:00:00 2001 From: Jasper Miller-Waugh Date: Thu, 28 Oct 2021 15:07:19 +1300 Subject: [PATCH 003/142] Match lint settings --- server/routers/api-router.js | 7 ++++--- src/components/PublicGroupList.vue | 1 - 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/server/routers/api-router.js b/server/routers/api-router.js index be186ccca..bf0cc54c8 100644 --- a/server/routers/api-router.js +++ b/server/routers/api-router.js @@ -142,12 +142,13 @@ router.get("/api/status-page/monitor-list", cache("5 minutes"), async (_request, const publicGroupList = []; let list = await R.find("group", " public = 1 ORDER BY weight "); for (let groupBean of list) { - let monitor_info = await groupBean.toPublicJSON() - monitor_info.monitorList = await Promise.all(monitor_info.monitorList.map( async (monitor)=>{ + let monitorGroup = await groupBean.toPublicJSON() + monitorGroup.monitorList = await Promise.all(monitorGroup.monitorList.map( async (monitor)=>{ + // Includes tags as an array in response, allows for tags to be displayed on public status page let tags = await R.getAll("SELECT mt.monitor_id,mt.value, tag.name, tag.color FROM monitor_tag mt JOIN tag ON mt.tag_id = tag.id WHERE mt.monitor_id = ?", [monitor.id]); return {...monitor,tags: tags} })) - publicGroupList.push(monitor_info); + publicGroupList.push(monitorGroup); } response.json(publicGroupList); diff --git a/src/components/PublicGroupList.vue b/src/components/PublicGroupList.vue index 97441d50e..f30edcef5 100644 --- a/src/components/PublicGroupList.vue +++ b/src/components/PublicGroupList.vue @@ -40,7 +40,6 @@ {{ monitor.element.name }} -
From 24664cde2c204f5809c193643837b097cdce81af Mon Sep 17 00:00:00 2001 From: Jasper Miller-Waugh Date: Thu, 28 Oct 2021 15:22:35 +1300 Subject: [PATCH 004/142] Smarter CSS to fix Mobile alignment --- src/assets/app.scss | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/assets/app.scss b/src/assets/app.scss index ae1ff687c..db01e12d2 100644 --- a/src/assets/app.scss +++ b/src/assets/app.scss @@ -346,9 +346,9 @@ textarea.form-control { &.active { background-color: #cdf8f4; } - // Removes margin to line up tags list with uptime percentage - .tags, .tag-wrapper:first-child { - margin-left: 0 !important; + .tags { + // Removes margin to line up tags list with uptime percentage + margin-left: -0.25rem; } } } From b32bfb3ff1578483dd3b8f10e3a05aa83a1fc3cf Mon Sep 17 00:00:00 2001 From: Jasper Miller-Waugh Date: Fri, 29 Oct 2021 18:19:24 +1300 Subject: [PATCH 005/142] Added toggle for tag visibility --- server/routers/api-router.js | 18 +++++++++++++----- src/pages/StatusPage.vue | 31 +++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 5 deletions(-) diff --git a/server/routers/api-router.js b/server/routers/api-router.js index bf0cc54c8..b58c4a002 100644 --- a/server/routers/api-router.js +++ b/server/routers/api-router.js @@ -101,6 +101,10 @@ router.get("/api/status-page/config", async (_request, response) => { config.statusPagePublished = true; } + if (! config.statusPageTags) { + config.statusPageTags = "hidden"; + } + if (! config.title) { config.title = "Uptime Kuma"; } @@ -143,11 +147,15 @@ router.get("/api/status-page/monitor-list", cache("5 minutes"), async (_request, let list = await R.find("group", " public = 1 ORDER BY weight "); for (let groupBean of list) { let monitorGroup = await groupBean.toPublicJSON() - monitorGroup.monitorList = await Promise.all(monitorGroup.monitorList.map( async (monitor)=>{ - // Includes tags as an array in response, allows for tags to be displayed on public status page - let tags = await R.getAll("SELECT mt.monitor_id,mt.value, tag.name, tag.color FROM monitor_tag mt JOIN tag ON mt.tag_id = tag.id WHERE mt.monitor_id = ?", [monitor.id]); - return {...monitor,tags: tags} - })) + console.log("\n\nsettings", await getSettings("statusPage")) + if ((await getSettings("statusPage")).statusPageTags=="visible") { + monitorGroup.monitorList = await Promise.all(monitorGroup.monitorList.map( async (monitor)=>{ + // Includes tags as an array in response, allows for tags to be displayed on public status page + let tags = await R.getAll("SELECT mt.monitor_id,mt.value, tag.name, tag.color FROM monitor_tag mt JOIN tag ON mt.tag_id = tag.id WHERE mt.monitor_id = ?", [monitor.id]); + return {...monitor,tags: tags} + })) + } + publicGroupList.push(monitorGroup); } diff --git a/src/pages/StatusPage.vue b/src/pages/StatusPage.vue index 87634f35a..4ee810c7f 100644 --- a/src/pages/StatusPage.vue +++ b/src/pages/StatusPage.vue @@ -77,6 +77,16 @@ {{ $t("Switch to Dark Theme") }} + + + +
@@ -292,6 +302,10 @@ export default { return this.config.statusPageTheme; }, + tagsVisible() { + return this.config.statusPageTags + }, + logoClass() { if (this.editMode) { return { @@ -472,6 +486,23 @@ export default { changeTheme(name) { this.config.statusPageTheme = name; }, + changeTagsVisibilty(newState) { + this.config.statusPageTags = newState; + + // On load, if the status page will not include tags if it's not enabled for security reasons + // Which means if we enable tags, it won't show in the UI until saved + // So we have this to enhance UX and load in the tags from the authenticated source instantly + this.$root.publicGroupList = this.$root.publicGroupList.map((group)=>{ + return {...group, + monitorList: group.monitorList.map((monitor)=> { + // We only include the tags if visible so we can reuse the logic to hide the tags on disable + return {...monitor, + tags: newState==="visible" ? this.$root.monitorList[monitor.id].tags : [] + } + }) + } + }); + }, /** * Crop Success From 74688e69aa6313c14a87bab53a5712f900bd0b20 Mon Sep 17 00:00:00 2001 From: Jasper Miller-Waugh Date: Sat, 30 Oct 2021 00:58:46 +1300 Subject: [PATCH 006/142] Remove debug statement in server/routers/api-router.js Co-authored-by: Adam Stachowicz --- server/routers/api-router.js | 1 - 1 file changed, 1 deletion(-) diff --git a/server/routers/api-router.js b/server/routers/api-router.js index b58c4a002..a5d12450c 100644 --- a/server/routers/api-router.js +++ b/server/routers/api-router.js @@ -147,7 +147,6 @@ router.get("/api/status-page/monitor-list", cache("5 minutes"), async (_request, let list = await R.find("group", " public = 1 ORDER BY weight "); for (let groupBean of list) { let monitorGroup = await groupBean.toPublicJSON() - console.log("\n\nsettings", await getSettings("statusPage")) if ((await getSettings("statusPage")).statusPageTags=="visible") { monitorGroup.monitorList = await Promise.all(monitorGroup.monitorList.map( async (monitor)=>{ // Includes tags as an array in response, allows for tags to be displayed on public status page From 8ec858fd1424c06ac1127f87b8dfca486a65e14b Mon Sep 17 00:00:00 2001 From: Minvinea <29579830+Minvinea@users.noreply.github.com> Date: Sun, 31 Oct 2021 21:18:36 +0100 Subject: [PATCH 007/142] Add missing translation Line 282 to 306 --- src/languages/fr-FR.js | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/languages/fr-FR.js b/src/languages/fr-FR.js index 062435d73..176a6150f 100644 --- a/src/languages/fr-FR.js +++ b/src/languages/fr-FR.js @@ -279,4 +279,29 @@ export default { promosmsTypeSpeed: "SMS SPEED - La plus haute des priorités dans le système. Très rapide et fiable mais cher (environ le double du prix d'un SMS FULL).", promosmsPhoneNumber: "Numéro de téléphone (Poiur les déstinataires Polonais, vous pouvez enlever les codes interna.)", promosmsSMSSender: "SMS Expéditeur : Nom pré-enregistré ou l'un de base: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Primary Base URL": "Primary Base URL", + emailCustomSubject: "Sujet personalisé", + clicksendsms: "ClickSend SMS", + checkPrice: "Vérification {0} tarifs:", + apiCredentials: "Crédentials de l'API", + octopushLegacyHint: "Vous utilisez l'ancienne version d'Octopush (2011-2020) ou la nouvelle version ?", + "Feishu WebHookUrl": "Feishu WebHookURL", + matrixHomeserverURL: "L'URL du serveur (avec http(s):// et le port de manière facultatif)", + "Internal Room Id": "ID de la salle interne", + matrixDesc1: "Vous pouvez trouvez l'ID de salle interne en regardant dans la section avancée des paramètres dans le client Matrix. C'est sensé ressembler à: !QMdRCpUIfLwsfjxye6:home.server.", + matrixDesc2: "Il est fortement recommandé de créer un nouvel utilisateur et de ne pas utiliser le jeton d'accès de votre propre utilisateur Matrix, car il vous donnera un accès complet à votre compte et à toutes les salles que vous avez rejointes. Au lieu de cela, créez un nouvel utilisateur et invitez-le uniquement dans la salle dans laquelle vous souhaitez recevoir la notification. Vous pouvez obtenir le jeton d'accès en exécutant {0}", + Method: "Méthode", + Body: "Le corps", + Headers: "En-têtes", + PushUrl: "Push URL", + HeadersInvalidFormat: "L'en-têtes de la requête n'est pas dans un format JSON valide: ", + BodyInvalidFormat: "Le corps de la requête n'est pas dans un format JSON valide: ", + "Monitor History": "Historique de la sonde", + clearDataOlderThan: "Garder l'historique des données de la sonde durant {0} jours.", + PasswordsDoNotMatch: "Les mots de passe ne correspondent pas.", + records: "Enregistrements", + "One record": "Un enregistrement", + steamApiKeyDescription: "Pour surveiller un serveur Steam, vous avez besoin d'une clé Steam Web-API. Vous pouvez enregistrer votre clé ici: ", + "Current User": "Utilisateur actuel", + recent: "Récent", }; From 4004926e643e63a2a8d6915cef6af6992225aa9f Mon Sep 17 00:00:00 2001 From: Jasper Miller-Waugh Date: Mon, 1 Nov 2021 12:52:21 +1300 Subject: [PATCH 008/142] Small formatting changes from code-review Co-authored-by: deef --- src/pages/StatusPage.vue | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/pages/StatusPage.vue b/src/pages/StatusPage.vue index 4ee810c7f..06be16169 100644 --- a/src/pages/StatusPage.vue +++ b/src/pages/StatusPage.vue @@ -493,10 +493,12 @@ export default { // Which means if we enable tags, it won't show in the UI until saved // So we have this to enhance UX and load in the tags from the authenticated source instantly this.$root.publicGroupList = this.$root.publicGroupList.map((group)=>{ - return {...group, + return { + ...group, monitorList: group.monitorList.map((monitor)=> { // We only include the tags if visible so we can reuse the logic to hide the tags on disable - return {...monitor, + return { + ...monitor, tags: newState==="visible" ? this.$root.monitorList[monitor.id].tags : [] } }) From 12ef9f39c51fac03f5a18ba4182a9a81328c662f Mon Sep 17 00:00:00 2001 From: Jasper Miller-Waugh Date: Mon, 1 Nov 2021 13:23:46 +1300 Subject: [PATCH 009/142] Merged buttons, cleaned up SS tag retrieval and made tagsVisible a bool. Also to note: due to the transition of tagsVisible this breaks compatibility with the previous commits, delete the tagsVisible setting in the database to fix. --- server/routers/api-router.js | 19 +++++++++++++------ src/pages/StatusPage.vue | 19 ++++++++++--------- 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/server/routers/api-router.js b/server/routers/api-router.js index a5d12450c..30f6a828c 100644 --- a/server/routers/api-router.js +++ b/server/routers/api-router.js @@ -102,7 +102,7 @@ router.get("/api/status-page/config", async (_request, response) => { } if (! config.statusPageTags) { - config.statusPageTags = "hidden"; + config.statusPageTags = false; } if (! config.title) { @@ -144,15 +144,22 @@ router.get("/api/status-page/monitor-list", cache("5 minutes"), async (_request, try { await checkPublished(); const publicGroupList = []; - let list = await R.find("group", " public = 1 ORDER BY weight "); + const tagsVisible = (await getSettings("statusPage")).statusPageTags; + const list = await R.find("group", " public = 1 ORDER BY weight "); for (let groupBean of list) { - let monitorGroup = await groupBean.toPublicJSON() - if ((await getSettings("statusPage")).statusPageTags=="visible") { + let monitorGroup = await groupBean.toPublicJSON(); + if (tagsVisible) { monitorGroup.monitorList = await Promise.all(monitorGroup.monitorList.map( async (monitor)=>{ // Includes tags as an array in response, allows for tags to be displayed on public status page - let tags = await R.getAll("SELECT mt.monitor_id,mt.value, tag.name, tag.color FROM monitor_tag mt JOIN tag ON mt.tag_id = tag.id WHERE mt.monitor_id = ?", [monitor.id]); + const tags = await R.getAll( + `SELECT monitor_tag.monitor_id, monitor_tag.value, tag.name, tag.color + FROM monitor_tag + JOIN tag + ON monitor_tag.tag_id = tag.id + WHERE monitor_tag.monitor_id = ?`, [monitor.id] + ); return {...monitor,tags: tags} - })) + })); } publicGroupList.push(monitorGroup); diff --git a/src/pages/StatusPage.vue b/src/pages/StatusPage.vue index 06be16169..1320f093b 100644 --- a/src/pages/StatusPage.vue +++ b/src/pages/StatusPage.vue @@ -78,14 +78,15 @@ {{ $t("Switch to Dark Theme") }} - - - @@ -499,7 +500,7 @@ export default { // We only include the tags if visible so we can reuse the logic to hide the tags on disable return { ...monitor, - tags: newState==="visible" ? this.$root.monitorList[monitor.id].tags : [] + tags: newState ? this.$root.monitorList[monitor.id].tags : [] } }) } From f3651a1219a12b28e66964fb4fcd90eb742d3cad Mon Sep 17 00:00:00 2001 From: Jagger <634750802@qq.com> Date: Mon, 1 Nov 2021 13:31:31 +0800 Subject: [PATCH 010/142] Add a status prefix for feishu notification --- server/notification-providers/feishu.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/notification-providers/feishu.js b/server/notification-providers/feishu.js index a3e340301..05fc9c186 100644 --- a/server/notification-providers/feishu.js +++ b/server/notification-providers/feishu.js @@ -27,7 +27,7 @@ class Feishu extends NotificationProvider { content: { post: { zh_cn: { - title: "UptimeKuma Alert: " + monitorJSON["name"], + title: "UptimeKuma Alert: [Down] " + monitorJSON["name"], content: [ [ { @@ -54,7 +54,7 @@ class Feishu extends NotificationProvider { content: { post: { zh_cn: { - title: "UptimeKuma Alert: " + monitorJSON["name"], + title: "UptimeKuma Alert: [Up] " + monitorJSON["name"], content: [ [ { From 191b81ee07ab919123427d6ef1998969350b5d8f Mon Sep 17 00:00:00 2001 From: Jasper Miller-Waugh Date: Mon, 1 Nov 2021 22:14:41 +1300 Subject: [PATCH 011/142] Fix grammer in comment Co-authored-by: Nelson Chan --- src/pages/StatusPage.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/StatusPage.vue b/src/pages/StatusPage.vue index 1320f093b..70367cc9f 100644 --- a/src/pages/StatusPage.vue +++ b/src/pages/StatusPage.vue @@ -490,7 +490,7 @@ export default { changeTagsVisibilty(newState) { this.config.statusPageTags = newState; - // On load, if the status page will not include tags if it's not enabled for security reasons + // On load, the status page will not include tags if it's not enabled for security reasons // Which means if we enable tags, it won't show in the UI until saved // So we have this to enhance UX and load in the tags from the authenticated source instantly this.$root.publicGroupList = this.$root.publicGroupList.map((group)=>{ From 83ee46454a86f5d4b2e477b8972ced7d96f583b7 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Tue, 2 Nov 2021 13:12:46 +0800 Subject: [PATCH 012/142] Update bug_report.yaml --- .github/ISSUE_TEMPLATE/bug_report.yaml | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yaml b/.github/ISSUE_TEMPLATE/bug_report.yaml index 81ea9a32d..1dcfea8c2 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yaml +++ b/.github/ISSUE_TEMPLATE/bug_report.yaml @@ -16,7 +16,7 @@ body: validations: required: true attributes: - label: "👍 Expected behavior" + label: "👀 Expected behavior" description: "What did you think would happen?" placeholder: "..." - type: textarea @@ -24,13 +24,13 @@ body: validations: required: true attributes: - label: "👎 Actual Behavior" + label: "😓 Actual Behavior" description: "What actually happen?" placeholder: "..." - type: input id: uptime-kuma-version attributes: - label: "🐻 Uptime-Kuma version" + label: "🐻 Uptime-Kuma Version" description: "Which version of Uptime-Kuma are you running?" placeholder: "Ex. 1.9.x" validations: @@ -38,9 +38,9 @@ body: - type: input id: operating-system attributes: - label: "💻 Operating System" + label: "💻 Operating System and Arch" description: "Which OS is your server/device running on?" - placeholder: "Ex. Ubuntu 20.04" + placeholder: "Ex. Ubuntu 20.04 x86" validations: required: true - type: input @@ -54,17 +54,9 @@ body: - type: input id: docker-version attributes: - label: "🐋 Docker" + label: "🐋 Docker Version" description: "If running with Docker, which version are you running?" - placeholder: "Ex. 20.10.9" - validations: - required: false - - type: input - id: docker-image-tag - attributes: - label: "🏷️ Docker Image Tag" - description: "Which Docker image tag are you using? If running '1' or 'latest', please specify image hash." - placeholder: "Ex. 1.9.1" + placeholder: "Ex. 20.10.9 / K8S / Podman" validations: required: false - type: input @@ -82,7 +74,7 @@ body: description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks. render: shell validations: - required: false + required: false - type: checkboxes id: no-duplicate-issues attributes: From 541068ff3bfbbba514d50f4279e0bf4b6bdb4349 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Tue, 2 Nov 2021 13:23:47 +0800 Subject: [PATCH 013/142] Update bug_report.yaml --- .github/ISSUE_TEMPLATE/bug_report.yaml | 50 +++++++++++++++----------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yaml b/.github/ISSUE_TEMPLATE/bug_report.yaml index 1dcfea8c2..53028bf00 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yaml +++ b/.github/ISSUE_TEMPLATE/bug_report.yaml @@ -1,8 +1,31 @@ name: "🐛 Bug Report" description: "Submit a bug report to help us improve" -title: "[Bug]: " +title: "[Bug] " labels: [bug] body: + - type: checkboxes + id: no-duplicate-issues + attributes: + label: "⚠️ Please verify that this bug has NOT been raised before." + description: "Search in the issues sections by clicking [HERE](https://github.com/louislam/uptime-kuma/issues?q=)" + options: + - label: "I checked and didn't find similar issue" + required: true + - type: checkboxes + attributes: + label: "🛡️ Security Policy" + description: Please review the security policy before reporting security related issues/bugs. + options: + - label: I agree to have read this project [Security Policy](https://github.com/louislam/uptime-kuma/security/policy) + required: true + - type: textarea + id: description + validations: + required: false + attributes: + label: "Description" + description: "You could also upload screenshots" + placeholder: "" - type: textarea id: steps-to-reproduce validations: @@ -31,8 +54,8 @@ body: id: uptime-kuma-version attributes: label: "🐻 Uptime-Kuma Version" - description: "Which version of Uptime-Kuma are you running?" - placeholder: "Ex. 1.9.x" + description: "Which version of Uptime-Kuma are you running? Please do NOT provide the docker tag such as latest or 1" + placeholder: "Ex. 1.10.0" validations: required: true - type: input @@ -48,7 +71,7 @@ body: attributes: label: "🌐 Browser" description: "Which browser are you running on?" - placeholder: "Ex. Firefox" + placeholder: "Ex. Google Chrome 95.0.4638.69" validations: required: true - type: input @@ -56,7 +79,7 @@ body: attributes: label: "🐋 Docker Version" description: "If running with Docker, which version are you running?" - placeholder: "Ex. 20.10.9 / K8S / Podman" + placeholder: "Ex. Docker 20.10.9 / K8S / Podman" validations: required: false - type: input @@ -74,19 +97,4 @@ body: description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks. render: shell validations: - required: false - - type: checkboxes - id: no-duplicate-issues - attributes: - label: "⚠️ Please verify that this bug has NOT been raised before." - description: "Search in the issues sections by clicking [HERE](https://github.com/louislam/uptime-kuma/issues?q=)" - options: - - label: "I checked and didn't find similar issue" - required: true - - type: checkboxes - attributes: - label: "🛡️ Security Policy" - description: Please review the security policy before reporting security related issues/bugs. - options: - - label: I agree to have read this project [Security Policy](https://github.com/louislam/uptime-kuma/security/policy) - required: true + required: false From b2bc8d9db95d5b4d15d69eeb3da01fe26cb7d1c4 Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Tue, 2 Nov 2021 13:24:15 +0800 Subject: [PATCH 014/142] Update bug_report.yaml --- .github/ISSUE_TEMPLATE/bug_report.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yaml b/.github/ISSUE_TEMPLATE/bug_report.yaml index 53028bf00..90296e12b 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yaml +++ b/.github/ISSUE_TEMPLATE/bug_report.yaml @@ -25,7 +25,6 @@ body: attributes: label: "Description" description: "You could also upload screenshots" - placeholder: "" - type: textarea id: steps-to-reproduce validations: From da0eaddeb806e31e5264f41d29bef79384abb5ff Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Tue, 2 Nov 2021 13:25:34 +0800 Subject: [PATCH 015/142] Update SECURITY.md --- SECURITY.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/SECURITY.md b/SECURITY.md index 7b9bfca41..3a11e8817 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -1,5 +1,11 @@ # Security Policy +## Reporting a Vulnerability + +Please report security issues to uptime@kuma.pet. + +Do not use the issue tracker or discuss it in the public as it will cause more damage. + ## Supported Versions Use this section to tell people about which versions of your project are @@ -23,9 +29,3 @@ currently being supported with security updates. | debian | :white_check_mark: | | alpine | :white_check_mark: | | All other tags | ❌ | - -## Reporting a Vulnerability - -Please report security issues to uptime@kuma.pet. - -Do not use the issue tracker or discuss it in the public as it will cause more damage. From 973c2bb429a93ea3ff9f85257489886ecd70558b Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Tue, 2 Nov 2021 13:30:13 +0800 Subject: [PATCH 016/142] Update ask-for-help.yaml --- .github/ISSUE_TEMPLATE/ask-for-help.yaml | 56 ++++++++++-------------- 1 file changed, 24 insertions(+), 32 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/ask-for-help.yaml b/.github/ISSUE_TEMPLATE/ask-for-help.yaml index a1425c9c9..a84eddae9 100644 --- a/.github/ISSUE_TEMPLATE/ask-for-help.yaml +++ b/.github/ISSUE_TEMPLATE/ask-for-help.yaml @@ -3,6 +3,21 @@ description: "Submit any question related to Uptime Kuma" title: "[Help]: <title>" labels: [help] body: + - type: checkboxes + id: no-duplicate-issues + attributes: + label: "⚠️ Please verify that this bug has NOT been raised before." + description: "Search in the issues sections by clicking [HERE](https://github.com/louislam/uptime-kuma/issues?q=)" + options: + - label: "I checked and didn't find similar issue" + required: true + - type: checkboxes + attributes: + label: "🛡️ Security Policy" + description: Please review the security policy before reporting security related issues/bugs. + options: + - label: I agree to have read this project [Security Policy](https://github.com/louislam/uptime-kuma/security/policy) + required: true - type: textarea id: steps-to-reproduce validations: @@ -14,17 +29,17 @@ body: - type: input id: uptime-kuma-version attributes: - label: "🐻 Uptime-Kuma version" - description: "Which version of Uptime-Kuma are you running?" - placeholder: "Ex. 1.9.x" + label: "🐻 Uptime-Kuma Version" + description: "Which version of Uptime-Kuma are you running? Please do NOT provide the docker tag such as latest or 1" + placeholder: "Ex. 1.10.0" validations: required: true - type: input id: operating-system attributes: - label: "💻 Operating System" + label: "💻 Operating System and Arch" description: "Which OS is your server/device running on?" - placeholder: "Ex. Ubuntu 20.04" + placeholder: "Ex. Ubuntu 20.04 x86" validations: required: true - type: input @@ -32,23 +47,15 @@ body: attributes: label: "🌐 Browser" description: "Which browser are you running on?" - placeholder: "Ex. Firefox" + placeholder: "Ex. Google Chrome 95.0.4638.69" validations: required: true - type: input id: docker-version attributes: - label: "🐋 Docker" + label: "🐋 Docker Version" description: "If running with Docker, which version are you running?" - placeholder: "Ex. 20.10.9" - validations: - required: false - - type: input - id: docker-image-tag - attributes: - label: "🏷️ Docker Image Tag" - description: "Which Docker image tag are you using? If running '1' or 'latest', please specify image hash." - placeholder: "Ex. 1.9.1" + placeholder: "Ex. Docker 20.10.9 / K8S / Podman" validations: required: false - type: input @@ -56,21 +63,6 @@ body: attributes: label: "🟩 NodeJS Version" description: "If running with Node.js? which version are you running?" - placeholder: "14.x" + placeholder: "Ex. 14.18.0" validations: required: false - - type: checkboxes - id: no-duplicate-issues - attributes: - label: "⚠️ Please verify that this question has NOT been raised before." - description: "Search in the issues sections by clicking [HERE](https://github.com/louislam/uptime-kuma/issues?q=)" - options: - - label: "I checked and didn't find similar question" - required: true - - type: checkboxes - attributes: - label: "🛡️ Security Policy" - description: Please review the security policy before reporting security related issues/bugs. - options: - - label: I agree to have read this project [Security Policy](https://github.com/louislam/uptime-kuma/security/policy) - required: true From 17e59f1d8d3da67e798f902475375328721fc6eb Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Tue, 2 Nov 2021 13:30:39 +0800 Subject: [PATCH 017/142] Update ask-for-help.yaml --- .github/ISSUE_TEMPLATE/ask-for-help.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/ask-for-help.yaml b/.github/ISSUE_TEMPLATE/ask-for-help.yaml index a84eddae9..76a78e5c3 100644 --- a/.github/ISSUE_TEMPLATE/ask-for-help.yaml +++ b/.github/ISSUE_TEMPLATE/ask-for-help.yaml @@ -1,6 +1,6 @@ name: "❓ Ask for help" description: "Submit any question related to Uptime Kuma" -title: "[Help]: <title>" +title: "[Help] " labels: [help] body: - type: checkboxes From df80f413b5bc95cd315607c36fce72fd3b629e35 Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Tue, 2 Nov 2021 13:31:19 +0800 Subject: [PATCH 018/142] Update feature_request.yaml --- .github/ISSUE_TEMPLATE/feature_request.yaml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/feature_request.yaml b/.github/ISSUE_TEMPLATE/feature_request.yaml index 1a3cebc09..6464e276a 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yaml +++ b/.github/ISSUE_TEMPLATE/feature_request.yaml @@ -1,8 +1,16 @@ name: 🚀 Feature Request description: "Submit a proposal for a new feature" -title: "[Feature]: <title>" +title: "[Feature] " labels: [enhancement] body: + - type: checkboxes + id: no-duplicate-issues + attributes: + label: "⚠️ Please verify that this feature request has NOT been suggested before." + description: "Search in the issues sections by clicking [HERE](https://github.com/louislam/uptime-kuma/issues?q=)" + options: + - label: "I checked and didn't find similar feature request" + required: true - type: dropdown id: feature-area attributes: @@ -49,11 +57,3 @@ body: label: "📝 Additional Context" description: "Add any other context or screenshots about the feature request here." placeholder: "..." - - type: checkboxes - id: no-duplicate-issues - attributes: - label: "⚠️ Please verify that this feature request has NOT been suggested before." - description: "Search in the issues sections by clicking [HERE](https://github.com/louislam/uptime-kuma/issues?q=)" - options: - - label: "I checked and didn't find similar feature request" - required: true From dec84282ede9c8821c652b67feac2646c19867f4 Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Tue, 2 Nov 2021 13:31:27 +0800 Subject: [PATCH 019/142] Update bug_report.yaml --- .github/ISSUE_TEMPLATE/bug_report.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yaml b/.github/ISSUE_TEMPLATE/bug_report.yaml index 90296e12b..055c3a626 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yaml +++ b/.github/ISSUE_TEMPLATE/bug_report.yaml @@ -86,7 +86,7 @@ body: attributes: label: "🟩 NodeJS Version" description: "If running with Node.js? which version are you running?" - placeholder: "14.x" + placeholder: "Ex. 14.18.0" validations: required: false - type: textarea From 8e6173c05ee11a26935bed6423064cc3d2f12fa7 Mon Sep 17 00:00:00 2001 From: Your Name <you@example.com> Date: Mon, 1 Nov 2021 23:10:34 +0100 Subject: [PATCH 020/142] Fix and add new hr-HR translations --- src/languages/hr-HR.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/languages/hr-HR.js b/src/languages/hr-HR.js index 35383a0f3..2fb04bb33 100644 --- a/src/languages/hr-HR.js +++ b/src/languages/hr-HR.js @@ -10,7 +10,7 @@ export default { passwordNotMatchMsg: "Lozinke se ne poklapaju.", notificationDescription: "Obavijesti će funkcionirati samo ako su dodijeljene monitoru.", keywordDescription: "Ključna riječ za pretragu kao običan HTML ili u JSON formatu. Pretraga je case-sensitive.", - pauseDashboardHome: "Pauziraj", + pauseDashboardHome: "Pauzirano", deleteMonitorMsg: "Jeste li sigurni da želite izbrisati monitor?", deleteNotificationMsg: "Jeste li sigurni da želite izbrisati ovu obavijest za sve monitore?", resoverserverDescription: "Cloudflare je zadani DNS poslužitelj. Možete to promijeniti u bilo kojem trenutku.", @@ -25,7 +25,7 @@ export default { twoFAVerifyLabel: "Unesite svoj 2FA token:", tokenValidSettingsMsg: "Token je važeći! Sada možete spremiti postavke dvofaktorske autentikacije.", confirmEnableTwoFAMsg: "Želite li omogućiti dvofaktorsku autentikaciju?", - confirmDisableTwoFAMsg: "Are you sure you want to disable dvofaktorsku autentikaciju?", + confirmDisableTwoFAMsg: "Jeste li sigurni da želite onemogućiti dvofaktorsku autentikaciju?", Settings: "Postavke", Dashboard: "Kontrolna ploča", "New Update": "Novo ažuriranje", @@ -44,7 +44,7 @@ export default { Down: "Nedostupno", Pending: "U tijeku", Unknown: "Nepoznato", - Pause: "Pauzirano", + Pause: "Pauziraj", Name: "Naziv monitora", Status: "Status", DateTime: "Vremenska oznaka", @@ -307,4 +307,5 @@ export default { "Showing {from} to {to} of {count} records": "Prikaz zapisa {from}-{to} od sveukupno {count}", steamApiKeyDescription: "Za praćenje Steam poslužitelja za igru, potrebno je imati Steam Web-API ključ. Možete registrirati vlastiti ključ ovdje: ", "Current User": "Trenutni korisnik", + recent: "Nedavno", }; From 9a135deac2925fa0625ff100d17b44ab491dfab5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20Bratovi=C4=87?= <ivanbratovic4@gmail.com> Date: Tue, 2 Nov 2021 11:48:55 +0100 Subject: [PATCH 021/142] Add new translation for 'Uptime' --- src/languages/hr-HR.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/languages/hr-HR.js b/src/languages/hr-HR.js index 2fb04bb33..29d1343d1 100644 --- a/src/languages/hr-HR.js +++ b/src/languages/hr-HR.js @@ -54,7 +54,7 @@ export default { Edit: "Uredi", Delete: "Obriši", Current: "Trenutno", - Uptime: "Uptime", + Uptime: "Dostupnost", "Cert Exp.": "Istek cert.", days: "dana", day: "dan", From 1fb9b25d1357383ed720860901c3df1606d7179d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20Bratovi=C4=87?= <ivanbratovic4@gmail.com> Date: Tue, 2 Nov 2021 14:09:01 +0100 Subject: [PATCH 022/142] Improve hr-HR translations --- src/languages/hr-HR.js | 50 +++++++++++++++++++++--------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/src/languages/hr-HR.js b/src/languages/hr-HR.js index 29d1343d1..01674dce8 100644 --- a/src/languages/hr-HR.js +++ b/src/languages/hr-HR.js @@ -2,15 +2,14 @@ export default { languageName: "Hrvatski", checkEverySecond: "Provjera svake {0} sekunde", retryCheckEverySecond: "Ponovni pokušaj svake {0} sekunde", - retriesDescription: "Broj ponovnih pokušaja prije nego će se servis označiti kao DOWN te poslati obavijest", + retriesDescription: "Broj ponovnih pokušaja prije nego će se servis označiti kao nedostupan te poslati obavijest", ignoreTLSError: "Ignoriraj TLS/SSL pogreške za HTTPS web stranice", - upsideDownModeDescription: "Preokreni logiku statusa. Ako je usluga dostupna, smatra se da je DOWN.", + upsideDownModeDescription: "Preokreni logiku statusa. Ako se primi pozitivan odgovor, smatra se da je usluga nedostupna.", maxRedirectDescription: "Maksimalan broj preusmjeravanja. Postaviti na 0 kako bi se preusmjeravanja onemogućila.", acceptedStatusCodesDescription: "Odaberite statusne kodove koji se smatraju uspješnim odgovorom.", passwordNotMatchMsg: "Lozinke se ne poklapaju.", notificationDescription: "Obavijesti će funkcionirati samo ako su dodijeljene monitoru.", - keywordDescription: "Ključna riječ za pretragu kao običan HTML ili u JSON formatu. Pretraga je case-sensitive.", - pauseDashboardHome: "Pauzirano", + keywordDescription: "Ključna riječ za pretragu, u obliku običnog HTML-a ili u JSON formatu. Pretraga je osjetljiva na velika i mala slova.", deleteMonitorMsg: "Jeste li sigurni da želite izbrisati monitor?", deleteNotificationMsg: "Jeste li sigurni da želite izbrisati ovu obavijest za sve monitore?", resoverserverDescription: "Cloudflare je zadani DNS poslužitelj. Možete to promijeniti u bilo kojem trenutku.", @@ -44,12 +43,13 @@ export default { Down: "Nedostupno", Pending: "U tijeku", Unknown: "Nepoznato", - Pause: "Pauziraj", - Name: "Naziv monitora", + pauseDashboardHome: "Pauzirano", + Name: "Naziv", Status: "Status", DateTime: "Vremenska oznaka", Message: "Izvještaj", "No important events": "Nema važnih događaja", + Pause: "Pauziraj", Resume: "Nastavi", Edit: "Uredi", Delete: "Obriši", @@ -65,12 +65,12 @@ export default { Ping: "Odziv", "Monitor Type": "Vrsta Monitora", Keyword: "Ključna riječ", - "Friendly Name": "Lijep naziv", + "Friendly Name": "Prilagođen naziv", URL: "URL", Hostname: "Domaćin", Port: "Port", "Heartbeat Interval": "Interval provjere", - Retries: "Ponovnih pokušaja", + Retries: "Broj ponovnih pokušaja", "Heartbeat Retry Interval": "Interval ponovnih pokušaja", Advanced: "Napredne postavke", "Upside Down Mode": "Obrnuti način", @@ -86,14 +86,14 @@ export default { Light: "Svijetli način", Dark: "Tamni način", Auto: "Automatski", - "Theme - Heartbeat Bar": "Tema - Statusna traka", + "Theme - Heartbeat Bar": "Tema za traku dostupnosti", Normal: "Normalno", Bottom: "Ispod", None: "Isključeno", Timezone: "Vremenska zona", - "Search Engine Visibility": "Vidljivost pretraživačima", + "Search Engine Visibility": "Vidljivost tražilicama", "Allow indexing": "Dopusti indeksiranje", - "Discourage search engines from indexing site": "Sprječavanje indeksiranja stranice", + "Discourage search engines from indexing site": "Sprječavanje indeksiranja", "Change Password": "Promjena lozinke", "Current Password": "Trenutna lozinka", "New Password": "Nova lozinka", @@ -103,7 +103,7 @@ export default { "Enable Auth": "Omogući autentikaciju", Logout: "Odjava", Leave: "Poništi", - "I understand, please disable": "Razumijem, onemogući", + "I understand, please disable": "Razumijem, svejedno onemogući", Confirm: "Potvrda", Yes: "Da", No: "Ne", @@ -112,10 +112,10 @@ export default { "Remember me": "Zapamti me", Login: "Prijava", "No Monitors, please": "Nema monitora, ", - "add one": "dodaj jednog", + "add one": "dodaj jedan", "Notification Type": "Tip obavijesti", Email: "E-pošta", - Test: "Test", + Test: "Testiraj", "Certificate Info": "Informacije o certifikatu", "Resolver Server": "DNS poslužitelj", "Resource Record Type": "Vrsta DNS zapisa", @@ -130,14 +130,14 @@ export default { notAvailableShort: "N/A", "Default enabled": "Omogući za nove monitore", "Apply on all existing monitors": "Primijeni na postojeće monitore", - Create: "Create", - "Clear Data": "Clear Data", - Events: "Events", + Create: "Kreiraj", + "Clear Data": "Obriši podatke", + Events: "Događaji", Heartbeats: "Provjere", "Auto Get": "Automatski dohvat", backupDescription: "Moguće je napraviti sigurnosnu kopiju svih monitora i obavijesti koja će biti spremljena kao JSON datoteka.", backupDescription2: "Napomena: povijest i podaci o događajima nisu uključeni u sigurnosnu kopiju.", - backupDescription3: "Osjetljivi podaci poput tokena za obavijesti jesu uključeni u sigurnosnu kopiju. Zato je potrebno čuvati izvoz na sigurnom mjestu.", + backupDescription3: "Osjetljivi podaci poput tokena za obavijesti uključeni su u sigurnosnu kopiju. Zato je potrebno čuvati izvoz na sigurnom mjestu.", alertNoFile: "Datoteka za uvoz nije odabrana.", alertWrongFileType: "Datoteka za uvoz nije u JSON formatu.", "Clear all statistics": "Obriši sve statistike", @@ -152,7 +152,7 @@ export default { "2FA Settings": "Postavke 2FA", "Two Factor Authentication": "Dvofaktorska autentikacija", Active: "Aktivna", - Inactive: "Neaktivna", + Inactive: "Neaktivno", Token: "Token", "Show URI": "Pokaži URI", Tags: "Oznake", @@ -172,7 +172,7 @@ export default { "Search...": "Pretraga...", "Avg. Ping": "Prosječni odziv", "Avg. Response": "Prosječni odgovor", - "Entry Page": "Entry Page", + "Entry Page": "Početna stranica", statusPageNothing: "Ovdje nema ničega, dodajte grupu ili monitor.", "No Services": "Nema usluga", "All Systems Operational": "Svi sustavi su operativni", @@ -183,7 +183,7 @@ export default { "Edit Status Page": "Uredi Statusnu stranicu", "Go to Dashboard": "Na Kontrolnu ploču", "Status Page": "Statusna stranica", - defaultNotificationName: "Moja {notification} obavijest ({number})", + defaultNotificationName: "Moja {number}. {notification} obavijest", here: "ovdje", Required: "Potrebno", telegram: "Telegram", @@ -195,11 +195,11 @@ export default { "YOUR BOT TOKEN HERE": "OVDJE IDE TOKEN BOTA", chatIDNotFound: "ID razgovora nije pronađen; prvo morate poslati poruku botu", webhook: "Webhook", - "Post URL": "Post URL", + "Post URL": "URL Post zahtjeva", "Content Type": "Tip sadržaja (Content Type)", webhookJsonDesc: "{0} je dobra opcija za moderne HTTP poslužitelje poput Express.js-a", webhookFormDataDesc: "{multipart} je moguća alternativa za PHP, samo je potrebno parsirati JSON koristeći {decodeFunction}", - smtp: "E-pošta (SMTP)", + smtp: "E-mail (SMTP)", secureOptionNone: "Bez sigurnosti / STARTTLS (25, 587)", secureOptionTLS: "TLS (465)", "Ignore TLS Error": "Ignoriraj greške TLS-a", @@ -215,7 +215,7 @@ export default { "Prefix Custom Message": "Prefiks prilagođene poruke", "Hello @everyone is...": "Pozdrav {'@'}everyone...", teams: "Microsoft Teams", - "Webhook URL": "URL Teams webhooka", + "Webhook URL": "URL webhooka", wayToGetTeamsURL: "Više informacija o Teams webhookovima možete pročitati {0}.", signal: "Signal", Number: "Broj", @@ -242,7 +242,7 @@ export default { promosms: "PromoSMS", clicksendsms: "ClickSend SMS", lunasea: "LunaSea", - apprise: "Apprise (Support 50+ Notification services)", + apprise: "Apprise (Podržava preko 50 usluga za obavijesti)", pushbullet: "Pushbullet", line: "LINE", mattermost: "Mattermost", From c094dc0c5bd36c691869fcdc907ab87d52bf8ea9 Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Tue, 2 Nov 2021 21:48:46 +0800 Subject: [PATCH 023/142] speed up redirect by using 302 redirect instead of vue redirect --- server/server.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/server/server.js b/server/server.js index 0af003d13..d1fd7ff29 100644 --- a/server/server.js +++ b/server/server.js @@ -186,6 +186,15 @@ exports.entryPage = "dashboard"; // Normal Router here // *************************** + // Entry Page + app.get("/", async (_request, response) => { + if (exports.entryPage === "statusPage") { + response.redirect("/status"); + } else { + response.redirect("/dashboard"); + } + }); + // Robots.txt app.get("/robots.txt", async (_request, response) => { let txt = "User-agent: *\nDisallow:"; From e496c3b3be4a2d93332766d687294b41da9f4549 Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Tue, 2 Nov 2021 22:03:02 +0800 Subject: [PATCH 024/142] update healthcheck.js --- extra/healthcheck.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extra/healthcheck.js b/extra/healthcheck.js index 8044f654f..c6e8a349a 100644 --- a/extra/healthcheck.js +++ b/extra/healthcheck.js @@ -35,7 +35,7 @@ let options = { let request = client.request(options, (res) => { console.log(`Health Check OK [Res Code: ${res.statusCode}]`); - if (res.statusCode === 200) { + if (res.statusCode === 302) { process.exit(0); } else { process.exit(1); From e5d6410cafc1afbff3991f37a1ffb69ad45f51f4 Mon Sep 17 00:00:00 2001 From: Jasper Miller-Waugh <contact@jmw.nz> Date: Wed, 3 Nov 2021 11:46:53 +1300 Subject: [PATCH 025/142] Apply formatting suggestions from code review Co-authored-by: Adam Stachowicz <saibamenppl@gmail.com> --- server/routers/api-router.js | 4 ++-- src/pages/StatusPage.vue | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/server/routers/api-router.js b/server/routers/api-router.js index 30f6a828c..79e828378 100644 --- a/server/routers/api-router.js +++ b/server/routers/api-router.js @@ -149,7 +149,7 @@ router.get("/api/status-page/monitor-list", cache("5 minutes"), async (_request, for (let groupBean of list) { let monitorGroup = await groupBean.toPublicJSON(); if (tagsVisible) { - monitorGroup.monitorList = await Promise.all(monitorGroup.monitorList.map( async (monitor)=>{ + monitorGroup.monitorList = await Promise.all(monitorGroup.monitorList.map(async (monitor) => { // Includes tags as an array in response, allows for tags to be displayed on public status page const tags = await R.getAll( `SELECT monitor_tag.monitor_id, monitor_tag.value, tag.name, tag.color @@ -158,7 +158,7 @@ router.get("/api/status-page/monitor-list", cache("5 minutes"), async (_request, ON monitor_tag.tag_id = tag.id WHERE monitor_tag.monitor_id = ?`, [monitor.id] ); - return {...monitor,tags: tags} + return {...monitor, tags: tags} })); } diff --git a/src/pages/StatusPage.vue b/src/pages/StatusPage.vue index 70367cc9f..ce0f94b55 100644 --- a/src/pages/StatusPage.vue +++ b/src/pages/StatusPage.vue @@ -493,10 +493,10 @@ export default { // On load, the status page will not include tags if it's not enabled for security reasons // Which means if we enable tags, it won't show in the UI until saved // So we have this to enhance UX and load in the tags from the authenticated source instantly - this.$root.publicGroupList = this.$root.publicGroupList.map((group)=>{ + this.$root.publicGroupList = this.$root.publicGroupList.map((group) => { return { ...group, - monitorList: group.monitorList.map((monitor)=> { + monitorList: group.monitorList.map((monitor) => { // We only include the tags if visible so we can reuse the logic to hide the tags on disable return { ...monitor, From dee131c25d64d36ad0b7de7cbb46bb61a86c710f Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Wed, 3 Nov 2021 13:02:44 +0800 Subject: [PATCH 026/142] fix table hover color not working after updated bootstrap to 5.1.3 --- src/assets/app.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/assets/app.scss b/src/assets/app.scss index e1a5d052d..89639fd95 100644 --- a/src/assets/app.scss +++ b/src/assets/app.scss @@ -189,7 +189,7 @@ textarea.form-control { opacity: 1; } - .table-hover > tbody > tr:hover { + .table-hover > tbody > tr:hover > * { --bs-table-accent-bg: #070a10; color: $dark-font-color; } From 1ba203470183ee2f741898fa4971b408432d2f2d Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Wed, 3 Nov 2021 13:03:36 +0800 Subject: [PATCH 027/142] freeze bootstrap to 5.1.3 to prevent breaking changes --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 64be83ee1..d34531b36 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ "args-parser": "~1.3.0", "axios": "~0.21.4", "bcryptjs": "~2.4.3", - "bootstrap": "~5.1.3", + "bootstrap": "5.1.3", "bree": "~6.3.1", "chardet": "^1.3.0", "chart.js": "~3.6.0", From ee2c54cfd1f619541aba35f2e3c2fae60d3fb61f Mon Sep 17 00:00:00 2001 From: MrEddX <66828538+MrEddX@users.noreply.github.com> Date: Wed, 3 Nov 2021 11:49:22 +0200 Subject: [PATCH 028/142] Update bg-BG.js - Added New Fields - Fixed Existing Fields --- src/languages/bg-BG.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/languages/bg-BG.js b/src/languages/bg-BG.js index 0d5af783a..f1d9b0784 100644 --- a/src/languages/bg-BG.js +++ b/src/languages/bg-BG.js @@ -77,7 +77,7 @@ export default { "Accepted Status Codes": "Допустими статус кодове", Save: "Запази", Notifications: "Известявания", - "Not available, please setup.": "Не е налично. Моля, настройте.", + "Not available, please setup.": "Не са налични. Моля, настройте.", "Setup Notification": "Настройки за известявания", Light: "Светла", Dark: "Тъмна", @@ -141,7 +141,7 @@ export default { Overwrite: "Презапиши", Options: "Опции", "Keep both": "Запази двете", - "Verify Token": "Проверка на токен код", + "Verify Token": "Провери токен код", "Setup 2FA": "Настройка 2FA", "Enable 2FA": "Включи 2FA", "Disable 2FA": "Изключи 2FA", @@ -298,8 +298,13 @@ export default { HeadersInvalidFormat: "Заявените хедъри не са валидни JSON: ", BodyInvalidFormat: "Заявеното съобщение не е валиден JSON: ", "Monitor History": "История на мониторите", - clearDataOlderThan: "Ще се съхранява за {0} дни.", + clearDataOlderThan: "Ще се съхранява {0} дни.", records: "записа", "One record": "Един запис", steamApiKeyDescription: "За да мониторирате Steam Gameserver се нуждаете от Steam Web-API ключ. Може да регистрирате Вашия API ключ тук: ", + clicksendsms: "ClickSend SMS", + apiCredentials: "API удостоверяване", + PasswordsDoNotMatch: "Паролите не съвпадат.", + "Current User": "Текущ потребител", + recent: "Скорошни", }; From 57389fab2c3588b671cd54d63de95c14d7ec663f Mon Sep 17 00:00:00 2001 From: Nelson Chan <chakflying@hotmail.com> Date: Wed, 3 Nov 2021 19:13:11 +0800 Subject: [PATCH 029/142] Update PULL_REQUEST_TEMPLATE.md --- .github/PULL_REQUEST_TEMPLATE.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index fa0aa883b..c286db021 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -24,3 +24,5 @@ Please delete options that are not relevant. - [ ] My code needed automated testing. I have added them (this is optional task) ## Screenshots (if any) + +Please do not use any external image service. Instead, just paste in the image here and it will be uploaded automatically. From 314fa18bdcdab25147d4df3ca3ed754888188e3f Mon Sep 17 00:00:00 2001 From: Adam Stachowicz <adam.stachowicz@fingo.info> Date: Thu, 4 Nov 2021 00:19:04 +0100 Subject: [PATCH 030/142] Fix #871 --- src/components/notifications/Telegram.vue | 32 +++++++++-------------- 1 file changed, 12 insertions(+), 20 deletions(-) diff --git a/src/components/notifications/Telegram.vue b/src/components/notifications/Telegram.vue index 3fe287eee..0fa4dd55e 100644 --- a/src/components/notifications/Telegram.vue +++ b/src/components/notifications/Telegram.vue @@ -25,13 +25,7 @@ </p> <p style="margin-top: 8px;"> - <template v-if="$parent.notification.telegramBotToken"> - <a :href="telegramGetUpdatesURL" target="_blank" style="word-break: break-word;">{{ telegramGetUpdatesURL }}</a> - </template> - - <template v-else> - {{ telegramGetUpdatesURL }} - </template> + {{ telegramGetUpdatesURL() }} </p> </div> </div> @@ -40,49 +34,47 @@ <script> import HiddenInput from "../HiddenInput.vue"; import axios from "axios"; -import { useToast } from "vue-toastification" +import { useToast } from "vue-toastification"; const toast = useToast(); export default { components: { HiddenInput, }, - computed: { - telegramGetUpdatesURL() { - let token = `<${this.$t("YOUR BOT TOKEN HERE")}>` + methods: { + telegramGetUpdatesURL(withToken = false) { + let token = `<${this.$t("YOUR BOT TOKEN HERE")}>`; - if (this.$parent.notification.telegramBotToken) { + if (this.$parent.notification.telegramBotToken && withToken) { token = this.$parent.notification.telegramBotToken; } return `https://api.telegram.org/bot${token}/getUpdates`; }, - }, - methods: { async autoGetTelegramChatID() { try { - let res = await axios.get(this.telegramGetUpdatesURL) + let res = await axios.get(this.telegramGetUpdatesURL(true)); if (res.data.result.length >= 1) { - let update = res.data.result[res.data.result.length - 1] + let update = res.data.result[res.data.result.length - 1]; if (update.channel_post) { this.notification.telegramChatID = update.channel_post.chat.id; } else if (update.message) { this.notification.telegramChatID = update.message.chat.id; } else { - throw new Error(this.$t("chatIDNotFound")) + throw new Error(this.$t("chatIDNotFound")); } } else { - throw new Error(this.$t("chatIDNotFound")) + throw new Error(this.$t("chatIDNotFound")); } } catch (error) { - toast.error(error.message) + toast.error(error.message); } }, } -} +}; </script> From bc5f61b3ec4d29ed7ac99f48eb655be7fd364976 Mon Sep 17 00:00:00 2001 From: Nelson Chan <chakflying@hotmail.com> Date: Thu, 4 Nov 2021 10:21:57 +0800 Subject: [PATCH 031/142] Chore: Add drag and drop Co-authored-by: Adam Stachowicz <saibamenppl@gmail.com> --- .github/PULL_REQUEST_TEMPLATE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index c286db021..3be229315 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -25,4 +25,4 @@ Please delete options that are not relevant. ## Screenshots (if any) -Please do not use any external image service. Instead, just paste in the image here and it will be uploaded automatically. +Please do not use any external image service. Instead, just paste in or drag and drop the image here and it will be uploaded automatically. From 665c263c03936c063a3528047aa33001ce42801e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20Bratovi=C4=87?= <ivanbratovic4@gmail.com> Date: Tue, 2 Nov 2021 11:51:45 +0100 Subject: [PATCH 032/142] Add db migrations for new basic auth fields --- db/patch-monitor-basicauth.sql | 10 ++++++++++ server/database.js | 1 + 2 files changed, 11 insertions(+) create mode 100644 db/patch-monitor-basicauth.sql diff --git a/db/patch-monitor-basicauth.sql b/db/patch-monitor-basicauth.sql new file mode 100644 index 000000000..3a33350d7 --- /dev/null +++ b/db/patch-monitor-basicauth.sql @@ -0,0 +1,10 @@ +-- You should not modify if this have pushed to Github, unless it does serious wrong with the db. +BEGIN TRANSACTION; + +ALTER TABLE monitor + ADD basicauth_user TEXT default null; + +ALTER TABLE monitor + ADD basicauth_pass TEXT default null; + +COMMIT; diff --git a/server/database.js b/server/database.js index 41d91e858..cc7247f1c 100644 --- a/server/database.js +++ b/server/database.js @@ -52,6 +52,7 @@ class Database { "patch-http-monitor-method-body-and-headers.sql": true, "patch-2fa-invalidate-used-token.sql": true, "patch-notification_sent_history.sql": true, + "patch-monitor-basicauth.sql": true, } /** From 23736549f90eb86afcca919e99e06abfe66c3105 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20Bratovi=C4=87?= <ivanbratovic4@gmail.com> Date: Tue, 2 Nov 2021 12:30:44 +0100 Subject: [PATCH 033/142] Implement HTTP basic auth feature --- server/model/monitor.js | 20 ++++++++++++++++++++ server/server.js | 4 ++++ src/pages/EditMonitor.vue | 10 ++++++++++ 3 files changed, 34 insertions(+) diff --git a/server/model/monitor.js b/server/model/monitor.js index fc3292317..c80e941e9 100644 --- a/server/model/monitor.js +++ b/server/model/monitor.js @@ -58,6 +58,8 @@ class Monitor extends BeanModel { method: this.method, body: this.body, headers: this.headers, + basicauth_user: this.basicauth_user, + basicauth_pass: this.basicauth_pass, hostname: this.hostname, port: this.port, maxretries: this.maxretries, @@ -80,6 +82,15 @@ class Monitor extends BeanModel { }; } + /** + * Encode user and password to Base64 encoding + * for HTTP "basic" auth, as per RFC-7617 + * @returns {string} + */ + encodeB64(user, pass) { + return btoa(user + ":" + pass); + } + /** * Parse to boolean * @returns {boolean} @@ -141,6 +152,14 @@ class Monitor extends BeanModel { // Do not do any queries/high loading things before the "bean.ping" let startTime = dayjs().valueOf(); + // HTTP basic auth + let basicauthHeader = {}; + if (this.basicauth_user) { + basicauthHeader = { + "Authorization": "Basic " + this.encodeB64(this.basicauth_user, this.basicauth_pass) + } + } + const options = { url: this.url, method: (this.method || "get").toLowerCase(), @@ -150,6 +169,7 @@ class Monitor extends BeanModel { "Accept": "*/*", "User-Agent": "Uptime-Kuma/" + version, ...(this.headers ? JSON.parse(this.headers) : {}), + ...(basicauthHeader) }, httpsAgent: new https.Agent({ maxCachedSessions: 0, // Use Custom agent to disable session reuse (https://github.com/nodejs/node/issues/3940) diff --git a/server/server.js b/server/server.js index d1fd7ff29..76d456c54 100644 --- a/server/server.js +++ b/server/server.js @@ -575,6 +575,8 @@ exports.entryPage = "dashboard"; bean.method = monitor.method; bean.body = monitor.body; bean.headers = monitor.headers; + bean.basicauth_user = monitor.basicauth_user; + bean.basicauth_pass = monitor.basicauth_pass; bean.interval = monitor.interval; bean.retryInterval = monitor.retryInterval; bean.hostname = monitor.hostname; @@ -1139,6 +1141,8 @@ exports.entryPage = "dashboard"; method: monitorListData[i].method || "GET", body: monitorListData[i].body, headers: monitorListData[i].headers, + basicauth_user: monitorListData[i].basicauth_user, + basicauth_pass: monitorListData[i].basicauth_pass, interval: monitorListData[i].interval, retryInterval: retryInterval, hostname: monitorListData[i].hostname, diff --git a/src/pages/EditMonitor.vue b/src/pages/EditMonitor.vue index 65c3dad6e..18954968a 100644 --- a/src/pages/EditMonitor.vue +++ b/src/pages/EditMonitor.vue @@ -265,6 +265,15 @@ <label for="headers" class="form-label">{{ $t("Headers") }}</label> <textarea id="headers" v-model="monitor.headers" class="form-control" :placeholder="headersPlaceholder"></textarea> </div> + + <!-- HTTP Basic Auth --> + <h4 class="mt-5 mb-2">{{ $t("HTTP Basic Auth") }}</h4> + <div class="my-3"> + <label for="basicauth" class="form-label">{{ $t("Username") }}</label> + <input id="basicauth-user" v-model="monitor.basicauth_user" type="text" class="form-control" :placeholder="Username"> + <label for="basicauth" class="form-label">{{ $t("Password") }}</label> + <input id="basicauth-pass" v-model="monitor.basicauth_pass" type="password" class="form-control" :placeholder="Password"> + </div> </template> </div> </div> @@ -487,6 +496,7 @@ export default { this.monitor.headers = JSON.stringify(JSON.parse(this.monitor.headers), null, 4); } + if (this.isAdd) { this.$root.add(this.monitor, async (res) => { From 0dcb7aed21fe9d63ffbdc6c866e0d4cd4485b6c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20Bratovi=C4=87?= <ivanbratovic4@gmail.com> Date: Tue, 2 Nov 2021 13:11:33 +0100 Subject: [PATCH 034/142] Delinting --- server/model/monitor.js | 6 +++--- src/pages/EditMonitor.vue | 3 +-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/server/model/monitor.js b/server/model/monitor.js index c80e941e9..95ef39336 100644 --- a/server/model/monitor.js +++ b/server/model/monitor.js @@ -87,9 +87,9 @@ class Monitor extends BeanModel { * for HTTP "basic" auth, as per RFC-7617 * @returns {string} */ - encodeB64(user, pass) { + encodeB64(user, pass) { return btoa(user + ":" + pass); - } + } /** * Parse to boolean @@ -157,7 +157,7 @@ class Monitor extends BeanModel { if (this.basicauth_user) { basicauthHeader = { "Authorization": "Basic " + this.encodeB64(this.basicauth_user, this.basicauth_pass) - } + }; } const options = { diff --git a/src/pages/EditMonitor.vue b/src/pages/EditMonitor.vue index 18954968a..f5099aa3a 100644 --- a/src/pages/EditMonitor.vue +++ b/src/pages/EditMonitor.vue @@ -266,7 +266,7 @@ <textarea id="headers" v-model="monitor.headers" class="form-control" :placeholder="headersPlaceholder"></textarea> </div> - <!-- HTTP Basic Auth --> + <!-- HTTP Basic Auth --> <h4 class="mt-5 mb-2">{{ $t("HTTP Basic Auth") }}</h4> <div class="my-3"> <label for="basicauth" class="form-label">{{ $t("Username") }}</label> @@ -496,7 +496,6 @@ export default { this.monitor.headers = JSON.stringify(JSON.parse(this.monitor.headers), null, 4); } - if (this.isAdd) { this.$root.add(this.monitor, async (res) => { From 179ca232bc85d6a7a0bbedc05d10be5f6e6a003e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20Bratovi=C4=87?= <ivanbratovic4@gmail.com> Date: Thu, 4 Nov 2021 10:12:06 +0100 Subject: [PATCH 035/142] Minor refactor - change variable names and add commas to object definitions --- ...-basicauth.sql => patch-monitor-basic-auth.sql} | 4 ++-- server/database.js | 2 +- server/model/monitor.js | 14 +++++++------- server/server.js | 8 ++++---- src/pages/EditMonitor.vue | 4 ++-- 5 files changed, 16 insertions(+), 16 deletions(-) rename db/{patch-monitor-basicauth.sql => patch-monitor-basic-auth.sql} (66%) diff --git a/db/patch-monitor-basicauth.sql b/db/patch-monitor-basic-auth.sql similarity index 66% rename from db/patch-monitor-basicauth.sql rename to db/patch-monitor-basic-auth.sql index 3a33350d7..de4bdefd9 100644 --- a/db/patch-monitor-basicauth.sql +++ b/db/patch-monitor-basic-auth.sql @@ -2,9 +2,9 @@ BEGIN TRANSACTION; ALTER TABLE monitor - ADD basicauth_user TEXT default null; + ADD basic_auth_user TEXT default null; ALTER TABLE monitor - ADD basicauth_pass TEXT default null; + ADD basic_auth_pass TEXT default null; COMMIT; diff --git a/server/database.js b/server/database.js index cc7247f1c..dfc739e0a 100644 --- a/server/database.js +++ b/server/database.js @@ -52,7 +52,7 @@ class Database { "patch-http-monitor-method-body-and-headers.sql": true, "patch-2fa-invalidate-used-token.sql": true, "patch-notification_sent_history.sql": true, - "patch-monitor-basicauth.sql": true, + "patch-monitor-basic-auth.sql": true, } /** diff --git a/server/model/monitor.js b/server/model/monitor.js index 95ef39336..f3c823c3b 100644 --- a/server/model/monitor.js +++ b/server/model/monitor.js @@ -58,8 +58,8 @@ class Monitor extends BeanModel { method: this.method, body: this.body, headers: this.headers, - basicauth_user: this.basicauth_user, - basicauth_pass: this.basicauth_pass, + basic_auth_user: this.basic_auth_user, + basic_auth_pass: this.basic_auth_pass, hostname: this.hostname, port: this.port, maxretries: this.maxretries, @@ -153,10 +153,10 @@ class Monitor extends BeanModel { let startTime = dayjs().valueOf(); // HTTP basic auth - let basicauthHeader = {}; - if (this.basicauth_user) { - basicauthHeader = { - "Authorization": "Basic " + this.encodeB64(this.basicauth_user, this.basicauth_pass) + let basicAuthHeader = {}; + if (this.basic_auth_user) { + basicAuthHeader = { + "Authorization": "Basic " + this.encodeB64(this.basic_auth_user, this.basic_auth_pass), }; } @@ -169,7 +169,7 @@ class Monitor extends BeanModel { "Accept": "*/*", "User-Agent": "Uptime-Kuma/" + version, ...(this.headers ? JSON.parse(this.headers) : {}), - ...(basicauthHeader) + ...(basicAuthHeader), }, httpsAgent: new https.Agent({ maxCachedSessions: 0, // Use Custom agent to disable session reuse (https://github.com/nodejs/node/issues/3940) diff --git a/server/server.js b/server/server.js index 76d456c54..b1678198a 100644 --- a/server/server.js +++ b/server/server.js @@ -575,8 +575,8 @@ exports.entryPage = "dashboard"; bean.method = monitor.method; bean.body = monitor.body; bean.headers = monitor.headers; - bean.basicauth_user = monitor.basicauth_user; - bean.basicauth_pass = monitor.basicauth_pass; + bean.basic_auth_user = monitor.basic_auth_user; + bean.basic_auth_pass = monitor.basic_auth_pass; bean.interval = monitor.interval; bean.retryInterval = monitor.retryInterval; bean.hostname = monitor.hostname; @@ -1141,8 +1141,8 @@ exports.entryPage = "dashboard"; method: monitorListData[i].method || "GET", body: monitorListData[i].body, headers: monitorListData[i].headers, - basicauth_user: monitorListData[i].basicauth_user, - basicauth_pass: monitorListData[i].basicauth_pass, + basic_auth_user: monitorListData[i].basic_auth_user, + basic_auth_pass: monitorListData[i].basic_auth_pass, interval: monitorListData[i].interval, retryInterval: retryInterval, hostname: monitorListData[i].hostname, diff --git a/src/pages/EditMonitor.vue b/src/pages/EditMonitor.vue index f5099aa3a..8b3157eab 100644 --- a/src/pages/EditMonitor.vue +++ b/src/pages/EditMonitor.vue @@ -270,9 +270,9 @@ <h4 class="mt-5 mb-2">{{ $t("HTTP Basic Auth") }}</h4> <div class="my-3"> <label for="basicauth" class="form-label">{{ $t("Username") }}</label> - <input id="basicauth-user" v-model="monitor.basicauth_user" type="text" class="form-control" :placeholder="Username"> + <input id="basicauth-user" v-model="monitor.basic_auth_user" type="text" class="form-control" :placeholder="Username"> <label for="basicauth" class="form-label">{{ $t("Password") }}</label> - <input id="basicauth-pass" v-model="monitor.basicauth_pass" type="password" class="form-control" :placeholder="Password"> + <input id="basicauth-pass" v-model="monitor.basic_auth_pass" type="password" class="form-control" :placeholder="Password"> </div> </template> </div> From 0481a241f3905dc23421a41de6b0ca80836f233c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20Bratovi=C4=87?= <ivanbratovic4@gmail.com> Date: Thu, 4 Nov 2021 10:22:42 +0100 Subject: [PATCH 036/142] Add translated placeholders for editing basic auth --- src/pages/EditMonitor.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/EditMonitor.vue b/src/pages/EditMonitor.vue index 8b3157eab..108defb74 100644 --- a/src/pages/EditMonitor.vue +++ b/src/pages/EditMonitor.vue @@ -270,9 +270,9 @@ <h4 class="mt-5 mb-2">{{ $t("HTTP Basic Auth") }}</h4> <div class="my-3"> <label for="basicauth" class="form-label">{{ $t("Username") }}</label> - <input id="basicauth-user" v-model="monitor.basic_auth_user" type="text" class="form-control" :placeholder="Username"> + <input id="basicauth-user" v-model="monitor.basic_auth_user" type="text" class="form-control" :placeholder="$t('Username')"> <label for="basicauth" class="form-label">{{ $t("Password") }}</label> - <input id="basicauth-pass" v-model="monitor.basic_auth_pass" type="password" class="form-control" :placeholder="Password"> + <input id="basicauth-pass" v-model="monitor.basic_auth_pass" type="password" class="form-control" :placeholder="$t('Password')"> </div> </template> </div> From 210566c7af9561e2b63571c0649f0352c9a054e1 Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Fri, 5 Nov 2021 11:34:50 +0800 Subject: [PATCH 037/142] remove prefix for issue title, so users need to input the title --- .github/ISSUE_TEMPLATE/ask-for-help.yaml | 2 +- .github/ISSUE_TEMPLATE/bug_report.yaml | 2 +- .github/ISSUE_TEMPLATE/feature_request.yaml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/ask-for-help.yaml b/.github/ISSUE_TEMPLATE/ask-for-help.yaml index 76a78e5c3..3442e8b73 100644 --- a/.github/ISSUE_TEMPLATE/ask-for-help.yaml +++ b/.github/ISSUE_TEMPLATE/ask-for-help.yaml @@ -1,6 +1,6 @@ name: "❓ Ask for help" description: "Submit any question related to Uptime Kuma" -title: "[Help] " +#title: "[Help] " labels: [help] body: - type: checkboxes diff --git a/.github/ISSUE_TEMPLATE/bug_report.yaml b/.github/ISSUE_TEMPLATE/bug_report.yaml index 055c3a626..2dca1556a 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yaml +++ b/.github/ISSUE_TEMPLATE/bug_report.yaml @@ -1,6 +1,6 @@ name: "🐛 Bug Report" description: "Submit a bug report to help us improve" -title: "[Bug] " +#title: "[Bug] " labels: [bug] body: - type: checkboxes diff --git a/.github/ISSUE_TEMPLATE/feature_request.yaml b/.github/ISSUE_TEMPLATE/feature_request.yaml index 6464e276a..f0a92ede1 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yaml +++ b/.github/ISSUE_TEMPLATE/feature_request.yaml @@ -1,6 +1,6 @@ name: 🚀 Feature Request description: "Submit a proposal for a new feature" -title: "[Feature] " +#title: "[Feature] " labels: [enhancement] body: - type: checkboxes From 8f44b9f6181dfd80015012cceff227fb1e521c18 Mon Sep 17 00:00:00 2001 From: Andreas Brett <github@abrett.de> Date: Fri, 5 Nov 2021 09:54:10 +0100 Subject: [PATCH 038/142] 24h tooltip on status page --- src/components/Uptime.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/Uptime.vue b/src/components/Uptime.vue index a4bf22f68..2717672c4 100644 --- a/src/components/Uptime.vue +++ b/src/components/Uptime.vue @@ -1,5 +1,5 @@ <template> - <span :class="className">{{ uptime }}</span> + <span :class="className" :title="24 + $t('-hour')">{{ uptime }}</span> </template> <script> From baf3612ece8cd143e1766583910b6ab16ecdd0a9 Mon Sep 17 00:00:00 2001 From: Thomas LEVEIL <thomasleveil@gmail.com> Date: Fri, 5 Nov 2021 11:27:19 +0100 Subject: [PATCH 039/142] =?UTF-8?q?=F0=9F=9A=B8=20Status=20page=20-=20add?= =?UTF-8?q?=20group=20action=20adds=20the=20new=20group=20at=20the=20top?= =?UTF-8?q?=20of=20the=20page?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/StatusPage.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/StatusPage.vue b/src/pages/StatusPage.vue index 87634f35a..5a2b3551b 100644 --- a/src/pages/StatusPage.vue +++ b/src/pages/StatusPage.vue @@ -459,7 +459,7 @@ export default { groupName = "Services"; } - this.$root.publicGroupList.push({ + this.$root.publicGroupList.unshift({ name: groupName, monitorList: [], }); From 222540898b3c8af5d7a25fb222b6cff54faf08c6 Mon Sep 17 00:00:00 2001 From: Zegert Boele <48018787+ZegertBoele@users.noreply.github.com> Date: Fri, 5 Nov 2021 13:57:55 +0100 Subject: [PATCH 040/142] Some translations were not translated Some translations were not translated yet. I have added them and can be contacted if you want more English-Dutch translations. --- src/languages/nl-NL.js | 72 +++++++++++++++++++++--------------------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/src/languages/nl-NL.js b/src/languages/nl-NL.js index 818893af6..f37d8405d 100644 --- a/src/languages/nl-NL.js +++ b/src/languages/nl-NL.js @@ -116,7 +116,7 @@ export default { "Repeat Password": "Herhaal wachtwoord", Export: "Exporteren", Import: "Importeren", - respTime: "resp. tijd (ms)", + respTime: "reactietijd (ms)", notAvailableShort: "N.v.t.", "Default enabled": "Default enabled", "Apply on all existing monitors": "Pas toe op alle bestaande monitors", @@ -138,48 +138,48 @@ export default { "Two Factor Authentication": "Two Factor Authenticatie", Active: "Actief", Inactive: "Inactief", - "Also apply to existing monitors": "Also apply to existing monitors", + "Also apply to existing monitors": "Voeg ook toe aan bestaande monitors", Token: "Token", "Show URI": "Toon URI", "Clear all statistics": "Wis alle statistieken", - retryCheckEverySecond: "Retry every {0} seconds.", - importHandleDescription: "Choose 'Skip existing' if you want to skip every monitor or notification with the same name. 'Overwrite' will delete every existing monitor and notification.", - confirmImportMsg: "Are you sure to import the backup? Please make sure you've selected the right import option.", + retryCheckEverySecond: "Probeer elke {0} seconds.", + importHandleDescription: "Kies 'Sla bestaande over' als je elke monitor of melding met dezelfde naam wilt overslaan. Kies 'Overschrijf' als je elke monitor of notificatie wilt verwijderen.", + confirmImportMsg: "Weet je zeker dat je dit bestand wilt importeren?", "Heartbeat Retry Interval": "Heartbeat Retry Interval", - "Import Backup": "Import Backup", - "Export Backup": "Export Backup", - "Skip existing": "Skip existing", - Overwrite: "Overwrite", - Options: "Options", - "Keep both": "Keep both", - Tags: "Tags", - "Add New below or Select...": "Add New below or Select...", - "Tag with this name already exist.": "Tag with this name already exist.", - "Tag with this value already exist.": "Tag with this value already exist.", - color: "color", - "value (optional)": "value (optional)", - Gray: "Gray", - Red: "Red", - Orange: "Orange", - Green: "Green", - Blue: "Blue", + "Import Backup": "Importeer Backup", + "Export Backup": "Exporteer Backup", + "Skip existing": "Sla bestaande over", + Overwrite: "Overschrijf", + Options: "Opties", + "Keep both": "Bewaar beide", + Tags: "Labels", + "Add New below or Select...": "Voeg nieuwe toe of selecteer...", + "Tag with this name already exist.": "Label met deze naam bestaat al", + "Tag with this value already exist.": "Label met deze waarde bestaat al", + color: "Kleur", + "value (optional)": "waarde (optioneel)", + Gray: "Grijs", + Red: "Rood", + Orange: "Oranje", + Green: "Groen", + Blue: "Blauw", Indigo: "Indigo", - Purple: "Purple", - Pink: "Pink", - "Search...": "Search...", - "Avg. Ping": "Avg. Ping", - "Avg. Response": "Avg. Response", + Purple: "Paars", + Pink: "Roze", + "Search...": "Zoeken...", + "Avg. Ping": "Gemiddelde Ping", + "Avg. Response": "Gemiddelde Response", "Entry Page": "Entry Page", - statusPageNothing: "Nothing here, please add a group or a monitor.", + statusPageNothing: "Nothing here, please add a group or a monitor. Niets hier, voeg een groep of monitor toe.", "No Services": "No Services", - "All Systems Operational": "All Systems Operational", - "Partially Degraded Service": "Partially Degraded Service", - "Degraded Service": "Degraded Service", - "Add Group": "Add Group", - "Add a monitor": "Add a monitor", - "Edit Status Page": "Edit Status Page", - "Go to Dashboard": "Go to Dashboard", - "Status Page": "Status Page", + "All Systems Operational": "Alle systemen operationeel", + "Partially Degraded Service": "Gedeeltelijk verminderde prestaties", + "Degraded Service": "Verminderde prestaties", + "Add Group": "Voeg groep toe", + "Add a monitor": "Voeg monitor toe", + "Edit Status Page": "Wijzig status pagina", + "Go to Dashboard": "Ga naar Dashboard", + "Status Page": "Status Pagina", telegram: "Telegram", webhook: "Webhook", smtp: "Email (SMTP)", From bc69a331ee3f7be8ec637d47c5902fa5d496e458 Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Sun, 7 Nov 2021 13:50:22 +0800 Subject: [PATCH 041/142] eslint --- src/languages/fr-FR.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/languages/fr-FR.js b/src/languages/fr-FR.js index 176a6150f..92083a387 100644 --- a/src/languages/fr-FR.js +++ b/src/languages/fr-FR.js @@ -280,17 +280,17 @@ export default { promosmsPhoneNumber: "Numéro de téléphone (Poiur les déstinataires Polonais, vous pouvez enlever les codes interna.)", promosmsSMSSender: "SMS Expéditeur : Nom pré-enregistré ou l'un de base: InfoSMS, SMS Info, MaxSMS, INFO, SMS", "Primary Base URL": "Primary Base URL", - emailCustomSubject: "Sujet personalisé", - clicksendsms: "ClickSend SMS", - checkPrice: "Vérification {0} tarifs:", - apiCredentials: "Crédentials de l'API", - octopushLegacyHint: "Vous utilisez l'ancienne version d'Octopush (2011-2020) ou la nouvelle version ?", + emailCustomSubject: "Sujet personalisé", + clicksendsms: "ClickSend SMS", + checkPrice: "Vérification {0} tarifs:", + apiCredentials: "Crédentials de l'API", + octopushLegacyHint: "Vous utilisez l'ancienne version d'Octopush (2011-2020) ou la nouvelle version ?", "Feishu WebHookUrl": "Feishu WebHookURL", matrixHomeserverURL: "L'URL du serveur (avec http(s):// et le port de manière facultatif)", "Internal Room Id": "ID de la salle interne", matrixDesc1: "Vous pouvez trouvez l'ID de salle interne en regardant dans la section avancée des paramètres dans le client Matrix. C'est sensé ressembler à: !QMdRCpUIfLwsfjxye6:home.server.", - matrixDesc2: "Il est fortement recommandé de créer un nouvel utilisateur et de ne pas utiliser le jeton d'accès de votre propre utilisateur Matrix, car il vous donnera un accès complet à votre compte et à toutes les salles que vous avez rejointes. Au lieu de cela, créez un nouvel utilisateur et invitez-le uniquement dans la salle dans laquelle vous souhaitez recevoir la notification. Vous pouvez obtenir le jeton d'accès en exécutant {0}", - Method: "Méthode", + matrixDesc2: "Il est fortement recommandé de créer un nouvel utilisateur et de ne pas utiliser le jeton d'accès de votre propre utilisateur Matrix, car il vous donnera un accès complet à votre compte et à toutes les salles que vous avez rejointes. Au lieu de cela, créez un nouvel utilisateur et invitez-le uniquement dans la salle dans laquelle vous souhaitez recevoir la notification. Vous pouvez obtenir le jeton d'accès en exécutant {0}", + Method: "Méthode", Body: "Le corps", Headers: "En-têtes", PushUrl: "Push URL", @@ -299,9 +299,9 @@ export default { "Monitor History": "Historique de la sonde", clearDataOlderThan: "Garder l'historique des données de la sonde durant {0} jours.", PasswordsDoNotMatch: "Les mots de passe ne correspondent pas.", - records: "Enregistrements", + records: "Enregistrements", "One record": "Un enregistrement", steamApiKeyDescription: "Pour surveiller un serveur Steam, vous avez besoin d'une clé Steam Web-API. Vous pouvez enregistrer votre clé ici: ", - "Current User": "Utilisateur actuel", + "Current User": "Utilisateur actuel", recent: "Récent", }; From c92153c97ed151c9759ebe63ef22d2821e5d115e Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Sun, 7 Nov 2021 21:00:47 +0800 Subject: [PATCH 042/142] add more debug msg --- server/model/monitor.js | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/server/model/monitor.js b/server/model/monitor.js index fc3292317..c6e09f535 100644 --- a/server/model/monitor.js +++ b/server/model/monitor.js @@ -141,6 +141,7 @@ class Monitor extends BeanModel { // Do not do any queries/high loading things before the "bean.ping" let startTime = dayjs().valueOf(); + debug(`[${this.name}] Prepare Options for axios`); const options = { url: this.url, method: (this.method || "get").toLowerCase(), @@ -160,6 +161,8 @@ class Monitor extends BeanModel { return checkStatusCode(status, this.getAcceptedStatuscodes()); }, }; + + debug(`[${this.name}] Axios Request`); let res = await axios.request(options); bean.msg = `${res.status} - ${res.statusText}`; bean.ping = dayjs().valueOf() - startTime; @@ -167,12 +170,13 @@ class Monitor extends BeanModel { // Check certificate if https is used let certInfoStartTime = dayjs().valueOf(); if (this.getUrl()?.protocol === "https:") { + debug(`[${this.name}] Check cert`); try { let tlsInfoObject = checkCertificate(res); tlsInfo = await this.updateTlsInfo(tlsInfoObject); if (!this.getIgnoreTls()) { - debug("call sendCertNotification"); + debug(`[${this.name}] call sendCertNotification`); await this.sendCertNotification(tlsInfoObject); } @@ -351,15 +355,19 @@ class Monitor extends BeanModel { let beatInterval = this.interval; + debug(`[${this.name}] Check isImportant`); let isImportant = Monitor.isImportantBeat(isFirstBeat, previousBeat?.status, bean.status); // Mark as important if status changed, ignore pending pings, // Don't notify if disrupted changes to up if (isImportant) { bean.important = true; + + debug(`[${this.name}] sendNotification`); await Monitor.sendNotification(isFirstBeat, this, bean); // Clear Status Page Cache + debug(`[${this.name}] Check isImportant`); apicache.clear(); } else { @@ -377,10 +385,14 @@ class Monitor extends BeanModel { console.warn(`Monitor #${this.id} '${this.name}': Failing: ${bean.msg} | Interval: ${beatInterval} seconds | Type: ${this.type}`); } + debug(`[${this.name}] Send to socket`); io.to(this.user_id).emit("heartbeat", bean.toJSON()); Monitor.sendStats(io, this.id, this.user_id); + debug(`[${this.name}] Store`); await R.store(bean); + + debug(`[${this.name}] prometheus.update`); prometheus.update(bean, tlsInfo); previousBeat = bean; @@ -394,7 +406,10 @@ class Monitor extends BeanModel { } } + debug(`[${this.name}] SetTimeout for next check.`); this.heartbeatInterval = setTimeout(safeBeat, beatInterval * 1000); + } else { + console.log(`[${this.name}] isStop = true, no next check.`); } }; From 41a6d1b701e40c8aa2d3eae97dd56f7480c1109d Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Mon, 8 Nov 2021 15:39:17 +0800 Subject: [PATCH 043/142] Fix parseCertificateInfo possibly in dead loop --- server/model/monitor.js | 2 +- server/util-server.js | 17 +++++- test/backend.spec.js | 122 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 139 insertions(+), 2 deletions(-) diff --git a/server/model/monitor.js b/server/model/monitor.js index c6e09f535..980e0ac69 100644 --- a/server/model/monitor.js +++ b/server/model/monitor.js @@ -367,7 +367,7 @@ class Monitor extends BeanModel { await Monitor.sendNotification(isFirstBeat, this, bean); // Clear Status Page Cache - debug(`[${this.name}] Check isImportant`); + debug(`[${this.name}] apicache clear`); apicache.clear(); } else { diff --git a/server/util-server.js b/server/util-server.js index 5d65f46d3..bfb4a9cb7 100644 --- a/server/util-server.js +++ b/server/util-server.js @@ -201,8 +201,13 @@ const getDaysRemaining = (validFrom, validTo) => { // param: info - the chain obtained from getPeerCertificate() const parseCertificateInfo = function (info) { let link = info; + let i = 0; + + const existingList = {}; while (link) { + debug(`[${i}] ${link.fingerprint}`); + if (!link.valid_from || !link.valid_to) { break; } @@ -210,15 +215,24 @@ const parseCertificateInfo = function (info) { link.validFor = link.subjectaltname?.replace(/DNS:|IP Address:/g, "").split(", "); link.daysRemaining = getDaysRemaining(new Date(), link.validTo); + existingList[link.fingerprint] = true; + // Move up the chain until loop is encountered if (link.issuerCertificate == null) { break; - } else if (link.fingerprint == link.issuerCertificate.fingerprint) { + } else if (link.issuerCertificate.fingerprint in existingList) { + debug(`[Last] ${link.issuerCertificate.fingerprint}`); link.issuerCertificate = null; break; } else { link = link.issuerCertificate; } + + // Should be no use, but just in case. + if (i > 500) { + throw new Error("Dead loop occurred in parseCertificateInfo"); + } + i++; } return info; @@ -228,6 +242,7 @@ exports.checkCertificate = function (res) { const info = res.request.res.socket.getPeerCertificate(true); const valid = res.request.res.socket.authorized || false; + console.log("Parsing Certificate Info"); const parsedInfo = parseCertificateInfo(info); return { diff --git a/test/backend.spec.js b/test/backend.spec.js index bd73d2022..bbfc6897b 100644 --- a/test/backend.spec.js +++ b/test/backend.spec.js @@ -1,4 +1,125 @@ const { genSecret, sleep } = require("../src/util"); +const utilServerRewire = require("../server/util-server"); + +describe("Test parseCertificateInfo", () => { + it("should handle undefined", async () => { + const parseCertificateInfo = utilServerRewire.__get__("parseCertificateInfo"); + const info = parseCertificateInfo(undefined); + expect(info).toEqual(undefined); + }, 5000); + + it("should handle normal cert chain", async () => { + const parseCertificateInfo = utilServerRewire.__get__("parseCertificateInfo"); + + const chain1 = { + fingerprint: "CF:2C:F3:6A:FE:6B:10:EC:44:77:C8:95:BB:96:2E:06:1F:0E:15:DA", + valid_from: "Oct 22 12:00:00 2013 GMT", + valid_to: "Oct 22 12:00:00 2028 GMT", + subjectaltname: "DNS:www.example.org, DNS:example.com, DNS:example.edu, DNS:example.net, DNS:example.org, DNS:www.example.com, DNS:www.example.edu, DNS:www.example.net", + }; + + const chain2 = { + fingerprint: "A0:31:C4:67:82:E6:E6:C6:62:C2:C8:7C:76:DA:9A:A6:2C:CA:BD:8E", + valid_from: "Oct 22 12:00:00 2013 GMT", + valid_to: "Oct 22 12:00:00 2028 GMT", + subjectaltname: "DNS:www.example.org, DNS:example.com, DNS:example.edu, DNS:example.net, DNS:example.org, DNS:www.example.com, DNS:www.example.edu, DNS:www.example.net", + }; + + const chain3 = { + fingerprint: "5F:B7:EE:06:33:E2:59:DB:AD:0C:4C:9A:E6:D3:8F:1A:61:C7:DC:25", + valid_from: "Oct 22 12:00:00 2013 GMT", + valid_to: "Oct 22 12:00:00 2028 GMT", + subjectaltname: "DNS:www.example.org, DNS:example.com, DNS:example.edu, DNS:example.net, DNS:example.org, DNS:www.example.com, DNS:www.example.edu, DNS:www.example.net", + }; + + chain1.issuerCertificate = chain2; + chain2.issuerCertificate = chain3; + chain3.issuerCertificate = chain3; + + const info = parseCertificateInfo(chain1); + expect(chain1).toEqual(info); + }, 5000); + + it("should handle cert chain with strange circle", async () => { + const parseCertificateInfo = utilServerRewire.__get__("parseCertificateInfo"); + + const chain1 = { + fingerprint: "CF:2C:F3:6A:FE:6B:10:EC:44:77:C8:95:BB:96:2E:06:1F:0E:15:DA", + valid_from: "Oct 22 12:00:00 2013 GMT", + valid_to: "Oct 22 12:00:00 2028 GMT", + subjectaltname: "DNS:www.example.org, DNS:example.com, DNS:example.edu, DNS:example.net, DNS:example.org, DNS:www.example.com, DNS:www.example.edu, DNS:www.example.net", + }; + + const chain2 = { + fingerprint: "A0:31:C4:67:82:E6:E6:C6:62:C2:C8:7C:76:DA:9A:A6:2C:CA:BD:8E", + valid_from: "Oct 22 12:00:00 2013 GMT", + valid_to: "Oct 22 12:00:00 2028 GMT", + subjectaltname: "DNS:www.example.org, DNS:example.com, DNS:example.edu, DNS:example.net, DNS:example.org, DNS:www.example.com, DNS:www.example.edu, DNS:www.example.net", + }; + + const chain3 = { + fingerprint: "5F:B7:EE:06:33:E2:59:DB:AD:0C:4C:9A:E6:D3:8F:1A:61:C7:DC:25", + valid_from: "Oct 22 12:00:00 2013 GMT", + valid_to: "Oct 22 12:00:00 2028 GMT", + subjectaltname: "DNS:www.example.org, DNS:example.com, DNS:example.edu, DNS:example.net, DNS:example.org, DNS:www.example.com, DNS:www.example.edu, DNS:www.example.net", + }; + + const chain4 = { + fingerprint: "haha", + valid_from: "Oct 22 12:00:00 2013 GMT", + valid_to: "Oct 22 12:00:00 2028 GMT", + subjectaltname: "DNS:www.example.org, DNS:example.com, DNS:example.edu, DNS:example.net, DNS:example.org, DNS:www.example.com, DNS:www.example.edu, DNS:www.example.net", + }; + + chain1.issuerCertificate = chain2; + chain2.issuerCertificate = chain3; + chain3.issuerCertificate = chain4; + chain4.issuerCertificate = chain2; + + const info = parseCertificateInfo(chain1); + expect(chain1).toEqual(info); + }, 5000); + + it("should handle cert chain with last undefined (should be happen in real, but just in case)", async () => { + const parseCertificateInfo = utilServerRewire.__get__("parseCertificateInfo"); + + const chain1 = { + fingerprint: "CF:2C:F3:6A:FE:6B:10:EC:44:77:C8:95:BB:96:2E:06:1F:0E:15:DA", + valid_from: "Oct 22 12:00:00 2013 GMT", + valid_to: "Oct 22 12:00:00 2028 GMT", + subjectaltname: "DNS:www.example.org, DNS:example.com, DNS:example.edu, DNS:example.net, DNS:example.org, DNS:www.example.com, DNS:www.example.edu, DNS:www.example.net", + }; + + const chain2 = { + fingerprint: "A0:31:C4:67:82:E6:E6:C6:62:C2:C8:7C:76:DA:9A:A6:2C:CA:BD:8E", + valid_from: "Oct 22 12:00:00 2013 GMT", + valid_to: "Oct 22 12:00:00 2028 GMT", + subjectaltname: "DNS:www.example.org, DNS:example.com, DNS:example.edu, DNS:example.net, DNS:example.org, DNS:www.example.com, DNS:www.example.edu, DNS:www.example.net", + }; + + const chain3 = { + fingerprint: "5F:B7:EE:06:33:E2:59:DB:AD:0C:4C:9A:E6:D3:8F:1A:61:C7:DC:25", + valid_from: "Oct 22 12:00:00 2013 GMT", + valid_to: "Oct 22 12:00:00 2028 GMT", + subjectaltname: "DNS:www.example.org, DNS:example.com, DNS:example.edu, DNS:example.net, DNS:example.org, DNS:www.example.com, DNS:www.example.edu, DNS:www.example.net", + }; + + const chain4 = { + fingerprint: "haha", + valid_from: "Oct 22 12:00:00 2013 GMT", + valid_to: "Oct 22 12:00:00 2028 GMT", + subjectaltname: "DNS:www.example.org, DNS:example.com, DNS:example.edu, DNS:example.net, DNS:example.org, DNS:www.example.com, DNS:www.example.edu, DNS:www.example.net", + }; + + chain1.issuerCertificate = chain2; + chain2.issuerCertificate = chain3; + chain3.issuerCertificate = chain4; + chain4.issuerCertificate = undefined; + + const info = parseCertificateInfo(chain1); + expect(chain1).toEqual(info); + }, 5000); +}); describe("Test genSecret", () => { @@ -42,3 +163,4 @@ describe("Test reset-password", () => { await require("../extra/reset-password").main(); }, 120000); }); + From 0275d7a42b30760e906f59e59f8fb52feb06d416 Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Mon, 8 Nov 2021 15:51:32 +0800 Subject: [PATCH 044/142] minor --- server/util-server.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/util-server.js b/server/util-server.js index bfb4a9cb7..68f59f67f 100644 --- a/server/util-server.js +++ b/server/util-server.js @@ -242,7 +242,7 @@ exports.checkCertificate = function (res) { const info = res.request.res.socket.getPeerCertificate(true); const valid = res.request.res.socket.authorized || false; - console.log("Parsing Certificate Info"); + debug("Parsing Certificate Info"); const parsedInfo = parseCertificateInfo(info); return { From 733d0af75f6cec38b540f44143899358df7307c7 Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Mon, 8 Nov 2021 18:03:00 +0800 Subject: [PATCH 045/142] update to 1.10.1 --- package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index d34531b36..038d52ebd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "uptime-kuma", - "version": "1.10.0", + "version": "1.10.1", "license": "MIT", "repository": { "type": "git", @@ -30,13 +30,13 @@ "build-docker": "npm run build-docker-debian && npm run build-docker-alpine", "build-docker-alpine-base": "docker buildx build -f docker/alpine-base.dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:base-alpine . --push", "build-docker-debian-base": "docker buildx build -f docker/debian-base.dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:base-debian . --push", - "build-docker-alpine": "docker buildx build -f docker/dockerfile-alpine --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:alpine -t louislam/uptime-kuma:1-alpine -t louislam/uptime-kuma:1.10.0-alpine --target release . --push", - "build-docker-debian": "docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma -t louislam/uptime-kuma:1 -t louislam/uptime-kuma:1.10.0 -t louislam/uptime-kuma:debian -t louislam/uptime-kuma:1-debian -t louislam/uptime-kuma:1.10.0-debian --target release . --push", + "build-docker-alpine": "docker buildx build -f docker/dockerfile-alpine --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:alpine -t louislam/uptime-kuma:1-alpine -t louislam/uptime-kuma:1.10.1-alpine --target release . --push", + "build-docker-debian": "docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma -t louislam/uptime-kuma:1 -t louislam/uptime-kuma:1.10.1 -t louislam/uptime-kuma:debian -t louislam/uptime-kuma:1-debian -t louislam/uptime-kuma:1.10.1-debian --target release . --push", "build-docker-nightly": "docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:nightly --target nightly . --push", "build-docker-nightly-alpine": "docker buildx build -f docker/dockerfile-alpine --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:nightly-alpine --target nightly . --push", "build-docker-nightly-amd64": "docker buildx build -f docker/dockerfile --platform linux/amd64 -t louislam/uptime-kuma:nightly-amd64 --target nightly . --push --progress plain", "upload-artifacts": "docker buildx build -f docker/dockerfile --platform linux/amd64 -t louislam/uptime-kuma:upload-artifact --build-arg GITHUB_TOKEN --target upload-artifact . --progress plain", - "setup": "git checkout 1.10.0 && npm ci --production && npm run download-dist", + "setup": "git checkout 1.10.1 && npm ci --production && npm run download-dist", "download-dist": "node extra/download-dist.js", "update-version": "node extra/update-version.js", "mark-as-nightly": "node extra/mark-as-nightly.js", From 62222c03360d0bdd2faa7150963b85ed4d055c7f Mon Sep 17 00:00:00 2001 From: Zegert Boele <48018787+ZegertBoele@users.noreply.github.com> Date: Tue, 9 Nov 2021 09:49:42 +0100 Subject: [PATCH 046/142] Update src/languages/nl-NL.js @koen20 added this correction. Co-authored-by: Koen Habets <6172623+koen20@users.noreply.github.com> --- src/languages/nl-NL.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/languages/nl-NL.js b/src/languages/nl-NL.js index f37d8405d..108c8caee 100644 --- a/src/languages/nl-NL.js +++ b/src/languages/nl-NL.js @@ -142,7 +142,7 @@ export default { Token: "Token", "Show URI": "Toon URI", "Clear all statistics": "Wis alle statistieken", - retryCheckEverySecond: "Probeer elke {0} seconds.", + retryCheckEverySecond: "Probeer elke {0} seconden.", importHandleDescription: "Kies 'Sla bestaande over' als je elke monitor of melding met dezelfde naam wilt overslaan. Kies 'Overschrijf' als je elke monitor of notificatie wilt verwijderen.", confirmImportMsg: "Weet je zeker dat je dit bestand wilt importeren?", "Heartbeat Retry Interval": "Heartbeat Retry Interval", From dff1056bb1b8a871fa2998ab65c37ee28a9d1aba Mon Sep 17 00:00:00 2001 From: Zegert Boele <48018787+ZegertBoele@users.noreply.github.com> Date: Tue, 9 Nov 2021 09:52:09 +0100 Subject: [PATCH 047/142] Update nl-NL.js @deefdragon noticed a flaw, fixed in here --- src/languages/nl-NL.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/languages/nl-NL.js b/src/languages/nl-NL.js index 108c8caee..ff18832d7 100644 --- a/src/languages/nl-NL.js +++ b/src/languages/nl-NL.js @@ -170,7 +170,7 @@ export default { "Avg. Ping": "Gemiddelde Ping", "Avg. Response": "Gemiddelde Response", "Entry Page": "Entry Page", - statusPageNothing: "Nothing here, please add a group or a monitor. Niets hier, voeg een groep of monitor toe.", + statusPageNothing: "Niets hier, voeg een groep of monitor toe.", "No Services": "No Services", "All Systems Operational": "Alle systemen operationeel", "Partially Degraded Service": "Gedeeltelijk verminderde prestaties", From 45f7c647a69aefd554e9a95843ec7992e4f6239a Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Tue, 9 Nov 2021 21:31:04 +0800 Subject: [PATCH 048/142] Update feature_request.yaml --- .github/ISSUE_TEMPLATE/feature_request.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/feature_request.yaml b/.github/ISSUE_TEMPLATE/feature_request.yaml index f0a92ede1..b26841c42 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yaml +++ b/.github/ISSUE_TEMPLATE/feature_request.yaml @@ -1,7 +1,7 @@ name: 🚀 Feature Request description: "Submit a proposal for a new feature" #title: "[Feature] " -labels: [enhancement] +labels: [feature-request] body: - type: checkboxes id: no-duplicate-issues From 95bae8289d3a391065e66673cd969c63b7101ef2 Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Tue, 9 Nov 2021 22:37:05 +0800 Subject: [PATCH 049/142] Fix setting page when disabled auth --- src/mixins/socket.js | 10 ++++++++++ src/pages/Settings.vue | 11 +++++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/mixins/socket.js b/src/mixins/socket.js index 170a07a73..affac4f82 100644 --- a/src/mixins/socket.js +++ b/src/mixins/socket.js @@ -1,5 +1,6 @@ import { io } from "socket.io-client"; import { useToast } from "vue-toastification"; +import jwt_decode from "jwt-decode"; const toast = useToast(); let socket; @@ -217,6 +218,15 @@ export default { return (this.remember) ? localStorage : sessionStorage; }, + getJWTPayload() { + const jwtToken = this.$root.storage().token; + + if (jwtToken && jwtToken !== "autoLogin") { + return jwt_decode(jwtToken); + } + return undefined; + }, + getSocket() { return socket; }, diff --git a/src/pages/Settings.vue b/src/pages/Settings.vue index 9312b0c24..9d501407d 100644 --- a/src/pages/Settings.vue +++ b/src/pages/Settings.vue @@ -306,7 +306,7 @@ <p>这是为 <strong>有第三方认证</strong> 的用户提供的功能,如 Cloudflare Access</p> <p>请谨慎使用!</p> </template> - + <template v-else-if="$i18n.locale === 'zh-TW' "> <p>你是否要<strong>取消登入驗證</strong>?</p> <p>此功能是設計給已有<strong>第三方認證</strong>的使用者,例如 Cloudflare Access。</p> @@ -515,9 +515,11 @@ export default { }, loadUsername() { - const jwtToken = this.$root.storage().token; - const jwtPayload = jwt_decode(jwtToken); - this.username = jwtPayload.username; + const jwtPayload = this.$root.getJWTPayload(); + + if (jwtPayload) { + this.username = jwtPayload.username; + } }, loadSettings() { @@ -568,6 +570,7 @@ export default { this.settings.disableAuth = false; this.saveSettings(); this.$root.storage().removeItem("token"); + location.reload(); }, downloadBackup() { From bf64095ceaca78955b67ecc495b18d0500ab3ecc Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Tue, 9 Nov 2021 22:42:13 +0800 Subject: [PATCH 050/142] update to 1.10.2 --- package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 038d52ebd..c7ec3d8ee 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "uptime-kuma", - "version": "1.10.1", + "version": "1.10.2", "license": "MIT", "repository": { "type": "git", @@ -30,13 +30,13 @@ "build-docker": "npm run build-docker-debian && npm run build-docker-alpine", "build-docker-alpine-base": "docker buildx build -f docker/alpine-base.dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:base-alpine . --push", "build-docker-debian-base": "docker buildx build -f docker/debian-base.dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:base-debian . --push", - "build-docker-alpine": "docker buildx build -f docker/dockerfile-alpine --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:alpine -t louislam/uptime-kuma:1-alpine -t louislam/uptime-kuma:1.10.1-alpine --target release . --push", - "build-docker-debian": "docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma -t louislam/uptime-kuma:1 -t louislam/uptime-kuma:1.10.1 -t louislam/uptime-kuma:debian -t louislam/uptime-kuma:1-debian -t louislam/uptime-kuma:1.10.1-debian --target release . --push", + "build-docker-alpine": "docker buildx build -f docker/dockerfile-alpine --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:alpine -t louislam/uptime-kuma:1-alpine -t louislam/uptime-kuma:1.10.2-alpine --target release . --push", + "build-docker-debian": "docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma -t louislam/uptime-kuma:1 -t louislam/uptime-kuma:1.10.2 -t louislam/uptime-kuma:debian -t louislam/uptime-kuma:1-debian -t louislam/uptime-kuma:1.10.2-debian --target release . --push", "build-docker-nightly": "docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:nightly --target nightly . --push", "build-docker-nightly-alpine": "docker buildx build -f docker/dockerfile-alpine --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:nightly-alpine --target nightly . --push", "build-docker-nightly-amd64": "docker buildx build -f docker/dockerfile --platform linux/amd64 -t louislam/uptime-kuma:nightly-amd64 --target nightly . --push --progress plain", "upload-artifacts": "docker buildx build -f docker/dockerfile --platform linux/amd64 -t louislam/uptime-kuma:upload-artifact --build-arg GITHUB_TOKEN --target upload-artifact . --progress plain", - "setup": "git checkout 1.10.1 && npm ci --production && npm run download-dist", + "setup": "git checkout 1.10.2 && npm ci --production && npm run download-dist", "download-dist": "node extra/download-dist.js", "update-version": "node extra/update-version.js", "mark-as-nightly": "node extra/mark-as-nightly.js", From ba46fb6b1c126838eae55ed6b5a87de937e00ed7 Mon Sep 17 00:00:00 2001 From: Adam Stachowicz <adam.stachowicz@fingo.info> Date: Wed, 10 Nov 2021 09:11:19 +0100 Subject: [PATCH 051/142] Clickable URL --- src/components/notifications/Telegram.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/notifications/Telegram.vue b/src/components/notifications/Telegram.vue index 0fa4dd55e..55ff7ec45 100644 --- a/src/components/notifications/Telegram.vue +++ b/src/components/notifications/Telegram.vue @@ -25,7 +25,7 @@ </p> <p style="margin-top: 8px;"> - {{ telegramGetUpdatesURL() }} + <a :href="telegramGetUpdatesURL(true)" target="_blank" style="word-break: break-word;">{{ telegramGetUpdatesURL() }}</a> </p> </div> </div> From 2c85491ee011ca7f7ba655592eb292b2aa5733c7 Mon Sep 17 00:00:00 2001 From: Ivan <ivanbratovic4@gmail.com> Date: Thu, 11 Nov 2021 10:52:22 +0100 Subject: [PATCH 053/142] Replace body and header placeholder functions with translations --- src/languages/en.js | 2 ++ src/pages/EditMonitor.vue | 18 ++---------------- 2 files changed, 4 insertions(+), 16 deletions(-) diff --git a/src/languages/en.js b/src/languages/en.js index 15c3cd0f3..37c1dd693 100644 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -307,4 +307,6 @@ export default { steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", "Current User": "Current User", recent: "Recent", + headersPlaceholder: "Example:\n\{\n \"HeaderName\": \"HeaderValue\"\n}", + bodyPlaceholder: "Example:\n\{\n \"key\": \"value\"\n}", }; diff --git a/src/pages/EditMonitor.vue b/src/pages/EditMonitor.vue index 65c3dad6e..332a98106 100644 --- a/src/pages/EditMonitor.vue +++ b/src/pages/EditMonitor.vue @@ -257,13 +257,13 @@ <!-- Body --> <div class="my-3"> <label for="body" class="form-label">{{ $t("Body") }}</label> - <textarea id="body" v-model="monitor.body" class="form-control" :placeholder="bodyPlaceholder"></textarea> + <textarea id="body" v-model="monitor.body" class="form-control" :placeholder="$t('bodyPlaceholder')"></textarea> </div> <!-- Headers --> <div class="my-3"> <label for="headers" class="form-label">{{ $t("Headers") }}</label> - <textarea id="headers" v-model="monitor.headers" class="form-control" :placeholder="headersPlaceholder"></textarea> + <textarea id="headers" v-model="monitor.headers" class="form-control" :placeholder="$t('headersPlaceholder')"></textarea> </div> </template> </div> @@ -339,20 +339,6 @@ export default { return this.$root.baseURL + "/api/push/" + this.monitor.pushToken + "?msg=OK&ping="; }, - bodyPlaceholder() { - return `Example: -{ - "key": "value" -}`; - }, - - headersPlaceholder() { - return `Example: -{ - "HeaderName": "HeaderValue" -}`; - } - }, watch: { From 267654c987490d66bace688955badb156516649f Mon Sep 17 00:00:00 2001 From: Ivan <ivanbratovic4@gmail.com> Date: Thu, 11 Nov 2021 10:53:38 +0100 Subject: [PATCH 054/142] Replace hard-coded names for groups in Status page with translations --- src/languages/en.js | 3 +++ src/pages/StatusPage.vue | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/languages/en.js b/src/languages/en.js index 37c1dd693..273ece35e 100644 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -309,4 +309,7 @@ export default { recent: "Recent", headersPlaceholder: "Example:\n\{\n \"HeaderName\": \"HeaderValue\"\n}", bodyPlaceholder: "Example:\n\{\n \"key\": \"value\"\n}", + // Status page + "Untitled Group": "Untitled Group", + "Services": "Services", }; diff --git a/src/pages/StatusPage.vue b/src/pages/StatusPage.vue index ce0f94b55..82e46a748 100644 --- a/src/pages/StatusPage.vue +++ b/src/pages/StatusPage.vue @@ -468,10 +468,10 @@ export default { }, addGroup() { - let groupName = "Untitled Group"; + let groupName = this.$t("Untitled Group"); if (this.$root.publicGroupList.length === 0) { - groupName = "Services"; + groupName = this.$t("Services"); } this.$root.publicGroupList.push({ From 265cca9ed1db2cbbacf2dc4781407fb1e50a614a Mon Sep 17 00:00:00 2001 From: Ivan <ivanbratovic4@gmail.com> Date: Thu, 11 Nov 2021 10:54:09 +0100 Subject: [PATCH 055/142] Replace "Default" notification badge with translation --- src/languages/en.js | 1 + src/pages/EditMonitor.vue | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/languages/en.js b/src/languages/en.js index 273ece35e..6f1a6b5f4 100644 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -307,6 +307,7 @@ export default { steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", "Current User": "Current User", recent: "Recent", + Default: "Default", headersPlaceholder: "Example:\n\{\n \"HeaderName\": \"HeaderValue\"\n}", bodyPlaceholder: "Example:\n\{\n \"key\": \"value\"\n}", // Status page diff --git a/src/pages/EditMonitor.vue b/src/pages/EditMonitor.vue index 332a98106..907ecfa6b 100644 --- a/src/pages/EditMonitor.vue +++ b/src/pages/EditMonitor.vue @@ -215,7 +215,7 @@ <a href="#" @click="$refs.notificationDialog.show(notification.id)">{{ $t("Edit") }}</a> </label> - <span v-if="notification.isDefault == true" class="badge bg-primary ms-2">Default</span> + <span v-if="notification.isDefault == true" class="badge bg-primary ms-2">{{ $t("Default") }}</span> </div> <button class="btn btn-primary me-2" type="button" @click="$refs.notificationDialog.show()"> From 94508cae2fc2ba7dfa79b4e0e578a8040baee932 Mon Sep 17 00:00:00 2001 From: Ivan <ivanbratovic4@gmail.com> Date: Thu, 11 Nov 2021 10:54:36 +0100 Subject: [PATCH 056/142] Add some missing translations --- src/languages/en.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/languages/en.js b/src/languages/en.js index 6f1a6b5f4..6cb42e40e 100644 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -307,10 +307,24 @@ export default { steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", "Current User": "Current User", recent: "Recent", + "Shrink Database": "Shrink Database", Default: "Default", headersPlaceholder: "Example:\n\{\n \"HeaderName\": \"HeaderValue\"\n}", bodyPlaceholder: "Example:\n\{\n \"key\": \"value\"\n}", + "HTTP Options": "HTTP Options", // Status page + "Create Incident": "Create Incident", + "Switch to Light Theme": "Switch to Light Theme", + "Switch to Dark Theme": "Switch to Dark Theme", + "Show Tags": "Show Tags", + "Hide Tags": "Hide Tags", + "Description": "Description", + "No monitors available.": "No monitors available.", + "Add one": "Add one", + "No Monitors": "No Monitors", "Untitled Group": "Untitled Group", "Services": "Services", + "Discard": "Discard", + "Cancel": "Cancel", + "Powered by": "Powered by", }; From be1933614917e12b6669f7ba6c3660298c732fcd Mon Sep 17 00:00:00 2001 From: Ivan <ivanbratovic4@gmail.com> Date: Thu, 11 Nov 2021 10:57:33 +0100 Subject: [PATCH 057/142] Run `update-language-files` for all languages --- src/languages/bg-BG.js | 19 ++++++ src/languages/da-DK.js | 129 +++++++++++++++++++++++++++++++++++++++ src/languages/de-DE.js | 22 +++++++ src/languages/en.js | 13 ++-- src/languages/es-ES.js | 124 +++++++++++++++++++++++++++++++++++++ src/languages/et-EE.js | 129 +++++++++++++++++++++++++++++++++++++++ src/languages/fa.js | 126 ++++++++++++++++++++++++++++++++++++++ src/languages/fr-FR.js | 22 +++++++ src/languages/hr-HR.js | 19 ++++++ src/languages/hu.js | 129 +++++++++++++++++++++++++++++++++++++++ src/languages/id-ID.js | 47 ++++++++++++++ src/languages/it-IT.js | 129 +++++++++++++++++++++++++++++++++++++++ src/languages/ja.js | 129 +++++++++++++++++++++++++++++++++++++++ src/languages/ko-KR.js | 47 ++++++++++++++ src/languages/nb-NO.js | 47 ++++++++++++++ src/languages/nl-NL.js | 123 +++++++++++++++++++++++++++++++++++++ src/languages/pl.js | 19 ++++++ src/languages/pt-BR.js | 129 +++++++++++++++++++++++++++++++++++++++ src/languages/ru-RU.js | 19 ++++++ src/languages/sr-latn.js | 129 +++++++++++++++++++++++++++++++++++++++ src/languages/sr.js | 129 +++++++++++++++++++++++++++++++++++++++ src/languages/sv-SE.js | 129 +++++++++++++++++++++++++++++++++++++++ src/languages/tr-TR.js | 129 +++++++++++++++++++++++++++++++++++++++ src/languages/vi.js | 47 ++++++++++++++ src/languages/zh-CN.js | 36 +++++++++++ src/languages/zh-HK.js | 129 +++++++++++++++++++++++++++++++++++++++ src/languages/zh-TW.js | 20 ++++++ 27 files changed, 2162 insertions(+), 7 deletions(-) diff --git a/src/languages/bg-BG.js b/src/languages/bg-BG.js index f1d9b0784..d75fb5998 100644 --- a/src/languages/bg-BG.js +++ b/src/languages/bg-BG.js @@ -307,4 +307,23 @@ export default { PasswordsDoNotMatch: "Паролите не съвпадат.", "Current User": "Текущ потребител", recent: "Скорошни", + "Shrink Database": "Shrink Database", + Default: "Default", + headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", + bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", + "HTTP Options": "HTTP Options", + "Create Incident": "Create Incident", + "Switch to Light Theme": "Switch to Light Theme", + "Switch to Dark Theme": "Switch to Dark Theme", + "Show Tags": "Show Tags", + "Hide Tags": "Hide Tags", + Description: "Description", + "No monitors available.": "No monitors available.", + "Add one": "Add one", + "No Monitors": "No Monitors", + "Untitled Group": "Untitled Group", + Services: "Services", + Discard: "Discard", + Cancel: "Cancel", + "Powered by": "Powered by", }; diff --git a/src/languages/da-DK.js b/src/languages/da-DK.js index 66e7cb3d4..9c797c3d9 100644 --- a/src/languages/da-DK.js +++ b/src/languages/da-DK.js @@ -198,4 +198,133 @@ export default { pushbullet: "Pushbullet", line: "Line Messenger", mattermost: "Mattermost", + "Primary Base URL": "Primary Base URL", + "Push URL": "Push URL", + needPushEvery: "You should call this URL every {0} seconds.", + pushOptionalParams: "Optional parameters: {0}", + defaultNotificationName: "My {notification} Alert ({number})", + here: "here", + Required: "Required", + "Bot Token": "Bot Token", + wayToGetTelegramToken: "You can get a token from {0}.", + "Chat ID": "Chat ID", + supportTelegramChatID: "Support Direct Chat / Group / Channel's Chat ID", + wayToGetTelegramChatID: "You can get your chat ID by sending a message to the bot and going to this URL to view the chat_id:", + "YOUR BOT TOKEN HERE": "YOUR BOT TOKEN HERE", + chatIDNotFound: "Chat ID is not found; please send a message to this bot first", + "Post URL": "Post URL", + "Content Type": "Content Type", + webhookJsonDesc: "{0} is good for any modern HTTP servers such as Express.js", + webhookFormDataDesc: "{multipart} is good for PHP. The JSON will need to be parsed with {decodeFunction}", + secureOptionNone: "None / STARTTLS (25, 587)", + secureOptionTLS: "TLS (465)", + "Ignore TLS Error": "Ignore TLS Error", + "From Email": "From Email", + emailCustomSubject: "Custom Subject", + "To Email": "To Email", + smtpCC: "CC", + smtpBCC: "BCC", + "Discord Webhook URL": "Discord Webhook URL", + wayToGetDiscordURL: "You can get this by going to Server Settings -> Integrations -> Create Webhook", + "Bot Display Name": "Bot Display Name", + "Prefix Custom Message": "Prefix Custom Message", + "Hello @everyone is...": "Hello {'@'}everyone is...", + "Webhook URL": "Webhook URL", + wayToGetTeamsURL: "You can learn how to create a webhook URL {0}.", + Number: "Number", + Recipients: "Recipients", + needSignalAPI: "You need to have a signal client with REST API.", + wayToCheckSignalURL: "You can check this URL to view how to set one up:", + signalImportant: "IMPORTANT: You cannot mix groups and numbers in recipients!", + "Application Token": "Application Token", + "Server URL": "Server URL", + Priority: "Priority", + "Icon Emoji": "Icon Emoji", + "Channel Name": "Channel Name", + "Uptime Kuma URL": "Uptime Kuma URL", + aboutWebhooks: "More info about Webhooks on: {0}", + aboutChannelName: "Enter the channel name on {0} Channel Name field if you want to bypass the Webhook channel. Ex: #other-channel", + aboutKumaURL: "If you leave the Uptime Kuma URL field blank, it will default to the Project GitHub page.", + emojiCheatSheet: "Emoji cheat sheet: {0}", + clicksendsms: "ClickSend SMS", + "User Key": "User Key", + Device: "Device", + "Message Title": "Message Title", + "Notification Sound": "Notification Sound", + "More info on:": "More info on: {0}", + pushoverDesc1: "Emergency priority (2) has default 30 second timeout between retries and will expire after 1 hour.", + pushoverDesc2: "If you want to send notifications to different devices, fill out Device field.", + "SMS Type": "SMS Type", + octopushTypePremium: "Premium (Fast - recommended for alerting)", + octopushTypeLowCost: "Low Cost (Slow - sometimes blocked by operator)", + checkPrice: "Check {0} prices:", + apiCredentials: "API credentials", + octopushLegacyHint: "Do you use the legacy version of Octopush (2011-2020) or the new version?", + "Check octopush prices": "Check octopush prices {0}.", + octopushPhoneNumber: "Phone number (intl format, eg : +33612345678) ", + octopushSMSSender: "SMS Sender Name : 3-11 alphanumeric characters and space (a-zA-Z0-9)", + "LunaSea Device ID": "LunaSea Device ID", + "Apprise URL": "Apprise URL", + "Example:": "Example: {0}", + "Read more:": "Read more: {0}", + "Status:": "Status: {0}", + "Read more": "Read more", + appriseInstalled: "Apprise is installed.", + appriseNotInstalled: "Apprise is not installed. {0}", + "Access Token": "Access Token", + "Channel access token": "Channel access token", + "Line Developers Console": "Line Developers Console", + lineDevConsoleTo: "Line Developers Console - {0}", + "Basic Settings": "Basic Settings", + "User ID": "User ID", + "Messaging API": "Messaging API", + wayToGetLineChannelToken: "First access the {0}, create a provider and channel (Messaging API), then you can get the channel access token and user ID from the above mentioned menu items.", + "Icon URL": "Icon URL", + aboutIconURL: "You can provide a link to a picture in \"Icon URL\" to override the default profile picture. Will not be used if Icon Emoji is set.", + aboutMattermostChannelName: "You can override the default channel that the Webhook posts to by entering the channel name into \"Channel Name\" field. This needs to be enabled in the Mattermost Webhook settings. Ex: #other-channel", + matrix: "Matrix", + promosmsTypeEco: "SMS ECO - cheap but slow and often overloaded. Limited only to Polish recipients.", + promosmsTypeFlash: "SMS FLASH - Message will automatically show on recipient device. Limited only to Polish recipients.", + promosmsTypeFull: "SMS FULL - Premium tier of SMS, You can use your Sender Name (You need to register name first). Reliable for alerts.", + promosmsTypeSpeed: "SMS SPEED - Highest priority in system. Very quick and reliable but costly (about twice of SMS FULL price).", + promosmsPhoneNumber: "Phone number (for Polish recipient You can skip area codes)", + promosmsSMSSender: "SMS Sender Name : Pre-registred name or one of defaults: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "Feishu WebHookURL", + matrixHomeserverURL: "Homeserver URL (with http(s):// and optionally port)", + "Internal Room Id": "Internal Room ID", + matrixDesc1: "You can find the internal room ID by looking in the advanced section of the room settings in your Matrix client. It should look like !QMdRCpUIfLwsfjxye6:home.server.", + matrixDesc2: "It is highly recommended you create a new user and do not use your own Matrix user's access token as it will allow full access to your account and all the rooms you joined. Instead, create a new user and only invite it to the room that you want to receive the notification in. You can get the access token by running {0}", + Method: "Method", + Body: "Body", + Headers: "Headers", + PushUrl: "Push URL", + HeadersInvalidFormat: "The request headers are not valid JSON: ", + BodyInvalidFormat: "The request body is not valid JSON: ", + "Monitor History": "Monitor History", + clearDataOlderThan: "Keep monitor history data for {0} days.", + PasswordsDoNotMatch: "Passwords do not match.", + records: "records", + "One record": "One record", + steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", + "Current User": "Current User", + recent: "Recent", + "Shrink Database": "Shrink Database", + Default: "Default", + headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", + bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", + "HTTP Options": "HTTP Options", + "Create Incident": "Create Incident", + "Switch to Light Theme": "Switch to Light Theme", + "Switch to Dark Theme": "Switch to Dark Theme", + "Show Tags": "Show Tags", + "Hide Tags": "Hide Tags", + Description: "Description", + "No monitors available.": "No monitors available.", + "Add one": "Add one", + "No Monitors": "No Monitors", + "Untitled Group": "Untitled Group", + Services: "Services", + Discard: "Discard", + Cancel: "Cancel", + "Powered by": "Powered by", }; diff --git a/src/languages/de-DE.js b/src/languages/de-DE.js index e6b7710cc..e5e53466c 100644 --- a/src/languages/de-DE.js +++ b/src/languages/de-DE.js @@ -304,4 +304,26 @@ export default { "One record": "Ein Eintrag", steamApiKeyDescription: "Um einen Steam Game Server zu überwachen, wird ein Steam Web-API-Schlüssel benötigt. Dieser kann hier registriert werden: ", "Current User": "Aktueller Benutzer", + clicksendsms: "ClickSend SMS", + apiCredentials: "API credentials", + recent: "Recent", + "Shrink Database": "Shrink Database", + Default: "Default", + headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", + bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", + "HTTP Options": "HTTP Options", + "Create Incident": "Create Incident", + "Switch to Light Theme": "Switch to Light Theme", + "Switch to Dark Theme": "Switch to Dark Theme", + "Show Tags": "Show Tags", + "Hide Tags": "Hide Tags", + Description: "Description", + "No monitors available.": "No monitors available.", + "Add one": "Add one", + "No Monitors": "No Monitors", + "Untitled Group": "Untitled Group", + Services: "Services", + Discard: "Discard", + Cancel: "Cancel", + "Powered by": "Powered by", }; diff --git a/src/languages/en.js b/src/languages/en.js index 6cb42e40e..b46281a29 100644 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -309,22 +309,21 @@ export default { recent: "Recent", "Shrink Database": "Shrink Database", Default: "Default", - headersPlaceholder: "Example:\n\{\n \"HeaderName\": \"HeaderValue\"\n}", - bodyPlaceholder: "Example:\n\{\n \"key\": \"value\"\n}", + headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", + bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", "HTTP Options": "HTTP Options", - // Status page "Create Incident": "Create Incident", "Switch to Light Theme": "Switch to Light Theme", "Switch to Dark Theme": "Switch to Dark Theme", "Show Tags": "Show Tags", "Hide Tags": "Hide Tags", - "Description": "Description", + Description: "Description", "No monitors available.": "No monitors available.", "Add one": "Add one", "No Monitors": "No Monitors", "Untitled Group": "Untitled Group", - "Services": "Services", - "Discard": "Discard", - "Cancel": "Cancel", + Services: "Services", + Discard: "Discard", + Cancel: "Cancel", "Powered by": "Powered by", }; diff --git a/src/languages/es-ES.js b/src/languages/es-ES.js index d772db060..d036b7665 100644 --- a/src/languages/es-ES.js +++ b/src/languages/es-ES.js @@ -203,4 +203,128 @@ export default { records: "registros", "One record": "Un registro", steamApiKeyDescription: "Para monitorear un servidor de juegos de Steam, necesita una clave Steam Web-API. Puede registrar su clave API aquí: ", + "Primary Base URL": "Primary Base URL", + "Push URL": "Push URL", + needPushEvery: "You should call this URL every {0} seconds.", + pushOptionalParams: "Optional parameters: {0}", + defaultNotificationName: "My {notification} Alert ({number})", + here: "here", + Required: "Required", + "Bot Token": "Bot Token", + wayToGetTelegramToken: "You can get a token from {0}.", + "Chat ID": "Chat ID", + supportTelegramChatID: "Support Direct Chat / Group / Channel's Chat ID", + wayToGetTelegramChatID: "You can get your chat ID by sending a message to the bot and going to this URL to view the chat_id:", + "YOUR BOT TOKEN HERE": "YOUR BOT TOKEN HERE", + chatIDNotFound: "Chat ID is not found; please send a message to this bot first", + "Post URL": "Post URL", + "Content Type": "Content Type", + webhookJsonDesc: "{0} is good for any modern HTTP servers such as Express.js", + webhookFormDataDesc: "{multipart} is good for PHP. The JSON will need to be parsed with {decodeFunction}", + secureOptionNone: "None / STARTTLS (25, 587)", + secureOptionTLS: "TLS (465)", + "Ignore TLS Error": "Ignore TLS Error", + "From Email": "From Email", + emailCustomSubject: "Custom Subject", + "To Email": "To Email", + smtpCC: "CC", + smtpBCC: "BCC", + "Discord Webhook URL": "Discord Webhook URL", + wayToGetDiscordURL: "You can get this by going to Server Settings -> Integrations -> Create Webhook", + "Bot Display Name": "Bot Display Name", + "Prefix Custom Message": "Prefix Custom Message", + "Hello @everyone is...": "Hello {'@'}everyone is...", + "Webhook URL": "Webhook URL", + wayToGetTeamsURL: "You can learn how to create a webhook URL {0}.", + Number: "Number", + Recipients: "Recipients", + needSignalAPI: "You need to have a signal client with REST API.", + wayToCheckSignalURL: "You can check this URL to view how to set one up:", + signalImportant: "IMPORTANT: You cannot mix groups and numbers in recipients!", + "Application Token": "Application Token", + "Server URL": "Server URL", + Priority: "Priority", + "Icon Emoji": "Icon Emoji", + "Channel Name": "Channel Name", + "Uptime Kuma URL": "Uptime Kuma URL", + aboutWebhooks: "More info about Webhooks on: {0}", + aboutChannelName: "Enter the channel name on {0} Channel Name field if you want to bypass the Webhook channel. Ex: #other-channel", + aboutKumaURL: "If you leave the Uptime Kuma URL field blank, it will default to the Project GitHub page.", + emojiCheatSheet: "Emoji cheat sheet: {0}", + clicksendsms: "ClickSend SMS", + "User Key": "User Key", + Device: "Device", + "Message Title": "Message Title", + "Notification Sound": "Notification Sound", + "More info on:": "More info on: {0}", + pushoverDesc1: "Emergency priority (2) has default 30 second timeout between retries and will expire after 1 hour.", + pushoverDesc2: "If you want to send notifications to different devices, fill out Device field.", + "SMS Type": "SMS Type", + octopushTypePremium: "Premium (Fast - recommended for alerting)", + octopushTypeLowCost: "Low Cost (Slow - sometimes blocked by operator)", + checkPrice: "Check {0} prices:", + apiCredentials: "API credentials", + octopushLegacyHint: "Do you use the legacy version of Octopush (2011-2020) or the new version?", + "Check octopush prices": "Check octopush prices {0}.", + octopushPhoneNumber: "Phone number (intl format, eg : +33612345678) ", + octopushSMSSender: "SMS Sender Name : 3-11 alphanumeric characters and space (a-zA-Z0-9)", + "LunaSea Device ID": "LunaSea Device ID", + "Apprise URL": "Apprise URL", + "Example:": "Example: {0}", + "Read more:": "Read more: {0}", + "Status:": "Status: {0}", + "Read more": "Read more", + appriseInstalled: "Apprise is installed.", + appriseNotInstalled: "Apprise is not installed. {0}", + "Access Token": "Access Token", + "Channel access token": "Channel access token", + "Line Developers Console": "Line Developers Console", + lineDevConsoleTo: "Line Developers Console - {0}", + "Basic Settings": "Basic Settings", + "User ID": "User ID", + "Messaging API": "Messaging API", + wayToGetLineChannelToken: "First access the {0}, create a provider and channel (Messaging API), then you can get the channel access token and user ID from the above mentioned menu items.", + "Icon URL": "Icon URL", + aboutIconURL: "You can provide a link to a picture in \"Icon URL\" to override the default profile picture. Will not be used if Icon Emoji is set.", + aboutMattermostChannelName: "You can override the default channel that the Webhook posts to by entering the channel name into \"Channel Name\" field. This needs to be enabled in the Mattermost Webhook settings. Ex: #other-channel", + matrix: "Matrix", + promosmsTypeEco: "SMS ECO - cheap but slow and often overloaded. Limited only to Polish recipients.", + promosmsTypeFlash: "SMS FLASH - Message will automatically show on recipient device. Limited only to Polish recipients.", + promosmsTypeFull: "SMS FULL - Premium tier of SMS, You can use your Sender Name (You need to register name first). Reliable for alerts.", + promosmsTypeSpeed: "SMS SPEED - Highest priority in system. Very quick and reliable but costly (about twice of SMS FULL price).", + promosmsPhoneNumber: "Phone number (for Polish recipient You can skip area codes)", + promosmsSMSSender: "SMS Sender Name : Pre-registred name or one of defaults: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "Feishu WebHookURL", + matrixHomeserverURL: "Homeserver URL (with http(s):// and optionally port)", + "Internal Room Id": "Internal Room ID", + matrixDesc1: "You can find the internal room ID by looking in the advanced section of the room settings in your Matrix client. It should look like !QMdRCpUIfLwsfjxye6:home.server.", + matrixDesc2: "It is highly recommended you create a new user and do not use your own Matrix user's access token as it will allow full access to your account and all the rooms you joined. Instead, create a new user and only invite it to the room that you want to receive the notification in. You can get the access token by running {0}", + Method: "Method", + Body: "Body", + Headers: "Headers", + PushUrl: "Push URL", + HeadersInvalidFormat: "The request headers are not valid JSON: ", + BodyInvalidFormat: "The request body is not valid JSON: ", + PasswordsDoNotMatch: "Passwords do not match.", + "Current User": "Current User", + recent: "Recent", + "Shrink Database": "Shrink Database", + Default: "Default", + headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", + bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", + "HTTP Options": "HTTP Options", + "Create Incident": "Create Incident", + "Switch to Light Theme": "Switch to Light Theme", + "Switch to Dark Theme": "Switch to Dark Theme", + "Show Tags": "Show Tags", + "Hide Tags": "Hide Tags", + Description: "Description", + "No monitors available.": "No monitors available.", + "Add one": "Add one", + "No Monitors": "No Monitors", + "Untitled Group": "Untitled Group", + Services: "Services", + Discard: "Discard", + Cancel: "Cancel", + "Powered by": "Powered by", }; diff --git a/src/languages/et-EE.js b/src/languages/et-EE.js index 52439f5f6..7bcbe7bc2 100644 --- a/src/languages/et-EE.js +++ b/src/languages/et-EE.js @@ -197,4 +197,133 @@ export default { pushbullet: "Pushbullet", line: "LINE", mattermost: "Mattermost", + "Primary Base URL": "Primary Base URL", + "Push URL": "Push URL", + needPushEvery: "You should call this URL every {0} seconds.", + pushOptionalParams: "Optional parameters: {0}", + defaultNotificationName: "My {notification} Alert ({number})", + here: "here", + Required: "Required", + "Bot Token": "Bot Token", + wayToGetTelegramToken: "You can get a token from {0}.", + "Chat ID": "Chat ID", + supportTelegramChatID: "Support Direct Chat / Group / Channel's Chat ID", + wayToGetTelegramChatID: "You can get your chat ID by sending a message to the bot and going to this URL to view the chat_id:", + "YOUR BOT TOKEN HERE": "YOUR BOT TOKEN HERE", + chatIDNotFound: "Chat ID is not found; please send a message to this bot first", + "Post URL": "Post URL", + "Content Type": "Content Type", + webhookJsonDesc: "{0} is good for any modern HTTP servers such as Express.js", + webhookFormDataDesc: "{multipart} is good for PHP. The JSON will need to be parsed with {decodeFunction}", + secureOptionNone: "None / STARTTLS (25, 587)", + secureOptionTLS: "TLS (465)", + "Ignore TLS Error": "Ignore TLS Error", + "From Email": "From Email", + emailCustomSubject: "Custom Subject", + "To Email": "To Email", + smtpCC: "CC", + smtpBCC: "BCC", + "Discord Webhook URL": "Discord Webhook URL", + wayToGetDiscordURL: "You can get this by going to Server Settings -> Integrations -> Create Webhook", + "Bot Display Name": "Bot Display Name", + "Prefix Custom Message": "Prefix Custom Message", + "Hello @everyone is...": "Hello {'@'}everyone is...", + "Webhook URL": "Webhook URL", + wayToGetTeamsURL: "You can learn how to create a webhook URL {0}.", + Number: "Number", + Recipients: "Recipients", + needSignalAPI: "You need to have a signal client with REST API.", + wayToCheckSignalURL: "You can check this URL to view how to set one up:", + signalImportant: "IMPORTANT: You cannot mix groups and numbers in recipients!", + "Application Token": "Application Token", + "Server URL": "Server URL", + Priority: "Priority", + "Icon Emoji": "Icon Emoji", + "Channel Name": "Channel Name", + "Uptime Kuma URL": "Uptime Kuma URL", + aboutWebhooks: "More info about Webhooks on: {0}", + aboutChannelName: "Enter the channel name on {0} Channel Name field if you want to bypass the Webhook channel. Ex: #other-channel", + aboutKumaURL: "If you leave the Uptime Kuma URL field blank, it will default to the Project GitHub page.", + emojiCheatSheet: "Emoji cheat sheet: {0}", + clicksendsms: "ClickSend SMS", + "User Key": "User Key", + Device: "Device", + "Message Title": "Message Title", + "Notification Sound": "Notification Sound", + "More info on:": "More info on: {0}", + pushoverDesc1: "Emergency priority (2) has default 30 second timeout between retries and will expire after 1 hour.", + pushoverDesc2: "If you want to send notifications to different devices, fill out Device field.", + "SMS Type": "SMS Type", + octopushTypePremium: "Premium (Fast - recommended for alerting)", + octopushTypeLowCost: "Low Cost (Slow - sometimes blocked by operator)", + checkPrice: "Check {0} prices:", + apiCredentials: "API credentials", + octopushLegacyHint: "Do you use the legacy version of Octopush (2011-2020) or the new version?", + "Check octopush prices": "Check octopush prices {0}.", + octopushPhoneNumber: "Phone number (intl format, eg : +33612345678) ", + octopushSMSSender: "SMS Sender Name : 3-11 alphanumeric characters and space (a-zA-Z0-9)", + "LunaSea Device ID": "LunaSea Device ID", + "Apprise URL": "Apprise URL", + "Example:": "Example: {0}", + "Read more:": "Read more: {0}", + "Status:": "Status: {0}", + "Read more": "Read more", + appriseInstalled: "Apprise is installed.", + appriseNotInstalled: "Apprise is not installed. {0}", + "Access Token": "Access Token", + "Channel access token": "Channel access token", + "Line Developers Console": "Line Developers Console", + lineDevConsoleTo: "Line Developers Console - {0}", + "Basic Settings": "Basic Settings", + "User ID": "User ID", + "Messaging API": "Messaging API", + wayToGetLineChannelToken: "First access the {0}, create a provider and channel (Messaging API), then you can get the channel access token and user ID from the above mentioned menu items.", + "Icon URL": "Icon URL", + aboutIconURL: "You can provide a link to a picture in \"Icon URL\" to override the default profile picture. Will not be used if Icon Emoji is set.", + aboutMattermostChannelName: "You can override the default channel that the Webhook posts to by entering the channel name into \"Channel Name\" field. This needs to be enabled in the Mattermost Webhook settings. Ex: #other-channel", + matrix: "Matrix", + promosmsTypeEco: "SMS ECO - cheap but slow and often overloaded. Limited only to Polish recipients.", + promosmsTypeFlash: "SMS FLASH - Message will automatically show on recipient device. Limited only to Polish recipients.", + promosmsTypeFull: "SMS FULL - Premium tier of SMS, You can use your Sender Name (You need to register name first). Reliable for alerts.", + promosmsTypeSpeed: "SMS SPEED - Highest priority in system. Very quick and reliable but costly (about twice of SMS FULL price).", + promosmsPhoneNumber: "Phone number (for Polish recipient You can skip area codes)", + promosmsSMSSender: "SMS Sender Name : Pre-registred name or one of defaults: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "Feishu WebHookURL", + matrixHomeserverURL: "Homeserver URL (with http(s):// and optionally port)", + "Internal Room Id": "Internal Room ID", + matrixDesc1: "You can find the internal room ID by looking in the advanced section of the room settings in your Matrix client. It should look like !QMdRCpUIfLwsfjxye6:home.server.", + matrixDesc2: "It is highly recommended you create a new user and do not use your own Matrix user's access token as it will allow full access to your account and all the rooms you joined. Instead, create a new user and only invite it to the room that you want to receive the notification in. You can get the access token by running {0}", + Method: "Method", + Body: "Body", + Headers: "Headers", + PushUrl: "Push URL", + HeadersInvalidFormat: "The request headers are not valid JSON: ", + BodyInvalidFormat: "The request body is not valid JSON: ", + "Monitor History": "Monitor History", + clearDataOlderThan: "Keep monitor history data for {0} days.", + PasswordsDoNotMatch: "Passwords do not match.", + records: "records", + "One record": "One record", + steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", + "Current User": "Current User", + recent: "Recent", + "Shrink Database": "Shrink Database", + Default: "Default", + headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", + bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", + "HTTP Options": "HTTP Options", + "Create Incident": "Create Incident", + "Switch to Light Theme": "Switch to Light Theme", + "Switch to Dark Theme": "Switch to Dark Theme", + "Show Tags": "Show Tags", + "Hide Tags": "Hide Tags", + Description: "Description", + "No monitors available.": "No monitors available.", + "Add one": "Add one", + "No Monitors": "No Monitors", + "Untitled Group": "Untitled Group", + Services: "Services", + Discard: "Discard", + Cancel: "Cancel", + "Powered by": "Powered by", }; diff --git a/src/languages/fa.js b/src/languages/fa.js index aa5b129f7..f5a8b6234 100644 --- a/src/languages/fa.js +++ b/src/languages/fa.js @@ -202,4 +202,130 @@ export default { pushbullet: "Pushbullet", line: "Line Messenger", mattermost: "Mattermost", + "Primary Base URL": "Primary Base URL", + "Push URL": "Push URL", + needPushEvery: "You should call this URL every {0} seconds.", + pushOptionalParams: "Optional parameters: {0}", + defaultNotificationName: "My {notification} Alert ({number})", + here: "here", + Required: "Required", + "Bot Token": "Bot Token", + wayToGetTelegramToken: "You can get a token from {0}.", + "Chat ID": "Chat ID", + supportTelegramChatID: "Support Direct Chat / Group / Channel's Chat ID", + wayToGetTelegramChatID: "You can get your chat ID by sending a message to the bot and going to this URL to view the chat_id:", + "YOUR BOT TOKEN HERE": "YOUR BOT TOKEN HERE", + chatIDNotFound: "Chat ID is not found; please send a message to this bot first", + "Post URL": "Post URL", + "Content Type": "Content Type", + webhookJsonDesc: "{0} is good for any modern HTTP servers such as Express.js", + webhookFormDataDesc: "{multipart} is good for PHP. The JSON will need to be parsed with {decodeFunction}", + secureOptionNone: "None / STARTTLS (25, 587)", + secureOptionTLS: "TLS (465)", + "Ignore TLS Error": "Ignore TLS Error", + "From Email": "From Email", + emailCustomSubject: "Custom Subject", + "To Email": "To Email", + smtpCC: "CC", + smtpBCC: "BCC", + "Discord Webhook URL": "Discord Webhook URL", + wayToGetDiscordURL: "You can get this by going to Server Settings -> Integrations -> Create Webhook", + "Bot Display Name": "Bot Display Name", + "Prefix Custom Message": "Prefix Custom Message", + "Hello @everyone is...": "Hello {'@'}everyone is...", + "Webhook URL": "Webhook URL", + wayToGetTeamsURL: "You can learn how to create a webhook URL {0}.", + Number: "Number", + Recipients: "Recipients", + needSignalAPI: "You need to have a signal client with REST API.", + wayToCheckSignalURL: "You can check this URL to view how to set one up:", + signalImportant: "IMPORTANT: You cannot mix groups and numbers in recipients!", + "Application Token": "Application Token", + "Server URL": "Server URL", + Priority: "Priority", + "Icon Emoji": "Icon Emoji", + "Channel Name": "Channel Name", + "Uptime Kuma URL": "Uptime Kuma URL", + aboutWebhooks: "More info about Webhooks on: {0}", + aboutChannelName: "Enter the channel name on {0} Channel Name field if you want to bypass the Webhook channel. Ex: #other-channel", + aboutKumaURL: "If you leave the Uptime Kuma URL field blank, it will default to the Project GitHub page.", + emojiCheatSheet: "Emoji cheat sheet: {0}", + clicksendsms: "ClickSend SMS", + "User Key": "User Key", + Device: "Device", + "Message Title": "Message Title", + "Notification Sound": "Notification Sound", + "More info on:": "More info on: {0}", + pushoverDesc1: "Emergency priority (2) has default 30 second timeout between retries and will expire after 1 hour.", + pushoverDesc2: "If you want to send notifications to different devices, fill out Device field.", + "SMS Type": "SMS Type", + octopushTypePremium: "Premium (Fast - recommended for alerting)", + octopushTypeLowCost: "Low Cost (Slow - sometimes blocked by operator)", + checkPrice: "Check {0} prices:", + apiCredentials: "API credentials", + octopushLegacyHint: "Do you use the legacy version of Octopush (2011-2020) or the new version?", + "Check octopush prices": "Check octopush prices {0}.", + octopushPhoneNumber: "Phone number (intl format, eg : +33612345678) ", + octopushSMSSender: "SMS Sender Name : 3-11 alphanumeric characters and space (a-zA-Z0-9)", + "LunaSea Device ID": "LunaSea Device ID", + "Apprise URL": "Apprise URL", + "Example:": "Example: {0}", + "Read more:": "Read more: {0}", + "Status:": "Status: {0}", + "Read more": "Read more", + appriseInstalled: "Apprise is installed.", + appriseNotInstalled: "Apprise is not installed. {0}", + "Access Token": "Access Token", + "Channel access token": "Channel access token", + "Line Developers Console": "Line Developers Console", + lineDevConsoleTo: "Line Developers Console - {0}", + "Basic Settings": "Basic Settings", + "User ID": "User ID", + "Messaging API": "Messaging API", + wayToGetLineChannelToken: "First access the {0}, create a provider and channel (Messaging API), then you can get the channel access token and user ID from the above mentioned menu items.", + "Icon URL": "Icon URL", + aboutIconURL: "You can provide a link to a picture in \"Icon URL\" to override the default profile picture. Will not be used if Icon Emoji is set.", + aboutMattermostChannelName: "You can override the default channel that the Webhook posts to by entering the channel name into \"Channel Name\" field. This needs to be enabled in the Mattermost Webhook settings. Ex: #other-channel", + matrix: "Matrix", + promosmsTypeEco: "SMS ECO - cheap but slow and often overloaded. Limited only to Polish recipients.", + promosmsTypeFlash: "SMS FLASH - Message will automatically show on recipient device. Limited only to Polish recipients.", + promosmsTypeFull: "SMS FULL - Premium tier of SMS, You can use your Sender Name (You need to register name first). Reliable for alerts.", + promosmsTypeSpeed: "SMS SPEED - Highest priority in system. Very quick and reliable but costly (about twice of SMS FULL price).", + promosmsPhoneNumber: "Phone number (for Polish recipient You can skip area codes)", + promosmsSMSSender: "SMS Sender Name : Pre-registred name or one of defaults: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "Feishu WebHookURL", + matrixHomeserverURL: "Homeserver URL (with http(s):// and optionally port)", + "Internal Room Id": "Internal Room ID", + matrixDesc1: "You can find the internal room ID by looking in the advanced section of the room settings in your Matrix client. It should look like !QMdRCpUIfLwsfjxye6:home.server.", + matrixDesc2: "It is highly recommended you create a new user and do not use your own Matrix user's access token as it will allow full access to your account and all the rooms you joined. Instead, create a new user and only invite it to the room that you want to receive the notification in. You can get the access token by running {0}", + Method: "Method", + Body: "Body", + Headers: "Headers", + PushUrl: "Push URL", + HeadersInvalidFormat: "The request headers are not valid JSON: ", + BodyInvalidFormat: "The request body is not valid JSON: ", + "Monitor History": "Monitor History", + clearDataOlderThan: "Keep monitor history data for {0} days.", + PasswordsDoNotMatch: "Passwords do not match.", + steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", + "Current User": "Current User", + recent: "Recent", + "Shrink Database": "Shrink Database", + Default: "Default", + headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", + bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", + "HTTP Options": "HTTP Options", + "Create Incident": "Create Incident", + "Switch to Light Theme": "Switch to Light Theme", + "Switch to Dark Theme": "Switch to Dark Theme", + "Show Tags": "Show Tags", + "Hide Tags": "Hide Tags", + Description: "Description", + "No monitors available.": "No monitors available.", + "Add one": "Add one", + "No Monitors": "No Monitors", + "Untitled Group": "Untitled Group", + Services: "Services", + Discard: "Discard", + Cancel: "Cancel", }; diff --git a/src/languages/fr-FR.js b/src/languages/fr-FR.js index 92083a387..afc55489d 100644 --- a/src/languages/fr-FR.js +++ b/src/languages/fr-FR.js @@ -304,4 +304,26 @@ export default { steamApiKeyDescription: "Pour surveiller un serveur Steam, vous avez besoin d'une clé Steam Web-API. Vous pouvez enregistrer votre clé ici: ", "Current User": "Utilisateur actuel", recent: "Récent", + "Push URL": "Push URL", + needPushEvery: "You should call this URL every {0} seconds.", + pushOptionalParams: "Optional parameters: {0}", + "Shrink Database": "Shrink Database", + Default: "Default", + headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", + bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", + "HTTP Options": "HTTP Options", + "Create Incident": "Create Incident", + "Switch to Light Theme": "Switch to Light Theme", + "Switch to Dark Theme": "Switch to Dark Theme", + "Show Tags": "Show Tags", + "Hide Tags": "Hide Tags", + Description: "Description", + "No monitors available.": "No monitors available.", + "Add one": "Add one", + "No Monitors": "No Monitors", + "Untitled Group": "Untitled Group", + Services: "Services", + Discard: "Discard", + Cancel: "Cancel", + "Powered by": "Powered by", }; diff --git a/src/languages/hr-HR.js b/src/languages/hr-HR.js index 01674dce8..eb88e6b49 100644 --- a/src/languages/hr-HR.js +++ b/src/languages/hr-HR.js @@ -308,4 +308,23 @@ export default { steamApiKeyDescription: "Za praćenje Steam poslužitelja za igru, potrebno je imati Steam Web-API ključ. Možete registrirati vlastiti ključ ovdje: ", "Current User": "Trenutni korisnik", recent: "Nedavno", + "Shrink Database": "Shrink Database", + Default: "Default", + headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", + bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", + "HTTP Options": "HTTP Options", + "Create Incident": "Create Incident", + "Switch to Light Theme": "Switch to Light Theme", + "Switch to Dark Theme": "Switch to Dark Theme", + "Show Tags": "Show Tags", + "Hide Tags": "Hide Tags", + Description: "Description", + "No monitors available.": "No monitors available.", + "Add one": "Add one", + "No Monitors": "No Monitors", + "Untitled Group": "Untitled Group", + Services: "Services", + Discard: "Discard", + Cancel: "Cancel", + "Powered by": "Powered by", }; diff --git a/src/languages/hu.js b/src/languages/hu.js index 47ac72d64..5af4fee2c 100644 --- a/src/languages/hu.js +++ b/src/languages/hu.js @@ -197,4 +197,133 @@ export default { line: "Line Messenger", mattermost: "Mattermost", "Status Page": "Status Page", + "Primary Base URL": "Primary Base URL", + "Push URL": "Push URL", + needPushEvery: "You should call this URL every {0} seconds.", + pushOptionalParams: "Optional parameters: {0}", + defaultNotificationName: "My {notification} Alert ({number})", + here: "here", + Required: "Required", + "Bot Token": "Bot Token", + wayToGetTelegramToken: "You can get a token from {0}.", + "Chat ID": "Chat ID", + supportTelegramChatID: "Support Direct Chat / Group / Channel's Chat ID", + wayToGetTelegramChatID: "You can get your chat ID by sending a message to the bot and going to this URL to view the chat_id:", + "YOUR BOT TOKEN HERE": "YOUR BOT TOKEN HERE", + chatIDNotFound: "Chat ID is not found; please send a message to this bot first", + "Post URL": "Post URL", + "Content Type": "Content Type", + webhookJsonDesc: "{0} is good for any modern HTTP servers such as Express.js", + webhookFormDataDesc: "{multipart} is good for PHP. The JSON will need to be parsed with {decodeFunction}", + secureOptionNone: "None / STARTTLS (25, 587)", + secureOptionTLS: "TLS (465)", + "Ignore TLS Error": "Ignore TLS Error", + "From Email": "From Email", + emailCustomSubject: "Custom Subject", + "To Email": "To Email", + smtpCC: "CC", + smtpBCC: "BCC", + "Discord Webhook URL": "Discord Webhook URL", + wayToGetDiscordURL: "You can get this by going to Server Settings -> Integrations -> Create Webhook", + "Bot Display Name": "Bot Display Name", + "Prefix Custom Message": "Prefix Custom Message", + "Hello @everyone is...": "Hello {'@'}everyone is...", + "Webhook URL": "Webhook URL", + wayToGetTeamsURL: "You can learn how to create a webhook URL {0}.", + Number: "Number", + Recipients: "Recipients", + needSignalAPI: "You need to have a signal client with REST API.", + wayToCheckSignalURL: "You can check this URL to view how to set one up:", + signalImportant: "IMPORTANT: You cannot mix groups and numbers in recipients!", + "Application Token": "Application Token", + "Server URL": "Server URL", + Priority: "Priority", + "Icon Emoji": "Icon Emoji", + "Channel Name": "Channel Name", + "Uptime Kuma URL": "Uptime Kuma URL", + aboutWebhooks: "More info about Webhooks on: {0}", + aboutChannelName: "Enter the channel name on {0} Channel Name field if you want to bypass the Webhook channel. Ex: #other-channel", + aboutKumaURL: "If you leave the Uptime Kuma URL field blank, it will default to the Project GitHub page.", + emojiCheatSheet: "Emoji cheat sheet: {0}", + clicksendsms: "ClickSend SMS", + "User Key": "User Key", + Device: "Device", + "Message Title": "Message Title", + "Notification Sound": "Notification Sound", + "More info on:": "More info on: {0}", + pushoverDesc1: "Emergency priority (2) has default 30 second timeout between retries and will expire after 1 hour.", + pushoverDesc2: "If you want to send notifications to different devices, fill out Device field.", + "SMS Type": "SMS Type", + octopushTypePremium: "Premium (Fast - recommended for alerting)", + octopushTypeLowCost: "Low Cost (Slow - sometimes blocked by operator)", + checkPrice: "Check {0} prices:", + apiCredentials: "API credentials", + octopushLegacyHint: "Do you use the legacy version of Octopush (2011-2020) or the new version?", + "Check octopush prices": "Check octopush prices {0}.", + octopushPhoneNumber: "Phone number (intl format, eg : +33612345678) ", + octopushSMSSender: "SMS Sender Name : 3-11 alphanumeric characters and space (a-zA-Z0-9)", + "LunaSea Device ID": "LunaSea Device ID", + "Apprise URL": "Apprise URL", + "Example:": "Example: {0}", + "Read more:": "Read more: {0}", + "Status:": "Status: {0}", + "Read more": "Read more", + appriseInstalled: "Apprise is installed.", + appriseNotInstalled: "Apprise is not installed. {0}", + "Access Token": "Access Token", + "Channel access token": "Channel access token", + "Line Developers Console": "Line Developers Console", + lineDevConsoleTo: "Line Developers Console - {0}", + "Basic Settings": "Basic Settings", + "User ID": "User ID", + "Messaging API": "Messaging API", + wayToGetLineChannelToken: "First access the {0}, create a provider and channel (Messaging API), then you can get the channel access token and user ID from the above mentioned menu items.", + "Icon URL": "Icon URL", + aboutIconURL: "You can provide a link to a picture in \"Icon URL\" to override the default profile picture. Will not be used if Icon Emoji is set.", + aboutMattermostChannelName: "You can override the default channel that the Webhook posts to by entering the channel name into \"Channel Name\" field. This needs to be enabled in the Mattermost Webhook settings. Ex: #other-channel", + matrix: "Matrix", + promosmsTypeEco: "SMS ECO - cheap but slow and often overloaded. Limited only to Polish recipients.", + promosmsTypeFlash: "SMS FLASH - Message will automatically show on recipient device. Limited only to Polish recipients.", + promosmsTypeFull: "SMS FULL - Premium tier of SMS, You can use your Sender Name (You need to register name first). Reliable for alerts.", + promosmsTypeSpeed: "SMS SPEED - Highest priority in system. Very quick and reliable but costly (about twice of SMS FULL price).", + promosmsPhoneNumber: "Phone number (for Polish recipient You can skip area codes)", + promosmsSMSSender: "SMS Sender Name : Pre-registred name or one of defaults: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "Feishu WebHookURL", + matrixHomeserverURL: "Homeserver URL (with http(s):// and optionally port)", + "Internal Room Id": "Internal Room ID", + matrixDesc1: "You can find the internal room ID by looking in the advanced section of the room settings in your Matrix client. It should look like !QMdRCpUIfLwsfjxye6:home.server.", + matrixDesc2: "It is highly recommended you create a new user and do not use your own Matrix user's access token as it will allow full access to your account and all the rooms you joined. Instead, create a new user and only invite it to the room that you want to receive the notification in. You can get the access token by running {0}", + Method: "Method", + Body: "Body", + Headers: "Headers", + PushUrl: "Push URL", + HeadersInvalidFormat: "The request headers are not valid JSON: ", + BodyInvalidFormat: "The request body is not valid JSON: ", + "Monitor History": "Monitor History", + clearDataOlderThan: "Keep monitor history data for {0} days.", + PasswordsDoNotMatch: "Passwords do not match.", + records: "records", + "One record": "One record", + steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", + "Current User": "Current User", + recent: "Recent", + "Shrink Database": "Shrink Database", + Default: "Default", + headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", + bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", + "HTTP Options": "HTTP Options", + "Create Incident": "Create Incident", + "Switch to Light Theme": "Switch to Light Theme", + "Switch to Dark Theme": "Switch to Dark Theme", + "Show Tags": "Show Tags", + "Hide Tags": "Hide Tags", + Description: "Description", + "No monitors available.": "No monitors available.", + "Add one": "Add one", + "No Monitors": "No Monitors", + "Untitled Group": "Untitled Group", + Services: "Services", + Discard: "Discard", + Cancel: "Cancel", + "Powered by": "Powered by", }; diff --git a/src/languages/id-ID.js b/src/languages/id-ID.js index 5bad2a7e5..cf7abcb62 100644 --- a/src/languages/id-ID.js +++ b/src/languages/id-ID.js @@ -280,4 +280,51 @@ export default { promosmsPhoneNumber: "Nomor telepon (untuk penerima Polandia Anda dapat melewati kode area)", promosmsSMSSender: "Nama Pengirim SMS : Nama pra-registrasi atau salah satu bawaan: InfoSMS, Info SMS, MaxSMS, INFO, SMS", "Feishu WebHookUrl": "Feishu WebHookUrl", + "Primary Base URL": "Primary Base URL", + "Push URL": "Push URL", + needPushEvery: "You should call this URL every {0} seconds.", + pushOptionalParams: "Optional parameters: {0}", + wayToGetTelegramToken: "You can get a token from {0}.", + emailCustomSubject: "Custom Subject", + clicksendsms: "ClickSend SMS", + checkPrice: "Check {0} prices:", + apiCredentials: "API credentials", + octopushLegacyHint: "Do you use the legacy version of Octopush (2011-2020) or the new version?", + matrixHomeserverURL: "Homeserver URL (with http(s):// and optionally port)", + "Internal Room Id": "Internal Room ID", + matrixDesc1: "You can find the internal room ID by looking in the advanced section of the room settings in your Matrix client. It should look like !QMdRCpUIfLwsfjxye6:home.server.", + matrixDesc2: "It is highly recommended you create a new user and do not use your own Matrix user's access token as it will allow full access to your account and all the rooms you joined. Instead, create a new user and only invite it to the room that you want to receive the notification in. You can get the access token by running {0}", + Method: "Method", + Body: "Body", + Headers: "Headers", + PushUrl: "Push URL", + HeadersInvalidFormat: "The request headers are not valid JSON: ", + BodyInvalidFormat: "The request body is not valid JSON: ", + "Monitor History": "Monitor History", + clearDataOlderThan: "Keep monitor history data for {0} days.", + PasswordsDoNotMatch: "Passwords do not match.", + records: "records", + "One record": "One record", + steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", + "Current User": "Current User", + recent: "Recent", + "Shrink Database": "Shrink Database", + Default: "Default", + headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", + bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", + "HTTP Options": "HTTP Options", + "Create Incident": "Create Incident", + "Switch to Light Theme": "Switch to Light Theme", + "Switch to Dark Theme": "Switch to Dark Theme", + "Show Tags": "Show Tags", + "Hide Tags": "Hide Tags", + Description: "Description", + "No monitors available.": "No monitors available.", + "Add one": "Add one", + "No Monitors": "No Monitors", + "Untitled Group": "Untitled Group", + Services: "Services", + Discard: "Discard", + Cancel: "Cancel", + "Powered by": "Powered by", }; diff --git a/src/languages/it-IT.js b/src/languages/it-IT.js index 5ddc414f7..01fc59372 100644 --- a/src/languages/it-IT.js +++ b/src/languages/it-IT.js @@ -197,4 +197,133 @@ export default { pushbullet: "Pushbullet", line: "Line Messenger", mattermost: "Mattermost", + "Primary Base URL": "Primary Base URL", + "Push URL": "Push URL", + needPushEvery: "You should call this URL every {0} seconds.", + pushOptionalParams: "Optional parameters: {0}", + defaultNotificationName: "My {notification} Alert ({number})", + here: "here", + Required: "Required", + "Bot Token": "Bot Token", + wayToGetTelegramToken: "You can get a token from {0}.", + "Chat ID": "Chat ID", + supportTelegramChatID: "Support Direct Chat / Group / Channel's Chat ID", + wayToGetTelegramChatID: "You can get your chat ID by sending a message to the bot and going to this URL to view the chat_id:", + "YOUR BOT TOKEN HERE": "YOUR BOT TOKEN HERE", + chatIDNotFound: "Chat ID is not found; please send a message to this bot first", + "Post URL": "Post URL", + "Content Type": "Content Type", + webhookJsonDesc: "{0} is good for any modern HTTP servers such as Express.js", + webhookFormDataDesc: "{multipart} is good for PHP. The JSON will need to be parsed with {decodeFunction}", + secureOptionNone: "None / STARTTLS (25, 587)", + secureOptionTLS: "TLS (465)", + "Ignore TLS Error": "Ignore TLS Error", + "From Email": "From Email", + emailCustomSubject: "Custom Subject", + "To Email": "To Email", + smtpCC: "CC", + smtpBCC: "BCC", + "Discord Webhook URL": "Discord Webhook URL", + wayToGetDiscordURL: "You can get this by going to Server Settings -> Integrations -> Create Webhook", + "Bot Display Name": "Bot Display Name", + "Prefix Custom Message": "Prefix Custom Message", + "Hello @everyone is...": "Hello {'@'}everyone is...", + "Webhook URL": "Webhook URL", + wayToGetTeamsURL: "You can learn how to create a webhook URL {0}.", + Number: "Number", + Recipients: "Recipients", + needSignalAPI: "You need to have a signal client with REST API.", + wayToCheckSignalURL: "You can check this URL to view how to set one up:", + signalImportant: "IMPORTANT: You cannot mix groups and numbers in recipients!", + "Application Token": "Application Token", + "Server URL": "Server URL", + Priority: "Priority", + "Icon Emoji": "Icon Emoji", + "Channel Name": "Channel Name", + "Uptime Kuma URL": "Uptime Kuma URL", + aboutWebhooks: "More info about Webhooks on: {0}", + aboutChannelName: "Enter the channel name on {0} Channel Name field if you want to bypass the Webhook channel. Ex: #other-channel", + aboutKumaURL: "If you leave the Uptime Kuma URL field blank, it will default to the Project GitHub page.", + emojiCheatSheet: "Emoji cheat sheet: {0}", + clicksendsms: "ClickSend SMS", + "User Key": "User Key", + Device: "Device", + "Message Title": "Message Title", + "Notification Sound": "Notification Sound", + "More info on:": "More info on: {0}", + pushoverDesc1: "Emergency priority (2) has default 30 second timeout between retries and will expire after 1 hour.", + pushoverDesc2: "If you want to send notifications to different devices, fill out Device field.", + "SMS Type": "SMS Type", + octopushTypePremium: "Premium (Fast - recommended for alerting)", + octopushTypeLowCost: "Low Cost (Slow - sometimes blocked by operator)", + checkPrice: "Check {0} prices:", + apiCredentials: "API credentials", + octopushLegacyHint: "Do you use the legacy version of Octopush (2011-2020) or the new version?", + "Check octopush prices": "Check octopush prices {0}.", + octopushPhoneNumber: "Phone number (intl format, eg : +33612345678) ", + octopushSMSSender: "SMS Sender Name : 3-11 alphanumeric characters and space (a-zA-Z0-9)", + "LunaSea Device ID": "LunaSea Device ID", + "Apprise URL": "Apprise URL", + "Example:": "Example: {0}", + "Read more:": "Read more: {0}", + "Status:": "Status: {0}", + "Read more": "Read more", + appriseInstalled: "Apprise is installed.", + appriseNotInstalled: "Apprise is not installed. {0}", + "Access Token": "Access Token", + "Channel access token": "Channel access token", + "Line Developers Console": "Line Developers Console", + lineDevConsoleTo: "Line Developers Console - {0}", + "Basic Settings": "Basic Settings", + "User ID": "User ID", + "Messaging API": "Messaging API", + wayToGetLineChannelToken: "First access the {0}, create a provider and channel (Messaging API), then you can get the channel access token and user ID from the above mentioned menu items.", + "Icon URL": "Icon URL", + aboutIconURL: "You can provide a link to a picture in \"Icon URL\" to override the default profile picture. Will not be used if Icon Emoji is set.", + aboutMattermostChannelName: "You can override the default channel that the Webhook posts to by entering the channel name into \"Channel Name\" field. This needs to be enabled in the Mattermost Webhook settings. Ex: #other-channel", + matrix: "Matrix", + promosmsTypeEco: "SMS ECO - cheap but slow and often overloaded. Limited only to Polish recipients.", + promosmsTypeFlash: "SMS FLASH - Message will automatically show on recipient device. Limited only to Polish recipients.", + promosmsTypeFull: "SMS FULL - Premium tier of SMS, You can use your Sender Name (You need to register name first). Reliable for alerts.", + promosmsTypeSpeed: "SMS SPEED - Highest priority in system. Very quick and reliable but costly (about twice of SMS FULL price).", + promosmsPhoneNumber: "Phone number (for Polish recipient You can skip area codes)", + promosmsSMSSender: "SMS Sender Name : Pre-registred name or one of defaults: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "Feishu WebHookURL", + matrixHomeserverURL: "Homeserver URL (with http(s):// and optionally port)", + "Internal Room Id": "Internal Room ID", + matrixDesc1: "You can find the internal room ID by looking in the advanced section of the room settings in your Matrix client. It should look like !QMdRCpUIfLwsfjxye6:home.server.", + matrixDesc2: "It is highly recommended you create a new user and do not use your own Matrix user's access token as it will allow full access to your account and all the rooms you joined. Instead, create a new user and only invite it to the room that you want to receive the notification in. You can get the access token by running {0}", + Method: "Method", + Body: "Body", + Headers: "Headers", + PushUrl: "Push URL", + HeadersInvalidFormat: "The request headers are not valid JSON: ", + BodyInvalidFormat: "The request body is not valid JSON: ", + "Monitor History": "Monitor History", + clearDataOlderThan: "Keep monitor history data for {0} days.", + PasswordsDoNotMatch: "Passwords do not match.", + records: "records", + "One record": "One record", + steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", + "Current User": "Current User", + recent: "Recent", + "Shrink Database": "Shrink Database", + Default: "Default", + headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", + bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", + "HTTP Options": "HTTP Options", + "Create Incident": "Create Incident", + "Switch to Light Theme": "Switch to Light Theme", + "Switch to Dark Theme": "Switch to Dark Theme", + "Show Tags": "Show Tags", + "Hide Tags": "Hide Tags", + Description: "Description", + "No monitors available.": "No monitors available.", + "Add one": "Add one", + "No Monitors": "No Monitors", + "Untitled Group": "Untitled Group", + Services: "Services", + Discard: "Discard", + Cancel: "Cancel", + "Powered by": "Powered by", }; diff --git a/src/languages/ja.js b/src/languages/ja.js index f96028e42..c0bf4a6bd 100644 --- a/src/languages/ja.js +++ b/src/languages/ja.js @@ -198,4 +198,133 @@ export default { pushbullet: "Pushbullet", line: "Line Messenger", mattermost: "Mattermost", + "Primary Base URL": "Primary Base URL", + "Push URL": "Push URL", + needPushEvery: "You should call this URL every {0} seconds.", + pushOptionalParams: "Optional parameters: {0}", + defaultNotificationName: "My {notification} Alert ({number})", + here: "here", + Required: "Required", + "Bot Token": "Bot Token", + wayToGetTelegramToken: "You can get a token from {0}.", + "Chat ID": "Chat ID", + supportTelegramChatID: "Support Direct Chat / Group / Channel's Chat ID", + wayToGetTelegramChatID: "You can get your chat ID by sending a message to the bot and going to this URL to view the chat_id:", + "YOUR BOT TOKEN HERE": "YOUR BOT TOKEN HERE", + chatIDNotFound: "Chat ID is not found; please send a message to this bot first", + "Post URL": "Post URL", + "Content Type": "Content Type", + webhookJsonDesc: "{0} is good for any modern HTTP servers such as Express.js", + webhookFormDataDesc: "{multipart} is good for PHP. The JSON will need to be parsed with {decodeFunction}", + secureOptionNone: "None / STARTTLS (25, 587)", + secureOptionTLS: "TLS (465)", + "Ignore TLS Error": "Ignore TLS Error", + "From Email": "From Email", + emailCustomSubject: "Custom Subject", + "To Email": "To Email", + smtpCC: "CC", + smtpBCC: "BCC", + "Discord Webhook URL": "Discord Webhook URL", + wayToGetDiscordURL: "You can get this by going to Server Settings -> Integrations -> Create Webhook", + "Bot Display Name": "Bot Display Name", + "Prefix Custom Message": "Prefix Custom Message", + "Hello @everyone is...": "Hello {'@'}everyone is...", + "Webhook URL": "Webhook URL", + wayToGetTeamsURL: "You can learn how to create a webhook URL {0}.", + Number: "Number", + Recipients: "Recipients", + needSignalAPI: "You need to have a signal client with REST API.", + wayToCheckSignalURL: "You can check this URL to view how to set one up:", + signalImportant: "IMPORTANT: You cannot mix groups and numbers in recipients!", + "Application Token": "Application Token", + "Server URL": "Server URL", + Priority: "Priority", + "Icon Emoji": "Icon Emoji", + "Channel Name": "Channel Name", + "Uptime Kuma URL": "Uptime Kuma URL", + aboutWebhooks: "More info about Webhooks on: {0}", + aboutChannelName: "Enter the channel name on {0} Channel Name field if you want to bypass the Webhook channel. Ex: #other-channel", + aboutKumaURL: "If you leave the Uptime Kuma URL field blank, it will default to the Project GitHub page.", + emojiCheatSheet: "Emoji cheat sheet: {0}", + clicksendsms: "ClickSend SMS", + "User Key": "User Key", + Device: "Device", + "Message Title": "Message Title", + "Notification Sound": "Notification Sound", + "More info on:": "More info on: {0}", + pushoverDesc1: "Emergency priority (2) has default 30 second timeout between retries and will expire after 1 hour.", + pushoverDesc2: "If you want to send notifications to different devices, fill out Device field.", + "SMS Type": "SMS Type", + octopushTypePremium: "Premium (Fast - recommended for alerting)", + octopushTypeLowCost: "Low Cost (Slow - sometimes blocked by operator)", + checkPrice: "Check {0} prices:", + apiCredentials: "API credentials", + octopushLegacyHint: "Do you use the legacy version of Octopush (2011-2020) or the new version?", + "Check octopush prices": "Check octopush prices {0}.", + octopushPhoneNumber: "Phone number (intl format, eg : +33612345678) ", + octopushSMSSender: "SMS Sender Name : 3-11 alphanumeric characters and space (a-zA-Z0-9)", + "LunaSea Device ID": "LunaSea Device ID", + "Apprise URL": "Apprise URL", + "Example:": "Example: {0}", + "Read more:": "Read more: {0}", + "Status:": "Status: {0}", + "Read more": "Read more", + appriseInstalled: "Apprise is installed.", + appriseNotInstalled: "Apprise is not installed. {0}", + "Access Token": "Access Token", + "Channel access token": "Channel access token", + "Line Developers Console": "Line Developers Console", + lineDevConsoleTo: "Line Developers Console - {0}", + "Basic Settings": "Basic Settings", + "User ID": "User ID", + "Messaging API": "Messaging API", + wayToGetLineChannelToken: "First access the {0}, create a provider and channel (Messaging API), then you can get the channel access token and user ID from the above mentioned menu items.", + "Icon URL": "Icon URL", + aboutIconURL: "You can provide a link to a picture in \"Icon URL\" to override the default profile picture. Will not be used if Icon Emoji is set.", + aboutMattermostChannelName: "You can override the default channel that the Webhook posts to by entering the channel name into \"Channel Name\" field. This needs to be enabled in the Mattermost Webhook settings. Ex: #other-channel", + matrix: "Matrix", + promosmsTypeEco: "SMS ECO - cheap but slow and often overloaded. Limited only to Polish recipients.", + promosmsTypeFlash: "SMS FLASH - Message will automatically show on recipient device. Limited only to Polish recipients.", + promosmsTypeFull: "SMS FULL - Premium tier of SMS, You can use your Sender Name (You need to register name first). Reliable for alerts.", + promosmsTypeSpeed: "SMS SPEED - Highest priority in system. Very quick and reliable but costly (about twice of SMS FULL price).", + promosmsPhoneNumber: "Phone number (for Polish recipient You can skip area codes)", + promosmsSMSSender: "SMS Sender Name : Pre-registred name or one of defaults: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "Feishu WebHookURL", + matrixHomeserverURL: "Homeserver URL (with http(s):// and optionally port)", + "Internal Room Id": "Internal Room ID", + matrixDesc1: "You can find the internal room ID by looking in the advanced section of the room settings in your Matrix client. It should look like !QMdRCpUIfLwsfjxye6:home.server.", + matrixDesc2: "It is highly recommended you create a new user and do not use your own Matrix user's access token as it will allow full access to your account and all the rooms you joined. Instead, create a new user and only invite it to the room that you want to receive the notification in. You can get the access token by running {0}", + Method: "Method", + Body: "Body", + Headers: "Headers", + PushUrl: "Push URL", + HeadersInvalidFormat: "The request headers are not valid JSON: ", + BodyInvalidFormat: "The request body is not valid JSON: ", + "Monitor History": "Monitor History", + clearDataOlderThan: "Keep monitor history data for {0} days.", + PasswordsDoNotMatch: "Passwords do not match.", + records: "records", + "One record": "One record", + steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", + "Current User": "Current User", + recent: "Recent", + "Shrink Database": "Shrink Database", + Default: "Default", + headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", + bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", + "HTTP Options": "HTTP Options", + "Create Incident": "Create Incident", + "Switch to Light Theme": "Switch to Light Theme", + "Switch to Dark Theme": "Switch to Dark Theme", + "Show Tags": "Show Tags", + "Hide Tags": "Hide Tags", + Description: "Description", + "No monitors available.": "No monitors available.", + "Add one": "Add one", + "No Monitors": "No Monitors", + "Untitled Group": "Untitled Group", + Services: "Services", + Discard: "Discard", + Cancel: "Cancel", + "Powered by": "Powered by", }; diff --git a/src/languages/ko-KR.js b/src/languages/ko-KR.js index ad7b4337a..457a41bf0 100644 --- a/src/languages/ko-KR.js +++ b/src/languages/ko-KR.js @@ -279,4 +279,51 @@ export default { promosmsTypeSpeed: "SMS SPEED - 시스템에서 가장 높은 우선순위예요. 매우 빠르고 신뢰할 수 있지만 비용이 많이 들어요 (SMS 전체 가격의 약 두 배).", promosmsPhoneNumber: "전화 번호 (폴란드 수신자라면 지역번호를 적지 않아도 돼요.)", promosmsSMSSender: "SMS 보내는 사람 이름 : 미리 등록된 이름 혹은 기본값 중 하나예요: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Primary Base URL": "Primary Base URL", + "Push URL": "Push URL", + needPushEvery: "You should call this URL every {0} seconds.", + pushOptionalParams: "Optional parameters: {0}", + emailCustomSubject: "Custom Subject", + clicksendsms: "ClickSend SMS", + checkPrice: "Check {0} prices:", + apiCredentials: "API credentials", + octopushLegacyHint: "Do you use the legacy version of Octopush (2011-2020) or the new version?", + "Feishu WebHookUrl": "Feishu WebHookURL", + matrixHomeserverURL: "Homeserver URL (with http(s):// and optionally port)", + "Internal Room Id": "Internal Room ID", + matrixDesc1: "You can find the internal room ID by looking in the advanced section of the room settings in your Matrix client. It should look like !QMdRCpUIfLwsfjxye6:home.server.", + matrixDesc2: "It is highly recommended you create a new user and do not use your own Matrix user's access token as it will allow full access to your account and all the rooms you joined. Instead, create a new user and only invite it to the room that you want to receive the notification in. You can get the access token by running {0}", + Method: "Method", + Body: "Body", + Headers: "Headers", + PushUrl: "Push URL", + HeadersInvalidFormat: "The request headers are not valid JSON: ", + BodyInvalidFormat: "The request body is not valid JSON: ", + "Monitor History": "Monitor History", + clearDataOlderThan: "Keep monitor history data for {0} days.", + PasswordsDoNotMatch: "Passwords do not match.", + records: "records", + "One record": "One record", + steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", + "Current User": "Current User", + recent: "Recent", + "Shrink Database": "Shrink Database", + Default: "Default", + headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", + bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", + "HTTP Options": "HTTP Options", + "Create Incident": "Create Incident", + "Switch to Light Theme": "Switch to Light Theme", + "Switch to Dark Theme": "Switch to Dark Theme", + "Show Tags": "Show Tags", + "Hide Tags": "Hide Tags", + Description: "Description", + "No monitors available.": "No monitors available.", + "Add one": "Add one", + "No Monitors": "No Monitors", + "Untitled Group": "Untitled Group", + Services: "Services", + Discard: "Discard", + Cancel: "Cancel", + "Powered by": "Powered by", }; diff --git a/src/languages/nb-NO.js b/src/languages/nb-NO.js index 0e566a01c..5c375d978 100644 --- a/src/languages/nb-NO.js +++ b/src/languages/nb-NO.js @@ -279,4 +279,51 @@ export default { promosmsTypeSpeed: "SMS SPEED - Highest priority in system. Very quick and reliable but costly (about twice of SMS FULL price).", promosmsPhoneNumber: "Phone number (for Polish recipient You can skip area codes)", promosmsSMSSender: "SMS Sender Name : Pre-registred name or one of defaults: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Primary Base URL": "Primary Base URL", + "Push URL": "Push URL", + needPushEvery: "You should call this URL every {0} seconds.", + pushOptionalParams: "Optional parameters: {0}", + emailCustomSubject: "Custom Subject", + clicksendsms: "ClickSend SMS", + checkPrice: "Check {0} prices:", + apiCredentials: "API credentials", + octopushLegacyHint: "Do you use the legacy version of Octopush (2011-2020) or the new version?", + "Feishu WebHookUrl": "Feishu WebHookURL", + matrixHomeserverURL: "Homeserver URL (with http(s):// and optionally port)", + "Internal Room Id": "Internal Room ID", + matrixDesc1: "You can find the internal room ID by looking in the advanced section of the room settings in your Matrix client. It should look like !QMdRCpUIfLwsfjxye6:home.server.", + matrixDesc2: "It is highly recommended you create a new user and do not use your own Matrix user's access token as it will allow full access to your account and all the rooms you joined. Instead, create a new user and only invite it to the room that you want to receive the notification in. You can get the access token by running {0}", + Method: "Method", + Body: "Body", + Headers: "Headers", + PushUrl: "Push URL", + HeadersInvalidFormat: "The request headers are not valid JSON: ", + BodyInvalidFormat: "The request body is not valid JSON: ", + "Monitor History": "Monitor History", + clearDataOlderThan: "Keep monitor history data for {0} days.", + PasswordsDoNotMatch: "Passwords do not match.", + records: "records", + "One record": "One record", + steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", + "Current User": "Current User", + recent: "Recent", + "Shrink Database": "Shrink Database", + Default: "Default", + headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", + bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", + "HTTP Options": "HTTP Options", + "Create Incident": "Create Incident", + "Switch to Light Theme": "Switch to Light Theme", + "Switch to Dark Theme": "Switch to Dark Theme", + "Show Tags": "Show Tags", + "Hide Tags": "Hide Tags", + Description: "Description", + "No monitors available.": "No monitors available.", + "Add one": "Add one", + "No Monitors": "No Monitors", + "Untitled Group": "Untitled Group", + Services: "Services", + Discard: "Discard", + Cancel: "Cancel", + "Powered by": "Powered by", }; diff --git a/src/languages/nl-NL.js b/src/languages/nl-NL.js index ff18832d7..1a684250b 100644 --- a/src/languages/nl-NL.js +++ b/src/languages/nl-NL.js @@ -204,4 +204,127 @@ export default { PushUrl: "Push URL", HeadersInvalidFormat: "The request headers is geen geldige JSON: ", BodyInvalidFormat: "De request body is geen geldige JSON: ", + "Primary Base URL": "Primary Base URL", + "Push URL": "Push URL", + needPushEvery: "You should call this URL every {0} seconds.", + pushOptionalParams: "Optional parameters: {0}", + defaultNotificationName: "My {notification} Alert ({number})", + here: "here", + Required: "Required", + "Bot Token": "Bot Token", + wayToGetTelegramToken: "You can get a token from {0}.", + "Chat ID": "Chat ID", + supportTelegramChatID: "Support Direct Chat / Group / Channel's Chat ID", + wayToGetTelegramChatID: "You can get your chat ID by sending a message to the bot and going to this URL to view the chat_id:", + "YOUR BOT TOKEN HERE": "YOUR BOT TOKEN HERE", + chatIDNotFound: "Chat ID is not found; please send a message to this bot first", + "Post URL": "Post URL", + "Content Type": "Content Type", + webhookJsonDesc: "{0} is good for any modern HTTP servers such as Express.js", + webhookFormDataDesc: "{multipart} is good for PHP. The JSON will need to be parsed with {decodeFunction}", + secureOptionNone: "None / STARTTLS (25, 587)", + secureOptionTLS: "TLS (465)", + "Ignore TLS Error": "Ignore TLS Error", + "From Email": "From Email", + emailCustomSubject: "Custom Subject", + "To Email": "To Email", + smtpCC: "CC", + smtpBCC: "BCC", + "Discord Webhook URL": "Discord Webhook URL", + wayToGetDiscordURL: "You can get this by going to Server Settings -> Integrations -> Create Webhook", + "Bot Display Name": "Bot Display Name", + "Prefix Custom Message": "Prefix Custom Message", + "Hello @everyone is...": "Hello {'@'}everyone is...", + "Webhook URL": "Webhook URL", + wayToGetTeamsURL: "You can learn how to create a webhook URL {0}.", + Number: "Number", + Recipients: "Recipients", + needSignalAPI: "You need to have a signal client with REST API.", + wayToCheckSignalURL: "You can check this URL to view how to set one up:", + signalImportant: "IMPORTANT: You cannot mix groups and numbers in recipients!", + "Application Token": "Application Token", + "Server URL": "Server URL", + Priority: "Priority", + "Icon Emoji": "Icon Emoji", + "Channel Name": "Channel Name", + "Uptime Kuma URL": "Uptime Kuma URL", + aboutWebhooks: "More info about Webhooks on: {0}", + aboutChannelName: "Enter the channel name on {0} Channel Name field if you want to bypass the Webhook channel. Ex: #other-channel", + aboutKumaURL: "If you leave the Uptime Kuma URL field blank, it will default to the Project GitHub page.", + emojiCheatSheet: "Emoji cheat sheet: {0}", + clicksendsms: "ClickSend SMS", + "User Key": "User Key", + Device: "Device", + "Message Title": "Message Title", + "Notification Sound": "Notification Sound", + "More info on:": "More info on: {0}", + pushoverDesc1: "Emergency priority (2) has default 30 second timeout between retries and will expire after 1 hour.", + pushoverDesc2: "If you want to send notifications to different devices, fill out Device field.", + "SMS Type": "SMS Type", + octopushTypePremium: "Premium (Fast - recommended for alerting)", + octopushTypeLowCost: "Low Cost (Slow - sometimes blocked by operator)", + checkPrice: "Check {0} prices:", + apiCredentials: "API credentials", + octopushLegacyHint: "Do you use the legacy version of Octopush (2011-2020) or the new version?", + "Check octopush prices": "Check octopush prices {0}.", + octopushPhoneNumber: "Phone number (intl format, eg : +33612345678) ", + octopushSMSSender: "SMS Sender Name : 3-11 alphanumeric characters and space (a-zA-Z0-9)", + "LunaSea Device ID": "LunaSea Device ID", + "Apprise URL": "Apprise URL", + "Example:": "Example: {0}", + "Read more:": "Read more: {0}", + "Status:": "Status: {0}", + "Read more": "Read more", + appriseInstalled: "Apprise is installed.", + appriseNotInstalled: "Apprise is not installed. {0}", + "Access Token": "Access Token", + "Channel access token": "Channel access token", + "Line Developers Console": "Line Developers Console", + lineDevConsoleTo: "Line Developers Console - {0}", + "Basic Settings": "Basic Settings", + "User ID": "User ID", + "Messaging API": "Messaging API", + wayToGetLineChannelToken: "First access the {0}, create a provider and channel (Messaging API), then you can get the channel access token and user ID from the above mentioned menu items.", + "Icon URL": "Icon URL", + aboutIconURL: "You can provide a link to a picture in \"Icon URL\" to override the default profile picture. Will not be used if Icon Emoji is set.", + aboutMattermostChannelName: "You can override the default channel that the Webhook posts to by entering the channel name into \"Channel Name\" field. This needs to be enabled in the Mattermost Webhook settings. Ex: #other-channel", + matrix: "Matrix", + promosmsTypeEco: "SMS ECO - cheap but slow and often overloaded. Limited only to Polish recipients.", + promosmsTypeFlash: "SMS FLASH - Message will automatically show on recipient device. Limited only to Polish recipients.", + promosmsTypeFull: "SMS FULL - Premium tier of SMS, You can use your Sender Name (You need to register name first). Reliable for alerts.", + promosmsTypeSpeed: "SMS SPEED - Highest priority in system. Very quick and reliable but costly (about twice of SMS FULL price).", + promosmsPhoneNumber: "Phone number (for Polish recipient You can skip area codes)", + promosmsSMSSender: "SMS Sender Name : Pre-registred name or one of defaults: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "Feishu WebHookURL", + matrixHomeserverURL: "Homeserver URL (with http(s):// and optionally port)", + "Internal Room Id": "Internal Room ID", + matrixDesc1: "You can find the internal room ID by looking in the advanced section of the room settings in your Matrix client. It should look like !QMdRCpUIfLwsfjxye6:home.server.", + matrixDesc2: "It is highly recommended you create a new user and do not use your own Matrix user's access token as it will allow full access to your account and all the rooms you joined. Instead, create a new user and only invite it to the room that you want to receive the notification in. You can get the access token by running {0}", + "Monitor History": "Monitor History", + clearDataOlderThan: "Keep monitor history data for {0} days.", + PasswordsDoNotMatch: "Passwords do not match.", + records: "records", + "One record": "One record", + steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", + "Current User": "Current User", + recent: "Recent", + "Shrink Database": "Shrink Database", + Default: "Default", + headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", + bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", + "HTTP Options": "HTTP Options", + "Create Incident": "Create Incident", + "Switch to Light Theme": "Switch to Light Theme", + "Switch to Dark Theme": "Switch to Dark Theme", + "Show Tags": "Show Tags", + "Hide Tags": "Hide Tags", + Description: "Description", + "No monitors available.": "No monitors available.", + "Add one": "Add one", + "No Monitors": "No Monitors", + "Untitled Group": "Untitled Group", + Services: "Services", + Discard: "Discard", + Cancel: "Cancel", + "Powered by": "Powered by", }; diff --git a/src/languages/pl.js b/src/languages/pl.js index 082980d3b..fd0b70d67 100644 --- a/src/languages/pl.js +++ b/src/languages/pl.js @@ -307,4 +307,23 @@ export default { recent: "Ostatnie", clicksendsms: "ClickSend SMS", apiCredentials: "Poświadczenia API", + "Shrink Database": "Shrink Database", + Default: "Default", + headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", + bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", + "HTTP Options": "HTTP Options", + "Create Incident": "Create Incident", + "Switch to Light Theme": "Switch to Light Theme", + "Switch to Dark Theme": "Switch to Dark Theme", + "Show Tags": "Show Tags", + "Hide Tags": "Hide Tags", + Description: "Description", + "No monitors available.": "No monitors available.", + "Add one": "Add one", + "No Monitors": "No Monitors", + "Untitled Group": "Untitled Group", + Services: "Services", + Discard: "Discard", + Cancel: "Cancel", + "Powered by": "Powered by", }; diff --git a/src/languages/pt-BR.js b/src/languages/pt-BR.js index 70647fd9f..b2a1a63f0 100644 --- a/src/languages/pt-BR.js +++ b/src/languages/pt-BR.js @@ -197,4 +197,133 @@ export default { pushbullet: "Pushbullet", line: "Line Messenger", mattermost: "Mattermost", + "Primary Base URL": "Primary Base URL", + "Push URL": "Push URL", + needPushEvery: "You should call this URL every {0} seconds.", + pushOptionalParams: "Optional parameters: {0}", + defaultNotificationName: "My {notification} Alert ({number})", + here: "here", + Required: "Required", + "Bot Token": "Bot Token", + wayToGetTelegramToken: "You can get a token from {0}.", + "Chat ID": "Chat ID", + supportTelegramChatID: "Support Direct Chat / Group / Channel's Chat ID", + wayToGetTelegramChatID: "You can get your chat ID by sending a message to the bot and going to this URL to view the chat_id:", + "YOUR BOT TOKEN HERE": "YOUR BOT TOKEN HERE", + chatIDNotFound: "Chat ID is not found; please send a message to this bot first", + "Post URL": "Post URL", + "Content Type": "Content Type", + webhookJsonDesc: "{0} is good for any modern HTTP servers such as Express.js", + webhookFormDataDesc: "{multipart} is good for PHP. The JSON will need to be parsed with {decodeFunction}", + secureOptionNone: "None / STARTTLS (25, 587)", + secureOptionTLS: "TLS (465)", + "Ignore TLS Error": "Ignore TLS Error", + "From Email": "From Email", + emailCustomSubject: "Custom Subject", + "To Email": "To Email", + smtpCC: "CC", + smtpBCC: "BCC", + "Discord Webhook URL": "Discord Webhook URL", + wayToGetDiscordURL: "You can get this by going to Server Settings -> Integrations -> Create Webhook", + "Bot Display Name": "Bot Display Name", + "Prefix Custom Message": "Prefix Custom Message", + "Hello @everyone is...": "Hello {'@'}everyone is...", + "Webhook URL": "Webhook URL", + wayToGetTeamsURL: "You can learn how to create a webhook URL {0}.", + Number: "Number", + Recipients: "Recipients", + needSignalAPI: "You need to have a signal client with REST API.", + wayToCheckSignalURL: "You can check this URL to view how to set one up:", + signalImportant: "IMPORTANT: You cannot mix groups and numbers in recipients!", + "Application Token": "Application Token", + "Server URL": "Server URL", + Priority: "Priority", + "Icon Emoji": "Icon Emoji", + "Channel Name": "Channel Name", + "Uptime Kuma URL": "Uptime Kuma URL", + aboutWebhooks: "More info about Webhooks on: {0}", + aboutChannelName: "Enter the channel name on {0} Channel Name field if you want to bypass the Webhook channel. Ex: #other-channel", + aboutKumaURL: "If you leave the Uptime Kuma URL field blank, it will default to the Project GitHub page.", + emojiCheatSheet: "Emoji cheat sheet: {0}", + clicksendsms: "ClickSend SMS", + "User Key": "User Key", + Device: "Device", + "Message Title": "Message Title", + "Notification Sound": "Notification Sound", + "More info on:": "More info on: {0}", + pushoverDesc1: "Emergency priority (2) has default 30 second timeout between retries and will expire after 1 hour.", + pushoverDesc2: "If you want to send notifications to different devices, fill out Device field.", + "SMS Type": "SMS Type", + octopushTypePremium: "Premium (Fast - recommended for alerting)", + octopushTypeLowCost: "Low Cost (Slow - sometimes blocked by operator)", + checkPrice: "Check {0} prices:", + apiCredentials: "API credentials", + octopushLegacyHint: "Do you use the legacy version of Octopush (2011-2020) or the new version?", + "Check octopush prices": "Check octopush prices {0}.", + octopushPhoneNumber: "Phone number (intl format, eg : +33612345678) ", + octopushSMSSender: "SMS Sender Name : 3-11 alphanumeric characters and space (a-zA-Z0-9)", + "LunaSea Device ID": "LunaSea Device ID", + "Apprise URL": "Apprise URL", + "Example:": "Example: {0}", + "Read more:": "Read more: {0}", + "Status:": "Status: {0}", + "Read more": "Read more", + appriseInstalled: "Apprise is installed.", + appriseNotInstalled: "Apprise is not installed. {0}", + "Access Token": "Access Token", + "Channel access token": "Channel access token", + "Line Developers Console": "Line Developers Console", + lineDevConsoleTo: "Line Developers Console - {0}", + "Basic Settings": "Basic Settings", + "User ID": "User ID", + "Messaging API": "Messaging API", + wayToGetLineChannelToken: "First access the {0}, create a provider and channel (Messaging API), then you can get the channel access token and user ID from the above mentioned menu items.", + "Icon URL": "Icon URL", + aboutIconURL: "You can provide a link to a picture in \"Icon URL\" to override the default profile picture. Will not be used if Icon Emoji is set.", + aboutMattermostChannelName: "You can override the default channel that the Webhook posts to by entering the channel name into \"Channel Name\" field. This needs to be enabled in the Mattermost Webhook settings. Ex: #other-channel", + matrix: "Matrix", + promosmsTypeEco: "SMS ECO - cheap but slow and often overloaded. Limited only to Polish recipients.", + promosmsTypeFlash: "SMS FLASH - Message will automatically show on recipient device. Limited only to Polish recipients.", + promosmsTypeFull: "SMS FULL - Premium tier of SMS, You can use your Sender Name (You need to register name first). Reliable for alerts.", + promosmsTypeSpeed: "SMS SPEED - Highest priority in system. Very quick and reliable but costly (about twice of SMS FULL price).", + promosmsPhoneNumber: "Phone number (for Polish recipient You can skip area codes)", + promosmsSMSSender: "SMS Sender Name : Pre-registred name or one of defaults: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "Feishu WebHookURL", + matrixHomeserverURL: "Homeserver URL (with http(s):// and optionally port)", + "Internal Room Id": "Internal Room ID", + matrixDesc1: "You can find the internal room ID by looking in the advanced section of the room settings in your Matrix client. It should look like !QMdRCpUIfLwsfjxye6:home.server.", + matrixDesc2: "It is highly recommended you create a new user and do not use your own Matrix user's access token as it will allow full access to your account and all the rooms you joined. Instead, create a new user and only invite it to the room that you want to receive the notification in. You can get the access token by running {0}", + Method: "Method", + Body: "Body", + Headers: "Headers", + PushUrl: "Push URL", + HeadersInvalidFormat: "The request headers are not valid JSON: ", + BodyInvalidFormat: "The request body is not valid JSON: ", + "Monitor History": "Monitor History", + clearDataOlderThan: "Keep monitor history data for {0} days.", + PasswordsDoNotMatch: "Passwords do not match.", + records: "records", + "One record": "One record", + steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", + "Current User": "Current User", + recent: "Recent", + "Shrink Database": "Shrink Database", + Default: "Default", + headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", + bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", + "HTTP Options": "HTTP Options", + "Create Incident": "Create Incident", + "Switch to Light Theme": "Switch to Light Theme", + "Switch to Dark Theme": "Switch to Dark Theme", + "Show Tags": "Show Tags", + "Hide Tags": "Hide Tags", + Description: "Description", + "No monitors available.": "No monitors available.", + "Add one": "Add one", + "No Monitors": "No Monitors", + "Untitled Group": "Untitled Group", + Services: "Services", + Discard: "Discard", + Cancel: "Cancel", + "Powered by": "Powered by", }; diff --git a/src/languages/ru-RU.js b/src/languages/ru-RU.js index 83f4de2dc..19e0188cf 100644 --- a/src/languages/ru-RU.js +++ b/src/languages/ru-RU.js @@ -308,4 +308,23 @@ export default { records: "записей", "One record": "Одна запись", steamApiKeyDescription: "Для мониторинга игрового сервера Steam вам необходим Web-API ключ Steam. Зарегистрировать его можно здесь: ", + clicksendsms: "ClickSend SMS", + apiCredentials: "API credentials", + "Current User": "Current User", + recent: "Recent", + "Shrink Database": "Shrink Database", + Default: "Default", + headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", + bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", + "HTTP Options": "HTTP Options", + "Show Tags": "Show Tags", + "Hide Tags": "Hide Tags", + Description: "Description", + "No monitors available.": "No monitors available.", + "Add one": "Add one", + "No Monitors": "No Monitors", + "Untitled Group": "Untitled Group", + Services: "Services", + Cancel: "Cancel", + "Powered by": "Powered by", }; diff --git a/src/languages/sr-latn.js b/src/languages/sr-latn.js index 9e66aa541..786ca460c 100644 --- a/src/languages/sr-latn.js +++ b/src/languages/sr-latn.js @@ -198,4 +198,133 @@ export default { pushbullet: "Pushbullet", line: "Line Messenger", mattermost: "Mattermost", + "Primary Base URL": "Primary Base URL", + "Push URL": "Push URL", + needPushEvery: "You should call this URL every {0} seconds.", + pushOptionalParams: "Optional parameters: {0}", + defaultNotificationName: "My {notification} Alert ({number})", + here: "here", + Required: "Required", + "Bot Token": "Bot Token", + wayToGetTelegramToken: "You can get a token from {0}.", + "Chat ID": "Chat ID", + supportTelegramChatID: "Support Direct Chat / Group / Channel's Chat ID", + wayToGetTelegramChatID: "You can get your chat ID by sending a message to the bot and going to this URL to view the chat_id:", + "YOUR BOT TOKEN HERE": "YOUR BOT TOKEN HERE", + chatIDNotFound: "Chat ID is not found; please send a message to this bot first", + "Post URL": "Post URL", + "Content Type": "Content Type", + webhookJsonDesc: "{0} is good for any modern HTTP servers such as Express.js", + webhookFormDataDesc: "{multipart} is good for PHP. The JSON will need to be parsed with {decodeFunction}", + secureOptionNone: "None / STARTTLS (25, 587)", + secureOptionTLS: "TLS (465)", + "Ignore TLS Error": "Ignore TLS Error", + "From Email": "From Email", + emailCustomSubject: "Custom Subject", + "To Email": "To Email", + smtpCC: "CC", + smtpBCC: "BCC", + "Discord Webhook URL": "Discord Webhook URL", + wayToGetDiscordURL: "You can get this by going to Server Settings -> Integrations -> Create Webhook", + "Bot Display Name": "Bot Display Name", + "Prefix Custom Message": "Prefix Custom Message", + "Hello @everyone is...": "Hello {'@'}everyone is...", + "Webhook URL": "Webhook URL", + wayToGetTeamsURL: "You can learn how to create a webhook URL {0}.", + Number: "Number", + Recipients: "Recipients", + needSignalAPI: "You need to have a signal client with REST API.", + wayToCheckSignalURL: "You can check this URL to view how to set one up:", + signalImportant: "IMPORTANT: You cannot mix groups and numbers in recipients!", + "Application Token": "Application Token", + "Server URL": "Server URL", + Priority: "Priority", + "Icon Emoji": "Icon Emoji", + "Channel Name": "Channel Name", + "Uptime Kuma URL": "Uptime Kuma URL", + aboutWebhooks: "More info about Webhooks on: {0}", + aboutChannelName: "Enter the channel name on {0} Channel Name field if you want to bypass the Webhook channel. Ex: #other-channel", + aboutKumaURL: "If you leave the Uptime Kuma URL field blank, it will default to the Project GitHub page.", + emojiCheatSheet: "Emoji cheat sheet: {0}", + clicksendsms: "ClickSend SMS", + "User Key": "User Key", + Device: "Device", + "Message Title": "Message Title", + "Notification Sound": "Notification Sound", + "More info on:": "More info on: {0}", + pushoverDesc1: "Emergency priority (2) has default 30 second timeout between retries and will expire after 1 hour.", + pushoverDesc2: "If you want to send notifications to different devices, fill out Device field.", + "SMS Type": "SMS Type", + octopushTypePremium: "Premium (Fast - recommended for alerting)", + octopushTypeLowCost: "Low Cost (Slow - sometimes blocked by operator)", + checkPrice: "Check {0} prices:", + apiCredentials: "API credentials", + octopushLegacyHint: "Do you use the legacy version of Octopush (2011-2020) or the new version?", + "Check octopush prices": "Check octopush prices {0}.", + octopushPhoneNumber: "Phone number (intl format, eg : +33612345678) ", + octopushSMSSender: "SMS Sender Name : 3-11 alphanumeric characters and space (a-zA-Z0-9)", + "LunaSea Device ID": "LunaSea Device ID", + "Apprise URL": "Apprise URL", + "Example:": "Example: {0}", + "Read more:": "Read more: {0}", + "Status:": "Status: {0}", + "Read more": "Read more", + appriseInstalled: "Apprise is installed.", + appriseNotInstalled: "Apprise is not installed. {0}", + "Access Token": "Access Token", + "Channel access token": "Channel access token", + "Line Developers Console": "Line Developers Console", + lineDevConsoleTo: "Line Developers Console - {0}", + "Basic Settings": "Basic Settings", + "User ID": "User ID", + "Messaging API": "Messaging API", + wayToGetLineChannelToken: "First access the {0}, create a provider and channel (Messaging API), then you can get the channel access token and user ID from the above mentioned menu items.", + "Icon URL": "Icon URL", + aboutIconURL: "You can provide a link to a picture in \"Icon URL\" to override the default profile picture. Will not be used if Icon Emoji is set.", + aboutMattermostChannelName: "You can override the default channel that the Webhook posts to by entering the channel name into \"Channel Name\" field. This needs to be enabled in the Mattermost Webhook settings. Ex: #other-channel", + matrix: "Matrix", + promosmsTypeEco: "SMS ECO - cheap but slow and often overloaded. Limited only to Polish recipients.", + promosmsTypeFlash: "SMS FLASH - Message will automatically show on recipient device. Limited only to Polish recipients.", + promosmsTypeFull: "SMS FULL - Premium tier of SMS, You can use your Sender Name (You need to register name first). Reliable for alerts.", + promosmsTypeSpeed: "SMS SPEED - Highest priority in system. Very quick and reliable but costly (about twice of SMS FULL price).", + promosmsPhoneNumber: "Phone number (for Polish recipient You can skip area codes)", + promosmsSMSSender: "SMS Sender Name : Pre-registred name or one of defaults: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "Feishu WebHookURL", + matrixHomeserverURL: "Homeserver URL (with http(s):// and optionally port)", + "Internal Room Id": "Internal Room ID", + matrixDesc1: "You can find the internal room ID by looking in the advanced section of the room settings in your Matrix client. It should look like !QMdRCpUIfLwsfjxye6:home.server.", + matrixDesc2: "It is highly recommended you create a new user and do not use your own Matrix user's access token as it will allow full access to your account and all the rooms you joined. Instead, create a new user and only invite it to the room that you want to receive the notification in. You can get the access token by running {0}", + Method: "Method", + Body: "Body", + Headers: "Headers", + PushUrl: "Push URL", + HeadersInvalidFormat: "The request headers are not valid JSON: ", + BodyInvalidFormat: "The request body is not valid JSON: ", + "Monitor History": "Monitor History", + clearDataOlderThan: "Keep monitor history data for {0} days.", + PasswordsDoNotMatch: "Passwords do not match.", + records: "records", + "One record": "One record", + steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", + "Current User": "Current User", + recent: "Recent", + "Shrink Database": "Shrink Database", + Default: "Default", + headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", + bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", + "HTTP Options": "HTTP Options", + "Create Incident": "Create Incident", + "Switch to Light Theme": "Switch to Light Theme", + "Switch to Dark Theme": "Switch to Dark Theme", + "Show Tags": "Show Tags", + "Hide Tags": "Hide Tags", + Description: "Description", + "No monitors available.": "No monitors available.", + "Add one": "Add one", + "No Monitors": "No Monitors", + "Untitled Group": "Untitled Group", + Services: "Services", + Discard: "Discard", + Cancel: "Cancel", + "Powered by": "Powered by", }; diff --git a/src/languages/sr.js b/src/languages/sr.js index df8e98997..71c79df1e 100644 --- a/src/languages/sr.js +++ b/src/languages/sr.js @@ -198,4 +198,133 @@ export default { pushbullet: "Pushbullet", line: "Line Messenger", mattermost: "Mattermost", + "Primary Base URL": "Primary Base URL", + "Push URL": "Push URL", + needPushEvery: "You should call this URL every {0} seconds.", + pushOptionalParams: "Optional parameters: {0}", + defaultNotificationName: "My {notification} Alert ({number})", + here: "here", + Required: "Required", + "Bot Token": "Bot Token", + wayToGetTelegramToken: "You can get a token from {0}.", + "Chat ID": "Chat ID", + supportTelegramChatID: "Support Direct Chat / Group / Channel's Chat ID", + wayToGetTelegramChatID: "You can get your chat ID by sending a message to the bot and going to this URL to view the chat_id:", + "YOUR BOT TOKEN HERE": "YOUR BOT TOKEN HERE", + chatIDNotFound: "Chat ID is not found; please send a message to this bot first", + "Post URL": "Post URL", + "Content Type": "Content Type", + webhookJsonDesc: "{0} is good for any modern HTTP servers such as Express.js", + webhookFormDataDesc: "{multipart} is good for PHP. The JSON will need to be parsed with {decodeFunction}", + secureOptionNone: "None / STARTTLS (25, 587)", + secureOptionTLS: "TLS (465)", + "Ignore TLS Error": "Ignore TLS Error", + "From Email": "From Email", + emailCustomSubject: "Custom Subject", + "To Email": "To Email", + smtpCC: "CC", + smtpBCC: "BCC", + "Discord Webhook URL": "Discord Webhook URL", + wayToGetDiscordURL: "You can get this by going to Server Settings -> Integrations -> Create Webhook", + "Bot Display Name": "Bot Display Name", + "Prefix Custom Message": "Prefix Custom Message", + "Hello @everyone is...": "Hello {'@'}everyone is...", + "Webhook URL": "Webhook URL", + wayToGetTeamsURL: "You can learn how to create a webhook URL {0}.", + Number: "Number", + Recipients: "Recipients", + needSignalAPI: "You need to have a signal client with REST API.", + wayToCheckSignalURL: "You can check this URL to view how to set one up:", + signalImportant: "IMPORTANT: You cannot mix groups and numbers in recipients!", + "Application Token": "Application Token", + "Server URL": "Server URL", + Priority: "Priority", + "Icon Emoji": "Icon Emoji", + "Channel Name": "Channel Name", + "Uptime Kuma URL": "Uptime Kuma URL", + aboutWebhooks: "More info about Webhooks on: {0}", + aboutChannelName: "Enter the channel name on {0} Channel Name field if you want to bypass the Webhook channel. Ex: #other-channel", + aboutKumaURL: "If you leave the Uptime Kuma URL field blank, it will default to the Project GitHub page.", + emojiCheatSheet: "Emoji cheat sheet: {0}", + clicksendsms: "ClickSend SMS", + "User Key": "User Key", + Device: "Device", + "Message Title": "Message Title", + "Notification Sound": "Notification Sound", + "More info on:": "More info on: {0}", + pushoverDesc1: "Emergency priority (2) has default 30 second timeout between retries and will expire after 1 hour.", + pushoverDesc2: "If you want to send notifications to different devices, fill out Device field.", + "SMS Type": "SMS Type", + octopushTypePremium: "Premium (Fast - recommended for alerting)", + octopushTypeLowCost: "Low Cost (Slow - sometimes blocked by operator)", + checkPrice: "Check {0} prices:", + apiCredentials: "API credentials", + octopushLegacyHint: "Do you use the legacy version of Octopush (2011-2020) or the new version?", + "Check octopush prices": "Check octopush prices {0}.", + octopushPhoneNumber: "Phone number (intl format, eg : +33612345678) ", + octopushSMSSender: "SMS Sender Name : 3-11 alphanumeric characters and space (a-zA-Z0-9)", + "LunaSea Device ID": "LunaSea Device ID", + "Apprise URL": "Apprise URL", + "Example:": "Example: {0}", + "Read more:": "Read more: {0}", + "Status:": "Status: {0}", + "Read more": "Read more", + appriseInstalled: "Apprise is installed.", + appriseNotInstalled: "Apprise is not installed. {0}", + "Access Token": "Access Token", + "Channel access token": "Channel access token", + "Line Developers Console": "Line Developers Console", + lineDevConsoleTo: "Line Developers Console - {0}", + "Basic Settings": "Basic Settings", + "User ID": "User ID", + "Messaging API": "Messaging API", + wayToGetLineChannelToken: "First access the {0}, create a provider and channel (Messaging API), then you can get the channel access token and user ID from the above mentioned menu items.", + "Icon URL": "Icon URL", + aboutIconURL: "You can provide a link to a picture in \"Icon URL\" to override the default profile picture. Will not be used if Icon Emoji is set.", + aboutMattermostChannelName: "You can override the default channel that the Webhook posts to by entering the channel name into \"Channel Name\" field. This needs to be enabled in the Mattermost Webhook settings. Ex: #other-channel", + matrix: "Matrix", + promosmsTypeEco: "SMS ECO - cheap but slow and often overloaded. Limited only to Polish recipients.", + promosmsTypeFlash: "SMS FLASH - Message will automatically show on recipient device. Limited only to Polish recipients.", + promosmsTypeFull: "SMS FULL - Premium tier of SMS, You can use your Sender Name (You need to register name first). Reliable for alerts.", + promosmsTypeSpeed: "SMS SPEED - Highest priority in system. Very quick and reliable but costly (about twice of SMS FULL price).", + promosmsPhoneNumber: "Phone number (for Polish recipient You can skip area codes)", + promosmsSMSSender: "SMS Sender Name : Pre-registred name or one of defaults: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "Feishu WebHookURL", + matrixHomeserverURL: "Homeserver URL (with http(s):// and optionally port)", + "Internal Room Id": "Internal Room ID", + matrixDesc1: "You can find the internal room ID by looking in the advanced section of the room settings in your Matrix client. It should look like !QMdRCpUIfLwsfjxye6:home.server.", + matrixDesc2: "It is highly recommended you create a new user and do not use your own Matrix user's access token as it will allow full access to your account and all the rooms you joined. Instead, create a new user and only invite it to the room that you want to receive the notification in. You can get the access token by running {0}", + Method: "Method", + Body: "Body", + Headers: "Headers", + PushUrl: "Push URL", + HeadersInvalidFormat: "The request headers are not valid JSON: ", + BodyInvalidFormat: "The request body is not valid JSON: ", + "Monitor History": "Monitor History", + clearDataOlderThan: "Keep monitor history data for {0} days.", + PasswordsDoNotMatch: "Passwords do not match.", + records: "records", + "One record": "One record", + steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", + "Current User": "Current User", + recent: "Recent", + "Shrink Database": "Shrink Database", + Default: "Default", + headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", + bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", + "HTTP Options": "HTTP Options", + "Create Incident": "Create Incident", + "Switch to Light Theme": "Switch to Light Theme", + "Switch to Dark Theme": "Switch to Dark Theme", + "Show Tags": "Show Tags", + "Hide Tags": "Hide Tags", + Description: "Description", + "No monitors available.": "No monitors available.", + "Add one": "Add one", + "No Monitors": "No Monitors", + "Untitled Group": "Untitled Group", + Services: "Services", + Discard: "Discard", + Cancel: "Cancel", + "Powered by": "Powered by", }; diff --git a/src/languages/sv-SE.js b/src/languages/sv-SE.js index e29d355c2..30f54ec44 100644 --- a/src/languages/sv-SE.js +++ b/src/languages/sv-SE.js @@ -198,4 +198,133 @@ export default { pushbullet: "Pushbullet", line: "Line Messenger", mattermost: "Mattermost", + "Primary Base URL": "Primary Base URL", + "Push URL": "Push URL", + needPushEvery: "You should call this URL every {0} seconds.", + pushOptionalParams: "Optional parameters: {0}", + defaultNotificationName: "My {notification} Alert ({number})", + here: "here", + Required: "Required", + "Bot Token": "Bot Token", + wayToGetTelegramToken: "You can get a token from {0}.", + "Chat ID": "Chat ID", + supportTelegramChatID: "Support Direct Chat / Group / Channel's Chat ID", + wayToGetTelegramChatID: "You can get your chat ID by sending a message to the bot and going to this URL to view the chat_id:", + "YOUR BOT TOKEN HERE": "YOUR BOT TOKEN HERE", + chatIDNotFound: "Chat ID is not found; please send a message to this bot first", + "Post URL": "Post URL", + "Content Type": "Content Type", + webhookJsonDesc: "{0} is good for any modern HTTP servers such as Express.js", + webhookFormDataDesc: "{multipart} is good for PHP. The JSON will need to be parsed with {decodeFunction}", + secureOptionNone: "None / STARTTLS (25, 587)", + secureOptionTLS: "TLS (465)", + "Ignore TLS Error": "Ignore TLS Error", + "From Email": "From Email", + emailCustomSubject: "Custom Subject", + "To Email": "To Email", + smtpCC: "CC", + smtpBCC: "BCC", + "Discord Webhook URL": "Discord Webhook URL", + wayToGetDiscordURL: "You can get this by going to Server Settings -> Integrations -> Create Webhook", + "Bot Display Name": "Bot Display Name", + "Prefix Custom Message": "Prefix Custom Message", + "Hello @everyone is...": "Hello {'@'}everyone is...", + "Webhook URL": "Webhook URL", + wayToGetTeamsURL: "You can learn how to create a webhook URL {0}.", + Number: "Number", + Recipients: "Recipients", + needSignalAPI: "You need to have a signal client with REST API.", + wayToCheckSignalURL: "You can check this URL to view how to set one up:", + signalImportant: "IMPORTANT: You cannot mix groups and numbers in recipients!", + "Application Token": "Application Token", + "Server URL": "Server URL", + Priority: "Priority", + "Icon Emoji": "Icon Emoji", + "Channel Name": "Channel Name", + "Uptime Kuma URL": "Uptime Kuma URL", + aboutWebhooks: "More info about Webhooks on: {0}", + aboutChannelName: "Enter the channel name on {0} Channel Name field if you want to bypass the Webhook channel. Ex: #other-channel", + aboutKumaURL: "If you leave the Uptime Kuma URL field blank, it will default to the Project GitHub page.", + emojiCheatSheet: "Emoji cheat sheet: {0}", + clicksendsms: "ClickSend SMS", + "User Key": "User Key", + Device: "Device", + "Message Title": "Message Title", + "Notification Sound": "Notification Sound", + "More info on:": "More info on: {0}", + pushoverDesc1: "Emergency priority (2) has default 30 second timeout between retries and will expire after 1 hour.", + pushoverDesc2: "If you want to send notifications to different devices, fill out Device field.", + "SMS Type": "SMS Type", + octopushTypePremium: "Premium (Fast - recommended for alerting)", + octopushTypeLowCost: "Low Cost (Slow - sometimes blocked by operator)", + checkPrice: "Check {0} prices:", + apiCredentials: "API credentials", + octopushLegacyHint: "Do you use the legacy version of Octopush (2011-2020) or the new version?", + "Check octopush prices": "Check octopush prices {0}.", + octopushPhoneNumber: "Phone number (intl format, eg : +33612345678) ", + octopushSMSSender: "SMS Sender Name : 3-11 alphanumeric characters and space (a-zA-Z0-9)", + "LunaSea Device ID": "LunaSea Device ID", + "Apprise URL": "Apprise URL", + "Example:": "Example: {0}", + "Read more:": "Read more: {0}", + "Status:": "Status: {0}", + "Read more": "Read more", + appriseInstalled: "Apprise is installed.", + appriseNotInstalled: "Apprise is not installed. {0}", + "Access Token": "Access Token", + "Channel access token": "Channel access token", + "Line Developers Console": "Line Developers Console", + lineDevConsoleTo: "Line Developers Console - {0}", + "Basic Settings": "Basic Settings", + "User ID": "User ID", + "Messaging API": "Messaging API", + wayToGetLineChannelToken: "First access the {0}, create a provider and channel (Messaging API), then you can get the channel access token and user ID from the above mentioned menu items.", + "Icon URL": "Icon URL", + aboutIconURL: "You can provide a link to a picture in \"Icon URL\" to override the default profile picture. Will not be used if Icon Emoji is set.", + aboutMattermostChannelName: "You can override the default channel that the Webhook posts to by entering the channel name into \"Channel Name\" field. This needs to be enabled in the Mattermost Webhook settings. Ex: #other-channel", + matrix: "Matrix", + promosmsTypeEco: "SMS ECO - cheap but slow and often overloaded. Limited only to Polish recipients.", + promosmsTypeFlash: "SMS FLASH - Message will automatically show on recipient device. Limited only to Polish recipients.", + promosmsTypeFull: "SMS FULL - Premium tier of SMS, You can use your Sender Name (You need to register name first). Reliable for alerts.", + promosmsTypeSpeed: "SMS SPEED - Highest priority in system. Very quick and reliable but costly (about twice of SMS FULL price).", + promosmsPhoneNumber: "Phone number (for Polish recipient You can skip area codes)", + promosmsSMSSender: "SMS Sender Name : Pre-registred name or one of defaults: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "Feishu WebHookURL", + matrixHomeserverURL: "Homeserver URL (with http(s):// and optionally port)", + "Internal Room Id": "Internal Room ID", + matrixDesc1: "You can find the internal room ID by looking in the advanced section of the room settings in your Matrix client. It should look like !QMdRCpUIfLwsfjxye6:home.server.", + matrixDesc2: "It is highly recommended you create a new user and do not use your own Matrix user's access token as it will allow full access to your account and all the rooms you joined. Instead, create a new user and only invite it to the room that you want to receive the notification in. You can get the access token by running {0}", + Method: "Method", + Body: "Body", + Headers: "Headers", + PushUrl: "Push URL", + HeadersInvalidFormat: "The request headers are not valid JSON: ", + BodyInvalidFormat: "The request body is not valid JSON: ", + "Monitor History": "Monitor History", + clearDataOlderThan: "Keep monitor history data for {0} days.", + PasswordsDoNotMatch: "Passwords do not match.", + records: "records", + "One record": "One record", + steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", + "Current User": "Current User", + recent: "Recent", + "Shrink Database": "Shrink Database", + Default: "Default", + headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", + bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", + "HTTP Options": "HTTP Options", + "Create Incident": "Create Incident", + "Switch to Light Theme": "Switch to Light Theme", + "Switch to Dark Theme": "Switch to Dark Theme", + "Show Tags": "Show Tags", + "Hide Tags": "Hide Tags", + Description: "Description", + "No monitors available.": "No monitors available.", + "Add one": "Add one", + "No Monitors": "No Monitors", + "Untitled Group": "Untitled Group", + Services: "Services", + Discard: "Discard", + Cancel: "Cancel", + "Powered by": "Powered by", }; diff --git a/src/languages/tr-TR.js b/src/languages/tr-TR.js index e26306037..cc90cb5c6 100644 --- a/src/languages/tr-TR.js +++ b/src/languages/tr-TR.js @@ -197,4 +197,133 @@ export default { pushbullet: "Pushbullet", line: "Line Messenger", mattermost: "Mattermost", + "Primary Base URL": "Primary Base URL", + "Push URL": "Push URL", + needPushEvery: "You should call this URL every {0} seconds.", + pushOptionalParams: "Optional parameters: {0}", + defaultNotificationName: "My {notification} Alert ({number})", + here: "here", + Required: "Required", + "Bot Token": "Bot Token", + wayToGetTelegramToken: "You can get a token from {0}.", + "Chat ID": "Chat ID", + supportTelegramChatID: "Support Direct Chat / Group / Channel's Chat ID", + wayToGetTelegramChatID: "You can get your chat ID by sending a message to the bot and going to this URL to view the chat_id:", + "YOUR BOT TOKEN HERE": "YOUR BOT TOKEN HERE", + chatIDNotFound: "Chat ID is not found; please send a message to this bot first", + "Post URL": "Post URL", + "Content Type": "Content Type", + webhookJsonDesc: "{0} is good for any modern HTTP servers such as Express.js", + webhookFormDataDesc: "{multipart} is good for PHP. The JSON will need to be parsed with {decodeFunction}", + secureOptionNone: "None / STARTTLS (25, 587)", + secureOptionTLS: "TLS (465)", + "Ignore TLS Error": "Ignore TLS Error", + "From Email": "From Email", + emailCustomSubject: "Custom Subject", + "To Email": "To Email", + smtpCC: "CC", + smtpBCC: "BCC", + "Discord Webhook URL": "Discord Webhook URL", + wayToGetDiscordURL: "You can get this by going to Server Settings -> Integrations -> Create Webhook", + "Bot Display Name": "Bot Display Name", + "Prefix Custom Message": "Prefix Custom Message", + "Hello @everyone is...": "Hello {'@'}everyone is...", + "Webhook URL": "Webhook URL", + wayToGetTeamsURL: "You can learn how to create a webhook URL {0}.", + Number: "Number", + Recipients: "Recipients", + needSignalAPI: "You need to have a signal client with REST API.", + wayToCheckSignalURL: "You can check this URL to view how to set one up:", + signalImportant: "IMPORTANT: You cannot mix groups and numbers in recipients!", + "Application Token": "Application Token", + "Server URL": "Server URL", + Priority: "Priority", + "Icon Emoji": "Icon Emoji", + "Channel Name": "Channel Name", + "Uptime Kuma URL": "Uptime Kuma URL", + aboutWebhooks: "More info about Webhooks on: {0}", + aboutChannelName: "Enter the channel name on {0} Channel Name field if you want to bypass the Webhook channel. Ex: #other-channel", + aboutKumaURL: "If you leave the Uptime Kuma URL field blank, it will default to the Project GitHub page.", + emojiCheatSheet: "Emoji cheat sheet: {0}", + clicksendsms: "ClickSend SMS", + "User Key": "User Key", + Device: "Device", + "Message Title": "Message Title", + "Notification Sound": "Notification Sound", + "More info on:": "More info on: {0}", + pushoverDesc1: "Emergency priority (2) has default 30 second timeout between retries and will expire after 1 hour.", + pushoverDesc2: "If you want to send notifications to different devices, fill out Device field.", + "SMS Type": "SMS Type", + octopushTypePremium: "Premium (Fast - recommended for alerting)", + octopushTypeLowCost: "Low Cost (Slow - sometimes blocked by operator)", + checkPrice: "Check {0} prices:", + apiCredentials: "API credentials", + octopushLegacyHint: "Do you use the legacy version of Octopush (2011-2020) or the new version?", + "Check octopush prices": "Check octopush prices {0}.", + octopushPhoneNumber: "Phone number (intl format, eg : +33612345678) ", + octopushSMSSender: "SMS Sender Name : 3-11 alphanumeric characters and space (a-zA-Z0-9)", + "LunaSea Device ID": "LunaSea Device ID", + "Apprise URL": "Apprise URL", + "Example:": "Example: {0}", + "Read more:": "Read more: {0}", + "Status:": "Status: {0}", + "Read more": "Read more", + appriseInstalled: "Apprise is installed.", + appriseNotInstalled: "Apprise is not installed. {0}", + "Access Token": "Access Token", + "Channel access token": "Channel access token", + "Line Developers Console": "Line Developers Console", + lineDevConsoleTo: "Line Developers Console - {0}", + "Basic Settings": "Basic Settings", + "User ID": "User ID", + "Messaging API": "Messaging API", + wayToGetLineChannelToken: "First access the {0}, create a provider and channel (Messaging API), then you can get the channel access token and user ID from the above mentioned menu items.", + "Icon URL": "Icon URL", + aboutIconURL: "You can provide a link to a picture in \"Icon URL\" to override the default profile picture. Will not be used if Icon Emoji is set.", + aboutMattermostChannelName: "You can override the default channel that the Webhook posts to by entering the channel name into \"Channel Name\" field. This needs to be enabled in the Mattermost Webhook settings. Ex: #other-channel", + matrix: "Matrix", + promosmsTypeEco: "SMS ECO - cheap but slow and often overloaded. Limited only to Polish recipients.", + promosmsTypeFlash: "SMS FLASH - Message will automatically show on recipient device. Limited only to Polish recipients.", + promosmsTypeFull: "SMS FULL - Premium tier of SMS, You can use your Sender Name (You need to register name first). Reliable for alerts.", + promosmsTypeSpeed: "SMS SPEED - Highest priority in system. Very quick and reliable but costly (about twice of SMS FULL price).", + promosmsPhoneNumber: "Phone number (for Polish recipient You can skip area codes)", + promosmsSMSSender: "SMS Sender Name : Pre-registred name or one of defaults: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "Feishu WebHookURL", + matrixHomeserverURL: "Homeserver URL (with http(s):// and optionally port)", + "Internal Room Id": "Internal Room ID", + matrixDesc1: "You can find the internal room ID by looking in the advanced section of the room settings in your Matrix client. It should look like !QMdRCpUIfLwsfjxye6:home.server.", + matrixDesc2: "It is highly recommended you create a new user and do not use your own Matrix user's access token as it will allow full access to your account and all the rooms you joined. Instead, create a new user and only invite it to the room that you want to receive the notification in. You can get the access token by running {0}", + Method: "Method", + Body: "Body", + Headers: "Headers", + PushUrl: "Push URL", + HeadersInvalidFormat: "The request headers are not valid JSON: ", + BodyInvalidFormat: "The request body is not valid JSON: ", + "Monitor History": "Monitor History", + clearDataOlderThan: "Keep monitor history data for {0} days.", + PasswordsDoNotMatch: "Passwords do not match.", + records: "records", + "One record": "One record", + steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", + "Current User": "Current User", + recent: "Recent", + "Shrink Database": "Shrink Database", + Default: "Default", + headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", + bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", + "HTTP Options": "HTTP Options", + "Create Incident": "Create Incident", + "Switch to Light Theme": "Switch to Light Theme", + "Switch to Dark Theme": "Switch to Dark Theme", + "Show Tags": "Show Tags", + "Hide Tags": "Hide Tags", + Description: "Description", + "No monitors available.": "No monitors available.", + "Add one": "Add one", + "No Monitors": "No Monitors", + "Untitled Group": "Untitled Group", + Services: "Services", + Discard: "Discard", + Cancel: "Cancel", + "Powered by": "Powered by", }; diff --git a/src/languages/vi.js b/src/languages/vi.js index 0bfa3f208..6e8a2e4ae 100644 --- a/src/languages/vi.js +++ b/src/languages/vi.js @@ -280,4 +280,51 @@ export default { promosmsPhoneNumber: "Số điện thoại (Bỏ qua mã vùng với người Ba Lan)", promosmsSMSSender: "SMS Tên người gửi: Tên đã đăng ký trước hoặc tên mặc định: InfoSMS, SMS Info, MaxSMS, INFO, SMS", "Feishu WebHookUrl": "Feishu WebHookUrl", + "Primary Base URL": "Primary Base URL", + "Push URL": "Push URL", + needPushEvery: "You should call this URL every {0} seconds.", + pushOptionalParams: "Optional parameters: {0}", + wayToGetTelegramToken: "You can get a token from {0}.", + emailCustomSubject: "Custom Subject", + clicksendsms: "ClickSend SMS", + checkPrice: "Check {0} prices:", + apiCredentials: "API credentials", + octopushLegacyHint: "Do you use the legacy version of Octopush (2011-2020) or the new version?", + matrixHomeserverURL: "Homeserver URL (with http(s):// and optionally port)", + "Internal Room Id": "Internal Room ID", + matrixDesc1: "You can find the internal room ID by looking in the advanced section of the room settings in your Matrix client. It should look like !QMdRCpUIfLwsfjxye6:home.server.", + matrixDesc2: "It is highly recommended you create a new user and do not use your own Matrix user's access token as it will allow full access to your account and all the rooms you joined. Instead, create a new user and only invite it to the room that you want to receive the notification in. You can get the access token by running {0}", + Method: "Method", + Body: "Body", + Headers: "Headers", + PushUrl: "Push URL", + HeadersInvalidFormat: "The request headers are not valid JSON: ", + BodyInvalidFormat: "The request body is not valid JSON: ", + "Monitor History": "Monitor History", + clearDataOlderThan: "Keep monitor history data for {0} days.", + PasswordsDoNotMatch: "Passwords do not match.", + records: "records", + "One record": "One record", + steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", + "Current User": "Current User", + recent: "Recent", + "Shrink Database": "Shrink Database", + Default: "Default", + headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", + bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", + "HTTP Options": "HTTP Options", + "Create Incident": "Create Incident", + "Switch to Light Theme": "Switch to Light Theme", + "Switch to Dark Theme": "Switch to Dark Theme", + "Show Tags": "Show Tags", + "Hide Tags": "Hide Tags", + Description: "Description", + "No monitors available.": "No monitors available.", + "Add one": "Add one", + "No Monitors": "No Monitors", + "Untitled Group": "Untitled Group", + Services: "Services", + Discard: "Discard", + Cancel: "Cancel", + "Powered by": "Powered by", }; diff --git a/src/languages/zh-CN.js b/src/languages/zh-CN.js index 8bbd0dcdd..4e0aee12f 100644 --- a/src/languages/zh-CN.js +++ b/src/languages/zh-CN.js @@ -291,4 +291,40 @@ export default { "Internal Room Id": "Internal Room Id", matrixDesc1: "你可以在 Matrix 客户端房间设置的高级选项找到 Internal Room Id。格式类似于 !QMdRCpUIfLwsfjxye6:home.server。", matrixDesc2: "请不要使用你自己的 Access Token,这将开放你所有的账户权限和你加入的房间权限。你可以创建一个新的用户并邀请它至你允许的的房间中。你可以运行以下命令来获取 Access Token:{0}", + emailCustomSubject: "Custom Subject", + clicksendsms: "ClickSend SMS", + apiCredentials: "API credentials", + Method: "Method", + Body: "Body", + Headers: "Headers", + PushUrl: "Push URL", + HeadersInvalidFormat: "The request headers are not valid JSON: ", + BodyInvalidFormat: "The request body is not valid JSON: ", + "Monitor History": "Monitor History", + clearDataOlderThan: "Keep monitor history data for {0} days.", + PasswordsDoNotMatch: "Passwords do not match.", + records: "records", + "One record": "One record", + steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", + "Current User": "Current User", + recent: "Recent", + "Shrink Database": "Shrink Database", + Default: "Default", + headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", + bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", + "HTTP Options": "HTTP Options", + "Create Incident": "Create Incident", + "Switch to Light Theme": "Switch to Light Theme", + "Switch to Dark Theme": "Switch to Dark Theme", + "Show Tags": "Show Tags", + "Hide Tags": "Hide Tags", + Description: "Description", + "No monitors available.": "No monitors available.", + "Add one": "Add one", + "No Monitors": "No Monitors", + "Untitled Group": "Untitled Group", + Services: "Services", + Discard: "Discard", + Cancel: "Cancel", + "Powered by": "Powered by", }; diff --git a/src/languages/zh-HK.js b/src/languages/zh-HK.js index 7f5e2259b..0e0cbe040 100644 --- a/src/languages/zh-HK.js +++ b/src/languages/zh-HK.js @@ -198,4 +198,133 @@ export default { pushbullet: "Pushbullet", line: "Line Messenger", mattermost: "Mattermost", + "Primary Base URL": "Primary Base URL", + "Push URL": "Push URL", + needPushEvery: "You should call this URL every {0} seconds.", + pushOptionalParams: "Optional parameters: {0}", + defaultNotificationName: "My {notification} Alert ({number})", + here: "here", + Required: "Required", + "Bot Token": "Bot Token", + wayToGetTelegramToken: "You can get a token from {0}.", + "Chat ID": "Chat ID", + supportTelegramChatID: "Support Direct Chat / Group / Channel's Chat ID", + wayToGetTelegramChatID: "You can get your chat ID by sending a message to the bot and going to this URL to view the chat_id:", + "YOUR BOT TOKEN HERE": "YOUR BOT TOKEN HERE", + chatIDNotFound: "Chat ID is not found; please send a message to this bot first", + "Post URL": "Post URL", + "Content Type": "Content Type", + webhookJsonDesc: "{0} is good for any modern HTTP servers such as Express.js", + webhookFormDataDesc: "{multipart} is good for PHP. The JSON will need to be parsed with {decodeFunction}", + secureOptionNone: "None / STARTTLS (25, 587)", + secureOptionTLS: "TLS (465)", + "Ignore TLS Error": "Ignore TLS Error", + "From Email": "From Email", + emailCustomSubject: "Custom Subject", + "To Email": "To Email", + smtpCC: "CC", + smtpBCC: "BCC", + "Discord Webhook URL": "Discord Webhook URL", + wayToGetDiscordURL: "You can get this by going to Server Settings -> Integrations -> Create Webhook", + "Bot Display Name": "Bot Display Name", + "Prefix Custom Message": "Prefix Custom Message", + "Hello @everyone is...": "Hello {'@'}everyone is...", + "Webhook URL": "Webhook URL", + wayToGetTeamsURL: "You can learn how to create a webhook URL {0}.", + Number: "Number", + Recipients: "Recipients", + needSignalAPI: "You need to have a signal client with REST API.", + wayToCheckSignalURL: "You can check this URL to view how to set one up:", + signalImportant: "IMPORTANT: You cannot mix groups and numbers in recipients!", + "Application Token": "Application Token", + "Server URL": "Server URL", + Priority: "Priority", + "Icon Emoji": "Icon Emoji", + "Channel Name": "Channel Name", + "Uptime Kuma URL": "Uptime Kuma URL", + aboutWebhooks: "More info about Webhooks on: {0}", + aboutChannelName: "Enter the channel name on {0} Channel Name field if you want to bypass the Webhook channel. Ex: #other-channel", + aboutKumaURL: "If you leave the Uptime Kuma URL field blank, it will default to the Project GitHub page.", + emojiCheatSheet: "Emoji cheat sheet: {0}", + clicksendsms: "ClickSend SMS", + "User Key": "User Key", + Device: "Device", + "Message Title": "Message Title", + "Notification Sound": "Notification Sound", + "More info on:": "More info on: {0}", + pushoverDesc1: "Emergency priority (2) has default 30 second timeout between retries and will expire after 1 hour.", + pushoverDesc2: "If you want to send notifications to different devices, fill out Device field.", + "SMS Type": "SMS Type", + octopushTypePremium: "Premium (Fast - recommended for alerting)", + octopushTypeLowCost: "Low Cost (Slow - sometimes blocked by operator)", + checkPrice: "Check {0} prices:", + apiCredentials: "API credentials", + octopushLegacyHint: "Do you use the legacy version of Octopush (2011-2020) or the new version?", + "Check octopush prices": "Check octopush prices {0}.", + octopushPhoneNumber: "Phone number (intl format, eg : +33612345678) ", + octopushSMSSender: "SMS Sender Name : 3-11 alphanumeric characters and space (a-zA-Z0-9)", + "LunaSea Device ID": "LunaSea Device ID", + "Apprise URL": "Apprise URL", + "Example:": "Example: {0}", + "Read more:": "Read more: {0}", + "Status:": "Status: {0}", + "Read more": "Read more", + appriseInstalled: "Apprise is installed.", + appriseNotInstalled: "Apprise is not installed. {0}", + "Access Token": "Access Token", + "Channel access token": "Channel access token", + "Line Developers Console": "Line Developers Console", + lineDevConsoleTo: "Line Developers Console - {0}", + "Basic Settings": "Basic Settings", + "User ID": "User ID", + "Messaging API": "Messaging API", + wayToGetLineChannelToken: "First access the {0}, create a provider and channel (Messaging API), then you can get the channel access token and user ID from the above mentioned menu items.", + "Icon URL": "Icon URL", + aboutIconURL: "You can provide a link to a picture in \"Icon URL\" to override the default profile picture. Will not be used if Icon Emoji is set.", + aboutMattermostChannelName: "You can override the default channel that the Webhook posts to by entering the channel name into \"Channel Name\" field. This needs to be enabled in the Mattermost Webhook settings. Ex: #other-channel", + matrix: "Matrix", + promosmsTypeEco: "SMS ECO - cheap but slow and often overloaded. Limited only to Polish recipients.", + promosmsTypeFlash: "SMS FLASH - Message will automatically show on recipient device. Limited only to Polish recipients.", + promosmsTypeFull: "SMS FULL - Premium tier of SMS, You can use your Sender Name (You need to register name first). Reliable for alerts.", + promosmsTypeSpeed: "SMS SPEED - Highest priority in system. Very quick and reliable but costly (about twice of SMS FULL price).", + promosmsPhoneNumber: "Phone number (for Polish recipient You can skip area codes)", + promosmsSMSSender: "SMS Sender Name : Pre-registred name or one of defaults: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "Feishu WebHookURL", + matrixHomeserverURL: "Homeserver URL (with http(s):// and optionally port)", + "Internal Room Id": "Internal Room ID", + matrixDesc1: "You can find the internal room ID by looking in the advanced section of the room settings in your Matrix client. It should look like !QMdRCpUIfLwsfjxye6:home.server.", + matrixDesc2: "It is highly recommended you create a new user and do not use your own Matrix user's access token as it will allow full access to your account and all the rooms you joined. Instead, create a new user and only invite it to the room that you want to receive the notification in. You can get the access token by running {0}", + Method: "Method", + Body: "Body", + Headers: "Headers", + PushUrl: "Push URL", + HeadersInvalidFormat: "The request headers are not valid JSON: ", + BodyInvalidFormat: "The request body is not valid JSON: ", + "Monitor History": "Monitor History", + clearDataOlderThan: "Keep monitor history data for {0} days.", + PasswordsDoNotMatch: "Passwords do not match.", + records: "records", + "One record": "One record", + steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", + "Current User": "Current User", + recent: "Recent", + "Shrink Database": "Shrink Database", + Default: "Default", + headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", + bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", + "HTTP Options": "HTTP Options", + "Create Incident": "Create Incident", + "Switch to Light Theme": "Switch to Light Theme", + "Switch to Dark Theme": "Switch to Dark Theme", + "Show Tags": "Show Tags", + "Hide Tags": "Hide Tags", + Description: "Description", + "No monitors available.": "No monitors available.", + "Add one": "Add one", + "No Monitors": "No Monitors", + "Untitled Group": "Untitled Group", + Services: "Services", + Discard: "Discard", + Cancel: "Cancel", + "Powered by": "Powered by", }; diff --git a/src/languages/zh-TW.js b/src/languages/zh-TW.js index 337d9422c..573d619d2 100644 --- a/src/languages/zh-TW.js +++ b/src/languages/zh-TW.js @@ -307,4 +307,24 @@ export default { "Showing {from} to {to} of {count} records": "正在顯示 {count} 項記錄中的 {from} 至 {to} 項", steamApiKeyDescription: "若要監測 Steam 遊戲伺服器,您將需要 Steam Web-API 金鑰。您可以在此註冊您的 API 金鑰:", "Current User": "目前使用者", + recent: "Recent", + "Shrink Database": "Shrink Database", + Default: "Default", + headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", + bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", + "HTTP Options": "HTTP Options", + "Create Incident": "Create Incident", + "Switch to Light Theme": "Switch to Light Theme", + "Switch to Dark Theme": "Switch to Dark Theme", + "Show Tags": "Show Tags", + "Hide Tags": "Hide Tags", + Description: "Description", + "No monitors available.": "No monitors available.", + "Add one": "Add one", + "No Monitors": "No Monitors", + "Untitled Group": "Untitled Group", + Services: "Services", + Discard: "Discard", + Cancel: "Cancel", + "Powered by": "Powered by", }; From b0615d347bf1bb24394b583a03e721e30a22ee89 Mon Sep 17 00:00:00 2001 From: Ivan <ivanbratovic4@gmail.com> Date: Thu, 11 Nov 2021 11:07:48 +0100 Subject: [PATCH 058/142] Add incident creation translations --- src/languages/en.js | 10 ++++++++++ src/pages/StatusPage.vue | 14 +++++++------- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/languages/en.js b/src/languages/en.js index b46281a29..ac884ffe1 100644 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -313,6 +313,16 @@ export default { bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", "HTTP Options": "HTTP Options", "Create Incident": "Create Incident", + Title: "Title", + Content: "Content", + Style: "Style", + info: "info", + warning: "warning", + danger: "danger", + primary: "primary", + light: "light", + dark: "dark", + Post: "Post", "Switch to Light Theme": "Switch to Light Theme", "Switch to Dark Theme": "Switch to Dark Theme", "Show Tags": "Show Tags", diff --git a/src/pages/StatusPage.vue b/src/pages/StatusPage.vue index 82e46a748..58ddb9a8d 100644 --- a/src/pages/StatusPage.vue +++ b/src/pages/StatusPage.vue @@ -125,15 +125,15 @@ <div v-if="editIncidentMode" class="dropdown d-inline-block me-2"> <button id="dropdownMenuButton1" class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false"> - Style: {{ incident.style }} + {{ $t("Style") }}: {{ incident.style }} </button> <ul class="dropdown-menu" aria-labelledby="dropdownMenuButton1"> - <li><a class="dropdown-item" href="#" @click="incident.style = 'info'">info</a></li> - <li><a class="dropdown-item" href="#" @click="incident.style = 'warning'">warning</a></li> - <li><a class="dropdown-item" href="#" @click="incident.style = 'danger'">danger</a></li> - <li><a class="dropdown-item" href="#" @click="incident.style = 'primary'">primary</a></li> - <li><a class="dropdown-item" href="#" @click="incident.style = 'light'">light</a></li> - <li><a class="dropdown-item" href="#" @click="incident.style = 'dark'">dark</a></li> + <li><a class="dropdown-item" href="#" @click="incident.style = 'info'">{{ $t("info") }}</a></li> + <li><a class="dropdown-item" href="#" @click="incident.style = 'warning'">{{ $t("warning") }}</a></li> + <li><a class="dropdown-item" href="#" @click="incident.style = 'danger'">{{ $t("danger") }}</a></li> + <li><a class="dropdown-item" href="#" @click="incident.style = 'primary'">{{ $t("primary") }}</a></li> + <li><a class="dropdown-item" href="#" @click="incident.style = 'light'">{{ $t("light") }}</a></li> + <li><a class="dropdown-item" href="#" @click="incident.style = 'dark'">{{ $t("dark") }}</a></li> </ul> </div> From 28f530394e69e1c5cea4382b2b9b74fc147daca9 Mon Sep 17 00:00:00 2001 From: Ivan <ivanbratovic4@gmail.com> Date: Thu, 11 Nov 2021 11:12:48 +0100 Subject: [PATCH 059/142] Add missing translation lookup for ClickSendSMS --- src/components/notifications/ClickSendSMS.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/notifications/ClickSendSMS.vue b/src/components/notifications/ClickSendSMS.vue index 2aed4184b..4fbb2f414 100644 --- a/src/components/notifications/ClickSendSMS.vue +++ b/src/components/notifications/ClickSendSMS.vue @@ -3,7 +3,7 @@ <label for="clicksendsms-login" class="form-label">API Username</label> <div class="form-text"> {{ $t("apiCredentials") }} - <a href="http://dashboard.clicksend.com/account/subaccounts" target="_blank">here</a> + <a href="http://dashboard.clicksend.com/account/subaccounts" target="_blank">{{ $t("here") }}</a> </div> <input id="clicksendsms-login" v-model="$parent.notification.clicksendsmsLogin" type="text" class="form-control" required> <label for="clicksendsms-key" class="form-label">API Key</label> From 4cc433166e6f3efc2419db2af628912328bf2293 Mon Sep 17 00:00:00 2001 From: Ivan <ivanbratovic4@gmail.com> Date: Thu, 11 Nov 2021 11:14:21 +0100 Subject: [PATCH 060/142] Add missing translation for SMTP security option --- src/components/notifications/SMTP.vue | 2 +- src/languages/en.js | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/notifications/SMTP.vue b/src/components/notifications/SMTP.vue index 483917e3f..ab660abed 100644 --- a/src/components/notifications/SMTP.vue +++ b/src/components/notifications/SMTP.vue @@ -10,7 +10,7 @@ </div> <div class="mb-3"> - <label for="secure" class="form-label">Secure</label> + <label for="secure" class="form-label">{{ $t("Security") }}</label> <select id="secure" v-model="$parent.notification.smtpSecure" class="form-select"> <option :value="false">{{ $t("secureOptionNone") }}</option> <option :value="true">{{ $t("secureOptionTLS") }}</option> diff --git a/src/languages/en.js b/src/languages/en.js index ac884ffe1..9f84a03d9 100644 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -307,6 +307,7 @@ export default { steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", "Current User": "Current User", recent: "Recent", + Security: "Security", "Shrink Database": "Shrink Database", Default: "Default", headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", From daef238a70b8b5bcd3eb7c87f0f657d653894464 Mon Sep 17 00:00:00 2001 From: Ioma Taani <iomataani@users.noreply.github.com> Date: Thu, 11 Nov 2021 18:28:22 +0100 Subject: [PATCH 061/142] Updated Italian Language (#911) Co-authored-by: Paride Barison <paride.barison@lantechlongwave.it> --- src/languages/it-IT.js | 136 +++++++++++++++++++++++++++++++++++++---- 1 file changed, 123 insertions(+), 13 deletions(-) diff --git a/src/languages/it-IT.js b/src/languages/it-IT.js index 5ddc414f7..5257a217f 100644 --- a/src/languages/it-IT.js +++ b/src/languages/it-IT.js @@ -33,6 +33,7 @@ export default { Appearance: "Aspetto", Theme: "Tema", General: "Generali", + "Primary Base URL": "URL base primario", Version: "Versione", "Check Update On GitHub": "Controlla aggiornamenti su GitHub", List: "Lista", @@ -64,7 +65,7 @@ export default { Ping: "Ping", "Monitor Type": "Tipo di Monitoraggio", Keyword: "Parola chiave", - "Friendly Name": "Nome Amichevole", + "Friendly Name": "Nomignolo", URL: "URL", Hostname: "Nome Host", Port: "Porta", @@ -75,6 +76,9 @@ export default { "Upside Down Mode": "Modalità capovolta", "Max. Redirects": "Reindirizzamenti massimi", "Accepted Status Codes": "Codici di stato accettati", + "Push URL": "Push URL", + needPushEvery: "Notificare questo URL ogni {0} secondi.", + pushOptionalParams: "Parametri aggiuntivi: {0}", Save: "Salva", Notifications: "Notifiche", "Not available, please setup.": "Non disponibili, da impostare.", @@ -166,8 +170,8 @@ export default { Purple: "Viola", Pink: "Rosa", "Search...": "Cerca...", - "Avg. Ping": "Ping medio", - "Avg. Response": "Risposta media", + "Avg. Ping": "Tempo di risposta al ping medio", + "Avg. Response": "Tempo di risposta medio", "Entry Page": "Entry Page", statusPageNothing: "Non c'è nulla qui, aggiungere un gruppo oppure un monitoraggio.", "No Services": "Nessun Servizio", @@ -178,23 +182,129 @@ export default { "Add a monitor": "Aggiungi un monitoraggio", "Edit Status Page": "Modifica pagina di stato", "Go to Dashboard": "Vai al Cruscotto", - "Status Page": "Status Page", - telegram: "Telegram", - webhook: "Webhook", - smtp: "Email (SMTP)", - discord: "Discord", - teams: "Microsoft Teams", - signal: "Signal", - gotify: "Gotify", - slack: "Slack", + "Status Page": "Pagina di stato", + defaultNotificationName: "Allarme {notification} ({number})", + here: "qui", + "Required": "Richiesto", + "telegram": "Telegram", + "Bot Token": "Token del Bot", + "You can get a token from": "Puoi ricevere un token da", + "Chat ID": "ID Chat", + supportTelegramChatID: "Supporta Chat dirette / di Gruppo / ID Canale", + wayToGetTelegramChatID: "Puoi ricereve l'ID chat mandando un messaggio al bot andando in questo url per visualizzare il chat_id:", + "YOUR BOT TOKEN HERE": "QUI IL TOKEN DEL BOT", + chatIDNotFound: "Non trovo l'ID chat. Prima bisogna mandare un messaggio al bot", + "webhook": "Webhook", + "Post URL": "Post URL", + "Content Type": "Content Type", + webhookJsonDesc: "{0} va bene per qualsiasi server http moderno ad esempio express.js", + webhookFormDataDesc: "{multipart} va bene per PHP, c'è solo bisogno di analizzare il json con {decodeFunction}", + "smtp": "E-mail (SMTP)", + secureOptionNone: "Nessuno / STARTTLS (25, 587)", + secureOptionTLS: "TLS (465)", + "Ignore TLS Error": "Ignora gli errori TLS", + "From Email": "Mittente", + emailCustomSubject: "Oggetto personalizzato", + "To Email": "Destinatario", + smtpCC: "CC", + smtpBCC: "CCn", + "discord": "Discord", + "Discord Webhook URL": "URL Webhook di Discord", + wayToGetDiscordURL: "È possibile recuperarlo da Impostazioni server -> Integrazioni -> Creare Webhook", + "Bot Display Name": "Nome del Bot", + "Prefix Custom Message": "Prefisso per il messaggio personalizzato", + "Hello @everyone is...": "Ciao a {'@'}everyone ...", + "teams": "Microsoft Teams", + "Webhook URL": "URL Webhook", + wayToGetTeamsURL: "È possibile imparare a creare un URL Webhook {0}.", + "signal": "Signal", + "Number": "Numero", + "Recipients": "Destinatari", + needSignalAPI: "È necessario avere un client Signal con le API REST.", + wayToCheckSignalURL: "Controllare questo url per capire come impostarne uno:", + signalImportant: "IMPORTANTE: Non è possibile mischiare gruppi e numeri all'interno dei destinatari!", + "gotify": "Gotify", + "Application Token": "Token Applicazione", + "Server URL": "URL Server", + "Priority": "Priorità", + "slack": "Slack", + "Icon Emoji": "Icona Emoji", + "Channel Name": "Nome Canale", + "Uptime Kuma URL": "Indirizzo Uptime Kuma", + aboutWebhooks: "Maggiori informazioni riguardo ai webhooks su: {0}", + aboutChannelName: "Inserire il nome del canale nel campo \"Nome Canale\" {0} se si vuole bypassare il canale webhook. Ad esempio: #altro-canale", + aboutKumaURL: "Se si lascia bianco il campo Indirizzo Uptime Kuma, la pagina GitHub sarà il valore predefinito.", + emojiCheatSheet: "Lista Emoji: {0}", "rocket.chat": "Rocket.chat", pushover: "Pushover", pushy: "Pushy", octopush: "Octopush", promosms: "PromoSMS", + clicksendsms: "ClickSend SMS", lunasea: "LunaSea", - apprise: "Apprise (Support 50+ Notification services)", + apprise: "Apprise (Supporta più di 50 servizi di notifica)", pushbullet: "Pushbullet", line: "Line Messenger", mattermost: "Mattermost", + "User Key": "Chiave Utente", + "Device": "Dispositivo", + "Message Title": "Titolo Messaggio", + "Notification Sound": "Suono di Notifica", + "More info on:": "Maggiori informazioni su: {0}", + pushoverDesc1: "Priorità di Emergenza (2) ha 30 secondi di timeout tra un tentativo e l'altro e scadrà dopo un'ora.", + pushoverDesc2: "Se si vuole inviare la notifica a dispositivi differenti, riempire il campo Dispositivi.", + "SMS Type": "Tipo di SMS", + octopushTypePremium: "Premium (Veloce - raccomandato per allertare)", + octopushTypeLowCost: "A Basso Costo (Lento - talvolta bloccato dall'operatore)", + checkPrice: "Controlla {0} prezzi:", + apiCredentials: "Credenziali API", + octopushLegacyHint: "Si vuole utilizzare la vecchia versione (2011-2020) oppure la nuova versione di Octopush?", + "Check octopush prices": "Controlla i prezzi di Octopush {0}.", + octopushPhoneNumber: "Numero di telefono (formato internazionale (p.e.): +33612345678) ", + octopushSMSSender: "Nome del mittente: 3-11 caratteri alfanumerici e spazi (a-zA-Z0-9)", + "LunaSea Device ID": "ID dispositivo LunaSea", + "Apprise URL": "URL Apprise", + "Example:": "Esempio: {0}", + "Read more:": "Maggiori informazioni: {0}", + "Status:": "Stato: {0}", + "Read more": "Maggiori informazioni", + appriseInstalled: "Apprise è installato.", + appriseNotInstalled: "Apprise non è installato. {0}", + "Access Token": "Token di accesso", + "Channel access token": "Token di accesso al canale", + "Line Developers Console": "Console sviluppatori Line", + lineDevConsoleTo: "Console sviluppatori Line - {0}", + "Basic Settings": "Impostazioni Base", + "User ID": "ID Utente", + "Messaging API": "API di Messaggistica", + wayToGetLineChannelToken: "Prima accedi a {0}, crea un provider e un canale (API di Messaggistica), dopodiché puoi avere il token di accesso e l'id utente dal menù sopra.", + "Icon URL": "URL Icona", + aboutIconURL: "È possibile impostare un collegameno a una immagine in \"URL Icona\" per modificare l'immagine di profilo. Non verrà utilizzata se è impostata l'Icona Emoji.", + aboutMattermostChannelName: "È possibile modificare il canale predefinito che dove il webhook manda messaggi immettendo il nome del canale nel campo \"Nome Canale\". Questo va abilitato nelle impostazioni webhook di Mattermost webhook. P.E.: #altro-canale", + "matrix": "Matrix", + promosmsTypeEco: "SMS ECO - economico, ma lento e spesso sovraccarico. Limitato solamente a destinatari Polacchi.", + promosmsTypeFlash: "SMS FLASH - Il messaggio sarà automaticamente mostrato sul dispositivo dei destinatari. Limitato solo a destinatari Polacchi.", + promosmsTypeFull: "SMS FULL - Premium, È possibile utilizzare il proprio come come mittente (è necessario prima registrare il nome). Affidabile per gli allarmi.", + promosmsTypeSpeed: "SMS SPEED - Maggior priorità. Rapido, affidabile, ma costoso (costa il doppio di SMS FULL).", + promosmsPhoneNumber: "Numero di Telefono (per destinatari Polacchi si può omettere il codice area)", + promosmsSMSSender: "Mittente SMS : Nome preregistrato oppure uno dei seguenti: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "URL WebHook di Feishu", + matrixHomeserverURL: "URL Server (con http(s):// e opzionalmente la porta)", + "Internal Room Id": "ID Stanza Interna", + matrixDesc1: "È possibile recuperare l'ID della stanza all'interno delle impostazioni avanzate della stanza nel client Matrix. Dovrebbe essere simile a !QMdRCpUIfLwsfjxye6:server.di.casa.", + matrixDesc2: "È altamente raccomandata la creazione di un nuovo utente e di non utilizare il proprio token di accesso Matrix poiché darà pieno controllo al proprio account e a tutte le stanze in cui si ha accesso. Piuttosto, si crei un nuovo utente per invitarlo nella stanza dove si vuole ricevere le notifiche. Si può accedere al token eseguendo {0}", + Method: "Metodo", + Body: "Corpo", + Headers: "Headers", + PushUrl: "URL di Push", + HeadersInvalidFormat: "L'header di richiesta non è un JSON valido: ", + BodyInvalidFormat: "Il corpo di richiesta non è un JSON valido: ", + "Monitor History": "Storico monitoraggio", + clearDataOlderThan: "Mantieni lo storico per {0} giorni.", + PasswordsDoNotMatch: "Le password non corrispondono.", + records: "records", + "One record": "One record", + steamApiKeyDescription: "Per monitorare un server di gioco Steam si necessita della chiave Steam Web-API. È possibile registrare la propria chiave API qui: ", + "Current User": "Utente corrente", + recent: "Recenti", }; From 9ef3727c91dc7ad4593ad1449a3a90b4143e7995 Mon Sep 17 00:00:00 2001 From: Ivan <ivanbratovic4@gmail.com> Date: Fri, 12 Nov 2021 09:29:06 +0100 Subject: [PATCH 062/142] Backed out of commit `be1933614` Running update-language-files will just confuse translators --- src/languages/bg-BG.js | 19 ------ src/languages/da-DK.js | 129 --------------------------------------- src/languages/de-DE.js | 22 ------- src/languages/en.js | 13 ++-- src/languages/es-ES.js | 124 ------------------------------------- src/languages/et-EE.js | 129 --------------------------------------- src/languages/fa.js | 126 -------------------------------------- src/languages/fr-FR.js | 22 ------- src/languages/hr-HR.js | 19 ------ src/languages/hu.js | 129 --------------------------------------- src/languages/id-ID.js | 47 -------------- src/languages/ja.js | 129 --------------------------------------- src/languages/ko-KR.js | 47 -------------- src/languages/nb-NO.js | 47 -------------- src/languages/nl-NL.js | 123 ------------------------------------- src/languages/pl.js | 19 ------ src/languages/pt-BR.js | 129 --------------------------------------- src/languages/ru-RU.js | 19 ------ src/languages/sr-latn.js | 129 --------------------------------------- src/languages/sr.js | 129 --------------------------------------- src/languages/sv-SE.js | 129 --------------------------------------- src/languages/tr-TR.js | 129 --------------------------------------- src/languages/vi.js | 47 -------------- src/languages/zh-CN.js | 36 ----------- src/languages/zh-HK.js | 129 --------------------------------------- src/languages/zh-TW.js | 20 ------ 26 files changed, 7 insertions(+), 2033 deletions(-) diff --git a/src/languages/bg-BG.js b/src/languages/bg-BG.js index d75fb5998..f1d9b0784 100644 --- a/src/languages/bg-BG.js +++ b/src/languages/bg-BG.js @@ -307,23 +307,4 @@ export default { PasswordsDoNotMatch: "Паролите не съвпадат.", "Current User": "Текущ потребител", recent: "Скорошни", - "Shrink Database": "Shrink Database", - Default: "Default", - headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", - bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", - "HTTP Options": "HTTP Options", - "Create Incident": "Create Incident", - "Switch to Light Theme": "Switch to Light Theme", - "Switch to Dark Theme": "Switch to Dark Theme", - "Show Tags": "Show Tags", - "Hide Tags": "Hide Tags", - Description: "Description", - "No monitors available.": "No monitors available.", - "Add one": "Add one", - "No Monitors": "No Monitors", - "Untitled Group": "Untitled Group", - Services: "Services", - Discard: "Discard", - Cancel: "Cancel", - "Powered by": "Powered by", }; diff --git a/src/languages/da-DK.js b/src/languages/da-DK.js index 9c797c3d9..66e7cb3d4 100644 --- a/src/languages/da-DK.js +++ b/src/languages/da-DK.js @@ -198,133 +198,4 @@ export default { pushbullet: "Pushbullet", line: "Line Messenger", mattermost: "Mattermost", - "Primary Base URL": "Primary Base URL", - "Push URL": "Push URL", - needPushEvery: "You should call this URL every {0} seconds.", - pushOptionalParams: "Optional parameters: {0}", - defaultNotificationName: "My {notification} Alert ({number})", - here: "here", - Required: "Required", - "Bot Token": "Bot Token", - wayToGetTelegramToken: "You can get a token from {0}.", - "Chat ID": "Chat ID", - supportTelegramChatID: "Support Direct Chat / Group / Channel's Chat ID", - wayToGetTelegramChatID: "You can get your chat ID by sending a message to the bot and going to this URL to view the chat_id:", - "YOUR BOT TOKEN HERE": "YOUR BOT TOKEN HERE", - chatIDNotFound: "Chat ID is not found; please send a message to this bot first", - "Post URL": "Post URL", - "Content Type": "Content Type", - webhookJsonDesc: "{0} is good for any modern HTTP servers such as Express.js", - webhookFormDataDesc: "{multipart} is good for PHP. The JSON will need to be parsed with {decodeFunction}", - secureOptionNone: "None / STARTTLS (25, 587)", - secureOptionTLS: "TLS (465)", - "Ignore TLS Error": "Ignore TLS Error", - "From Email": "From Email", - emailCustomSubject: "Custom Subject", - "To Email": "To Email", - smtpCC: "CC", - smtpBCC: "BCC", - "Discord Webhook URL": "Discord Webhook URL", - wayToGetDiscordURL: "You can get this by going to Server Settings -> Integrations -> Create Webhook", - "Bot Display Name": "Bot Display Name", - "Prefix Custom Message": "Prefix Custom Message", - "Hello @everyone is...": "Hello {'@'}everyone is...", - "Webhook URL": "Webhook URL", - wayToGetTeamsURL: "You can learn how to create a webhook URL {0}.", - Number: "Number", - Recipients: "Recipients", - needSignalAPI: "You need to have a signal client with REST API.", - wayToCheckSignalURL: "You can check this URL to view how to set one up:", - signalImportant: "IMPORTANT: You cannot mix groups and numbers in recipients!", - "Application Token": "Application Token", - "Server URL": "Server URL", - Priority: "Priority", - "Icon Emoji": "Icon Emoji", - "Channel Name": "Channel Name", - "Uptime Kuma URL": "Uptime Kuma URL", - aboutWebhooks: "More info about Webhooks on: {0}", - aboutChannelName: "Enter the channel name on {0} Channel Name field if you want to bypass the Webhook channel. Ex: #other-channel", - aboutKumaURL: "If you leave the Uptime Kuma URL field blank, it will default to the Project GitHub page.", - emojiCheatSheet: "Emoji cheat sheet: {0}", - clicksendsms: "ClickSend SMS", - "User Key": "User Key", - Device: "Device", - "Message Title": "Message Title", - "Notification Sound": "Notification Sound", - "More info on:": "More info on: {0}", - pushoverDesc1: "Emergency priority (2) has default 30 second timeout between retries and will expire after 1 hour.", - pushoverDesc2: "If you want to send notifications to different devices, fill out Device field.", - "SMS Type": "SMS Type", - octopushTypePremium: "Premium (Fast - recommended for alerting)", - octopushTypeLowCost: "Low Cost (Slow - sometimes blocked by operator)", - checkPrice: "Check {0} prices:", - apiCredentials: "API credentials", - octopushLegacyHint: "Do you use the legacy version of Octopush (2011-2020) or the new version?", - "Check octopush prices": "Check octopush prices {0}.", - octopushPhoneNumber: "Phone number (intl format, eg : +33612345678) ", - octopushSMSSender: "SMS Sender Name : 3-11 alphanumeric characters and space (a-zA-Z0-9)", - "LunaSea Device ID": "LunaSea Device ID", - "Apprise URL": "Apprise URL", - "Example:": "Example: {0}", - "Read more:": "Read more: {0}", - "Status:": "Status: {0}", - "Read more": "Read more", - appriseInstalled: "Apprise is installed.", - appriseNotInstalled: "Apprise is not installed. {0}", - "Access Token": "Access Token", - "Channel access token": "Channel access token", - "Line Developers Console": "Line Developers Console", - lineDevConsoleTo: "Line Developers Console - {0}", - "Basic Settings": "Basic Settings", - "User ID": "User ID", - "Messaging API": "Messaging API", - wayToGetLineChannelToken: "First access the {0}, create a provider and channel (Messaging API), then you can get the channel access token and user ID from the above mentioned menu items.", - "Icon URL": "Icon URL", - aboutIconURL: "You can provide a link to a picture in \"Icon URL\" to override the default profile picture. Will not be used if Icon Emoji is set.", - aboutMattermostChannelName: "You can override the default channel that the Webhook posts to by entering the channel name into \"Channel Name\" field. This needs to be enabled in the Mattermost Webhook settings. Ex: #other-channel", - matrix: "Matrix", - promosmsTypeEco: "SMS ECO - cheap but slow and often overloaded. Limited only to Polish recipients.", - promosmsTypeFlash: "SMS FLASH - Message will automatically show on recipient device. Limited only to Polish recipients.", - promosmsTypeFull: "SMS FULL - Premium tier of SMS, You can use your Sender Name (You need to register name first). Reliable for alerts.", - promosmsTypeSpeed: "SMS SPEED - Highest priority in system. Very quick and reliable but costly (about twice of SMS FULL price).", - promosmsPhoneNumber: "Phone number (for Polish recipient You can skip area codes)", - promosmsSMSSender: "SMS Sender Name : Pre-registred name or one of defaults: InfoSMS, SMS Info, MaxSMS, INFO, SMS", - "Feishu WebHookUrl": "Feishu WebHookURL", - matrixHomeserverURL: "Homeserver URL (with http(s):// and optionally port)", - "Internal Room Id": "Internal Room ID", - matrixDesc1: "You can find the internal room ID by looking in the advanced section of the room settings in your Matrix client. It should look like !QMdRCpUIfLwsfjxye6:home.server.", - matrixDesc2: "It is highly recommended you create a new user and do not use your own Matrix user's access token as it will allow full access to your account and all the rooms you joined. Instead, create a new user and only invite it to the room that you want to receive the notification in. You can get the access token by running {0}", - Method: "Method", - Body: "Body", - Headers: "Headers", - PushUrl: "Push URL", - HeadersInvalidFormat: "The request headers are not valid JSON: ", - BodyInvalidFormat: "The request body is not valid JSON: ", - "Monitor History": "Monitor History", - clearDataOlderThan: "Keep monitor history data for {0} days.", - PasswordsDoNotMatch: "Passwords do not match.", - records: "records", - "One record": "One record", - steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", - "Current User": "Current User", - recent: "Recent", - "Shrink Database": "Shrink Database", - Default: "Default", - headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", - bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", - "HTTP Options": "HTTP Options", - "Create Incident": "Create Incident", - "Switch to Light Theme": "Switch to Light Theme", - "Switch to Dark Theme": "Switch to Dark Theme", - "Show Tags": "Show Tags", - "Hide Tags": "Hide Tags", - Description: "Description", - "No monitors available.": "No monitors available.", - "Add one": "Add one", - "No Monitors": "No Monitors", - "Untitled Group": "Untitled Group", - Services: "Services", - Discard: "Discard", - Cancel: "Cancel", - "Powered by": "Powered by", }; diff --git a/src/languages/de-DE.js b/src/languages/de-DE.js index e5e53466c..e6b7710cc 100644 --- a/src/languages/de-DE.js +++ b/src/languages/de-DE.js @@ -304,26 +304,4 @@ export default { "One record": "Ein Eintrag", steamApiKeyDescription: "Um einen Steam Game Server zu überwachen, wird ein Steam Web-API-Schlüssel benötigt. Dieser kann hier registriert werden: ", "Current User": "Aktueller Benutzer", - clicksendsms: "ClickSend SMS", - apiCredentials: "API credentials", - recent: "Recent", - "Shrink Database": "Shrink Database", - Default: "Default", - headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", - bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", - "HTTP Options": "HTTP Options", - "Create Incident": "Create Incident", - "Switch to Light Theme": "Switch to Light Theme", - "Switch to Dark Theme": "Switch to Dark Theme", - "Show Tags": "Show Tags", - "Hide Tags": "Hide Tags", - Description: "Description", - "No monitors available.": "No monitors available.", - "Add one": "Add one", - "No Monitors": "No Monitors", - "Untitled Group": "Untitled Group", - Services: "Services", - Discard: "Discard", - Cancel: "Cancel", - "Powered by": "Powered by", }; diff --git a/src/languages/en.js b/src/languages/en.js index 9f84a03d9..bc3b66bac 100644 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -310,9 +310,10 @@ export default { Security: "Security", "Shrink Database": "Shrink Database", Default: "Default", - headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", - bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", + headersPlaceholder: "Example:\n\{\n \"HeaderName\": \"HeaderValue\"\n}", + bodyPlaceholder: "Example:\n\{\n \"key\": \"value\"\n}", "HTTP Options": "HTTP Options", + // Status page "Create Incident": "Create Incident", Title: "Title", Content: "Content", @@ -328,13 +329,13 @@ export default { "Switch to Dark Theme": "Switch to Dark Theme", "Show Tags": "Show Tags", "Hide Tags": "Hide Tags", - Description: "Description", + "Description": "Description", "No monitors available.": "No monitors available.", "Add one": "Add one", "No Monitors": "No Monitors", "Untitled Group": "Untitled Group", - Services: "Services", - Discard: "Discard", - Cancel: "Cancel", + "Services": "Services", + "Discard": "Discard", + "Cancel": "Cancel", "Powered by": "Powered by", }; diff --git a/src/languages/es-ES.js b/src/languages/es-ES.js index d036b7665..d772db060 100644 --- a/src/languages/es-ES.js +++ b/src/languages/es-ES.js @@ -203,128 +203,4 @@ export default { records: "registros", "One record": "Un registro", steamApiKeyDescription: "Para monitorear un servidor de juegos de Steam, necesita una clave Steam Web-API. Puede registrar su clave API aquí: ", - "Primary Base URL": "Primary Base URL", - "Push URL": "Push URL", - needPushEvery: "You should call this URL every {0} seconds.", - pushOptionalParams: "Optional parameters: {0}", - defaultNotificationName: "My {notification} Alert ({number})", - here: "here", - Required: "Required", - "Bot Token": "Bot Token", - wayToGetTelegramToken: "You can get a token from {0}.", - "Chat ID": "Chat ID", - supportTelegramChatID: "Support Direct Chat / Group / Channel's Chat ID", - wayToGetTelegramChatID: "You can get your chat ID by sending a message to the bot and going to this URL to view the chat_id:", - "YOUR BOT TOKEN HERE": "YOUR BOT TOKEN HERE", - chatIDNotFound: "Chat ID is not found; please send a message to this bot first", - "Post URL": "Post URL", - "Content Type": "Content Type", - webhookJsonDesc: "{0} is good for any modern HTTP servers such as Express.js", - webhookFormDataDesc: "{multipart} is good for PHP. The JSON will need to be parsed with {decodeFunction}", - secureOptionNone: "None / STARTTLS (25, 587)", - secureOptionTLS: "TLS (465)", - "Ignore TLS Error": "Ignore TLS Error", - "From Email": "From Email", - emailCustomSubject: "Custom Subject", - "To Email": "To Email", - smtpCC: "CC", - smtpBCC: "BCC", - "Discord Webhook URL": "Discord Webhook URL", - wayToGetDiscordURL: "You can get this by going to Server Settings -> Integrations -> Create Webhook", - "Bot Display Name": "Bot Display Name", - "Prefix Custom Message": "Prefix Custom Message", - "Hello @everyone is...": "Hello {'@'}everyone is...", - "Webhook URL": "Webhook URL", - wayToGetTeamsURL: "You can learn how to create a webhook URL {0}.", - Number: "Number", - Recipients: "Recipients", - needSignalAPI: "You need to have a signal client with REST API.", - wayToCheckSignalURL: "You can check this URL to view how to set one up:", - signalImportant: "IMPORTANT: You cannot mix groups and numbers in recipients!", - "Application Token": "Application Token", - "Server URL": "Server URL", - Priority: "Priority", - "Icon Emoji": "Icon Emoji", - "Channel Name": "Channel Name", - "Uptime Kuma URL": "Uptime Kuma URL", - aboutWebhooks: "More info about Webhooks on: {0}", - aboutChannelName: "Enter the channel name on {0} Channel Name field if you want to bypass the Webhook channel. Ex: #other-channel", - aboutKumaURL: "If you leave the Uptime Kuma URL field blank, it will default to the Project GitHub page.", - emojiCheatSheet: "Emoji cheat sheet: {0}", - clicksendsms: "ClickSend SMS", - "User Key": "User Key", - Device: "Device", - "Message Title": "Message Title", - "Notification Sound": "Notification Sound", - "More info on:": "More info on: {0}", - pushoverDesc1: "Emergency priority (2) has default 30 second timeout between retries and will expire after 1 hour.", - pushoverDesc2: "If you want to send notifications to different devices, fill out Device field.", - "SMS Type": "SMS Type", - octopushTypePremium: "Premium (Fast - recommended for alerting)", - octopushTypeLowCost: "Low Cost (Slow - sometimes blocked by operator)", - checkPrice: "Check {0} prices:", - apiCredentials: "API credentials", - octopushLegacyHint: "Do you use the legacy version of Octopush (2011-2020) or the new version?", - "Check octopush prices": "Check octopush prices {0}.", - octopushPhoneNumber: "Phone number (intl format, eg : +33612345678) ", - octopushSMSSender: "SMS Sender Name : 3-11 alphanumeric characters and space (a-zA-Z0-9)", - "LunaSea Device ID": "LunaSea Device ID", - "Apprise URL": "Apprise URL", - "Example:": "Example: {0}", - "Read more:": "Read more: {0}", - "Status:": "Status: {0}", - "Read more": "Read more", - appriseInstalled: "Apprise is installed.", - appriseNotInstalled: "Apprise is not installed. {0}", - "Access Token": "Access Token", - "Channel access token": "Channel access token", - "Line Developers Console": "Line Developers Console", - lineDevConsoleTo: "Line Developers Console - {0}", - "Basic Settings": "Basic Settings", - "User ID": "User ID", - "Messaging API": "Messaging API", - wayToGetLineChannelToken: "First access the {0}, create a provider and channel (Messaging API), then you can get the channel access token and user ID from the above mentioned menu items.", - "Icon URL": "Icon URL", - aboutIconURL: "You can provide a link to a picture in \"Icon URL\" to override the default profile picture. Will not be used if Icon Emoji is set.", - aboutMattermostChannelName: "You can override the default channel that the Webhook posts to by entering the channel name into \"Channel Name\" field. This needs to be enabled in the Mattermost Webhook settings. Ex: #other-channel", - matrix: "Matrix", - promosmsTypeEco: "SMS ECO - cheap but slow and often overloaded. Limited only to Polish recipients.", - promosmsTypeFlash: "SMS FLASH - Message will automatically show on recipient device. Limited only to Polish recipients.", - promosmsTypeFull: "SMS FULL - Premium tier of SMS, You can use your Sender Name (You need to register name first). Reliable for alerts.", - promosmsTypeSpeed: "SMS SPEED - Highest priority in system. Very quick and reliable but costly (about twice of SMS FULL price).", - promosmsPhoneNumber: "Phone number (for Polish recipient You can skip area codes)", - promosmsSMSSender: "SMS Sender Name : Pre-registred name or one of defaults: InfoSMS, SMS Info, MaxSMS, INFO, SMS", - "Feishu WebHookUrl": "Feishu WebHookURL", - matrixHomeserverURL: "Homeserver URL (with http(s):// and optionally port)", - "Internal Room Id": "Internal Room ID", - matrixDesc1: "You can find the internal room ID by looking in the advanced section of the room settings in your Matrix client. It should look like !QMdRCpUIfLwsfjxye6:home.server.", - matrixDesc2: "It is highly recommended you create a new user and do not use your own Matrix user's access token as it will allow full access to your account and all the rooms you joined. Instead, create a new user and only invite it to the room that you want to receive the notification in. You can get the access token by running {0}", - Method: "Method", - Body: "Body", - Headers: "Headers", - PushUrl: "Push URL", - HeadersInvalidFormat: "The request headers are not valid JSON: ", - BodyInvalidFormat: "The request body is not valid JSON: ", - PasswordsDoNotMatch: "Passwords do not match.", - "Current User": "Current User", - recent: "Recent", - "Shrink Database": "Shrink Database", - Default: "Default", - headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", - bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", - "HTTP Options": "HTTP Options", - "Create Incident": "Create Incident", - "Switch to Light Theme": "Switch to Light Theme", - "Switch to Dark Theme": "Switch to Dark Theme", - "Show Tags": "Show Tags", - "Hide Tags": "Hide Tags", - Description: "Description", - "No monitors available.": "No monitors available.", - "Add one": "Add one", - "No Monitors": "No Monitors", - "Untitled Group": "Untitled Group", - Services: "Services", - Discard: "Discard", - Cancel: "Cancel", - "Powered by": "Powered by", }; diff --git a/src/languages/et-EE.js b/src/languages/et-EE.js index 7bcbe7bc2..52439f5f6 100644 --- a/src/languages/et-EE.js +++ b/src/languages/et-EE.js @@ -197,133 +197,4 @@ export default { pushbullet: "Pushbullet", line: "LINE", mattermost: "Mattermost", - "Primary Base URL": "Primary Base URL", - "Push URL": "Push URL", - needPushEvery: "You should call this URL every {0} seconds.", - pushOptionalParams: "Optional parameters: {0}", - defaultNotificationName: "My {notification} Alert ({number})", - here: "here", - Required: "Required", - "Bot Token": "Bot Token", - wayToGetTelegramToken: "You can get a token from {0}.", - "Chat ID": "Chat ID", - supportTelegramChatID: "Support Direct Chat / Group / Channel's Chat ID", - wayToGetTelegramChatID: "You can get your chat ID by sending a message to the bot and going to this URL to view the chat_id:", - "YOUR BOT TOKEN HERE": "YOUR BOT TOKEN HERE", - chatIDNotFound: "Chat ID is not found; please send a message to this bot first", - "Post URL": "Post URL", - "Content Type": "Content Type", - webhookJsonDesc: "{0} is good for any modern HTTP servers such as Express.js", - webhookFormDataDesc: "{multipart} is good for PHP. The JSON will need to be parsed with {decodeFunction}", - secureOptionNone: "None / STARTTLS (25, 587)", - secureOptionTLS: "TLS (465)", - "Ignore TLS Error": "Ignore TLS Error", - "From Email": "From Email", - emailCustomSubject: "Custom Subject", - "To Email": "To Email", - smtpCC: "CC", - smtpBCC: "BCC", - "Discord Webhook URL": "Discord Webhook URL", - wayToGetDiscordURL: "You can get this by going to Server Settings -> Integrations -> Create Webhook", - "Bot Display Name": "Bot Display Name", - "Prefix Custom Message": "Prefix Custom Message", - "Hello @everyone is...": "Hello {'@'}everyone is...", - "Webhook URL": "Webhook URL", - wayToGetTeamsURL: "You can learn how to create a webhook URL {0}.", - Number: "Number", - Recipients: "Recipients", - needSignalAPI: "You need to have a signal client with REST API.", - wayToCheckSignalURL: "You can check this URL to view how to set one up:", - signalImportant: "IMPORTANT: You cannot mix groups and numbers in recipients!", - "Application Token": "Application Token", - "Server URL": "Server URL", - Priority: "Priority", - "Icon Emoji": "Icon Emoji", - "Channel Name": "Channel Name", - "Uptime Kuma URL": "Uptime Kuma URL", - aboutWebhooks: "More info about Webhooks on: {0}", - aboutChannelName: "Enter the channel name on {0} Channel Name field if you want to bypass the Webhook channel. Ex: #other-channel", - aboutKumaURL: "If you leave the Uptime Kuma URL field blank, it will default to the Project GitHub page.", - emojiCheatSheet: "Emoji cheat sheet: {0}", - clicksendsms: "ClickSend SMS", - "User Key": "User Key", - Device: "Device", - "Message Title": "Message Title", - "Notification Sound": "Notification Sound", - "More info on:": "More info on: {0}", - pushoverDesc1: "Emergency priority (2) has default 30 second timeout between retries and will expire after 1 hour.", - pushoverDesc2: "If you want to send notifications to different devices, fill out Device field.", - "SMS Type": "SMS Type", - octopushTypePremium: "Premium (Fast - recommended for alerting)", - octopushTypeLowCost: "Low Cost (Slow - sometimes blocked by operator)", - checkPrice: "Check {0} prices:", - apiCredentials: "API credentials", - octopushLegacyHint: "Do you use the legacy version of Octopush (2011-2020) or the new version?", - "Check octopush prices": "Check octopush prices {0}.", - octopushPhoneNumber: "Phone number (intl format, eg : +33612345678) ", - octopushSMSSender: "SMS Sender Name : 3-11 alphanumeric characters and space (a-zA-Z0-9)", - "LunaSea Device ID": "LunaSea Device ID", - "Apprise URL": "Apprise URL", - "Example:": "Example: {0}", - "Read more:": "Read more: {0}", - "Status:": "Status: {0}", - "Read more": "Read more", - appriseInstalled: "Apprise is installed.", - appriseNotInstalled: "Apprise is not installed. {0}", - "Access Token": "Access Token", - "Channel access token": "Channel access token", - "Line Developers Console": "Line Developers Console", - lineDevConsoleTo: "Line Developers Console - {0}", - "Basic Settings": "Basic Settings", - "User ID": "User ID", - "Messaging API": "Messaging API", - wayToGetLineChannelToken: "First access the {0}, create a provider and channel (Messaging API), then you can get the channel access token and user ID from the above mentioned menu items.", - "Icon URL": "Icon URL", - aboutIconURL: "You can provide a link to a picture in \"Icon URL\" to override the default profile picture. Will not be used if Icon Emoji is set.", - aboutMattermostChannelName: "You can override the default channel that the Webhook posts to by entering the channel name into \"Channel Name\" field. This needs to be enabled in the Mattermost Webhook settings. Ex: #other-channel", - matrix: "Matrix", - promosmsTypeEco: "SMS ECO - cheap but slow and often overloaded. Limited only to Polish recipients.", - promosmsTypeFlash: "SMS FLASH - Message will automatically show on recipient device. Limited only to Polish recipients.", - promosmsTypeFull: "SMS FULL - Premium tier of SMS, You can use your Sender Name (You need to register name first). Reliable for alerts.", - promosmsTypeSpeed: "SMS SPEED - Highest priority in system. Very quick and reliable but costly (about twice of SMS FULL price).", - promosmsPhoneNumber: "Phone number (for Polish recipient You can skip area codes)", - promosmsSMSSender: "SMS Sender Name : Pre-registred name or one of defaults: InfoSMS, SMS Info, MaxSMS, INFO, SMS", - "Feishu WebHookUrl": "Feishu WebHookURL", - matrixHomeserverURL: "Homeserver URL (with http(s):// and optionally port)", - "Internal Room Id": "Internal Room ID", - matrixDesc1: "You can find the internal room ID by looking in the advanced section of the room settings in your Matrix client. It should look like !QMdRCpUIfLwsfjxye6:home.server.", - matrixDesc2: "It is highly recommended you create a new user and do not use your own Matrix user's access token as it will allow full access to your account and all the rooms you joined. Instead, create a new user and only invite it to the room that you want to receive the notification in. You can get the access token by running {0}", - Method: "Method", - Body: "Body", - Headers: "Headers", - PushUrl: "Push URL", - HeadersInvalidFormat: "The request headers are not valid JSON: ", - BodyInvalidFormat: "The request body is not valid JSON: ", - "Monitor History": "Monitor History", - clearDataOlderThan: "Keep monitor history data for {0} days.", - PasswordsDoNotMatch: "Passwords do not match.", - records: "records", - "One record": "One record", - steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", - "Current User": "Current User", - recent: "Recent", - "Shrink Database": "Shrink Database", - Default: "Default", - headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", - bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", - "HTTP Options": "HTTP Options", - "Create Incident": "Create Incident", - "Switch to Light Theme": "Switch to Light Theme", - "Switch to Dark Theme": "Switch to Dark Theme", - "Show Tags": "Show Tags", - "Hide Tags": "Hide Tags", - Description: "Description", - "No monitors available.": "No monitors available.", - "Add one": "Add one", - "No Monitors": "No Monitors", - "Untitled Group": "Untitled Group", - Services: "Services", - Discard: "Discard", - Cancel: "Cancel", - "Powered by": "Powered by", }; diff --git a/src/languages/fa.js b/src/languages/fa.js index f5a8b6234..aa5b129f7 100644 --- a/src/languages/fa.js +++ b/src/languages/fa.js @@ -202,130 +202,4 @@ export default { pushbullet: "Pushbullet", line: "Line Messenger", mattermost: "Mattermost", - "Primary Base URL": "Primary Base URL", - "Push URL": "Push URL", - needPushEvery: "You should call this URL every {0} seconds.", - pushOptionalParams: "Optional parameters: {0}", - defaultNotificationName: "My {notification} Alert ({number})", - here: "here", - Required: "Required", - "Bot Token": "Bot Token", - wayToGetTelegramToken: "You can get a token from {0}.", - "Chat ID": "Chat ID", - supportTelegramChatID: "Support Direct Chat / Group / Channel's Chat ID", - wayToGetTelegramChatID: "You can get your chat ID by sending a message to the bot and going to this URL to view the chat_id:", - "YOUR BOT TOKEN HERE": "YOUR BOT TOKEN HERE", - chatIDNotFound: "Chat ID is not found; please send a message to this bot first", - "Post URL": "Post URL", - "Content Type": "Content Type", - webhookJsonDesc: "{0} is good for any modern HTTP servers such as Express.js", - webhookFormDataDesc: "{multipart} is good for PHP. The JSON will need to be parsed with {decodeFunction}", - secureOptionNone: "None / STARTTLS (25, 587)", - secureOptionTLS: "TLS (465)", - "Ignore TLS Error": "Ignore TLS Error", - "From Email": "From Email", - emailCustomSubject: "Custom Subject", - "To Email": "To Email", - smtpCC: "CC", - smtpBCC: "BCC", - "Discord Webhook URL": "Discord Webhook URL", - wayToGetDiscordURL: "You can get this by going to Server Settings -> Integrations -> Create Webhook", - "Bot Display Name": "Bot Display Name", - "Prefix Custom Message": "Prefix Custom Message", - "Hello @everyone is...": "Hello {'@'}everyone is...", - "Webhook URL": "Webhook URL", - wayToGetTeamsURL: "You can learn how to create a webhook URL {0}.", - Number: "Number", - Recipients: "Recipients", - needSignalAPI: "You need to have a signal client with REST API.", - wayToCheckSignalURL: "You can check this URL to view how to set one up:", - signalImportant: "IMPORTANT: You cannot mix groups and numbers in recipients!", - "Application Token": "Application Token", - "Server URL": "Server URL", - Priority: "Priority", - "Icon Emoji": "Icon Emoji", - "Channel Name": "Channel Name", - "Uptime Kuma URL": "Uptime Kuma URL", - aboutWebhooks: "More info about Webhooks on: {0}", - aboutChannelName: "Enter the channel name on {0} Channel Name field if you want to bypass the Webhook channel. Ex: #other-channel", - aboutKumaURL: "If you leave the Uptime Kuma URL field blank, it will default to the Project GitHub page.", - emojiCheatSheet: "Emoji cheat sheet: {0}", - clicksendsms: "ClickSend SMS", - "User Key": "User Key", - Device: "Device", - "Message Title": "Message Title", - "Notification Sound": "Notification Sound", - "More info on:": "More info on: {0}", - pushoverDesc1: "Emergency priority (2) has default 30 second timeout between retries and will expire after 1 hour.", - pushoverDesc2: "If you want to send notifications to different devices, fill out Device field.", - "SMS Type": "SMS Type", - octopushTypePremium: "Premium (Fast - recommended for alerting)", - octopushTypeLowCost: "Low Cost (Slow - sometimes blocked by operator)", - checkPrice: "Check {0} prices:", - apiCredentials: "API credentials", - octopushLegacyHint: "Do you use the legacy version of Octopush (2011-2020) or the new version?", - "Check octopush prices": "Check octopush prices {0}.", - octopushPhoneNumber: "Phone number (intl format, eg : +33612345678) ", - octopushSMSSender: "SMS Sender Name : 3-11 alphanumeric characters and space (a-zA-Z0-9)", - "LunaSea Device ID": "LunaSea Device ID", - "Apprise URL": "Apprise URL", - "Example:": "Example: {0}", - "Read more:": "Read more: {0}", - "Status:": "Status: {0}", - "Read more": "Read more", - appriseInstalled: "Apprise is installed.", - appriseNotInstalled: "Apprise is not installed. {0}", - "Access Token": "Access Token", - "Channel access token": "Channel access token", - "Line Developers Console": "Line Developers Console", - lineDevConsoleTo: "Line Developers Console - {0}", - "Basic Settings": "Basic Settings", - "User ID": "User ID", - "Messaging API": "Messaging API", - wayToGetLineChannelToken: "First access the {0}, create a provider and channel (Messaging API), then you can get the channel access token and user ID from the above mentioned menu items.", - "Icon URL": "Icon URL", - aboutIconURL: "You can provide a link to a picture in \"Icon URL\" to override the default profile picture. Will not be used if Icon Emoji is set.", - aboutMattermostChannelName: "You can override the default channel that the Webhook posts to by entering the channel name into \"Channel Name\" field. This needs to be enabled in the Mattermost Webhook settings. Ex: #other-channel", - matrix: "Matrix", - promosmsTypeEco: "SMS ECO - cheap but slow and often overloaded. Limited only to Polish recipients.", - promosmsTypeFlash: "SMS FLASH - Message will automatically show on recipient device. Limited only to Polish recipients.", - promosmsTypeFull: "SMS FULL - Premium tier of SMS, You can use your Sender Name (You need to register name first). Reliable for alerts.", - promosmsTypeSpeed: "SMS SPEED - Highest priority in system. Very quick and reliable but costly (about twice of SMS FULL price).", - promosmsPhoneNumber: "Phone number (for Polish recipient You can skip area codes)", - promosmsSMSSender: "SMS Sender Name : Pre-registred name or one of defaults: InfoSMS, SMS Info, MaxSMS, INFO, SMS", - "Feishu WebHookUrl": "Feishu WebHookURL", - matrixHomeserverURL: "Homeserver URL (with http(s):// and optionally port)", - "Internal Room Id": "Internal Room ID", - matrixDesc1: "You can find the internal room ID by looking in the advanced section of the room settings in your Matrix client. It should look like !QMdRCpUIfLwsfjxye6:home.server.", - matrixDesc2: "It is highly recommended you create a new user and do not use your own Matrix user's access token as it will allow full access to your account and all the rooms you joined. Instead, create a new user and only invite it to the room that you want to receive the notification in. You can get the access token by running {0}", - Method: "Method", - Body: "Body", - Headers: "Headers", - PushUrl: "Push URL", - HeadersInvalidFormat: "The request headers are not valid JSON: ", - BodyInvalidFormat: "The request body is not valid JSON: ", - "Monitor History": "Monitor History", - clearDataOlderThan: "Keep monitor history data for {0} days.", - PasswordsDoNotMatch: "Passwords do not match.", - steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", - "Current User": "Current User", - recent: "Recent", - "Shrink Database": "Shrink Database", - Default: "Default", - headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", - bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", - "HTTP Options": "HTTP Options", - "Create Incident": "Create Incident", - "Switch to Light Theme": "Switch to Light Theme", - "Switch to Dark Theme": "Switch to Dark Theme", - "Show Tags": "Show Tags", - "Hide Tags": "Hide Tags", - Description: "Description", - "No monitors available.": "No monitors available.", - "Add one": "Add one", - "No Monitors": "No Monitors", - "Untitled Group": "Untitled Group", - Services: "Services", - Discard: "Discard", - Cancel: "Cancel", }; diff --git a/src/languages/fr-FR.js b/src/languages/fr-FR.js index afc55489d..92083a387 100644 --- a/src/languages/fr-FR.js +++ b/src/languages/fr-FR.js @@ -304,26 +304,4 @@ export default { steamApiKeyDescription: "Pour surveiller un serveur Steam, vous avez besoin d'une clé Steam Web-API. Vous pouvez enregistrer votre clé ici: ", "Current User": "Utilisateur actuel", recent: "Récent", - "Push URL": "Push URL", - needPushEvery: "You should call this URL every {0} seconds.", - pushOptionalParams: "Optional parameters: {0}", - "Shrink Database": "Shrink Database", - Default: "Default", - headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", - bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", - "HTTP Options": "HTTP Options", - "Create Incident": "Create Incident", - "Switch to Light Theme": "Switch to Light Theme", - "Switch to Dark Theme": "Switch to Dark Theme", - "Show Tags": "Show Tags", - "Hide Tags": "Hide Tags", - Description: "Description", - "No monitors available.": "No monitors available.", - "Add one": "Add one", - "No Monitors": "No Monitors", - "Untitled Group": "Untitled Group", - Services: "Services", - Discard: "Discard", - Cancel: "Cancel", - "Powered by": "Powered by", }; diff --git a/src/languages/hr-HR.js b/src/languages/hr-HR.js index eb88e6b49..01674dce8 100644 --- a/src/languages/hr-HR.js +++ b/src/languages/hr-HR.js @@ -308,23 +308,4 @@ export default { steamApiKeyDescription: "Za praćenje Steam poslužitelja za igru, potrebno je imati Steam Web-API ključ. Možete registrirati vlastiti ključ ovdje: ", "Current User": "Trenutni korisnik", recent: "Nedavno", - "Shrink Database": "Shrink Database", - Default: "Default", - headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", - bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", - "HTTP Options": "HTTP Options", - "Create Incident": "Create Incident", - "Switch to Light Theme": "Switch to Light Theme", - "Switch to Dark Theme": "Switch to Dark Theme", - "Show Tags": "Show Tags", - "Hide Tags": "Hide Tags", - Description: "Description", - "No monitors available.": "No monitors available.", - "Add one": "Add one", - "No Monitors": "No Monitors", - "Untitled Group": "Untitled Group", - Services: "Services", - Discard: "Discard", - Cancel: "Cancel", - "Powered by": "Powered by", }; diff --git a/src/languages/hu.js b/src/languages/hu.js index 5af4fee2c..47ac72d64 100644 --- a/src/languages/hu.js +++ b/src/languages/hu.js @@ -197,133 +197,4 @@ export default { line: "Line Messenger", mattermost: "Mattermost", "Status Page": "Status Page", - "Primary Base URL": "Primary Base URL", - "Push URL": "Push URL", - needPushEvery: "You should call this URL every {0} seconds.", - pushOptionalParams: "Optional parameters: {0}", - defaultNotificationName: "My {notification} Alert ({number})", - here: "here", - Required: "Required", - "Bot Token": "Bot Token", - wayToGetTelegramToken: "You can get a token from {0}.", - "Chat ID": "Chat ID", - supportTelegramChatID: "Support Direct Chat / Group / Channel's Chat ID", - wayToGetTelegramChatID: "You can get your chat ID by sending a message to the bot and going to this URL to view the chat_id:", - "YOUR BOT TOKEN HERE": "YOUR BOT TOKEN HERE", - chatIDNotFound: "Chat ID is not found; please send a message to this bot first", - "Post URL": "Post URL", - "Content Type": "Content Type", - webhookJsonDesc: "{0} is good for any modern HTTP servers such as Express.js", - webhookFormDataDesc: "{multipart} is good for PHP. The JSON will need to be parsed with {decodeFunction}", - secureOptionNone: "None / STARTTLS (25, 587)", - secureOptionTLS: "TLS (465)", - "Ignore TLS Error": "Ignore TLS Error", - "From Email": "From Email", - emailCustomSubject: "Custom Subject", - "To Email": "To Email", - smtpCC: "CC", - smtpBCC: "BCC", - "Discord Webhook URL": "Discord Webhook URL", - wayToGetDiscordURL: "You can get this by going to Server Settings -> Integrations -> Create Webhook", - "Bot Display Name": "Bot Display Name", - "Prefix Custom Message": "Prefix Custom Message", - "Hello @everyone is...": "Hello {'@'}everyone is...", - "Webhook URL": "Webhook URL", - wayToGetTeamsURL: "You can learn how to create a webhook URL {0}.", - Number: "Number", - Recipients: "Recipients", - needSignalAPI: "You need to have a signal client with REST API.", - wayToCheckSignalURL: "You can check this URL to view how to set one up:", - signalImportant: "IMPORTANT: You cannot mix groups and numbers in recipients!", - "Application Token": "Application Token", - "Server URL": "Server URL", - Priority: "Priority", - "Icon Emoji": "Icon Emoji", - "Channel Name": "Channel Name", - "Uptime Kuma URL": "Uptime Kuma URL", - aboutWebhooks: "More info about Webhooks on: {0}", - aboutChannelName: "Enter the channel name on {0} Channel Name field if you want to bypass the Webhook channel. Ex: #other-channel", - aboutKumaURL: "If you leave the Uptime Kuma URL field blank, it will default to the Project GitHub page.", - emojiCheatSheet: "Emoji cheat sheet: {0}", - clicksendsms: "ClickSend SMS", - "User Key": "User Key", - Device: "Device", - "Message Title": "Message Title", - "Notification Sound": "Notification Sound", - "More info on:": "More info on: {0}", - pushoverDesc1: "Emergency priority (2) has default 30 second timeout between retries and will expire after 1 hour.", - pushoverDesc2: "If you want to send notifications to different devices, fill out Device field.", - "SMS Type": "SMS Type", - octopushTypePremium: "Premium (Fast - recommended for alerting)", - octopushTypeLowCost: "Low Cost (Slow - sometimes blocked by operator)", - checkPrice: "Check {0} prices:", - apiCredentials: "API credentials", - octopushLegacyHint: "Do you use the legacy version of Octopush (2011-2020) or the new version?", - "Check octopush prices": "Check octopush prices {0}.", - octopushPhoneNumber: "Phone number (intl format, eg : +33612345678) ", - octopushSMSSender: "SMS Sender Name : 3-11 alphanumeric characters and space (a-zA-Z0-9)", - "LunaSea Device ID": "LunaSea Device ID", - "Apprise URL": "Apprise URL", - "Example:": "Example: {0}", - "Read more:": "Read more: {0}", - "Status:": "Status: {0}", - "Read more": "Read more", - appriseInstalled: "Apprise is installed.", - appriseNotInstalled: "Apprise is not installed. {0}", - "Access Token": "Access Token", - "Channel access token": "Channel access token", - "Line Developers Console": "Line Developers Console", - lineDevConsoleTo: "Line Developers Console - {0}", - "Basic Settings": "Basic Settings", - "User ID": "User ID", - "Messaging API": "Messaging API", - wayToGetLineChannelToken: "First access the {0}, create a provider and channel (Messaging API), then you can get the channel access token and user ID from the above mentioned menu items.", - "Icon URL": "Icon URL", - aboutIconURL: "You can provide a link to a picture in \"Icon URL\" to override the default profile picture. Will not be used if Icon Emoji is set.", - aboutMattermostChannelName: "You can override the default channel that the Webhook posts to by entering the channel name into \"Channel Name\" field. This needs to be enabled in the Mattermost Webhook settings. Ex: #other-channel", - matrix: "Matrix", - promosmsTypeEco: "SMS ECO - cheap but slow and often overloaded. Limited only to Polish recipients.", - promosmsTypeFlash: "SMS FLASH - Message will automatically show on recipient device. Limited only to Polish recipients.", - promosmsTypeFull: "SMS FULL - Premium tier of SMS, You can use your Sender Name (You need to register name first). Reliable for alerts.", - promosmsTypeSpeed: "SMS SPEED - Highest priority in system. Very quick and reliable but costly (about twice of SMS FULL price).", - promosmsPhoneNumber: "Phone number (for Polish recipient You can skip area codes)", - promosmsSMSSender: "SMS Sender Name : Pre-registred name or one of defaults: InfoSMS, SMS Info, MaxSMS, INFO, SMS", - "Feishu WebHookUrl": "Feishu WebHookURL", - matrixHomeserverURL: "Homeserver URL (with http(s):// and optionally port)", - "Internal Room Id": "Internal Room ID", - matrixDesc1: "You can find the internal room ID by looking in the advanced section of the room settings in your Matrix client. It should look like !QMdRCpUIfLwsfjxye6:home.server.", - matrixDesc2: "It is highly recommended you create a new user and do not use your own Matrix user's access token as it will allow full access to your account and all the rooms you joined. Instead, create a new user and only invite it to the room that you want to receive the notification in. You can get the access token by running {0}", - Method: "Method", - Body: "Body", - Headers: "Headers", - PushUrl: "Push URL", - HeadersInvalidFormat: "The request headers are not valid JSON: ", - BodyInvalidFormat: "The request body is not valid JSON: ", - "Monitor History": "Monitor History", - clearDataOlderThan: "Keep monitor history data for {0} days.", - PasswordsDoNotMatch: "Passwords do not match.", - records: "records", - "One record": "One record", - steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", - "Current User": "Current User", - recent: "Recent", - "Shrink Database": "Shrink Database", - Default: "Default", - headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", - bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", - "HTTP Options": "HTTP Options", - "Create Incident": "Create Incident", - "Switch to Light Theme": "Switch to Light Theme", - "Switch to Dark Theme": "Switch to Dark Theme", - "Show Tags": "Show Tags", - "Hide Tags": "Hide Tags", - Description: "Description", - "No monitors available.": "No monitors available.", - "Add one": "Add one", - "No Monitors": "No Monitors", - "Untitled Group": "Untitled Group", - Services: "Services", - Discard: "Discard", - Cancel: "Cancel", - "Powered by": "Powered by", }; diff --git a/src/languages/id-ID.js b/src/languages/id-ID.js index cf7abcb62..5bad2a7e5 100644 --- a/src/languages/id-ID.js +++ b/src/languages/id-ID.js @@ -280,51 +280,4 @@ export default { promosmsPhoneNumber: "Nomor telepon (untuk penerima Polandia Anda dapat melewati kode area)", promosmsSMSSender: "Nama Pengirim SMS : Nama pra-registrasi atau salah satu bawaan: InfoSMS, Info SMS, MaxSMS, INFO, SMS", "Feishu WebHookUrl": "Feishu WebHookUrl", - "Primary Base URL": "Primary Base URL", - "Push URL": "Push URL", - needPushEvery: "You should call this URL every {0} seconds.", - pushOptionalParams: "Optional parameters: {0}", - wayToGetTelegramToken: "You can get a token from {0}.", - emailCustomSubject: "Custom Subject", - clicksendsms: "ClickSend SMS", - checkPrice: "Check {0} prices:", - apiCredentials: "API credentials", - octopushLegacyHint: "Do you use the legacy version of Octopush (2011-2020) or the new version?", - matrixHomeserverURL: "Homeserver URL (with http(s):// and optionally port)", - "Internal Room Id": "Internal Room ID", - matrixDesc1: "You can find the internal room ID by looking in the advanced section of the room settings in your Matrix client. It should look like !QMdRCpUIfLwsfjxye6:home.server.", - matrixDesc2: "It is highly recommended you create a new user and do not use your own Matrix user's access token as it will allow full access to your account and all the rooms you joined. Instead, create a new user and only invite it to the room that you want to receive the notification in. You can get the access token by running {0}", - Method: "Method", - Body: "Body", - Headers: "Headers", - PushUrl: "Push URL", - HeadersInvalidFormat: "The request headers are not valid JSON: ", - BodyInvalidFormat: "The request body is not valid JSON: ", - "Monitor History": "Monitor History", - clearDataOlderThan: "Keep monitor history data for {0} days.", - PasswordsDoNotMatch: "Passwords do not match.", - records: "records", - "One record": "One record", - steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", - "Current User": "Current User", - recent: "Recent", - "Shrink Database": "Shrink Database", - Default: "Default", - headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", - bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", - "HTTP Options": "HTTP Options", - "Create Incident": "Create Incident", - "Switch to Light Theme": "Switch to Light Theme", - "Switch to Dark Theme": "Switch to Dark Theme", - "Show Tags": "Show Tags", - "Hide Tags": "Hide Tags", - Description: "Description", - "No monitors available.": "No monitors available.", - "Add one": "Add one", - "No Monitors": "No Monitors", - "Untitled Group": "Untitled Group", - Services: "Services", - Discard: "Discard", - Cancel: "Cancel", - "Powered by": "Powered by", }; diff --git a/src/languages/ja.js b/src/languages/ja.js index c0bf4a6bd..f96028e42 100644 --- a/src/languages/ja.js +++ b/src/languages/ja.js @@ -198,133 +198,4 @@ export default { pushbullet: "Pushbullet", line: "Line Messenger", mattermost: "Mattermost", - "Primary Base URL": "Primary Base URL", - "Push URL": "Push URL", - needPushEvery: "You should call this URL every {0} seconds.", - pushOptionalParams: "Optional parameters: {0}", - defaultNotificationName: "My {notification} Alert ({number})", - here: "here", - Required: "Required", - "Bot Token": "Bot Token", - wayToGetTelegramToken: "You can get a token from {0}.", - "Chat ID": "Chat ID", - supportTelegramChatID: "Support Direct Chat / Group / Channel's Chat ID", - wayToGetTelegramChatID: "You can get your chat ID by sending a message to the bot and going to this URL to view the chat_id:", - "YOUR BOT TOKEN HERE": "YOUR BOT TOKEN HERE", - chatIDNotFound: "Chat ID is not found; please send a message to this bot first", - "Post URL": "Post URL", - "Content Type": "Content Type", - webhookJsonDesc: "{0} is good for any modern HTTP servers such as Express.js", - webhookFormDataDesc: "{multipart} is good for PHP. The JSON will need to be parsed with {decodeFunction}", - secureOptionNone: "None / STARTTLS (25, 587)", - secureOptionTLS: "TLS (465)", - "Ignore TLS Error": "Ignore TLS Error", - "From Email": "From Email", - emailCustomSubject: "Custom Subject", - "To Email": "To Email", - smtpCC: "CC", - smtpBCC: "BCC", - "Discord Webhook URL": "Discord Webhook URL", - wayToGetDiscordURL: "You can get this by going to Server Settings -> Integrations -> Create Webhook", - "Bot Display Name": "Bot Display Name", - "Prefix Custom Message": "Prefix Custom Message", - "Hello @everyone is...": "Hello {'@'}everyone is...", - "Webhook URL": "Webhook URL", - wayToGetTeamsURL: "You can learn how to create a webhook URL {0}.", - Number: "Number", - Recipients: "Recipients", - needSignalAPI: "You need to have a signal client with REST API.", - wayToCheckSignalURL: "You can check this URL to view how to set one up:", - signalImportant: "IMPORTANT: You cannot mix groups and numbers in recipients!", - "Application Token": "Application Token", - "Server URL": "Server URL", - Priority: "Priority", - "Icon Emoji": "Icon Emoji", - "Channel Name": "Channel Name", - "Uptime Kuma URL": "Uptime Kuma URL", - aboutWebhooks: "More info about Webhooks on: {0}", - aboutChannelName: "Enter the channel name on {0} Channel Name field if you want to bypass the Webhook channel. Ex: #other-channel", - aboutKumaURL: "If you leave the Uptime Kuma URL field blank, it will default to the Project GitHub page.", - emojiCheatSheet: "Emoji cheat sheet: {0}", - clicksendsms: "ClickSend SMS", - "User Key": "User Key", - Device: "Device", - "Message Title": "Message Title", - "Notification Sound": "Notification Sound", - "More info on:": "More info on: {0}", - pushoverDesc1: "Emergency priority (2) has default 30 second timeout between retries and will expire after 1 hour.", - pushoverDesc2: "If you want to send notifications to different devices, fill out Device field.", - "SMS Type": "SMS Type", - octopushTypePremium: "Premium (Fast - recommended for alerting)", - octopushTypeLowCost: "Low Cost (Slow - sometimes blocked by operator)", - checkPrice: "Check {0} prices:", - apiCredentials: "API credentials", - octopushLegacyHint: "Do you use the legacy version of Octopush (2011-2020) or the new version?", - "Check octopush prices": "Check octopush prices {0}.", - octopushPhoneNumber: "Phone number (intl format, eg : +33612345678) ", - octopushSMSSender: "SMS Sender Name : 3-11 alphanumeric characters and space (a-zA-Z0-9)", - "LunaSea Device ID": "LunaSea Device ID", - "Apprise URL": "Apprise URL", - "Example:": "Example: {0}", - "Read more:": "Read more: {0}", - "Status:": "Status: {0}", - "Read more": "Read more", - appriseInstalled: "Apprise is installed.", - appriseNotInstalled: "Apprise is not installed. {0}", - "Access Token": "Access Token", - "Channel access token": "Channel access token", - "Line Developers Console": "Line Developers Console", - lineDevConsoleTo: "Line Developers Console - {0}", - "Basic Settings": "Basic Settings", - "User ID": "User ID", - "Messaging API": "Messaging API", - wayToGetLineChannelToken: "First access the {0}, create a provider and channel (Messaging API), then you can get the channel access token and user ID from the above mentioned menu items.", - "Icon URL": "Icon URL", - aboutIconURL: "You can provide a link to a picture in \"Icon URL\" to override the default profile picture. Will not be used if Icon Emoji is set.", - aboutMattermostChannelName: "You can override the default channel that the Webhook posts to by entering the channel name into \"Channel Name\" field. This needs to be enabled in the Mattermost Webhook settings. Ex: #other-channel", - matrix: "Matrix", - promosmsTypeEco: "SMS ECO - cheap but slow and often overloaded. Limited only to Polish recipients.", - promosmsTypeFlash: "SMS FLASH - Message will automatically show on recipient device. Limited only to Polish recipients.", - promosmsTypeFull: "SMS FULL - Premium tier of SMS, You can use your Sender Name (You need to register name first). Reliable for alerts.", - promosmsTypeSpeed: "SMS SPEED - Highest priority in system. Very quick and reliable but costly (about twice of SMS FULL price).", - promosmsPhoneNumber: "Phone number (for Polish recipient You can skip area codes)", - promosmsSMSSender: "SMS Sender Name : Pre-registred name or one of defaults: InfoSMS, SMS Info, MaxSMS, INFO, SMS", - "Feishu WebHookUrl": "Feishu WebHookURL", - matrixHomeserverURL: "Homeserver URL (with http(s):// and optionally port)", - "Internal Room Id": "Internal Room ID", - matrixDesc1: "You can find the internal room ID by looking in the advanced section of the room settings in your Matrix client. It should look like !QMdRCpUIfLwsfjxye6:home.server.", - matrixDesc2: "It is highly recommended you create a new user and do not use your own Matrix user's access token as it will allow full access to your account and all the rooms you joined. Instead, create a new user and only invite it to the room that you want to receive the notification in. You can get the access token by running {0}", - Method: "Method", - Body: "Body", - Headers: "Headers", - PushUrl: "Push URL", - HeadersInvalidFormat: "The request headers are not valid JSON: ", - BodyInvalidFormat: "The request body is not valid JSON: ", - "Monitor History": "Monitor History", - clearDataOlderThan: "Keep monitor history data for {0} days.", - PasswordsDoNotMatch: "Passwords do not match.", - records: "records", - "One record": "One record", - steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", - "Current User": "Current User", - recent: "Recent", - "Shrink Database": "Shrink Database", - Default: "Default", - headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", - bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", - "HTTP Options": "HTTP Options", - "Create Incident": "Create Incident", - "Switch to Light Theme": "Switch to Light Theme", - "Switch to Dark Theme": "Switch to Dark Theme", - "Show Tags": "Show Tags", - "Hide Tags": "Hide Tags", - Description: "Description", - "No monitors available.": "No monitors available.", - "Add one": "Add one", - "No Monitors": "No Monitors", - "Untitled Group": "Untitled Group", - Services: "Services", - Discard: "Discard", - Cancel: "Cancel", - "Powered by": "Powered by", }; diff --git a/src/languages/ko-KR.js b/src/languages/ko-KR.js index 457a41bf0..ad7b4337a 100644 --- a/src/languages/ko-KR.js +++ b/src/languages/ko-KR.js @@ -279,51 +279,4 @@ export default { promosmsTypeSpeed: "SMS SPEED - 시스템에서 가장 높은 우선순위예요. 매우 빠르고 신뢰할 수 있지만 비용이 많이 들어요 (SMS 전체 가격의 약 두 배).", promosmsPhoneNumber: "전화 번호 (폴란드 수신자라면 지역번호를 적지 않아도 돼요.)", promosmsSMSSender: "SMS 보내는 사람 이름 : 미리 등록된 이름 혹은 기본값 중 하나예요: InfoSMS, SMS Info, MaxSMS, INFO, SMS", - "Primary Base URL": "Primary Base URL", - "Push URL": "Push URL", - needPushEvery: "You should call this URL every {0} seconds.", - pushOptionalParams: "Optional parameters: {0}", - emailCustomSubject: "Custom Subject", - clicksendsms: "ClickSend SMS", - checkPrice: "Check {0} prices:", - apiCredentials: "API credentials", - octopushLegacyHint: "Do you use the legacy version of Octopush (2011-2020) or the new version?", - "Feishu WebHookUrl": "Feishu WebHookURL", - matrixHomeserverURL: "Homeserver URL (with http(s):// and optionally port)", - "Internal Room Id": "Internal Room ID", - matrixDesc1: "You can find the internal room ID by looking in the advanced section of the room settings in your Matrix client. It should look like !QMdRCpUIfLwsfjxye6:home.server.", - matrixDesc2: "It is highly recommended you create a new user and do not use your own Matrix user's access token as it will allow full access to your account and all the rooms you joined. Instead, create a new user and only invite it to the room that you want to receive the notification in. You can get the access token by running {0}", - Method: "Method", - Body: "Body", - Headers: "Headers", - PushUrl: "Push URL", - HeadersInvalidFormat: "The request headers are not valid JSON: ", - BodyInvalidFormat: "The request body is not valid JSON: ", - "Monitor History": "Monitor History", - clearDataOlderThan: "Keep monitor history data for {0} days.", - PasswordsDoNotMatch: "Passwords do not match.", - records: "records", - "One record": "One record", - steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", - "Current User": "Current User", - recent: "Recent", - "Shrink Database": "Shrink Database", - Default: "Default", - headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", - bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", - "HTTP Options": "HTTP Options", - "Create Incident": "Create Incident", - "Switch to Light Theme": "Switch to Light Theme", - "Switch to Dark Theme": "Switch to Dark Theme", - "Show Tags": "Show Tags", - "Hide Tags": "Hide Tags", - Description: "Description", - "No monitors available.": "No monitors available.", - "Add one": "Add one", - "No Monitors": "No Monitors", - "Untitled Group": "Untitled Group", - Services: "Services", - Discard: "Discard", - Cancel: "Cancel", - "Powered by": "Powered by", }; diff --git a/src/languages/nb-NO.js b/src/languages/nb-NO.js index 5c375d978..0e566a01c 100644 --- a/src/languages/nb-NO.js +++ b/src/languages/nb-NO.js @@ -279,51 +279,4 @@ export default { promosmsTypeSpeed: "SMS SPEED - Highest priority in system. Very quick and reliable but costly (about twice of SMS FULL price).", promosmsPhoneNumber: "Phone number (for Polish recipient You can skip area codes)", promosmsSMSSender: "SMS Sender Name : Pre-registred name or one of defaults: InfoSMS, SMS Info, MaxSMS, INFO, SMS", - "Primary Base URL": "Primary Base URL", - "Push URL": "Push URL", - needPushEvery: "You should call this URL every {0} seconds.", - pushOptionalParams: "Optional parameters: {0}", - emailCustomSubject: "Custom Subject", - clicksendsms: "ClickSend SMS", - checkPrice: "Check {0} prices:", - apiCredentials: "API credentials", - octopushLegacyHint: "Do you use the legacy version of Octopush (2011-2020) or the new version?", - "Feishu WebHookUrl": "Feishu WebHookURL", - matrixHomeserverURL: "Homeserver URL (with http(s):// and optionally port)", - "Internal Room Id": "Internal Room ID", - matrixDesc1: "You can find the internal room ID by looking in the advanced section of the room settings in your Matrix client. It should look like !QMdRCpUIfLwsfjxye6:home.server.", - matrixDesc2: "It is highly recommended you create a new user and do not use your own Matrix user's access token as it will allow full access to your account and all the rooms you joined. Instead, create a new user and only invite it to the room that you want to receive the notification in. You can get the access token by running {0}", - Method: "Method", - Body: "Body", - Headers: "Headers", - PushUrl: "Push URL", - HeadersInvalidFormat: "The request headers are not valid JSON: ", - BodyInvalidFormat: "The request body is not valid JSON: ", - "Monitor History": "Monitor History", - clearDataOlderThan: "Keep monitor history data for {0} days.", - PasswordsDoNotMatch: "Passwords do not match.", - records: "records", - "One record": "One record", - steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", - "Current User": "Current User", - recent: "Recent", - "Shrink Database": "Shrink Database", - Default: "Default", - headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", - bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", - "HTTP Options": "HTTP Options", - "Create Incident": "Create Incident", - "Switch to Light Theme": "Switch to Light Theme", - "Switch to Dark Theme": "Switch to Dark Theme", - "Show Tags": "Show Tags", - "Hide Tags": "Hide Tags", - Description: "Description", - "No monitors available.": "No monitors available.", - "Add one": "Add one", - "No Monitors": "No Monitors", - "Untitled Group": "Untitled Group", - Services: "Services", - Discard: "Discard", - Cancel: "Cancel", - "Powered by": "Powered by", }; diff --git a/src/languages/nl-NL.js b/src/languages/nl-NL.js index 1a684250b..ff18832d7 100644 --- a/src/languages/nl-NL.js +++ b/src/languages/nl-NL.js @@ -204,127 +204,4 @@ export default { PushUrl: "Push URL", HeadersInvalidFormat: "The request headers is geen geldige JSON: ", BodyInvalidFormat: "De request body is geen geldige JSON: ", - "Primary Base URL": "Primary Base URL", - "Push URL": "Push URL", - needPushEvery: "You should call this URL every {0} seconds.", - pushOptionalParams: "Optional parameters: {0}", - defaultNotificationName: "My {notification} Alert ({number})", - here: "here", - Required: "Required", - "Bot Token": "Bot Token", - wayToGetTelegramToken: "You can get a token from {0}.", - "Chat ID": "Chat ID", - supportTelegramChatID: "Support Direct Chat / Group / Channel's Chat ID", - wayToGetTelegramChatID: "You can get your chat ID by sending a message to the bot and going to this URL to view the chat_id:", - "YOUR BOT TOKEN HERE": "YOUR BOT TOKEN HERE", - chatIDNotFound: "Chat ID is not found; please send a message to this bot first", - "Post URL": "Post URL", - "Content Type": "Content Type", - webhookJsonDesc: "{0} is good for any modern HTTP servers such as Express.js", - webhookFormDataDesc: "{multipart} is good for PHP. The JSON will need to be parsed with {decodeFunction}", - secureOptionNone: "None / STARTTLS (25, 587)", - secureOptionTLS: "TLS (465)", - "Ignore TLS Error": "Ignore TLS Error", - "From Email": "From Email", - emailCustomSubject: "Custom Subject", - "To Email": "To Email", - smtpCC: "CC", - smtpBCC: "BCC", - "Discord Webhook URL": "Discord Webhook URL", - wayToGetDiscordURL: "You can get this by going to Server Settings -> Integrations -> Create Webhook", - "Bot Display Name": "Bot Display Name", - "Prefix Custom Message": "Prefix Custom Message", - "Hello @everyone is...": "Hello {'@'}everyone is...", - "Webhook URL": "Webhook URL", - wayToGetTeamsURL: "You can learn how to create a webhook URL {0}.", - Number: "Number", - Recipients: "Recipients", - needSignalAPI: "You need to have a signal client with REST API.", - wayToCheckSignalURL: "You can check this URL to view how to set one up:", - signalImportant: "IMPORTANT: You cannot mix groups and numbers in recipients!", - "Application Token": "Application Token", - "Server URL": "Server URL", - Priority: "Priority", - "Icon Emoji": "Icon Emoji", - "Channel Name": "Channel Name", - "Uptime Kuma URL": "Uptime Kuma URL", - aboutWebhooks: "More info about Webhooks on: {0}", - aboutChannelName: "Enter the channel name on {0} Channel Name field if you want to bypass the Webhook channel. Ex: #other-channel", - aboutKumaURL: "If you leave the Uptime Kuma URL field blank, it will default to the Project GitHub page.", - emojiCheatSheet: "Emoji cheat sheet: {0}", - clicksendsms: "ClickSend SMS", - "User Key": "User Key", - Device: "Device", - "Message Title": "Message Title", - "Notification Sound": "Notification Sound", - "More info on:": "More info on: {0}", - pushoverDesc1: "Emergency priority (2) has default 30 second timeout between retries and will expire after 1 hour.", - pushoverDesc2: "If you want to send notifications to different devices, fill out Device field.", - "SMS Type": "SMS Type", - octopushTypePremium: "Premium (Fast - recommended for alerting)", - octopushTypeLowCost: "Low Cost (Slow - sometimes blocked by operator)", - checkPrice: "Check {0} prices:", - apiCredentials: "API credentials", - octopushLegacyHint: "Do you use the legacy version of Octopush (2011-2020) or the new version?", - "Check octopush prices": "Check octopush prices {0}.", - octopushPhoneNumber: "Phone number (intl format, eg : +33612345678) ", - octopushSMSSender: "SMS Sender Name : 3-11 alphanumeric characters and space (a-zA-Z0-9)", - "LunaSea Device ID": "LunaSea Device ID", - "Apprise URL": "Apprise URL", - "Example:": "Example: {0}", - "Read more:": "Read more: {0}", - "Status:": "Status: {0}", - "Read more": "Read more", - appriseInstalled: "Apprise is installed.", - appriseNotInstalled: "Apprise is not installed. {0}", - "Access Token": "Access Token", - "Channel access token": "Channel access token", - "Line Developers Console": "Line Developers Console", - lineDevConsoleTo: "Line Developers Console - {0}", - "Basic Settings": "Basic Settings", - "User ID": "User ID", - "Messaging API": "Messaging API", - wayToGetLineChannelToken: "First access the {0}, create a provider and channel (Messaging API), then you can get the channel access token and user ID from the above mentioned menu items.", - "Icon URL": "Icon URL", - aboutIconURL: "You can provide a link to a picture in \"Icon URL\" to override the default profile picture. Will not be used if Icon Emoji is set.", - aboutMattermostChannelName: "You can override the default channel that the Webhook posts to by entering the channel name into \"Channel Name\" field. This needs to be enabled in the Mattermost Webhook settings. Ex: #other-channel", - matrix: "Matrix", - promosmsTypeEco: "SMS ECO - cheap but slow and often overloaded. Limited only to Polish recipients.", - promosmsTypeFlash: "SMS FLASH - Message will automatically show on recipient device. Limited only to Polish recipients.", - promosmsTypeFull: "SMS FULL - Premium tier of SMS, You can use your Sender Name (You need to register name first). Reliable for alerts.", - promosmsTypeSpeed: "SMS SPEED - Highest priority in system. Very quick and reliable but costly (about twice of SMS FULL price).", - promosmsPhoneNumber: "Phone number (for Polish recipient You can skip area codes)", - promosmsSMSSender: "SMS Sender Name : Pre-registred name or one of defaults: InfoSMS, SMS Info, MaxSMS, INFO, SMS", - "Feishu WebHookUrl": "Feishu WebHookURL", - matrixHomeserverURL: "Homeserver URL (with http(s):// and optionally port)", - "Internal Room Id": "Internal Room ID", - matrixDesc1: "You can find the internal room ID by looking in the advanced section of the room settings in your Matrix client. It should look like !QMdRCpUIfLwsfjxye6:home.server.", - matrixDesc2: "It is highly recommended you create a new user and do not use your own Matrix user's access token as it will allow full access to your account and all the rooms you joined. Instead, create a new user and only invite it to the room that you want to receive the notification in. You can get the access token by running {0}", - "Monitor History": "Monitor History", - clearDataOlderThan: "Keep monitor history data for {0} days.", - PasswordsDoNotMatch: "Passwords do not match.", - records: "records", - "One record": "One record", - steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", - "Current User": "Current User", - recent: "Recent", - "Shrink Database": "Shrink Database", - Default: "Default", - headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", - bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", - "HTTP Options": "HTTP Options", - "Create Incident": "Create Incident", - "Switch to Light Theme": "Switch to Light Theme", - "Switch to Dark Theme": "Switch to Dark Theme", - "Show Tags": "Show Tags", - "Hide Tags": "Hide Tags", - Description: "Description", - "No monitors available.": "No monitors available.", - "Add one": "Add one", - "No Monitors": "No Monitors", - "Untitled Group": "Untitled Group", - Services: "Services", - Discard: "Discard", - Cancel: "Cancel", - "Powered by": "Powered by", }; diff --git a/src/languages/pl.js b/src/languages/pl.js index fd0b70d67..082980d3b 100644 --- a/src/languages/pl.js +++ b/src/languages/pl.js @@ -307,23 +307,4 @@ export default { recent: "Ostatnie", clicksendsms: "ClickSend SMS", apiCredentials: "Poświadczenia API", - "Shrink Database": "Shrink Database", - Default: "Default", - headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", - bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", - "HTTP Options": "HTTP Options", - "Create Incident": "Create Incident", - "Switch to Light Theme": "Switch to Light Theme", - "Switch to Dark Theme": "Switch to Dark Theme", - "Show Tags": "Show Tags", - "Hide Tags": "Hide Tags", - Description: "Description", - "No monitors available.": "No monitors available.", - "Add one": "Add one", - "No Monitors": "No Monitors", - "Untitled Group": "Untitled Group", - Services: "Services", - Discard: "Discard", - Cancel: "Cancel", - "Powered by": "Powered by", }; diff --git a/src/languages/pt-BR.js b/src/languages/pt-BR.js index b2a1a63f0..70647fd9f 100644 --- a/src/languages/pt-BR.js +++ b/src/languages/pt-BR.js @@ -197,133 +197,4 @@ export default { pushbullet: "Pushbullet", line: "Line Messenger", mattermost: "Mattermost", - "Primary Base URL": "Primary Base URL", - "Push URL": "Push URL", - needPushEvery: "You should call this URL every {0} seconds.", - pushOptionalParams: "Optional parameters: {0}", - defaultNotificationName: "My {notification} Alert ({number})", - here: "here", - Required: "Required", - "Bot Token": "Bot Token", - wayToGetTelegramToken: "You can get a token from {0}.", - "Chat ID": "Chat ID", - supportTelegramChatID: "Support Direct Chat / Group / Channel's Chat ID", - wayToGetTelegramChatID: "You can get your chat ID by sending a message to the bot and going to this URL to view the chat_id:", - "YOUR BOT TOKEN HERE": "YOUR BOT TOKEN HERE", - chatIDNotFound: "Chat ID is not found; please send a message to this bot first", - "Post URL": "Post URL", - "Content Type": "Content Type", - webhookJsonDesc: "{0} is good for any modern HTTP servers such as Express.js", - webhookFormDataDesc: "{multipart} is good for PHP. The JSON will need to be parsed with {decodeFunction}", - secureOptionNone: "None / STARTTLS (25, 587)", - secureOptionTLS: "TLS (465)", - "Ignore TLS Error": "Ignore TLS Error", - "From Email": "From Email", - emailCustomSubject: "Custom Subject", - "To Email": "To Email", - smtpCC: "CC", - smtpBCC: "BCC", - "Discord Webhook URL": "Discord Webhook URL", - wayToGetDiscordURL: "You can get this by going to Server Settings -> Integrations -> Create Webhook", - "Bot Display Name": "Bot Display Name", - "Prefix Custom Message": "Prefix Custom Message", - "Hello @everyone is...": "Hello {'@'}everyone is...", - "Webhook URL": "Webhook URL", - wayToGetTeamsURL: "You can learn how to create a webhook URL {0}.", - Number: "Number", - Recipients: "Recipients", - needSignalAPI: "You need to have a signal client with REST API.", - wayToCheckSignalURL: "You can check this URL to view how to set one up:", - signalImportant: "IMPORTANT: You cannot mix groups and numbers in recipients!", - "Application Token": "Application Token", - "Server URL": "Server URL", - Priority: "Priority", - "Icon Emoji": "Icon Emoji", - "Channel Name": "Channel Name", - "Uptime Kuma URL": "Uptime Kuma URL", - aboutWebhooks: "More info about Webhooks on: {0}", - aboutChannelName: "Enter the channel name on {0} Channel Name field if you want to bypass the Webhook channel. Ex: #other-channel", - aboutKumaURL: "If you leave the Uptime Kuma URL field blank, it will default to the Project GitHub page.", - emojiCheatSheet: "Emoji cheat sheet: {0}", - clicksendsms: "ClickSend SMS", - "User Key": "User Key", - Device: "Device", - "Message Title": "Message Title", - "Notification Sound": "Notification Sound", - "More info on:": "More info on: {0}", - pushoverDesc1: "Emergency priority (2) has default 30 second timeout between retries and will expire after 1 hour.", - pushoverDesc2: "If you want to send notifications to different devices, fill out Device field.", - "SMS Type": "SMS Type", - octopushTypePremium: "Premium (Fast - recommended for alerting)", - octopushTypeLowCost: "Low Cost (Slow - sometimes blocked by operator)", - checkPrice: "Check {0} prices:", - apiCredentials: "API credentials", - octopushLegacyHint: "Do you use the legacy version of Octopush (2011-2020) or the new version?", - "Check octopush prices": "Check octopush prices {0}.", - octopushPhoneNumber: "Phone number (intl format, eg : +33612345678) ", - octopushSMSSender: "SMS Sender Name : 3-11 alphanumeric characters and space (a-zA-Z0-9)", - "LunaSea Device ID": "LunaSea Device ID", - "Apprise URL": "Apprise URL", - "Example:": "Example: {0}", - "Read more:": "Read more: {0}", - "Status:": "Status: {0}", - "Read more": "Read more", - appriseInstalled: "Apprise is installed.", - appriseNotInstalled: "Apprise is not installed. {0}", - "Access Token": "Access Token", - "Channel access token": "Channel access token", - "Line Developers Console": "Line Developers Console", - lineDevConsoleTo: "Line Developers Console - {0}", - "Basic Settings": "Basic Settings", - "User ID": "User ID", - "Messaging API": "Messaging API", - wayToGetLineChannelToken: "First access the {0}, create a provider and channel (Messaging API), then you can get the channel access token and user ID from the above mentioned menu items.", - "Icon URL": "Icon URL", - aboutIconURL: "You can provide a link to a picture in \"Icon URL\" to override the default profile picture. Will not be used if Icon Emoji is set.", - aboutMattermostChannelName: "You can override the default channel that the Webhook posts to by entering the channel name into \"Channel Name\" field. This needs to be enabled in the Mattermost Webhook settings. Ex: #other-channel", - matrix: "Matrix", - promosmsTypeEco: "SMS ECO - cheap but slow and often overloaded. Limited only to Polish recipients.", - promosmsTypeFlash: "SMS FLASH - Message will automatically show on recipient device. Limited only to Polish recipients.", - promosmsTypeFull: "SMS FULL - Premium tier of SMS, You can use your Sender Name (You need to register name first). Reliable for alerts.", - promosmsTypeSpeed: "SMS SPEED - Highest priority in system. Very quick and reliable but costly (about twice of SMS FULL price).", - promosmsPhoneNumber: "Phone number (for Polish recipient You can skip area codes)", - promosmsSMSSender: "SMS Sender Name : Pre-registred name or one of defaults: InfoSMS, SMS Info, MaxSMS, INFO, SMS", - "Feishu WebHookUrl": "Feishu WebHookURL", - matrixHomeserverURL: "Homeserver URL (with http(s):// and optionally port)", - "Internal Room Id": "Internal Room ID", - matrixDesc1: "You can find the internal room ID by looking in the advanced section of the room settings in your Matrix client. It should look like !QMdRCpUIfLwsfjxye6:home.server.", - matrixDesc2: "It is highly recommended you create a new user and do not use your own Matrix user's access token as it will allow full access to your account and all the rooms you joined. Instead, create a new user and only invite it to the room that you want to receive the notification in. You can get the access token by running {0}", - Method: "Method", - Body: "Body", - Headers: "Headers", - PushUrl: "Push URL", - HeadersInvalidFormat: "The request headers are not valid JSON: ", - BodyInvalidFormat: "The request body is not valid JSON: ", - "Monitor History": "Monitor History", - clearDataOlderThan: "Keep monitor history data for {0} days.", - PasswordsDoNotMatch: "Passwords do not match.", - records: "records", - "One record": "One record", - steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", - "Current User": "Current User", - recent: "Recent", - "Shrink Database": "Shrink Database", - Default: "Default", - headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", - bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", - "HTTP Options": "HTTP Options", - "Create Incident": "Create Incident", - "Switch to Light Theme": "Switch to Light Theme", - "Switch to Dark Theme": "Switch to Dark Theme", - "Show Tags": "Show Tags", - "Hide Tags": "Hide Tags", - Description: "Description", - "No monitors available.": "No monitors available.", - "Add one": "Add one", - "No Monitors": "No Monitors", - "Untitled Group": "Untitled Group", - Services: "Services", - Discard: "Discard", - Cancel: "Cancel", - "Powered by": "Powered by", }; diff --git a/src/languages/ru-RU.js b/src/languages/ru-RU.js index 19e0188cf..83f4de2dc 100644 --- a/src/languages/ru-RU.js +++ b/src/languages/ru-RU.js @@ -308,23 +308,4 @@ export default { records: "записей", "One record": "Одна запись", steamApiKeyDescription: "Для мониторинга игрового сервера Steam вам необходим Web-API ключ Steam. Зарегистрировать его можно здесь: ", - clicksendsms: "ClickSend SMS", - apiCredentials: "API credentials", - "Current User": "Current User", - recent: "Recent", - "Shrink Database": "Shrink Database", - Default: "Default", - headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", - bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", - "HTTP Options": "HTTP Options", - "Show Tags": "Show Tags", - "Hide Tags": "Hide Tags", - Description: "Description", - "No monitors available.": "No monitors available.", - "Add one": "Add one", - "No Monitors": "No Monitors", - "Untitled Group": "Untitled Group", - Services: "Services", - Cancel: "Cancel", - "Powered by": "Powered by", }; diff --git a/src/languages/sr-latn.js b/src/languages/sr-latn.js index 786ca460c..9e66aa541 100644 --- a/src/languages/sr-latn.js +++ b/src/languages/sr-latn.js @@ -198,133 +198,4 @@ export default { pushbullet: "Pushbullet", line: "Line Messenger", mattermost: "Mattermost", - "Primary Base URL": "Primary Base URL", - "Push URL": "Push URL", - needPushEvery: "You should call this URL every {0} seconds.", - pushOptionalParams: "Optional parameters: {0}", - defaultNotificationName: "My {notification} Alert ({number})", - here: "here", - Required: "Required", - "Bot Token": "Bot Token", - wayToGetTelegramToken: "You can get a token from {0}.", - "Chat ID": "Chat ID", - supportTelegramChatID: "Support Direct Chat / Group / Channel's Chat ID", - wayToGetTelegramChatID: "You can get your chat ID by sending a message to the bot and going to this URL to view the chat_id:", - "YOUR BOT TOKEN HERE": "YOUR BOT TOKEN HERE", - chatIDNotFound: "Chat ID is not found; please send a message to this bot first", - "Post URL": "Post URL", - "Content Type": "Content Type", - webhookJsonDesc: "{0} is good for any modern HTTP servers such as Express.js", - webhookFormDataDesc: "{multipart} is good for PHP. The JSON will need to be parsed with {decodeFunction}", - secureOptionNone: "None / STARTTLS (25, 587)", - secureOptionTLS: "TLS (465)", - "Ignore TLS Error": "Ignore TLS Error", - "From Email": "From Email", - emailCustomSubject: "Custom Subject", - "To Email": "To Email", - smtpCC: "CC", - smtpBCC: "BCC", - "Discord Webhook URL": "Discord Webhook URL", - wayToGetDiscordURL: "You can get this by going to Server Settings -> Integrations -> Create Webhook", - "Bot Display Name": "Bot Display Name", - "Prefix Custom Message": "Prefix Custom Message", - "Hello @everyone is...": "Hello {'@'}everyone is...", - "Webhook URL": "Webhook URL", - wayToGetTeamsURL: "You can learn how to create a webhook URL {0}.", - Number: "Number", - Recipients: "Recipients", - needSignalAPI: "You need to have a signal client with REST API.", - wayToCheckSignalURL: "You can check this URL to view how to set one up:", - signalImportant: "IMPORTANT: You cannot mix groups and numbers in recipients!", - "Application Token": "Application Token", - "Server URL": "Server URL", - Priority: "Priority", - "Icon Emoji": "Icon Emoji", - "Channel Name": "Channel Name", - "Uptime Kuma URL": "Uptime Kuma URL", - aboutWebhooks: "More info about Webhooks on: {0}", - aboutChannelName: "Enter the channel name on {0} Channel Name field if you want to bypass the Webhook channel. Ex: #other-channel", - aboutKumaURL: "If you leave the Uptime Kuma URL field blank, it will default to the Project GitHub page.", - emojiCheatSheet: "Emoji cheat sheet: {0}", - clicksendsms: "ClickSend SMS", - "User Key": "User Key", - Device: "Device", - "Message Title": "Message Title", - "Notification Sound": "Notification Sound", - "More info on:": "More info on: {0}", - pushoverDesc1: "Emergency priority (2) has default 30 second timeout between retries and will expire after 1 hour.", - pushoverDesc2: "If you want to send notifications to different devices, fill out Device field.", - "SMS Type": "SMS Type", - octopushTypePremium: "Premium (Fast - recommended for alerting)", - octopushTypeLowCost: "Low Cost (Slow - sometimes blocked by operator)", - checkPrice: "Check {0} prices:", - apiCredentials: "API credentials", - octopushLegacyHint: "Do you use the legacy version of Octopush (2011-2020) or the new version?", - "Check octopush prices": "Check octopush prices {0}.", - octopushPhoneNumber: "Phone number (intl format, eg : +33612345678) ", - octopushSMSSender: "SMS Sender Name : 3-11 alphanumeric characters and space (a-zA-Z0-9)", - "LunaSea Device ID": "LunaSea Device ID", - "Apprise URL": "Apprise URL", - "Example:": "Example: {0}", - "Read more:": "Read more: {0}", - "Status:": "Status: {0}", - "Read more": "Read more", - appriseInstalled: "Apprise is installed.", - appriseNotInstalled: "Apprise is not installed. {0}", - "Access Token": "Access Token", - "Channel access token": "Channel access token", - "Line Developers Console": "Line Developers Console", - lineDevConsoleTo: "Line Developers Console - {0}", - "Basic Settings": "Basic Settings", - "User ID": "User ID", - "Messaging API": "Messaging API", - wayToGetLineChannelToken: "First access the {0}, create a provider and channel (Messaging API), then you can get the channel access token and user ID from the above mentioned menu items.", - "Icon URL": "Icon URL", - aboutIconURL: "You can provide a link to a picture in \"Icon URL\" to override the default profile picture. Will not be used if Icon Emoji is set.", - aboutMattermostChannelName: "You can override the default channel that the Webhook posts to by entering the channel name into \"Channel Name\" field. This needs to be enabled in the Mattermost Webhook settings. Ex: #other-channel", - matrix: "Matrix", - promosmsTypeEco: "SMS ECO - cheap but slow and often overloaded. Limited only to Polish recipients.", - promosmsTypeFlash: "SMS FLASH - Message will automatically show on recipient device. Limited only to Polish recipients.", - promosmsTypeFull: "SMS FULL - Premium tier of SMS, You can use your Sender Name (You need to register name first). Reliable for alerts.", - promosmsTypeSpeed: "SMS SPEED - Highest priority in system. Very quick and reliable but costly (about twice of SMS FULL price).", - promosmsPhoneNumber: "Phone number (for Polish recipient You can skip area codes)", - promosmsSMSSender: "SMS Sender Name : Pre-registred name or one of defaults: InfoSMS, SMS Info, MaxSMS, INFO, SMS", - "Feishu WebHookUrl": "Feishu WebHookURL", - matrixHomeserverURL: "Homeserver URL (with http(s):// and optionally port)", - "Internal Room Id": "Internal Room ID", - matrixDesc1: "You can find the internal room ID by looking in the advanced section of the room settings in your Matrix client. It should look like !QMdRCpUIfLwsfjxye6:home.server.", - matrixDesc2: "It is highly recommended you create a new user and do not use your own Matrix user's access token as it will allow full access to your account and all the rooms you joined. Instead, create a new user and only invite it to the room that you want to receive the notification in. You can get the access token by running {0}", - Method: "Method", - Body: "Body", - Headers: "Headers", - PushUrl: "Push URL", - HeadersInvalidFormat: "The request headers are not valid JSON: ", - BodyInvalidFormat: "The request body is not valid JSON: ", - "Monitor History": "Monitor History", - clearDataOlderThan: "Keep monitor history data for {0} days.", - PasswordsDoNotMatch: "Passwords do not match.", - records: "records", - "One record": "One record", - steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", - "Current User": "Current User", - recent: "Recent", - "Shrink Database": "Shrink Database", - Default: "Default", - headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", - bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", - "HTTP Options": "HTTP Options", - "Create Incident": "Create Incident", - "Switch to Light Theme": "Switch to Light Theme", - "Switch to Dark Theme": "Switch to Dark Theme", - "Show Tags": "Show Tags", - "Hide Tags": "Hide Tags", - Description: "Description", - "No monitors available.": "No monitors available.", - "Add one": "Add one", - "No Monitors": "No Monitors", - "Untitled Group": "Untitled Group", - Services: "Services", - Discard: "Discard", - Cancel: "Cancel", - "Powered by": "Powered by", }; diff --git a/src/languages/sr.js b/src/languages/sr.js index 71c79df1e..df8e98997 100644 --- a/src/languages/sr.js +++ b/src/languages/sr.js @@ -198,133 +198,4 @@ export default { pushbullet: "Pushbullet", line: "Line Messenger", mattermost: "Mattermost", - "Primary Base URL": "Primary Base URL", - "Push URL": "Push URL", - needPushEvery: "You should call this URL every {0} seconds.", - pushOptionalParams: "Optional parameters: {0}", - defaultNotificationName: "My {notification} Alert ({number})", - here: "here", - Required: "Required", - "Bot Token": "Bot Token", - wayToGetTelegramToken: "You can get a token from {0}.", - "Chat ID": "Chat ID", - supportTelegramChatID: "Support Direct Chat / Group / Channel's Chat ID", - wayToGetTelegramChatID: "You can get your chat ID by sending a message to the bot and going to this URL to view the chat_id:", - "YOUR BOT TOKEN HERE": "YOUR BOT TOKEN HERE", - chatIDNotFound: "Chat ID is not found; please send a message to this bot first", - "Post URL": "Post URL", - "Content Type": "Content Type", - webhookJsonDesc: "{0} is good for any modern HTTP servers such as Express.js", - webhookFormDataDesc: "{multipart} is good for PHP. The JSON will need to be parsed with {decodeFunction}", - secureOptionNone: "None / STARTTLS (25, 587)", - secureOptionTLS: "TLS (465)", - "Ignore TLS Error": "Ignore TLS Error", - "From Email": "From Email", - emailCustomSubject: "Custom Subject", - "To Email": "To Email", - smtpCC: "CC", - smtpBCC: "BCC", - "Discord Webhook URL": "Discord Webhook URL", - wayToGetDiscordURL: "You can get this by going to Server Settings -> Integrations -> Create Webhook", - "Bot Display Name": "Bot Display Name", - "Prefix Custom Message": "Prefix Custom Message", - "Hello @everyone is...": "Hello {'@'}everyone is...", - "Webhook URL": "Webhook URL", - wayToGetTeamsURL: "You can learn how to create a webhook URL {0}.", - Number: "Number", - Recipients: "Recipients", - needSignalAPI: "You need to have a signal client with REST API.", - wayToCheckSignalURL: "You can check this URL to view how to set one up:", - signalImportant: "IMPORTANT: You cannot mix groups and numbers in recipients!", - "Application Token": "Application Token", - "Server URL": "Server URL", - Priority: "Priority", - "Icon Emoji": "Icon Emoji", - "Channel Name": "Channel Name", - "Uptime Kuma URL": "Uptime Kuma URL", - aboutWebhooks: "More info about Webhooks on: {0}", - aboutChannelName: "Enter the channel name on {0} Channel Name field if you want to bypass the Webhook channel. Ex: #other-channel", - aboutKumaURL: "If you leave the Uptime Kuma URL field blank, it will default to the Project GitHub page.", - emojiCheatSheet: "Emoji cheat sheet: {0}", - clicksendsms: "ClickSend SMS", - "User Key": "User Key", - Device: "Device", - "Message Title": "Message Title", - "Notification Sound": "Notification Sound", - "More info on:": "More info on: {0}", - pushoverDesc1: "Emergency priority (2) has default 30 second timeout between retries and will expire after 1 hour.", - pushoverDesc2: "If you want to send notifications to different devices, fill out Device field.", - "SMS Type": "SMS Type", - octopushTypePremium: "Premium (Fast - recommended for alerting)", - octopushTypeLowCost: "Low Cost (Slow - sometimes blocked by operator)", - checkPrice: "Check {0} prices:", - apiCredentials: "API credentials", - octopushLegacyHint: "Do you use the legacy version of Octopush (2011-2020) or the new version?", - "Check octopush prices": "Check octopush prices {0}.", - octopushPhoneNumber: "Phone number (intl format, eg : +33612345678) ", - octopushSMSSender: "SMS Sender Name : 3-11 alphanumeric characters and space (a-zA-Z0-9)", - "LunaSea Device ID": "LunaSea Device ID", - "Apprise URL": "Apprise URL", - "Example:": "Example: {0}", - "Read more:": "Read more: {0}", - "Status:": "Status: {0}", - "Read more": "Read more", - appriseInstalled: "Apprise is installed.", - appriseNotInstalled: "Apprise is not installed. {0}", - "Access Token": "Access Token", - "Channel access token": "Channel access token", - "Line Developers Console": "Line Developers Console", - lineDevConsoleTo: "Line Developers Console - {0}", - "Basic Settings": "Basic Settings", - "User ID": "User ID", - "Messaging API": "Messaging API", - wayToGetLineChannelToken: "First access the {0}, create a provider and channel (Messaging API), then you can get the channel access token and user ID from the above mentioned menu items.", - "Icon URL": "Icon URL", - aboutIconURL: "You can provide a link to a picture in \"Icon URL\" to override the default profile picture. Will not be used if Icon Emoji is set.", - aboutMattermostChannelName: "You can override the default channel that the Webhook posts to by entering the channel name into \"Channel Name\" field. This needs to be enabled in the Mattermost Webhook settings. Ex: #other-channel", - matrix: "Matrix", - promosmsTypeEco: "SMS ECO - cheap but slow and often overloaded. Limited only to Polish recipients.", - promosmsTypeFlash: "SMS FLASH - Message will automatically show on recipient device. Limited only to Polish recipients.", - promosmsTypeFull: "SMS FULL - Premium tier of SMS, You can use your Sender Name (You need to register name first). Reliable for alerts.", - promosmsTypeSpeed: "SMS SPEED - Highest priority in system. Very quick and reliable but costly (about twice of SMS FULL price).", - promosmsPhoneNumber: "Phone number (for Polish recipient You can skip area codes)", - promosmsSMSSender: "SMS Sender Name : Pre-registred name or one of defaults: InfoSMS, SMS Info, MaxSMS, INFO, SMS", - "Feishu WebHookUrl": "Feishu WebHookURL", - matrixHomeserverURL: "Homeserver URL (with http(s):// and optionally port)", - "Internal Room Id": "Internal Room ID", - matrixDesc1: "You can find the internal room ID by looking in the advanced section of the room settings in your Matrix client. It should look like !QMdRCpUIfLwsfjxye6:home.server.", - matrixDesc2: "It is highly recommended you create a new user and do not use your own Matrix user's access token as it will allow full access to your account and all the rooms you joined. Instead, create a new user and only invite it to the room that you want to receive the notification in. You can get the access token by running {0}", - Method: "Method", - Body: "Body", - Headers: "Headers", - PushUrl: "Push URL", - HeadersInvalidFormat: "The request headers are not valid JSON: ", - BodyInvalidFormat: "The request body is not valid JSON: ", - "Monitor History": "Monitor History", - clearDataOlderThan: "Keep monitor history data for {0} days.", - PasswordsDoNotMatch: "Passwords do not match.", - records: "records", - "One record": "One record", - steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", - "Current User": "Current User", - recent: "Recent", - "Shrink Database": "Shrink Database", - Default: "Default", - headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", - bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", - "HTTP Options": "HTTP Options", - "Create Incident": "Create Incident", - "Switch to Light Theme": "Switch to Light Theme", - "Switch to Dark Theme": "Switch to Dark Theme", - "Show Tags": "Show Tags", - "Hide Tags": "Hide Tags", - Description: "Description", - "No monitors available.": "No monitors available.", - "Add one": "Add one", - "No Monitors": "No Monitors", - "Untitled Group": "Untitled Group", - Services: "Services", - Discard: "Discard", - Cancel: "Cancel", - "Powered by": "Powered by", }; diff --git a/src/languages/sv-SE.js b/src/languages/sv-SE.js index 30f54ec44..e29d355c2 100644 --- a/src/languages/sv-SE.js +++ b/src/languages/sv-SE.js @@ -198,133 +198,4 @@ export default { pushbullet: "Pushbullet", line: "Line Messenger", mattermost: "Mattermost", - "Primary Base URL": "Primary Base URL", - "Push URL": "Push URL", - needPushEvery: "You should call this URL every {0} seconds.", - pushOptionalParams: "Optional parameters: {0}", - defaultNotificationName: "My {notification} Alert ({number})", - here: "here", - Required: "Required", - "Bot Token": "Bot Token", - wayToGetTelegramToken: "You can get a token from {0}.", - "Chat ID": "Chat ID", - supportTelegramChatID: "Support Direct Chat / Group / Channel's Chat ID", - wayToGetTelegramChatID: "You can get your chat ID by sending a message to the bot and going to this URL to view the chat_id:", - "YOUR BOT TOKEN HERE": "YOUR BOT TOKEN HERE", - chatIDNotFound: "Chat ID is not found; please send a message to this bot first", - "Post URL": "Post URL", - "Content Type": "Content Type", - webhookJsonDesc: "{0} is good for any modern HTTP servers such as Express.js", - webhookFormDataDesc: "{multipart} is good for PHP. The JSON will need to be parsed with {decodeFunction}", - secureOptionNone: "None / STARTTLS (25, 587)", - secureOptionTLS: "TLS (465)", - "Ignore TLS Error": "Ignore TLS Error", - "From Email": "From Email", - emailCustomSubject: "Custom Subject", - "To Email": "To Email", - smtpCC: "CC", - smtpBCC: "BCC", - "Discord Webhook URL": "Discord Webhook URL", - wayToGetDiscordURL: "You can get this by going to Server Settings -> Integrations -> Create Webhook", - "Bot Display Name": "Bot Display Name", - "Prefix Custom Message": "Prefix Custom Message", - "Hello @everyone is...": "Hello {'@'}everyone is...", - "Webhook URL": "Webhook URL", - wayToGetTeamsURL: "You can learn how to create a webhook URL {0}.", - Number: "Number", - Recipients: "Recipients", - needSignalAPI: "You need to have a signal client with REST API.", - wayToCheckSignalURL: "You can check this URL to view how to set one up:", - signalImportant: "IMPORTANT: You cannot mix groups and numbers in recipients!", - "Application Token": "Application Token", - "Server URL": "Server URL", - Priority: "Priority", - "Icon Emoji": "Icon Emoji", - "Channel Name": "Channel Name", - "Uptime Kuma URL": "Uptime Kuma URL", - aboutWebhooks: "More info about Webhooks on: {0}", - aboutChannelName: "Enter the channel name on {0} Channel Name field if you want to bypass the Webhook channel. Ex: #other-channel", - aboutKumaURL: "If you leave the Uptime Kuma URL field blank, it will default to the Project GitHub page.", - emojiCheatSheet: "Emoji cheat sheet: {0}", - clicksendsms: "ClickSend SMS", - "User Key": "User Key", - Device: "Device", - "Message Title": "Message Title", - "Notification Sound": "Notification Sound", - "More info on:": "More info on: {0}", - pushoverDesc1: "Emergency priority (2) has default 30 second timeout between retries and will expire after 1 hour.", - pushoverDesc2: "If you want to send notifications to different devices, fill out Device field.", - "SMS Type": "SMS Type", - octopushTypePremium: "Premium (Fast - recommended for alerting)", - octopushTypeLowCost: "Low Cost (Slow - sometimes blocked by operator)", - checkPrice: "Check {0} prices:", - apiCredentials: "API credentials", - octopushLegacyHint: "Do you use the legacy version of Octopush (2011-2020) or the new version?", - "Check octopush prices": "Check octopush prices {0}.", - octopushPhoneNumber: "Phone number (intl format, eg : +33612345678) ", - octopushSMSSender: "SMS Sender Name : 3-11 alphanumeric characters and space (a-zA-Z0-9)", - "LunaSea Device ID": "LunaSea Device ID", - "Apprise URL": "Apprise URL", - "Example:": "Example: {0}", - "Read more:": "Read more: {0}", - "Status:": "Status: {0}", - "Read more": "Read more", - appriseInstalled: "Apprise is installed.", - appriseNotInstalled: "Apprise is not installed. {0}", - "Access Token": "Access Token", - "Channel access token": "Channel access token", - "Line Developers Console": "Line Developers Console", - lineDevConsoleTo: "Line Developers Console - {0}", - "Basic Settings": "Basic Settings", - "User ID": "User ID", - "Messaging API": "Messaging API", - wayToGetLineChannelToken: "First access the {0}, create a provider and channel (Messaging API), then you can get the channel access token and user ID from the above mentioned menu items.", - "Icon URL": "Icon URL", - aboutIconURL: "You can provide a link to a picture in \"Icon URL\" to override the default profile picture. Will not be used if Icon Emoji is set.", - aboutMattermostChannelName: "You can override the default channel that the Webhook posts to by entering the channel name into \"Channel Name\" field. This needs to be enabled in the Mattermost Webhook settings. Ex: #other-channel", - matrix: "Matrix", - promosmsTypeEco: "SMS ECO - cheap but slow and often overloaded. Limited only to Polish recipients.", - promosmsTypeFlash: "SMS FLASH - Message will automatically show on recipient device. Limited only to Polish recipients.", - promosmsTypeFull: "SMS FULL - Premium tier of SMS, You can use your Sender Name (You need to register name first). Reliable for alerts.", - promosmsTypeSpeed: "SMS SPEED - Highest priority in system. Very quick and reliable but costly (about twice of SMS FULL price).", - promosmsPhoneNumber: "Phone number (for Polish recipient You can skip area codes)", - promosmsSMSSender: "SMS Sender Name : Pre-registred name or one of defaults: InfoSMS, SMS Info, MaxSMS, INFO, SMS", - "Feishu WebHookUrl": "Feishu WebHookURL", - matrixHomeserverURL: "Homeserver URL (with http(s):// and optionally port)", - "Internal Room Id": "Internal Room ID", - matrixDesc1: "You can find the internal room ID by looking in the advanced section of the room settings in your Matrix client. It should look like !QMdRCpUIfLwsfjxye6:home.server.", - matrixDesc2: "It is highly recommended you create a new user and do not use your own Matrix user's access token as it will allow full access to your account and all the rooms you joined. Instead, create a new user and only invite it to the room that you want to receive the notification in. You can get the access token by running {0}", - Method: "Method", - Body: "Body", - Headers: "Headers", - PushUrl: "Push URL", - HeadersInvalidFormat: "The request headers are not valid JSON: ", - BodyInvalidFormat: "The request body is not valid JSON: ", - "Monitor History": "Monitor History", - clearDataOlderThan: "Keep monitor history data for {0} days.", - PasswordsDoNotMatch: "Passwords do not match.", - records: "records", - "One record": "One record", - steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", - "Current User": "Current User", - recent: "Recent", - "Shrink Database": "Shrink Database", - Default: "Default", - headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", - bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", - "HTTP Options": "HTTP Options", - "Create Incident": "Create Incident", - "Switch to Light Theme": "Switch to Light Theme", - "Switch to Dark Theme": "Switch to Dark Theme", - "Show Tags": "Show Tags", - "Hide Tags": "Hide Tags", - Description: "Description", - "No monitors available.": "No monitors available.", - "Add one": "Add one", - "No Monitors": "No Monitors", - "Untitled Group": "Untitled Group", - Services: "Services", - Discard: "Discard", - Cancel: "Cancel", - "Powered by": "Powered by", }; diff --git a/src/languages/tr-TR.js b/src/languages/tr-TR.js index cc90cb5c6..e26306037 100644 --- a/src/languages/tr-TR.js +++ b/src/languages/tr-TR.js @@ -197,133 +197,4 @@ export default { pushbullet: "Pushbullet", line: "Line Messenger", mattermost: "Mattermost", - "Primary Base URL": "Primary Base URL", - "Push URL": "Push URL", - needPushEvery: "You should call this URL every {0} seconds.", - pushOptionalParams: "Optional parameters: {0}", - defaultNotificationName: "My {notification} Alert ({number})", - here: "here", - Required: "Required", - "Bot Token": "Bot Token", - wayToGetTelegramToken: "You can get a token from {0}.", - "Chat ID": "Chat ID", - supportTelegramChatID: "Support Direct Chat / Group / Channel's Chat ID", - wayToGetTelegramChatID: "You can get your chat ID by sending a message to the bot and going to this URL to view the chat_id:", - "YOUR BOT TOKEN HERE": "YOUR BOT TOKEN HERE", - chatIDNotFound: "Chat ID is not found; please send a message to this bot first", - "Post URL": "Post URL", - "Content Type": "Content Type", - webhookJsonDesc: "{0} is good for any modern HTTP servers such as Express.js", - webhookFormDataDesc: "{multipart} is good for PHP. The JSON will need to be parsed with {decodeFunction}", - secureOptionNone: "None / STARTTLS (25, 587)", - secureOptionTLS: "TLS (465)", - "Ignore TLS Error": "Ignore TLS Error", - "From Email": "From Email", - emailCustomSubject: "Custom Subject", - "To Email": "To Email", - smtpCC: "CC", - smtpBCC: "BCC", - "Discord Webhook URL": "Discord Webhook URL", - wayToGetDiscordURL: "You can get this by going to Server Settings -> Integrations -> Create Webhook", - "Bot Display Name": "Bot Display Name", - "Prefix Custom Message": "Prefix Custom Message", - "Hello @everyone is...": "Hello {'@'}everyone is...", - "Webhook URL": "Webhook URL", - wayToGetTeamsURL: "You can learn how to create a webhook URL {0}.", - Number: "Number", - Recipients: "Recipients", - needSignalAPI: "You need to have a signal client with REST API.", - wayToCheckSignalURL: "You can check this URL to view how to set one up:", - signalImportant: "IMPORTANT: You cannot mix groups and numbers in recipients!", - "Application Token": "Application Token", - "Server URL": "Server URL", - Priority: "Priority", - "Icon Emoji": "Icon Emoji", - "Channel Name": "Channel Name", - "Uptime Kuma URL": "Uptime Kuma URL", - aboutWebhooks: "More info about Webhooks on: {0}", - aboutChannelName: "Enter the channel name on {0} Channel Name field if you want to bypass the Webhook channel. Ex: #other-channel", - aboutKumaURL: "If you leave the Uptime Kuma URL field blank, it will default to the Project GitHub page.", - emojiCheatSheet: "Emoji cheat sheet: {0}", - clicksendsms: "ClickSend SMS", - "User Key": "User Key", - Device: "Device", - "Message Title": "Message Title", - "Notification Sound": "Notification Sound", - "More info on:": "More info on: {0}", - pushoverDesc1: "Emergency priority (2) has default 30 second timeout between retries and will expire after 1 hour.", - pushoverDesc2: "If you want to send notifications to different devices, fill out Device field.", - "SMS Type": "SMS Type", - octopushTypePremium: "Premium (Fast - recommended for alerting)", - octopushTypeLowCost: "Low Cost (Slow - sometimes blocked by operator)", - checkPrice: "Check {0} prices:", - apiCredentials: "API credentials", - octopushLegacyHint: "Do you use the legacy version of Octopush (2011-2020) or the new version?", - "Check octopush prices": "Check octopush prices {0}.", - octopushPhoneNumber: "Phone number (intl format, eg : +33612345678) ", - octopushSMSSender: "SMS Sender Name : 3-11 alphanumeric characters and space (a-zA-Z0-9)", - "LunaSea Device ID": "LunaSea Device ID", - "Apprise URL": "Apprise URL", - "Example:": "Example: {0}", - "Read more:": "Read more: {0}", - "Status:": "Status: {0}", - "Read more": "Read more", - appriseInstalled: "Apprise is installed.", - appriseNotInstalled: "Apprise is not installed. {0}", - "Access Token": "Access Token", - "Channel access token": "Channel access token", - "Line Developers Console": "Line Developers Console", - lineDevConsoleTo: "Line Developers Console - {0}", - "Basic Settings": "Basic Settings", - "User ID": "User ID", - "Messaging API": "Messaging API", - wayToGetLineChannelToken: "First access the {0}, create a provider and channel (Messaging API), then you can get the channel access token and user ID from the above mentioned menu items.", - "Icon URL": "Icon URL", - aboutIconURL: "You can provide a link to a picture in \"Icon URL\" to override the default profile picture. Will not be used if Icon Emoji is set.", - aboutMattermostChannelName: "You can override the default channel that the Webhook posts to by entering the channel name into \"Channel Name\" field. This needs to be enabled in the Mattermost Webhook settings. Ex: #other-channel", - matrix: "Matrix", - promosmsTypeEco: "SMS ECO - cheap but slow and often overloaded. Limited only to Polish recipients.", - promosmsTypeFlash: "SMS FLASH - Message will automatically show on recipient device. Limited only to Polish recipients.", - promosmsTypeFull: "SMS FULL - Premium tier of SMS, You can use your Sender Name (You need to register name first). Reliable for alerts.", - promosmsTypeSpeed: "SMS SPEED - Highest priority in system. Very quick and reliable but costly (about twice of SMS FULL price).", - promosmsPhoneNumber: "Phone number (for Polish recipient You can skip area codes)", - promosmsSMSSender: "SMS Sender Name : Pre-registred name or one of defaults: InfoSMS, SMS Info, MaxSMS, INFO, SMS", - "Feishu WebHookUrl": "Feishu WebHookURL", - matrixHomeserverURL: "Homeserver URL (with http(s):// and optionally port)", - "Internal Room Id": "Internal Room ID", - matrixDesc1: "You can find the internal room ID by looking in the advanced section of the room settings in your Matrix client. It should look like !QMdRCpUIfLwsfjxye6:home.server.", - matrixDesc2: "It is highly recommended you create a new user and do not use your own Matrix user's access token as it will allow full access to your account and all the rooms you joined. Instead, create a new user and only invite it to the room that you want to receive the notification in. You can get the access token by running {0}", - Method: "Method", - Body: "Body", - Headers: "Headers", - PushUrl: "Push URL", - HeadersInvalidFormat: "The request headers are not valid JSON: ", - BodyInvalidFormat: "The request body is not valid JSON: ", - "Monitor History": "Monitor History", - clearDataOlderThan: "Keep monitor history data for {0} days.", - PasswordsDoNotMatch: "Passwords do not match.", - records: "records", - "One record": "One record", - steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", - "Current User": "Current User", - recent: "Recent", - "Shrink Database": "Shrink Database", - Default: "Default", - headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", - bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", - "HTTP Options": "HTTP Options", - "Create Incident": "Create Incident", - "Switch to Light Theme": "Switch to Light Theme", - "Switch to Dark Theme": "Switch to Dark Theme", - "Show Tags": "Show Tags", - "Hide Tags": "Hide Tags", - Description: "Description", - "No monitors available.": "No monitors available.", - "Add one": "Add one", - "No Monitors": "No Monitors", - "Untitled Group": "Untitled Group", - Services: "Services", - Discard: "Discard", - Cancel: "Cancel", - "Powered by": "Powered by", }; diff --git a/src/languages/vi.js b/src/languages/vi.js index 6e8a2e4ae..0bfa3f208 100644 --- a/src/languages/vi.js +++ b/src/languages/vi.js @@ -280,51 +280,4 @@ export default { promosmsPhoneNumber: "Số điện thoại (Bỏ qua mã vùng với người Ba Lan)", promosmsSMSSender: "SMS Tên người gửi: Tên đã đăng ký trước hoặc tên mặc định: InfoSMS, SMS Info, MaxSMS, INFO, SMS", "Feishu WebHookUrl": "Feishu WebHookUrl", - "Primary Base URL": "Primary Base URL", - "Push URL": "Push URL", - needPushEvery: "You should call this URL every {0} seconds.", - pushOptionalParams: "Optional parameters: {0}", - wayToGetTelegramToken: "You can get a token from {0}.", - emailCustomSubject: "Custom Subject", - clicksendsms: "ClickSend SMS", - checkPrice: "Check {0} prices:", - apiCredentials: "API credentials", - octopushLegacyHint: "Do you use the legacy version of Octopush (2011-2020) or the new version?", - matrixHomeserverURL: "Homeserver URL (with http(s):// and optionally port)", - "Internal Room Id": "Internal Room ID", - matrixDesc1: "You can find the internal room ID by looking in the advanced section of the room settings in your Matrix client. It should look like !QMdRCpUIfLwsfjxye6:home.server.", - matrixDesc2: "It is highly recommended you create a new user and do not use your own Matrix user's access token as it will allow full access to your account and all the rooms you joined. Instead, create a new user and only invite it to the room that you want to receive the notification in. You can get the access token by running {0}", - Method: "Method", - Body: "Body", - Headers: "Headers", - PushUrl: "Push URL", - HeadersInvalidFormat: "The request headers are not valid JSON: ", - BodyInvalidFormat: "The request body is not valid JSON: ", - "Monitor History": "Monitor History", - clearDataOlderThan: "Keep monitor history data for {0} days.", - PasswordsDoNotMatch: "Passwords do not match.", - records: "records", - "One record": "One record", - steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", - "Current User": "Current User", - recent: "Recent", - "Shrink Database": "Shrink Database", - Default: "Default", - headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", - bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", - "HTTP Options": "HTTP Options", - "Create Incident": "Create Incident", - "Switch to Light Theme": "Switch to Light Theme", - "Switch to Dark Theme": "Switch to Dark Theme", - "Show Tags": "Show Tags", - "Hide Tags": "Hide Tags", - Description: "Description", - "No monitors available.": "No monitors available.", - "Add one": "Add one", - "No Monitors": "No Monitors", - "Untitled Group": "Untitled Group", - Services: "Services", - Discard: "Discard", - Cancel: "Cancel", - "Powered by": "Powered by", }; diff --git a/src/languages/zh-CN.js b/src/languages/zh-CN.js index 4e0aee12f..8bbd0dcdd 100644 --- a/src/languages/zh-CN.js +++ b/src/languages/zh-CN.js @@ -291,40 +291,4 @@ export default { "Internal Room Id": "Internal Room Id", matrixDesc1: "你可以在 Matrix 客户端房间设置的高级选项找到 Internal Room Id。格式类似于 !QMdRCpUIfLwsfjxye6:home.server。", matrixDesc2: "请不要使用你自己的 Access Token,这将开放你所有的账户权限和你加入的房间权限。你可以创建一个新的用户并邀请它至你允许的的房间中。你可以运行以下命令来获取 Access Token:{0}", - emailCustomSubject: "Custom Subject", - clicksendsms: "ClickSend SMS", - apiCredentials: "API credentials", - Method: "Method", - Body: "Body", - Headers: "Headers", - PushUrl: "Push URL", - HeadersInvalidFormat: "The request headers are not valid JSON: ", - BodyInvalidFormat: "The request body is not valid JSON: ", - "Monitor History": "Monitor History", - clearDataOlderThan: "Keep monitor history data for {0} days.", - PasswordsDoNotMatch: "Passwords do not match.", - records: "records", - "One record": "One record", - steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", - "Current User": "Current User", - recent: "Recent", - "Shrink Database": "Shrink Database", - Default: "Default", - headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", - bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", - "HTTP Options": "HTTP Options", - "Create Incident": "Create Incident", - "Switch to Light Theme": "Switch to Light Theme", - "Switch to Dark Theme": "Switch to Dark Theme", - "Show Tags": "Show Tags", - "Hide Tags": "Hide Tags", - Description: "Description", - "No monitors available.": "No monitors available.", - "Add one": "Add one", - "No Monitors": "No Monitors", - "Untitled Group": "Untitled Group", - Services: "Services", - Discard: "Discard", - Cancel: "Cancel", - "Powered by": "Powered by", }; diff --git a/src/languages/zh-HK.js b/src/languages/zh-HK.js index 0e0cbe040..7f5e2259b 100644 --- a/src/languages/zh-HK.js +++ b/src/languages/zh-HK.js @@ -198,133 +198,4 @@ export default { pushbullet: "Pushbullet", line: "Line Messenger", mattermost: "Mattermost", - "Primary Base URL": "Primary Base URL", - "Push URL": "Push URL", - needPushEvery: "You should call this URL every {0} seconds.", - pushOptionalParams: "Optional parameters: {0}", - defaultNotificationName: "My {notification} Alert ({number})", - here: "here", - Required: "Required", - "Bot Token": "Bot Token", - wayToGetTelegramToken: "You can get a token from {0}.", - "Chat ID": "Chat ID", - supportTelegramChatID: "Support Direct Chat / Group / Channel's Chat ID", - wayToGetTelegramChatID: "You can get your chat ID by sending a message to the bot and going to this URL to view the chat_id:", - "YOUR BOT TOKEN HERE": "YOUR BOT TOKEN HERE", - chatIDNotFound: "Chat ID is not found; please send a message to this bot first", - "Post URL": "Post URL", - "Content Type": "Content Type", - webhookJsonDesc: "{0} is good for any modern HTTP servers such as Express.js", - webhookFormDataDesc: "{multipart} is good for PHP. The JSON will need to be parsed with {decodeFunction}", - secureOptionNone: "None / STARTTLS (25, 587)", - secureOptionTLS: "TLS (465)", - "Ignore TLS Error": "Ignore TLS Error", - "From Email": "From Email", - emailCustomSubject: "Custom Subject", - "To Email": "To Email", - smtpCC: "CC", - smtpBCC: "BCC", - "Discord Webhook URL": "Discord Webhook URL", - wayToGetDiscordURL: "You can get this by going to Server Settings -> Integrations -> Create Webhook", - "Bot Display Name": "Bot Display Name", - "Prefix Custom Message": "Prefix Custom Message", - "Hello @everyone is...": "Hello {'@'}everyone is...", - "Webhook URL": "Webhook URL", - wayToGetTeamsURL: "You can learn how to create a webhook URL {0}.", - Number: "Number", - Recipients: "Recipients", - needSignalAPI: "You need to have a signal client with REST API.", - wayToCheckSignalURL: "You can check this URL to view how to set one up:", - signalImportant: "IMPORTANT: You cannot mix groups and numbers in recipients!", - "Application Token": "Application Token", - "Server URL": "Server URL", - Priority: "Priority", - "Icon Emoji": "Icon Emoji", - "Channel Name": "Channel Name", - "Uptime Kuma URL": "Uptime Kuma URL", - aboutWebhooks: "More info about Webhooks on: {0}", - aboutChannelName: "Enter the channel name on {0} Channel Name field if you want to bypass the Webhook channel. Ex: #other-channel", - aboutKumaURL: "If you leave the Uptime Kuma URL field blank, it will default to the Project GitHub page.", - emojiCheatSheet: "Emoji cheat sheet: {0}", - clicksendsms: "ClickSend SMS", - "User Key": "User Key", - Device: "Device", - "Message Title": "Message Title", - "Notification Sound": "Notification Sound", - "More info on:": "More info on: {0}", - pushoverDesc1: "Emergency priority (2) has default 30 second timeout between retries and will expire after 1 hour.", - pushoverDesc2: "If you want to send notifications to different devices, fill out Device field.", - "SMS Type": "SMS Type", - octopushTypePremium: "Premium (Fast - recommended for alerting)", - octopushTypeLowCost: "Low Cost (Slow - sometimes blocked by operator)", - checkPrice: "Check {0} prices:", - apiCredentials: "API credentials", - octopushLegacyHint: "Do you use the legacy version of Octopush (2011-2020) or the new version?", - "Check octopush prices": "Check octopush prices {0}.", - octopushPhoneNumber: "Phone number (intl format, eg : +33612345678) ", - octopushSMSSender: "SMS Sender Name : 3-11 alphanumeric characters and space (a-zA-Z0-9)", - "LunaSea Device ID": "LunaSea Device ID", - "Apprise URL": "Apprise URL", - "Example:": "Example: {0}", - "Read more:": "Read more: {0}", - "Status:": "Status: {0}", - "Read more": "Read more", - appriseInstalled: "Apprise is installed.", - appriseNotInstalled: "Apprise is not installed. {0}", - "Access Token": "Access Token", - "Channel access token": "Channel access token", - "Line Developers Console": "Line Developers Console", - lineDevConsoleTo: "Line Developers Console - {0}", - "Basic Settings": "Basic Settings", - "User ID": "User ID", - "Messaging API": "Messaging API", - wayToGetLineChannelToken: "First access the {0}, create a provider and channel (Messaging API), then you can get the channel access token and user ID from the above mentioned menu items.", - "Icon URL": "Icon URL", - aboutIconURL: "You can provide a link to a picture in \"Icon URL\" to override the default profile picture. Will not be used if Icon Emoji is set.", - aboutMattermostChannelName: "You can override the default channel that the Webhook posts to by entering the channel name into \"Channel Name\" field. This needs to be enabled in the Mattermost Webhook settings. Ex: #other-channel", - matrix: "Matrix", - promosmsTypeEco: "SMS ECO - cheap but slow and often overloaded. Limited only to Polish recipients.", - promosmsTypeFlash: "SMS FLASH - Message will automatically show on recipient device. Limited only to Polish recipients.", - promosmsTypeFull: "SMS FULL - Premium tier of SMS, You can use your Sender Name (You need to register name first). Reliable for alerts.", - promosmsTypeSpeed: "SMS SPEED - Highest priority in system. Very quick and reliable but costly (about twice of SMS FULL price).", - promosmsPhoneNumber: "Phone number (for Polish recipient You can skip area codes)", - promosmsSMSSender: "SMS Sender Name : Pre-registred name or one of defaults: InfoSMS, SMS Info, MaxSMS, INFO, SMS", - "Feishu WebHookUrl": "Feishu WebHookURL", - matrixHomeserverURL: "Homeserver URL (with http(s):// and optionally port)", - "Internal Room Id": "Internal Room ID", - matrixDesc1: "You can find the internal room ID by looking in the advanced section of the room settings in your Matrix client. It should look like !QMdRCpUIfLwsfjxye6:home.server.", - matrixDesc2: "It is highly recommended you create a new user and do not use your own Matrix user's access token as it will allow full access to your account and all the rooms you joined. Instead, create a new user and only invite it to the room that you want to receive the notification in. You can get the access token by running {0}", - Method: "Method", - Body: "Body", - Headers: "Headers", - PushUrl: "Push URL", - HeadersInvalidFormat: "The request headers are not valid JSON: ", - BodyInvalidFormat: "The request body is not valid JSON: ", - "Monitor History": "Monitor History", - clearDataOlderThan: "Keep monitor history data for {0} days.", - PasswordsDoNotMatch: "Passwords do not match.", - records: "records", - "One record": "One record", - steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", - "Current User": "Current User", - recent: "Recent", - "Shrink Database": "Shrink Database", - Default: "Default", - headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", - bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", - "HTTP Options": "HTTP Options", - "Create Incident": "Create Incident", - "Switch to Light Theme": "Switch to Light Theme", - "Switch to Dark Theme": "Switch to Dark Theme", - "Show Tags": "Show Tags", - "Hide Tags": "Hide Tags", - Description: "Description", - "No monitors available.": "No monitors available.", - "Add one": "Add one", - "No Monitors": "No Monitors", - "Untitled Group": "Untitled Group", - Services: "Services", - Discard: "Discard", - Cancel: "Cancel", - "Powered by": "Powered by", }; diff --git a/src/languages/zh-TW.js b/src/languages/zh-TW.js index 573d619d2..337d9422c 100644 --- a/src/languages/zh-TW.js +++ b/src/languages/zh-TW.js @@ -307,24 +307,4 @@ export default { "Showing {from} to {to} of {count} records": "正在顯示 {count} 項記錄中的 {from} 至 {to} 項", steamApiKeyDescription: "若要監測 Steam 遊戲伺服器,您將需要 Steam Web-API 金鑰。您可以在此註冊您的 API 金鑰:", "Current User": "目前使用者", - recent: "Recent", - "Shrink Database": "Shrink Database", - Default: "Default", - headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", - bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", - "HTTP Options": "HTTP Options", - "Create Incident": "Create Incident", - "Switch to Light Theme": "Switch to Light Theme", - "Switch to Dark Theme": "Switch to Dark Theme", - "Show Tags": "Show Tags", - "Hide Tags": "Hide Tags", - Description: "Description", - "No monitors available.": "No monitors available.", - "Add one": "Add one", - "No Monitors": "No Monitors", - "Untitled Group": "Untitled Group", - Services: "Services", - Discard: "Discard", - Cancel: "Cancel", - "Powered by": "Powered by", }; From 31fa67452eea3cb1e1bf743cc79577b3a841426e Mon Sep 17 00:00:00 2001 From: Ivan <ivanbratovic4@gmail.com> Date: Fri, 12 Nov 2021 09:31:27 +0100 Subject: [PATCH 063/142] Delint English language file --- src/languages/en.js | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/languages/en.js b/src/languages/en.js index bc3b66bac..9f84a03d9 100644 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -310,10 +310,9 @@ export default { Security: "Security", "Shrink Database": "Shrink Database", Default: "Default", - headersPlaceholder: "Example:\n\{\n \"HeaderName\": \"HeaderValue\"\n}", - bodyPlaceholder: "Example:\n\{\n \"key\": \"value\"\n}", + headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", + bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", "HTTP Options": "HTTP Options", - // Status page "Create Incident": "Create Incident", Title: "Title", Content: "Content", @@ -329,13 +328,13 @@ export default { "Switch to Dark Theme": "Switch to Dark Theme", "Show Tags": "Show Tags", "Hide Tags": "Hide Tags", - "Description": "Description", + Description: "Description", "No monitors available.": "No monitors available.", "Add one": "Add one", "No Monitors": "No Monitors", "Untitled Group": "Untitled Group", - "Services": "Services", - "Discard": "Discard", - "Cancel": "Cancel", + Services: "Services", + Discard: "Discard", + Cancel: "Cancel", "Powered by": "Powered by", }; From b7a9d1474f8f4ded8150dbb9649ed923bdc84aa9 Mon Sep 17 00:00:00 2001 From: Ivan <ivanbratovic4@gmail.com> Date: Fri, 12 Nov 2021 09:53:41 +0100 Subject: [PATCH 064/142] Fix translation of selected incident style --- src/pages/StatusPage.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/StatusPage.vue b/src/pages/StatusPage.vue index 58ddb9a8d..e7e9c049a 100644 --- a/src/pages/StatusPage.vue +++ b/src/pages/StatusPage.vue @@ -125,7 +125,7 @@ <div v-if="editIncidentMode" class="dropdown d-inline-block me-2"> <button id="dropdownMenuButton1" class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false"> - {{ $t("Style") }}: {{ incident.style }} + {{ $t("Style") }}: {{ $t(incident.style) }} </button> <ul class="dropdown-menu" aria-labelledby="dropdownMenuButton1"> <li><a class="dropdown-item" href="#" @click="incident.style = 'info'">{{ $t("info") }}</a></li> From 42ce34b6c7bb921b1e583f957248f1c15115acb7 Mon Sep 17 00:00:00 2001 From: Ivan <ivanbratovic4@gmail.com> Date: Fri, 12 Nov 2021 09:54:31 +0100 Subject: [PATCH 065/142] Add more Status page tranlations --- src/languages/en.js | 3 +++ src/pages/StatusPage.vue | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/languages/en.js b/src/languages/en.js index 9f84a03d9..3a5ea1226 100644 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -324,6 +324,9 @@ export default { light: "light", dark: "dark", Post: "Post", + Created: "Created", + "Last Updated": "Last Updated", + Unpin: "Unpin", "Switch to Light Theme": "Switch to Light Theme", "Switch to Dark Theme": "Switch to Dark Theme", "Show Tags": "Show Tags", diff --git a/src/pages/StatusPage.vue b/src/pages/StatusPage.vue index e7e9c049a..337199972 100644 --- a/src/pages/StatusPage.vue +++ b/src/pages/StatusPage.vue @@ -101,9 +101,9 @@ <!-- Incident Date --> <div class="date mt-3"> - Created: {{ $root.datetime(incident.createdDate) }} ({{ dateFromNow(incident.createdDate) }})<br /> + {{ $t("Created") }}: {{ $root.datetime(incident.createdDate) }} ({{ dateFromNow(incident.createdDate) }})<br /> <span v-if="incident.lastUpdatedDate"> - Last Updated: {{ $root.datetime(incident.lastUpdatedDate) }} ({{ dateFromNow(incident.lastUpdatedDate) }}) + {{ $t("Last Updated") }}: {{ $root.datetime(incident.lastUpdatedDate) }} ({{ dateFromNow(incident.lastUpdatedDate) }}) </span> </div> From 19dd11d62405ff3db0bb992a8d60507846c628c3 Mon Sep 17 00:00:00 2001 From: Ivan <ivanbratovic4@gmail.com> Date: Fri, 12 Nov 2021 10:14:23 +0100 Subject: [PATCH 066/142] Add translation for incident error message --- src/languages/en.js | 1 + src/pages/StatusPage.vue | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/languages/en.js b/src/languages/en.js index 3a5ea1226..a9984075b 100644 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -324,6 +324,7 @@ export default { light: "light", dark: "dark", Post: "Post", + "Please input title and content": "Please input title and content", Created: "Created", "Last Updated": "Last Updated", Unpin: "Unpin", diff --git a/src/pages/StatusPage.vue b/src/pages/StatusPage.vue index 337199972..ddb37c1ae 100644 --- a/src/pages/StatusPage.vue +++ b/src/pages/StatusPage.vue @@ -536,7 +536,7 @@ export default { postIncident() { if (this.incident.title == "" || this.incident.content == "") { - toast.error("Please input title and content."); + toast.error(this.$t("Please input title and content")); return; } From b1fca7c1a7b8b319d443114ce63827d24da3be91 Mon Sep 17 00:00:00 2001 From: Ivan <ivanbratovic4@gmail.com> Date: Fri, 12 Nov 2021 12:00:10 +0100 Subject: [PATCH 067/142] Add translation of toast success message --- src/languages/en.js | 1 + src/pages/Settings.vue | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/languages/en.js b/src/languages/en.js index a9984075b..dd37980ab 100644 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -307,6 +307,7 @@ export default { steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", "Current User": "Current User", recent: "Recent", + Done: "Done", Security: "Security", "Shrink Database": "Shrink Database", Default: "Default", diff --git a/src/pages/Settings.vue b/src/pages/Settings.vue index 9d501407d..7724f3e1f 100644 --- a/src/pages/Settings.vue +++ b/src/pages/Settings.vue @@ -637,7 +637,7 @@ export default { this.$root.getSocket().emit("shrinkDatabase", (res) => { if (res.ok) { this.loadDatabaseSize(); - toast.success("Done"); + toast.success(this.$t("Done")); } else { debug(res); } From 583e6bf978e587b17a3313ac34c55a6dfa33c4c2 Mon Sep 17 00:00:00 2001 From: Ivan <ivanbratovic4@gmail.com> Date: Fri, 12 Nov 2021 13:32:24 +0100 Subject: [PATCH 068/142] Update croatian language for testing new translation --- src/languages/hr-HR.js | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/languages/hr-HR.js b/src/languages/hr-HR.js index 01674dce8..6c553eae9 100644 --- a/src/languages/hr-HR.js +++ b/src/languages/hr-HR.js @@ -308,4 +308,40 @@ export default { steamApiKeyDescription: "Za praćenje Steam poslužitelja za igru, potrebno je imati Steam Web-API ključ. Možete registrirati vlastiti ključ ovdje: ", "Current User": "Trenutni korisnik", recent: "Nedavno", + Done: "Gotovo", + Security: "Sigurnost", + "Shrink Database": "Smanji bazu podataka", + Default: "Zadano", + headersPlaceholder: "Primjer:\n{\n \"NazivZaglavlja\": \"VrijednostZaglavlja\"\n}", + bodyPlaceholder: "Primjer:\n{\n \"ključ\": \"vrijednost\"\n}", + "HTTP Options": "HTTP Postavke", + "Create Incident": "Novi izvještaj o incidentu", + Title: "Naslov", + Content: "Sadržaj", + Style: "Stil", + info: "informacija", + warning: "upozorenje", + danger: "opasnost", + primary: "primarno", + light: "svijetlo", + dark: "tamno", + Post: "Objavi", + Created: "Stvoreno", + "Last Updated": "Uređeno", + "Please input title and content": "Naslov i sadržaj ne mogu biti prazni", + Unpin: "Ukloni", + "Switch to Light Theme": "Prebaci na svijetli način", + "Switch to Dark Theme": "Prebaci na tamni način", + "Show Tags": "Pokaži oznake", + "Hide Tags": "Sakrij oznake", + Description: "Opis", + "No monitors available.": "Nema dostupnih monitora.", + "Add one": "Add one", + "No Monitors": "Bez monitora", + "Untitled Group": "Bezimena grupa", + Services: "Usluge", + Discard: "Odbaci", + Cancel: "Otkaži", + "Powered by": "Pokreće", + Saved: "Spremljeno", }; From dd790421280ba4224e6727b8708d8259630b1a7e Mon Sep 17 00:00:00 2001 From: Ivan <ivanbratovic4@gmail.com> Date: Fri, 12 Nov 2021 15:14:28 +0100 Subject: [PATCH 069/142] Add translation for "Info" in Settings --- src/languages/en.js | 1 + src/languages/hr-HR.js | 1 + 2 files changed, 2 insertions(+) diff --git a/src/languages/en.js b/src/languages/en.js index dd37980ab..fbd59a91a 100644 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -308,6 +308,7 @@ export default { "Current User": "Current User", recent: "Recent", Done: "Done", + Info: "Info", Security: "Security", "Shrink Database": "Shrink Database", Default: "Default", diff --git a/src/languages/hr-HR.js b/src/languages/hr-HR.js index 6c553eae9..9721f4006 100644 --- a/src/languages/hr-HR.js +++ b/src/languages/hr-HR.js @@ -309,6 +309,7 @@ export default { "Current User": "Trenutni korisnik", recent: "Nedavno", Done: "Gotovo", + Info: "Informacije", Security: "Sigurnost", "Shrink Database": "Smanji bazu podataka", Default: "Zadano", From 453f6fbadf36da161603c9b7ce4edcef92d891a6 Mon Sep 17 00:00:00 2001 From: Ivan <ivanbratovic4@gmail.com> Date: Fri, 12 Nov 2021 15:17:23 +0100 Subject: [PATCH 070/142] Add more missing translations --- src/languages/en.js | 2 ++ src/languages/hr-HR.js | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/languages/en.js b/src/languages/en.js index fbd59a91a..d27ceebe4 100644 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -310,6 +310,7 @@ export default { Done: "Done", Info: "Info", Security: "Security", + "Steam API Key": "Steam API Key", "Shrink Database": "Shrink Database", Default: "Default", headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", @@ -338,6 +339,7 @@ export default { "No monitors available.": "No monitors available.", "Add one": "Add one", "No Monitors": "No Monitors", + "Add one": "Add one", "Untitled Group": "Untitled Group", Services: "Services", Discard: "Discard", diff --git a/src/languages/hr-HR.js b/src/languages/hr-HR.js index 9721f4006..5fd837b09 100644 --- a/src/languages/hr-HR.js +++ b/src/languages/hr-HR.js @@ -312,6 +312,7 @@ export default { Info: "Informacije", Security: "Sigurnost", "Shrink Database": "Smanji bazu podataka", + "Steam API Key": "Steam API ključ", Default: "Zadano", headersPlaceholder: "Primjer:\n{\n \"NazivZaglavlja\": \"VrijednostZaglavlja\"\n}", bodyPlaceholder: "Primjer:\n{\n \"ključ\": \"vrijednost\"\n}", @@ -339,6 +340,7 @@ export default { "No monitors available.": "Nema dostupnih monitora.", "Add one": "Add one", "No Monitors": "Bez monitora", + "Add one": "Stvori jednog", "Untitled Group": "Bezimena grupa", Services: "Usluge", Discard: "Odbaci", From 567ea346fea7e2d9b74df8ced26c13eae2b2a4df Mon Sep 17 00:00:00 2001 From: Ivan <ivanbratovic4@gmail.com> Date: Fri, 12 Nov 2021 15:30:31 +0100 Subject: [PATCH 071/142] Add missing translations for placeholders in EditMonitor page --- src/languages/en.js | 2 ++ src/languages/hr-HR.js | 2 ++ src/pages/EditMonitor.vue | 4 ++-- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/languages/en.js b/src/languages/en.js index d27ceebe4..f76aadf9e 100644 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -312,6 +312,8 @@ export default { Security: "Security", "Steam API Key": "Steam API Key", "Shrink Database": "Shrink Database", + "Pick a RR-Type...": "Pick a RR-Type...", + "Pick Accepted Status Codes...": "Pick Accepted Status Codes...", Default: "Default", headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", diff --git a/src/languages/hr-HR.js b/src/languages/hr-HR.js index 5fd837b09..8d23f003b 100644 --- a/src/languages/hr-HR.js +++ b/src/languages/hr-HR.js @@ -312,6 +312,8 @@ export default { Info: "Informacije", Security: "Sigurnost", "Shrink Database": "Smanji bazu podataka", + "Pick a RR-Type...": "Odaberite vrstu DNS zapisa od navedenih...", + "Pick Accepted Status Codes...": "Odaberite HTTP statusne kodove koji će biti prihvaćeni...", "Steam API Key": "Steam API ključ", Default: "Zadano", headersPlaceholder: "Primjer:\n{\n \"NazivZaglavlja\": \"VrijednostZaglavlja\"\n}", diff --git a/src/pages/EditMonitor.vue b/src/pages/EditMonitor.vue index 907ecfa6b..5c639725d 100644 --- a/src/pages/EditMonitor.vue +++ b/src/pages/EditMonitor.vue @@ -103,7 +103,7 @@ :close-on-select="true" :clear-on-select="false" :preserve-search="false" - placeholder="Pick a RR-Type..." + :placeholder="$t('Pick a RR-Type...')" :preselect-first="false" :max-height="500" :taggable="false" @@ -177,7 +177,7 @@ :close-on-select="false" :clear-on-select="false" :preserve-search="true" - placeholder="Pick Accepted Status Codes..." + :placeholder="$t('Pick Accepted Status Codes...')" :preselect-first="false" :max-height="600" :taggable="true" From 73c18b6ff07f8ce3ed1c590ec3539bf079cdf906 Mon Sep 17 00:00:00 2001 From: Ioma Taani <iomataani@users.noreply.github.com> Date: Sat, 13 Nov 2021 16:53:07 +0100 Subject: [PATCH 072/142] correzione --- src/languages/it-IT.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/languages/it-IT.js b/src/languages/it-IT.js index 5257a217f..0afd46ca9 100644 --- a/src/languages/it-IT.js +++ b/src/languages/it-IT.js @@ -136,7 +136,7 @@ export default { Heartbeats: "Controlli", "Auto Get": "Auto Get", backupDescription: "È possibile fare il backup di tutti i monitoraggi e di tutte le notifiche in un file JSON.", - backupDescription2: "P.S.: lo storico e i dati relativi agli eventi non saranno inclusi.", + backupDescription2: "P.S.: lo storico e i dati relativi agli eventi non saranno inclusi", backupDescription3: "Dati sensibili come i token di autenticazione saranno inclusi nel backup, tenere quindi in un luogo sicuro.", alertNoFile: "Selezionare il file da importare.", alertWrongFileType: "Selezionare un file JSON.", From 5cdb5edeb35b690611da93c1534739dc6eef4da0 Mon Sep 17 00:00:00 2001 From: Ioma Taani <iomataani@users.noreply.github.com> Date: Sat, 13 Nov 2021 17:00:23 +0100 Subject: [PATCH 073/142] corretto --- src/languages/it-IT.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/languages/it-IT.js b/src/languages/it-IT.js index 0afd46ca9..105755d62 100644 --- a/src/languages/it-IT.js +++ b/src/languages/it-IT.js @@ -172,7 +172,7 @@ export default { "Search...": "Cerca...", "Avg. Ping": "Tempo di risposta al ping medio", "Avg. Response": "Tempo di risposta medio", - "Entry Page": "Entry Page", + "Entry Page": "Pagina Principale", statusPageNothing: "Non c'è nulla qui, aggiungere un gruppo oppure un monitoraggio.", "No Services": "Nessun Servizio", "All Systems Operational": "Tutti i sistemi sono operativi", From d5d957b748feb43932c6775ac9c4e80ebeeeb858 Mon Sep 17 00:00:00 2001 From: Phuong Nguyen Minh <73861816+mrphuongbn@users.noreply.github.com> Date: Mon, 15 Nov 2021 12:27:31 +0700 Subject: [PATCH 074/142] update vi.js (#853) * update vi.js * Update vi.js * Update vi.js --- src/languages/vi.js | 55 +++++++++++++++++++++++++++++++++------------ 1 file changed, 41 insertions(+), 14 deletions(-) diff --git a/src/languages/vi.js b/src/languages/vi.js index 0bfa3f208..bc2e86de0 100644 --- a/src/languages/vi.js +++ b/src/languages/vi.js @@ -33,21 +33,22 @@ export default { Appearance: "Giao diện", Theme: "Theme", General: "Chung", + "Primary Base URL": "URL chính", Version: "Phiên bản", "Check Update On GitHub": "Kiểm tra bản cập nhật mới trên GitHub", List: "List", Add: "Thêm", "Add New Monitor": "Thêm mới Monitor", "Quick Stats": "Thống kê nhanh", - Up: "Lên", - Down: "Xuống", + Up: "Up", + Down: "Down", Pending: "Chờ xử lý", Unknown: "Không xác định", Pause: "Tạm dừng", Name: "Tên", Status: "Trạng thái", DateTime: "Ngày tháng", - Message: "Tin nhắn", + Message: "Trạng thái request", "No important events": "Không có sự kiện quan trọng nào", Resume: "Khôi phục", Edit: "Sửa", @@ -64,17 +65,20 @@ export default { Ping: "Ping", "Monitor Type": "Kiểu monitor", Keyword: "Từ khoá", - "Friendly Name": "Tên dễ hiểu", + "Friendly Name": "Tên monitor", URL: "URL", Hostname: "Hostname", Port: "Port", - "Heartbeat Interval": "Tần suất heartbeat", + "Heartbeat Interval": "Tần suất kiểm tra", Retries: "Thử lại", - "Heartbeat Retry Interval": "Tần suất thử lại của Heartbeat", + "Heartbeat Retry Interval": "Tần suất kiểm tra lại", Advanced: "Nâng cao", - "Upside Down Mode": "Trạng thái đảo ngược", - "Max. Redirects": "Chuyển hướng tối đa", + "Upside Down Mode": "Chế độ đảo ngược", + "Max. Redirects": "Số chuyển hướng tối đa", "Accepted Status Codes": "Codes trạng thái chấp nhận", + "Push URL": "Push URL", + needPushEvery: "Bạn nên gọi URL mỗi {0} giây.", + pushOptionalParams: "Tuỳ chỉnh parameters: {0}", Save: "Lưu", Notifications: "Thông báo", "Not available, please setup.": "Chưa sẵn sàng, hãy cài đặt.", @@ -131,7 +135,7 @@ export default { Events: "Sự kiện", Heartbeats: "Heartbeats", "Auto Get": "Tự động lấy", - backupDescription: "Bạn có thể sao lưu tất cả các màn hình và tất cả các thông báo vào một file JSON.", + backupDescription: "Bạn có thể sao lưu tất cả các monitor và tất cả các thông báo vào một file JSON.", backupDescription2: "PS: Không bao gồm dữ liệu lịch sử các sự kiện.", backupDescription3: "Hãy lưu giữ file này cẩn thận vì trong file đó chứa cả các mã token thông báo.", alertNoFile: "Hãy chọn file để khôi phục.", @@ -171,7 +175,7 @@ export default { "Entry Page": "Entry Page", statusPageNothing: "Không có gì, hãy thêm nhóm monitor hoặc monitor.", "No Services": "Không có dịch vụ", - "All Systems Operational": "Tất cả các hệ thống hoạt động", + "All Systems Operational": "Tất cả các hệ thống hoạt động bình thường", "Partially Degraded Service": "Dịch vụ xuống cấp một phần", "Degraded Service": "Degraded Service", "Add Group": "Thêm nhóm", @@ -184,7 +188,7 @@ export default { Required: "Bắt buộc", telegram: "Telegram", "Bot Token": "Bot Token", - "You can get a token from": "Bạn có thể lấy mã token từ", + wayToGetTelegramToken: "Bạn có thể lấy mã token từ", "Chat ID": "Chat ID", supportTelegramChatID: "Hỗ trợ chat trực tiếp / Nhóm / Kênh Chat ID", wayToGetTelegramChatID: "Bạn có thể lấy chat id của mình bằng cách gửi tin nhắn tới bot và truy cập url này để xem chat_id:", @@ -200,6 +204,7 @@ export default { secureOptionTLS: "TLS (465)", "Ignore TLS Error": "Bỏ qua lỗi TLS", "From Email": "Từ Email", + emailCustomSubject: "Tuỳ chỉnh tiêu đề", "To Email": "Tới Email", smtpCC: "CC", smtpBCC: "BCC", @@ -212,7 +217,7 @@ export default { teams: "Microsoft Teams", "Webhook URL": "Webhook URL", wayToGetTeamsURL: "Bạn có thể học cách tạo webhook url {0}.", - signal: "Signal", + signal: "Tín hiệu", Number: "Số", Recipients: "Người nhận", needSignalAPI: "Bạn cần một tín hiệu client với REST API.", @@ -235,8 +240,9 @@ export default { pushy: "Pushy", octopush: "Octopush", promosms: "PromoSMS", + clicksendsms: "ClickSend SMS", lunasea: "LunaSea", - apprise: "Thông báo (Hỗ trợ 50+ dịch vụ thông báo)", + apprise: "Apprise (Hỗ trợ 50+ dịch vụ thông báo)", pushbullet: "Pushbullet", line: "Line Messenger", mattermost: "Mattermost", @@ -250,8 +256,11 @@ export default { "SMS Type": "SMS Type", octopushTypePremium: "Premium (Nhanh - Khuyến nghị nên dùng cho cảnh báo)", octopushTypeLowCost: "Giá rẻ (Chậm, thỉnh thoảng bị chặn)", + checkPrice: "Kiểm tra giá {0}:", + apiCredentials: "API credentials", + octopushLegacyHint: "Bạn muốn sử dụng phiên bản cũ của Octopush (2011-2020) hay phiên bản mới?", "Check octopush prices": "Kiểm tra giá octopush {0}.", - octopushPhoneNumber: "Số điện thoại (Định dạng intl, vd : +33612345678) ", + octopushPhoneNumber: "Số điện thoại (Định dạng intl, vd : +84123456789) ", octopushSMSSender: "SMS người gửi : 3-11 ký tự chữ, số và dấu cách (a-zA-Z0-9)", "LunaSea Device ID": "LunaSea ID thiết bị", "Apprise URL": "Apprise URL", @@ -280,4 +289,22 @@ export default { promosmsPhoneNumber: "Số điện thoại (Bỏ qua mã vùng với người Ba Lan)", promosmsSMSSender: "SMS Tên người gửi: Tên đã đăng ký trước hoặc tên mặc định: InfoSMS, SMS Info, MaxSMS, INFO, SMS", "Feishu WebHookUrl": "Feishu WebHookUrl", + matrixHomeserverURL: "Homeserver URL (với http(s):// và port tuỳ chỉnh)", + "Internal Room Id": "Room ID Nội bộ", + matrixDesc1: "Bạn có thể tìm thấy room ID nội bộ bằng cách tìm trong mục advanced của phần room settings trong Matrix client của bạn. Nó có dạng giống như !QMdRCpUIfLwsfjxye6:home.server.", + matrixDesc2: "Bạn nên tạo người dùng mới và đừng sử dụng mã token truy cập của Matrix user vì nó sẽ cho phép truy cập toàn quyền vào tài khoản của bạn và tất cả các phòng bạn đã tham gia. Thay vào đó, hãy tạo một người dùng mới và chỉ mời người đó vào phòng mà bạn muốn nhận thông báo. Bạn có thể lấy được mã token truy cập bằng cách chạy {0}", + Method: "Method", + Body: "Body", + Headers: "Headers", + PushUrl: "Push URL", + HeadersInvalidFormat: "Header request không hợp lệ JSON: ", + BodyInvalidFormat: "Tequest body không hợp lệ JSON: ", + "Monitor History": "Lịch sử Monitor", + clearDataOlderThan: "Giữ dữ liệu lịch sử monitor {0} ngày.", + PasswordsDoNotMatch: "Passwords không khớp.", + records: "records", + "One record": "One record", + steamApiKeyDescription: "Để monitor các Steam Game Server bạn cần một Steam Web-API key. Bạn có thể đăng ký API key tại đây: ", + "Current User": "User hiện tại", + recent: "Gần đây", }; From 9747048890abed13caf123478b59d898e20aaab2 Mon Sep 17 00:00:00 2001 From: Ioma Taani <iomataani@users.noreply.github.com> Date: Tue, 16 Nov 2021 09:04:10 +0100 Subject: [PATCH 075/142] correzioni e miglioramenti --- src/languages/it-IT.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/languages/it-IT.js b/src/languages/it-IT.js index 5257a217f..5de29d441 100644 --- a/src/languages/it-IT.js +++ b/src/languages/it-IT.js @@ -175,7 +175,7 @@ export default { "Entry Page": "Entry Page", statusPageNothing: "Non c'è nulla qui, aggiungere un gruppo oppure un monitoraggio.", "No Services": "Nessun Servizio", - "All Systems Operational": "Tutti i sistemi sono operativi", + "All Systems Operational": "Tutti i sistemi sono funzionali", "Partially Degraded Service": "Servizio parzialmente degradato", "Degraded Service": "Servizio degradato", "Add Group": "Aggiungi Gruppo", @@ -304,7 +304,7 @@ export default { PasswordsDoNotMatch: "Le password non corrispondono.", records: "records", "One record": "One record", - steamApiKeyDescription: "Per monitorare un server di gioco Steam si necessita della chiave Steam Web-API. È possibile registrare la propria chiave API qui: ", + steamApiKeyDescription: "Per monitorare un server di gioco Steam si necessita della chiave Web-API di Steam. È possibile registrare la propria chiave API qui: ", "Current User": "Utente corrente", recent: "Recenti", }; From be3a791e6ea858f1e2de6739f2f6a96e6cdcd660 Mon Sep 17 00:00:00 2001 From: MultiGamer8853 <qq3082499405@icloud.com> Date: Tue, 16 Nov 2021 18:14:23 +0900 Subject: [PATCH 076/142] Update ja.js MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 日本語を最適化 --- src/languages/ja.js | 126 ++++++++++++++++++++++---------------------- 1 file changed, 63 insertions(+), 63 deletions(-) diff --git a/src/languages/ja.js b/src/languages/ja.js index f96028e42..9446c78c9 100644 --- a/src/languages/ja.js +++ b/src/languages/ja.js @@ -17,7 +17,7 @@ export default { pauseMonitorMsg: "一時停止しますか?", Settings: "設定", Dashboard: "ダッシュボード", - "New Update": "New Update", + "New Update": "新しいアップデート", Language: "言語", Appearance: "外観", Theme: "テーマ", @@ -53,7 +53,7 @@ export default { Ping: "Ping", "Monitor Type": "監視タイプ", Keyword: "キーワード", - "Friendly Name": "Friendly Name", + "Friendly Name": "分かりやすい名前", URL: "URL", Hostname: "ホスト名", Port: "ポート", @@ -104,60 +104,60 @@ export default { "Resolver Server": "問い合わせ先DNSサーバ", "Resource Record Type": "DNSレコード設定", "Last Result": "最終結果", - "Create your admin account": "Create your admin account", - "Repeat Password": "Repeat Password", - respTime: "Resp. Time (ms)", + "Create your admin account": "Adminアカウントの作成", + "Repeat Password": "パスワード確認", + respTime: "応答時間 (ms)", notAvailableShort: "N/A", - Create: "Create", - clearEventsMsg: "Are you sure want to delete all events for this monitor?", - clearHeartbeatsMsg: "Are you sure want to delete all heartbeats for this monitor?", - confirmClearStatisticsMsg: "Are you sure want to delete ALL statistics?", - "Clear Data": "Clear Data", - Events: "Events", - Heartbeats: "Heartbeats", - "Auto Get": "Auto Get", - enableDefaultNotificationDescription: "For every new monitor this notification will be enabled by default. You can still disable the notification separately for each monitor.", - "Default enabled": "Default enabled", - "Also apply to existing monitors": "Also apply to existing monitors", - Export: "Export", - Import: "Import", - backupDescription: "You can backup all monitors and all notifications into a JSON file.", - backupDescription2: "PS: History and event data is not included.", - backupDescription3: "Sensitive data such as notification tokens is included in the export file, please keep it carefully.", - alertNoFile: "Please select a file to import.", - alertWrongFileType: "Please select a JSON file.", - twoFAVerifyLabel: "Please type in your token to verify that 2FA is working", - tokenValidSettingsMsg: "Token is valid! You can now save the 2FA settings.", - confirmEnableTwoFAMsg: "Are you sure you want to enable 2FA?", - confirmDisableTwoFAMsg: "Are you sure you want to disable 2FA?", - "Apply on all existing monitors": "Apply on all existing monitors", - "Verify Token": "Verify Token", - "Setup 2FA": "Setup 2FA", - "Enable 2FA": "Enable 2FA", - "Disable 2FA": "Disable 2FA", - "2FA Settings": "2FA Settings", - "Two Factor Authentication": "Two Factor Authentication", + Create: "作成", + clearEventsMsg: "この監視のすべての記録を削除してもよろしいですか?", + clearHeartbeatsMsg: "この監視のすべての異常記録を削除してもよろしいですか?", + confirmClearStatisticsMsg: "すべての統計を削除してもよろしいですか?", + "Clear Data": "データを削除", + Events: "統計", + Heartbeats: "異常記録", + "Auto Get": "自動取得", + enableDefaultNotificationDescription: "監視を作成するごとに、この通知方法はデフォルトで有効になります。監視ごとに通知を無効にすることもできます。", + "Default enabled": "デフォルトで有効にする", + "Also apply to existing monitors": "既存のモニターにも適用する", + Export: "エクスポート", + Import: "インポート", + backupDescription: "すべての監視と通知方法をJSONファイルにできます。", + backupDescription2: "※ 履歴と統計のデータはバックアップされません。", + backupDescription3: "通知に使用するトークンなどの機密データも含まれています。注意して扱ってください。", + alertNoFile: "インポートするファイルを選択してください。", + alertWrongFileType: "JSONファイルを選択してください。", + twoFAVerifyLabel: "トークンを入力して、2段階認証を有効にします。", + tokenValidSettingsMsg: "トークンの確認が完了しました! 「保存」をしてください。", + confirmEnableTwoFAMsg: "2段階認証を「有効」にします。よろしいですか?", + confirmDisableTwoFAMsg: "2段階認証を「無効」にします。よろしいですか?", + "Apply on all existing monitors": "既存のすべてのモニターに適用する", + "Verify Token": "認証する", + "Setup 2FA": "2段階認証の設定", + "Enable 2FA": "2段階認証を有効にする", + "Disable 2FA": "2段階認証を無効にする", + "2FA Settings": "2段階認証の設定", + "Two Factor Authentication": "2段階認証", Active: "Active", Inactive: "Inactive", Token: "Token", "Show URI": "Show URI", - "Clear all statistics": "Clear all Statistics", + "Clear all statistics": "すべての記録を削除", retryCheckEverySecond: "Retry every {0} seconds.", - importHandleDescription: "Choose 'Skip existing' if you want to skip every monitor or notification with the same name. 'Overwrite' will delete every existing monitor and notification.", - confirmImportMsg: "Are you sure to import the backup? Please make sure you've selected the right import option.", - "Heartbeat Retry Interval": "Heartbeat Retry Interval", - "Import Backup": "Import Backup", - "Export Backup": "Export Backup", - "Skip existing": "Skip existing", - Overwrite: "Overwrite", - Options: "Options", - "Keep both": "Keep both", - Tags: "Tags", - "Add New below or Select...": "Add New below or Select...", - "Tag with this name already exist.": "Tag with this name already exist.", - "Tag with this value already exist.": "Tag with this value already exist.", - color: "color", - "value (optional)": "value (optional)", + importHandleDescription: "同じ名前のすべての監視または通知方法を上書きしない場合は、「既存のをスキップ」を選択します。 「上書きする」は、既存のすべてのモニターと通知を削除します。", + confirmImportMsg: "バックアップをインポートしてもよろしいですか?希望するオプションを選択してください。", + "Heartbeat Retry Interval": "異常検知後の再試行間隔", + "Import Backup": "バックアップのインポート", + "Export Backup": "バックアップのエクスポート", + "Skip existing": "既存のをスキップする", + Overwrite: "上書きする", + Options: "オプション", + "Keep both": "どちらも保持する", + Tags: "タグ", + "Add New below or Select...": "新規追加または選択...", + "Tag with this name already exist.": "この名前のタグはすでに存在しています。", + "Tag with this value already exist.": "この値のタグはすでに存在しています。", + color: "色", + "value (optional)": "値 (optional)", Gray: "Gray", Red: "Red", Orange: "Orange", @@ -166,20 +166,20 @@ export default { Indigo: "Indigo", Purple: "Purple", Pink: "Pink", - "Search...": "Search...", - "Avg. Ping": "Avg. Ping", - "Avg. Response": "Avg. Response", - "Entry Page": "Entry Page", - statusPageNothing: "Nothing here, please add a group or a monitor.", + "Search...": "検索...", + "Avg. Ping": "平均Ping時間", + "Avg. Response": "平均応答時間", + "Entry Page": "エントリーページ", + statusPageNothing: "ここには何もありません。グループまたは監視を追加してください。", "No Services": "No Services", - "All Systems Operational": "All Systems Operational", - "Partially Degraded Service": "Partially Degraded Service", - "Degraded Service": "Degraded Service", - "Add Group": "Add Group", - "Add a monitor": "Add a monitor", - "Edit Status Page": "Edit Status Page", - "Go to Dashboard": "Go to Dashboard", - "Status Page": "Status Page", + "All Systems Operational": "すべてのサービスが稼働中", + "Partially Degraded Service": "部分的にサービスが停止中", + "Degraded Service": "サービスが停止中", + "Add Group": "グループの追加", + "Add a monitor": "監視の追加", + "Edit Status Page": "ステータスページ編集", + "Go to Dashboard": "ダッシュボード", + "Status Page": "ステータスページ", telegram: "Telegram", webhook: "Webhook", smtp: "Email (SMTP)", From f9bb48de137eb83c458c9cdc2275a736b9d2ab83 Mon Sep 17 00:00:00 2001 From: Nelson Chan <chakflying@hotmail.com> Date: Wed, 20 Oct 2021 18:54:20 +0800 Subject: [PATCH 077/142] WIP: Convert Settings to components --- src/assets/vars.scss | 1 + src/components/MonitorList.vue | 2 +- src/components/settings/About.vue | 25 + src/components/settings/Appearance.vue | 149 +++++ src/components/settings/Backup.vue | 213 ++++++ src/components/settings/General.vue | 191 ++++++ src/components/settings/MonitorHistory.vue | 127 ++++ src/components/settings/Notifications.vue | 46 ++ src/components/settings/Security.vue | 323 +++++++++ src/languages/en.js | 1 + src/layouts/Layout.vue | 4 +- src/pages/Settings.vue | 729 +++------------------ 12 files changed, 1184 insertions(+), 627 deletions(-) create mode 100644 src/components/settings/About.vue create mode 100644 src/components/settings/Appearance.vue create mode 100644 src/components/settings/Backup.vue create mode 100644 src/components/settings/General.vue create mode 100644 src/components/settings/MonitorHistory.vue create mode 100644 src/components/settings/Notifications.vue create mode 100644 src/components/settings/Security.vue diff --git a/src/assets/vars.scss b/src/assets/vars.scss index 2f4369832..91ab917e5 100644 --- a/src/assets/vars.scss +++ b/src/assets/vars.scss @@ -12,6 +12,7 @@ $dark-font-color2: #020b05; $dark-bg: #0d1117; $dark-bg2: #070a10; $dark-border-color: #1d2634; +$dark-header-bg: #161b22; $easing-in: cubic-bezier(0.54, 0.78, 0.55, 0.97); $easing-out: cubic-bezier(0.25, 0.46, 0.45, 0.94); diff --git a/src/components/MonitorList.vue b/src/components/MonitorList.vue index bd771f8f0..ef51e89cd 100644 --- a/src/components/MonitorList.vue +++ b/src/components/MonitorList.vue @@ -137,7 +137,7 @@ export default { justify-content: space-between; .dark & { - background-color: #161b22; + background-color: $dark-header-bg; border-bottom: 0; } } diff --git a/src/components/settings/About.vue b/src/components/settings/About.vue new file mode 100644 index 000000000..baa72f39a --- /dev/null +++ b/src/components/settings/About.vue @@ -0,0 +1,25 @@ +<template> + <div class="d-flex justify-content-center align-items-center"> + <div class="logo d-flex flex-column justify-content-center align-items-center"> + <object class="my-4" width="200" height="200" data="/icon.svg" /> + <div class="fs-4 fw-bold">Uptime Kuma</div> + <div>{{ $t("Version") }}: {{ $root.info.version }}</div> + <div class="my-1 update-link"><a href="https://github.com/louislam/uptime-kuma/releases" target="_blank" rel="noopener">{{ $t("Check Update On GitHub") }}</a></div> + </div> + </div> +</template> + +<script> +export default { + +}; +</script> + +<style lang="scss" scoped> +.logo { + margin: 4em 1em; +} +.update-link { + font-size: 0.9em; +} +</style> diff --git a/src/components/settings/Appearance.vue b/src/components/settings/Appearance.vue new file mode 100644 index 000000000..e0a3d6430 --- /dev/null +++ b/src/components/settings/Appearance.vue @@ -0,0 +1,149 @@ +<template> + <div> + <div class="my-4"> + <label for="language" class="form-label"> + {{ $t("Language") }} + </label> + <select id="language" v-model="$i18n.locale" class="form-select"> + <option + v-for="(lang, i) in $i18n.availableLocales" + :key="`Lang${i}`" + :value="lang" + > + {{ $i18n.messages[lang].languageName }} + </option> + </select> + </div> + <div class="my-4"> + <label for="timezone" class="form-label">{{ $t("Theme") }}</label> + <div> + <div + class="btn-group" + role="group" + aria-label="Basic checkbox toggle button group" + > + <input + id="btncheck1" + v-model="$root.userTheme" + type="radio" + class="btn-check" + name="theme" + autocomplete="off" + value="light" + /> + <label class="btn btn-outline-primary" for="btncheck1"> + {{ $t("Light") }} + </label> + + <input + id="btncheck2" + v-model="$root.userTheme" + type="radio" + class="btn-check" + name="theme" + autocomplete="off" + value="dark" + /> + <label class="btn btn-outline-primary" for="btncheck2"> + {{ $t("Dark") }} + </label> + + <input + id="btncheck3" + v-model="$root.userTheme" + type="radio" + class="btn-check" + name="theme" + autocomplete="off" + value="auto" + /> + <label class="btn btn-outline-primary" for="btncheck3"> + {{ $t("Auto") }} + </label> + </div> + </div> + </div> + <div class="my-4"> + <label class="form-label">{{ $t("Theme - Heartbeat Bar") }}</label> + <div> + <div + class="btn-group" + role="group" + aria-label="Basic checkbox toggle button group" + > + <input + id="btncheck4" + v-model="$root.userHeartbeatBar" + type="radio" + class="btn-check" + name="heartbeatBarTheme" + autocomplete="off" + value="normal" + /> + <label class="btn btn-outline-primary" for="btncheck4"> + {{ $t("Normal") }} + </label> + + <input + id="btncheck5" + v-model="$root.userHeartbeatBar" + type="radio" + class="btn-check" + name="heartbeatBarTheme" + autocomplete="off" + value="bottom" + /> + <label class="btn btn-outline-primary" for="btncheck5"> + {{ $t("Bottom") }} + </label> + + <input + id="btncheck6" + v-model="$root.userHeartbeatBar" + type="radio" + class="btn-check" + name="heartbeatBarTheme" + autocomplete="off" + value="none" + /> + <label class="btn btn-outline-primary" for="btncheck6"> + {{ $t("None") }} + </label> + </div> + </div> + </div> + </div> +</template> + +<script> +import { setPageLocale } from "../../util-frontend"; +export default { + watch: { + "$i18n.locale"() { + localStorage.locale = this.$i18n.locale; + setPageLocale(); + }, + }, +}; +</script> + +<style lang="scss" scoped> +@import "../../assets/vars.scss"; + +.btn-check:active + .btn-outline-primary, +.btn-check:checked + .btn-outline-primary, +.btn-check:hover + .btn-outline-primary { + color: #fff; + + .dark & { + color: #000; + } +} + +.dark { + .list-group-item { + background-color: $dark-bg2; + color: $dark-font-color; + } +} +</style> diff --git a/src/components/settings/Backup.vue b/src/components/settings/Backup.vue new file mode 100644 index 000000000..6ac28d468 --- /dev/null +++ b/src/components/settings/Backup.vue @@ -0,0 +1,213 @@ +<template> + <div> + <div class="my-4"> + <h4 class="mt-4 mb-2">{{ $t("Export Backup") }}</h4> + + <p> + {{ $t("backupDescription") }} <br /> + ({{ $t("backupDescription2") }}) <br /> + </p> + + <div class="mb-2"> + <button class="btn btn-primary" @click="downloadBackup"> + {{ $t("Export") }} + </button> + </div> + + <p> + <strong>{{ $t("backupDescription3") }}</strong> + </p> + </div> + + <div class="my-4"> + <h4 class="mt-4 mb-2">{{ $t("Import Backup") }}</h4> + + <label class="form-label">{{ $t("Options") }}:</label> + <br /> + <div class="form-check form-check-inline"> + <input + id="radioKeep" + v-model="importHandle" + class="form-check-input" + type="radio" + name="radioImportHandle" + value="keep" + /> + <label class="form-check-label" for="radioKeep"> + {{ $t("Keep both") }} + </label> + </div> + <div class="form-check form-check-inline"> + <input + id="radioSkip" + v-model="importHandle" + class="form-check-input" + type="radio" + name="radioImportHandle" + value="skip" + /> + <label class="form-check-label" for="radioSkip"> + {{ $t("Skip existing") }} + </label> + </div> + <div class="form-check form-check-inline"> + <input + id="radioOverwrite" + v-model="importHandle" + class="form-check-input" + type="radio" + name="radioImportHandle" + value="overwrite" + /> + <label class="form-check-label" for="radioOverwrite"> + {{ $t("Overwrite") }} + </label> + </div> + <div class="form-text mb-2"> + {{ $t("importHandleDescription") }} + </div> + + <div class="mb-2"> + <input + id="importBackup" + type="file" + class="form-control" + accept="application/json" + /> + </div> + + <div class="input-group mb-2 justify-content-end"> + <button + type="button" + class="btn btn-outline-primary" + :disabled="processing" + @click="confirmImport" + > + <div + v-if="processing" + class="spinner-border spinner-border-sm me-1" + ></div> + {{ $t("Import") }} + </button> + </div> + + <div + v-if="importAlert" + class="alert alert-danger mt-3" + style="padding: 6px 16px" + > + {{ importAlert }} + </div> + </div> + + <Confirm + ref="confirmImport" + btn-style="btn-danger" + :yes-text="$t('Yes')" + :no-text="$t('No')" + @yes="importBackup" + > + {{ $t("confirmImportMsg") }} + </Confirm> + </div> +</template> + +<script> +import Confirm from "../../components/Confirm.vue"; +import dayjs from "dayjs"; +import { useToast } from "vue-toastification"; + +const toast = useToast(); + +export default { + components: { + Confirm, + }, + + data() { + return { + processing: false, + importHandle: "skip", + importAlert: null, + }; + }, + + methods: { + confirmImport() { + this.$refs.confirmImport.show(); + }, + + downloadBackup() { + let time = dayjs().format("YYYY_MM_DD-hh_mm_ss"); + let fileName = `Uptime_Kuma_Backup_${time}.json`; + let monitorList = Object.values(this.$root.monitorList); + let exportData = { + version: this.$root.info.version, + notificationList: this.$root.notificationList, + monitorList: monitorList, + }; + exportData = JSON.stringify(exportData, null, 4); + let downloadItem = document.createElement("a"); + downloadItem.setAttribute( + "href", + "data:application/json;charset=utf-8," + + encodeURIComponent(exportData) + ); + downloadItem.setAttribute("download", fileName); + downloadItem.click(); + }, + + importBackup() { + this.processing = true; + let uploadItem = document.getElementById("importBackup").files; + + if (uploadItem.length <= 0) { + this.processing = false; + return (this.importAlert = this.$t("alertNoFile")); + } + + if (uploadItem.item(0).type !== "application/json") { + this.processing = false; + return (this.importAlert = this.$t("alertWrongFileType")); + } + + let fileReader = new FileReader(); + fileReader.readAsText(uploadItem.item(0)); + + fileReader.onload = (item) => { + this.$root.uploadBackup( + item.target.result, + this.importHandle, + (res) => { + this.processing = false; + + if (res.ok) { + toast.success(res.msg); + } else { + toast.error(res.msg); + } + } + ); + }; + }, + }, +}; +</script> + +<style lang="scss" scoped> +@import "../../assets/vars.scss"; + +.dark { + #importBackup { + &::file-selector-button { + color: $primary; + background-color: $dark-bg; + } + + &:hover:not(:disabled):not([readonly])::file-selector-button { + color: $dark-font-color2; + background-color: $primary; + } + } +} +</style> diff --git a/src/components/settings/General.vue b/src/components/settings/General.vue new file mode 100644 index 000000000..308f21aee --- /dev/null +++ b/src/components/settings/General.vue @@ -0,0 +1,191 @@ +<template> + <div> + <form class="my-4" @submit.prevent="saveGeneral"> + <!-- Timezone --> + <div class="mb-4"> + <label for="timezone" class="form-label"> + {{ $t("Timezone") }} + </label> + <select id="timezone" v-model="$root.userTimezone" class="form-select"> + <option value="auto"> + {{ $t("Auto") }}: {{ guessTimezone }} + </option> + <option + v-for="(timezone, index) in timezoneList" + :key="index" + :value="timezone.value" + > + {{ timezone.name }} + </option> + </select> + </div> + + <!-- Search Engine --> + <div class="mb-4"> + <label class="form-label"> + {{ $t("Search Engine Visibility") }} + </label> + + <div class="form-check"> + <input + id="searchEngineIndexYes" + v-model="settings.searchEngineIndex" + class="form-check-input" + type="radio" + name="flexRadioDefault" + :value="true" + required + /> + <label class="form-check-label" for="searchEngineIndexYes"> + {{ $t("Allow indexing") }} + </label> + </div> + <div class="form-check"> + <input + id="searchEngineIndexNo" + v-model="settings.searchEngineIndex" + class="form-check-input" + type="radio" + name="flexRadioDefault" + :value="false" + required + /> + <label class="form-check-label" for="searchEngineIndexNo"> + {{ $t("Discourage search engines from indexing site") }} + </label> + </div> + </div> + + <!-- Entry Page --> + <div class="mb-4"> + <label class="form-label">{{ $t("Entry Page") }}</label> + + <div class="form-check"> + <input + id="entryPageYes" + v-model="settings.entryPage" + class="form-check-input" + type="radio" + name="statusPage" + value="dashboard" + required + /> + <label class="form-check-label" for="entryPageYes"> + {{ $t("Dashboard") }} + </label> + </div> + + <div class="form-check"> + <input + id="entryPageNo" + v-model="settings.entryPage" + class="form-check-input" + type="radio" + name="statusPage" + value="statusPage" + required + /> + <label class="form-check-label" for="entryPageNo"> + {{ $t("Status Page") }} + </label> + </div> + </div> + + <!-- Primary Base URL --> + <div class="mb-4"> + <label class="form-label" for="primaryBaseURL"> + {{ $t("Primary Base URL") }} + </label> + + <div class="input-group mb-3"> + <input + id="primaryBaseURL" + v-model="settings.primaryBaseURL" + class="form-control" + name="primaryBaseURL" + placeholder="https://" + pattern="https?://.+" + /> + <button class="btn btn-outline-primary" type="button" @click="autoGetPrimaryBaseURL"> + {{ $t("Auto Get") }} + </button> + </div> + + <div class="form-text"></div> + </div> + + <!-- Steam API Key --> + <div class="mb-4"> + <label class="form-label" for="steamAPIKey"> + {{ $t("Steam API Key") }} + </label> + <HiddenInput + id="steamAPIKey" + v-model="settings.steamAPIKey" + /> + <div class="form-text"> + {{ $t("steamApiKeyDescription") }} + <a href="https://steamcommunity.com/dev" target="_blank"> + https://steamcommunity.com/dev + </a> + </div> + </div> + + <!-- Save Button --> + <div> + <button class="btn btn-primary" type="submit"> + {{ $t("Save") }} + </button> + </div> + </form> + </div> +</template> + +<script> +import HiddenInput from "../../components/HiddenInput.vue"; +import dayjs from "dayjs"; +import utc from "dayjs/plugin/utc"; +import timezone from "dayjs/plugin/timezone"; +import { timezoneList } from "../../util-frontend"; +dayjs.extend(utc); +dayjs.extend(timezone); + +export default { + components: { + HiddenInput, + }, + + data() { + return { + timezoneList: timezoneList(), + }; + }, + + computed: { + settings() { + return this.$parent.$parent.settings; + }, + saveSettings() { + return this.$parent.$parent.saveSettings; + }, + settingsLoaded() { + return this.$parent.$parent.settingsLoaded; + }, + guessTimezone() { + return dayjs.tz.guess(); + } + }, + + methods: { + saveGeneral() { + localStorage.timezone = this.$root.userTimezone; + this.saveSettings(); + }, + autoGetPrimaryBaseURL() { + this.settings.primaryBaseURL = location.protocol + "//" + location.host; + }, + }, +}; +</script> + +<style></style> diff --git a/src/components/settings/MonitorHistory.vue b/src/components/settings/MonitorHistory.vue new file mode 100644 index 000000000..85853ea1a --- /dev/null +++ b/src/components/settings/MonitorHistory.vue @@ -0,0 +1,127 @@ +<template> + <div> + <div class="my-4"> + <label for="keepDataPeriodDays" class="form-label"> + {{ + $t("clearDataOlderThan", [ + settings.keepDataPeriodDays, + ]) + }} + </label> + <input + id="keepDataPeriodDays" + v-model="settings.keepDataPeriodDays" + type="number" + class="form-control" + required + min="1" + step="1" + /> + </div> + <div class="my-4"> + <div class="my-3"> + <button class="btn btn-outline-info me-2" @click="shrinkDatabase"> + {{ $t("Shrink Database") }} ({{ databaseSizeDisplay }}) + </button> + <div class="form-text ms-2">{{ $t("shrinkDatabaseDescription") }}</div> + </div> + <button + class="btn btn-outline-danger me-2 mb-2" + @click="confirmClearStatistics" + > + {{ $t("Clear all statistics") }} + </button> + </div> + <Confirm + ref="confirmClearStatistics" + btn-style="btn-danger" + :yes-text="$t('Yes')" + :no-text="$t('No')" + @yes="clearStatistics" + > + {{ $t("confirmClearStatisticsMsg") }} + </Confirm> + </div> +</template> + +<script> +import Confirm from "../../components/Confirm.vue"; +import { debug } from "../../util.ts"; +import { useToast } from "vue-toastification"; + +const toast = useToast(); + +export default { + components: { + Confirm, + }, + + data() { + return { + databaseSize: 0, + }; + }, + + computed: { + settings() { + return this.$parent.$parent.settings; + }, + saveSettings() { + return this.$parent.$parent.saveSettings; + }, + settingsLoaded() { + return this.$parent.$parent.settingsLoaded; + }, + databaseSizeDisplay() { + return ( + Math.round((this.databaseSize / 1024 / 1024) * 10) / 10 + " MB" + ); + }, + }, + + mounted() { + this.loadDatabaseSize(); + }, + + methods: { + loadDatabaseSize() { + debug("load database size"); + this.$root.getSocket().emit("getDatabaseSize", (res) => { + if (res.ok) { + this.databaseSize = res.size; + debug("database size: " + res.size); + } else { + debug(res); + } + }); + }, + + shrinkDatabase() { + this.$root.getSocket().emit("shrinkDatabase", (res) => { + if (res.ok) { + this.loadDatabaseSize(); + toast.success("Done"); + } else { + debug(res); + } + }); + }, + + confirmClearStatistics() { + this.$refs.confirmClearStatistics.show(); + }, + + clearStatistics() { + this.$root.clearStatistics((res) => { + if (res.ok) { + this.$router.go(); + } else { + toast.error(res.msg); + } + }); + }, + }, +}; +</script> + +<style></style> diff --git a/src/components/settings/Notifications.vue b/src/components/settings/Notifications.vue new file mode 100644 index 000000000..b2cbcf48a --- /dev/null +++ b/src/components/settings/Notifications.vue @@ -0,0 +1,46 @@ +<template> + <div> + <div class="notification-list my-4"> + <p v-if="$root.notificationList.length === 0"> + {{ $t("Not available, please setup.") }} + </p> + <p v-else> + {{ $t("notificationDescription") }} + </p> + + <ul class="list-group mb-3" style="border-radius: 1rem;"> + <li v-for="(notification, index) in $root.notificationList" :key="index" class="list-group-item"> + {{ notification.name }}<br> + <a href="#" @click="$refs.notificationDialog.show(notification.id)">{{ $t("Edit") }}</a> + </li> + </ul> + + <button class="btn btn-primary me-2" type="button" @click="$refs.notificationDialog.show()"> + {{ $t("Setup Notification") }} + </button> + </div> + + <NotificationDialog ref="notificationDialog" /> + </div> +</template> + +<script> +import NotificationDialog from "../../components/NotificationDialog.vue"; + +export default { + components: { + NotificationDialog + }, +}; +</script> + +<style lang="scss" scoped> +@import "../../assets/vars.scss"; + +.dark { + .list-group-item { + background-color: $dark-bg2; + color: $dark-font-color; + } +} +</style> diff --git a/src/components/settings/Security.vue b/src/components/settings/Security.vue new file mode 100644 index 000000000..1cbfb034e --- /dev/null +++ b/src/components/settings/Security.vue @@ -0,0 +1,323 @@ +<template> + <div> + <div v-if="settingsLoaded" class="my-4"> + <!-- Change Password --> + <template v-if="!settings.disableAuth"> + <p> + {{ $t("Current User") }}: <strong>{{ username }}</strong> + </p> + + <h5 class="my-4">{{ $t("Change Password") }}</h5> + <form class="mb-3" @submit.prevent="savePassword"> + <div class="mb-3"> + <label for="current-password" class="form-label"> + {{ $t("Current Password") }} + </label> + <input + id="current-password" + v-model="password.currentPassword" + type="password" + class="form-control" + required + /> + </div> + + <div class="mb-3"> + <label for="new-password" class="form-label"> + {{ $t("New Password") }} + </label> + <input + id="new-password" + v-model="password.newPassword" + type="password" + class="form-control" + required + /> + </div> + + <div class="mb-3"> + <label for="repeat-new-password" class="form-label"> + {{ $t("Repeat New Password") }} + </label> + <input + id="repeat-new-password" + v-model="password.repeatNewPassword" + type="password" + class="form-control" + :class="{ 'is-invalid': invalidPassword }" + required + /> + <div class="invalid-feedback"> + {{ $t("passwordNotMatchMsg") }} + </div> + </div> + + <div> + <button class="btn btn-primary" type="submit"> + {{ $t("Update Password") }} + </button> + </div> + </form> + </template> + + <div v-if="!$parent.$parent.settings.disableAuth" class="mt-5 mb-3"> + <h5 class="my-4"> + {{ $t("Two Factor Authentication") }} + </h5> + <div class="mb-4"> + <button + class="btn btn-primary me-2" + type="button" + @click="$refs.TwoFADialog.show()" + > + {{ $t("2FA Settings") }} + </button> + </div> + </div> + + <div class="my-4"> + <!-- Advanced --> + <h5 class="my-4">{{ $t("Advanced") }}</h5> + + <div class="mb-4"> + <button v-if="settings.disableAuth" class="btn btn-outline-primary me-2 mb-2" @click="enableAuth">{{ $t("Enable Auth") }}</button> + <button v-if="! settings.disableAuth" class="btn btn-primary me-2 mb-2" @click="confirmDisableAuth">{{ $t("Disable Auth") }}</button> + <button v-if="! settings.disableAuth" class="btn btn-danger me-2 mb-2" @click="$root.logout">{{ $t("Logout") }}</button> + </div> + </div> + </div> + + <TwoFADialog ref="TwoFADialog" /> + + <Confirm ref="confirmDisableAuth" btn-style="btn-danger" :yes-text="$t('I understand, please disable')" :no-text="$t('Leave')" @yes="disableAuth"> + <template v-if="$i18n.locale === 'es-ES' "> + <p>Seguro que deseas <strong>deshabilitar la autenticación</strong>?</p> + <p>Es para <strong>quien implementa autenticación de terceros</strong> ante Uptime Kuma como por ejemplo Cloudflare Access.</p> + <p>Por favor usar con cuidado.</p> + </template> + + <template v-else-if="$i18n.locale === 'pt-BR' "> + <p>Você tem certeza que deseja <strong>desativar a autenticação</strong>?</p> + <p>Isso é para <strong>alguém que tem autenticação de terceiros</strong> na frente do 'UpTime Kuma' como o Cloudflare Access.</p> + <p>Por favor, utilize isso com cautela.</p> + </template> + + <template v-else-if="$i18n.locale === 'zh-HK' "> + <p>你是否確認<strong>取消登入認証</strong>?</p> + <p>這個功能是設計給已有<strong>第三方認証</strong>的用家,例如 Cloudflare Access。</p> + <p>請小心使用。</p> + </template> + + <template v-else-if="$i18n.locale === 'zh-CN' "> + <p>是否确定 <strong>取消登录验证</strong>?</p> + <p>这是为 <strong>有第三方认证</strong> 的用户提供的功能,如 Cloudflare Access</p> + <p>请谨慎使用!</p> + </template> + + <template v-else-if="$i18n.locale === 'zh-TW' "> + <p>你是否要<strong>取消登入驗證</strong>?</p> + <p>此功能是設計給已有<strong>第三方認證</strong>的使用者,例如 Cloudflare Access。</p> + <p>請謹慎使用。</p> + </template> + + <template v-else-if="$i18n.locale === 'de-DE' "> + <p>Bist du sicher das du die <strong>Authentifizierung deaktivieren</strong> möchtest?</p> + <p>Es ist für <strong>jemanden der eine externe Authentifizierung</strong> vor Uptime Kuma geschaltet hat, wie z.B. Cloudflare Access.</p> + <p>Bitte mit Vorsicht nutzen.</p> + </template> + + <template v-else-if="$i18n.locale === 'sr' "> + <p>Да ли сте сигурни да желите да <strong>искључите аутентификацију</strong>?</p> + <p>То је за <strong>оне који имају додату аутентификацију</strong> испред Uptime Kuma као на пример Cloudflare Access.</p> + <p>Молим Вас користите ово са пажњом.</p> + </template> + + <template v-else-if="$i18n.locale === 'sr-latn' "> + <p>Da li ste sigurni da želite da <strong>isključite autentifikaciju</strong>?</p> + <p>To je za <strong>one koji imaju dodatu autentifikaciju</strong> ispred Uptime Kuma kao na primer Cloudflare Access.</p> + <p>Molim Vas koristite ovo sa pažnjom.</p> + </template> + + <template v-if="$i18n.locale === 'hr-HR' "> + <p>Jeste li sigurni da želite <strong>isključiti autentikaciju</strong>?</p> + <p>To je za <strong>korisnike koji imaju vanjsku autentikaciju stranice</strong> ispred Uptime Kume, poput usluge Cloudflare Access.</p> + <p>Pažljivo koristite ovu opciju.</p> + </template> + + <template v-else-if="$i18n.locale === 'tr-TR' "> + <p><strong>Şifreli girişi devre dışı bırakmak istediğinizden</strong>emin misiniz?</p> + <p>Bu, Uptime Kuma'nın önünde Cloudflare Access gibi <strong>üçüncü taraf yetkilendirmesi olan</strong> kişiler içindir.</p> + <p>Lütfen dikkatli kullanın.</p> + </template> + + <template v-else-if="$i18n.locale === 'ko-KR' "> + <p>정말로 <strong>인증 기능을 끌까요</strong>?</p> + <p>이 기능은 <strong>Cloudflare Access와 같은 서드파티 인증</strong>을 Uptime Kuma 앞에 둔 사용자를 위한 기능이에요.</p> + <p>신중하게 사용하세요.</p> + </template> + + <template v-else-if="$i18n.locale === 'pl' "> + <p>Czy na pewno chcesz <strong>wyłączyć autoryzację</strong>?</p> + <p>Jest przeznaczony dla <strong>kogoś, kto ma autoryzację zewnętrzną</strong> przed Uptime Kuma, taką jak Cloudflare Access.</p> + <p>Proszę używać ostrożnie.</p> + </template> + + <template v-else-if="$i18n.locale === 'et-EE' "> + <p>Kas soovid <strong>lülitada autentimise välja</strong>?</p> + <p>Kastuamiseks <strong>välise autentimispakkujaga</strong>, näiteks Cloudflare Access.</p> + <p>Palun kasuta vastutustundlikult.</p> + </template> + + <template v-else-if="$i18n.locale === 'it-IT' "> + <p>Si è certi di voler <strong>disabilitare l'autenticazione</strong>?</p> + <p>È per <strong>chi ha l'autenticazione gestita da terze parti</strong> messa davanti ad Uptime Kuma, ad esempio Cloudflare Access.</p> + <p>Utilizzare con attenzione.</p> + </template> + + <template v-else-if="$i18n.locale === 'id-ID' "> + <p>Apakah Anda yakin ingin <strong>menonaktifkan autentikasi</strong>?</p> + <p>Ini untuk <strong>mereka yang memiliki autentikasi pihak ketiga</strong> diletakkan di depan Uptime Kuma, misalnya akses Cloudflare.</p> + <p>Gunakan dengan hati-hati.</p> + </template> + + <template v-else-if="$i18n.locale === 'ru-RU' "> + <p>Вы уверены, что хотите <strong>отключить авторизацию</strong>?</p> + <p>Это подходит для <strong>тех, у кого стоит другая авторизация</strong> перед открытием Uptime Kuma, например Cloudflare Access.</p> + <p>Пожалуйста, используйте с осторожностью.</p> + </template> + + <template v-else-if="$i18n.locale === 'fa' "> + <p>آیا مطمئن هستید که میخواهید <strong>احراز هویت را غیر فعال کنید</strong>?</p> + <p>این ویژگی برای کسانی است که <strong> لایه امنیتی شخص ثالث دیگر بر روی این آدرس فعال کرده‌اند</strong>، مانند Cloudflare Access.</p> + <p>لطفا از این امکان با دقت استفاده کنید.</p> + </template> + + <template v-else-if="$i18n.locale === 'bg-BG' "> + <p>Сигурни ли сте, че желаете да <strong>изключите удостоверяването</strong>?</p> + <p>Използва се в случаите, когато <strong>има настроен алтернативен метод за удостоверяване</strong> преди Uptime Kuma, например Cloudflare Access.</p> + <p>Моля, използвайте с повишено внимание.</p> + </template> + + <template v-else-if="$i18n.locale === 'hu' "> + <p>Biztos benne, hogy <strong>kikapcsolja a hitelesítést</strong>?</p> + <p>Akkor érdemes, ha <strong>van 3rd-party hitelesítés</strong> az Uptime Kuma-t megelőzően mint a Cloudflare Access.</p> + <p>Használja megfontoltan!</p> + </template> + + <template v-else-if="$i18n.locale === 'nb-NO' "> + <p>Er du sikker på at du vil <strong>deaktiver autentisering</strong>?</p> + <p>Dette er for <strong>de som har tredjepartsautorisering</strong> foran Uptime Kuma, for eksempel Cloudflare Access.</p> + <p>Vennligst vær forsiktig.</p> + </template> + + <!-- English (en) --> + <template v-else> + <p>Are you sure want to <strong>disable auth</strong>?</p> + <p>It is for <strong>someone who have 3rd-party auth</strong> in front of Uptime Kuma such as Cloudflare Access.</p> + <p>Please use it carefully.</p> + </template> + </Confirm> + </div> +</template> + +<script> +import Confirm from "../../components/Confirm.vue"; +import TwoFADialog from "../../components/TwoFADialog.vue"; + +export default { + components: { + Confirm, + TwoFADialog + }, + + data() { + return { + username: "", + invalidPassword: false, + password: { + currentPassword: "", + newPassword: "", + repeatNewPassword: "", + } + }; + }, + + computed: { + settings() { + return this.$parent.$parent.settings; + }, + saveSettings() { + return this.$parent.$parent.saveSettings; + }, + settingsLoaded() { + return this.$parent.$parent.settingsLoaded; + } + }, + + watch: { + "password.repeatNewPassword"() { + this.invalidPassword = false; + }, + }, + + mounted() { + this.loadUsername(); + }, + + methods: { + savePassword() { + if (this.password.newPassword !== this.password.repeatNewPassword) { + this.invalidPassword = true; + } else { + this.$root + .getSocket() + .emit("changePassword", this.password, (res) => { + this.$root.toastRes(res); + if (res.ok) { + this.password.currentPassword = ""; + this.password.newPassword = ""; + this.password.repeatNewPassword = ""; + } + }); + } + }, + + loadUsername() { + const jwtPayload = this.$root.getJWTPayload(); + + if (jwtPayload) { + this.username = jwtPayload.username; + } + }, + + disableAuth() { + this.settings.disableAuth = true; + this.saveSettings(); + }, + + enableAuth() { + this.settings.disableAuth = false; + this.saveSettings(); + this.$root.storage().removeItem("token"); + location.reload(); + }, + + confirmDisableAuth() { + this.$refs.confirmDisableAuth.show(); + }, + + }, +}; +</script> + +<style lang="scss" scoped> +@import "../../assets/vars.scss"; + +h5:after { + content: ""; + display: block; + width: 50%; + padding-top: 8px; + border-bottom: 1px solid $dark-border-color; +} +</style> diff --git a/src/languages/en.js b/src/languages/en.js index 15c3cd0f3..a503b5235 100644 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -307,4 +307,5 @@ export default { steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", "Current User": "Current User", recent: "Recent", + shrinkDatabaseDescription: "Trigger database VACCUM for SQLite. If your database is created after 1.10.0, AUTO_VACCUM is already enabled and this action is not needed.", }; diff --git a/src/layouts/Layout.vue b/src/layouts/Layout.vue index 7228a460d..2f4f689ab 100644 --- a/src/layouts/Layout.vue +++ b/src/layouts/Layout.vue @@ -188,8 +188,8 @@ main { .dark { header { - background-color: #161b22; - border-bottom-color: #161b22 !important; + background-color: $dark-header-bg; + border-bottom-color: $dark-header-bg !important; span { color: #f0f6fc; diff --git a/src/pages/Settings.vue b/src/pages/Settings.vue index 9d501407d..9ff234150 100644 --- a/src/pages/Settings.vue +++ b/src/pages/Settings.vue @@ -7,521 +7,90 @@ <div class="shadow-box"> <div class="row"> - <div class="col-md-6"> - <h2 class="mb-2">{{ $t("Appearance") }}</h2> - - <div class="mb-3"> - <label for="language" class="form-label">{{ $t("Language") }}</label> - <select id="language" v-model="$i18n.locale" class="form-select"> - <option v-for="(lang, i) in $i18n.availableLocales" :key="`Lang${i}`" :value="lang"> - {{ $i18n.messages[lang].languageName }} - </option> - </select> - </div> - - <div class="mb-3"> - <label for="timezone" class="form-label">{{ $t("Theme") }}</label> - - <div> - <div class="btn-group" role="group" aria-label="Basic checkbox toggle button group"> - <input id="btncheck1" v-model="$root.userTheme" type="radio" class="btn-check" name="theme" autocomplete="off" value="light"> - <label class="btn btn-outline-primary" for="btncheck1">{{ $t("Light") }}</label> - - <input id="btncheck2" v-model="$root.userTheme" type="radio" class="btn-check" name="theme" autocomplete="off" value="dark"> - <label class="btn btn-outline-primary" for="btncheck2">{{ $t("Dark") }}</label> - - <input id="btncheck3" v-model="$root.userTheme" type="radio" class="btn-check" name="theme" autocomplete="off" value="auto"> - <label class="btn btn-outline-primary" for="btncheck3">{{ $t("Auto") }}</label> - </div> - </div> - </div> - - <div class="mb-3"> - <label class="form-label">{{ $t("Theme - Heartbeat Bar") }}</label> - <div> - <div class="btn-group" role="group" aria-label="Basic checkbox toggle button group"> - <input id="btncheck4" v-model="$root.userHeartbeatBar" type="radio" class="btn-check" name="heartbeatBarTheme" autocomplete="off" value="normal"> - <label class="btn btn-outline-primary" for="btncheck4">{{ $t("Normal") }}</label> - - <input id="btncheck5" v-model="$root.userHeartbeatBar" type="radio" class="btn-check" name="heartbeatBarTheme" autocomplete="off" value="bottom"> - <label class="btn btn-outline-primary" for="btncheck5">{{ $t("Bottom") }}</label> - - <input id="btncheck6" v-model="$root.userHeartbeatBar" type="radio" class="btn-check" name="heartbeatBarTheme" autocomplete="off" value="none"> - <label class="btn btn-outline-primary" for="btncheck6">{{ $t("None") }}</label> - </div> - </div> + <div class="settings-menu"> + <div v-for="(item, key) in subMenus" + :key="key" + class="menu-item" + :class="{ active: currentSubMenu == key }" + @click="currentSubMenu = key" + > + {{ item.title }} </div> - - <!-- General Settings --> - <h2 class="mt-5 mb-2">{{ $t("General") }}</h2> - - <form class="mb-3" @submit.prevent="saveGeneral"> - <!-- Timezone --> - <div class="mb-4"> - <label for="timezone" class="form-label">{{ $t("Timezone") }}</label> - <select id="timezone" v-model="$root.userTimezone" class="form-select"> - <option value="auto"> - {{ $t("Auto") }}: {{ guessTimezone }} - </option> - <option v-for="(timezone, index) in timezoneList" :key="index" :value="timezone.value"> - {{ timezone.name }} - </option> - </select> - </div> - - <!-- Search Engine --> - <div class="mb-4"> - <label class="form-label">{{ $t("Search Engine Visibility") }}</label> - - <div class="form-check"> - <input id="searchEngineIndexYes" v-model="settings.searchEngineIndex" class="form-check-input" type="radio" name="flexRadioDefault" :value="true" required> - <label class="form-check-label" for="searchEngineIndexYes"> - {{ $t("Allow indexing") }} - </label> - </div> - <div class="form-check"> - <input id="searchEngineIndexNo" v-model="settings.searchEngineIndex" class="form-check-input" type="radio" name="flexRadioDefault" :value="false" required> - <label class="form-check-label" for="searchEngineIndexNo"> - {{ $t("Discourage search engines from indexing site") }} - </label> - </div> - </div> - - <!-- Entry Page --> - <div class="mb-4"> - <label class="form-label">{{ $t("Entry Page") }}</label> - - <div class="form-check"> - <input id="entryPageYes" v-model="settings.entryPage" class="form-check-input" type="radio" name="statusPage" value="dashboard" required> - <label class="form-check-label" for="entryPageYes"> - {{ $t("Dashboard") }} - </label> - </div> - - <div class="form-check"> - <input id="entryPageNo" v-model="settings.entryPage" class="form-check-input" type="radio" name="statusPage" value="statusPage" required> - <label class="form-check-label" for="entryPageNo"> - {{ $t("Status Page") }} - </label> - </div> - </div> - - <!-- Primary Base URL --> - <div class="mb-4"> - <label class="form-label" for="primaryBaseURL">{{ $t("Primary Base URL") }}</label> - - <div class="input-group mb-3"> - <input id="primaryBaseURL" v-model="settings.primaryBaseURL" class="form-control" name="primaryBaseURL" placeholder="https://" pattern="https?://.+"> - <button class="btn btn-outline-primary" type="button" @click="autoGetPrimaryBaseURL">{{ $t("Auto Get") }}</button> - </div> - - <div class="form-text"> - </div> - </div> - - <!-- Steam API Key --> - <div class="mb-4"> - <label class="form-label" for="steamAPIKey">{{ $t("Steam API Key") }}</label> - <HiddenInput id="steamAPIKey" v-model="settings.steamAPIKey" /> - <div class="form-text"> - {{ $t("steamApiKeyDescription") }}<a href="https://steamcommunity.com/dev" target="_blank">https://steamcommunity.com/dev</a> - </div> - </div> - - <!-- Monitor History --> - <div class="mb-4"> - <h4 class="mt-4">{{ $t("Monitor History") }}</h4> - <div class="mt-2"> - <label for="keepDataPeriodDays" class="form-label">{{ $t("clearDataOlderThan", [ settings.keepDataPeriodDays ]) }}</label> - <input id="keepDataPeriodDays" v-model="settings.keepDataPeriodDays" type="number" class="form-control" required min="1" step="1"> - </div> - </div> - - <!-- Save Button --> - <div> - <button class="btn btn-primary" type="submit"> - {{ $t("Save") }} - </button> - </div> - </form> - - <template v-if="loaded"> - <!-- Change Password --> - <template v-if="! settings.disableAuth"> - <h2 class="mt-5 mb-2">{{ $t("Change Password") }}</h2> - <p>{{ $t("Current User") }}: <strong>{{ username }}</strong></p> - <form class="mb-3" @submit.prevent="savePassword"> - <div class="mb-3"> - <label for="current-password" class="form-label">{{ $t("Current Password") }}</label> - <input id="current-password" v-model="password.currentPassword" type="password" class="form-control" required> - </div> - - <div class="mb-3"> - <label for="new-password" class="form-label">{{ $t("New Password") }}</label> - <input id="new-password" v-model="password.newPassword" type="password" class="form-control" required> - </div> - - <div class="mb-3"> - <label for="repeat-new-password" class="form-label">{{ $t("Repeat New Password") }}</label> - <input id="repeat-new-password" v-model="password.repeatNewPassword" type="password" class="form-control" :class="{ 'is-invalid' : invalidPassword }" required> - <div class="invalid-feedback"> - {{ $t("passwordNotMatchMsg") }} - </div> - </div> - - <div> - <button class="btn btn-primary" type="submit"> - {{ $t("Update Password") }} - </button> - </div> - </form> - </template> - - <div v-if="! settings.disableAuth" class="mt-5 mb-3"> - <h2 class="mb-2"> - {{ $t("Two Factor Authentication") }} - </h2> - <button class="btn btn-primary me-2" type="button" @click="$refs.TwoFADialog.show()">{{ $t("2FA Settings") }}</button> - </div> - - <h2 class="mt-5 mb-2">{{ $t("Export Backup") }}</h2> - - <p> - {{ $t("backupDescription") }} <br /> - ({{ $t("backupDescription2") }}) <br /> - </p> - - <div class="mb-2"> - <button class="btn btn-primary" @click="downloadBackup">{{ $t("Export") }}</button> - </div> - - <p><strong>{{ $t("backupDescription3") }}</strong></p> - - <h2 class="mt-5 mb-2">{{ $t("Import Backup") }}</h2> - - <label class="form-label">{{ $t("Options") }}:</label> - <br> - <div class="form-check form-check-inline"> - <input id="radioKeep" v-model="importHandle" class="form-check-input" type="radio" name="radioImportHandle" value="keep"> - <label class="form-check-label" for="radioKeep">{{ $t("Keep both") }}</label> - </div> - <div class="form-check form-check-inline"> - <input id="radioSkip" v-model="importHandle" class="form-check-input" type="radio" name="radioImportHandle" value="skip"> - <label class="form-check-label" for="radioSkip">{{ $t("Skip existing") }}</label> - </div> - <div class="form-check form-check-inline"> - <input id="radioOverwrite" v-model="importHandle" class="form-check-input" type="radio" name="radioImportHandle" value="overwrite"> - <label class="form-check-label" for="radioOverwrite">{{ $t("Overwrite") }}</label> - </div> - <div class="form-text mb-2"> - {{ $t("importHandleDescription") }} - </div> - - <div class="mb-2"> - <input id="importBackup" type="file" class="form-control" accept="application/json"> - </div> - - <div class="input-group mb-2 justify-content-end"> - <button type="button" class="btn btn-outline-primary" :disabled="processing" @click="confirmImport"> - <div v-if="processing" class="spinner-border spinner-border-sm me-1"></div> - {{ $t("Import") }} - </button> - </div> - - <div v-if="importAlert" class="alert alert-danger mt-3" style="padding: 6px 16px;"> - {{ importAlert }} - </div> - - <!-- Advanced --> - <h2 class="mt-5 mb-2">{{ $t("Advanced") }}</h2> - - <div class="mb-3"> - <button v-if="settings.disableAuth" class="btn btn-outline-primary me-2 mb-2" @click="enableAuth">{{ $t("Enable Auth") }}</button> - <button v-if="! settings.disableAuth" class="btn btn-primary me-2 mb-2" @click="confirmDisableAuth">{{ $t("Disable Auth") }}</button> - <button v-if="! settings.disableAuth" class="btn btn-danger me-2 mb-2" @click="$root.logout">{{ $t("Logout") }}</button> - <button class="btn btn-outline-danger me-2 mb-2" @click="confirmClearStatistics">{{ $t("Clear all statistics") }}</button> - <button class="btn btn-info me-2 mb-2" @click="shrinkDatabase">{{ $t("Shrink Database") }} ({{ databaseSizeDisplay }})</button> - </div> - </template> </div> - - <div class="col-md-6"> - <div v-if="$root.isMobile" class="mt-3" /> - - <!-- Notifications --> - <div class="notification-list "> - <h2>{{ $t("Notifications") }}</h2> - <p v-if="$root.notificationList.length === 0"> - {{ $t("Not available, please setup.") }} - </p> - <p v-else> - {{ $t("notificationDescription") }} - </p> - - <ul class="list-group mb-3" style="border-radius: 1rem;"> - <li v-for="(notification, index) in $root.notificationList" :key="index" class="list-group-item"> - {{ notification.name }}<br> - <a href="#" @click="$refs.notificationDialog.show(notification.id)">{{ $t("Edit") }}</a> - </li> - </ul> - - <button class="btn btn-primary me-2" type="button" @click="$refs.notificationDialog.show()"> - {{ $t("Setup Notification") }} - </button> + <div class="settings-content"> + <div class="settings-content-header"> + {{ subMenus[currentSubMenu].title }} + </div> + <div class="mx-3"> + <component :is="subMenus[currentSubMenu].component" /> </div> - - <!-- Info --> - <h2 class="mt-5">{{ $t("Info") }}</h2> - - {{ $t("Version") }}: {{ $root.info.version }} <br /> - <a href="https://github.com/louislam/uptime-kuma/releases" target="_blank" rel="noopener">{{ $t("Check Update On GitHub") }}</a> </div> </div> </div> - - <NotificationDialog ref="notificationDialog" /> - <TwoFADialog ref="TwoFADialog" /> - - <Confirm ref="confirmDisableAuth" btn-style="btn-danger" :yes-text="$t('I understand, please disable')" :no-text="$t('Leave')" @yes="disableAuth"> - <template v-if="$i18n.locale === 'es-ES' "> - <p>Seguro que deseas <strong>deshabilitar la autenticación</strong>?</p> - <p>Es para <strong>quien implementa autenticación de terceros</strong> ante Uptime Kuma como por ejemplo Cloudflare Access.</p> - <p>Por favor usar con cuidado.</p> - </template> - - <template v-else-if="$i18n.locale === 'pt-BR' "> - <p>Você tem certeza que deseja <strong>desativar a autenticação</strong>?</p> - <p>Isso é para <strong>alguém que tem autenticação de terceiros</strong> na frente do 'UpTime Kuma' como o Cloudflare Access.</p> - <p>Por favor, utilize isso com cautela.</p> - </template> - - <template v-else-if="$i18n.locale === 'zh-HK' "> - <p>你是否確認<strong>取消登入認証</strong>?</p> - <p>這個功能是設計給已有<strong>第三方認証</strong>的用家,例如 Cloudflare Access。</p> - <p>請小心使用。</p> - </template> - - <template v-else-if="$i18n.locale === 'zh-CN' "> - <p>是否确定 <strong>取消登录验证</strong>?</p> - <p>这是为 <strong>有第三方认证</strong> 的用户提供的功能,如 Cloudflare Access</p> - <p>请谨慎使用!</p> - </template> - - <template v-else-if="$i18n.locale === 'zh-TW' "> - <p>你是否要<strong>取消登入驗證</strong>?</p> - <p>此功能是設計給已有<strong>第三方認證</strong>的使用者,例如 Cloudflare Access。</p> - <p>請謹慎使用。</p> - </template> - - <template v-else-if="$i18n.locale === 'de-DE' "> - <p>Bist du sicher das du die <strong>Authentifizierung deaktivieren</strong> möchtest?</p> - <p>Es ist für <strong>jemanden der eine externe Authentifizierung</strong> vor Uptime Kuma geschaltet hat, wie z.B. Cloudflare Access.</p> - <p>Bitte mit Vorsicht nutzen.</p> - </template> - - <template v-else-if="$i18n.locale === 'sr' "> - <p>Да ли сте сигурни да желите да <strong>искључите аутентификацију</strong>?</p> - <p>То је за <strong>оне који имају додату аутентификацију</strong> испред Uptime Kuma као на пример Cloudflare Access.</p> - <p>Молим Вас користите ово са пажњом.</p> - </template> - - <template v-else-if="$i18n.locale === 'sr-latn' "> - <p>Da li ste sigurni da želite da <strong>isključite autentifikaciju</strong>?</p> - <p>To je za <strong>one koji imaju dodatu autentifikaciju</strong> ispred Uptime Kuma kao na primer Cloudflare Access.</p> - <p>Molim Vas koristite ovo sa pažnjom.</p> - </template> - - <template v-if="$i18n.locale === 'hr-HR' "> - <p>Jeste li sigurni da želite <strong>isključiti autentikaciju</strong>?</p> - <p>To je za <strong>korisnike koji imaju vanjsku autentikaciju stranice</strong> ispred Uptime Kume, poput usluge Cloudflare Access.</p> - <p>Pažljivo koristite ovu opciju.</p> - </template> - - <template v-else-if="$i18n.locale === 'tr-TR' "> - <p><strong>Şifreli girişi devre dışı bırakmak istediğinizden</strong>emin misiniz?</p> - <p>Bu, Uptime Kuma'nın önünde Cloudflare Access gibi <strong>üçüncü taraf yetkilendirmesi olan</strong> kişiler içindir.</p> - <p>Lütfen dikkatli kullanın.</p> - </template> - - <template v-else-if="$i18n.locale === 'ko-KR' "> - <p>정말로 <strong>인증 기능을 끌까요</strong>?</p> - <p>이 기능은 <strong>Cloudflare Access와 같은 서드파티 인증</strong>을 Uptime Kuma 앞에 둔 사용자를 위한 기능이에요.</p> - <p>신중하게 사용하세요.</p> - </template> - - <template v-else-if="$i18n.locale === 'pl' "> - <p>Czy na pewno chcesz <strong>wyłączyć autoryzację</strong>?</p> - <p>Jest przeznaczony dla <strong>kogoś, kto ma autoryzację zewnętrzną</strong> przed Uptime Kuma, taką jak Cloudflare Access.</p> - <p>Proszę używać ostrożnie.</p> - </template> - - <template v-else-if="$i18n.locale === 'et-EE' "> - <p>Kas soovid <strong>lülitada autentimise välja</strong>?</p> - <p>Kastuamiseks <strong>välise autentimispakkujaga</strong>, näiteks Cloudflare Access.</p> - <p>Palun kasuta vastutustundlikult.</p> - </template> - - <template v-else-if="$i18n.locale === 'it-IT' "> - <p>Si è certi di voler <strong>disabilitare l'autenticazione</strong>?</p> - <p>È per <strong>chi ha l'autenticazione gestita da terze parti</strong> messa davanti ad Uptime Kuma, ad esempio Cloudflare Access.</p> - <p>Utilizzare con attenzione.</p> - </template> - - <template v-else-if="$i18n.locale === 'id-ID' "> - <p>Apakah Anda yakin ingin <strong>menonaktifkan autentikasi</strong>?</p> - <p>Ini untuk <strong>mereka yang memiliki autentikasi pihak ketiga</strong> diletakkan di depan Uptime Kuma, misalnya akses Cloudflare.</p> - <p>Gunakan dengan hati-hati.</p> - </template> - - <template v-else-if="$i18n.locale === 'ru-RU' "> - <p>Вы уверены, что хотите <strong>отключить авторизацию</strong>?</p> - <p>Это подходит для <strong>тех, у кого стоит другая авторизация</strong> перед открытием Uptime Kuma, например Cloudflare Access.</p> - <p>Пожалуйста, используйте с осторожностью.</p> - </template> - - <template v-else-if="$i18n.locale === 'fa' "> - <p>آیا مطمئن هستید که میخواهید <strong>احراز هویت را غیر فعال کنید</strong>?</p> - <p>این ویژگی برای کسانی است که <strong> لایه امنیتی شخص ثالث دیگر بر روی این آدرس فعال کرده‌اند</strong>، مانند Cloudflare Access.</p> - <p>لطفا از این امکان با دقت استفاده کنید.</p> - </template> - - <template v-else-if="$i18n.locale === 'bg-BG' "> - <p>Сигурни ли сте, че желаете да <strong>изключите удостоверяването</strong>?</p> - <p>Използва се в случаите, когато <strong>има настроен алтернативен метод за удостоверяване</strong> преди Uptime Kuma, например Cloudflare Access.</p> - <p>Моля, използвайте с повишено внимание.</p> - </template> - - <template v-else-if="$i18n.locale === 'hu' "> - <p>Biztos benne, hogy <strong>kikapcsolja a hitelesítést</strong>?</p> - <p>Akkor érdemes, ha <strong>van 3rd-party hitelesítés</strong> az Uptime Kuma-t megelőzően mint a Cloudflare Access.</p> - <p>Használja megfontoltan!</p> - </template> - - <template v-else-if="$i18n.locale === 'nb-NO' "> - <p>Er du sikker på at du vil <strong>deaktiver autentisering</strong>?</p> - <p>Dette er for <strong>de som har tredjepartsautorisering</strong> foran Uptime Kuma, for eksempel Cloudflare Access.</p> - <p>Vennligst vær forsiktig.</p> - </template> - - <!-- English (en) --> - <template v-else> - <p>Are you sure want to <strong>disable auth</strong>?</p> - <p>It is for <strong>someone who have 3rd-party auth</strong> in front of Uptime Kuma such as Cloudflare Access.</p> - <p>Please use it carefully.</p> - </template> - </Confirm> - - <Confirm ref="confirmClearStatistics" btn-style="btn-danger" :yes-text="$t('Yes')" :no-text="$t('No')" @yes="clearStatistics"> - {{ $t("confirmClearStatisticsMsg") }} - </Confirm> - <Confirm ref="confirmImport" btn-style="btn-danger" :yes-text="$t('Yes')" :no-text="$t('No')" @yes="importBackup"> - {{ $t("confirmImportMsg") }} - </Confirm> </div> </transition> </template> <script> -import HiddenInput from "../components/HiddenInput.vue"; -import Confirm from "../components/Confirm.vue"; -import dayjs from "dayjs"; -import utc from "dayjs/plugin/utc"; -import timezone from "dayjs/plugin/timezone"; -import NotificationDialog from "../components/NotificationDialog.vue"; -import TwoFADialog from "../components/TwoFADialog.vue"; -import jwt_decode from "jwt-decode"; -dayjs.extend(utc); -dayjs.extend(timezone); - -import { timezoneList, setPageLocale } from "../util-frontend"; -import { useToast } from "vue-toastification"; -import { debug } from "../util.ts"; +import { markRaw } from "vue"; -const toast = useToast(); +import Appearance from "../components/settings/Appearance.vue"; +import General from "../components/settings/General.vue"; +import Notifications from "../components/settings/Notifications.vue"; +import MonitorHistory from "../components/settings/MonitorHistory.vue"; +import Security from "../components/settings/Security.vue"; +import Backup from "../components/settings/Backup.vue"; +import About from "../components/settings/About.vue"; export default { - components: { - NotificationDialog, - TwoFADialog, - Confirm, - HiddenInput, - }, data() { return { - timezoneList: timezoneList(), - guessTimezone: dayjs.tz.guess(), + show: true, - invalidPassword: false, - password: { - currentPassword: "", - newPassword: "", - repeatNewPassword: "", - }, - settings: { + settings: {}, + settingsLoaded: false, + + subMenus: { + general: { + title: this.$t("General"), + component: markRaw(General), + }, + appearance: { + title: this.$t("Appearance"), + component: markRaw(Appearance), + }, + notifications: { + title: this.$t("Notifications"), + component: markRaw(Notifications), + }, + monitorHistory: { + title: this.$t("Monitor History"), + component: markRaw(MonitorHistory), + }, + security: { + title: this.$t("Security"), + component: markRaw(Security), + }, + backup: { + title: this.$t("Backup"), + component: markRaw(Backup), + }, + about: { + title: this.$t("About"), + component: markRaw(About), + } }, - loaded: false, - importAlert: null, - importHandle: "skip", - processing: false, - databaseSize: 0, + currentSubMenu: "general", }; }, - computed: { - databaseSizeDisplay() { - return Math.round(this.databaseSize / 1024 / 1024 * 10) / 10 + " MB"; - } - }, - - watch: { - "password.repeatNewPassword"() { - this.invalidPassword = false; - }, - - "$i18n.locale"() { - localStorage.locale = this.$i18n.locale; - setPageLocale(); - }, - }, - mounted() { - this.loadUsername(); this.loadSettings(); - this.loadDatabaseSize(); }, methods: { - - saveGeneral() { - localStorage.timezone = this.$root.userTimezone; - this.saveSettings(); - }, - - savePassword() { - if (this.password.newPassword !== this.password.repeatNewPassword) { - this.invalidPassword = true; - } else { - this.$root.getSocket().emit("changePassword", this.password, (res) => { - this.$root.toastRes(res); - if (res.ok) { - this.password.currentPassword = ""; - this.password.newPassword = ""; - this.password.repeatNewPassword = ""; - } - }); - } - }, - - loadUsername() { - const jwtPayload = this.$root.getJWTPayload(); - - if (jwtPayload) { - this.username = jwtPayload.username; - } - }, - loadSettings() { this.$root.getSocket().emit("getSettings", (res) => { this.settings = res.data; @@ -538,7 +107,7 @@ export default { this.settings.keepDataPeriodDays = 180; } - this.loaded = true; + this.settingsLoaded = true; }); }, @@ -548,116 +117,6 @@ export default { this.loadSettings(); }); }, - - confirmDisableAuth() { - this.$refs.confirmDisableAuth.show(); - }, - - confirmClearStatistics() { - this.$refs.confirmClearStatistics.show(); - }, - - confirmImport() { - this.$refs.confirmImport.show(); - }, - - disableAuth() { - this.settings.disableAuth = true; - this.saveSettings(); - }, - - enableAuth() { - this.settings.disableAuth = false; - this.saveSettings(); - this.$root.storage().removeItem("token"); - location.reload(); - }, - - downloadBackup() { - let time = dayjs().format("YYYY_MM_DD-hh_mm_ss"); - let fileName = `Uptime_Kuma_Backup_${time}.json`; - let monitorList = Object.values(this.$root.monitorList); - let exportData = { - version: this.$root.info.version, - notificationList: this.$root.notificationList, - monitorList: monitorList, - }; - exportData = JSON.stringify(exportData, null, 4); - let downloadItem = document.createElement("a"); - downloadItem.setAttribute("href", "data:application/json;charset=utf-8," + encodeURIComponent(exportData)); - downloadItem.setAttribute("download", fileName); - downloadItem.click(); - }, - - importBackup() { - this.processing = true; - let uploadItem = document.getElementById("importBackup").files; - - if (uploadItem.length <= 0) { - this.processing = false; - return this.importAlert = this.$t("alertNoFile"); - } - - if (uploadItem.item(0).type !== "application/json") { - this.processing = false; - return this.importAlert = this.$t("alertWrongFileType"); - } - - let fileReader = new FileReader(); - fileReader.readAsText(uploadItem.item(0)); - - fileReader.onload = item => { - this.$root.uploadBackup(item.target.result, this.importHandle, (res) => { - this.processing = false; - - if (res.ok) { - toast.success(res.msg); - } else { - toast.error(res.msg); - } - }); - }; - }, - - clearStatistics() { - this.$root.clearStatistics((res) => { - if (res.ok) { - this.$router.go(); - } else { - toast.error(res.msg); - } - }); - }, - - autoGetPrimaryBaseURL() { - this.settings.primaryBaseURL = location.protocol + "//" + location.host; - }, - - shrinkDatabase() { - this.$root.getSocket().emit("shrinkDatabase", (res) => { - if (res.ok) { - this.loadDatabaseSize(); - toast.success("Done"); - } else { - debug(res); - } - }); - }, - - loadDatabaseSize() { - debug("load database size"); - this.$root.getSocket().emit("getDatabaseSize", (res) => { - - if (res.ok) { - this.databaseSize = res.size; - debug("database size: " + res.size); - } else { - debug(res); - } - - }); - } - }, }; </script> @@ -667,44 +126,66 @@ export default { .shadow-box { padding: 20px; + min-height: calc(100vh - 155px); + max-height: calc(100vh - 30px); } -.btn-check:active + .btn-outline-primary, -.btn-check:checked + .btn-outline-primary, -.btn-check:hover + .btn-outline-primary { - color: #fff; +footer { + color: #aaa; + font-size: 13px; + margin-top: 20px; + padding-bottom: 30px; + text-align: center; } -.dark { - .list-group-item { - background-color: $dark-bg2; - color: $dark-font-color; - } +.settings-menu { + flex: 0 0 auto; + width: 300px; - .btn-check:active + .btn-outline-primary, - .btn-check:checked + .btn-outline-primary, - .btn-check:hover + .btn-outline-primary { - color: #000; + .menu-item { + border-radius: 10px; + margin: 0.5em; + padding: 0.7em 1em; + cursor: pointer; } - #importBackup { - &::file-selector-button { - color: $primary; - background-color: $dark-bg; + .menu-item:hover { + background: $highlight-white; + + .dark & { + background: $dark-header-bg; } + } - &:hover:not(:disabled):not([readonly])::file-selector-button { - color: $dark-font-color2; - background-color: $primary; + .menu-item.active { + background: $highlight-white; + border-left: 4px solid $primary; + border-top-left-radius: 0; + border-bottom-left-radius: 0; + + .dark & { + background: $dark-header-bg; } } } -footer { - color: #aaa; - font-size: 13px; - margin-top: 20px; - padding-bottom: 30px; - text-align: center; +.settings-content { + flex: 0 0 auto; + width: calc(100% - 300px); + + .settings-content-header { + width: calc(100% + 20px); + border-bottom: 1px solid #dee2e6; + border-radius: 0 10px 0 0; + margin-top: -20px; + margin-right: -20px; + padding: 12.5px 1em; + font-size: 26px; + + .dark & { + background: $dark-header-bg; + border-bottom: 0; + } + } } </style> From 369cad90c1c2e938a7651947dbffaed6bd2ebd4f Mon Sep 17 00:00:00 2001 From: Nelson Chan <chakflying@hotmail.com> Date: Wed, 3 Nov 2021 17:03:40 +0800 Subject: [PATCH 078/142] WIP: Convert to use vue-router & improve layout WIP: Fix security page & improve layout WIP: Fix displaying current page UI: Improve spacing Chore: Improve styling --- src/components/settings/General.vue | 6 +-- src/components/settings/MonitorHistory.vue | 8 ++-- src/components/settings/Security.vue | 10 ++--- src/pages/Settings.vue | 51 ++++++++++------------ src/router.js | 46 +++++++++++++++++++ 5 files changed, 82 insertions(+), 39 deletions(-) diff --git a/src/components/settings/General.vue b/src/components/settings/General.vue index 308f21aee..a1b42d85f 100644 --- a/src/components/settings/General.vue +++ b/src/components/settings/General.vue @@ -163,13 +163,13 @@ export default { computed: { settings() { - return this.$parent.$parent.settings; + return this.$parent.$parent.$parent.settings; }, saveSettings() { - return this.$parent.$parent.saveSettings; + return this.$parent.$parent.$parent.saveSettings; }, settingsLoaded() { - return this.$parent.$parent.settingsLoaded; + return this.$parent.$parent.$parent.settingsLoaded; }, guessTimezone() { return dayjs.tz.guess(); diff --git a/src/components/settings/MonitorHistory.vue b/src/components/settings/MonitorHistory.vue index 85853ea1a..95efff0e2 100644 --- a/src/components/settings/MonitorHistory.vue +++ b/src/components/settings/MonitorHistory.vue @@ -23,7 +23,7 @@ <button class="btn btn-outline-info me-2" @click="shrinkDatabase"> {{ $t("Shrink Database") }} ({{ databaseSizeDisplay }}) </button> - <div class="form-text ms-2">{{ $t("shrinkDatabaseDescription") }}</div> + <div class="form-text mt-2 mb-4 ms-2">{{ $t("shrinkDatabaseDescription") }}</div> </div> <button class="btn btn-outline-danger me-2 mb-2" @@ -64,13 +64,13 @@ export default { computed: { settings() { - return this.$parent.$parent.settings; + return this.$parent.$parent.$parent.settings; }, saveSettings() { - return this.$parent.$parent.saveSettings; + return this.$parent.$parent.$parent.saveSettings; }, settingsLoaded() { - return this.$parent.$parent.settingsLoaded; + return this.$parent.$parent.$parent.settingsLoaded; }, databaseSizeDisplay() { return ( diff --git a/src/components/settings/Security.vue b/src/components/settings/Security.vue index 1cbfb034e..27ff37fdb 100644 --- a/src/components/settings/Security.vue +++ b/src/components/settings/Security.vue @@ -5,6 +5,7 @@ <template v-if="!settings.disableAuth"> <p> {{ $t("Current User") }}: <strong>{{ username }}</strong> + <button v-if="! settings.disableAuth" class="btn btn-danger ms-4 me-2 mb-2" @click="$root.logout">{{ $t("Logout") }}</button> </p> <h5 class="my-4">{{ $t("Change Password") }}</h5> @@ -60,7 +61,7 @@ </form> </template> - <div v-if="!$parent.$parent.settings.disableAuth" class="mt-5 mb-3"> + <div v-if="! settings.disableAuth" class="mt-5 mb-3"> <h5 class="my-4"> {{ $t("Two Factor Authentication") }} </h5> @@ -82,7 +83,6 @@ <div class="mb-4"> <button v-if="settings.disableAuth" class="btn btn-outline-primary me-2 mb-2" @click="enableAuth">{{ $t("Enable Auth") }}</button> <button v-if="! settings.disableAuth" class="btn btn-primary me-2 mb-2" @click="confirmDisableAuth">{{ $t("Disable Auth") }}</button> - <button v-if="! settings.disableAuth" class="btn btn-danger me-2 mb-2" @click="$root.logout">{{ $t("Logout") }}</button> </div> </div> </div> @@ -244,13 +244,13 @@ export default { computed: { settings() { - return this.$parent.$parent.settings; + return this.$parent.$parent.$parent.settings; }, saveSettings() { - return this.$parent.$parent.saveSettings; + return this.$parent.$parent.$parent.saveSettings; }, settingsLoaded() { - return this.$parent.$parent.settingsLoaded; + return this.$parent.$parent.$parent.settingsLoaded; } }, diff --git a/src/pages/Settings.vue b/src/pages/Settings.vue index 9ff234150..0cff13678 100644 --- a/src/pages/Settings.vue +++ b/src/pages/Settings.vue @@ -8,21 +8,25 @@ <div class="shadow-box"> <div class="row"> <div class="settings-menu"> - <div v-for="(item, key) in subMenus" - :key="key" - class="menu-item" - :class="{ active: currentSubMenu == key }" - @click="currentSubMenu = key" + <router-link + v-for="(item, key) in subMenus" + :key="key" + :to="`/settings/${item.path}`" > - {{ item.title }} - </div> + <div + class="menu-item" + :class="{ active: $route.name == `settings-${key}` }" + > + {{ item.title }} + </div> + </router-link> </div> <div class="settings-content"> <div class="settings-content-header"> - {{ subMenus[currentSubMenu].title }} + {{ subMenus[$route.name.split("-")[1]].title }} </div> <div class="mx-3"> - <component :is="subMenus[currentSubMenu].component" /> + <router-view /> </div> </div> </div> @@ -32,16 +36,6 @@ </template> <script> -import { markRaw } from "vue"; - -import Appearance from "../components/settings/Appearance.vue"; -import General from "../components/settings/General.vue"; -import Notifications from "../components/settings/Notifications.vue"; -import MonitorHistory from "../components/settings/MonitorHistory.vue"; -import Security from "../components/settings/Security.vue"; -import Backup from "../components/settings/Backup.vue"; -import About from "../components/settings/About.vue"; - export default { data() { @@ -55,34 +49,33 @@ export default { subMenus: { general: { title: this.$t("General"), - component: markRaw(General), + path: "general", }, appearance: { title: this.$t("Appearance"), - component: markRaw(Appearance), + path: "appearance", }, notifications: { title: this.$t("Notifications"), - component: markRaw(Notifications), + path: "notifications", }, monitorHistory: { title: this.$t("Monitor History"), - component: markRaw(MonitorHistory), + path: "monitor-history", }, security: { title: this.$t("Security"), - component: markRaw(Security), + path: "security", }, backup: { title: this.$t("Backup"), - component: markRaw(Backup), + path: "backup", }, about: { title: this.$t("About"), - component: markRaw(About), + path: "about", } }, - currentSubMenu: "general", }; }, @@ -142,6 +135,10 @@ footer { flex: 0 0 auto; width: 300px; + a { + text-decoration: none !important; + } + .menu-item { border-radius: 10px; margin: 0.5em; diff --git a/src/router.js b/src/router.js index 5c3fda941..86615f890 100644 --- a/src/router.js +++ b/src/router.js @@ -11,6 +11,14 @@ import Setup from "./pages/Setup.vue"; const StatusPage = () => import("./pages/StatusPage.vue"); import Entry from "./pages/Entry.vue"; +import Appearance from "./components/settings/Appearance.vue"; +import General from "./components/settings/General.vue"; +import Notifications from "./components/settings/Notifications.vue"; +import MonitorHistory from "./components/settings/MonitorHistory.vue"; +import Security from "./components/settings/Security.vue"; +import Backup from "./components/settings/Backup.vue"; +import About from "./components/settings/About.vue"; + const routes = [ { path: "/", @@ -59,6 +67,44 @@ const routes = [ { path: "/settings", component: Settings, + children: [ + { + path: "general", + alias: "", + name: "settings-general", + component: General, + }, + { + path: "appearance", + name: "settings-appearance", + component: Appearance, + }, + { + path: "notifications", + name: "settings-notifications", + component: Notifications, + }, + { + path: "monitor-history", + name: "settings-monitorHistory", + component: MonitorHistory, + }, + { + path: "security", + name: "settings-security", + component: Security, + }, + { + path: "backup", + name: "settings-backup", + component: Backup, + }, + { + path: "about", + name: "settings-about", + component: About, + }, + ] }, ], }, From 1a218aaa17161191ab43ffa99b2911bb8887095a Mon Sep 17 00:00:00 2001 From: Nelson Chan <chakflying@hotmail.com> Date: Thu, 4 Nov 2021 22:12:52 +0800 Subject: [PATCH 079/142] Fix: Fix page transition & improve active handling Fix: Fix current route parsing --- src/pages/Settings.vue | 85 +++++++++++++++++++++--------------------- src/router.js | 7 ---- 2 files changed, 43 insertions(+), 49 deletions(-) diff --git a/src/pages/Settings.vue b/src/pages/Settings.vue index 0cff13678..bacda3a38 100644 --- a/src/pages/Settings.vue +++ b/src/pages/Settings.vue @@ -1,46 +1,45 @@ <template> - <transition name="slide-fade" appear> - <div> - <h1 v-show="show" class="mb-3"> - {{ $t("Settings") }} - </h1> - - <div class="shadow-box"> - <div class="row"> - <div class="settings-menu"> - <router-link - v-for="(item, key) in subMenus" - :key="key" - :to="`/settings/${item.path}`" - > - <div - class="menu-item" - :class="{ active: $route.name == `settings-${key}` }" - > - {{ item.title }} - </div> - </router-link> - </div> - <div class="settings-content"> - <div class="settings-content-header"> - {{ subMenus[$route.name.split("-")[1]].title }} - </div> - <div class="mx-3"> - <router-view /> + <div> + <h1 v-show="show" class="mb-3"> + {{ $t("Settings") }} + </h1> + + <div class="shadow-box"> + <div class="row"> + <div class="settings-menu"> + <router-link + v-for="(item, key) in subMenus" + :key="key" + :to="`/settings/${key}`" + > + <div class="menu-item"> + {{ item.title }} </div> + </router-link> + </div> + <div class="settings-content"> + <div class="settings-content-header"> + {{ subMenus[currentPage].title }} + </div> + <div class="mx-3"> + <router-view v-slot="{ Component }"> + <transition name="slide-fade" appear> + <component :is="Component" /> + </transition> + </router-view> </div> </div> </div> </div> - </transition> + </div> </template> <script> -export default { +import { useRoute } from "vue-router"; +export default { data() { return { - show: true, settings: {}, @@ -49,36 +48,39 @@ export default { subMenus: { general: { title: this.$t("General"), - path: "general", }, appearance: { title: this.$t("Appearance"), - path: "appearance", }, notifications: { title: this.$t("Notifications"), - path: "notifications", }, - monitorHistory: { + "monitor-history": { title: this.$t("Monitor History"), - path: "monitor-history", }, security: { title: this.$t("Security"), - path: "security", }, backup: { title: this.$t("Backup"), - path: "backup", }, about: { title: this.$t("About"), - path: "about", - } + }, }, }; }, + computed: { + currentPage() { + let pathEnd = useRoute().path.split("/").at(-1); + if (pathEnd == "settings" || pathEnd == null) { + return "general"; + } + return pathEnd; + }, + }, + mounted() { this.loadSettings(); }, @@ -120,7 +122,6 @@ export default { .shadow-box { padding: 20px; min-height: calc(100vh - 155px); - max-height: calc(100vh - 30px); } footer { @@ -154,7 +155,7 @@ footer { } } - .menu-item.active { + .active .menu-item { background: $highlight-white; border-left: 4px solid $primary; border-top-left-radius: 0; diff --git a/src/router.js b/src/router.js index 86615f890..a2414eb60 100644 --- a/src/router.js +++ b/src/router.js @@ -71,37 +71,30 @@ const routes = [ { path: "general", alias: "", - name: "settings-general", component: General, }, { path: "appearance", - name: "settings-appearance", component: Appearance, }, { path: "notifications", - name: "settings-notifications", component: Notifications, }, { path: "monitor-history", - name: "settings-monitorHistory", component: MonitorHistory, }, { path: "security", - name: "settings-security", component: Security, }, { path: "backup", - name: "settings-backup", component: Backup, }, { path: "about", - name: "settings-about", component: About, }, ] From f65cc655c05475195eeaf710c94d7bcb559889ff Mon Sep 17 00:00:00 2001 From: Nelson Chan <chakflying@hotmail.com> Date: Thu, 4 Nov 2021 22:27:00 +0800 Subject: [PATCH 080/142] Fix: Fix nav highlight in settings sub-page --- src/layouts/Layout.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/layouts/Layout.vue b/src/layouts/Layout.vue index 2f4f689ab..75173e1fc 100644 --- a/src/layouts/Layout.vue +++ b/src/layouts/Layout.vue @@ -29,7 +29,7 @@ </router-link> </li> <li v-if="$root.loggedIn" class="nav-item"> - <router-link to="/settings" class="nav-link"> + <router-link to="/settings" class="nav-link" :class="{ active: $route.path.includes('settings') }"> <font-awesome-icon icon="cog" /> {{ $t("Settings") }} </router-link> </li> From 07742799ede676daaf920d6e8b71f06f6408b3c3 Mon Sep 17 00:00:00 2001 From: Nelson Chan <chakflying@hotmail.com> Date: Thu, 4 Nov 2021 23:19:31 +0800 Subject: [PATCH 081/142] Test: Fix tests Test: Add clear stats test Test: Attempt to fix tests Test: Add test for disable auth Update README --- config/jest-puppeteer.config.js | 6 ++ package.json | 2 +- server/database.js | 11 ++- server/server.js | 6 +- src/components/settings/MonitorHistory.vue | 1 + src/components/settings/Security.vue | 6 +- src/languages/README.md | 2 +- src/pages/EditMonitor.vue | 2 +- test/e2e.spec.js | 100 ++++++++++++++++----- 9 files changed, 101 insertions(+), 35 deletions(-) diff --git a/config/jest-puppeteer.config.js b/config/jest-puppeteer.config.js index 07830ca3c..a34937c12 100644 --- a/config/jest-puppeteer.config.js +++ b/config/jest-puppeteer.config.js @@ -2,5 +2,11 @@ module.exports = { "launch": { "headless": process.env.HEADLESS_TEST || false, "userDataDir": "./data/test-chrome-profile", + args: [ + "--no-sandbox", + "--disable-setuid-sandbox", + "--disable-gpu", + "--disable-dev-shm-usage" + ], } }; diff --git a/package.json b/package.json index c7ec3d8ee..83e7d25e4 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "build": "vite build --config ./config/vite.config.js", "test": "node test/prepare-test-server.js && node server/server.js --port=3002 --data-dir=./data/test/ --test", "test-with-build": "npm run build && npm test", - "jest": "node test/prepare-jest.js && npm run jest-frontend && npm run jest-backend && jest --config=./config/jest.config.js", + "jest": "node test/prepare-jest.js && npm run jest-frontend && npm run jest-backend && jest --runInBand --config=./config/jest.config.js", "jest-frontend": "cross-env TEST_FRONTEND=1 jest --config=./config/jest-frontend.config.js", "jest-backend": "cross-env TEST_BACKEND=1 jest --config=./config/jest-backend.config.js", "tsc": "tsc", diff --git a/server/database.js b/server/database.js index 41d91e858..fbef40bb1 100644 --- a/server/database.js +++ b/server/database.js @@ -79,7 +79,7 @@ class Database { console.log(`Data Dir: ${Database.dataDir}`); } - static async connect() { + static async connect(testMode = false) { const acquireConnectionTimeout = 120 * 1000; const Dialect = require("knex/lib/dialects/sqlite3/index.js"); @@ -112,8 +112,13 @@ class Database { await R.autoloadModels("./server/model"); await R.exec("PRAGMA foreign_keys = ON"); - // Change to WAL - await R.exec("PRAGMA journal_mode = WAL"); + if (testMode) { + // Change to MEMORY + await R.exec("PRAGMA journal_mode = MEMORY"); + } else { + // Change to WAL + await R.exec("PRAGMA journal_mode = WAL"); + } await R.exec("PRAGMA cache_size = -12000"); await R.exec("PRAGMA auto_vacuum = FULL"); diff --git a/server/server.js b/server/server.js index d1fd7ff29..709a54c98 100644 --- a/server/server.js +++ b/server/server.js @@ -176,7 +176,7 @@ exports.entryPage = "dashboard"; (async () => { Database.init(args); - await initDatabase(); + await initDatabase(testMode); exports.entryPage = await setting("entryPage"); @@ -1417,14 +1417,14 @@ async function getMonitorJSONList(userID) { return result; } -async function initDatabase() { +async function initDatabase(testMode = false) { if (! fs.existsSync(Database.path)) { console.log("Copying Database"); fs.copyFileSync(Database.templatePath, Database.path); } console.log("Connecting to the Database"); - await Database.connect(); + await Database.connect(testMode); console.log("Connected"); // Patch the database diff --git a/src/components/settings/MonitorHistory.vue b/src/components/settings/MonitorHistory.vue index 95efff0e2..dc33db5ba 100644 --- a/src/components/settings/MonitorHistory.vue +++ b/src/components/settings/MonitorHistory.vue @@ -26,6 +26,7 @@ <div class="form-text mt-2 mb-4 ms-2">{{ $t("shrinkDatabaseDescription") }}</div> </div> <button + id="clearAllStats-btn" class="btn btn-outline-danger me-2 mb-2" @click="confirmClearStatistics" > diff --git a/src/components/settings/Security.vue b/src/components/settings/Security.vue index 27ff37fdb..4ef6b3d9e 100644 --- a/src/components/settings/Security.vue +++ b/src/components/settings/Security.vue @@ -5,7 +5,7 @@ <template v-if="!settings.disableAuth"> <p> {{ $t("Current User") }}: <strong>{{ username }}</strong> - <button v-if="! settings.disableAuth" class="btn btn-danger ms-4 me-2 mb-2" @click="$root.logout">{{ $t("Logout") }}</button> + <button v-if="! settings.disableAuth" id="logout-btn" class="btn btn-danger ms-4 me-2 mb-2" @click="$root.logout">{{ $t("Logout") }}</button> </p> <h5 class="my-4">{{ $t("Change Password") }}</h5> @@ -81,8 +81,8 @@ <h5 class="my-4">{{ $t("Advanced") }}</h5> <div class="mb-4"> - <button v-if="settings.disableAuth" class="btn btn-outline-primary me-2 mb-2" @click="enableAuth">{{ $t("Enable Auth") }}</button> - <button v-if="! settings.disableAuth" class="btn btn-primary me-2 mb-2" @click="confirmDisableAuth">{{ $t("Disable Auth") }}</button> + <button v-if="settings.disableAuth" id="enableAuth-btn" class="btn btn-outline-primary me-2 mb-2" @click="enableAuth">{{ $t("Enable Auth") }}</button> + <button v-if="! settings.disableAuth" id="disableAuth-btn" class="btn btn-primary me-2 mb-2" @click="confirmDisableAuth">{{ $t("Disable Auth") }}</button> </div> </div> </div> diff --git a/src/languages/README.md b/src/languages/README.md index 6ba7d95eb..52b70fa84 100644 --- a/src/languages/README.md +++ b/src/languages/README.md @@ -4,7 +4,7 @@ 2. Create a language file (e.g. `zh-TW.js`). The filename must be ISO language code: http://www.lingoes.net/en/translator/langcode.htm 3. Run `npm run update-language-files`. You can also use this command to check if there are new strings to translate for your language. 4. Your language file should be filled in. You can translate now. -5. Translate `src/pages/Settings.vue` (search for a `Confirm` component with `rel="confirmDisableAuth"`). +5. Translate `src/components/settings/Security.vue` (search for a `Confirm` component with `rel="confirmDisableAuth"`). 6. Import your language file in `src/i18n.js` and add it to `languageList` constant. 7. Make a [pull request](https://github.com/louislam/uptime-kuma/pulls) when you have done. diff --git a/src/pages/EditMonitor.vue b/src/pages/EditMonitor.vue index 65c3dad6e..11be3ed5b 100644 --- a/src/pages/EditMonitor.vue +++ b/src/pages/EditMonitor.vue @@ -194,7 +194,7 @@ </div> <div class="mt-5 mb-1"> - <button class="btn btn-primary" type="submit" :disabled="processing">{{ $t("Save") }}</button> + <button id="monitor-submit-btn" class="btn btn-primary" type="submit" :disabled="processing">{{ $t("Save") }}</button> </div> </div> diff --git a/test/e2e.spec.js b/test/e2e.spec.js index 03920b306..488179e13 100644 --- a/test/e2e.spec.js +++ b/test/e2e.spec.js @@ -59,18 +59,31 @@ describe("Init", () => { // Go to / await page.goto(baseURL); - await sleep(3000); + await page.waitForSelector("h1.mb-3"); pathname = await page.evaluate(() => location.pathname); expect(pathname).toEqual("/dashboard"); }); + it("should create monitor", async () => { + // Create monitor + await page.goto(baseURL + "/add"); + await page.waitForSelector("#name"); + + await page.type("#name", "Myself"); + await page.waitForSelector("#url"); + await page.click("#url", { clickCount: 3 }); + await page.keyboard.type(baseURL); + await page.keyboard.press("Enter"); + }); + // Settings Page describe("Settings", () => { - beforeAll(async () => { + beforeEach(async () => { await page.goto(baseURL + "/settings"); }); it("Change Language", async () => { + await page.goto(baseURL + "/settings/appearance"); await page.waitForSelector("#language"); await page.select("#language", "zh-HK"); @@ -83,20 +96,33 @@ describe("Init", () => { }); it("Change Theme", async () => { - await sleep(1000); + await page.goto(baseURL + "/settings/appearance"); // Dark await click(page, ".btn[for=btncheck2]"); await page.waitForSelector("div.dark"); - await sleep(1000); + await page.waitForSelector(".btn[for=btncheck1]"); // Light await click(page, ".btn[for=btncheck1]"); await page.waitForSelector("div.light"); }); - // TODO: Heartbeat Bar Style + it("Change Heartbeat Bar Style", async () => { + await page.goto(baseURL + "/settings/appearance"); + + // Bottom + await click(page, ".btn[for=btncheck5]"); + await page.waitForSelector("div.hp-bar-big"); + + // None + await click(page, ".btn[for=btncheck6]"); + await page.waitForSelector("div.hp-bar-big", { + hidden: true, + timeout: 1000 + }); + }); // TODO: Timezone @@ -108,14 +134,14 @@ describe("Init", () => { // Yes await click(page, "#searchEngineIndexYes"); await click(page, "form > div > .btn[type=submit]"); - await sleep(2000); + await sleep(1000); res = await axios.get(baseURL + "/robots.txt"); expect(res.data).not.toContain("Disallow: /"); // No await click(page, "#searchEngineIndexNo"); await click(page, "form > div > .btn[type=submit]"); - await sleep(2000); + await sleep(1000); res = await axios.get(baseURL + "/robots.txt"); expect(res.data).toContain("Disallow: /"); }); @@ -125,25 +151,25 @@ describe("Init", () => { // Default await newPage.goto(baseURL); - await sleep(3000); + await newPage.waitForSelector("h1.mb-3", { timeout: 3000 }); let pathname = await newPage.evaluate(() => location.pathname); expect(pathname).toEqual("/dashboard"); // Status Page await click(page, "#entryPageNo"); await click(page, "form > div > .btn[type=submit]"); - await sleep(4000); + await sleep(1000); await newPage.goto(baseURL); - await sleep(4000); + await newPage.waitForSelector("img.logo", { timeout: 3000 }); pathname = await newPage.evaluate(() => location.pathname); expect(pathname).toEqual("/status"); // Back to Dashboard await click(page, "#entryPageYes"); await click(page, "form > div > .btn[type=submit]"); - await sleep(4000); + await sleep(1000); await newPage.goto(baseURL); - await sleep(4000); + await newPage.waitForSelector("h1.mb-3", { timeout: 3000 }); pathname = await newPage.evaluate(() => location.pathname); expect(pathname).toEqual("/dashboard"); @@ -151,7 +177,7 @@ describe("Init", () => { }); it("Change Password (wrong current password)", async () => { - await page.goto(baseURL + "/settings"); + await page.goto(baseURL + "/settings/security"); await page.waitForSelector("#current-password"); await page.type("#current-password", "wrong_passw$$d"); @@ -159,10 +185,10 @@ describe("Init", () => { await page.type("#repeat-new-password", "new_password123"); // Save - await click(page, "form > div > .btn[type=submit]", 1); - await sleep(4000); + await click(page, "form > div > .btn[type=submit]", 0); + await sleep(1000); - await click(page, ".btn-danger.btn.me-2"); + await click(page, "#logout-btn"); await login("admin", "new_password123"); let elementCount = await page.evaluate(() => document.querySelectorAll("#floatingPassword").length); expect(elementCount).toEqual(1); @@ -171,24 +197,26 @@ describe("Init", () => { }); it("Change Password (wrong repeat)", async () => { - await page.goto(baseURL + "/settings"); + await page.goto(baseURL + "/settings/security"); await page.waitForSelector("#current-password"); await page.type("#current-password", "admin123"); await page.type("#new-password", "new_password123"); await page.type("#repeat-new-password", "new_password1234567898797898"); - await click(page, "form > div > .btn[type=submit]", 1); - await sleep(4000); + await click(page, "form > div > .btn[type=submit]", 0); + await sleep(1000); - await click(page, ".btn-danger.btn.me-2"); + await click(page, "#logout-btn"); await login("admin", "new_password123"); let elementCount = await page.evaluate(() => document.querySelectorAll("#floatingPassword").length); expect(elementCount).toEqual(1); await login("admin", "admin123"); - await sleep(3000); + await page.waitForSelector("#current-password"); + let pathname = await page.evaluate(() => location.pathname); + expect(pathname).toEqual("/settings/security"); }); // TODO: 2FA @@ -197,9 +225,35 @@ describe("Init", () => { // TODO: Import Backup - // TODO: Disable Auth + it("Should disable & enable auth", async () => { + await page.goto(baseURL + "/settings/security"); + await click(page, "#disableAuth-btn"); + await click(page, ".btn.btn-danger[data-bs-dismiss='modal']", 2); // Not a good way to do it + await page.waitForSelector("#enableAuth-btn", { timeout: 3000 }); + await page.waitForSelector("#logout-btn", { + hidden: true, + timeout: 3000 + }); - // TODO: Clear Stats + const newPage = await browser.newPage(); + await newPage.goto(baseURL); + await newPage.waitForSelector("span.badge", { timeout: 3000 }); + newPage.close(); + + await click(page, "#enableAuth-btn"); + await login("admin", "admin123"); + await page.waitForSelector("#disableAuth-btn", { timeout: 3000 }); + }); + + it("Should clear all statistics", async () => { + await page.goto(baseURL + "/settings/monitor-history"); + await click(page, "#clearAllStats-btn"); + await click(page, ".btn.btn-danger"); + await page.waitForFunction(() => { + const badge = document.querySelector("span.badge"); + return badge && badge.innerText == "0%"; + }, { timeout: 3000 }); + }); }); /* From df813fbdeeb5442277247715a4ea2669b98af195 Mon Sep 17 00:00:00 2001 From: Nelson Chan <chakflying@hotmail.com> Date: Tue, 16 Nov 2021 10:32:22 +0800 Subject: [PATCH 082/142] Fix: Add save in monitor history --- src/components/settings/MonitorHistory.vue | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/components/settings/MonitorHistory.vue b/src/components/settings/MonitorHistory.vue index dc33db5ba..9b5b8bd78 100644 --- a/src/components/settings/MonitorHistory.vue +++ b/src/components/settings/MonitorHistory.vue @@ -18,6 +18,11 @@ step="1" /> </div> + <div class="my-4"> + <button class="btn btn-primary" type="button" @click="saveSettings()"> + {{ $t("Save") }} + </button> + </div> <div class="my-4"> <div class="my-3"> <button class="btn btn-outline-info me-2" @click="shrinkDatabase"> From 7f4d5a0f7682276a690add6b375f8d5ec4e2c0c8 Mon Sep 17 00:00:00 2001 From: Nelson Chan <chakflying@hotmail.com> Date: Tue, 16 Nov 2021 11:35:04 +0800 Subject: [PATCH 083/142] Test: fix tests Test: Attempt to fix tests Test: Attempt to fix tests Test: Attempt to fix tests Test: Attempt to fix tests Test: Attempt to fix tests Test: Attempt to fix tests Test: Attempt to fix tests Test: Attempt to fix tests Test: Attempt to fix tests Test: Attempt to fix tests Test: Attempt to fix tests Test: Attempt to fix tests Test: Attempt to fix tests Test: Attempt to fix tests Test: Investigate error message Test: Attempt to fix tests Chore: Cleanup code Test: Attempt to fix tests Test: Attempt to fix tests --- config/jest-debug-env.js | 33 +++++++++++++++++++++++++++++++++ config/jest-puppeteer.config.js | 12 ++++++++++-- config/jest.config.js | 1 + server/server.js | 2 +- test/e2e.spec.js | 6 ++++++ 5 files changed, 51 insertions(+), 3 deletions(-) create mode 100644 config/jest-debug-env.js diff --git a/config/jest-debug-env.js b/config/jest-debug-env.js new file mode 100644 index 000000000..74f6d7835 --- /dev/null +++ b/config/jest-debug-env.js @@ -0,0 +1,33 @@ +const PuppeteerEnvironment = require("jest-environment-puppeteer"); +const util = require("util"); + +class DebugEnv extends PuppeteerEnvironment { + async handleTestEvent(event, state) { + const ignoredEvents = [ + "setup", + "add_hook", + "start_describe_definition", + "add_test", + "finish_describe_definition", + "run_start", + "run_describe_start", + "test_start", + "hook_start", + "hook_success", + "test_fn_start", + "test_fn_success", + "test_done", + "run_describe_finish", + "run_finish", + "teardown", + "test_fn_failure", + ]; + if (!ignoredEvents.includes(event.name)) { + console.log( + new Date().toString() + ` Unhandled event [${event.name}] ` + util.inspect(event) + ); + } + } +} + +module.exports = DebugEnv; diff --git a/config/jest-puppeteer.config.js b/config/jest-puppeteer.config.js index a34937c12..dc4f7b344 100644 --- a/config/jest-puppeteer.config.js +++ b/config/jest-puppeteer.config.js @@ -1,12 +1,20 @@ module.exports = { "launch": { + "dumpio": true, + "slowMo": 500, "headless": process.env.HEADLESS_TEST || false, "userDataDir": "./data/test-chrome-profile", args: [ - "--no-sandbox", "--disable-setuid-sandbox", "--disable-gpu", - "--disable-dev-shm-usage" + "--disable-dev-shm-usage", + "--no-default-browser-check", + "--no-experiments", + "--no-first-run", + "--no-pings", + "--no-sandbox", + "--no-zygote", + "--single-process", ], } }; diff --git a/config/jest.config.js b/config/jest.config.js index 4baaa0fb6..2d3f585ef 100644 --- a/config/jest.config.js +++ b/config/jest.config.js @@ -5,6 +5,7 @@ module.exports = { "__DEV__": true }, "testRegex": "./test/e2e.spec.js", + "testEnvironment": "./config/jest-debug-env.js", "rootDir": "..", "testTimeout": 30000, }; diff --git a/server/server.js b/server/server.js index 709a54c98..eea61dc71 100644 --- a/server/server.js +++ b/server/server.js @@ -541,8 +541,8 @@ exports.entryPage = "dashboard"; await updateMonitorNotification(bean.id, notificationIDList); - await startMonitor(socket.userID, bean.id); await sendMonitorList(socket); + await startMonitor(socket.userID, bean.id); callback({ ok: true, diff --git a/test/e2e.spec.js b/test/e2e.spec.js index 488179e13..d96e88c5a 100644 --- a/test/e2e.spec.js +++ b/test/e2e.spec.js @@ -74,6 +74,12 @@ describe("Init", () => { await page.click("#url", { clickCount: 3 }); await page.keyboard.type(baseURL); await page.keyboard.press("Enter"); + + await page.waitForFunction(() => { + const badge = document.querySelector("span.badge"); + return badge && badge.innerText == "100%"; + }, { timeout: 5000 }); + }); // Settings Page From 88ed965d69887f771816dc0afdab226c12bc248a Mon Sep 17 00:00:00 2001 From: Nelson Chan <chakflying@hotmail.com> Date: Wed, 17 Nov 2021 10:52:14 +0800 Subject: [PATCH 084/142] Test: Disable clear stats test --- test/e2e.spec.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/test/e2e.spec.js b/test/e2e.spec.js index d96e88c5a..66bbb794b 100644 --- a/test/e2e.spec.js +++ b/test/e2e.spec.js @@ -251,15 +251,15 @@ describe("Init", () => { await page.waitForSelector("#disableAuth-btn", { timeout: 3000 }); }); - it("Should clear all statistics", async () => { - await page.goto(baseURL + "/settings/monitor-history"); - await click(page, "#clearAllStats-btn"); - await click(page, ".btn.btn-danger"); - await page.waitForFunction(() => { - const badge = document.querySelector("span.badge"); - return badge && badge.innerText == "0%"; - }, { timeout: 3000 }); - }); + // it("Should clear all statistics", async () => { + // await page.goto(baseURL + "/settings/monitor-history"); + // await click(page, "#clearAllStats-btn"); + // await click(page, ".btn.btn-danger"); + // await page.waitForFunction(() => { + // const badge = document.querySelector("span.badge"); + // return badge && badge.innerText == "0%"; + // }, { timeout: 3000 }); + // }); }); /* From 1f77526210ed34ec95c393e80cfcfaae0e61952e Mon Sep 17 00:00:00 2001 From: Nelson Chan <chakflying@hotmail.com> Date: Wed, 17 Nov 2021 14:09:12 +0800 Subject: [PATCH 085/142] Chore: Run spell check --- CONTRIBUTING.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b2efe3e09..46e9a8990 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,6 @@ # Project Info -First of all, thank you everyone who made pull requests for Uptime Kuma, I never thought GitHub Community can be that nice! And also because of this, I also never thought other people actually read my code and edit my code. It is not structed and commented so well, lol. Sorry about that. +First of all, thank you everyone who made pull requests for Uptime Kuma, I never thought GitHub Community can be that nice! And also because of this, I also never thought other people actually read my code and edit my code. It is not structured and commented so well, lol. Sorry about that. The project was created with vite.js (vue3). Then I created a sub-directory called "server" for server part. Both frontend and backend share the same package.json. @@ -27,7 +27,7 @@ The frontend code build into "dist" directory. The server (express.js) exposes t ## Can I create a pull request for Uptime Kuma? -Generally, if the pull request is working fine and it do not affect any existing logic, workflow and perfomance, I will merge into the master branch once it is tested. +Generally, if the pull request is working fine and it do not affect any existing logic, workflow and performance, I will merge into the master branch once it is tested. If you are not sure whether I will accept your pull request, feel free to create an empty pull request draft first. @@ -66,13 +66,13 @@ I do not have such knowledge to test it. #### ⚠ Low Priority - Harsh Mode -Some pull requests are required to modifiy the core. To be honest, I do not want anyone to try to do that, because it would spend a lot of your time. I will review your pull request harshly. Also you may need to write a lot of unit tests to ensure that there is no breaking change. +Some pull requests are required to modify the core. To be honest, I do not want anyone to try to do that, because it would spend a lot of your time. I will review your pull request harshly. Also you may need to write a lot of unit tests to ensure that there is no breaking change. - Touch large parts of code of any very important features - Touch monitoring logic - Drop a table or drop a column for any reason - Touch the entry point of Docker or Node.js -- Modifiy auth +- Modify auth #### *️⃣ Low Priority @@ -114,7 +114,7 @@ I personally do not like something need to learn so much and need to config so m - Node.js >= 14 - Git -- IDE that supports ESLint and EditorConfig (I am using Intellji Idea) +- IDE that supports ESLint and EditorConfig (I am using IntelliJ IDEA) - A SQLite tool (SQLite Expert Personal is suggested) ## Install dependencies @@ -141,7 +141,7 @@ express.js is just used for serving the frontend built files (index.html, .js an - model/ (Object model, auto mapping to the database table name) - modules/ (Modified 3rd-party modules) -- notification-providers/ (indivdual notification logic) +- notification-providers/ (individual notification logic) - routers/ (Express Routers) - scoket-handler (Socket.io Handlers) - server.js (Server main logic) From 5d3bf68123196bc776406840441a0f2503a174cf Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Thu, 18 Nov 2021 18:22:03 +0800 Subject: [PATCH 086/142] add remove-2fa command --- extra/remove-2fa.js | 60 +++++++++++++++++++++++++++++++++++++++++++++ package.json | 1 + server/2fa.js | 14 +++++++++++ server/server.js | 6 ++--- 4 files changed, 77 insertions(+), 4 deletions(-) create mode 100644 extra/remove-2fa.js create mode 100644 server/2fa.js diff --git a/extra/remove-2fa.js b/extra/remove-2fa.js new file mode 100644 index 000000000..0f3f63462 --- /dev/null +++ b/extra/remove-2fa.js @@ -0,0 +1,60 @@ +console.log("== Uptime Kuma Remove 2FA Tool =="); +console.log("Loading the database"); + +const Database = require("../server/database"); +const { R } = require("redbean-node"); +const readline = require("readline"); +const TwoFA = require("../server/2fa"); +const args = require("args-parser")(process.argv); +const rl = readline.createInterface({ + input: process.stdin, + output: process.stdout +}); + +const main = async () => { + Database.init(args); + await Database.connect(); + + try { + // No need to actually reset the password for testing, just make sure no connection problem. It is ok for now. + if (!process.env.TEST_BACKEND) { + const user = await R.findOne("user"); + if (! user) { + throw new Error("user not found, have you installed?"); + } + + console.log("Found user: " + user.username); + + let ans = await question("Are you sure want to remove 2FA? [y/N]"); + + if (ans.toLowerCase() === "y") { + await TwoFA.disable2FA(user.id); + console.log("2FA has been removed successfully."); + } + + } + } catch (e) { + console.error("Error: " + e.message); + } + + await Database.close(); + rl.close(); + + console.log("Finished."); +}; + +function question(question) { + return new Promise((resolve) => { + rl.question(question, (answer) => { + resolve(answer); + }); + }); +} + +if (!process.env.TEST_BACKEND) { + main(); +} + +module.exports = { + main, +}; diff --git a/package.json b/package.json index c7ec3d8ee..79f01b558 100644 --- a/package.json +++ b/package.json @@ -41,6 +41,7 @@ "update-version": "node extra/update-version.js", "mark-as-nightly": "node extra/mark-as-nightly.js", "reset-password": "node extra/reset-password.js", + "remove-2fa": "node extra/remove-2fa.js", "compile-install-script": "@powershell -NoProfile -ExecutionPolicy Unrestricted -Command ./extra/compile-install-script.ps1", "test-install-script-centos7": "npm run compile-install-script && docker build --progress plain -f test/test_install_script/centos7.dockerfile .", "test-install-script-alpine3": "npm run compile-install-script && docker build --progress plain -f test/test_install_script/alpine3.dockerfile .", diff --git a/server/2fa.js b/server/2fa.js new file mode 100644 index 000000000..bc8145cff --- /dev/null +++ b/server/2fa.js @@ -0,0 +1,14 @@ +const { checkLogin } = require("./util-server"); +const { R } = require("redbean-node"); + +class TwoFA { + + static async disable2FA(userID) { + return await R.exec("UPDATE `user` SET twofa_status = 0 WHERE id = ? ", [ + userID, + ]); + } + +} + +module.exports = TwoFA; diff --git a/server/server.js b/server/server.js index d1fd7ff29..78106515a 100644 --- a/server/server.js +++ b/server/server.js @@ -120,6 +120,7 @@ module.exports.io = io; const { sendNotificationList, sendHeartbeatList, sendImportantHeartbeatList, sendInfo } = require("./client"); const { statusPageSocketHandler } = require("./socket-handlers/status-page-socket-handler"); const databaseSocketHandler = require("./socket-handlers/database-socket-handler"); +const TwoFA = require("./2fa"); app.use(express.json()); @@ -420,10 +421,7 @@ exports.entryPage = "dashboard"; socket.on("disable2FA", async (callback) => { try { checkLogin(socket); - - await R.exec("UPDATE `user` SET twofa_status = 0 WHERE id = ? ", [ - socket.userID, - ]); + await TwoFA.disable2FA(socket.userID); callback({ ok: true, From 3d222ac5f5759a36af01bd4728a79b5566f25232 Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Tue, 23 Nov 2021 12:59:48 +0800 Subject: [PATCH 087/142] fix btoa is not define --- server/model/monitor.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/server/model/monitor.js b/server/model/monitor.js index c7ffa99ab..98a3421ee 100644 --- a/server/model/monitor.js +++ b/server/model/monitor.js @@ -87,8 +87,8 @@ class Monitor extends BeanModel { * for HTTP "basic" auth, as per RFC-7617 * @returns {string} */ - encodeB64(user, pass) { - return btoa(user + ":" + pass); + encodeBase64(user, pass) { + return Buffer.from(user + ":" + pass).toString("base64"); } /** @@ -156,7 +156,7 @@ class Monitor extends BeanModel { let basicAuthHeader = {}; if (this.basic_auth_user) { basicAuthHeader = { - "Authorization": "Basic " + this.encodeB64(this.basic_auth_user, this.basic_auth_pass), + "Authorization": "Basic " + this.encodeBase64(this.basic_auth_user, this.basic_auth_pass), }; } From 94ffeeeab6633d4b0d68d289ce222d773201eecc Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Tue, 23 Nov 2021 13:32:24 +0800 Subject: [PATCH 088/142] update dependencies --- package-lock.json | 3395 +++++++++++++++++++++------------------------ package.json | 24 +- 2 files changed, 1570 insertions(+), 1849 deletions(-) diff --git a/package-lock.json b/package-lock.json index 11feb3492..25abc9e8f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,24 +1,24 @@ { "name": "uptime-kuma", - "version": "1.9.2", + "version": "1.10.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "uptime-kuma", - "version": "1.9.2", + "version": "1.10.2", "license": "MIT", "dependencies": { "@fortawesome/fontawesome-svg-core": "~1.2.36", "@fortawesome/free-regular-svg-icons": "~5.15.4", "@fortawesome/free-solid-svg-icons": "~5.15.4", - "@fortawesome/vue-fontawesome": "~3.0.0-4", + "@fortawesome/vue-fontawesome": "~3.0.0-5", "@louislam/sqlite3": "~6.0.0", "@popperjs/core": "~2.10.2", "args-parser": "~1.3.0", "axios": "~0.21.4", "bcryptjs": "~2.4.3", - "bootstrap": "~5.1.3", + "bootstrap": "5.1.3", "bree": "~6.3.1", "chardet": "^1.3.0", "chart.js": "~3.6.0", @@ -30,7 +30,7 @@ "express": "~4.17.1", "express-basic-auth": "~1.2.0", "form-data": "~4.0.0", - "http-graceful-shutdown": "~3.1.4", + "http-graceful-shutdown": "~3.1.5", "iconv-lite": "^0.6.3", "jsonwebtoken": "~8.5.1", "jwt-decode": "^3.1.2", @@ -39,7 +39,7 @@ "notp": "~2.0.3", "password-hash": "~1.2.2", "postcss-rtlcss": "~3.4.1", - "postcss-scss": "~4.0.1", + "postcss-scss": "~4.0.2", "prom-client": "~13.2.0", "prometheus-api-metrics": "~3.2.0", "qrcode": "~1.4.4", @@ -59,72 +59,72 @@ "vue-image-crop-upload": "~3.0.3", "vue-multiselect": "~3.0.0-alpha.2", "vue-qrcode": "~1.0.0", - "vue-router": "~4.0.11", - "vue-toastification": "~2.0.0-rc.1", + "vue-router": "~4.0.12", + "vue-toastification": "~2.0.0-rc.5", "vuedraggable": "~4.1.0" }, "devDependencies": { - "@babel/eslint-parser": "~7.15.7", + "@babel/eslint-parser": "~7.15.8", "@babel/preset-env": "^7.15.8", "@types/bootstrap": "~5.1.6", - "@vitejs/plugin-legacy": "~1.6.2", + "@vitejs/plugin-legacy": "~1.6.3", "@vitejs/plugin-vue": "~1.9.4", - "@vue/compiler-sfc": "~3.2.20", + "@vue/compiler-sfc": "~3.2.22", "babel-plugin-rewire": "~1.2.0", - "core-js": "~3.18.1", + "core-js": "~3.18.3", "cross-env": "~7.0.3", "dns2": "~2.0.1", "eslint": "~7.32.0", "eslint-plugin-vue": "~7.18.0", - "jest": "~27.2.4", + "jest": "~27.2.5", "jest-puppeteer": "~6.0.0", "puppeteer": "~10.4.0", "sass": "~1.42.1", "stylelint": "~13.13.1", "stylelint-config-standard": "~22.0.0", - "typescript": "~4.4.3", - "vite": "~2.6.13" + "typescript": "~4.4.4", + "vite": "~2.6.14" }, "engines": { "node": "14.*" } }, "node_modules/@babel/code-frame": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", - "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.14.5" + "@babel/highlight": "^7.16.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", - "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", + "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.8.tgz", - "integrity": "sha512-3UG9dsxvYBMYwRv+gS41WKHno4K60/9GPy1CJaH6xy3Elq8CTtvtjT5R5jmNhXfCYLX2mTw+7/aq5ak/gOE0og==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.15.8", - "@babel/generator": "^7.15.8", - "@babel/helper-compilation-targets": "^7.15.4", - "@babel/helper-module-transforms": "^7.15.8", - "@babel/helpers": "^7.15.4", - "@babel/parser": "^7.15.8", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.6", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", + "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helpers": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -159,12 +159,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz", - "integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", "dev": true, "dependencies": { - "@babel/types": "^7.15.6", + "@babel/types": "^7.16.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" }, @@ -173,39 +173,39 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz", - "integrity": "sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", + "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", "dev": true, "dependencies": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.15.4.tgz", - "integrity": "sha512-P8o7JP2Mzi0SdC6eWr1zF+AEYvrsZa7GSY1lTayjF5XJhVH0kjLYUZPvTMflP7tBgZoe9gIhTa60QwFpqh/E0Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.0.tgz", + "integrity": "sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ==", "dev": true, "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-explode-assignable-expression": "^7.16.0", + "@babel/types": "^7.16.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz", - "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", + "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.15.0", + "@babel/compat-data": "^7.16.0", "@babel/helper-validator-option": "^7.14.5", - "browserslist": "^4.16.6", + "browserslist": "^4.17.5", "semver": "^6.3.0" }, "engines": { @@ -216,17 +216,17 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.15.4.tgz", - "integrity": "sha512-7ZmzFi+DwJx6A7mHRwbuucEYpyBwmh2Ca0RvI6z2+WLZYCqV0JOaLb+u0zbtmDicebgKBZgqbYfLaKNqSgv5Pw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz", + "integrity": "sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-member-expression-to-functions": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0" }, "engines": { "node": ">=6.9.0" @@ -236,12 +236,12 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz", - "integrity": "sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", + "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-annotate-as-pure": "^7.16.0", "regexpu-core": "^4.7.1" }, "engines": { @@ -252,9 +252,9 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz", - "integrity": "sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", + "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.13.0", @@ -271,105 +271,105 @@ } }, "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.15.4.tgz", - "integrity": "sha512-J14f/vq8+hdC2KoWLIQSsGrC9EFBKE4NFts8pfMpymfApds+fPqR30AOUWc4tyr56h9l/GA1Sxv2q3dLZWbQ/g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", + "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", "dev": true, "dependencies": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", - "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", "dev": true, "dependencies": { - "@babel/helper-get-function-arity": "^7.15.4", - "@babel/template": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-get-function-arity": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", - "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", "dev": true, "dependencies": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", - "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", "dev": true, "dependencies": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", - "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", "dev": true, "dependencies": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", - "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", "dev": true, "dependencies": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz", - "integrity": "sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", + "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.15.4", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-simple-access": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", "@babel/helper-validator-identifier": "^7.15.7", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.6" + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", - "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", "dev": true, "dependencies": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" }, "engines": { "node": ">=6.9.0" @@ -385,65 +385,65 @@ } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.15.4.tgz", - "integrity": "sha512-v53MxgvMK/HCwckJ1bZrq6dNKlmwlyRNYM6ypaRTdXWGOE2c1/SCa6dL/HimhPulGhZKw9W0QhREM583F/t0vQ==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.4.tgz", + "integrity": "sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.15.4", - "@babel/helper-wrap-function": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-wrap-function": "^7.16.0", + "@babel/types": "^7.16.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", - "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", "dev": true, "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", - "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", "dev": true, "dependencies": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.15.4.tgz", - "integrity": "sha512-BMRLsdh+D1/aap19TycS4eD1qELGrCBJwzaY9IE8LrpJtJb+H7rQkPIdsfgnMtLBA6DJls7X9z93Z4U8h7xw0A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", "dev": true, "dependencies": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", - "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", "dev": true, "dependencies": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" }, "engines": { "node": ">=6.9.0" @@ -468,41 +468,41 @@ } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.15.4.tgz", - "integrity": "sha512-Y2o+H/hRV5W8QhIfTpRIBwl57y8PrZt6JM3V8FOo5qarjshHItyH5lXlpMfBfmBefOqSCpKZs/6Dxqp0E/U+uw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.0.tgz", + "integrity": "sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.15.4", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-function-name": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", - "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.3.tgz", + "integrity": "sha512-Xn8IhDlBPhvYTvgewPKawhADichOsbkZuzN7qz2BusOM0brChsyXMDJvldWaYMMUNiCQdQzNEioXTp3sC8Nt8w==", "dev": true, "dependencies": { - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.3", + "@babel/types": "^7.16.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, @@ -511,9 +511,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", - "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz", + "integrity": "sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng==", "bin": { "parser": "bin/babel-parser.js" }, @@ -521,15 +521,30 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", + "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.15.4.tgz", - "integrity": "sha512-eBnpsl9tlhPhpI10kU06JHnrYXwg3+V6CaP2idsCXNef0aeslpqyITXQ74Vfk5uHgY7IG7XP0yIH8b42KSzHog==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", + "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.15.4", - "@babel/plugin-proposal-optional-chaining": "^7.14.5" + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0" }, "engines": { "node": ">=6.9.0" @@ -539,13 +554,13 @@ } }, "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.15.8.tgz", - "integrity": "sha512-2Z5F2R2ibINTc63mY7FLqGfEbmofrHU9FitJW1Q7aPaKFhiPvSq6QEt/BoWN5oME3GVyjcRuNNSRbb9LC0CSWA==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz", + "integrity": "sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-remap-async-to-generator": "^7.15.4", + "@babel/helper-remap-async-to-generator": "^7.16.4", "@babel/plugin-syntax-async-generators": "^7.8.4" }, "engines": { @@ -556,12 +571,12 @@ } }, "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz", - "integrity": "sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz", + "integrity": "sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-create-class-features-plugin": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { @@ -572,12 +587,12 @@ } }, "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.15.4.tgz", - "integrity": "sha512-M682XWrrLNk3chXCjoPUQWOyYsB93B9z3mRyjtqqYJWDf2mfCdIYgDrA11cgNVhAQieaq6F2fn2f3wI0U4aTjA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.0.tgz", + "integrity": "sha512-mAy3sdcY9sKAkf3lQbDiv3olOfiLqI51c9DR9b19uMoR2Z6r5pmGl7dfNFqEvqOyqbf1ta4lknK4gc5PJn3mfA==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.15.4", + "@babel/helper-create-class-features-plugin": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, @@ -589,9 +604,9 @@ } }, "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz", - "integrity": "sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz", + "integrity": "sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5", @@ -605,9 +620,9 @@ } }, "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.5.tgz", - "integrity": "sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz", + "integrity": "sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5", @@ -621,9 +636,9 @@ } }, "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz", - "integrity": "sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz", + "integrity": "sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5", @@ -637,9 +652,9 @@ } }, "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz", - "integrity": "sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz", + "integrity": "sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5", @@ -653,9 +668,9 @@ } }, "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz", - "integrity": "sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz", + "integrity": "sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5", @@ -669,9 +684,9 @@ } }, "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz", - "integrity": "sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz", + "integrity": "sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5", @@ -685,16 +700,16 @@ } }, "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.15.6.tgz", - "integrity": "sha512-qtOHo7A1Vt+O23qEAX+GdBpqaIuD3i9VRrWgCJeq7WO6H2d14EK3q11urj5Te2MAeK97nMiIdRpwd/ST4JFbNg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.0.tgz", + "integrity": "sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.15.0", - "@babel/helper-compilation-targets": "^7.15.4", + "@babel/compat-data": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.15.4" + "@babel/plugin-transform-parameters": "^7.16.0" }, "engines": { "node": ">=6.9.0" @@ -704,9 +719,9 @@ } }, "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz", - "integrity": "sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz", + "integrity": "sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5", @@ -720,13 +735,13 @@ } }, "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz", - "integrity": "sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz", + "integrity": "sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, "engines": { @@ -737,12 +752,12 @@ } }, "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz", - "integrity": "sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz", + "integrity": "sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-create-class-features-plugin": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { @@ -753,13 +768,13 @@ } }, "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.15.4.tgz", - "integrity": "sha512-X0UTixkLf0PCCffxgu5/1RQyGGbgZuKoI+vXP4iSbJSYwPb7hu06omsFGBvQ9lJEvwgrxHdS8B5nbfcd8GyUNA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.0.tgz", + "integrity": "sha512-3jQUr/HBbMVZmi72LpjQwlZ55i1queL8KcDTQEkAHihttJnAPrcvG9ZNXIfsd2ugpizZo595egYV6xy+pv4Ofw==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.15.4", - "@babel/helper-create-class-features-plugin": "^7.15.4", + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-create-class-features-plugin": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, @@ -771,12 +786,12 @@ } }, "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz", - "integrity": "sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz", + "integrity": "sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-create-regexp-features-plugin": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { @@ -988,9 +1003,9 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz", - "integrity": "sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.0.tgz", + "integrity": "sha512-Xv6mEXqVdaqCBfJFyeab0fH2DnUoMsDmhamxsSi4j8nLd4Vtw213WMJr55xxqipC/YVWyPY3K0blJncPYji+dQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" @@ -1003,9 +1018,9 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz", - "integrity": "sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz", + "integrity": "sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" @@ -1018,14 +1033,14 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz", - "integrity": "sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz", + "integrity": "sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-module-imports": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-remap-async-to-generator": "^7.14.5" + "@babel/helper-remap-async-to-generator": "^7.16.0" }, "engines": { "node": ">=6.9.0" @@ -1035,9 +1050,9 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz", - "integrity": "sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz", + "integrity": "sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" @@ -1050,9 +1065,9 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.15.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.15.3.tgz", - "integrity": "sha512-nBAzfZwZb4DkaGtOes1Up1nOAp9TDRRFw4XBzBBSG9QK7KVFmYzgj9o9sbPv7TX5ofL4Auq4wZnxCoPnI/lz2Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz", + "integrity": "sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" @@ -1065,17 +1080,17 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.15.4.tgz", - "integrity": "sha512-Yjvhex8GzBmmPQUvpXRPWQ9WnxXgAFuZSrqOK/eJlOGIXwvv8H3UEdUigl1gb/bnjTrln+e8bkZUYCBt/xYlBg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz", + "integrity": "sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", "globals": "^11.1.0" }, "engines": { @@ -1086,9 +1101,9 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz", - "integrity": "sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz", + "integrity": "sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" @@ -1101,9 +1116,9 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz", - "integrity": "sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz", + "integrity": "sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" @@ -1116,12 +1131,12 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz", - "integrity": "sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz", + "integrity": "sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-create-regexp-features-plugin": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { @@ -1132,9 +1147,9 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz", - "integrity": "sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz", + "integrity": "sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" @@ -1147,12 +1162,12 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz", - "integrity": "sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz", + "integrity": "sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw==", "dev": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.14.5", + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { @@ -1163,9 +1178,9 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.15.4.tgz", - "integrity": "sha512-DRTY9fA751AFBDh2oxydvVm4SYevs5ILTWLs6xKXps4Re/KG5nfUkr+TdHCrRWB8C69TlzVgA9b3RmGWmgN9LA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz", + "integrity": "sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" @@ -1178,12 +1193,12 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz", - "integrity": "sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz", + "integrity": "sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.14.5", + "@babel/helper-function-name": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { @@ -1194,9 +1209,9 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz", - "integrity": "sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz", + "integrity": "sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" @@ -1209,9 +1224,9 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz", - "integrity": "sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz", + "integrity": "sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" @@ -1224,12 +1239,12 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz", - "integrity": "sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz", + "integrity": "sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-module-transforms": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" }, @@ -1241,14 +1256,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.15.4.tgz", - "integrity": "sha512-qg4DPhwG8hKp4BbVDvX1s8cohM8a6Bvptu4l6Iingq5rW+yRUAhe/YRup/YcW2zCOlrysEWVhftIcKzrEZv3sA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz", + "integrity": "sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.15.4", + "@babel/helper-module-transforms": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-simple-access": "^7.15.4", + "@babel/helper-simple-access": "^7.16.0", "babel-plugin-dynamic-import-node": "^2.3.3" }, "engines": { @@ -1259,15 +1274,15 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.15.4.tgz", - "integrity": "sha512-fJUnlQrl/mezMneR72CKCgtOoahqGJNVKpompKwzv3BrEXdlPspTcyxrZ1XmDTIr9PpULrgEQo3qNKp6dW7ssw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz", + "integrity": "sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg==", "dev": true, "dependencies": { - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-module-transforms": "^7.15.4", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-identifier": "^7.14.9", + "@babel/helper-validator-identifier": "^7.15.7", "babel-plugin-dynamic-import-node": "^2.3.3" }, "engines": { @@ -1278,12 +1293,12 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz", - "integrity": "sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz", + "integrity": "sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-module-transforms": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { @@ -1294,12 +1309,12 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.14.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.9.tgz", - "integrity": "sha512-l666wCVYO75mlAtGFfyFwnWmIXQm3kSH0C3IRnJqWcZbWkoihyAdDhFm2ZWaxWTqvBvhVFfJjMRQ0ez4oN1yYA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz", + "integrity": "sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5" + "@babel/helper-create-regexp-features-plugin": "^7.16.0" }, "engines": { "node": ">=6.9.0" @@ -1309,9 +1324,9 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz", - "integrity": "sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz", + "integrity": "sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" @@ -1324,13 +1339,13 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz", - "integrity": "sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz", + "integrity": "sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-replace-supers": "^7.14.5" + "@babel/helper-replace-supers": "^7.16.0" }, "engines": { "node": ">=6.9.0" @@ -1340,9 +1355,9 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.15.4.tgz", - "integrity": "sha512-9WB/GUTO6lvJU3XQsSr6J/WKvBC2hcs4Pew8YxZagi6GkTdniyqp8On5kqdK8MN0LMeu0mGbhPN+O049NV/9FQ==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz", + "integrity": "sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" @@ -1355,9 +1370,9 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz", - "integrity": "sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz", + "integrity": "sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" @@ -1370,9 +1385,9 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz", - "integrity": "sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.0.tgz", + "integrity": "sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg==", "dev": true, "dependencies": { "regenerator-transform": "^0.14.2" @@ -1385,9 +1400,9 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz", - "integrity": "sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz", + "integrity": "sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" @@ -1400,9 +1415,9 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz", - "integrity": "sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.0.tgz", + "integrity": "sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" @@ -1415,13 +1430,13 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.15.8.tgz", - "integrity": "sha512-/daZ8s2tNaRekl9YJa9X4bzjpeRZLt122cpgFnQPLGUe61PH8zMEBmYqKkW5xF5JUEh5buEGXJoQpqBmIbpmEQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz", + "integrity": "sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.15.4" + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" }, "engines": { "node": ">=6.9.0" @@ -1431,9 +1446,9 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz", - "integrity": "sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz", + "integrity": "sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" @@ -1446,9 +1461,9 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz", - "integrity": "sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz", + "integrity": "sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" @@ -1461,9 +1476,9 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz", - "integrity": "sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz", + "integrity": "sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" @@ -1476,9 +1491,9 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz", - "integrity": "sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.0.tgz", + "integrity": "sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" @@ -1491,12 +1506,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz", - "integrity": "sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz", + "integrity": "sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-create-regexp-features-plugin": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { @@ -1507,31 +1522,32 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.15.8.tgz", - "integrity": "sha512-rCC0wH8husJgY4FPbHsiYyiLxSY8oMDJH7Rl6RQMknbN9oDDHhM9RDFvnGM2MgkbUJzSQB4gtuwygY5mCqGSsA==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.4.tgz", + "integrity": "sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.15.0", - "@babel/helper-compilation-targets": "^7.15.4", + "@babel/compat-data": "^7.16.4", + "@babel/helper-compilation-targets": "^7.16.3", "@babel/helper-plugin-utils": "^7.14.5", "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.15.4", - "@babel/plugin-proposal-async-generator-functions": "^7.15.8", - "@babel/plugin-proposal-class-properties": "^7.14.5", - "@babel/plugin-proposal-class-static-block": "^7.15.4", - "@babel/plugin-proposal-dynamic-import": "^7.14.5", - "@babel/plugin-proposal-export-namespace-from": "^7.14.5", - "@babel/plugin-proposal-json-strings": "^7.14.5", - "@babel/plugin-proposal-logical-assignment-operators": "^7.14.5", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5", - "@babel/plugin-proposal-numeric-separator": "^7.14.5", - "@babel/plugin-proposal-object-rest-spread": "^7.15.6", - "@babel/plugin-proposal-optional-catch-binding": "^7.14.5", - "@babel/plugin-proposal-optional-chaining": "^7.14.5", - "@babel/plugin-proposal-private-methods": "^7.14.5", - "@babel/plugin-proposal-private-property-in-object": "^7.15.4", - "@babel/plugin-proposal-unicode-property-regex": "^7.14.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-async-generator-functions": "^7.16.4", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-class-static-block": "^7.16.0", + "@babel/plugin-proposal-dynamic-import": "^7.16.0", + "@babel/plugin-proposal-export-namespace-from": "^7.16.0", + "@babel/plugin-proposal-json-strings": "^7.16.0", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-object-rest-spread": "^7.16.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-proposal-private-property-in-object": "^7.16.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.0", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", @@ -1546,44 +1562,44 @@ "@babel/plugin-syntax-optional-chaining": "^7.8.3", "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.14.5", - "@babel/plugin-transform-async-to-generator": "^7.14.5", - "@babel/plugin-transform-block-scoped-functions": "^7.14.5", - "@babel/plugin-transform-block-scoping": "^7.15.3", - "@babel/plugin-transform-classes": "^7.15.4", - "@babel/plugin-transform-computed-properties": "^7.14.5", - "@babel/plugin-transform-destructuring": "^7.14.7", - "@babel/plugin-transform-dotall-regex": "^7.14.5", - "@babel/plugin-transform-duplicate-keys": "^7.14.5", - "@babel/plugin-transform-exponentiation-operator": "^7.14.5", - "@babel/plugin-transform-for-of": "^7.15.4", - "@babel/plugin-transform-function-name": "^7.14.5", - "@babel/plugin-transform-literals": "^7.14.5", - "@babel/plugin-transform-member-expression-literals": "^7.14.5", - "@babel/plugin-transform-modules-amd": "^7.14.5", - "@babel/plugin-transform-modules-commonjs": "^7.15.4", - "@babel/plugin-transform-modules-systemjs": "^7.15.4", - "@babel/plugin-transform-modules-umd": "^7.14.5", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.14.9", - "@babel/plugin-transform-new-target": "^7.14.5", - "@babel/plugin-transform-object-super": "^7.14.5", - "@babel/plugin-transform-parameters": "^7.15.4", - "@babel/plugin-transform-property-literals": "^7.14.5", - "@babel/plugin-transform-regenerator": "^7.14.5", - "@babel/plugin-transform-reserved-words": "^7.14.5", - "@babel/plugin-transform-shorthand-properties": "^7.14.5", - "@babel/plugin-transform-spread": "^7.15.8", - "@babel/plugin-transform-sticky-regex": "^7.14.5", - "@babel/plugin-transform-template-literals": "^7.14.5", - "@babel/plugin-transform-typeof-symbol": "^7.14.5", - "@babel/plugin-transform-unicode-escapes": "^7.14.5", - "@babel/plugin-transform-unicode-regex": "^7.14.5", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.15.6", - "babel-plugin-polyfill-corejs2": "^0.2.2", - "babel-plugin-polyfill-corejs3": "^0.2.5", - "babel-plugin-polyfill-regenerator": "^0.2.2", - "core-js-compat": "^3.16.0", + "@babel/plugin-transform-arrow-functions": "^7.16.0", + "@babel/plugin-transform-async-to-generator": "^7.16.0", + "@babel/plugin-transform-block-scoped-functions": "^7.16.0", + "@babel/plugin-transform-block-scoping": "^7.16.0", + "@babel/plugin-transform-classes": "^7.16.0", + "@babel/plugin-transform-computed-properties": "^7.16.0", + "@babel/plugin-transform-destructuring": "^7.16.0", + "@babel/plugin-transform-dotall-regex": "^7.16.0", + "@babel/plugin-transform-duplicate-keys": "^7.16.0", + "@babel/plugin-transform-exponentiation-operator": "^7.16.0", + "@babel/plugin-transform-for-of": "^7.16.0", + "@babel/plugin-transform-function-name": "^7.16.0", + "@babel/plugin-transform-literals": "^7.16.0", + "@babel/plugin-transform-member-expression-literals": "^7.16.0", + "@babel/plugin-transform-modules-amd": "^7.16.0", + "@babel/plugin-transform-modules-commonjs": "^7.16.0", + "@babel/plugin-transform-modules-systemjs": "^7.16.0", + "@babel/plugin-transform-modules-umd": "^7.16.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0", + "@babel/plugin-transform-new-target": "^7.16.0", + "@babel/plugin-transform-object-super": "^7.16.0", + "@babel/plugin-transform-parameters": "^7.16.3", + "@babel/plugin-transform-property-literals": "^7.16.0", + "@babel/plugin-transform-regenerator": "^7.16.0", + "@babel/plugin-transform-reserved-words": "^7.16.0", + "@babel/plugin-transform-shorthand-properties": "^7.16.0", + "@babel/plugin-transform-spread": "^7.16.0", + "@babel/plugin-transform-sticky-regex": "^7.16.0", + "@babel/plugin-transform-template-literals": "^7.16.0", + "@babel/plugin-transform-typeof-symbol": "^7.16.0", + "@babel/plugin-transform-unicode-escapes": "^7.16.0", + "@babel/plugin-transform-unicode-regex": "^7.16.0", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.0", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.4.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.19.1", "semver": "^6.3.0" }, "engines": { @@ -1610,9 +1626,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.4.tgz", - "integrity": "sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.3.tgz", + "integrity": "sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ==", "dependencies": { "regenerator-runtime": "^0.13.4" }, @@ -1621,41 +1637,41 @@ } }, "node_modules/@babel/standalone": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/standalone/-/standalone-7.15.8.tgz", - "integrity": "sha512-EF2uQLeuwflnPRGetWH2Z400ITOSK7YbkXIKxY91EWSiOJ8xsbupT3sx3sFRwVyQgjsHSILFDzLcSo/rGspLhQ==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/standalone/-/standalone-7.16.4.tgz", + "integrity": "sha512-FDRLwjeQfPm5jaHNuB+vwNyGCp24Ah3kEsbLzKmh0eSru+QCr4DmjgbRPoz71AwXLVtXU+l/i7MlVlIj5XO7Gw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", - "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.3.tgz", + "integrity": "sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.3", + "@babel/types": "^7.16.0", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -1664,12 +1680,12 @@ } }, "node_modules/@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.14.9", + "@babel/helper-validator-identifier": "^7.15.7", "to-fast-properties": "^2.0.0" }, "engines": { @@ -1821,9 +1837,9 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", - "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, "node_modules/@intlify/core-base": { @@ -2589,16 +2605,16 @@ } }, "node_modules/@mapbox/node-pre-gyp": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.6.tgz", - "integrity": "sha512-qK1ECws8UxuPqOA8F5LFD90vyVU33W7N3hGfgsOVfrJaRVc8McC3JClTDHpeSbL9CBrOHly/4GsNPAvIgNZE+g==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.7.tgz", + "integrity": "sha512-PplSvl4pJ5N3BkVjAdDzpPhVUPdC73JgttkR+LnBx2OORC1GCQsBjUeEuipf9uOaAM1SbxcdZFfR3KDTKm2S0A==", "dependencies": { "detect-libc": "^1.0.3", "https-proxy-agent": "^5.0.0", "make-dir": "^3.1.0", "node-fetch": "^2.6.5", "nopt": "^5.0.0", - "npmlog": "^5.0.1", + "npmlog": "^6.0.0", "rimraf": "^3.0.2", "semver": "^7.3.5", "tar": "^6.1.11" @@ -2696,9 +2712,9 @@ } }, "node_modules/@sinonjs/fake-timers": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz", - "integrity": "sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", "dev": true, "dependencies": { "@sinonjs/commons": "^1.7.0" @@ -2791,9 +2807,9 @@ } }, "node_modules/@types/body-parser": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.1.tgz", - "integrity": "sha512-a6bTJ21vFOGIkwM0kzh9Yr89ziVxq4vYH2fQ6N8AeipEzai/cFK6aGMArIkUeIdRIgpwQa+2bXiLuUJCpSf2Cg==", + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", "dependencies": { "@types/connect": "*", "@types/node": "*" @@ -2860,9 +2876,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.24", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.24.tgz", - "integrity": "sha512-3UJuW+Qxhzwjq3xhwXm2onQcFHn76frIYVbTu+kn24LFxI+dEhdfISDFovPB8VpEgW8oQCTpRuCe+0zJxB7NEA==", + "version": "4.17.25", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.25.tgz", + "integrity": "sha512-OUJIVfRMFijZukGGwTpKNFprqCCXk5WjNGvUgB/CxxBR40QWSjsNK86+yvGKlCOGc7sbwfHLaXhkG+NsytwBaQ==", "dependencies": { "@types/node": "*", "@types/qs": "*", @@ -2913,9 +2929,9 @@ } }, "node_modules/@types/jquery": { - "version": "3.5.8", - "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.8.tgz", - "integrity": "sha512-cXk6NwqjDYg+UI9p2l3x0YmPa4m7RrXqmbK4IpVVpRJiYXU/QTo+UZrn54qfE1+9Gao4qpYqUnxm5ZCy2FTXAw==", + "version": "3.5.9", + "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.9.tgz", + "integrity": "sha512-B8pDk+sH/tSv/HKdx6EQER6BfUOb2GtKs0LOmozziS4h7cbe8u/eYySfUAeTwD+J09SqV3man7AMWIA5mgzCBA==", "dev": true, "dependencies": { "@types/sizzle": "*" @@ -2950,9 +2966,9 @@ } }, "node_modules/@types/lodash": { - "version": "4.14.176", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.176.tgz", - "integrity": "sha512-xZmuPTa3rlZoIbtDUyJKZQimJV3bxCmzMIO2c9Pz9afyDro6kr7R79GwcB6mRhuoPmV2p1Vb66WOJH7F886WKQ==" + "version": "4.14.177", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.177.tgz", + "integrity": "sha512-0fDwydE2clKe9MNfvXHBHF9WEahRuj+msTuQqOmAApNORFvhMYZKNGGJdCzuhheVjMps/ti0Ak/iJPACMaevvw==" }, "node_modules/@types/mdast": { "version": "3.0.10", @@ -2975,9 +2991,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "16.11.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.6.tgz", - "integrity": "sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==" + "version": "16.11.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.9.tgz", + "integrity": "sha512-MKmdASMf3LtPzwLyRrFjtFFZ48cMf8jmX5VRYrDQiJa8Ybu5VAmkqBWqKU8fdCwD8ysw4mQ9nrEHvzg6gunR7A==" }, "node_modules/@types/normalize-package-data": { "version": "2.4.1", @@ -2992,9 +3008,9 @@ "dev": true }, "node_modules/@types/prettier": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.1.tgz", - "integrity": "sha512-Fo79ojj3vdEZOHg3wR9ksAMRz4P3S5fDB5e/YWZiFnyFQI1WY2Vftu9XoXVVtJfxB7Bpce/QTqWSSntkz2Znrw==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.2.tgz", + "integrity": "sha512-ekoj4qOQYp7CvjX8ZDBgN86w3MqQhLE1hczEJbEIjgFEumDy+na/4AJAbLXfgEWFNB2pKadM5rPFtuSGMWK7xA==", "dev": true }, "node_modules/@types/qs": { @@ -3060,16 +3076,16 @@ } }, "node_modules/@vitejs/plugin-legacy": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-legacy/-/plugin-legacy-1.6.2.tgz", - "integrity": "sha512-p5Bv/827WUpVN2m95ZYXzmjE3AblFE4CHasVoZ7dIwOPlyNcpg70SehEi5AWqyC0E7C1rHD8Nju9rWoV9uBLiw==", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-legacy/-/plugin-legacy-1.6.3.tgz", + "integrity": "sha512-YivdG6gT91/wjFL6woTwVRgK9KHrju8GwXwgv5FdfAVo0GK0FK4V+YEobmDKRcOMKXQ1U5awY5HqbPIsoJalKQ==", "dev": true, "dependencies": { - "@babel/standalone": "^7.15.7", - "core-js": "^3.18.1", + "@babel/standalone": "^7.16.4", + "core-js": "^3.19.1", "magic-string": "^0.25.7", "regenerator-runtime": "^0.13.9", - "systemjs": "^6.10.3" + "systemjs": "^6.11.0" }, "engines": { "node": ">=12.0.0" @@ -3078,6 +3094,17 @@ "vite": "^2.0.0" } }, + "node_modules/@vitejs/plugin-legacy/node_modules/core-js": { + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.19.1.tgz", + "integrity": "sha512-Tnc7E9iKd/b/ff7GFbhwPVzJzPztGrChB8X8GLqoYGdEOG8IpLnK1xPyo3ZoO3HsK6TodJS58VGPOxA+hLHQMg==", + "dev": true, + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, "node_modules/@vitejs/plugin-vue": { "version": "1.9.4", "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-1.9.4.tgz", @@ -3091,12 +3118,12 @@ } }, "node_modules/@vue/compiler-core": { - "version": "3.2.20", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.20.tgz", - "integrity": "sha512-vcEXlKXoPwBXFP5aUTHN9GTZaDfwCofa9Yu9bbW2C5O/QSa9Esdt7OG4+0RRd3EHEMxUvEdj4RZrd/KpQeiJbA==", + "version": "3.2.22", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.22.tgz", + "integrity": "sha512-uAkovrVeTcjzpiM4ECmVaMrv/bjdgAaLzvjcGqQPBEyUrcqsCgccT9fHJ/+hWVGhyMahmBwLqcn4guULNx7sdw==", "dependencies": { "@babel/parser": "^7.15.0", - "@vue/shared": "3.2.20", + "@vue/shared": "3.2.22", "estree-walker": "^2.0.2", "source-map": "^0.6.1" } @@ -3110,25 +3137,25 @@ } }, "node_modules/@vue/compiler-dom": { - "version": "3.2.20", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.20.tgz", - "integrity": "sha512-QnI77ec/JtV7R0YBbcVayYTDCRcI9OCbxiUQK6izVyqQO0658n0zQuoNwe+bYgtqnvGAIqTR3FShTd5y4oOjdg==", + "version": "3.2.22", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.22.tgz", + "integrity": "sha512-VZdsw/VuO1ODs8K7NQwnMQzKITDkIFlYYC03SVnunuf6eNRxBPEonSyqbWNoo6qNaHAEBTG6VVcZC5xC9bAx1g==", "dependencies": { - "@vue/compiler-core": "3.2.20", - "@vue/shared": "3.2.20" + "@vue/compiler-core": "3.2.22", + "@vue/shared": "3.2.22" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.2.20", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.20.tgz", - "integrity": "sha512-03aZo+6tQKiFLfunHKSPZvdK4Jsn/ftRCyaro8AQIWkuxJbvSosbKK6HTTn+D2c3nPScG155akJoxKENw7rftQ==", + "version": "3.2.22", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.22.tgz", + "integrity": "sha512-tWRQ5ge1tsTDhUwHgueicKJ8rYm6WUVAPTaIpFW3GSwZKcOEJ2rXdfkHFShNVGupeRALz2ET2H84OL0GeRxY0A==", "dependencies": { "@babel/parser": "^7.15.0", - "@vue/compiler-core": "3.2.20", - "@vue/compiler-dom": "3.2.20", - "@vue/compiler-ssr": "3.2.20", - "@vue/ref-transform": "3.2.20", - "@vue/shared": "3.2.20", + "@vue/compiler-core": "3.2.22", + "@vue/compiler-dom": "3.2.22", + "@vue/compiler-ssr": "3.2.22", + "@vue/ref-transform": "3.2.22", + "@vue/shared": "3.2.22", "estree-walker": "^2.0.2", "magic-string": "^0.25.7", "postcss": "^8.1.10", @@ -3144,74 +3171,74 @@ } }, "node_modules/@vue/compiler-ssr": { - "version": "3.2.20", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.20.tgz", - "integrity": "sha512-rzzVVYivm+EjbfiGQvNeyiYZWzr6Hkej97RZLZvcumacQlnKv9176Xo9rRyeWwFbBlxmtNdrVMslRXtipMXk2w==", + "version": "3.2.22", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.22.tgz", + "integrity": "sha512-Cl6aoLJtXzzBkk1sKod8S0WBJLts3+ugVC91d22gGpbkw/64WnF12tOZi7Rg54PPLi1NovqyNWPsLH/SAFcu+w==", "dependencies": { - "@vue/compiler-dom": "3.2.20", - "@vue/shared": "3.2.20" + "@vue/compiler-dom": "3.2.22", + "@vue/shared": "3.2.22" } }, "node_modules/@vue/devtools-api": { - "version": "6.0.0-beta.19", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.0.0-beta.19.tgz", - "integrity": "sha512-ObzQhgkoVeoyKv+e8+tB/jQBL2smtk/NmC9OmFK8UqdDpoOdv/Kf9pyDWL+IFyM7qLD2C75rszJujvGSPSpGlw==" + "version": "6.0.0-beta.20.1", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.0.0-beta.20.1.tgz", + "integrity": "sha512-R2rfiRY+kZugzWh9ZyITaovx+jpU4vgivAEAiz80kvh3yviiTU3CBuGuyWpSwGz9/C7TkSWVM/FtQRGlZ16n8Q==" }, "node_modules/@vue/reactivity": { - "version": "3.2.20", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.20.tgz", - "integrity": "sha512-nSmoLojUTk+H8HNTAkrUduB4+yIUBK2HPihJo2uXVSH4Spry6oqN6lFzE5zpLK+F27Sja+UqR9R1+/kIOsHV5w==", + "version": "3.2.22", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.22.tgz", + "integrity": "sha512-xNkLAItjI0xB+lFeDgKCrSItmrHTaAzSnt8LmdSCPQnDyarmzbi/u4ESQnckWvlL7lSRKiEaOvblaNyqAa7OnQ==", "dependencies": { - "@vue/shared": "3.2.20" + "@vue/shared": "3.2.22" } }, "node_modules/@vue/ref-transform": { - "version": "3.2.20", - "resolved": "https://registry.npmjs.org/@vue/ref-transform/-/ref-transform-3.2.20.tgz", - "integrity": "sha512-Y42d3PGlYZ1lXcF3dbd3+qU/C/a3wYEZ949fyOI5ptzkjDWlkfU6vn74fmOjsLjEcjs10BXK2qO99FqQIK2r1Q==", + "version": "3.2.22", + "resolved": "https://registry.npmjs.org/@vue/ref-transform/-/ref-transform-3.2.22.tgz", + "integrity": "sha512-qalVWbq5xWWxLZ0L9OroBg/JZhzavQuCcDXblfErxyDEH6Xc5gIJ4feo1SVCICFzhAUgLgQTdSFLpgjBawbFpw==", "dependencies": { "@babel/parser": "^7.15.0", - "@vue/compiler-core": "3.2.20", - "@vue/shared": "3.2.20", + "@vue/compiler-core": "3.2.22", + "@vue/shared": "3.2.22", "estree-walker": "^2.0.2", "magic-string": "^0.25.7" } }, "node_modules/@vue/runtime-core": { - "version": "3.2.20", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.20.tgz", - "integrity": "sha512-d1xfUGhZPfiZzAN7SatStD4vRtT8deJSXib2+Cz3x0brjMWKxe32asQc154FF1E2fFgMCHtnfd4A90bQEzV4GQ==", + "version": "3.2.22", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.22.tgz", + "integrity": "sha512-e7WOC55wmHPvmoVUk9VBe/Z9k5bJfWJfVIlkUkiADJn0bOgQD29oh/GS14Kb3aEJXIHLI17Em6+HxNut1sIh7Q==", "dependencies": { - "@vue/reactivity": "3.2.20", - "@vue/shared": "3.2.20" + "@vue/reactivity": "3.2.22", + "@vue/shared": "3.2.22" } }, "node_modules/@vue/runtime-dom": { - "version": "3.2.20", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.20.tgz", - "integrity": "sha512-4TCvZMLhESWCFHFYgqN4QmMA/onnINAlUovhopjlS8ST27G1A8Z0tyxPzLoXLa+b5JrOpbMPheEMPvdKExTJig==", + "version": "3.2.22", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.22.tgz", + "integrity": "sha512-w7VHYJoliLRTLc5beN77wxuOjla4v9wr2FF22xpZFYBmH4U1V7HkYhoHc1BTuNghI15CXT1tNIMhibI1nrQgdw==", "dependencies": { - "@vue/runtime-core": "3.2.20", - "@vue/shared": "3.2.20", + "@vue/runtime-core": "3.2.22", + "@vue/shared": "3.2.22", "csstype": "^2.6.8" } }, "node_modules/@vue/server-renderer": { - "version": "3.2.20", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.20.tgz", - "integrity": "sha512-viIbZGep9XabnrRcaxWIi00cOh1x21QYm2upIL5W0zqzTJ54VdTzpI+zi1osNp+VfRQDTHpV2U7H3Kn4ljYJvg==", + "version": "3.2.22", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.22.tgz", + "integrity": "sha512-jCwbQgKPXiXoH9VS9F7K+gyEvEMrjutannwEZD1R8fQ9szmOTqC+RRbIY3Uf2ibQjZtZ8DV9a4FjxICvd9zZlQ==", "dependencies": { - "@vue/compiler-ssr": "3.2.20", - "@vue/shared": "3.2.20" + "@vue/compiler-ssr": "3.2.22", + "@vue/shared": "3.2.22" }, "peerDependencies": { - "vue": "3.2.20" + "vue": "3.2.22" } }, "node_modules/@vue/shared": { - "version": "3.2.20", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.20.tgz", - "integrity": "sha512-FbpX+hD5BvXCQerEYO7jtAGHlhAkhTQ4KIV73kmLWNlawWhTiVuQxizgVb0BOkX5oG9cIRZ42EG++d/k/Efp0w==" + "version": "3.2.22", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.22.tgz", + "integrity": "sha512-qWVav014mpjEtbWbEgl0q9pEyrrIySKum8UVYjwhC6njrKzknLZPvfuYdQyVbApsqr94tf/3dP4pCuZmmjdCWQ==" }, "node_modules/abab": { "version": "2.0.5", @@ -3331,7 +3358,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, "engines": { "node": ">=8" } @@ -3424,9 +3450,9 @@ } }, "node_modules/asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", "optional": true, "dependencies": { "safer-buffer": "~2.1.0" @@ -3691,13 +3717,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz", - "integrity": "sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz", + "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==", "dev": true, "dependencies": { "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.2.2", + "@babel/helper-define-polyfill-provider": "^0.3.0", "semver": "^6.1.1" }, "peerDependencies": { @@ -3705,25 +3731,25 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.5.tgz", - "integrity": "sha512-ninF5MQNwAX9Z7c9ED+H2pGt1mXdP4TqzlHKyPIYmJIYz0N+++uwdM7RnJukklhzJ54Q84vA4ZJkgs7lu5vqcw==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz", + "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.2.2", - "core-js-compat": "^3.16.2" + "@babel/helper-define-polyfill-provider": "^0.3.0", + "core-js-compat": "^3.18.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz", - "integrity": "sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz", + "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.2.2" + "@babel/helper-define-polyfill-provider": "^0.3.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -3992,6 +4018,7 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/bree/-/bree-6.3.1.tgz", "integrity": "sha512-FADpEV5c+3ZuFIBothyyRUxZClJD2PetIo0lmqAFJ3ZMI9WsSmQmmstZ86Dy0G4Gyw3nPNdfYTjV7+9pPtlB8g==", + "deprecated": "bree@7.0.0 drops support for the browser, Node <12.11.0, and removes bthreads entirely. Either upgrade to v7.0.0 or lock your bree version to v6.5.0.", "dependencies": { "@babel/runtime": "^7.12.5", "@breejs/later": "^4.0.2", @@ -4018,13 +4045,13 @@ "dev": true }, "node_modules/browserslist": { - "version": "4.17.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.5.tgz", - "integrity": "sha512-I3ekeB92mmpctWBoLXe0d5wPS2cBuRvvW0JyyJHMrk9/HmP2ZjrTboNAZ8iuGqaEIlKguljbQY32OkOJIRrgoA==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.18.1.tgz", + "integrity": "sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==", "dev": true, "dependencies": { - "caniuse-lite": "^1.0.30001271", - "electron-to-chromium": "^1.3.878", + "caniuse-lite": "^1.0.30001280", + "electron-to-chromium": "^1.3.896", "escalade": "^3.1.1", "node-releases": "^2.0.1", "picocolors": "^1.0.0" @@ -4185,9 +4212,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001272", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001272.tgz", - "integrity": "sha512-DV1j9Oot5dydyH1v28g25KoVm7l8MTxazwuiH3utWiAS6iL/9Nh//TGwqFEeqqN8nnWYQ8HHhUq+o4QPt9kvYw==", + "version": "1.0.30001282", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001282.tgz", + "integrity": "sha512-YhF/hG6nqBEllymSIjLtR2iWDDnChvhnVJqp+vloyt2tEHFG1yBR+ac2B/rOw0qOK0m0lEXU2dv4E/sMk5P9Kg==", "dev": true, "funding": { "type": "opencollective", @@ -4329,29 +4356,6 @@ "wrap-ansi": "^7.0.0" } }, - "node_modules/cliui/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/clone-deep": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.2.4.tgz", @@ -4538,12 +4542,12 @@ } }, "node_modules/core-js-compat": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.0.tgz", - "integrity": "sha512-R09rKZ56ccGBebjTLZHvzDxhz93YPT37gBm6qUhnwj3Kt7aCjjZWD1injyNbyeFHxNKfeZBSyds6O9n3MKq1sw==", + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.1.tgz", + "integrity": "sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g==", "dev": true, "dependencies": { - "browserslist": "^4.17.5", + "browserslist": "^4.17.6", "semver": "7.0.0" }, "funding": { @@ -4671,9 +4675,9 @@ "dev": true }, "node_modules/csstype": { - "version": "2.6.18", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.18.tgz", - "integrity": "sha512-RSU6Hyeg14am3Ah4VZEmeX8H7kLwEEirXe6aU2IPfKNvhXwTflK5HQRDNI0ypQXoqmm+QPyG2IaPuQE5zMwSIQ==" + "version": "2.6.19", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.19.tgz", + "integrity": "sha512-ZVxXaNy28/k3kJg0Fou5MiYpp88j7H9hLZp8PDC3jV0WFjfH5E9xHb56L0W59cPbKbcHXeP4qyT8PrHp8t6LcQ==" }, "node_modules/custom-error-instance": { "version": "2.1.1", @@ -5011,9 +5015,9 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "node_modules/electron-to-chromium": { - "version": "1.3.884", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.884.tgz", - "integrity": "sha512-kOaCAa+biA98PwH5BpCkeUeTL6mCeg8p3Q3OhqzPyqhu/5QUnWAN2wr/3IK8xMQxIV76kfoQpP+Bn/wij/jXrg==", + "version": "1.3.906", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.906.tgz", + "integrity": "sha512-UjoECdcOYIVzWmrbtNnYpPrDuu+RtiO5W08Vdbid9ydGQMSdnqtJUtvOqQEAVQqpoXN9kSW9YnQufvzLQMYQOw==", "dev": true }, "node_modules/emittery": { @@ -5031,8 +5035,7 @@ "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/encodeurl": { "version": "1.0.2", @@ -5181,38 +5184,38 @@ } }, "node_modules/esbuild": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.13.10.tgz", - "integrity": "sha512-0NfCsnAh5XatHIx6Cu93wpR2v6opPoOMxONYhaAoZKzGYqAE+INcDeX2wqMdcndvPQdWCuuCmvlnsh0zmbHcSQ==", + "version": "0.13.15", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.13.15.tgz", + "integrity": "sha512-raCxt02HBKv8RJxE8vkTSCXGIyKHdEdGfUmiYb8wnabnaEmHzyW7DCHb5tEN0xU8ryqg5xw54mcwnYkC4x3AIw==", "dev": true, "hasInstallScript": true, "bin": { "esbuild": "bin/esbuild" }, "optionalDependencies": { - "esbuild-android-arm64": "0.13.10", - "esbuild-darwin-64": "0.13.10", - "esbuild-darwin-arm64": "0.13.10", - "esbuild-freebsd-64": "0.13.10", - "esbuild-freebsd-arm64": "0.13.10", - "esbuild-linux-32": "0.13.10", - "esbuild-linux-64": "0.13.10", - "esbuild-linux-arm": "0.13.10", - "esbuild-linux-arm64": "0.13.10", - "esbuild-linux-mips64le": "0.13.10", - "esbuild-linux-ppc64le": "0.13.10", - "esbuild-netbsd-64": "0.13.10", - "esbuild-openbsd-64": "0.13.10", - "esbuild-sunos-64": "0.13.10", - "esbuild-windows-32": "0.13.10", - "esbuild-windows-64": "0.13.10", - "esbuild-windows-arm64": "0.13.10" + "esbuild-android-arm64": "0.13.15", + "esbuild-darwin-64": "0.13.15", + "esbuild-darwin-arm64": "0.13.15", + "esbuild-freebsd-64": "0.13.15", + "esbuild-freebsd-arm64": "0.13.15", + "esbuild-linux-32": "0.13.15", + "esbuild-linux-64": "0.13.15", + "esbuild-linux-arm": "0.13.15", + "esbuild-linux-arm64": "0.13.15", + "esbuild-linux-mips64le": "0.13.15", + "esbuild-linux-ppc64le": "0.13.15", + "esbuild-netbsd-64": "0.13.15", + "esbuild-openbsd-64": "0.13.15", + "esbuild-sunos-64": "0.13.15", + "esbuild-windows-32": "0.13.15", + "esbuild-windows-64": "0.13.15", + "esbuild-windows-arm64": "0.13.15" } }, "node_modules/esbuild-android-arm64": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.13.10.tgz", - "integrity": "sha512-1sCdVAq64yMp2Uhlu+97/enFxpmrj31QHtThz7K+/QGjbHa7JZdBdBsZCzWJuntKHZ+EU178tHYkvjaI9z5sGg==", + "version": "0.13.15", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.13.15.tgz", + "integrity": "sha512-m602nft/XXeO8YQPUDVoHfjyRVPdPgjyyXOxZ44MK/agewFFkPa8tUo6lAzSWh5Ui5PB4KR9UIFTSBKh/RrCmg==", "cpu": [ "arm64" ], @@ -5223,9 +5226,9 @@ ] }, "node_modules/esbuild-darwin-64": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.13.10.tgz", - "integrity": "sha512-XlL+BYZ2h9cz3opHfFgSHGA+iy/mljBFIRU9q++f9SiBXEZTb4gTW/IENAD1l9oKH0FdO9rUpyAfV+lM4uAxrg==", + "version": "0.13.15", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.13.15.tgz", + "integrity": "sha512-ihOQRGs2yyp7t5bArCwnvn2Atr6X4axqPpEdCFPVp7iUj4cVSdisgvEKdNR7yH3JDjW6aQDw40iQFoTqejqxvQ==", "cpu": [ "x64" ], @@ -5236,9 +5239,9 @@ ] }, "node_modules/esbuild-darwin-arm64": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.10.tgz", - "integrity": "sha512-RZMMqMTyActMrXKkW71IQO8B0tyQm0Bm+ZJQWNaHJchL5LlqazJi7rriwSocP+sKLszHhsyTEBBh6qPdw5g5yQ==", + "version": "0.13.15", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.15.tgz", + "integrity": "sha512-i1FZssTVxUqNlJ6cBTj5YQj4imWy3m49RZRnHhLpefFIh0To05ow9DTrXROTE1urGTQCloFUXTX8QfGJy1P8dQ==", "cpu": [ "arm64" ], @@ -5249,9 +5252,9 @@ ] }, "node_modules/esbuild-freebsd-64": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.10.tgz", - "integrity": "sha512-pf4BEN9reF3jvZEZdxljVgOv5JS4kuYFCI78xk+2HWustbLvTP0b9XXfWI/OD0ZLWbyLYZYIA+VbVe4tdAklig==", + "version": "0.13.15", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.15.tgz", + "integrity": "sha512-G3dLBXUI6lC6Z09/x+WtXBXbOYQZ0E8TDBqvn7aMaOCzryJs8LyVXKY4CPnHFXZAbSwkCbqiPuSQ1+HhrNk7EA==", "cpu": [ "x64" ], @@ -5262,9 +5265,9 @@ ] }, "node_modules/esbuild-freebsd-arm64": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.10.tgz", - "integrity": "sha512-j9PUcuNWmlxr4/ry4dK/s6zKh42Jhh/N5qnAAj7tx3gMbkIHW0JBoVSbbgp97p88X9xgKbXx4lG2sJDhDWmsYQ==", + "version": "0.13.15", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.15.tgz", + "integrity": "sha512-KJx0fzEDf1uhNOZQStV4ujg30WlnwqUASaGSFPhznLM/bbheu9HhqZ6mJJZM32lkyfGJikw0jg7v3S0oAvtvQQ==", "cpu": [ "arm64" ], @@ -5275,9 +5278,9 @@ ] }, "node_modules/esbuild-linux-32": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.13.10.tgz", - "integrity": "sha512-imtdHG5ru0xUUXuc2ofdtyw0fWlHYXV7JjF7oZHgmn0b+B4o4Nr6ZON3xxoo1IP8wIekW+7b9exIf/MYq0QV7w==", + "version": "0.13.15", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.13.15.tgz", + "integrity": "sha512-ZvTBPk0YWCLMCXiFmD5EUtB30zIPvC5Itxz0mdTu/xZBbbHJftQgLWY49wEPSn2T/TxahYCRDWun5smRa0Tu+g==", "cpu": [ "ia32" ], @@ -5288,9 +5291,9 @@ ] }, "node_modules/esbuild-linux-64": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.13.10.tgz", - "integrity": "sha512-O7fzQIH2e7GC98dvoTH0rad5BVLm9yU3cRWfEmryCEIFTwbNEWCEWOfsePuoGOHRtSwoVY1hPc21CJE4/9rWxQ==", + "version": "0.13.15", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.13.15.tgz", + "integrity": "sha512-eCKzkNSLywNeQTRBxJRQ0jxRCl2YWdMB3+PkWFo2BBQYC5mISLIVIjThNtn6HUNqua1pnvgP5xX0nHbZbPj5oA==", "cpu": [ "x64" ], @@ -5301,9 +5304,9 @@ ] }, "node_modules/esbuild-linux-arm": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.13.10.tgz", - "integrity": "sha512-R2Jij4A0K8BcmBehvQeUteQEcf24Y2YZ6mizlNFuJOBPxe3vZNmkZ4mCE7Pf1tbcqA65qZx8J3WSHeGJl9EsJA==", + "version": "0.13.15", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.13.15.tgz", + "integrity": "sha512-wUHttDi/ol0tD8ZgUMDH8Ef7IbDX+/UsWJOXaAyTdkT7Yy9ZBqPg8bgB/Dn3CZ9SBpNieozrPRHm0BGww7W/jA==", "cpu": [ "arm" ], @@ -5314,9 +5317,9 @@ ] }, "node_modules/esbuild-linux-arm64": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.10.tgz", - "integrity": "sha512-bkGxN67S2n0PF4zhh87/92kBTsH2xXLuH6T5omReKhpXdJZF5SVDSk5XU/nngARzE+e6QK6isK060Dr5uobzNw==", + "version": "0.13.15", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.15.tgz", + "integrity": "sha512-bYpuUlN6qYU9slzr/ltyLTR9YTBS7qUDymO8SV7kjeNext61OdmqFAzuVZom+OLW1HPHseBfJ/JfdSlx8oTUoA==", "cpu": [ "arm64" ], @@ -5327,9 +5330,9 @@ ] }, "node_modules/esbuild-linux-mips64le": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.10.tgz", - "integrity": "sha512-UDNO5snJYOLWrA2uOUxM/PVbzzh2TR7Zf2i8zCCuFlYgvAb/81XO+Tasp3YAElDpp4VGqqcpBXLtofa9nrnJGA==", + "version": "0.13.15", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.15.tgz", + "integrity": "sha512-KlVjIG828uFPyJkO/8gKwy9RbXhCEUeFsCGOJBepUlpa7G8/SeZgncUEz/tOOUJTcWMTmFMtdd3GElGyAtbSWg==", "cpu": [ "mips64el" ], @@ -5340,9 +5343,9 @@ ] }, "node_modules/esbuild-linux-ppc64le": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.10.tgz", - "integrity": "sha512-xu6J9rMWu1TcEGuEmoc8gsTrJCEPsf+QtxK4IiUZNde9r4Q4nlRVah4JVZP3hJapZgZJcxsse0XiKXh1UFdOeA==", + "version": "0.13.15", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.15.tgz", + "integrity": "sha512-h6gYF+OsaqEuBjeesTBtUPw0bmiDu7eAeuc2OEH9S6mV9/jPhPdhOWzdeshb0BskRZxPhxPOjqZ+/OqLcxQwEQ==", "cpu": [ "ppc64" ], @@ -5353,9 +5356,9 @@ ] }, "node_modules/esbuild-netbsd-64": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.10.tgz", - "integrity": "sha512-d+Gr0ScMC2J83Bfx/ZvJHK0UAEMncctwgjRth9d4zppYGLk/xMfFKxv5z1ib8yZpQThafq8aPm8AqmFIJrEesw==", + "version": "0.13.15", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.15.tgz", + "integrity": "sha512-3+yE9emwoevLMyvu+iR3rsa+Xwhie7ZEHMGDQ6dkqP/ndFzRHkobHUKTe+NCApSqG5ce2z4rFu+NX/UHnxlh3w==", "cpu": [ "x64" ], @@ -5366,9 +5369,9 @@ ] }, "node_modules/esbuild-openbsd-64": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.10.tgz", - "integrity": "sha512-OuCYc+bNKumBvxflga+nFzZvxsgmWQW+z4rMGIjM5XIW0nNbGgRc5p/0PSDv0rTdxAmwCpV69fezal0xjrDaaA==", + "version": "0.13.15", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.15.tgz", + "integrity": "sha512-wTfvtwYJYAFL1fSs8yHIdf5GEE4NkbtbXtjLWjM3Cw8mmQKqsg8kTiqJ9NJQe5NX/5Qlo7Xd9r1yKMMkHllp5g==", "cpu": [ "x64" ], @@ -5379,9 +5382,9 @@ ] }, "node_modules/esbuild-sunos-64": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.13.10.tgz", - "integrity": "sha512-gUkgivZK11bD56wDoLsnYrsOHD/zHzzLSdqKcIl3wRMulfHpRBpoX8gL0dbWr+8N9c+1HDdbNdvxSRmZ4RCVwg==", + "version": "0.13.15", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.13.15.tgz", + "integrity": "sha512-lbivT9Bx3t1iWWrSnGyBP9ODriEvWDRiweAs69vI+miJoeKwHWOComSRukttbuzjZ8r1q0mQJ8Z7yUsDJ3hKdw==", "cpu": [ "x64" ], @@ -5392,9 +5395,9 @@ ] }, "node_modules/esbuild-windows-32": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.13.10.tgz", - "integrity": "sha512-C1xJ54E56dGWRaYcTnRy7amVZ9n1/D/D2/qVw7e5EtS7p+Fv/yZxxgqyb1hMGKXgtFYX4jMpU5eWBF/AsYrn+A==", + "version": "0.13.15", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.13.15.tgz", + "integrity": "sha512-fDMEf2g3SsJ599MBr50cY5ve5lP1wyVwTe6aLJsM01KtxyKkB4UT+fc5MXQFn3RLrAIAZOG+tHC+yXObpSn7Nw==", "cpu": [ "ia32" ], @@ -5405,9 +5408,9 @@ ] }, "node_modules/esbuild-windows-64": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.13.10.tgz", - "integrity": "sha512-6+EXEXopEs3SvPFAHcps2Krp/FvqXXsOQV33cInmyilb0ZBEQew4MIoZtMIyB3YXoV6//dl3i6YbPrFZaWEinQ==", + "version": "0.13.15", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.13.15.tgz", + "integrity": "sha512-9aMsPRGDWCd3bGjUIKG/ZOJPKsiztlxl/Q3C1XDswO6eNX/Jtwu4M+jb6YDH9hRSUflQWX0XKAfWzgy5Wk54JQ==", "cpu": [ "x64" ], @@ -5418,9 +5421,9 @@ ] }, "node_modules/esbuild-windows-arm64": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.10.tgz", - "integrity": "sha512-xTqM/XKhORo6u9S5I0dNJWEdWoemFjogLUTVLkQMVyUV3ZuMChahVA+bCqKHdyX55pCFxD/8v2fm3/sfFMWN+g==", + "version": "0.13.15", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.15.tgz", + "integrity": "sha512-zzvyCVVpbwQQATaf3IG8mu1IwGEiDxKkYUdA4FpoCHi1KtPa13jeScYDjlW0Qh+ebWzpKfR2ZwvqAQkSWNcKjA==", "cpu": [ "arm64" ], @@ -6264,9 +6267,9 @@ } }, "node_modules/find-process": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/find-process/-/find-process-1.4.5.tgz", - "integrity": "sha512-v11rJYYISUWn+s8qZzgGnBvlzRKf3bOtlGFM8H0kw56lGQtOmLuLCzuclA5kehA2j7S5sioOWdI4woT3jDavAw==", + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/find-process/-/find-process-1.4.7.tgz", + "integrity": "sha512-/U4CYp1214Xrp3u3Fqr9yNynUrr5Le4y0SsJh2lMDDSbpwYSz3M2SMWQC+wqcx79cN8PQtHQIL8KnuY9M66fdg==", "dev": true, "dependencies": { "chalk": "^4.0.0", @@ -6374,15 +6377,15 @@ } }, "node_modules/flatted": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", - "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz", + "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==", "dev": true }, "node_modules/follow-redirects": { - "version": "1.14.4", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz", - "integrity": "sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==", + "version": "1.14.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.5.tgz", + "integrity": "sha512-wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA==", "funding": [ { "type": "individual", @@ -6514,41 +6517,22 @@ "dev": true }, "node_modules/gauge": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.1.tgz", - "integrity": "sha512-6STz6KdQgxO4S/ko+AbjlFGGdGcknluoqU+79GOFCDqqyYj5OanQf9AjxwN0jCidtT+ziPMmPSt9E4hfQ0CwIQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.0.tgz", + "integrity": "sha512-F8sU45yQpjQjxKkm1UOAhf0U/O0aFt//Fl7hsrNVto+patMHjs7dPI9mFOGUKbhrgKm0S3EjW3scMFuQmWSROw==", "dependencies": { + "ansi-regex": "^5.0.1", "aproba": "^1.0.3 || ^2.0.0", "color-support": "^1.1.2", "console-control-strings": "^1.0.0", "has-unicode": "^2.0.1", - "object-assign": "^4.1.1", "signal-exit": "^3.0.0", - "string-width": "^1.0.1 || ^2.0.0", - "strip-ansi": "^3.0.1 || ^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", "wide-align": "^1.1.2" }, "engines": { - "node": ">=10" - } - }, - "node_modules/gauge/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "engines": { - "node": ">=4" - } - }, - "node_modules/gauge/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" + "node": "^12.13.0 || ^14.15.0 || >=16" } }, "node_modules/gensync": { @@ -6730,9 +6714,9 @@ } }, "node_modules/globby/node_modules/ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", + "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", "dev": true, "engines": { "node": ">= 4" @@ -6920,9 +6904,9 @@ } }, "node_modules/http-graceful-shutdown": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/http-graceful-shutdown/-/http-graceful-shutdown-3.1.4.tgz", - "integrity": "sha512-d6E0hjPhHpKtxY+UuocogYuGUyuH+kOwzTYlAU+FGSTYoIUMyaIVKAn/Tmlqp82sE+Ls5ekOaqMiBlGhBsyT7g==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/http-graceful-shutdown/-/http-graceful-shutdown-3.1.5.tgz", + "integrity": "sha512-DTydrvfHuqSw6cPFgYJEcex5BUsKxvXsbgkuCwlijaHebYcC6iEcPFgkJwucqhyu5pARGDoIPYE1yG06sUotfQ==", "dependencies": { "debug": "^4.3.1" }, @@ -7210,11 +7194,11 @@ } }, "node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/is-generator-fn": { @@ -9191,9 +9175,9 @@ } }, "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.1.tgz", + "integrity": "sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA==", "dev": true, "engines": { "node": ">=10" @@ -9468,9 +9452,9 @@ } }, "node_modules/jsdom/node_modules/acorn": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", - "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz", + "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -9645,9 +9629,9 @@ } }, "node_modules/knex": { - "version": "0.95.12", - "resolved": "https://registry.npmjs.org/knex/-/knex-0.95.12.tgz", - "integrity": "sha512-/fdau7F372J/rZzMFjYo1trHs67kB13YtGErOe94Ev+OdilNEI2ddSE3O4Hb3EfgRtJUbhZWxp8T4PpDMtnjSg==", + "version": "0.95.14", + "resolved": "https://registry.npmjs.org/knex/-/knex-0.95.14.tgz", + "integrity": "sha512-j4qLjWySrC/JRRVtOpoR2LcS1yBOsd7Krc6mEukPvmTDX/w11pD52Pq9FYR56/kLXGeAV8jFdWBjsZFi1mscWg==", "dependencies": { "colorette": "2.0.16", "commander": "^7.1.0", @@ -9752,9 +9736,9 @@ } }, "node_modules/lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, "node_modules/locate-path": { @@ -9819,12 +9803,6 @@ "lodash._basetostring": "~4.12.0" } }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -10235,19 +10213,19 @@ } }, "node_modules/mime-db": { - "version": "1.50.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz", - "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==", + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { - "version": "2.1.33", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz", - "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==", + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", "dependencies": { - "mime-db": "1.50.0" + "mime-db": "1.51.0" }, "engines": { "node": ">= 0.6" @@ -10408,9 +10386,9 @@ "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==" }, "node_modules/node-fetch": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.5.tgz", - "integrity": "sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ==", + "version": "2.6.6", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.6.tgz", + "integrity": "sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA==", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -10715,14 +10693,17 @@ } }, "node_modules/npmlog": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", - "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.0.tgz", + "integrity": "sha512-03ppFRGlsyUaQFbGC2C8QWJN/C/K7PsfyD9aQdhVKAQIH4sQBc8WASqFBP7O+Ut4d2oo5LoeoboB3cGdBZSp6Q==", "dependencies": { "are-we-there-yet": "^2.0.0", "console-control-strings": "^1.1.0", - "gauge": "^3.0.0", + "gauge": "^4.0.0", "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" } }, "node_modules/num2fraction": { @@ -11645,6 +11626,14 @@ "node": ">=6" } }, + "node_modules/qrcode/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "engines": { + "node": ">=4" + } + }, "node_modules/qrcode/node_modules/locate-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", @@ -11947,9 +11936,9 @@ } }, "node_modules/redbean-node/node_modules/@types/node": { - "version": "14.17.32", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.32.tgz", - "integrity": "sha512-JcII3D5/OapPGx+eJ+Ik1SQGyt6WvuqdRfh9jUwL6/iHGjmyOriBDciBUu7lEIBTL2ijxwrR70WUnw5AEDmFvQ==" + "version": "14.17.34", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.34.tgz", + "integrity": "sha512-USUftMYpmuMzeWobskoPfzDi+vkpe0dvcOBRNOscFrGxVp4jomnRxWuVohgqBow2xyIPC0S3gjxV/5079jhmDg==" }, "node_modules/redent": { "version": "3.0.0", @@ -12281,9 +12270,9 @@ } }, "node_modules/rollup": { - "version": "2.58.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.58.3.tgz", - "integrity": "sha512-ei27MSw1KhRur4p87Q0/Va2NAYqMXOX++FNEumMBcdreIRLURKy+cE2wcDJKBn0nfmhP2ZGrJkP1XPO+G8FJQw==", + "version": "2.60.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.60.1.tgz", + "integrity": "sha512-akwfnpjY0rXEDSn1UTVfKXJhPsEBu+imi1gqBA1ZkHGydUnkV/fWCC90P7rDaLEW8KTwBcS1G3N4893Ndz+jwg==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -12296,68 +12285,19 @@ } }, "node_modules/rtlcss": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-3.4.0.tgz", - "integrity": "sha512-pOSLxwmJTjqcnlFIezpCGyhRoPKIwXj78wJfBI8iZw7gZGVzjT/T5QcaimRComsPanMSV0hzmI5o+oWIP3nNBA==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-3.5.0.tgz", + "integrity": "sha512-wzgMaMFHQTnyi9YOwsx9LjOxYXJPzS8sYnFaKm6R5ysvTkwzHiB0vxnbHwchHQT65PTdBjDG21/kQBWI7q9O7A==", "dependencies": { - "chalk": "^4.1.0", "find-up": "^5.0.0", - "mkdirp": "^1.0.4", - "postcss": "^8.2.4", + "picocolors": "^1.0.0", + "postcss": "^8.3.11", "strip-json-comments": "^3.1.1" }, "bin": { "rtlcss": "bin/rtlcss.js" - }, - "peerDependencies": { - "postcss": "^8.2.4" - } - }, - "node_modules/rtlcss/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/rtlcss/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/rtlcss/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" } }, - "node_modules/rtlcss/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, "node_modules/rtlcss/node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -12373,14 +12313,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/rtlcss/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, "node_modules/rtlcss/node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -12423,17 +12355,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/rtlcss/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -12645,9 +12566,9 @@ } }, "node_modules/signal-exit": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz", - "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==" + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", + "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==" }, "node_modules/sisteransi": { "version": "1.0.5", @@ -12714,15 +12635,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/socket.io": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.2.0.tgz", @@ -12743,9 +12655,9 @@ } }, "node_modules/socket.io-adapter": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.3.2.tgz", - "integrity": "sha512-PBZpxUPYjmoogY0aoaTmo1643JelsaS1CiAwNjRVdrI0X9Seuc19Y2Wife8k88avW6haG8cznvwbubAZwH4Mtg==" + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.3.3.tgz", + "integrity": "sha512-Qd/iwn3VskrpNO60BeRyCyr8ZWw9CPZyitW4AQwmRZ8zCiyDiL+znRnWX6tDHXnWn1sJrM1+b6Mn6wEDJJ4aYQ==" }, "node_modules/socket.io-client": { "version": "4.2.0", @@ -12800,9 +12712,9 @@ } }, "node_modules/source-map-support": { - "version": "0.5.20", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz", - "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==", + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "dependencies": { "buffer-from": "^1.0.0", @@ -12861,9 +12773,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz", - "integrity": "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==", + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", "dev": true }, "node_modules/specificity": { @@ -12976,41 +12888,22 @@ } }, "node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "engines": { - "node": ">=4" - } - }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dependencies": { - "ansi-regex": "^3.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -13243,23 +13136,14 @@ } }, "node_modules/stylelint/node_modules/ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", + "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", "dev": true, "engines": { "node": ">= 4" } }, - "node_modules/stylelint/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/stylelint/node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -13322,20 +13206,6 @@ "node": ">=0.10.0" } }, - "node_modules/stylelint/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/stylelint/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -13466,13 +13336,12 @@ "dev": true }, "node_modules/table": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.2.tgz", - "integrity": "sha512-UFZK67uvyNivLeQbVtkiUs8Uuuxv24aSL4/Vil2PJVtMgU8Lx0CYkP12uCGa3kjyQzOSgV1+z9Wkb82fCGsO0g==", + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.3.tgz", + "integrity": "sha512-5DkIxeA7XERBqMwJq0aHZOdMadBx4e6eDoFRuyT5VR82J0Ycg2DwM6GfA/EQAhJ+toRTaS1lIdSQCqgrmhPnlw==", "dev": true, "dependencies": { "ajv": "^8.0.1", - "lodash.clonedeep": "^4.5.0", "lodash.truncate": "^4.4.2", "slice-ansi": "^4.0.0", "string-width": "^4.2.3", @@ -13483,9 +13352,9 @@ } }, "node_modules/table/node_modules/ajv": { - "version": "8.6.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.3.tgz", - "integrity": "sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==", + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", + "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", @@ -13498,35 +13367,12 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/table/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/table/node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, - "node_modules/table/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/tar": { "version": "6.1.11", "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", @@ -14173,9 +14019,9 @@ } }, "node_modules/vite": { - "version": "2.6.13", - "resolved": "https://registry.npmjs.org/vite/-/vite-2.6.13.tgz", - "integrity": "sha512-+tGZ1OxozRirTudl4M3N3UTNJOlxdVo/qBl2IlDEy/ZpTFcskp+k5ncNjayR3bRYTCbqSOFz2JWGN1UmuDMScA==", + "version": "2.6.14", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.6.14.tgz", + "integrity": "sha512-2HA9xGyi+EhY2MXo0+A2dRsqsAG3eFNEVIo12olkWhOmc8LfiM+eMdrXf+Ruje9gdXgvSqjLI9freec1RUM5EA==", "dev": true, "dependencies": { "esbuild": "^0.13.2", @@ -14210,15 +14056,15 @@ } }, "node_modules/vue": { - "version": "3.2.20", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.20.tgz", - "integrity": "sha512-81JjEP4OGk9oO8+CU0h2nFPGgJBm9mNa3kdCX2k6FuRdrWrC+CNe+tOnuIeTg8EWwQuI+wwdra5Q7vSzp7p4Iw==", + "version": "3.2.22", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.22.tgz", + "integrity": "sha512-KD5nZpXVZquOC6926Xnp3zOvswrUyO9Rya7ZUoxWFQEjFDW4iACtwzubRB4Um2Om9kj6CaJOqAVRDSFlqLpdgw==", "dependencies": { - "@vue/compiler-dom": "3.2.20", - "@vue/compiler-sfc": "3.2.20", - "@vue/runtime-dom": "3.2.20", - "@vue/server-renderer": "3.2.20", - "@vue/shared": "3.2.20" + "@vue/compiler-dom": "3.2.22", + "@vue/compiler-sfc": "3.2.22", + "@vue/runtime-dom": "3.2.22", + "@vue/server-renderer": "3.2.22", + "@vue/shared": "3.2.22" } }, "node_modules/vue-chart-3": { @@ -14244,6 +14090,43 @@ } } }, + "node_modules/vue-chart-3/node_modules/@vue/reactivity": { + "version": "3.2.20", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.20.tgz", + "integrity": "sha512-nSmoLojUTk+H8HNTAkrUduB4+yIUBK2HPihJo2uXVSH4Spry6oqN6lFzE5zpLK+F27Sja+UqR9R1+/kIOsHV5w==", + "dependencies": { + "@vue/shared": "3.2.20" + } + }, + "node_modules/vue-chart-3/node_modules/@vue/runtime-core": { + "version": "3.2.20", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.20.tgz", + "integrity": "sha512-d1xfUGhZPfiZzAN7SatStD4vRtT8deJSXib2+Cz3x0brjMWKxe32asQc154FF1E2fFgMCHtnfd4A90bQEzV4GQ==", + "dependencies": { + "@vue/reactivity": "3.2.20", + "@vue/shared": "3.2.20" + } + }, + "node_modules/vue-chart-3/node_modules/@vue/runtime-dom": { + "version": "3.2.20", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.20.tgz", + "integrity": "sha512-4TCvZMLhESWCFHFYgqN4QmMA/onnINAlUovhopjlS8ST27G1A8Z0tyxPzLoXLa+b5JrOpbMPheEMPvdKExTJig==", + "dependencies": { + "@vue/runtime-core": "3.2.20", + "@vue/shared": "3.2.20", + "csstype": "^2.6.8" + } + }, + "node_modules/vue-chart-3/node_modules/@vue/runtime-dom/node_modules/csstype": { + "version": "2.6.19", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.19.tgz", + "integrity": "sha512-ZVxXaNy28/k3kJg0Fou5MiYpp88j7H9hLZp8PDC3jV0WFjfH5E9xHb56L0W59cPbKbcHXeP4qyT8PrHp8t6LcQ==" + }, + "node_modules/vue-chart-3/node_modules/@vue/shared": { + "version": "3.2.20", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.20.tgz", + "integrity": "sha512-FbpX+hD5BvXCQerEYO7jtAGHlhAkhTQ4KIV73kmLWNlawWhTiVuQxizgVb0BOkX5oG9cIRZ42EG++d/k/Efp0w==" + }, "node_modules/vue-chart-3/node_modules/csstype": { "version": "3.0.9", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.9.tgz", @@ -14628,29 +14511,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -14759,29 +14619,6 @@ "node": ">=10" } }, - "node_modules/yargs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", @@ -14838,35 +14675,35 @@ }, "dependencies": { "@babel/code-frame": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", - "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", "dev": true, "requires": { - "@babel/highlight": "^7.14.5" + "@babel/highlight": "^7.16.0" } }, "@babel/compat-data": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", - "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", + "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", "dev": true }, "@babel/core": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.8.tgz", - "integrity": "sha512-3UG9dsxvYBMYwRv+gS41WKHno4K60/9GPy1CJaH6xy3Elq8CTtvtjT5R5jmNhXfCYLX2mTw+7/aq5ak/gOE0og==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.15.8", - "@babel/generator": "^7.15.8", - "@babel/helper-compilation-targets": "^7.15.4", - "@babel/helper-module-transforms": "^7.15.8", - "@babel/helpers": "^7.15.4", - "@babel/parser": "^7.15.8", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.6", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", + "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helpers": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -14887,75 +14724,75 @@ } }, "@babel/generator": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz", - "integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", "dev": true, "requires": { - "@babel/types": "^7.15.6", + "@babel/types": "^7.16.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, "@babel/helper-annotate-as-pure": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz", - "integrity": "sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", + "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.15.4.tgz", - "integrity": "sha512-P8o7JP2Mzi0SdC6eWr1zF+AEYvrsZa7GSY1lTayjF5XJhVH0kjLYUZPvTMflP7tBgZoe9gIhTa60QwFpqh/E0Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.0.tgz", + "integrity": "sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-explode-assignable-expression": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-compilation-targets": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz", - "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", + "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", "dev": true, "requires": { - "@babel/compat-data": "^7.15.0", + "@babel/compat-data": "^7.16.0", "@babel/helper-validator-option": "^7.14.5", - "browserslist": "^4.16.6", + "browserslist": "^4.17.5", "semver": "^6.3.0" } }, "@babel/helper-create-class-features-plugin": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.15.4.tgz", - "integrity": "sha512-7ZmzFi+DwJx6A7mHRwbuucEYpyBwmh2Ca0RvI6z2+WLZYCqV0JOaLb+u0zbtmDicebgKBZgqbYfLaKNqSgv5Pw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz", + "integrity": "sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-member-expression-to-functions": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz", - "integrity": "sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", + "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-annotate-as-pure": "^7.16.0", "regexpu-core": "^4.7.1" } }, "@babel/helper-define-polyfill-provider": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz", - "integrity": "sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", + "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.13.0", @@ -14969,84 +14806,84 @@ } }, "@babel/helper-explode-assignable-expression": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.15.4.tgz", - "integrity": "sha512-J14f/vq8+hdC2KoWLIQSsGrC9EFBKE4NFts8pfMpymfApds+fPqR30AOUWc4tyr56h9l/GA1Sxv2q3dLZWbQ/g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", + "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-function-name": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", - "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.15.4", - "@babel/template": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-get-function-arity": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", - "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-hoist-variables": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", - "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", - "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-module-imports": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", - "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-module-transforms": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz", - "integrity": "sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", + "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.15.4", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-simple-access": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", "@babel/helper-validator-identifier": "^7.15.7", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.6" + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-optimise-call-expression": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", - "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-plugin-utils": { @@ -15056,53 +14893,53 @@ "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.15.4.tgz", - "integrity": "sha512-v53MxgvMK/HCwckJ1bZrq6dNKlmwlyRNYM6ypaRTdXWGOE2c1/SCa6dL/HimhPulGhZKw9W0QhREM583F/t0vQ==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.4.tgz", + "integrity": "sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.15.4", - "@babel/helper-wrap-function": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-wrap-function": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-replace-supers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", - "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helper-simple-access": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", - "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.15.4.tgz", - "integrity": "sha512-BMRLsdh+D1/aap19TycS4eD1qELGrCBJwzaY9IE8LrpJtJb+H7rQkPIdsfgnMtLBA6DJls7X9z93Z4U8h7xw0A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-split-export-declaration": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", - "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", "dev": true, "requires": { - "@babel/types": "^7.15.4" + "@babel/types": "^7.16.0" } }, "@babel/helper-validator-identifier": { @@ -15118,91 +14955,100 @@ "dev": true }, "@babel/helper-wrap-function": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.15.4.tgz", - "integrity": "sha512-Y2o+H/hRV5W8QhIfTpRIBwl57y8PrZt6JM3V8FOo5qarjshHItyH5lXlpMfBfmBefOqSCpKZs/6Dxqp0E/U+uw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.0.tgz", + "integrity": "sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.15.4", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/helper-function-name": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/helpers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", - "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.3.tgz", + "integrity": "sha512-Xn8IhDlBPhvYTvgewPKawhADichOsbkZuzN7qz2BusOM0brChsyXMDJvldWaYMMUNiCQdQzNEioXTp3sC8Nt8w==", "dev": true, "requires": { - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.3", + "@babel/types": "^7.16.0" } }, "@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", - "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==" + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz", + "integrity": "sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng==" + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", + "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.15.4.tgz", - "integrity": "sha512-eBnpsl9tlhPhpI10kU06JHnrYXwg3+V6CaP2idsCXNef0aeslpqyITXQ74Vfk5uHgY7IG7XP0yIH8b42KSzHog==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", + "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.15.4", - "@babel/plugin-proposal-optional-chaining": "^7.14.5" + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0" } }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.15.8.tgz", - "integrity": "sha512-2Z5F2R2ibINTc63mY7FLqGfEbmofrHU9FitJW1Q7aPaKFhiPvSq6QEt/BoWN5oME3GVyjcRuNNSRbb9LC0CSWA==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz", + "integrity": "sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-remap-async-to-generator": "^7.15.4", + "@babel/helper-remap-async-to-generator": "^7.16.4", "@babel/plugin-syntax-async-generators": "^7.8.4" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz", - "integrity": "sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz", + "integrity": "sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-create-class-features-plugin": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-proposal-class-static-block": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.15.4.tgz", - "integrity": "sha512-M682XWrrLNk3chXCjoPUQWOyYsB93B9z3mRyjtqqYJWDf2mfCdIYgDrA11cgNVhAQieaq6F2fn2f3wI0U4aTjA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.0.tgz", + "integrity": "sha512-mAy3sdcY9sKAkf3lQbDiv3olOfiLqI51c9DR9b19uMoR2Z6r5pmGl7dfNFqEvqOyqbf1ta4lknK4gc5PJn3mfA==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.15.4", + "@babel/helper-create-class-features-plugin": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-class-static-block": "^7.14.5" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz", - "integrity": "sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz", + "integrity": "sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", @@ -15210,9 +15056,9 @@ } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.5.tgz", - "integrity": "sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz", + "integrity": "sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", @@ -15220,9 +15066,9 @@ } }, "@babel/plugin-proposal-json-strings": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz", - "integrity": "sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz", + "integrity": "sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", @@ -15230,9 +15076,9 @@ } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz", - "integrity": "sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz", + "integrity": "sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", @@ -15240,9 +15086,9 @@ } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz", - "integrity": "sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz", + "integrity": "sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", @@ -15250,9 +15096,9 @@ } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz", - "integrity": "sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz", + "integrity": "sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", @@ -15260,22 +15106,22 @@ } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.15.6.tgz", - "integrity": "sha512-qtOHo7A1Vt+O23qEAX+GdBpqaIuD3i9VRrWgCJeq7WO6H2d14EK3q11urj5Te2MAeK97nMiIdRpwd/ST4JFbNg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.0.tgz", + "integrity": "sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg==", "dev": true, "requires": { - "@babel/compat-data": "^7.15.0", - "@babel/helper-compilation-targets": "^7.15.4", + "@babel/compat-data": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.15.4" + "@babel/plugin-transform-parameters": "^7.16.0" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz", - "integrity": "sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz", + "integrity": "sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", @@ -15283,45 +15129,45 @@ } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz", - "integrity": "sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz", + "integrity": "sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, "@babel/plugin-proposal-private-methods": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz", - "integrity": "sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz", + "integrity": "sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-create-class-features-plugin": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-proposal-private-property-in-object": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.15.4.tgz", - "integrity": "sha512-X0UTixkLf0PCCffxgu5/1RQyGGbgZuKoI+vXP4iSbJSYwPb7hu06omsFGBvQ9lJEvwgrxHdS8B5nbfcd8GyUNA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.0.tgz", + "integrity": "sha512-3jQUr/HBbMVZmi72LpjQwlZ55i1queL8KcDTQEkAHihttJnAPrcvG9ZNXIfsd2ugpizZo595egYV6xy+pv4Ofw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.15.4", - "@babel/helper-create-class-features-plugin": "^7.15.4", + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-create-class-features-plugin": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz", - "integrity": "sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz", + "integrity": "sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-create-regexp-features-plugin": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" } }, @@ -15470,352 +15316,353 @@ } }, "@babel/plugin-syntax-typescript": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz", - "integrity": "sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.0.tgz", + "integrity": "sha512-Xv6mEXqVdaqCBfJFyeab0fH2DnUoMsDmhamxsSi4j8nLd4Vtw213WMJr55xxqipC/YVWyPY3K0blJncPYji+dQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz", - "integrity": "sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz", + "integrity": "sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz", - "integrity": "sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz", + "integrity": "sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-module-imports": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-remap-async-to-generator": "^7.14.5" + "@babel/helper-remap-async-to-generator": "^7.16.0" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz", - "integrity": "sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz", + "integrity": "sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.15.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.15.3.tgz", - "integrity": "sha512-nBAzfZwZb4DkaGtOes1Up1nOAp9TDRRFw4XBzBBSG9QK7KVFmYzgj9o9sbPv7TX5ofL4Auq4wZnxCoPnI/lz2Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz", + "integrity": "sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-classes": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.15.4.tgz", - "integrity": "sha512-Yjvhex8GzBmmPQUvpXRPWQ9WnxXgAFuZSrqOK/eJlOGIXwvv8H3UEdUigl1gb/bnjTrln+e8bkZUYCBt/xYlBg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz", + "integrity": "sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz", - "integrity": "sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz", + "integrity": "sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-destructuring": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz", - "integrity": "sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz", + "integrity": "sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz", - "integrity": "sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz", + "integrity": "sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-create-regexp-features-plugin": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz", - "integrity": "sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz", + "integrity": "sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz", - "integrity": "sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz", + "integrity": "sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.14.5", + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-for-of": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.15.4.tgz", - "integrity": "sha512-DRTY9fA751AFBDh2oxydvVm4SYevs5ILTWLs6xKXps4Re/KG5nfUkr+TdHCrRWB8C69TlzVgA9b3RmGWmgN9LA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz", + "integrity": "sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-function-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz", - "integrity": "sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz", + "integrity": "sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.14.5", + "@babel/helper-function-name": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz", - "integrity": "sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz", + "integrity": "sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz", - "integrity": "sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz", + "integrity": "sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz", - "integrity": "sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz", + "integrity": "sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-module-transforms": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.15.4.tgz", - "integrity": "sha512-qg4DPhwG8hKp4BbVDvX1s8cohM8a6Bvptu4l6Iingq5rW+yRUAhe/YRup/YcW2zCOlrysEWVhftIcKzrEZv3sA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz", + "integrity": "sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.15.4", + "@babel/helper-module-transforms": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-simple-access": "^7.15.4", + "@babel/helper-simple-access": "^7.16.0", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.15.4.tgz", - "integrity": "sha512-fJUnlQrl/mezMneR72CKCgtOoahqGJNVKpompKwzv3BrEXdlPspTcyxrZ1XmDTIr9PpULrgEQo3qNKp6dW7ssw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz", + "integrity": "sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-module-transforms": "^7.15.4", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-identifier": "^7.14.9", + "@babel/helper-validator-identifier": "^7.15.7", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz", - "integrity": "sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz", + "integrity": "sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-module-transforms": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.14.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.9.tgz", - "integrity": "sha512-l666wCVYO75mlAtGFfyFwnWmIXQm3kSH0C3IRnJqWcZbWkoihyAdDhFm2ZWaxWTqvBvhVFfJjMRQ0ez4oN1yYA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz", + "integrity": "sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5" + "@babel/helper-create-regexp-features-plugin": "^7.16.0" } }, "@babel/plugin-transform-new-target": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz", - "integrity": "sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz", + "integrity": "sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-object-super": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz", - "integrity": "sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz", + "integrity": "sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-replace-supers": "^7.14.5" + "@babel/helper-replace-supers": "^7.16.0" } }, "@babel/plugin-transform-parameters": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.15.4.tgz", - "integrity": "sha512-9WB/GUTO6lvJU3XQsSr6J/WKvBC2hcs4Pew8YxZagi6GkTdniyqp8On5kqdK8MN0LMeu0mGbhPN+O049NV/9FQ==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz", + "integrity": "sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-property-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz", - "integrity": "sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz", + "integrity": "sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-regenerator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz", - "integrity": "sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.0.tgz", + "integrity": "sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz", - "integrity": "sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz", + "integrity": "sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz", - "integrity": "sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.0.tgz", + "integrity": "sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-spread": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.15.8.tgz", - "integrity": "sha512-/daZ8s2tNaRekl9YJa9X4bzjpeRZLt122cpgFnQPLGUe61PH8zMEBmYqKkW5xF5JUEh5buEGXJoQpqBmIbpmEQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz", + "integrity": "sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.15.4" + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz", - "integrity": "sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz", + "integrity": "sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-template-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz", - "integrity": "sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz", + "integrity": "sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz", - "integrity": "sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz", + "integrity": "sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz", - "integrity": "sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.0.tgz", + "integrity": "sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz", - "integrity": "sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz", + "integrity": "sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-create-regexp-features-plugin": "^7.16.0", "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/preset-env": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.15.8.tgz", - "integrity": "sha512-rCC0wH8husJgY4FPbHsiYyiLxSY8oMDJH7Rl6RQMknbN9oDDHhM9RDFvnGM2MgkbUJzSQB4gtuwygY5mCqGSsA==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.4.tgz", + "integrity": "sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA==", "dev": true, "requires": { - "@babel/compat-data": "^7.15.0", - "@babel/helper-compilation-targets": "^7.15.4", + "@babel/compat-data": "^7.16.4", + "@babel/helper-compilation-targets": "^7.16.3", "@babel/helper-plugin-utils": "^7.14.5", "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.15.4", - "@babel/plugin-proposal-async-generator-functions": "^7.15.8", - "@babel/plugin-proposal-class-properties": "^7.14.5", - "@babel/plugin-proposal-class-static-block": "^7.15.4", - "@babel/plugin-proposal-dynamic-import": "^7.14.5", - "@babel/plugin-proposal-export-namespace-from": "^7.14.5", - "@babel/plugin-proposal-json-strings": "^7.14.5", - "@babel/plugin-proposal-logical-assignment-operators": "^7.14.5", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5", - "@babel/plugin-proposal-numeric-separator": "^7.14.5", - "@babel/plugin-proposal-object-rest-spread": "^7.15.6", - "@babel/plugin-proposal-optional-catch-binding": "^7.14.5", - "@babel/plugin-proposal-optional-chaining": "^7.14.5", - "@babel/plugin-proposal-private-methods": "^7.14.5", - "@babel/plugin-proposal-private-property-in-object": "^7.15.4", - "@babel/plugin-proposal-unicode-property-regex": "^7.14.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-async-generator-functions": "^7.16.4", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-class-static-block": "^7.16.0", + "@babel/plugin-proposal-dynamic-import": "^7.16.0", + "@babel/plugin-proposal-export-namespace-from": "^7.16.0", + "@babel/plugin-proposal-json-strings": "^7.16.0", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-object-rest-spread": "^7.16.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-proposal-private-property-in-object": "^7.16.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.0", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", @@ -15830,44 +15677,44 @@ "@babel/plugin-syntax-optional-chaining": "^7.8.3", "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.14.5", - "@babel/plugin-transform-async-to-generator": "^7.14.5", - "@babel/plugin-transform-block-scoped-functions": "^7.14.5", - "@babel/plugin-transform-block-scoping": "^7.15.3", - "@babel/plugin-transform-classes": "^7.15.4", - "@babel/plugin-transform-computed-properties": "^7.14.5", - "@babel/plugin-transform-destructuring": "^7.14.7", - "@babel/plugin-transform-dotall-regex": "^7.14.5", - "@babel/plugin-transform-duplicate-keys": "^7.14.5", - "@babel/plugin-transform-exponentiation-operator": "^7.14.5", - "@babel/plugin-transform-for-of": "^7.15.4", - "@babel/plugin-transform-function-name": "^7.14.5", - "@babel/plugin-transform-literals": "^7.14.5", - "@babel/plugin-transform-member-expression-literals": "^7.14.5", - "@babel/plugin-transform-modules-amd": "^7.14.5", - "@babel/plugin-transform-modules-commonjs": "^7.15.4", - "@babel/plugin-transform-modules-systemjs": "^7.15.4", - "@babel/plugin-transform-modules-umd": "^7.14.5", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.14.9", - "@babel/plugin-transform-new-target": "^7.14.5", - "@babel/plugin-transform-object-super": "^7.14.5", - "@babel/plugin-transform-parameters": "^7.15.4", - "@babel/plugin-transform-property-literals": "^7.14.5", - "@babel/plugin-transform-regenerator": "^7.14.5", - "@babel/plugin-transform-reserved-words": "^7.14.5", - "@babel/plugin-transform-shorthand-properties": "^7.14.5", - "@babel/plugin-transform-spread": "^7.15.8", - "@babel/plugin-transform-sticky-regex": "^7.14.5", - "@babel/plugin-transform-template-literals": "^7.14.5", - "@babel/plugin-transform-typeof-symbol": "^7.14.5", - "@babel/plugin-transform-unicode-escapes": "^7.14.5", - "@babel/plugin-transform-unicode-regex": "^7.14.5", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.15.6", - "babel-plugin-polyfill-corejs2": "^0.2.2", - "babel-plugin-polyfill-corejs3": "^0.2.5", - "babel-plugin-polyfill-regenerator": "^0.2.2", - "core-js-compat": "^3.16.0", + "@babel/plugin-transform-arrow-functions": "^7.16.0", + "@babel/plugin-transform-async-to-generator": "^7.16.0", + "@babel/plugin-transform-block-scoped-functions": "^7.16.0", + "@babel/plugin-transform-block-scoping": "^7.16.0", + "@babel/plugin-transform-classes": "^7.16.0", + "@babel/plugin-transform-computed-properties": "^7.16.0", + "@babel/plugin-transform-destructuring": "^7.16.0", + "@babel/plugin-transform-dotall-regex": "^7.16.0", + "@babel/plugin-transform-duplicate-keys": "^7.16.0", + "@babel/plugin-transform-exponentiation-operator": "^7.16.0", + "@babel/plugin-transform-for-of": "^7.16.0", + "@babel/plugin-transform-function-name": "^7.16.0", + "@babel/plugin-transform-literals": "^7.16.0", + "@babel/plugin-transform-member-expression-literals": "^7.16.0", + "@babel/plugin-transform-modules-amd": "^7.16.0", + "@babel/plugin-transform-modules-commonjs": "^7.16.0", + "@babel/plugin-transform-modules-systemjs": "^7.16.0", + "@babel/plugin-transform-modules-umd": "^7.16.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0", + "@babel/plugin-transform-new-target": "^7.16.0", + "@babel/plugin-transform-object-super": "^7.16.0", + "@babel/plugin-transform-parameters": "^7.16.3", + "@babel/plugin-transform-property-literals": "^7.16.0", + "@babel/plugin-transform-regenerator": "^7.16.0", + "@babel/plugin-transform-reserved-words": "^7.16.0", + "@babel/plugin-transform-shorthand-properties": "^7.16.0", + "@babel/plugin-transform-spread": "^7.16.0", + "@babel/plugin-transform-sticky-regex": "^7.16.0", + "@babel/plugin-transform-template-literals": "^7.16.0", + "@babel/plugin-transform-typeof-symbol": "^7.16.0", + "@babel/plugin-transform-unicode-escapes": "^7.16.0", + "@babel/plugin-transform-unicode-regex": "^7.16.0", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.0", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.4.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.19.1", "semver": "^6.3.0" } }, @@ -15885,54 +15732,54 @@ } }, "@babel/runtime": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.4.tgz", - "integrity": "sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.3.tgz", + "integrity": "sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ==", "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/standalone": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/standalone/-/standalone-7.15.8.tgz", - "integrity": "sha512-EF2uQLeuwflnPRGetWH2Z400ITOSK7YbkXIKxY91EWSiOJ8xsbupT3sx3sFRwVyQgjsHSILFDzLcSo/rGspLhQ==", + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/standalone/-/standalone-7.16.4.tgz", + "integrity": "sha512-FDRLwjeQfPm5jaHNuB+vwNyGCp24Ah3kEsbLzKmh0eSru+QCr4DmjgbRPoz71AwXLVtXU+l/i7MlVlIj5XO7Gw==", "dev": true }, "@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", "dev": true, "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" } }, "@babel/traverse": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", - "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4", + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.3.tgz", + "integrity": "sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.3", + "@babel/types": "^7.16.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.14.9", + "@babel/helper-validator-identifier": "^7.15.7", "to-fast-properties": "^2.0.0" } }, @@ -16043,9 +15890,9 @@ } }, "@humanwhocodes/object-schema": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", - "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, "@intlify/core-base": { @@ -16620,16 +16467,16 @@ } }, "@mapbox/node-pre-gyp": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.6.tgz", - "integrity": "sha512-qK1ECws8UxuPqOA8F5LFD90vyVU33W7N3hGfgsOVfrJaRVc8McC3JClTDHpeSbL9CBrOHly/4GsNPAvIgNZE+g==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.7.tgz", + "integrity": "sha512-PplSvl4pJ5N3BkVjAdDzpPhVUPdC73JgttkR+LnBx2OORC1GCQsBjUeEuipf9uOaAM1SbxcdZFfR3KDTKm2S0A==", "requires": { "detect-libc": "^1.0.3", "https-proxy-agent": "^5.0.0", "make-dir": "^3.1.0", "node-fetch": "^2.6.5", "nopt": "^5.0.0", - "npmlog": "^5.0.1", + "npmlog": "^6.0.0", "rimraf": "^3.0.2", "semver": "^7.3.5", "tar": "^6.1.11" @@ -16707,9 +16554,9 @@ } }, "@sinonjs/fake-timers": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz", - "integrity": "sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", "dev": true, "requires": { "@sinonjs/commons": "^1.7.0" @@ -16790,9 +16637,9 @@ } }, "@types/body-parser": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.1.tgz", - "integrity": "sha512-a6bTJ21vFOGIkwM0kzh9Yr89ziVxq4vYH2fQ6N8AeipEzai/cFK6aGMArIkUeIdRIgpwQa+2bXiLuUJCpSf2Cg==", + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", "requires": { "@types/connect": "*", "@types/node": "*" @@ -16859,9 +16706,9 @@ } }, "@types/express-serve-static-core": { - "version": "4.17.24", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.24.tgz", - "integrity": "sha512-3UJuW+Qxhzwjq3xhwXm2onQcFHn76frIYVbTu+kn24LFxI+dEhdfISDFovPB8VpEgW8oQCTpRuCe+0zJxB7NEA==", + "version": "4.17.25", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.25.tgz", + "integrity": "sha512-OUJIVfRMFijZukGGwTpKNFprqCCXk5WjNGvUgB/CxxBR40QWSjsNK86+yvGKlCOGc7sbwfHLaXhkG+NsytwBaQ==", "requires": { "@types/node": "*", "@types/qs": "*", @@ -16912,9 +16759,9 @@ } }, "@types/jquery": { - "version": "3.5.8", - "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.8.tgz", - "integrity": "sha512-cXk6NwqjDYg+UI9p2l3x0YmPa4m7RrXqmbK4IpVVpRJiYXU/QTo+UZrn54qfE1+9Gao4qpYqUnxm5ZCy2FTXAw==", + "version": "3.5.9", + "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.9.tgz", + "integrity": "sha512-B8pDk+sH/tSv/HKdx6EQER6BfUOb2GtKs0LOmozziS4h7cbe8u/eYySfUAeTwD+J09SqV3man7AMWIA5mgzCBA==", "dev": true, "requires": { "@types/sizzle": "*" @@ -16949,9 +16796,9 @@ } }, "@types/lodash": { - "version": "4.14.176", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.176.tgz", - "integrity": "sha512-xZmuPTa3rlZoIbtDUyJKZQimJV3bxCmzMIO2c9Pz9afyDro6kr7R79GwcB6mRhuoPmV2p1Vb66WOJH7F886WKQ==" + "version": "4.14.177", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.177.tgz", + "integrity": "sha512-0fDwydE2clKe9MNfvXHBHF9WEahRuj+msTuQqOmAApNORFvhMYZKNGGJdCzuhheVjMps/ti0Ak/iJPACMaevvw==" }, "@types/mdast": { "version": "3.0.10", @@ -16974,9 +16821,9 @@ "dev": true }, "@types/node": { - "version": "16.11.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.6.tgz", - "integrity": "sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==" + "version": "16.11.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.9.tgz", + "integrity": "sha512-MKmdASMf3LtPzwLyRrFjtFFZ48cMf8jmX5VRYrDQiJa8Ybu5VAmkqBWqKU8fdCwD8ysw4mQ9nrEHvzg6gunR7A==" }, "@types/normalize-package-data": { "version": "2.4.1", @@ -16991,9 +16838,9 @@ "dev": true }, "@types/prettier": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.1.tgz", - "integrity": "sha512-Fo79ojj3vdEZOHg3wR9ksAMRz4P3S5fDB5e/YWZiFnyFQI1WY2Vftu9XoXVVtJfxB7Bpce/QTqWSSntkz2Znrw==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.2.tgz", + "integrity": "sha512-ekoj4qOQYp7CvjX8ZDBgN86w3MqQhLE1hczEJbEIjgFEumDy+na/4AJAbLXfgEWFNB2pKadM5rPFtuSGMWK7xA==", "dev": true }, "@types/qs": { @@ -17059,16 +16906,24 @@ } }, "@vitejs/plugin-legacy": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-legacy/-/plugin-legacy-1.6.2.tgz", - "integrity": "sha512-p5Bv/827WUpVN2m95ZYXzmjE3AblFE4CHasVoZ7dIwOPlyNcpg70SehEi5AWqyC0E7C1rHD8Nju9rWoV9uBLiw==", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-legacy/-/plugin-legacy-1.6.3.tgz", + "integrity": "sha512-YivdG6gT91/wjFL6woTwVRgK9KHrju8GwXwgv5FdfAVo0GK0FK4V+YEobmDKRcOMKXQ1U5awY5HqbPIsoJalKQ==", "dev": true, "requires": { - "@babel/standalone": "^7.15.7", - "core-js": "^3.18.1", + "@babel/standalone": "^7.16.4", + "core-js": "^3.19.1", "magic-string": "^0.25.7", "regenerator-runtime": "^0.13.9", - "systemjs": "^6.10.3" + "systemjs": "^6.11.0" + }, + "dependencies": { + "core-js": { + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.19.1.tgz", + "integrity": "sha512-Tnc7E9iKd/b/ff7GFbhwPVzJzPztGrChB8X8GLqoYGdEOG8IpLnK1xPyo3ZoO3HsK6TodJS58VGPOxA+hLHQMg==", + "dev": true + } } }, "@vitejs/plugin-vue": { @@ -17079,12 +16934,12 @@ "requires": {} }, "@vue/compiler-core": { - "version": "3.2.20", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.20.tgz", - "integrity": "sha512-vcEXlKXoPwBXFP5aUTHN9GTZaDfwCofa9Yu9bbW2C5O/QSa9Esdt7OG4+0RRd3EHEMxUvEdj4RZrd/KpQeiJbA==", + "version": "3.2.22", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.22.tgz", + "integrity": "sha512-uAkovrVeTcjzpiM4ECmVaMrv/bjdgAaLzvjcGqQPBEyUrcqsCgccT9fHJ/+hWVGhyMahmBwLqcn4guULNx7sdw==", "requires": { "@babel/parser": "^7.15.0", - "@vue/shared": "3.2.20", + "@vue/shared": "3.2.22", "estree-walker": "^2.0.2", "source-map": "^0.6.1" }, @@ -17097,25 +16952,25 @@ } }, "@vue/compiler-dom": { - "version": "3.2.20", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.20.tgz", - "integrity": "sha512-QnI77ec/JtV7R0YBbcVayYTDCRcI9OCbxiUQK6izVyqQO0658n0zQuoNwe+bYgtqnvGAIqTR3FShTd5y4oOjdg==", + "version": "3.2.22", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.22.tgz", + "integrity": "sha512-VZdsw/VuO1ODs8K7NQwnMQzKITDkIFlYYC03SVnunuf6eNRxBPEonSyqbWNoo6qNaHAEBTG6VVcZC5xC9bAx1g==", "requires": { - "@vue/compiler-core": "3.2.20", - "@vue/shared": "3.2.20" + "@vue/compiler-core": "3.2.22", + "@vue/shared": "3.2.22" } }, "@vue/compiler-sfc": { - "version": "3.2.20", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.20.tgz", - "integrity": "sha512-03aZo+6tQKiFLfunHKSPZvdK4Jsn/ftRCyaro8AQIWkuxJbvSosbKK6HTTn+D2c3nPScG155akJoxKENw7rftQ==", + "version": "3.2.22", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.22.tgz", + "integrity": "sha512-tWRQ5ge1tsTDhUwHgueicKJ8rYm6WUVAPTaIpFW3GSwZKcOEJ2rXdfkHFShNVGupeRALz2ET2H84OL0GeRxY0A==", "requires": { "@babel/parser": "^7.15.0", - "@vue/compiler-core": "3.2.20", - "@vue/compiler-dom": "3.2.20", - "@vue/compiler-ssr": "3.2.20", - "@vue/ref-transform": "3.2.20", - "@vue/shared": "3.2.20", + "@vue/compiler-core": "3.2.22", + "@vue/compiler-dom": "3.2.22", + "@vue/compiler-ssr": "3.2.22", + "@vue/ref-transform": "3.2.22", + "@vue/shared": "3.2.22", "estree-walker": "^2.0.2", "magic-string": "^0.25.7", "postcss": "^8.1.10", @@ -17130,71 +16985,71 @@ } }, "@vue/compiler-ssr": { - "version": "3.2.20", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.20.tgz", - "integrity": "sha512-rzzVVYivm+EjbfiGQvNeyiYZWzr6Hkej97RZLZvcumacQlnKv9176Xo9rRyeWwFbBlxmtNdrVMslRXtipMXk2w==", + "version": "3.2.22", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.22.tgz", + "integrity": "sha512-Cl6aoLJtXzzBkk1sKod8S0WBJLts3+ugVC91d22gGpbkw/64WnF12tOZi7Rg54PPLi1NovqyNWPsLH/SAFcu+w==", "requires": { - "@vue/compiler-dom": "3.2.20", - "@vue/shared": "3.2.20" + "@vue/compiler-dom": "3.2.22", + "@vue/shared": "3.2.22" } }, "@vue/devtools-api": { - "version": "6.0.0-beta.19", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.0.0-beta.19.tgz", - "integrity": "sha512-ObzQhgkoVeoyKv+e8+tB/jQBL2smtk/NmC9OmFK8UqdDpoOdv/Kf9pyDWL+IFyM7qLD2C75rszJujvGSPSpGlw==" + "version": "6.0.0-beta.20.1", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.0.0-beta.20.1.tgz", + "integrity": "sha512-R2rfiRY+kZugzWh9ZyITaovx+jpU4vgivAEAiz80kvh3yviiTU3CBuGuyWpSwGz9/C7TkSWVM/FtQRGlZ16n8Q==" }, "@vue/reactivity": { - "version": "3.2.20", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.20.tgz", - "integrity": "sha512-nSmoLojUTk+H8HNTAkrUduB4+yIUBK2HPihJo2uXVSH4Spry6oqN6lFzE5zpLK+F27Sja+UqR9R1+/kIOsHV5w==", + "version": "3.2.22", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.22.tgz", + "integrity": "sha512-xNkLAItjI0xB+lFeDgKCrSItmrHTaAzSnt8LmdSCPQnDyarmzbi/u4ESQnckWvlL7lSRKiEaOvblaNyqAa7OnQ==", "requires": { - "@vue/shared": "3.2.20" + "@vue/shared": "3.2.22" } }, "@vue/ref-transform": { - "version": "3.2.20", - "resolved": "https://registry.npmjs.org/@vue/ref-transform/-/ref-transform-3.2.20.tgz", - "integrity": "sha512-Y42d3PGlYZ1lXcF3dbd3+qU/C/a3wYEZ949fyOI5ptzkjDWlkfU6vn74fmOjsLjEcjs10BXK2qO99FqQIK2r1Q==", + "version": "3.2.22", + "resolved": "https://registry.npmjs.org/@vue/ref-transform/-/ref-transform-3.2.22.tgz", + "integrity": "sha512-qalVWbq5xWWxLZ0L9OroBg/JZhzavQuCcDXblfErxyDEH6Xc5gIJ4feo1SVCICFzhAUgLgQTdSFLpgjBawbFpw==", "requires": { "@babel/parser": "^7.15.0", - "@vue/compiler-core": "3.2.20", - "@vue/shared": "3.2.20", + "@vue/compiler-core": "3.2.22", + "@vue/shared": "3.2.22", "estree-walker": "^2.0.2", "magic-string": "^0.25.7" } }, "@vue/runtime-core": { - "version": "3.2.20", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.20.tgz", - "integrity": "sha512-d1xfUGhZPfiZzAN7SatStD4vRtT8deJSXib2+Cz3x0brjMWKxe32asQc154FF1E2fFgMCHtnfd4A90bQEzV4GQ==", + "version": "3.2.22", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.22.tgz", + "integrity": "sha512-e7WOC55wmHPvmoVUk9VBe/Z9k5bJfWJfVIlkUkiADJn0bOgQD29oh/GS14Kb3aEJXIHLI17Em6+HxNut1sIh7Q==", "requires": { - "@vue/reactivity": "3.2.20", - "@vue/shared": "3.2.20" + "@vue/reactivity": "3.2.22", + "@vue/shared": "3.2.22" } }, "@vue/runtime-dom": { - "version": "3.2.20", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.20.tgz", - "integrity": "sha512-4TCvZMLhESWCFHFYgqN4QmMA/onnINAlUovhopjlS8ST27G1A8Z0tyxPzLoXLa+b5JrOpbMPheEMPvdKExTJig==", + "version": "3.2.22", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.22.tgz", + "integrity": "sha512-w7VHYJoliLRTLc5beN77wxuOjla4v9wr2FF22xpZFYBmH4U1V7HkYhoHc1BTuNghI15CXT1tNIMhibI1nrQgdw==", "requires": { - "@vue/runtime-core": "3.2.20", - "@vue/shared": "3.2.20", + "@vue/runtime-core": "3.2.22", + "@vue/shared": "3.2.22", "csstype": "^2.6.8" } }, "@vue/server-renderer": { - "version": "3.2.20", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.20.tgz", - "integrity": "sha512-viIbZGep9XabnrRcaxWIi00cOh1x21QYm2upIL5W0zqzTJ54VdTzpI+zi1osNp+VfRQDTHpV2U7H3Kn4ljYJvg==", + "version": "3.2.22", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.22.tgz", + "integrity": "sha512-jCwbQgKPXiXoH9VS9F7K+gyEvEMrjutannwEZD1R8fQ9szmOTqC+RRbIY3Uf2ibQjZtZ8DV9a4FjxICvd9zZlQ==", "requires": { - "@vue/compiler-ssr": "3.2.20", - "@vue/shared": "3.2.20" + "@vue/compiler-ssr": "3.2.22", + "@vue/shared": "3.2.22" } }, "@vue/shared": { - "version": "3.2.20", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.20.tgz", - "integrity": "sha512-FbpX+hD5BvXCQerEYO7jtAGHlhAkhTQ4KIV73kmLWNlawWhTiVuQxizgVb0BOkX5oG9cIRZ42EG++d/k/Efp0w==" + "version": "3.2.22", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.22.tgz", + "integrity": "sha512-qWVav014mpjEtbWbEgl0q9pEyrrIySKum8UVYjwhC6njrKzknLZPvfuYdQyVbApsqr94tf/3dP4pCuZmmjdCWQ==" }, "abab": { "version": "2.0.5", @@ -17283,8 +17138,7 @@ "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "ansi-styles": { "version": "3.2.1", @@ -17356,9 +17210,9 @@ "dev": true }, "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", "optional": true, "requires": { "safer-buffer": "~2.1.0" @@ -17567,33 +17421,33 @@ } }, "babel-plugin-polyfill-corejs2": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz", - "integrity": "sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz", + "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==", "dev": true, "requires": { "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.2.2", + "@babel/helper-define-polyfill-provider": "^0.3.0", "semver": "^6.1.1" } }, "babel-plugin-polyfill-corejs3": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.5.tgz", - "integrity": "sha512-ninF5MQNwAX9Z7c9ED+H2pGt1mXdP4TqzlHKyPIYmJIYz0N+++uwdM7RnJukklhzJ54Q84vA4ZJkgs7lu5vqcw==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz", + "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.2.2", - "core-js-compat": "^3.16.2" + "@babel/helper-define-polyfill-provider": "^0.3.0", + "core-js-compat": "^3.18.0" } }, "babel-plugin-polyfill-regenerator": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz", - "integrity": "sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz", + "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.2.2" + "@babel/helper-define-polyfill-provider": "^0.3.0" } }, "babel-plugin-rewire": { @@ -17832,13 +17686,13 @@ "dev": true }, "browserslist": { - "version": "4.17.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.5.tgz", - "integrity": "sha512-I3ekeB92mmpctWBoLXe0d5wPS2cBuRvvW0JyyJHMrk9/HmP2ZjrTboNAZ8iuGqaEIlKguljbQY32OkOJIRrgoA==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.18.1.tgz", + "integrity": "sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001271", - "electron-to-chromium": "^1.3.878", + "caniuse-lite": "^1.0.30001280", + "electron-to-chromium": "^1.3.896", "escalade": "^3.1.1", "node-releases": "^2.0.1", "picocolors": "^1.0.0" @@ -17948,9 +17802,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001272", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001272.tgz", - "integrity": "sha512-DV1j9Oot5dydyH1v28g25KoVm7l8MTxazwuiH3utWiAS6iL/9Nh//TGwqFEeqqN8nnWYQ8HHhUq+o4QPt9kvYw==", + "version": "1.0.30001282", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001282.tgz", + "integrity": "sha512-YhF/hG6nqBEllymSIjLtR2iWDDnChvhnVJqp+vloyt2tEHFG1yBR+ac2B/rOw0qOK0m0lEXU2dv4E/sMk5P9Kg==", "dev": true }, "caseless": { @@ -18057,25 +17911,6 @@ "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^7.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - } } }, "clone-deep": { @@ -18228,12 +18063,12 @@ "dev": true }, "core-js-compat": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.0.tgz", - "integrity": "sha512-R09rKZ56ccGBebjTLZHvzDxhz93YPT37gBm6qUhnwj3Kt7aCjjZWD1injyNbyeFHxNKfeZBSyds6O9n3MKq1sw==", + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.1.tgz", + "integrity": "sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g==", "dev": true, "requires": { - "browserslist": "^4.17.5", + "browserslist": "^4.17.6", "semver": "7.0.0" }, "dependencies": { @@ -18331,9 +18166,9 @@ } }, "csstype": { - "version": "2.6.18", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.18.tgz", - "integrity": "sha512-RSU6Hyeg14am3Ah4VZEmeX8H7kLwEEirXe6aU2IPfKNvhXwTflK5HQRDNI0ypQXoqmm+QPyG2IaPuQE5zMwSIQ==" + "version": "2.6.19", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.19.tgz", + "integrity": "sha512-ZVxXaNy28/k3kJg0Fou5MiYpp88j7H9hLZp8PDC3jV0WFjfH5E9xHb56L0W59cPbKbcHXeP4qyT8PrHp8t6LcQ==" }, "custom-error-instance": { "version": "2.1.1", @@ -18608,9 +18443,9 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "electron-to-chromium": { - "version": "1.3.884", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.884.tgz", - "integrity": "sha512-kOaCAa+biA98PwH5BpCkeUeTL6mCeg8p3Q3OhqzPyqhu/5QUnWAN2wr/3IK8xMQxIV76kfoQpP+Bn/wij/jXrg==", + "version": "1.3.906", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.906.tgz", + "integrity": "sha512-UjoECdcOYIVzWmrbtNnYpPrDuu+RtiO5W08Vdbid9ydGQMSdnqtJUtvOqQEAVQqpoXN9kSW9YnQufvzLQMYQOw==", "dev": true }, "emittery": { @@ -18622,8 +18457,7 @@ "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "encodeurl": { "version": "1.0.2", @@ -18730,146 +18564,146 @@ } }, "esbuild": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.13.10.tgz", - "integrity": "sha512-0NfCsnAh5XatHIx6Cu93wpR2v6opPoOMxONYhaAoZKzGYqAE+INcDeX2wqMdcndvPQdWCuuCmvlnsh0zmbHcSQ==", - "dev": true, - "requires": { - "esbuild-android-arm64": "0.13.10", - "esbuild-darwin-64": "0.13.10", - "esbuild-darwin-arm64": "0.13.10", - "esbuild-freebsd-64": "0.13.10", - "esbuild-freebsd-arm64": "0.13.10", - "esbuild-linux-32": "0.13.10", - "esbuild-linux-64": "0.13.10", - "esbuild-linux-arm": "0.13.10", - "esbuild-linux-arm64": "0.13.10", - "esbuild-linux-mips64le": "0.13.10", - "esbuild-linux-ppc64le": "0.13.10", - "esbuild-netbsd-64": "0.13.10", - "esbuild-openbsd-64": "0.13.10", - "esbuild-sunos-64": "0.13.10", - "esbuild-windows-32": "0.13.10", - "esbuild-windows-64": "0.13.10", - "esbuild-windows-arm64": "0.13.10" + "version": "0.13.15", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.13.15.tgz", + "integrity": "sha512-raCxt02HBKv8RJxE8vkTSCXGIyKHdEdGfUmiYb8wnabnaEmHzyW7DCHb5tEN0xU8ryqg5xw54mcwnYkC4x3AIw==", + "dev": true, + "requires": { + "esbuild-android-arm64": "0.13.15", + "esbuild-darwin-64": "0.13.15", + "esbuild-darwin-arm64": "0.13.15", + "esbuild-freebsd-64": "0.13.15", + "esbuild-freebsd-arm64": "0.13.15", + "esbuild-linux-32": "0.13.15", + "esbuild-linux-64": "0.13.15", + "esbuild-linux-arm": "0.13.15", + "esbuild-linux-arm64": "0.13.15", + "esbuild-linux-mips64le": "0.13.15", + "esbuild-linux-ppc64le": "0.13.15", + "esbuild-netbsd-64": "0.13.15", + "esbuild-openbsd-64": "0.13.15", + "esbuild-sunos-64": "0.13.15", + "esbuild-windows-32": "0.13.15", + "esbuild-windows-64": "0.13.15", + "esbuild-windows-arm64": "0.13.15" } }, "esbuild-android-arm64": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.13.10.tgz", - "integrity": "sha512-1sCdVAq64yMp2Uhlu+97/enFxpmrj31QHtThz7K+/QGjbHa7JZdBdBsZCzWJuntKHZ+EU178tHYkvjaI9z5sGg==", + "version": "0.13.15", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.13.15.tgz", + "integrity": "sha512-m602nft/XXeO8YQPUDVoHfjyRVPdPgjyyXOxZ44MK/agewFFkPa8tUo6lAzSWh5Ui5PB4KR9UIFTSBKh/RrCmg==", "dev": true, "optional": true }, "esbuild-darwin-64": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.13.10.tgz", - "integrity": "sha512-XlL+BYZ2h9cz3opHfFgSHGA+iy/mljBFIRU9q++f9SiBXEZTb4gTW/IENAD1l9oKH0FdO9rUpyAfV+lM4uAxrg==", + "version": "0.13.15", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.13.15.tgz", + "integrity": "sha512-ihOQRGs2yyp7t5bArCwnvn2Atr6X4axqPpEdCFPVp7iUj4cVSdisgvEKdNR7yH3JDjW6aQDw40iQFoTqejqxvQ==", "dev": true, "optional": true }, "esbuild-darwin-arm64": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.10.tgz", - "integrity": "sha512-RZMMqMTyActMrXKkW71IQO8B0tyQm0Bm+ZJQWNaHJchL5LlqazJi7rriwSocP+sKLszHhsyTEBBh6qPdw5g5yQ==", + "version": "0.13.15", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.15.tgz", + "integrity": "sha512-i1FZssTVxUqNlJ6cBTj5YQj4imWy3m49RZRnHhLpefFIh0To05ow9DTrXROTE1urGTQCloFUXTX8QfGJy1P8dQ==", "dev": true, "optional": true }, "esbuild-freebsd-64": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.10.tgz", - "integrity": "sha512-pf4BEN9reF3jvZEZdxljVgOv5JS4kuYFCI78xk+2HWustbLvTP0b9XXfWI/OD0ZLWbyLYZYIA+VbVe4tdAklig==", + "version": "0.13.15", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.15.tgz", + "integrity": "sha512-G3dLBXUI6lC6Z09/x+WtXBXbOYQZ0E8TDBqvn7aMaOCzryJs8LyVXKY4CPnHFXZAbSwkCbqiPuSQ1+HhrNk7EA==", "dev": true, "optional": true }, "esbuild-freebsd-arm64": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.10.tgz", - "integrity": "sha512-j9PUcuNWmlxr4/ry4dK/s6zKh42Jhh/N5qnAAj7tx3gMbkIHW0JBoVSbbgp97p88X9xgKbXx4lG2sJDhDWmsYQ==", + "version": "0.13.15", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.15.tgz", + "integrity": "sha512-KJx0fzEDf1uhNOZQStV4ujg30WlnwqUASaGSFPhznLM/bbheu9HhqZ6mJJZM32lkyfGJikw0jg7v3S0oAvtvQQ==", "dev": true, "optional": true }, "esbuild-linux-32": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.13.10.tgz", - "integrity": "sha512-imtdHG5ru0xUUXuc2ofdtyw0fWlHYXV7JjF7oZHgmn0b+B4o4Nr6ZON3xxoo1IP8wIekW+7b9exIf/MYq0QV7w==", + "version": "0.13.15", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.13.15.tgz", + "integrity": "sha512-ZvTBPk0YWCLMCXiFmD5EUtB30zIPvC5Itxz0mdTu/xZBbbHJftQgLWY49wEPSn2T/TxahYCRDWun5smRa0Tu+g==", "dev": true, "optional": true }, "esbuild-linux-64": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.13.10.tgz", - "integrity": "sha512-O7fzQIH2e7GC98dvoTH0rad5BVLm9yU3cRWfEmryCEIFTwbNEWCEWOfsePuoGOHRtSwoVY1hPc21CJE4/9rWxQ==", + "version": "0.13.15", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.13.15.tgz", + "integrity": "sha512-eCKzkNSLywNeQTRBxJRQ0jxRCl2YWdMB3+PkWFo2BBQYC5mISLIVIjThNtn6HUNqua1pnvgP5xX0nHbZbPj5oA==", "dev": true, "optional": true }, "esbuild-linux-arm": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.13.10.tgz", - "integrity": "sha512-R2Jij4A0K8BcmBehvQeUteQEcf24Y2YZ6mizlNFuJOBPxe3vZNmkZ4mCE7Pf1tbcqA65qZx8J3WSHeGJl9EsJA==", + "version": "0.13.15", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.13.15.tgz", + "integrity": "sha512-wUHttDi/ol0tD8ZgUMDH8Ef7IbDX+/UsWJOXaAyTdkT7Yy9ZBqPg8bgB/Dn3CZ9SBpNieozrPRHm0BGww7W/jA==", "dev": true, "optional": true }, "esbuild-linux-arm64": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.10.tgz", - "integrity": "sha512-bkGxN67S2n0PF4zhh87/92kBTsH2xXLuH6T5omReKhpXdJZF5SVDSk5XU/nngARzE+e6QK6isK060Dr5uobzNw==", + "version": "0.13.15", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.15.tgz", + "integrity": "sha512-bYpuUlN6qYU9slzr/ltyLTR9YTBS7qUDymO8SV7kjeNext61OdmqFAzuVZom+OLW1HPHseBfJ/JfdSlx8oTUoA==", "dev": true, "optional": true }, "esbuild-linux-mips64le": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.10.tgz", - "integrity": "sha512-UDNO5snJYOLWrA2uOUxM/PVbzzh2TR7Zf2i8zCCuFlYgvAb/81XO+Tasp3YAElDpp4VGqqcpBXLtofa9nrnJGA==", + "version": "0.13.15", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.15.tgz", + "integrity": "sha512-KlVjIG828uFPyJkO/8gKwy9RbXhCEUeFsCGOJBepUlpa7G8/SeZgncUEz/tOOUJTcWMTmFMtdd3GElGyAtbSWg==", "dev": true, "optional": true }, "esbuild-linux-ppc64le": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.10.tgz", - "integrity": "sha512-xu6J9rMWu1TcEGuEmoc8gsTrJCEPsf+QtxK4IiUZNde9r4Q4nlRVah4JVZP3hJapZgZJcxsse0XiKXh1UFdOeA==", + "version": "0.13.15", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.15.tgz", + "integrity": "sha512-h6gYF+OsaqEuBjeesTBtUPw0bmiDu7eAeuc2OEH9S6mV9/jPhPdhOWzdeshb0BskRZxPhxPOjqZ+/OqLcxQwEQ==", "dev": true, "optional": true }, "esbuild-netbsd-64": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.10.tgz", - "integrity": "sha512-d+Gr0ScMC2J83Bfx/ZvJHK0UAEMncctwgjRth9d4zppYGLk/xMfFKxv5z1ib8yZpQThafq8aPm8AqmFIJrEesw==", + "version": "0.13.15", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.15.tgz", + "integrity": "sha512-3+yE9emwoevLMyvu+iR3rsa+Xwhie7ZEHMGDQ6dkqP/ndFzRHkobHUKTe+NCApSqG5ce2z4rFu+NX/UHnxlh3w==", "dev": true, "optional": true }, "esbuild-openbsd-64": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.10.tgz", - "integrity": "sha512-OuCYc+bNKumBvxflga+nFzZvxsgmWQW+z4rMGIjM5XIW0nNbGgRc5p/0PSDv0rTdxAmwCpV69fezal0xjrDaaA==", + "version": "0.13.15", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.15.tgz", + "integrity": "sha512-wTfvtwYJYAFL1fSs8yHIdf5GEE4NkbtbXtjLWjM3Cw8mmQKqsg8kTiqJ9NJQe5NX/5Qlo7Xd9r1yKMMkHllp5g==", "dev": true, "optional": true }, "esbuild-sunos-64": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.13.10.tgz", - "integrity": "sha512-gUkgivZK11bD56wDoLsnYrsOHD/zHzzLSdqKcIl3wRMulfHpRBpoX8gL0dbWr+8N9c+1HDdbNdvxSRmZ4RCVwg==", + "version": "0.13.15", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.13.15.tgz", + "integrity": "sha512-lbivT9Bx3t1iWWrSnGyBP9ODriEvWDRiweAs69vI+miJoeKwHWOComSRukttbuzjZ8r1q0mQJ8Z7yUsDJ3hKdw==", "dev": true, "optional": true }, "esbuild-windows-32": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.13.10.tgz", - "integrity": "sha512-C1xJ54E56dGWRaYcTnRy7amVZ9n1/D/D2/qVw7e5EtS7p+Fv/yZxxgqyb1hMGKXgtFYX4jMpU5eWBF/AsYrn+A==", + "version": "0.13.15", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.13.15.tgz", + "integrity": "sha512-fDMEf2g3SsJ599MBr50cY5ve5lP1wyVwTe6aLJsM01KtxyKkB4UT+fc5MXQFn3RLrAIAZOG+tHC+yXObpSn7Nw==", "dev": true, "optional": true }, "esbuild-windows-64": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.13.10.tgz", - "integrity": "sha512-6+EXEXopEs3SvPFAHcps2Krp/FvqXXsOQV33cInmyilb0ZBEQew4MIoZtMIyB3YXoV6//dl3i6YbPrFZaWEinQ==", + "version": "0.13.15", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.13.15.tgz", + "integrity": "sha512-9aMsPRGDWCd3bGjUIKG/ZOJPKsiztlxl/Q3C1XDswO6eNX/Jtwu4M+jb6YDH9hRSUflQWX0XKAfWzgy5Wk54JQ==", "dev": true, "optional": true }, "esbuild-windows-arm64": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.10.tgz", - "integrity": "sha512-xTqM/XKhORo6u9S5I0dNJWEdWoemFjogLUTVLkQMVyUV3ZuMChahVA+bCqKHdyX55pCFxD/8v2fm3/sfFMWN+g==", + "version": "0.13.15", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.15.tgz", + "integrity": "sha512-zzvyCVVpbwQQATaf3IG8mu1IwGEiDxKkYUdA4FpoCHi1KtPa13jeScYDjlW0Qh+ebWzpKfR2ZwvqAQkSWNcKjA==", "dev": true, "optional": true }, @@ -19520,9 +19354,9 @@ } }, "find-process": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/find-process/-/find-process-1.4.5.tgz", - "integrity": "sha512-v11rJYYISUWn+s8qZzgGnBvlzRKf3bOtlGFM8H0kw56lGQtOmLuLCzuclA5kehA2j7S5sioOWdI4woT3jDavAw==", + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/find-process/-/find-process-1.4.7.tgz", + "integrity": "sha512-/U4CYp1214Xrp3u3Fqr9yNynUrr5Le4y0SsJh2lMDDSbpwYSz3M2SMWQC+wqcx79cN8PQtHQIL8KnuY9M66fdg==", "dev": true, "requires": { "chalk": "^4.0.0", @@ -19602,15 +19436,15 @@ } }, "flatted": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", - "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz", + "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==", "dev": true }, "follow-redirects": { - "version": "1.14.4", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz", - "integrity": "sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==" + "version": "1.14.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.5.tgz", + "integrity": "sha512-wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA==" }, "for-in": { "version": "1.0.2", @@ -19697,34 +19531,19 @@ "dev": true }, "gauge": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.1.tgz", - "integrity": "sha512-6STz6KdQgxO4S/ko+AbjlFGGdGcknluoqU+79GOFCDqqyYj5OanQf9AjxwN0jCidtT+ziPMmPSt9E4hfQ0CwIQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.0.tgz", + "integrity": "sha512-F8sU45yQpjQjxKkm1UOAhf0U/O0aFt//Fl7hsrNVto+patMHjs7dPI9mFOGUKbhrgKm0S3EjW3scMFuQmWSROw==", "requires": { + "ansi-regex": "^5.0.1", "aproba": "^1.0.3 || ^2.0.0", "color-support": "^1.1.2", "console-control-strings": "^1.0.0", "has-unicode": "^2.0.1", - "object-assign": "^4.1.1", "signal-exit": "^3.0.0", - "string-width": "^1.0.1 || ^2.0.0", - "strip-ansi": "^3.0.1 || ^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", "wide-align": "^1.1.2" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - } } }, "gensync": { @@ -19857,9 +19676,9 @@ }, "dependencies": { "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", + "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", "dev": true } } @@ -20003,9 +19822,9 @@ } }, "http-graceful-shutdown": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/http-graceful-shutdown/-/http-graceful-shutdown-3.1.4.tgz", - "integrity": "sha512-d6E0hjPhHpKtxY+UuocogYuGUyuH+kOwzTYlAU+FGSTYoIUMyaIVKAn/Tmlqp82sE+Ls5ekOaqMiBlGhBsyT7g==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/http-graceful-shutdown/-/http-graceful-shutdown-3.1.5.tgz", + "integrity": "sha512-DTydrvfHuqSw6cPFgYJEcex5BUsKxvXsbgkuCwlijaHebYcC6iEcPFgkJwucqhyu5pARGDoIPYE1yG06sUotfQ==", "requires": { "debug": "^4.3.1" } @@ -20206,9 +20025,9 @@ "dev": true }, "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, "is-generator-fn": { "version": "2.1.0", @@ -21691,9 +21510,9 @@ } }, "camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.1.tgz", + "integrity": "sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA==", "dev": true }, "chalk": { @@ -21903,9 +21722,9 @@ }, "dependencies": { "acorn": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", - "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz", + "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==", "dev": true }, "form-data": { @@ -22047,9 +21866,9 @@ "dev": true }, "knex": { - "version": "0.95.12", - "resolved": "https://registry.npmjs.org/knex/-/knex-0.95.12.tgz", - "integrity": "sha512-/fdau7F372J/rZzMFjYo1trHs67kB13YtGErOe94Ev+OdilNEI2ddSE3O4Hb3EfgRtJUbhZWxp8T4PpDMtnjSg==", + "version": "0.95.14", + "resolved": "https://registry.npmjs.org/knex/-/knex-0.95.14.tgz", + "integrity": "sha512-j4qLjWySrC/JRRVtOpoR2LcS1yBOsd7Krc6mEukPvmTDX/w11pD52Pq9FYR56/kLXGeAV8jFdWBjsZFi1mscWg==", "requires": { "colorette": "2.0.16", "commander": "^7.1.0", @@ -22115,9 +21934,9 @@ } }, "lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, "locate-path": { @@ -22179,12 +21998,6 @@ "lodash._basetostring": "~4.12.0" } }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, "lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -22494,16 +22307,16 @@ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" }, "mime-db": { - "version": "1.50.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz", - "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==" + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==" }, "mime-types": { - "version": "2.1.33", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz", - "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==", + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", "requires": { - "mime-db": "1.50.0" + "mime-db": "1.51.0" } }, "mimic-fn": { @@ -22623,9 +22436,9 @@ "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==" }, "node-fetch": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.5.tgz", - "integrity": "sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ==", + "version": "2.6.6", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.6.tgz", + "integrity": "sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA==", "requires": { "whatwg-url": "^5.0.0" }, @@ -22876,13 +22689,13 @@ } }, "npmlog": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", - "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.0.tgz", + "integrity": "sha512-03ppFRGlsyUaQFbGC2C8QWJN/C/K7PsfyD9aQdhVKAQIH4sQBc8WASqFBP7O+Ut4d2oo5LoeoboB3cGdBZSp6Q==", "requires": { "are-we-there-yet": "^2.0.0", "console-control-strings": "^1.1.0", - "gauge": "^3.0.0", + "gauge": "^4.0.0", "set-blocking": "^2.0.0" } }, @@ -23568,6 +23381,11 @@ "locate-path": "^3.0.0" } }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, "locate-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", @@ -23804,9 +23622,9 @@ }, "dependencies": { "@types/node": { - "version": "14.17.32", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.32.tgz", - "integrity": "sha512-JcII3D5/OapPGx+eJ+Ik1SQGyt6WvuqdRfh9jUwL6/iHGjmyOriBDciBUu7lEIBTL2ijxwrR70WUnw5AEDmFvQ==" + "version": "14.17.34", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.34.tgz", + "integrity": "sha512-USUftMYpmuMzeWobskoPfzDi+vkpe0dvcOBRNOscFrGxVp4jomnRxWuVohgqBow2xyIPC0S3gjxV/5079jhmDg==" } } }, @@ -24063,56 +23881,25 @@ } }, "rollup": { - "version": "2.58.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.58.3.tgz", - "integrity": "sha512-ei27MSw1KhRur4p87Q0/Va2NAYqMXOX++FNEumMBcdreIRLURKy+cE2wcDJKBn0nfmhP2ZGrJkP1XPO+G8FJQw==", + "version": "2.60.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.60.1.tgz", + "integrity": "sha512-akwfnpjY0rXEDSn1UTVfKXJhPsEBu+imi1gqBA1ZkHGydUnkV/fWCC90P7rDaLEW8KTwBcS1G3N4893Ndz+jwg==", "dev": true, "requires": { "fsevents": "~2.3.2" } }, "rtlcss": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-3.4.0.tgz", - "integrity": "sha512-pOSLxwmJTjqcnlFIezpCGyhRoPKIwXj78wJfBI8iZw7gZGVzjT/T5QcaimRComsPanMSV0hzmI5o+oWIP3nNBA==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-3.5.0.tgz", + "integrity": "sha512-wzgMaMFHQTnyi9YOwsx9LjOxYXJPzS8sYnFaKm6R5ysvTkwzHiB0vxnbHwchHQT65PTdBjDG21/kQBWI7q9O7A==", "requires": { - "chalk": "^4.1.0", "find-up": "^5.0.0", - "mkdirp": "^1.0.4", - "postcss": "^8.2.4", + "picocolors": "^1.0.0", + "postcss": "^8.3.11", "strip-json-comments": "^3.1.1" }, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, "find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -24122,11 +23909,6 @@ "path-exists": "^4.0.0" } }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, "locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -24150,14 +23932,6 @@ "requires": { "p-limit": "^3.0.2" } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } } } }, @@ -24333,9 +24107,9 @@ "dev": true }, "signal-exit": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz", - "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==" + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", + "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==" }, "sisteransi": { "version": "1.0.5", @@ -24383,12 +24157,6 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true } } }, @@ -24409,9 +24177,9 @@ } }, "socket.io-adapter": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.3.2.tgz", - "integrity": "sha512-PBZpxUPYjmoogY0aoaTmo1643JelsaS1CiAwNjRVdrI0X9Seuc19Y2Wife8k88avW6haG8cznvwbubAZwH4Mtg==" + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.3.3.tgz", + "integrity": "sha512-Qd/iwn3VskrpNO60BeRyCyr8ZWw9CPZyitW4AQwmRZ8zCiyDiL+znRnWX6tDHXnWn1sJrM1+b6Mn6wEDJJ4aYQ==" }, "socket.io-client": { "version": "4.2.0", @@ -24454,9 +24222,9 @@ "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==" }, "source-map-support": { - "version": "0.5.20", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz", - "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==", + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -24514,9 +24282,9 @@ } }, "spdx-license-ids": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz", - "integrity": "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==", + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", "dev": true }, "specificity": { @@ -24596,34 +24364,19 @@ } }, "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - } + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" } }, "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "requires": { "ansi-regex": "^5.0.1" } @@ -24783,15 +24536,9 @@ "dev": true }, "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", + "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", "dev": true }, "kind-of": { @@ -24837,17 +24584,6 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -24972,13 +24708,12 @@ "dev": true }, "table": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.2.tgz", - "integrity": "sha512-UFZK67uvyNivLeQbVtkiUs8Uuuxv24aSL4/Vil2PJVtMgU8Lx0CYkP12uCGa3kjyQzOSgV1+z9Wkb82fCGsO0g==", + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.3.tgz", + "integrity": "sha512-5DkIxeA7XERBqMwJq0aHZOdMadBx4e6eDoFRuyT5VR82J0Ycg2DwM6GfA/EQAhJ+toRTaS1lIdSQCqgrmhPnlw==", "dev": true, "requires": { "ajv": "^8.0.1", - "lodash.clonedeep": "^4.5.0", "lodash.truncate": "^4.4.2", "slice-ansi": "^4.0.0", "string-width": "^4.2.3", @@ -24986,9 +24721,9 @@ }, "dependencies": { "ajv": { - "version": "8.6.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.3.tgz", - "integrity": "sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==", + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", + "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -24997,28 +24732,11 @@ "uri-js": "^4.2.2" } }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, "json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } } } }, @@ -25501,9 +25219,9 @@ } }, "vite": { - "version": "2.6.13", - "resolved": "https://registry.npmjs.org/vite/-/vite-2.6.13.tgz", - "integrity": "sha512-+tGZ1OxozRirTudl4M3N3UTNJOlxdVo/qBl2IlDEy/ZpTFcskp+k5ncNjayR3bRYTCbqSOFz2JWGN1UmuDMScA==", + "version": "2.6.14", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.6.14.tgz", + "integrity": "sha512-2HA9xGyi+EhY2MXo0+A2dRsqsAG3eFNEVIo12olkWhOmc8LfiM+eMdrXf+Ruje9gdXgvSqjLI9freec1RUM5EA==", "dev": true, "requires": { "esbuild": "^0.13.2", @@ -25514,15 +25232,15 @@ } }, "vue": { - "version": "3.2.20", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.20.tgz", - "integrity": "sha512-81JjEP4OGk9oO8+CU0h2nFPGgJBm9mNa3kdCX2k6FuRdrWrC+CNe+tOnuIeTg8EWwQuI+wwdra5Q7vSzp7p4Iw==", + "version": "3.2.22", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.22.tgz", + "integrity": "sha512-KD5nZpXVZquOC6926Xnp3zOvswrUyO9Rya7ZUoxWFQEjFDW4iACtwzubRB4Um2Om9kj6CaJOqAVRDSFlqLpdgw==", "requires": { - "@vue/compiler-dom": "3.2.20", - "@vue/compiler-sfc": "3.2.20", - "@vue/runtime-dom": "3.2.20", - "@vue/server-renderer": "3.2.20", - "@vue/shared": "3.2.20" + "@vue/compiler-dom": "3.2.22", + "@vue/compiler-sfc": "3.2.22", + "@vue/runtime-dom": "3.2.22", + "@vue/server-renderer": "3.2.22", + "@vue/shared": "3.2.22" } }, "vue-chart-3": { @@ -25538,6 +25256,45 @@ "vue-demi": "^0.10.1" }, "dependencies": { + "@vue/reactivity": { + "version": "3.2.20", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.20.tgz", + "integrity": "sha512-nSmoLojUTk+H8HNTAkrUduB4+yIUBK2HPihJo2uXVSH4Spry6oqN6lFzE5zpLK+F27Sja+UqR9R1+/kIOsHV5w==", + "requires": { + "@vue/shared": "3.2.20" + } + }, + "@vue/runtime-core": { + "version": "3.2.20", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.20.tgz", + "integrity": "sha512-d1xfUGhZPfiZzAN7SatStD4vRtT8deJSXib2+Cz3x0brjMWKxe32asQc154FF1E2fFgMCHtnfd4A90bQEzV4GQ==", + "requires": { + "@vue/reactivity": "3.2.20", + "@vue/shared": "3.2.20" + } + }, + "@vue/runtime-dom": { + "version": "3.2.20", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.20.tgz", + "integrity": "sha512-4TCvZMLhESWCFHFYgqN4QmMA/onnINAlUovhopjlS8ST27G1A8Z0tyxPzLoXLa+b5JrOpbMPheEMPvdKExTJig==", + "requires": { + "@vue/runtime-core": "3.2.20", + "@vue/shared": "3.2.20", + "csstype": "^2.6.8" + }, + "dependencies": { + "csstype": { + "version": "2.6.19", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.19.tgz", + "integrity": "sha512-ZVxXaNy28/k3kJg0Fou5MiYpp88j7H9hLZp8PDC3jV0WFjfH5E9xHb56L0W59cPbKbcHXeP4qyT8PrHp8t6LcQ==" + } + } + }, + "@vue/shared": { + "version": "3.2.20", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.20.tgz", + "integrity": "sha512-FbpX+hD5BvXCQerEYO7jtAGHlhAkhTQ4KIV73kmLWNlawWhTiVuQxizgVb0BOkX5oG9cIRZ42EG++d/k/Efp0w==" + }, "csstype": { "version": "3.0.9", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.9.tgz", @@ -25805,23 +25562,6 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } } } }, @@ -25896,25 +25636,6 @@ "string-width": "^4.2.0", "y18n": "^5.0.5", "yargs-parser": "^20.2.2" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - } } }, "yargs-parser": { diff --git a/package.json b/package.json index f516f4f6b..a194c235f 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ "@fortawesome/fontawesome-svg-core": "~1.2.36", "@fortawesome/free-regular-svg-icons": "~5.15.4", "@fortawesome/free-solid-svg-icons": "~5.15.4", - "@fortawesome/vue-fontawesome": "~3.0.0-4", + "@fortawesome/vue-fontawesome": "~3.0.0-5", "@louislam/sqlite3": "~6.0.0", "@popperjs/core": "~2.10.2", "args-parser": "~1.3.0", @@ -74,7 +74,7 @@ "express": "~4.17.1", "express-basic-auth": "~1.2.0", "form-data": "~4.0.0", - "http-graceful-shutdown": "~3.1.4", + "http-graceful-shutdown": "~3.1.5", "iconv-lite": "^0.6.3", "jsonwebtoken": "~8.5.1", "jwt-decode": "^3.1.2", @@ -83,7 +83,7 @@ "notp": "~2.0.3", "password-hash": "~1.2.2", "postcss-rtlcss": "~3.4.1", - "postcss-scss": "~4.0.1", + "postcss-scss": "~4.0.2", "prom-client": "~13.2.0", "prometheus-api-metrics": "~3.2.0", "qrcode": "~1.4.4", @@ -103,30 +103,30 @@ "vue-image-crop-upload": "~3.0.3", "vue-multiselect": "~3.0.0-alpha.2", "vue-qrcode": "~1.0.0", - "vue-router": "~4.0.11", - "vue-toastification": "~2.0.0-rc.1", + "vue-router": "~4.0.12", + "vue-toastification": "~2.0.0-rc.5", "vuedraggable": "~4.1.0" }, "devDependencies": { - "@babel/eslint-parser": "~7.15.7", + "@babel/eslint-parser": "~7.15.8", "@babel/preset-env": "^7.15.8", "@types/bootstrap": "~5.1.6", - "@vitejs/plugin-legacy": "~1.6.2", + "@vitejs/plugin-legacy": "~1.6.3", "@vitejs/plugin-vue": "~1.9.4", - "@vue/compiler-sfc": "~3.2.20", + "@vue/compiler-sfc": "~3.2.22", "babel-plugin-rewire": "~1.2.0", - "core-js": "~3.18.1", + "core-js": "~3.18.3", "cross-env": "~7.0.3", "dns2": "~2.0.1", "eslint": "~7.32.0", "eslint-plugin-vue": "~7.18.0", - "jest": "~27.2.4", + "jest": "~27.2.5", "jest-puppeteer": "~6.0.0", "puppeteer": "~10.4.0", "sass": "~1.42.1", "stylelint": "~13.13.1", "stylelint-config-standard": "~22.0.0", - "typescript": "~4.4.3", - "vite": "~2.6.13" + "typescript": "~4.4.4", + "vite": "~2.6.14" } } From 4155f84eec37f8f54ba73ce5c3fe7a5b27cdc786 Mon Sep 17 00:00:00 2001 From: Louis <louislam@users.noreply.github.com> Date: Tue, 23 Nov 2021 19:20:55 +0800 Subject: [PATCH 089/142] improve basic auth style --- src/pages/EditMonitor.vue | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/pages/EditMonitor.vue b/src/pages/EditMonitor.vue index 108defb74..c8f485941 100644 --- a/src/pages/EditMonitor.vue +++ b/src/pages/EditMonitor.vue @@ -268,9 +268,13 @@ <!-- HTTP Basic Auth --> <h4 class="mt-5 mb-2">{{ $t("HTTP Basic Auth") }}</h4> + <div class="my-3"> <label for="basicauth" class="form-label">{{ $t("Username") }}</label> <input id="basicauth-user" v-model="monitor.basic_auth_user" type="text" class="form-control" :placeholder="$t('Username')"> + </div> + + <div class="my-3"> <label for="basicauth" class="form-label">{{ $t("Password") }}</label> <input id="basicauth-pass" v-model="monitor.basic_auth_pass" type="password" class="form-control" :placeholder="$t('Password')"> </div> From dce908a07b399d39e4fb36776afa4aec1270bc7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E9=9B=A8?= <614422099@QQ.com> Date: Tue, 23 Nov 2021 20:36:22 +0800 Subject: [PATCH 090/142] Update dingding notification title Add the status to the title, you can see the message title on the friend list page. --- server/notification-providers/dingding.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/notification-providers/dingding.js b/server/notification-providers/dingding.js index f099192d8..cf08f14bf 100644 --- a/server/notification-providers/dingding.js +++ b/server/notification-providers/dingding.js @@ -14,8 +14,8 @@ class DingDing extends NotificationProvider { let params = { msgtype: "markdown", markdown: { - title: monitorJSON["name"], - text: `## [${this.statusToString(heartbeatJSON["status"])}] \n > ${heartbeatJSON["msg"]} \n > Time(UTC):${heartbeatJSON["time"]}`, + title: `[${this.statusToString(heartbeatJSON["status"])}] ${monitorJSON["name"]}`, + text: `## [${this.statusToString(heartbeatJSON["status"])}] ${monitorJSON["name"]} \n > ${heartbeatJSON["msg"]} \n > Time(UTC):${heartbeatJSON["time"]}`, } }; if (this.sendToDingDing(notification, params)) { From 5afb29f8f93d1fba74989ac5064af20de8909d41 Mon Sep 17 00:00:00 2001 From: Ioma Taani <iomataani@users.noreply.github.com> Date: Tue, 23 Nov 2021 16:35:18 +0100 Subject: [PATCH 091/142] typo --- src/languages/en.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/languages/en.js b/src/languages/en.js index a503b5235..74e32b8cb 100644 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -307,5 +307,5 @@ export default { steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", "Current User": "Current User", recent: "Recent", - shrinkDatabaseDescription: "Trigger database VACCUM for SQLite. If your database is created after 1.10.0, AUTO_VACCUM is already enabled and this action is not needed.", + shrinkDatabaseDescription: "Trigger database VACUUM for SQLite. If your database is created after 1.10.0, AUTO_VACCUM is already enabled and this action is not needed.", }; From 97cb060cf59c49f16aa60d20758f6766f34a2028 Mon Sep 17 00:00:00 2001 From: Ioma Taani <iomataani@users.noreply.github.com> Date: Tue, 23 Nov 2021 16:39:04 +0100 Subject: [PATCH 092/142] another typo --- src/languages/en.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/languages/en.js b/src/languages/en.js index 74e32b8cb..0667509f3 100644 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -307,5 +307,5 @@ export default { steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", "Current User": "Current User", recent: "Recent", - shrinkDatabaseDescription: "Trigger database VACUUM for SQLite. If your database is created after 1.10.0, AUTO_VACCUM is already enabled and this action is not needed.", + shrinkDatabaseDescription: "Trigger database VACUUM for SQLite. If your database is created after 1.10.0, AUTO_VACUUM is already enabled and this action is not needed.", }; From 3a32fd6f4296a8d19e52978fe63de39797df3254 Mon Sep 17 00:00:00 2001 From: Ioma Taani <iomataani@users.noreply.github.com> Date: Tue, 23 Nov 2021 16:39:38 +0100 Subject: [PATCH 093/142] aggiornata la traduzione --- src/languages/it-IT.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/languages/it-IT.js b/src/languages/it-IT.js index 63ac34a9e..6f4626fe7 100644 --- a/src/languages/it-IT.js +++ b/src/languages/it-IT.js @@ -307,4 +307,5 @@ export default { steamApiKeyDescription: "Per monitorare un server di gioco Steam si necessita della chiave Web-API di Steam. È possibile registrare la propria chiave API qui: ", "Current User": "Utente corrente", recent: "Recenti", + shrinkDatabaseDescription: "Lancia il comando VACUUM sul database SQLite. Se il database è stato creato dopo la versione 1.10.0, AUTO_VACUUM è già abilitato e questa azione non è necessaria.", }; From 9f0c66d77516628a48efc2e38b5d7a3df69f9aea Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Wed, 24 Nov 2021 14:53:15 +0800 Subject: [PATCH 094/142] fix node-sqlite3 security issues --- package-lock.json | 1656 ++++++++++++++++++++------------------------- package.json | 5 +- 2 files changed, 723 insertions(+), 938 deletions(-) diff --git a/package-lock.json b/package-lock.json index 25abc9e8f..9b2e0acc9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "@fortawesome/free-regular-svg-icons": "~5.15.4", "@fortawesome/free-solid-svg-icons": "~5.15.4", "@fortawesome/vue-fontawesome": "~3.0.0-5", - "@louislam/sqlite3": "~6.0.0", + "@louislam/sqlite3": "~6.0.1", "@popperjs/core": "~2.10.2", "args-parser": "~1.3.0", "axios": "~0.21.4", @@ -1807,6 +1807,12 @@ "vue": ">= 3.0.0 < 4" } }, + "node_modules/@gar/promisify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.2.tgz", + "integrity": "sha512-82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw==", + "optional": true + }, "node_modules/@hapi/hoek": { "version": "9.2.1", "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.1.tgz", @@ -2584,19 +2590,19 @@ } }, "node_modules/@louislam/sqlite3": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@louislam/sqlite3/-/sqlite3-6.0.0.tgz", - "integrity": "sha512-jKNkg7olyL4vM0yqVBiyPrtHALfWkCLAASASDJpghBE5Ri6qOh9bXmzaKyTrYH5cSsFB7R39XGC4O9XdAmTe4Q==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@louislam/sqlite3/-/sqlite3-6.0.1.tgz", + "integrity": "sha512-QGLj5bjQ+O4YSPj/qxtEAArbIqW9wNzBUamlIcRbvFjFiNokItwdubqL2Gl5iX0q1mUn3Z6NoFO1rrAZ/qqlsA==", "hasInstallScript": true, "dependencies": { - "@mapbox/node-pre-gyp": "^1.0.0", + "@mapbox/node-pre-gyp": "^1.0.7", "node-addon-api": "^3.0.0" }, "optionalDependencies": { - "node-gyp": "^7.1.2" + "node-gyp": "^8.4.1" }, "peerDependencies": { - "node-gyp": "7.x" + "node-gyp": "8.x" }, "peerDependenciesMeta": { "node-gyp": { @@ -2672,6 +2678,44 @@ "node": ">= 8" } }, + "node_modules/@npmcli/fs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.0.0.tgz", + "integrity": "sha512-8ltnOpRR/oJbOp8vaGUnipOi3bqkcW+sLHFlyXIr08OGHmVJLB1Hn7QtGXbYcpVtH1gAYZTlmDXtE4YV0+AMMQ==", + "optional": true, + "dependencies": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "node_modules/@npmcli/fs/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "optional": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "optional": true, + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@popperjs/core": { "version": "2.10.2", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.10.2.tgz", @@ -2752,7 +2796,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true, + "devOptional": true, "engines": { "node": ">= 6" } @@ -3314,11 +3358,38 @@ "node": ">= 6.0.0" } }, + "node_modules/agentkeepalive": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.1.4.tgz", + "integrity": "sha512-+V/rGa3EuU74H6wR04plBb7Ks10FbtUQgRj/FQOG7uUIEuaINI+AiqJR1k6t3SVNs7o7ZjIdus6706qqzVq8jQ==", + "optional": true, + "dependencies": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "optional": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "devOptional": true, + "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -3449,24 +3520,6 @@ "node": ">=0.10.0" } }, - "node_modules/asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "optional": true, - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "optional": true, - "engines": { - "node": ">=0.8" - } - }, "node_modules/astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", @@ -3540,21 +3593,6 @@ "resolved": "https://registry.npmjs.org/await-lock/-/await-lock-2.1.0.tgz", "integrity": "sha512-t7Zm5YGgEEc/3eYAicF32m/TNvL+XOeYZy9CvBUeJY/szM7frLolFylhrlZNWV/ohWhcUXygrBGjYmoQdxF4CQ==" }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "optional": true, - "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", - "optional": true - }, "node_modules/axios": { "version": "0.21.4", "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", @@ -3887,15 +3925,6 @@ "node": ">= 0.8" } }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "optional": true, - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, "node_modules/bcryptjs": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", @@ -4164,6 +4193,35 @@ "node": ">= 0.8" } }, + "node_modules/cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "optional": true, + "dependencies": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + }, + "engines": { + "node": ">= 10" + } + }, "node_modules/call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -4221,12 +4279,6 @@ "url": "https://opencollective.com/browserslist" } }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "optional": true - }, "node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -4345,6 +4397,15 @@ "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", "dev": true }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "optional": true, + "engines": { + "node": ">=6" + } + }, "node_modules/cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -4394,15 +4455,6 @@ "node": ">= 0.12.0" } }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/collect-v8-coverage": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", @@ -4564,12 +4616,6 @@ "semver": "bin/semver.js" } }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "optional": true - }, "node_modules/cors": { "version": "2.8.5", "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", @@ -4697,18 +4743,6 @@ "node": ">=0.8" } }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "optional": true, - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, "node_modules/data-urls": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", @@ -4991,16 +5025,6 @@ "domelementtype": "1" } }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "optional": true, - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, "node_modules/ecdsa-sig-formatter": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", @@ -5045,6 +5069,15 @@ "node": ">= 0.8" } }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, "node_modules/end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -5174,6 +5207,12 @@ "node": ">=6" } }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "optional": true + }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -6074,7 +6113,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "devOptional": true + "dev": true }, "node_modules/extract-zip": { "version": "2.0.1", @@ -6111,20 +6150,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "engines": [ - "node >=0.6.0" - ], - "optional": true - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "devOptional": true + "dev": true }, "node_modules/fast-glob": { "version": "3.2.7", @@ -6146,7 +6176,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "devOptional": true + "dev": true }, "node_modules/fast-levenshtein": { "version": "2.0.6", @@ -6422,15 +6452,6 @@ "node": ">=0.10.0" } }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "optional": true, - "engines": { - "node": "*" - } - }, "node_modules/form-data": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", @@ -6604,15 +6625,6 @@ "resolved": "https://registry.npmjs.org/getopts/-/getopts-2.2.5.tgz", "integrity": "sha512-9jb7AW5p3in+IiJWhQiZmmwkpLaR/ccTWdWQCtZM66HJcHHLegowh4q4tSD7gouUyeNvFWRavfK9GXosQHDpFA==" }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "optional": true, - "dependencies": { - "assert-plus": "^1.0.0" - } - }, "node_modules/glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", @@ -6749,29 +6761,6 @@ "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", "devOptional": true }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "optional": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", - "optional": true, - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/hard-rejection": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", @@ -6888,6 +6877,12 @@ "readable-stream": "^3.1.1" } }, + "node_modules/http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "optional": true + }, "node_modules/http-errors": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", @@ -6918,7 +6913,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, + "devOptional": true, "dependencies": { "@tootallnate/once": "1", "agent-base": "6", @@ -6928,21 +6923,6 @@ "node": ">= 6" } }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "optional": true, - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, "node_modules/https-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", @@ -6972,6 +6952,15 @@ "node": ">=10.17.0" } }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "optional": true, + "dependencies": { + "ms": "^2.0.0" + } + }, "node_modules/iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", @@ -7056,7 +7045,7 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true, + "devOptional": true, "engines": { "node": ">=0.8.19" } @@ -7065,11 +7054,17 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, + "devOptional": true, "engines": { "node": ">=8" } }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "optional": true + }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -7098,6 +7093,12 @@ "node": ">= 0.10" } }, + "node_modules/ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "optional": true + }, "node_modules/ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -7262,6 +7263,12 @@ "node": ">=0.10.0" } }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", + "optional": true + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -7339,7 +7346,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "devOptional": true + "dev": true }, "node_modules/is-unicode-supported": { "version": "0.1.0", @@ -7393,12 +7400,6 @@ "node": ">=0.10.0" } }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "optional": true - }, "node_modules/istanbul-lib-coverage": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", @@ -9399,12 +9400,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "optional": true - }, "node_modules/jsdom": { "version": "16.7.0", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", @@ -9495,17 +9490,11 @@ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, - "node_modules/json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "optional": true - }, "node_modules/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==", - "devOptional": true + "dev": true }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -9513,12 +9502,6 @@ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", "dev": true }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "optional": true - }, "node_modules/json5": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", @@ -9563,21 +9546,6 @@ "semver": "bin/semver" } }, - "node_modules/jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "engines": [ - "node >=0.6.0" - ], - "optional": true, - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, "node_modules/just-performance": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/just-performance/-/just-performance-4.3.0.tgz", @@ -9999,6 +9967,33 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/make-fetch-happen": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", + "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", + "optional": true, + "dependencies": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" + }, + "engines": { + "node": ">= 10" + } + }, "node_modules/makeerror": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", @@ -10300,41 +10295,106 @@ "node": ">=8" } }, - "node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "optional": true, "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" + "minipass": "^3.0.0" }, "engines": { "node": ">= 8" } }, - "node_modules/mixin-object": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", - "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", - "dev": true, + "node_modules/minipass-fetch": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", + "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", + "optional": true, "dependencies": { - "for-in": "^0.1.3", - "is-extendable": "^0.1.1" + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "optionalDependencies": { + "encoding": "^0.1.12" } }, - "node_modules/mixin-object/node_modules/for-in": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", - "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=", - "dev": true, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "node_modules/mkdirp": { + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/mixin-object": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", + "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", + "dev": true, + "dependencies": { + "for-in": "^0.1.3", + "is-extendable": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mixin-object/node_modules/for-in": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", + "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", @@ -10416,20 +10476,20 @@ } }, "node_modules/node-gyp": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz", - "integrity": "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", + "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", "optional": true, "dependencies": { "env-paths": "^2.2.0", "glob": "^7.1.4", - "graceful-fs": "^4.2.3", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^9.1.0", "nopt": "^5.0.0", - "npmlog": "^4.1.2", - "request": "^2.88.2", + "npmlog": "^6.0.0", "rimraf": "^3.0.2", - "semver": "^7.3.2", - "tar": "^6.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", "which": "^2.0.2" }, "bin": { @@ -10439,92 +10499,6 @@ "node": ">= 10.12.0" } }, - "node_modules/node-gyp/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/node-gyp/node_modules/aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "optional": true - }, - "node_modules/node-gyp/node_modules/are-we-there-yet": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", - "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", - "optional": true, - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "node_modules/node-gyp/node_modules/gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "optional": true, - "dependencies": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "node_modules/node-gyp/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "optional": true, - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/node-gyp/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "optional": true - }, - "node_modules/node-gyp/node_modules/npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "optional": true, - "dependencies": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "node_modules/node-gyp/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "optional": true, - "dependencies": { - "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" - } - }, "node_modules/node-gyp/node_modules/semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -10540,41 +10514,6 @@ "node": ">=10" } }, - "node_modules/node-gyp/node_modules/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==", - "optional": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/node-gyp/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "optional": true, - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/node-gyp/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "optional": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -10712,15 +10651,6 @@ "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", "dev": true }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/numbered": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/numbered/-/numbered-1.1.0.tgz", @@ -10732,15 +10662,6 @@ "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", "dev": true }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "optional": true, - "engines": { - "node": "*" - } - }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -10870,6 +10791,21 @@ "node": ">=8" } }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "optional": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/p-timeout": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", @@ -11042,12 +10978,6 @@ "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", "dev": true }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "optional": true - }, "node_modules/pg-connection-string": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", @@ -11375,12 +11305,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "optional": true - }, "node_modules/progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", @@ -11425,6 +11349,25 @@ "ms": "^2.1.1" } }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "optional": true + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "optional": true, + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -11465,7 +11408,7 @@ "version": "1.8.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "devOptional": true + "dev": true }, "node_modules/pump": { "version": "3.0.0", @@ -11481,7 +11424,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "devOptional": true, + "dev": true, "engines": { "node": ">=6" } @@ -12091,74 +12034,6 @@ "node": ">=0.10" } }, - "node_modules/request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "optional": true, - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/request/node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "optional": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/request/node_modules/qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "optional": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/request/node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "optional": true, - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -12245,6 +12120,15 @@ "node": ">=10" } }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "optional": true, + "engines": { + "node": ">= 4" + } + }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -12635,6 +12519,16 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "optional": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, "node_modules/socket.io": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.2.0.tgz", @@ -12689,6 +12583,34 @@ "node": ">=10.0.0" } }, + "node_modules/socks": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.1.tgz", + "integrity": "sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA==", + "optional": true, + "dependencies": { + "ip": "^1.1.5", + "smart-buffer": "^4.1.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz", + "integrity": "sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==", + "optional": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.1", + "socks": "^2.6.1" + }, + "engines": { + "node": ">= 10" + } + }, "node_modules/sortablejs": { "version": "1.14.0", "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.14.0.tgz", @@ -12793,29 +12715,16 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, - "node_modules/sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "node_modules/ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", "optional": true, "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" + "minipass": "^3.1.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, "node_modules/stack-utils": { @@ -13624,24 +13533,6 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "optional": true, - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "optional": true - }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -13809,6 +13700,24 @@ "node": ">=8" } }, + "node_modules/unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "optional": true, + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "optional": true, + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, "node_modules/unist-util-find-all-after": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-3.0.2.tgz", @@ -13866,7 +13775,7 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "devOptional": true, + "dev": true, "dependencies": { "punycode": "^2.1.0" } @@ -13884,16 +13793,6 @@ "node": ">= 0.4.0" } }, - "node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "optional": true, - "bin": { - "uuid": "bin/uuid" - } - }, "node_modules/v-pagination-3": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/v-pagination-3/-/v-pagination-3-0.1.7.tgz", @@ -13951,20 +13850,6 @@ "node": ">= 0.8" } }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "engines": [ - "node >=0.6.0" - ], - "optional": true, - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, "node_modules/vfile": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", @@ -15863,6 +15748,12 @@ "integrity": "sha512-aNmBT4bOecrFsZTog1l6AJDQHPP3ocXV+WQ3Ogy8WZCqstB/ahfhH4CPu5i4N9Hw0MBKXqE+LX+NbUxcj8cVTw==", "requires": {} }, + "@gar/promisify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.2.tgz", + "integrity": "sha512-82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw==", + "optional": true + }, "@hapi/hoek": { "version": "9.2.1", "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.1.tgz", @@ -16457,13 +16348,13 @@ } }, "@louislam/sqlite3": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@louislam/sqlite3/-/sqlite3-6.0.0.tgz", - "integrity": "sha512-jKNkg7olyL4vM0yqVBiyPrtHALfWkCLAASASDJpghBE5Ri6qOh9bXmzaKyTrYH5cSsFB7R39XGC4O9XdAmTe4Q==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@louislam/sqlite3/-/sqlite3-6.0.1.tgz", + "integrity": "sha512-QGLj5bjQ+O4YSPj/qxtEAArbIqW9wNzBUamlIcRbvFjFiNokItwdubqL2Gl5iX0q1mUn3Z6NoFO1rrAZ/qqlsA==", "requires": { - "@mapbox/node-pre-gyp": "^1.0.0", + "@mapbox/node-pre-gyp": "^1.0.7", "node-addon-api": "^3.0.0", - "node-gyp": "^7.1.2" + "node-gyp": "^8.4.1" } }, "@mapbox/node-pre-gyp": { @@ -16518,6 +16409,37 @@ "fastq": "^1.6.0" } }, + "@npmcli/fs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.0.0.tgz", + "integrity": "sha512-8ltnOpRR/oJbOp8vaGUnipOi3bqkcW+sLHFlyXIr08OGHmVJLB1Hn7QtGXbYcpVtH1gAYZTlmDXtE4YV0+AMMQ==", + "optional": true, + "requires": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "optional": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "optional": true, + "requires": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + } + }, "@popperjs/core": { "version": "2.10.2", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.10.2.tgz", @@ -16585,7 +16507,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true + "devOptional": true }, "@types/accepts": { "version": "1.3.5", @@ -17108,11 +17030,32 @@ "debug": "4" } }, + "agentkeepalive": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.1.4.tgz", + "integrity": "sha512-+V/rGa3EuU74H6wR04plBb7Ks10FbtUQgRj/FQOG7uUIEuaINI+AiqJR1k6t3SVNs7o7ZjIdus6706qqzVq8jQ==", + "optional": true, + "requires": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "optional": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "devOptional": true, + "dev": true, "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -17209,21 +17152,6 @@ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", "dev": true }, - "asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "optional": true, - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "optional": true - }, "astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", @@ -17279,18 +17207,6 @@ "resolved": "https://registry.npmjs.org/await-lock/-/await-lock-2.1.0.tgz", "integrity": "sha512-t7Zm5YGgEEc/3eYAicF32m/TNvL+XOeYZy9CvBUeJY/szM7frLolFylhrlZNWV/ohWhcUXygrBGjYmoQdxF4CQ==" }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "optional": true - }, - "aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", - "optional": true - }, "axios": { "version": "0.21.4", "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", @@ -17546,15 +17462,6 @@ "safe-buffer": "5.1.2" } }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "optional": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, "bcryptjs": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", @@ -17769,6 +17676,32 @@ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" }, + "cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "optional": true, + "requires": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + } + }, "call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -17807,12 +17740,6 @@ "integrity": "sha512-YhF/hG6nqBEllymSIjLtR2iWDDnChvhnVJqp+vloyt2tEHFG1yBR+ac2B/rOw0qOK0m0lEXU2dv4E/sMk5P9Kg==", "dev": true }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "optional": true - }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -17902,6 +17829,12 @@ "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", "dev": true }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "optional": true + }, "cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -17941,12 +17874,6 @@ "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", "dev": true }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "optional": true - }, "collect-v8-coverage": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", @@ -18080,12 +18007,6 @@ } } }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "optional": true - }, "cors": { "version": "2.8.5", "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", @@ -18185,15 +18106,6 @@ "fs-exists-sync": "^0.1.0" } }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "optional": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, "data-urls": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", @@ -18419,16 +18331,6 @@ "domelementtype": "1" } }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "optional": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, "ecdsa-sig-formatter": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", @@ -18464,6 +18366,15 @@ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" }, + "encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "optional": true, + "requires": { + "iconv-lite": "^0.6.2" + } + }, "end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -18554,6 +18465,12 @@ "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "optional": true }, + "err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "optional": true + }, "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -19192,7 +19109,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "devOptional": true + "dev": true }, "extract-zip": { "version": "2.0.1", @@ -19217,17 +19134,11 @@ } } }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "optional": true - }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "devOptional": true + "dev": true }, "fast-glob": { "version": "3.2.7", @@ -19246,7 +19157,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "devOptional": true + "dev": true }, "fast-levenshtein": { "version": "2.0.6", @@ -19461,12 +19372,6 @@ "for-in": "^1.0.1" } }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "optional": true - }, "form-data": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", @@ -19591,15 +19496,6 @@ "resolved": "https://registry.npmjs.org/getopts/-/getopts-2.2.5.tgz", "integrity": "sha512-9jb7AW5p3in+IiJWhQiZmmwkpLaR/ccTWdWQCtZM66HJcHHLegowh4q4tSD7gouUyeNvFWRavfK9GXosQHDpFA==" }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "optional": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, "glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", @@ -19704,22 +19600,6 @@ "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", "devOptional": true }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "optional": true - }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "optional": true, - "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - } - }, "hard-rejection": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", @@ -19809,6 +19689,12 @@ "readable-stream": "^3.1.1" } }, + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "optional": true + }, "http-errors": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", @@ -19833,24 +19719,13 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, + "devOptional": true, "requires": { "@tootallnate/once": "1", "agent-base": "6", "debug": "4" } }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "optional": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, "https-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", @@ -19874,6 +19749,15 @@ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "optional": true, + "requires": { + "ms": "^2.0.0" + } + }, "iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", @@ -19923,13 +19807,19 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true + "devOptional": true }, "indent-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true + "devOptional": true + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "optional": true }, "inflight": { "version": "1.0.6", @@ -19956,6 +19846,12 @@ "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==" }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "optional": true + }, "ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -20073,6 +19969,12 @@ } } }, + "is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", + "optional": true + }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -20129,7 +20031,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "devOptional": true + "dev": true }, "is-unicode-supported": { "version": "0.1.0", @@ -20168,12 +20070,6 @@ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "optional": true - }, "istanbul-lib-coverage": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", @@ -21680,12 +21576,6 @@ "esprima": "^4.0.0" } }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "optional": true - }, "jsdom": { "version": "16.7.0", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", @@ -21752,17 +21642,11 @@ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "optional": true - }, "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==", - "devOptional": true + "dev": true }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -21770,12 +21654,6 @@ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", "dev": true }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "optional": true - }, "json5": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", @@ -21809,18 +21687,6 @@ } } }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "optional": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, "just-performance": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/just-performance/-/just-performance-4.3.0.tgz", @@ -22156,6 +22022,30 @@ "semver": "^6.0.0" } }, + "make-fetch-happen": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", + "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", + "optional": true, + "requires": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" + } + }, "makeerror": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", @@ -22372,6 +22262,54 @@ "yallist": "^4.0.0" } }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "optional": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-fetch": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", + "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", + "optional": true, + "requires": { + "encoding": "^0.1.12", + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "optional": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "optional": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "optional": true, + "requires": { + "minipass": "^3.0.0" + } + }, "minizlib": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", @@ -22465,103 +22403,23 @@ } }, "node-gyp": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz", - "integrity": "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", + "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", "optional": true, "requires": { "env-paths": "^2.2.0", "glob": "^7.1.4", - "graceful-fs": "^4.2.3", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^9.1.0", "nopt": "^5.0.0", - "npmlog": "^4.1.2", - "request": "^2.88.2", + "npmlog": "^6.0.0", "rimraf": "^3.0.2", - "semver": "^7.3.2", - "tar": "^6.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", "which": "^2.0.2" }, "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "optional": true - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", - "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "optional": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "optional": true - }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -22570,35 +22428,6 @@ "requires": { "lru-cache": "^6.0.0" } - }, - "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==", - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "optional": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "optional": true, - "requires": { - "ansi-regex": "^2.0.0" - } } } }, @@ -22705,12 +22534,6 @@ "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", "dev": true }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "optional": true - }, "numbered": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/numbered/-/numbered-1.1.0.tgz", @@ -22722,12 +22545,6 @@ "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", "dev": true }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "optional": true - }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -22818,6 +22635,15 @@ "p-limit": "^2.2.0" } }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "optional": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, "p-timeout": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", @@ -22944,12 +22770,6 @@ "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", "dev": true }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "optional": true - }, "pg-connection-string": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", @@ -23188,12 +23008,6 @@ } } }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "optional": true - }, "progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", @@ -23231,6 +23045,22 @@ } } }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "optional": true + }, + "promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "optional": true, + "requires": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + } + }, "prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -23265,7 +23095,7 @@ "version": "1.8.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "devOptional": true + "dev": true }, "pump": { "version": "3.0.0", @@ -23281,7 +23111,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "devOptional": true + "dev": true }, "puppeteer": { "version": "10.4.0", @@ -23745,63 +23575,6 @@ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "optional": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "optional": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "optional": true - }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "optional": true, - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - } - } - }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -23866,6 +23639,12 @@ "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", "dev": true }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "optional": true + }, "reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -24160,6 +23939,12 @@ } } }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "optional": true + }, "socket.io": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.2.0.tgz", @@ -24205,6 +23990,27 @@ "debug": "~4.3.1" } }, + "socks": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.1.tgz", + "integrity": "sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA==", + "optional": true, + "requires": { + "ip": "^1.1.5", + "smart-buffer": "^4.1.0" + } + }, + "socks-proxy-agent": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz", + "integrity": "sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==", + "optional": true, + "requires": { + "agent-base": "^6.0.2", + "debug": "^4.3.1", + "socks": "^2.6.1" + } + }, "sortablejs": { "version": "1.14.0", "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.14.0.tgz", @@ -24299,21 +24105,13 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, - "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", "optional": true, "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" + "minipass": "^3.1.1" } }, "stack-utils": { @@ -24941,21 +24739,6 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "optional": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "optional": true - }, "type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -25067,6 +24850,24 @@ } } }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "optional": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "optional": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, "unist-util-find-all-after": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-3.0.2.tgz", @@ -25106,7 +24907,7 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "devOptional": true, + "dev": true, "requires": { "punycode": "^2.1.0" } @@ -25121,12 +24922,6 @@ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "optional": true - }, "v-pagination-3": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/v-pagination-3/-/v-pagination-3-0.1.7.tgz", @@ -25177,17 +24972,6 @@ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "optional": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, "vfile": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", diff --git a/package.json b/package.json index a194c235f..fdc690f75 100644 --- a/package.json +++ b/package.json @@ -50,14 +50,15 @@ "test-nodejs16": "docker build --progress plain -f test/ubuntu-nodejs16.dockerfile .", "simple-dns-server": "node extra/simple-dns-server.js", "update-language-files-with-base-lang": "cd extra/update-language-files && node index.js %npm_config_base_lang% && eslint ../../src/languages/**.js --fix", - "update-language-files": "cd extra/update-language-files && node index.js && eslint ../../src/languages/**.js --fix" + "update-language-files": "cd extra/update-language-files && node index.js && eslint ../../src/languages/**.js --fix", + "ncu-patch": "ncu -u -t patch" }, "dependencies": { "@fortawesome/fontawesome-svg-core": "~1.2.36", "@fortawesome/free-regular-svg-icons": "~5.15.4", "@fortawesome/free-solid-svg-icons": "~5.15.4", "@fortawesome/vue-fontawesome": "~3.0.0-5", - "@louislam/sqlite3": "~6.0.0", + "@louislam/sqlite3": "~6.0.1", "@popperjs/core": "~2.10.2", "args-parser": "~1.3.0", "axios": "~0.21.4", From c1267e9b3b654765a62d09e3c5201ba85e75d2e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Kuffel?= <pawel@kuffel.io> Date: Thu, 25 Nov 2021 18:24:36 +0100 Subject: [PATCH 095/142] feat: add SerwerSMS notification provider --- server/notification-providers/serwersms.js | 44 ++++++++++++++++++++++ server/notification.js | 2 + src/components/notifications/SerwerSMS.vue | 28 ++++++++++++++ src/components/notifications/index.js | 4 +- src/languages/en.js | 5 +++ src/languages/pl.js | 5 +++ 6 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 server/notification-providers/serwersms.js create mode 100644 src/components/notifications/SerwerSMS.vue diff --git a/server/notification-providers/serwersms.js b/server/notification-providers/serwersms.js new file mode 100644 index 000000000..9f75982fe --- /dev/null +++ b/server/notification-providers/serwersms.js @@ -0,0 +1,44 @@ +const NotificationProvider = require("./notification-provider"); +const axios = require("axios"); + +class SerwerSMS extends NotificationProvider { + + name = "serwersms"; + + async send(notification, msg, monitorJSON = null, heartbeatJSON = null) { + let okMsg = "Sent Successfully."; + + try { + let config = { + headers: { + "Content-Type": "application/json", + } + }; + let data = { + "username": notification.serwersmsUsername, + "password": notification.serwersmsPassword, + "phone": notification.serwersmsPhoneNumber, + "text": msg.replace(/[^\x00-\x7F]/g, ""), + "sender": notification.serwersmsSenderName + }; + + let resp = await axios.post("https://api2.serwersms.pl/messages/send_sms", data, config); + + if (!resp.data.success) { + if (resp.data.error) { + let error = `SerwerSMS.pl API returned error code ${resp.data.error.code} (${resp.data.error.type}) with error message: ${resp.data.error.message}`; + this.throwGeneralAxiosError(error); + } else { + let error = "SerwerSMS.pl API returned an unexpected response"; + this.throwGeneralAxiosError(error); + } + } + + return okMsg; + } catch (error) { + this.throwGeneralAxiosError(error); + } + } +} + +module.exports = SerwerSMS; diff --git a/server/notification.js b/server/notification.js index 18c823b2b..e2cfb193d 100644 --- a/server/notification.js +++ b/server/notification.js @@ -23,6 +23,7 @@ const Feishu = require("./notification-providers/feishu"); const AliyunSms = require("./notification-providers/aliyun-sms"); const DingDing = require("./notification-providers/dingding"); const Bark = require("./notification-providers/bark"); +const SerwerSMS = require("./notification-providers/serwersms"); class Notification { @@ -58,6 +59,7 @@ class Notification { new Telegram(), new Webhook(), new Bark(), + new SerwerSMS(), ]; for (let item of list) { diff --git a/src/components/notifications/SerwerSMS.vue b/src/components/notifications/SerwerSMS.vue new file mode 100644 index 000000000..f2c3463b8 --- /dev/null +++ b/src/components/notifications/SerwerSMS.vue @@ -0,0 +1,28 @@ +<template> + <div class="mb-3"> + <label for="serwersms-username" class="form-label">{{ $t('serwersmsAPIUser') }}</label> + <input id="serwersms-username" v-model="$parent.notification.serwersmsUsername" type="text" class="form-control" required> + </div> + <div class="mb-3"> + <label for="serwersms-key" class="form-label">{{ $t('serwersmsAPIPassword') }}</label> + <HiddenInput id="serwersms-key" v-model="$parent.notification.serwersmsPassword" :required="true" autocomplete="one-time-code"></HiddenInput> + </div> + <div class="mb-3"> + <label for="serwersms-phone-number" class="form-label">{{ $t("serwersmsPhoneNumber") }}</label> + <input id="serwersms-phone-number" v-model="$parent.notification.serwersmsPhoneNumber" type="text" class="form-control" required> + </div> + <div class="mb-3"> + <label for="serwersms-sender-name" class="form-label">{{ $t("serwersmsSenderName") }}</label> + <input id="serwersms-sender-name" v-model="$parent.notification.serwersmsSenderName" type="text" minlength="3" maxlength="11" class="form-control"> + </div> +</template> + +<script> +import HiddenInput from "../HiddenInput.vue"; + +export default { + components: { + HiddenInput, + }, +}; +</script> diff --git a/src/components/notifications/index.js b/src/components/notifications/index.js index 4b51569a2..9ade03a14 100644 --- a/src/components/notifications/index.js +++ b/src/components/notifications/index.js @@ -22,6 +22,7 @@ import Matrix from "./Matrix.vue"; import AliyunSMS from "./AliyunSms.vue"; import DingDing from "./DingDing.vue"; import Bark from "./Bark.vue"; +import SerwerSMS from "./SerwerSMS.vue"; /** * Manage all notification form. @@ -52,7 +53,8 @@ const NotificationFormList = { "mattermost": Mattermost, "matrix": Matrix, "DingDing": DingDing, - "Bark": Bark + "Bark": Bark, + "serwersms": SerwerSMS } export default NotificationFormList diff --git a/src/languages/en.js b/src/languages/en.js index 0667509f3..a6ad95101 100644 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -308,4 +308,9 @@ export default { "Current User": "Current User", recent: "Recent", shrinkDatabaseDescription: "Trigger database VACUUM for SQLite. If your database is created after 1.10.0, AUTO_VACUUM is already enabled and this action is not needed.", + serwersms: "SerwerSMS.pl", + serwersmsAPIUser: "API Username (incl. webapi_ prefix)", + serwersmsAPIPassword: "API Password", + serwersmsPhoneNumber: "Phone number", + serwersmsSenderName: "SMS Sender Name (registered via customer portal)", }; diff --git a/src/languages/pl.js b/src/languages/pl.js index 082980d3b..9c11a3232 100644 --- a/src/languages/pl.js +++ b/src/languages/pl.js @@ -307,4 +307,9 @@ export default { recent: "Ostatnie", clicksendsms: "ClickSend SMS", apiCredentials: "Poświadczenia API", + serwersms: "SerwerSMS.pl", + serwersmsAPIUser: "Nazwa Użytkownika API (z prefiksem webapi_)", + serwersmsAPIPassword: "Hasło API", + serwersmsPhoneNumber: "Numer Telefonu", + serwersmsSenderName: "Nazwa Nadawcy (zatwierdzona w panelu klienta)", }; From 50593f3edf7a86688bc2b1ba0a57c1589db21980 Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Fri, 26 Nov 2021 16:31:19 +0800 Subject: [PATCH 096/142] [wip] lazy load language file --- src/components/settings/Appearance.vue | 10 +-- src/i18n.js | 89 +++++++++++--------------- src/main.js | 2 + src/mixins/lang.js | 27 ++++++++ 4 files changed, 67 insertions(+), 61 deletions(-) create mode 100644 src/mixins/lang.js diff --git a/src/components/settings/Appearance.vue b/src/components/settings/Appearance.vue index e0a3d6430..63fbd40bc 100644 --- a/src/components/settings/Appearance.vue +++ b/src/components/settings/Appearance.vue @@ -4,7 +4,7 @@ <label for="language" class="form-label"> {{ $t("Language") }} </label> - <select id="language" v-model="$i18n.locale" class="form-select"> + <select id="language" v-model="$root.language" class="form-select"> <option v-for="(lang, i) in $i18n.availableLocales" :key="`Lang${i}`" @@ -116,14 +116,8 @@ </template> <script> -import { setPageLocale } from "../../util-frontend"; export default { - watch: { - "$i18n.locale"() { - localStorage.locale = this.$i18n.locale; - setPageLocale(); - }, - }, + }; </script> diff --git a/src/i18n.js b/src/i18n.js index deeeac91e..229493938 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -1,62 +1,45 @@ import { createI18n } from "vue-i18n/index"; -import daDK from "./languages/da-DK"; -import deDE from "./languages/de-DE"; import en from "./languages/en"; -import esEs from "./languages/es-ES"; -import etEE from "./languages/et-EE"; -import fa from "./languages/fa"; -import frFR from "./languages/fr-FR"; -import hu from "./languages/hu"; -import hrHR from "./languages/hr-HR"; -import itIT from "./languages/it-IT"; -import idID from "./languages/id-ID"; -import ja from "./languages/ja"; -import koKR from "./languages/ko-KR"; -import nlNL from "./languages/nl-NL"; -import nbNO from "./languages/nb-NO"; -import pl from "./languages/pl"; -import ptBR from "./languages/pt-BR"; -import bgBG from "./languages/bg-BG"; -import ruRU from "./languages/ru-RU"; -import sr from "./languages/sr"; -import srLatn from "./languages/sr-latn"; -import svSE from "./languages/sv-SE"; -import trTR from "./languages/tr-TR"; -import vi from "./languages/vi"; -import zhCN from "./languages/zh-CN"; -import zhHK from "./languages/zh-HK"; -import zhTW from "./languages/zh-TW"; const languageList = { + "zh-HK": "繁體中文 (香港)", + "bg-BG": "Български", + "de-DE": "Deutsch (Deutschland)", + "nl-NL": "Nederlands", + "nb-NO": "Norsk", + "es-ES": "Español", + "fa": "Farsi", + "pt-BR": "Português (Brasileiro)", + "fr-FR": "Français (France)", + "hu": "Magyar", + "hr-HR": "Hrvatski", + "it-IT": "Italiano (Italian)", + "id-ID": "Bahasa Indonesia (Indonesian)", + "ja": "日本語", + "da-DK": "Danish (Danmark)", + "sr": "Српски", + "sr-latn": "Srpski", + "sv-SE": "Svenska", + "tr-TR": "Türkçe", + "ko-KR": "한국어", + "ru-RU": "Русский", + "zh-CN": "简体中文", + "pl": "Polski", + "et-EE": "eesti", + "vi": "Vietnamese", + "zh-TW": "繁體中文 (台灣)" +}; + +let messages = { en, - "zh-HK": zhHK, - "bg-BG": bgBG, - "de-DE": deDE, - "nl-NL": nlNL, - "nb-NO": nbNO, - "es-ES": esEs, - "fa": fa, - "pt-BR": ptBR, - "fr-FR": frFR, - "hu": hu, - "hr-HR": hrHR, - "it-IT": itIT, - "id-ID" : idID, - "ja": ja, - "da-DK": daDK, - "sr": sr, - "sr-latn": srLatn, - "sv-SE": svSE, - "tr-TR": trTR, - "ko-KR": koKR, - "ru-RU": ruRU, - "zh-CN": zhCN, - "pl": pl, - "et-EE": etEE, - "vi": vi, - "zh-TW": zhTW }; +for (let lang in languageList) { + messages[lang] = { + languageName: languageList[lang] + }; +} + const rtlLangs = ["fa"]; export const currentLocale = () => localStorage.locale @@ -73,5 +56,5 @@ export const i18n = createI18n({ fallbackLocale: "en", silentFallbackWarn: true, silentTranslationWarn: true, - messages: languageList, + messages: messages, }); diff --git a/src/main.js b/src/main.js index 14b87f49d..184909081 100644 --- a/src/main.js +++ b/src/main.js @@ -12,6 +12,7 @@ import mobile from "./mixins/mobile"; import publicMixin from "./mixins/public"; import socket from "./mixins/socket"; import theme from "./mixins/theme"; +import lang from "./mixins/lang"; import { router } from "./router"; import { appName } from "./util.ts"; @@ -22,6 +23,7 @@ const app = createApp({ mobile, datetime, publicMixin, + lang, ], data() { return { diff --git a/src/mixins/lang.js b/src/mixins/lang.js new file mode 100644 index 000000000..2a13fec28 --- /dev/null +++ b/src/mixins/lang.js @@ -0,0 +1,27 @@ +import { currentLocale } from "../i18n"; +import { setPageLocale } from "../util-frontend"; +const langModules = import.meta.glob("../languages/*.js"); + +export default { + data() { + return { + language: currentLocale(), + }; + }, + + watch: { + async language(lang) { + await this.changeLang(lang); + }, + }, + + methods: { + async changeLang(lang) { + let message = (await langModules["../languages/" + lang + ".js"]()).default; + this.$i18n.setLocaleMessage(lang, message); + this.$i18n.locale = lang; + localStorage.locale = lang; + setPageLocale(); + } + } +}; From 4888c97d865d63d1a892f5afffdc6276b38e5ee7 Mon Sep 17 00:00:00 2001 From: Ioma Taani <iomataani@users.noreply.github.com> Date: Fri, 26 Nov 2021 10:33:15 +0100 Subject: [PATCH 097/142] Better translation --- src/languages/it-IT.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/languages/it-IT.js b/src/languages/it-IT.js index 6f4626fe7..5b1c6b8bd 100644 --- a/src/languages/it-IT.js +++ b/src/languages/it-IT.js @@ -166,7 +166,7 @@ export default { Orange: "Arancione", Green: "Verde", Blue: "Blu", - Indigo: "Indigo", + Indigo: "Indaco", Purple: "Viola", Pink: "Rosa", "Search...": "Cerca...", From 4d947d93744392e816b7942e413943a7a09959b5 Mon Sep 17 00:00:00 2001 From: Ioma Taani <iomataani@users.noreply.github.com> Date: Fri, 26 Nov 2021 10:37:42 +0100 Subject: [PATCH 098/142] better translation --- src/languages/it-IT.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/languages/it-IT.js b/src/languages/it-IT.js index 5b1c6b8bd..0011e33d8 100644 --- a/src/languages/it-IT.js +++ b/src/languages/it-IT.js @@ -295,9 +295,9 @@ export default { matrixDesc2: "È altamente raccomandata la creazione di un nuovo utente e di non utilizare il proprio token di accesso Matrix poiché darà pieno controllo al proprio account e a tutte le stanze in cui si ha accesso. Piuttosto, si crei un nuovo utente per invitarlo nella stanza dove si vuole ricevere le notifiche. Si può accedere al token eseguendo {0}", Method: "Metodo", Body: "Corpo", - Headers: "Headers", + Headers: "Intestazioni", PushUrl: "URL di Push", - HeadersInvalidFormat: "L'header di richiesta non è un JSON valido: ", + HeadersInvalidFormat: "L'intestazione di richiesta non è un JSON valido: ", BodyInvalidFormat: "Il corpo di richiesta non è un JSON valido: ", "Monitor History": "Storico monitoraggio", clearDataOlderThan: "Mantieni lo storico per {0} giorni.", From 186c11540f800160abcb9624dba7a9e3f8e7f5bb Mon Sep 17 00:00:00 2001 From: kffl <pawel@kuffel.io> Date: Sat, 27 Nov 2021 13:16:17 +0100 Subject: [PATCH 099/142] style(serwersms): add missing trailing commas Co-authored-by: Adam Stachowicz <saibamenppl@gmail.com> --- server/notification-providers/serwersms.js | 2 +- src/components/notifications/index.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/server/notification-providers/serwersms.js b/server/notification-providers/serwersms.js index 9f75982fe..14fe691a8 100644 --- a/server/notification-providers/serwersms.js +++ b/server/notification-providers/serwersms.js @@ -19,7 +19,7 @@ class SerwerSMS extends NotificationProvider { "password": notification.serwersmsPassword, "phone": notification.serwersmsPhoneNumber, "text": msg.replace(/[^\x00-\x7F]/g, ""), - "sender": notification.serwersmsSenderName + "sender": notification.serwersmsSenderName, }; let resp = await axios.post("https://api2.serwersms.pl/messages/send_sms", data, config); diff --git a/src/components/notifications/index.js b/src/components/notifications/index.js index 9ade03a14..bb71fba09 100644 --- a/src/components/notifications/index.js +++ b/src/components/notifications/index.js @@ -54,7 +54,7 @@ const NotificationFormList = { "matrix": Matrix, "DingDing": DingDing, "Bark": Bark, - "serwersms": SerwerSMS + "serwersms": SerwerSMS, } export default NotificationFormList From 64ec7664238e861d9db6e63cfdb56c5d7525ebeb Mon Sep 17 00:00:00 2001 From: kffl <pawel@kuffel.io> Date: Sat, 27 Nov 2021 13:22:54 +0100 Subject: [PATCH 100/142] translate(serwersms): fix pl translation capitalization Co-authored-by: Adam Stachowicz <saibamenppl@gmail.com> --- src/languages/pl.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/languages/pl.js b/src/languages/pl.js index 9c11a3232..69d68193e 100644 --- a/src/languages/pl.js +++ b/src/languages/pl.js @@ -308,8 +308,8 @@ export default { clicksendsms: "ClickSend SMS", apiCredentials: "Poświadczenia API", serwersms: "SerwerSMS.pl", - serwersmsAPIUser: "Nazwa Użytkownika API (z prefiksem webapi_)", + serwersmsAPIUser: "Nazwa użytkownika API (z prefiksem webapi_)", serwersmsAPIPassword: "Hasło API", - serwersmsPhoneNumber: "Numer Telefonu", - serwersmsSenderName: "Nazwa Nadawcy (zatwierdzona w panelu klienta)", + serwersmsPhoneNumber: "Numer telefonu", + serwersmsSenderName: "Nazwa nadawcy (zatwierdzona w panelu klienta)", }; From a284703d9ee3d0bdb3f86a2e900e35dbee6ec9b6 Mon Sep 17 00:00:00 2001 From: MrEddX <66828538+MrEddX@users.noreply.github.com> Date: Sun, 28 Nov 2021 07:11:20 +0200 Subject: [PATCH 101/142] Update bg-BG.js - Fixed existing field - Added new field - Translated new field --- src/languages/bg-BG.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/languages/bg-BG.js b/src/languages/bg-BG.js index f1d9b0784..3ae95b360 100644 --- a/src/languages/bg-BG.js +++ b/src/languages/bg-BG.js @@ -89,7 +89,7 @@ export default { Timezone: "Часова зона", "Search Engine Visibility": "Видимост за търсачки", "Allow indexing": "Разреши индексиране", - "Discourage search engines from indexing site": "Обезкуражи индексирането на сайта от търсачките", + "Discourage search engines from indexing site": "Не позволявай на търсачките да индексират този сайт", "Change Password": "Промени парола", "Current Password": "Текуща парола", "New Password": "Нова парола", @@ -307,4 +307,5 @@ export default { PasswordsDoNotMatch: "Паролите не съвпадат.", "Current User": "Текущ потребител", recent: "Скорошни", + shrinkDatabaseDescription: "Инициира \"VACUUM\" за \"SQLite\" база данни. Ако Вашата база данни е създадена след версия 1.10.0, \"AUTO_VACUUM\" функцията е активна и това действие не нужно.", }; From c50b2b636ae84863272f9e86cd1bc58b71777832 Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Mon, 29 Nov 2021 16:45:52 +0800 Subject: [PATCH 102/142] [lazy load lang] load the language file on create --- src/mixins/lang.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/mixins/lang.js b/src/mixins/lang.js index 2a13fec28..31d5a8e0b 100644 --- a/src/mixins/lang.js +++ b/src/mixins/lang.js @@ -9,6 +9,12 @@ export default { }; }, + async created() { + if (this.language !== "en") { + await this.changeLang(this.language); + } + }, + watch: { async language(lang) { await this.changeLang(lang); From aea128a85b3cb3a41de40cac7ebf1992bdfb434e Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Mon, 29 Nov 2021 16:50:00 +0800 Subject: [PATCH 103/142] make settings' menu reactive --- src/pages/Settings.vue | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/pages/Settings.vue b/src/pages/Settings.vue index bacda3a38..3378a0e91 100644 --- a/src/pages/Settings.vue +++ b/src/pages/Settings.vue @@ -44,8 +44,20 @@ export default { settings: {}, settingsLoaded: false, + }; + }, + + computed: { + currentPage() { + let pathEnd = useRoute().path.split("/").at(-1); + if (pathEnd == "settings" || pathEnd == null) { + return "general"; + } + return pathEnd; + }, - subMenus: { + subMenus() { + return { general: { title: this.$t("General"), }, @@ -67,17 +79,7 @@ export default { about: { title: this.$t("About"), }, - }, - }; - }, - - computed: { - currentPage() { - let pathEnd = useRoute().path.split("/").at(-1); - if (pathEnd == "settings" || pathEnd == null) { - return "general"; - } - return pathEnd; + }; }, }, From 077f3837d9a5968d4395647b290d99a3d2748959 Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Mon, 29 Nov 2021 16:53:00 +0800 Subject: [PATCH 104/142] update language guide --- src/languages/README.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/languages/README.md b/src/languages/README.md index 52b70fa84..945fc2078 100644 --- a/src/languages/README.md +++ b/src/languages/README.md @@ -5,10 +5,7 @@ 3. Run `npm run update-language-files`. You can also use this command to check if there are new strings to translate for your language. 4. Your language file should be filled in. You can translate now. 5. Translate `src/components/settings/Security.vue` (search for a `Confirm` component with `rel="confirmDisableAuth"`). -6. Import your language file in `src/i18n.js` and add it to `languageList` constant. +6. Add it into `languageList` constant. 7. Make a [pull request](https://github.com/louislam/uptime-kuma/pulls) when you have done. -One of good examples: -https://github.com/louislam/uptime-kuma/pull/316/files - If you do not have programming skills, let me know in [Issues section](https://github.com/louislam/uptime-kuma/issues). I will assist you. 😏 From a864b72e0355a2908f6a955ed37c203040aae7eb Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Mon, 29 Nov 2021 17:19:55 +0800 Subject: [PATCH 105/142] fix pushover for general message --- server/notification-providers/pushover.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/server/notification-providers/pushover.js b/server/notification-providers/pushover.js index 77ef1a3f0..52d13eef7 100644 --- a/server/notification-providers/pushover.js +++ b/server/notification-providers/pushover.js @@ -7,12 +7,12 @@ class Pushover extends NotificationProvider { async send(notification, msg, monitorJSON = null, heartbeatJSON = null) { let okMsg = "Sent Successfully."; - let pushoverlink = "https://api.pushover.net/1/messages.json" + let pushoverlink = "https://api.pushover.net/1/messages.json"; try { if (heartbeatJSON == null) { let data = { - "message": "<b>Uptime Kuma Pushover testing successful.</b>", + "message": msg, "user": notification.pushoveruserkey, "token": notification.pushoverapptoken, "sound": notification.pushoversounds, @@ -21,8 +21,8 @@ class Pushover extends NotificationProvider { "retry": "30", "expire": "3600", "html": 1, - } - await axios.post(pushoverlink, data) + }; + await axios.post(pushoverlink, data); return okMsg; } @@ -36,11 +36,11 @@ class Pushover extends NotificationProvider { "retry": "30", "expire": "3600", "html": 1, - } - await axios.post(pushoverlink, data) + }; + await axios.post(pushoverlink, data); return okMsg; } catch (error) { - this.throwGeneralAxiosError(error) + this.throwGeneralAxiosError(error); } } From 6cd130de389e8eec6c1fff21b9e985f9f179d59c Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Mon, 29 Nov 2021 17:20:12 +0800 Subject: [PATCH 106/142] minor --- src/components/settings/General.vue | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/settings/General.vue b/src/components/settings/General.vue index a1b42d85f..459bb8d5d 100644 --- a/src/components/settings/General.vue +++ b/src/components/settings/General.vue @@ -122,6 +122,7 @@ <HiddenInput id="steamAPIKey" v-model="settings.steamAPIKey" + autocomplete="one-time-code" /> <div class="form-text"> {{ $t("steamApiKeyDescription") }} From bf8dbd78b304ea0aa5a92bbb4aafe5b0011828c0 Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Mon, 29 Nov 2021 17:25:30 +0800 Subject: [PATCH 107/142] temporary disable test for settings page --- test/e2e.spec.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/e2e.spec.js b/test/e2e.spec.js index 66bbb794b..d4835d1cf 100644 --- a/test/e2e.spec.js +++ b/test/e2e.spec.js @@ -83,6 +83,7 @@ describe("Init", () => { }); // Settings Page + /* describe("Settings", () => { beforeEach(async () => { await page.goto(baseURL + "/settings"); @@ -261,6 +262,7 @@ describe("Init", () => { // }, { timeout: 3000 }); // }); }); + */ /* * TODO From 9c5466890e0ce567d0346c3a27e930c65d173543 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20Bratovi=C4=87?= <ivanbratovic4@gmail.com> Date: Mon, 29 Nov 2021 12:40:53 +0100 Subject: [PATCH 108/142] Revert "Replace body and header placeholder functions with translations" This reverts commit 2c85491ee011ca7f7ba655592eb292b2aa5733c7. --- src/languages/en.js | 2 -- src/pages/EditMonitor.vue | 18 ++++++++++++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/languages/en.js b/src/languages/en.js index f7a637de6..24de7410f 100644 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -315,8 +315,6 @@ export default { "Pick a RR-Type...": "Pick a RR-Type...", "Pick Accepted Status Codes...": "Pick Accepted Status Codes...", Default: "Default", - headersPlaceholder: "Example:\n{\n \"HeaderName\": \"HeaderValue\"\n}", - bodyPlaceholder: "Example:\n{\n \"key\": \"value\"\n}", "HTTP Options": "HTTP Options", "Create Incident": "Create Incident", Title: "Title", diff --git a/src/pages/EditMonitor.vue b/src/pages/EditMonitor.vue index 07bd818ef..2678a94af 100644 --- a/src/pages/EditMonitor.vue +++ b/src/pages/EditMonitor.vue @@ -257,13 +257,13 @@ <!-- Body --> <div class="my-3"> <label for="body" class="form-label">{{ $t("Body") }}</label> - <textarea id="body" v-model="monitor.body" class="form-control" :placeholder="$t('bodyPlaceholder')"></textarea> + <textarea id="body" v-model="monitor.body" class="form-control" :placeholder="bodyPlaceholder"></textarea> </div> <!-- Headers --> <div class="my-3"> <label for="headers" class="form-label">{{ $t("Headers") }}</label> - <textarea id="headers" v-model="monitor.headers" class="form-control" :placeholder="$t('headersPlaceholder')"></textarea> + <textarea id="headers" v-model="monitor.headers" class="form-control" :placeholder="headersPlaceholder"></textarea> </div> <!-- HTTP Basic Auth --> @@ -352,6 +352,20 @@ export default { return this.$root.baseURL + "/api/push/" + this.monitor.pushToken + "?msg=OK&ping="; }, + bodyPlaceholder() { + return `Example: +{ + "key": "value" +}`; + }, + + headersPlaceholder() { + return `Example: +{ + "HeaderName": "HeaderValue" +}`; + } + }, watch: { From c1b118a0f6325cf05ea252a921f3d09a775fdeae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20Bratovi=C4=87?= <ivanbratovic4@gmail.com> Date: Mon, 29 Nov 2021 12:49:08 +0100 Subject: [PATCH 109/142] Use existing Example translation for HTTP headers and body placeholders --- src/pages/EditMonitor.vue | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/pages/EditMonitor.vue b/src/pages/EditMonitor.vue index 2678a94af..4a0d0408b 100644 --- a/src/pages/EditMonitor.vue +++ b/src/pages/EditMonitor.vue @@ -353,17 +353,17 @@ export default { }, bodyPlaceholder() { - return `Example: + return this.$t("Example:", [` { "key": "value" -}`; +}`]); }, headersPlaceholder() { - return `Example: + return this.$t("Example:", [` { "HeaderName": "HeaderValue" -}`; +}`]); } }, From baae4b5a5e19132981de5ace878cd2c1869cca33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20Bratovi=C4=87?= <ivanbratovic4@gmail.com> Date: Mon, 29 Nov 2021 12:49:38 +0100 Subject: [PATCH 110/142] Remove unused translation keys from hr-HR --- src/languages/hr-HR.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/languages/hr-HR.js b/src/languages/hr-HR.js index 8d23f003b..129403fa2 100644 --- a/src/languages/hr-HR.js +++ b/src/languages/hr-HR.js @@ -316,8 +316,6 @@ export default { "Pick Accepted Status Codes...": "Odaberite HTTP statusne kodove koji će biti prihvaćeni...", "Steam API Key": "Steam API ključ", Default: "Zadano", - headersPlaceholder: "Primjer:\n{\n \"NazivZaglavlja\": \"VrijednostZaglavlja\"\n}", - bodyPlaceholder: "Primjer:\n{\n \"ključ\": \"vrijednost\"\n}", "HTTP Options": "HTTP Postavke", "Create Incident": "Novi izvještaj o incidentu", Title: "Naslov", From 4dd60cba3d312cc3cb960e7f504c88c777f59a62 Mon Sep 17 00:00:00 2001 From: tgcentral <2584395+tgcentral@users.noreply.github.com> Date: Wed, 1 Dec 2021 09:43:58 +0000 Subject: [PATCH 111/142] Typo correction --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9177cc998..4fd0ff0cf 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,7 @@ Browse to http://localhost:3001 after starting. ### Advanced Installation -If you need more options or need to browse via a reserve proxy, please read: +If you need more options or need to browse via a reverse proxy, please read: https://github.com/louislam/uptime-kuma/wiki/%F0%9F%94%A7-How-to-Install From 4b3fae53d42cc2465c5d573a81032cfe81fcffb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bal=C3=A1zs=20Csaba?= <csaba@balazs-magyar.hu> Date: Wed, 1 Dec 2021 15:32:39 +0100 Subject: [PATCH 112/142] HU language typo --- src/languages/hu.js | 50 ++++++++++++++++++++++----------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/src/languages/hu.js b/src/languages/hu.js index 47ac72d64..37c9c6fd6 100644 --- a/src/languages/hu.js +++ b/src/languages/hu.js @@ -2,26 +2,26 @@ export default { languageName: "Magyar", checkEverySecond: "Ellenőrzés {0} másodpercenként", retryCheckEverySecond: "Újrapróbál {0} másodpercenként.", - retriesDescription: "Maximális próbálkozás mielőtt a szolgáltatás leállt jelőlést kap és értesítés kerül kiküldésre", - ignoreTLSError: "TLS/SSL hibák figyelnen kívül hagyása HTTPS weboldalaknál", + retriesDescription: "Maximális próbálkozás mielőtt a szolgáltatás 'Leállt' jelölést kap és értesítés kerül kiküldésre", + ignoreTLSError: "TLS/SSL hibák figyelmen kívül hagyása HTTPS weboldalaknál", upsideDownModeDescription: "Az állapot megfordítása. Ha a szolgáltatás elérhető, akkor lesz leállt állapotú.", maxRedirectDescription: "Az átirányítások maximális száma. állítsa 0-ra az átirányítás tiltásához.", acceptedStatusCodesDescription: "Válassza ki az állapot kódokat amelyek sikeres válasznak fognak számítani.", passwordNotMatchMsg: "A megismételt jelszó nem egyezik.", notificationDescription: "Kérem, rendeljen egy értesítést a figyeléshez, hogy működjön.", - keywordDescription: "Kulcsszó keresése a html-ben vagy a JSON válaszban. (kis-nagybetű érzékeny)", + keywordDescription: "Kulcsszó keresése a HTML-ben vagy a JSON válaszban. (kis-nagybetű érzékeny)", pauseDashboardHome: "Szünetel", deleteMonitorMsg: "Biztos, hogy törölni akarja ezt a figyelőt?", deleteNotificationMsg: "Biztos, hogy törölni akarja ezt az értesítést az összes figyelőnél?", resoverserverDescription: "A Cloudflare az alapértelmezett szerver, bármikor meg tudja változtatni a resolver server-t.", - rrtypeDescription: "Válassza ki az RR-Típust a figyelőhöz", + rrtypeDescription: "Válassza ki az RR-típust a figyelőhöz", pauseMonitorMsg: "Biztos, hogy szüneteltetni akarja?", enableDefaultNotificationDescription: "Minden új figyelőhöz ez az értesítés engedélyezett lesz alapértelmezetten. Kikapcsolhatja az értesítést külön minden figyelőnél.", clearEventsMsg: "Biztos, hogy törölni akar miden eseményt ennél a figyelnél?", - clearHeartbeatsMsg: "Biztos, hogy törölni akar minden heartbeat-et ennél a figyelőnél?", - confirmClearStatisticsMsg: "Biztos, hogy törölni akat MINDEN statisztikát?", + clearHeartbeatsMsg: "Biztos, hogy törölni akar minden életjelet ennél a figyelőnél?", + confirmClearStatisticsMsg: "Biztos, hogy törölni akar MINDEN statisztikát?", importHandleDescription: "Válassza a 'Meglévő kihagyását', ha ki szeretné hagyni az azonos nevő figyelőket vagy értesítésket. A 'Felülírás' törölni fog minden meglévő figyelőt és értesítést.", - confirmImportMsg: "Biztos, hogy importálja a mentést? Győzödjön meg róla, hogy jól választotta ki az importálás opciót.", + confirmImportMsg: "Biztos, hogy importálja a mentést? Győződjön meg róla, hogy jól választotta ki az importálás opciót.", twoFAVerifyLabel: "Kérem, adja meg a token-t, hogy a 2FA működését ellenőrizzük", tokenValidSettingsMsg: "A token érvényes! El tudja menteni a 2FA beállításait.", confirmEnableTwoFAMsg: "Biztosan engedélyezi a 2FA-t?", @@ -68,9 +68,9 @@ export default { URL: "URL", Hostname: "Hostnév", Port: "Port", - "Heartbeat Interval": "Heartbeat időköz", + "Heartbeat Interval": "Életjel időköz", Retries: "Újrapróbálkozás", - "Heartbeat Retry Interval": "Heartbeat újrapróbálkozások időköze", + "Heartbeat Retry Interval": "Életjel újrapróbálkozások időköze", Advanced: "Haladó", "Upside Down Mode": "Fordított mód", "Max. Redirects": "Max. átirányítás", @@ -82,8 +82,8 @@ export default { Light: "Világos", Dark: "Sötét", Auto: "Auto", - "Theme - Heartbeat Bar": "Téma - Heartbeat Bar", - Normal: "Normal", + "Theme - Heartbeat Bar": "Téma - Életjel sáv", + Normal: "Normál", Bottom: "Nyomógomb", None: "Nincs", Timezone: "Időzóna", @@ -97,9 +97,9 @@ export default { "Update Password": "Jelszó módosítása", "Disable Auth": "Hitelesítés tiltása", "Enable Auth": "Hitelesítés engedélyezése", - Logout: "Kijelenetkezés", + Logout: "Kijelentkezés", Leave: "Elhagy", - "I understand, please disable": "Megértettem, kérem tilsa le", + "I understand, please disable": "Megértettem, kérem tiltsa le", Confirm: "Megerősítés", Yes: "Igen", No: "Nem", @@ -129,8 +129,8 @@ export default { Create: "Létrehozás", "Clear Data": "Adatok törlése", Events: "Események", - Heartbeats: "Heartbeats", - "Auto Get": "Auto Get", + Heartbeats: "Életjelek", + "Auto Get": "Auto lekérd.", backupDescription: "Ki tudja menteni az összes figyelőt és értesítést egy JSON fájlba.", backupDescription2: "Ui.: Történeti és esemény adatokat nem tartalmaz.", backupDescription3: "Érzékeny adatok, pl. szolgáltatás kulcsok is vannak az export fájlban. Figyelmesen őrizze!", @@ -144,17 +144,17 @@ export default { "Verify Token": "Token ellenőrzése", "Setup 2FA": "2FA beállítása", "Enable 2FA": "2FA engedélyezése", - "Disable 2FA": "2FA toltása", + "Disable 2FA": "2FA tiltása", "2FA Settings": "2FA beállítások", - "Two Factor Authentication": "Two Factor Authentication", + "Two Factor Authentication": "Kétfaktoros hitelesítés", Active: "Aktív", Inactive: "Inaktív", Token: "Token", "Show URI": "URI megmutatása", - Tags: "Cimkék", + Tags: "Címkék", "Add New below or Select...": "Adjon hozzá lentre vagy válasszon...", - "Tag with this name already exist.": "Ilyen nevű cimke már létezik.", - "Tag with this value already exist.": "Ilyen értékű cimke már létezik.", + "Tag with this name already exist.": "Ilyen nevű címke már létezik.", + "Tag with this value already exist.": "Ilyen értékű címke már létezik.", color: "szín", "value (optional)": "érték (opcionális)", Gray: "Szürke", @@ -169,15 +169,15 @@ export default { "Avg. Ping": "Átl. ping", "Avg. Response": "Átl. válasz", "Entry Page": "Nyitólap", - statusPageNothing: "Semmi nincs itt, kérem, adjon hozzá egy figyelőt.", + statusPageNothing: "Semmi nincs itt. Adjon hozzá egy vagy több figyelőt.", "No Services": "Nincs szolgáltatás", "All Systems Operational": "Minden rendszer működik", "Partially Degraded Service": "Részlegesen leállt szolgáltatás", "Degraded Service": "Leállt szolgáltatás", "Add Group": "Csoport hozzáadása", "Add a monitor": "Figyelő hozzáadása", - "Edit Status Page": "Sátusz oldal szerkesztése", - "Go to Dashboard": "Menj az irányítópulthoz", + "Edit Status Page": "Státusz oldal szerkesztése", + "Go to Dashboard": "Irányítópulthoz", telegram: "Telegram", webhook: "Webhook", smtp: "Email (SMTP)", @@ -192,9 +192,9 @@ export default { octopush: "Octopush", promosms: "PromoSMS", lunasea: "LunaSea", - apprise: "Apprise (Support 50+ Notification services)", + apprise: "Apprise (50+ értesítési szolgáltatás)", pushbullet: "Pushbullet", line: "Line Messenger", mattermost: "Mattermost", - "Status Page": "Status Page", + "Status Page": "Státusz oldal", }; From c36190bba6562e861276e46efff41cd6136e1dc7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bal=C3=A1zs=20Csaba?= <csaba@balazs-magyar.hu> Date: Wed, 1 Dec 2021 15:40:22 +0100 Subject: [PATCH 113/142] Node engine version --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index fdc690f75..801348266 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "url": "https://github.com/louislam/uptime-kuma.git" }, "engines": { - "node": "14.*" + "node": "14.* >=16.*" }, "scripts": { "install-legacy": "npm install --legacy-peer-deps", @@ -130,4 +130,4 @@ "typescript": "~4.4.4", "vite": "~2.6.14" } -} +} \ No newline at end of file From 67849a9e843cbe61d5727b5585ee6b2a5c7e053e Mon Sep 17 00:00:00 2001 From: Jonas Liebert <mail@jonas-liebert.de> Date: Thu, 2 Dec 2021 08:53:45 +0100 Subject: [PATCH 114/142] add support for stackfield notifications --- server/notification-providers/stackfield.js | 41 +++++++++++++++++++++ server/notification.js | 2 + src/components/notifications/Stackfield.vue | 13 +++++++ src/components/notifications/index.js | 2 + src/languages/en.js | 1 + 5 files changed, 59 insertions(+) create mode 100644 server/notification-providers/stackfield.js create mode 100644 src/components/notifications/Stackfield.vue diff --git a/server/notification-providers/stackfield.js b/server/notification-providers/stackfield.js new file mode 100644 index 000000000..7f22634e3 --- /dev/null +++ b/server/notification-providers/stackfield.js @@ -0,0 +1,41 @@ +const NotificationProvider = require("./notification-provider"); +const axios = require("axios"); +const { setting } = require("../util-server"); +const { getMonitorRelativeURL } = require("../../src/util"); + +class Stackfield extends NotificationProvider { + + name = "stackfield"; + + async send(notification, msg, monitorJSON = null) { + let okMsg = "Sent Successfully."; + try { + // Stackfield message formatting: https://www.stackfield.com/help/formatting-messages-2001 + + let textMsg = "+Uptime Kuma Alert+"; + + if (monitorJSON && monitorJSON.name) { + textMsg += `\n*${monitorJSON.name}*`; + } + + textMsg += `\n${msg}`; + + const baseURL = await setting("primaryBaseURL"); + if (baseURL) { + textMsg += `\n${baseURL + getMonitorRelativeURL(monitorJSON.id)}`; + } + + const data = { + "Title": textMsg, + }; + + await axios.post(notification.stackfieldwebhookURL, data); + return okMsg; + } catch (error) { + this.throwGeneralAxiosError(error); + } + + } +} + +module.exports = Stackfield; diff --git a/server/notification.js b/server/notification.js index e2cfb193d..3eb5f97bf 100644 --- a/server/notification.js +++ b/server/notification.js @@ -24,6 +24,7 @@ const AliyunSms = require("./notification-providers/aliyun-sms"); const DingDing = require("./notification-providers/dingding"); const Bark = require("./notification-providers/bark"); const SerwerSMS = require("./notification-providers/serwersms"); +const Stackfield = require("./notification-providers/stackfield"); class Notification { @@ -60,6 +61,7 @@ class Notification { new Webhook(), new Bark(), new SerwerSMS(), + new Stackfield(), ]; for (let item of list) { diff --git a/src/components/notifications/Stackfield.vue b/src/components/notifications/Stackfield.vue new file mode 100644 index 000000000..c8dfb72b2 --- /dev/null +++ b/src/components/notifications/Stackfield.vue @@ -0,0 +1,13 @@ +<template> + <div class="mb-3"> + <label for="stackfield-webhook-url" class="form-label">{{ $t("Webhook URL") }}<span style="color: red;"><sup>*</sup></span></label> + <input id="stackfield-webhook-url" v-model="$parent.notification.stackfieldwebhookURL" type="text" class="form-control" required> + + <div class="form-text"> + <span style="color: red;"><sup>*</sup></span>{{ $t("Required") }} + <i18n-t tag="p" keypath="aboutWebhooks" style="margin-top: 8px;"> + <a href="https://www.stackfield.com/developer-api#AnchorAPI2" target="_blank">https://www.stackfield.com/developer-api#AnchorAPI2</a> + </i18n-t> + </div> + </div> +</template> diff --git a/src/components/notifications/index.js b/src/components/notifications/index.js index bb71fba09..155a1ab26 100644 --- a/src/components/notifications/index.js +++ b/src/components/notifications/index.js @@ -23,6 +23,7 @@ import AliyunSMS from "./AliyunSms.vue"; import DingDing from "./DingDing.vue"; import Bark from "./Bark.vue"; import SerwerSMS from "./SerwerSMS.vue"; +import Stackfield from './Stackfield.vue'; /** * Manage all notification form. @@ -55,6 +56,7 @@ const NotificationFormList = { "DingDing": DingDing, "Bark": Bark, "serwersms": SerwerSMS, + "stackfield": Stackfield, } export default NotificationFormList diff --git a/src/languages/en.js b/src/languages/en.js index a51469c04..fee80a760 100644 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -351,4 +351,5 @@ export default { serwersmsAPIPassword: "API Password", serwersmsPhoneNumber: "Phone number", serwersmsSenderName: "SMS Sender Name (registered via customer portal)", + "stackfield": "Stackfield", }; From f33d55c92dfabf64487e9f1410bc315e450a81db Mon Sep 17 00:00:00 2001 From: Adam Stachowicz <saibamenppl@gmail.com> Date: Thu, 2 Dec 2021 11:09:27 +0100 Subject: [PATCH 115/142] Update README.md --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 4fd0ff0cf..ecd33bcba 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ Try it! https://demo.uptime.kuma.pet -It is a temporary live demo, all data will be deleted after 10 minutes. The server is located at Tokyo, so if you live far from there it may affect your experience. I suggest that you should install and try it out for the best demo experience. +It is a temporary live demo, all data will be deleted after 10 minutes. The server is located in Tokyo, so if you live far from there, it may affect your experience. I suggest that you should install and try it out for the best demo experience. VPS is sponsored by Uptime Kuma sponsors on [Open Collective](https://opencollective.com/uptime-kuma)! Thank you so much! @@ -120,7 +120,7 @@ If you love this project, please consider giving me a ⭐. ### Issues Page -You can discuss or ask for help in [Issues](https://github.com/louislam/uptime-kuma/issues). +You can discuss or ask for help in [issues](https://github.com/louislam/uptime-kuma/issues). ### Subreddit @@ -132,8 +132,8 @@ https://www.reddit.com/r/UptimeKuma/ If you want to report a bug or request a new feature. Free feel to open a [new issue](https://github.com/louislam/uptime-kuma/issues). -If you want to translate Uptime Kuma into your langauge, please read: https://github.com/louislam/uptime-kuma/tree/master/src/languages +If you want to translate Uptime Kuma into your language, please read: https://github.com/louislam/uptime-kuma/tree/master/src/languages If you want to modify Uptime Kuma, this guideline may be useful for you: https://github.com/louislam/uptime-kuma/blob/master/CONTRIBUTING.md -English proofreading is needed too because my grammar is not that great sadly. Feel free to correct my grammar in this readme, source code, or wiki. +English proofreading is needed too because my grammar is not that great, sadly. Feel free to correct my grammar in this README, source code, or wiki. From e17ef02008f58d2f3074f84ec434cba114cd896f Mon Sep 17 00:00:00 2001 From: Adam Stachowicz <saibamenppl@gmail.com> Date: Thu, 2 Dec 2021 11:15:14 +0100 Subject: [PATCH 116/142] Update CONTRIBUTING.md --- CONTRIBUTING.md | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 46e9a8990..3679bbd9b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,7 +2,7 @@ First of all, thank you everyone who made pull requests for Uptime Kuma, I never thought GitHub Community can be that nice! And also because of this, I also never thought other people actually read my code and edit my code. It is not structured and commented so well, lol. Sorry about that. -The project was created with vite.js (vue3). Then I created a sub-directory called "server" for server part. Both frontend and backend share the same package.json. +The project was created with vite.js (vue3). Then I created a subdirectory called "server" for server part. Both frontend and backend share the same package.json. The frontend code build into "dist" directory. The server (express.js) exposes the "dist" directory as root of the endpoint. This is how production is working. @@ -27,11 +27,10 @@ The frontend code build into "dist" directory. The server (express.js) exposes t ## Can I create a pull request for Uptime Kuma? -Generally, if the pull request is working fine and it do not affect any existing logic, workflow and performance, I will merge into the master branch once it is tested. +Generally, if the pull request is working fine, and it does not affect any existing logic, workflow and performance, I will merge into the master branch once it is tested. If you are not sure whether I will accept your pull request, feel free to create an empty pull request draft first. - ### Recommended Pull Request Guideline 1. Fork the project @@ -41,7 +40,7 @@ If you are not sure whether I will accept your pull request, feel free to create `git commit -m "[empty commit] pull request for <YOUR TASK NAME>" --allow-empty` 1. Push to your fork repo 1. Create a pull request: https://github.com/louislam/uptime-kuma/compare -1. Write a proper description +1. Write a proper description 1. Click "Change to draft" ### Pull Request Examples @@ -66,7 +65,7 @@ I do not have such knowledge to test it. #### ⚠ Low Priority - Harsh Mode -Some pull requests are required to modify the core. To be honest, I do not want anyone to try to do that, because it would spend a lot of your time. I will review your pull request harshly. Also you may need to write a lot of unit tests to ensure that there is no breaking change. +Some pull requests are required to modify the core. To be honest, I do not want anyone to try to do that, because it would spend a lot of your time. I will review your pull request harshly. Also, you may need to write a lot of unit tests to ensure that there is no breaking change. - Touch large parts of code of any very important features - Touch monitoring logic @@ -74,7 +73,6 @@ Some pull requests are required to modify the core. To be honest, I do not want - Touch the entry point of Docker or Node.js - Modify auth - #### *️⃣ Low Priority It changed my current workflow and require further studies. @@ -143,7 +141,7 @@ express.js is just used for serving the frontend built files (index.html, .js an - modules/ (Modified 3rd-party modules) - notification-providers/ (individual notification logic) - routers/ (Express Routers) -- scoket-handler (Socket.io Handlers) +- socket-handler (Socket.io Handlers) - server.js (Server main logic) ## How to start the Frontend Dev Server @@ -201,7 +199,7 @@ ncu -u -t patch npm install ``` -Since previously updating vite 2.5.10 to 2.6.0 broke the application completely, from now on, it should update patch release version only. +Since previously updating Vite 2.5.10 to 2.6.0 broke the application completely, from now on, it should update patch release version only. Patch release = the third digit ([Semantic Versioning](https://semver.org/)) @@ -209,20 +207,19 @@ Patch release = the third digit ([Semantic Versioning](https://semver.org/)) Please read: https://github.com/louislam/uptime-kuma/tree/master/src/languages - ## Wiki -Since there is no way to make a pull request to wiki's repo, I have setup another repo to do that. +Since there is no way to make a pull request to wiki's repo, I have set up another repo to do that. https://github.com/louislam/uptime-kuma-wiki - -## Maintainer +## Maintainer Check the latest issues and pull requests: https://github.com/louislam/uptime-kuma/issues?q=sort%3Aupdated-desc ### Release Procedures + 1. Draft a release note 1. Make sure the repo is cleared 1. `npm run update-version 1.X.X` @@ -234,22 +231,24 @@ https://github.com/louislam/uptime-kuma/issues?q=sort%3Aupdated-desc 1. SSH to demo site server and update to 1.X.X Checking: + - Check all tags is fine on https://hub.docker.com/r/louislam/uptime-kuma/tags - Try the Docker image with tag 1.X.X (Clean install / amd64 / arm64 / armv7) -- Try clean install with Node.js +- Try clean installation with Node.js ### Release Wiki #### Setup Repo -``` + +```bash git clone https://github.com/louislam/uptime-kuma-wiki.git cd uptime-kuma-wiki git remote add production https://github.com/louislam/uptime-kuma.wiki.git ``` #### Push to Production Wiki -``` + +```bash git pull git push production master ``` - From 76cbef85d5082d98b597269477a1b63563f7ac75 Mon Sep 17 00:00:00 2001 From: Adam Stachowicz <saibamenppl@gmail.com> Date: Thu, 2 Dec 2021 11:18:30 +0100 Subject: [PATCH 117/142] Update README.md --- src/languages/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/languages/README.md b/src/languages/README.md index 945fc2078..3c7f40609 100644 --- a/src/languages/README.md +++ b/src/languages/README.md @@ -8,4 +8,4 @@ 6. Add it into `languageList` constant. 7. Make a [pull request](https://github.com/louislam/uptime-kuma/pulls) when you have done. -If you do not have programming skills, let me know in [Issues section](https://github.com/louislam/uptime-kuma/issues). I will assist you. 😏 +If you do not have programming skills, let me know in [the issues section](https://github.com/louislam/uptime-kuma/issues). I will assist you. 😏 From 60657132c07b217e84545a942c4faf504eee813e Mon Sep 17 00:00:00 2001 From: Adam Stachowicz <saibamenppl@gmail.com> Date: Thu, 2 Dec 2021 11:19:59 +0100 Subject: [PATCH 118/142] Update PULL_REQUEST_TEMPLATE.md --- .github/PULL_REQUEST_TEMPLATE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 3be229315..9afb8596e 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -25,4 +25,4 @@ Please delete options that are not relevant. ## Screenshots (if any) -Please do not use any external image service. Instead, just paste in or drag and drop the image here and it will be uploaded automatically. +Please do not use any external image service. Instead, just paste in or drag and drop the image here, and it will be uploaded automatically. From 120eb0d85f64624234524c6102653b0fbdca9ef3 Mon Sep 17 00:00:00 2001 From: Ioma Taani <iomataani@users.noreply.github.com> Date: Thu, 2 Dec 2021 12:51:10 +0100 Subject: [PATCH 119/142] aggiornato --- src/languages/it-IT.js | 43 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/src/languages/it-IT.js b/src/languages/it-IT.js index 0011e33d8..4b035d4cb 100644 --- a/src/languages/it-IT.js +++ b/src/languages/it-IT.js @@ -307,5 +307,48 @@ export default { steamApiKeyDescription: "Per monitorare un server di gioco Steam si necessita della chiave Web-API di Steam. È possibile registrare la propria chiave API qui: ", "Current User": "Utente corrente", recent: "Recenti", + Done: "Fatto", + Info: "Info", + Security: "Sicurezza", + "Steam API Key": "Chiave API di Steam", + "Shrink Database": "Comprimi Database", + "Pick a RR-Type...": "Scegli un tipo di RR...", + "Pick Accepted Status Codes...": "Scegli i codici di Stato Accettati...", + Default: "Predefinito", + "HTTP Options": "Opzioni HTTP", + "Create Incident": "Crea Incident", + Title: "Titolo", + Content: "Contenuto", + Style: "Stile", + info: "informativo", + warning: "attenzione", + danger: "critico", + primary: "primario", + light: "chiaro", + dark: "scuro", + Post: "Posta", + "Please input title and content": "Inserire il titolo e il contenuto", + Created: "Creato", + "Last Updated": "Ultima modifica", + Unpin: "Stacca", + "Switch to Light Theme": "Utilizza tema chiaro", + "Switch to Dark Theme": "Utilizza tema scuro", + "Show Tags": "Mostra etichette", + "Hide Tags": "Nascondi etichette", + Description: "Descrizione", + "No monitors available.": "Nessun monitoraggio disponibile.", + "Add one": "Aggiungi", + "No Monitors": "Nessun monitoraggio", + "Add one": "Aggiungi", + "Untitled Group": "Gruppo senza titolo", + Services: "Servizi", + Discard: "Scarta", + Cancel: "Annulla", + "Powered by": "Servito da", shrinkDatabaseDescription: "Lancia il comando VACUUM sul database SQLite. Se il database è stato creato dopo la versione 1.10.0, AUTO_VACUUM è già abilitato e questa azione non è necessaria.", + serwersms: "SerwerSMS.pl", + serwersmsAPIUser: "Nome utente API (incl. prefisso webapi_)", + serwersmsAPIPassword: "Password API", + serwersmsPhoneNumber: "Numero di Telefono", + serwersmsSenderName: "Nome del mittente SMS (registrato via portale cliente)", }; From 8f3ef734bc623c5d2aa8da68c813af5af5ab4f0f Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Fri, 3 Dec 2021 01:31:19 +0800 Subject: [PATCH 120/142] disable e2e test, as it is getting unstable recently on GitHub action --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 801348266..67dabe8f4 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "build": "vite build --config ./config/vite.config.js", "test": "node test/prepare-test-server.js && node server/server.js --port=3002 --data-dir=./data/test/ --test", "test-with-build": "npm run build && npm test", - "jest": "node test/prepare-jest.js && npm run jest-frontend && npm run jest-backend && jest --runInBand --config=./config/jest.config.js", + "jest": "node test/prepare-jest.js && npm run jest-frontend && npm run jest-backend", "jest-frontend": "cross-env TEST_FRONTEND=1 jest --config=./config/jest-frontend.config.js", "jest-backend": "cross-env TEST_BACKEND=1 jest --config=./config/jest-backend.config.js", "tsc": "tsc", @@ -130,4 +130,4 @@ "typescript": "~4.4.4", "vite": "~2.6.14" } -} \ No newline at end of file +} From 0aca0455ab0d25edfd992eb4e11e8efc78fc19c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Csaba=20Bal=C3=A1zs?= <csaba@balazs-magyar.hu> Date: Fri, 3 Dec 2021 08:47:35 +0100 Subject: [PATCH 121/142] HU language typo and missing items (#996) * HU language * run eslint on hu.js * Last HU typo * package.json valid required node engine syntax Package.json required node engine version can contain multiple rules separated with ||. With this mode package-lock.json will be valid and error codes does not diplay. Co-authored-by: Louis Lam <louislam@users.noreply.github.com> --- package.json | 2 +- src/languages/hu.js | 155 +++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 155 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 67dabe8f4..399ebb153 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "url": "https://github.com/louislam/uptime-kuma.git" }, "engines": { - "node": "14.* >=16.*" + "node": "14.* || >=16.*" }, "scripts": { "install-legacy": "npm install --legacy-peer-deps", diff --git a/src/languages/hu.js b/src/languages/hu.js index 37c9c6fd6..68758dd36 100644 --- a/src/languages/hu.js +++ b/src/languages/hu.js @@ -113,7 +113,7 @@ export default { Email: "Email", Test: "Teszt", "Certificate Info": "Tanúsítvány információk", - "Resolver Server": "Resolver szerver", + "Resolver Server": "DNS szerver", "Resource Record Type": "Resource Record típusa", "Last Result": "Utolsó eredmény", "Create your admin account": "Hozza létre az adminisztrátor felhasználót", @@ -197,4 +197,157 @@ export default { line: "Line Messenger", mattermost: "Mattermost", "Status Page": "Státusz oldal", + "Primary Base URL": "Elsődleges URL", + "Push URL": "Meghívandó URL", + needPushEvery: "Ezt az URL-t kell meghívni minden {0} másodpercben.", + pushOptionalParams: "Opcionális paraméterek: {0}", + defaultNotificationName: "{notification} értesítésem ({number})", + here: "itt", + Required: "Kötelező", + "Bot Token": "Hibás token", + wayToGetTelegramToken: "Innen kaphat token-t: {0}.", + "Chat ID": "Csevegés ID", + supportTelegramChatID: "Támogatja a közvetlen csevegést, csoportnak küldést és csatona ID-t is", + wayToGetTelegramChatID: "A csevegés ID-t kinyerheti azzal, hogy küld egy üzenetet a bot-nak és erre az URL-re ellátogat, ahol láthatja a chat_id:-t", + "YOUR BOT TOKEN HERE": "AZ ÖN BOT TOKENJE ITT", + chatIDNotFound: "Csevegés ID nem található, küldjön egy első üzenetet a bot-nak", + "Post URL": "Cél URL (Post)", + "Content Type": "Tartalom típus (Content Type)", + webhookJsonDesc: "{0} ideális a moderh HTTP szerverekhez, mint az Express.js", + webhookFormDataDesc: "{multipart} ideális a PHP-hez. A JSON értelmezhető ezzel: {decodeFunction}", + secureOptionNone: "Nincs / STARTTLS (25, 587)", + secureOptionTLS: "TLS (465)", + "Ignore TLS Error": "TLS hiba figyelmen kívül hagyása", + "From Email": "Feladó email", + emailCustomSubject: "Egyedi tárgy", + "To Email": "Cél email", + smtpCC: "Másolat", + smtpBCC: "Titkos másolat", + "Discord Webhook URL": "Discord cím (webhook URL)", + wayToGetDiscordURL: "Kaphat egy ilyet, ha ellátogat a Server Settings -> Integrations -> Create Webhook oldalra", + "Bot Display Name": "Bot megjelenő neve", + "Prefix Custom Message": "Egyedi előtét üzenet", + "Hello @everyone is...": "Hello {'@'}mindenki...", + "Webhook URL": "Cím (webhook URL)", + wayToGetTeamsURL: "Itt megnézheti, hogy kell ilyen URL-t készíteni: {0}.", + Number: "Szám", + Recipients: "Címzettek", + needSignalAPI: "Egy Signal kliensre van szüksége, amihez REST API tartozik.", + wayToCheckSignalURL: "Itt megnézheti, hogy hozhat létre egyet:", + signalImportant: "FONTOS! Nem keverheti a csoportokat és számokat a címzetteknél.", + "Application Token": "Alkalmazás token", + "Server URL": "Szerver URL", + Priority: "Prioritás", + "Icon Emoji": "Emoji ikonok", + "Channel Name": "Csatorna neve", + "Uptime Kuma URL": "Uptime Kuma cím", + aboutWebhooks: "Webhook-okról több info: {0}", + aboutChannelName: "Adja meg a {0} csatorna nevét ha szeretné elkerülni a webhook-ot. Pl: #masik-csatorna", + aboutKumaURL: "Ha üresen hagyja a Uptime Kuma cím mezőt, akkor a projekt GitHub oldala lesz az alapértelmezett.", + emojiCheatSheet: "Emoji csalás: {0}", + clicksendsms: "ClickSend SMS", + "User Key": "Felhasználói kulcs", + Device: "Eszköz", + "Message Title": "Üzenet címe", + "Notification Sound": "Értesítési hang", + "More info on:": "További információ: {0}", + pushoverDesc1: "A vészhelyzeti prioritásnak (2) 30 másodperc az újrapróbálkozási alapértéke és egy óra után lejár.", + pushoverDesc2: "Ha különböző eszközökre szeretne értesítést küldeni, töltse ki az Eszköz mezőt.", + "SMS Type": "SMS típusa", + octopushTypePremium: "Premium (Fast - recommended for alerting)", + octopushTypeLowCost: "Low Cost (Slow - sometimes blocked by operator)", + checkPrice: "Nézze meg az {0} féle árat:", + apiCredentials: "API kulcsok", + octopushLegacyHint: "Az Octopush régi (2011-2020) verzióját használja vagy az újat?", + "Check octopush prices": "Nézze meg az Octopush {0} féle árát.", + octopushPhoneNumber: "Telefonszám (nemz. formátum, pl : +36705554433) ", + octopushSMSSender: "SMS küldő neve : 3-11 betű/szám (a-zA-Z0-9) vagy szóköz", + "LunaSea Device ID": "LunaSea eszköz ID", + "Apprise URL": "Apprise cím (URL)", + "Example:": "Például: {0}", + "Read more:": "Itt olvashat róla: {0}", + "Status:": "Állapot: {0}", + "Read more": "Tovább olvasom", + appriseInstalled: "Apprise telepítve.", + appriseNotInstalled: "Apprise nincs telepítve. {0}", + "Access Token": "Elérési token", + "Channel access token": "Csatorna elérési token", + "Line Developers Console": "Line Developers konzol", + lineDevConsoleTo: "Line Developers konzol - {0}", + "Basic Settings": "Alap beállítások", + "User ID": "Felhasználó ID", + "Messaging API": "Üzenet API", + wayToGetLineChannelToken: "{0} első eléréséhez készítsen egy Provider-t és csatornát (Messaging API), utána kaphatja meg a csatorna elérési token-t és felhasználó ID-t az alábbi menüpontban.", + "Icon URL": "Ikon cím (URL)", + aboutIconURL: "Megadhat egy webcímet az Ikon cím mezőben, ezzel felülírva az alapértelmezet képet. Nem kerül felhasználásra, ha az Emoji-k be vannak állítva.", + aboutMattermostChannelName: "Felülírhatja az alapértelmezett csatornát, ahova a webhook az adatokat küldi. Ehhez töltse ki a \"Csatorna neve\" mezőt (pl: #egyeb-csatorna). A Mattermost webhook beállításaiban további engedélyek szükségesek", + matrix: "Matrix", + promosmsTypeEco: "SMS ECO - olcsó, de lassú, gyakran túlterhelt. Csak lengyel címzettekhez.", + promosmsTypeFlash: "SMS FLASH - Az üzenet automatikusan megjelenik a fogadó eszközön. Csak lengyel címzettekhez.", + promosmsTypeFull: "SMS FULL - Prémium szintje az SMS-nek. Megadható a feladó neve, de előtte jóváhagyás szükséges. Ideális értesítésekhez.", + promosmsTypeSpeed: "SMS SPEED - A legmagasabb prioritás a rendszerben. Nagyon gyors és pontos, de költséges (kb. duplája a hagyományos SMS-nek).", + promosmsPhoneNumber: "Telefonszám (lengyel címzett esetén az országkód elhagyható)", + promosmsSMSSender: "SMS feladónév: Előre beállított név vagy az alábbiak egyike: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "Feishu webhook cím (URL)", + matrixHomeserverURL: "Homeserver cím (URL http(s):// előtaggal és opcionálisan port-tal)", + "Internal Room Id": "Belső Szoba ID", + matrixDesc1: "A belső szoba ID-t a szpbák speciális beállítások között találja meg a Matrix kliens programban. Így kell kinéznie: !QMdRCpUIfLwsfjxye6:home.server.", + matrixDesc2: "Erősen ajánlott készíteni egy új felhasználót és nem a teljes joggal rendelkező felhasználót használni. Az új felhasználó létrehozása után csak azokba a szobákba kell megjhívni a felhasználót, ahol értesítéseket szeretne kapni. Ezzel a művelettel lehet elérési token-t kérni: {0}", + Method: "Metódus", + Body: "Törzs", + Headers: "Fejlécek", + PushUrl: "Push cím (URL)", + HeadersInvalidFormat: "A kérés fejléc nem egy valós JSON: ", + BodyInvalidFormat: "A kérés törzse nem egy valós JSON: ", + "Monitor History": "Vizsgálatok előzményei", + clearDataOlderThan: "Előzmények megtartása {0} napig.", + PasswordsDoNotMatch: "Jelszó nem egyezik.", + records: "sorok", + "One record": "Egy sor", + steamApiKeyDescription: "Steam Game Server ellenőrzéséhez szükséges egy Steam Web-API kulcs. Itt létrehozhat egy API kulcsot: ", + "Current User": "Felhasználó", + recent: "Legújabb", + Done: "Kész", + Info: "Infó", + Security: "Biztonság", + "Steam API Key": "Steam API kulcs", + "Shrink Database": "Adatbázis tömörítése", + "Pick a RR-Type...": "Válasszon egy RR-típust...", + "Pick Accepted Status Codes...": "Válasszon olyan kódot, ami elfogadottnak számít...", + Default: "Alapért.", + "HTTP Options": "HTTP beállítások", + "Create Incident": "Incidens létrehozása", + Title: "Cím", + Content: "Tartalom", + Style: "Stílus", + info: "info", + warning: "warning", + danger: "danger", + primary: "primary", + light: "light", + dark: "dark", + Post: "Bejegyzés", + "Please input title and content": "Adjon meg címet és tartalmat", + Created: "Létrehozva", + "Last Updated": "Utolsó mód.", + Unpin: "Leválaszt", + "Switch to Light Theme": "Világos témára váltás", + "Switch to Dark Theme": "Sötét témára váltás", + "Show Tags": "Címkék mutatása", + "Hide Tags": "Címkék elrejtése", + Description: "Leírás", + "No monitors available.": "Nincs még figyelő beállítva.", + "Add one": "Adjon hozzá egyet", + "No Monitors": "Nincs figyelő", + "Untitled Group": "Névtelen csoport", + Services: "Szolgáltatások", + Discard: "Elvet", + Cancel: "Mégsem", + "Powered by": "A megoldást szállítja az", + shrinkDatabaseDescription: "VACUUM futtatása az SQLite-on. Ha az adatbázisod 1.10.0-nál újabb, akkor az AUTO_VACUUM engedélyezve van, nincs szükség a műveletre.", + serwersms: "SerwerSMS.pl", + serwersmsAPIUser: "API felhasználónév (webapi_ előtaggal együtt)", + serwersmsAPIPassword: "API jelszó", + serwersmsPhoneNumber: "Telefonszám", + serwersmsSenderName: "SMS feladó neve (regisztrált név az oldalon)", }; From b3d348dcea9433686c02170e8282d42f3005b31b Mon Sep 17 00:00:00 2001 From: Ioma Taani <iomataani@users.noreply.github.com> Date: Fri, 3 Dec 2021 08:48:11 +0100 Subject: [PATCH 122/142] Translation Update (#994) * Better translation * better translation * aggiornato --- src/languages/it-IT.js | 49 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 46 insertions(+), 3 deletions(-) diff --git a/src/languages/it-IT.js b/src/languages/it-IT.js index 6f4626fe7..4b035d4cb 100644 --- a/src/languages/it-IT.js +++ b/src/languages/it-IT.js @@ -166,7 +166,7 @@ export default { Orange: "Arancione", Green: "Verde", Blue: "Blu", - Indigo: "Indigo", + Indigo: "Indaco", Purple: "Viola", Pink: "Rosa", "Search...": "Cerca...", @@ -295,9 +295,9 @@ export default { matrixDesc2: "È altamente raccomandata la creazione di un nuovo utente e di non utilizare il proprio token di accesso Matrix poiché darà pieno controllo al proprio account e a tutte le stanze in cui si ha accesso. Piuttosto, si crei un nuovo utente per invitarlo nella stanza dove si vuole ricevere le notifiche. Si può accedere al token eseguendo {0}", Method: "Metodo", Body: "Corpo", - Headers: "Headers", + Headers: "Intestazioni", PushUrl: "URL di Push", - HeadersInvalidFormat: "L'header di richiesta non è un JSON valido: ", + HeadersInvalidFormat: "L'intestazione di richiesta non è un JSON valido: ", BodyInvalidFormat: "Il corpo di richiesta non è un JSON valido: ", "Monitor History": "Storico monitoraggio", clearDataOlderThan: "Mantieni lo storico per {0} giorni.", @@ -307,5 +307,48 @@ export default { steamApiKeyDescription: "Per monitorare un server di gioco Steam si necessita della chiave Web-API di Steam. È possibile registrare la propria chiave API qui: ", "Current User": "Utente corrente", recent: "Recenti", + Done: "Fatto", + Info: "Info", + Security: "Sicurezza", + "Steam API Key": "Chiave API di Steam", + "Shrink Database": "Comprimi Database", + "Pick a RR-Type...": "Scegli un tipo di RR...", + "Pick Accepted Status Codes...": "Scegli i codici di Stato Accettati...", + Default: "Predefinito", + "HTTP Options": "Opzioni HTTP", + "Create Incident": "Crea Incident", + Title: "Titolo", + Content: "Contenuto", + Style: "Stile", + info: "informativo", + warning: "attenzione", + danger: "critico", + primary: "primario", + light: "chiaro", + dark: "scuro", + Post: "Posta", + "Please input title and content": "Inserire il titolo e il contenuto", + Created: "Creato", + "Last Updated": "Ultima modifica", + Unpin: "Stacca", + "Switch to Light Theme": "Utilizza tema chiaro", + "Switch to Dark Theme": "Utilizza tema scuro", + "Show Tags": "Mostra etichette", + "Hide Tags": "Nascondi etichette", + Description: "Descrizione", + "No monitors available.": "Nessun monitoraggio disponibile.", + "Add one": "Aggiungi", + "No Monitors": "Nessun monitoraggio", + "Add one": "Aggiungi", + "Untitled Group": "Gruppo senza titolo", + Services: "Servizi", + Discard: "Scarta", + Cancel: "Annulla", + "Powered by": "Servito da", shrinkDatabaseDescription: "Lancia il comando VACUUM sul database SQLite. Se il database è stato creato dopo la versione 1.10.0, AUTO_VACUUM è già abilitato e questa azione non è necessaria.", + serwersms: "SerwerSMS.pl", + serwersmsAPIUser: "Nome utente API (incl. prefisso webapi_)", + serwersmsAPIPassword: "Password API", + serwersmsPhoneNumber: "Numero di Telefono", + serwersmsSenderName: "Nome del mittente SMS (registrato via portale cliente)", }; From 481fd3a05f1b566dade2c4ba2e1ff7da83acc81e Mon Sep 17 00:00:00 2001 From: Ashish Bansal <49029528+ashishsecdev@users.noreply.github.com> Date: Fri, 3 Dec 2021 13:19:46 +0530 Subject: [PATCH 123/142] Updated monitor service details in README.md (#990) * Updated monitor service details in README.md Added `Steam Gamer Server' to the monitor service list. * Update README.md * Update README.md * Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ecd33bcba..ea2281667 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ VPS is sponsored by Uptime Kuma sponsors on [Open Collective](https://opencollec ## ⭐ Features -* Monitoring uptime for HTTP(s) / TCP / Ping / DNS Record / Push. +* Monitoring uptime for HTTP(s) / TCP / HTTP(s) Keyword / Ping / DNS Record / Push / Steam Game Server. * Fancy, Reactive, Fast UI/UX. * Notifications via Telegram, Discord, Gotify, Slack, Pushover, Email (SMTP), and [70+ notification services, click here for the full list](https://github.com/louislam/uptime-kuma/tree/master/src/components/notifications). * 20 second intervals. From 984a3704e015b8729ab145d80e0f572325e68122 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bal=C3=A1zs=20Csaba?= <csaba@balazs-magyar.hu> Date: Fri, 3 Dec 2021 22:29:53 +0100 Subject: [PATCH 124/142] HU lang --- src/languages/hu.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/languages/hu.js b/src/languages/hu.js index 68758dd36..adcfce286 100644 --- a/src/languages/hu.js +++ b/src/languages/hu.js @@ -54,19 +54,19 @@ export default { Delete: "Törlés", Current: "Aktuális", Uptime: "Uptime", - "Cert Exp.": "Tanúsítvány lejár", - days: "napok", + "Cert Exp.": "SSL lejárat", + days: "nap", day: "nap", - "-day": "-nap", + "-day": " nap", hour: "óra", - "-hour": "-óra", + "-hour": " óra", Response: "Válasz", Ping: "Ping", "Monitor Type": "Figyelő típusa", Keyword: "Kulcsszó", "Friendly Name": "Rövid név", URL: "URL", - Hostname: "Hostnév", + Hostname: "Hosztnév", Port: "Port", "Heartbeat Interval": "Életjel időköz", Retries: "Újrapróbálkozás", @@ -131,9 +131,9 @@ export default { Events: "Események", Heartbeats: "Életjelek", "Auto Get": "Auto lekérd.", - backupDescription: "Ki tudja menteni az összes figyelőt és értesítést egy JSON fájlba.", - backupDescription2: "Ui.: Történeti és esemény adatokat nem tartalmaz.", - backupDescription3: "Érzékeny adatok, pl. szolgáltatás kulcsok is vannak az export fájlban. Figyelmesen őrizze!", + backupDescription: "Mentheti az összes figyelőt és értesítést egy JSON fájlba.", + backupDescription2: "Megj: Történeti és esemény adatokat nem tartalmaz.", + backupDescription3: "Érzékeny adatok, pl. szolgáltatás kulcsok is vannak az export fájlban. Figyeljen erre!", alertNoFile: "Válaszzon ki egy fájlt az importáláshoz.", alertWrongFileType: "Válasszon egy JSON fájlt.", "Clear all statistics": "Összes statisztika törlése", @@ -204,7 +204,7 @@ export default { defaultNotificationName: "{notification} értesítésem ({number})", here: "itt", Required: "Kötelező", - "Bot Token": "Hibás token", + "Bot Token": "BOT token", wayToGetTelegramToken: "Innen kaphat token-t: {0}.", "Chat ID": "Csevegés ID", supportTelegramChatID: "Támogatja a közvetlen csevegést, csoportnak küldést és csatona ID-t is", From 220108ebc6b7e95d8aa8e4172154ef33fcdf6327 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bal=C3=A1zs=20Csaba?= <csaba@balazs-magyar.hu> Date: Fri, 3 Dec 2021 22:39:38 +0100 Subject: [PATCH 125/142] Upgrade bree to 7.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 399ebb153..148f4aa7e 100644 --- a/package.json +++ b/package.json @@ -64,7 +64,7 @@ "axios": "~0.21.4", "bcryptjs": "~2.4.3", "bootstrap": "5.1.3", - "bree": "~6.3.1", + "bree": "^7.1.0", "chardet": "^1.3.0", "chart.js": "~3.6.0", "chartjs-adapter-dayjs": "~1.0.0", From 5a8162747c76340aad25c5777cd4a522e228bba1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bal=C3=A1zs=20Csaba?= <csaba@balazs-magyar.hu> Date: Fri, 3 Dec 2021 22:47:40 +0100 Subject: [PATCH 126/142] Upgrade qrcode to 1.5.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 148f4aa7e..489378657 100644 --- a/package.json +++ b/package.json @@ -87,7 +87,7 @@ "postcss-scss": "~4.0.2", "prom-client": "~13.2.0", "prometheus-api-metrics": "~3.2.0", - "qrcode": "~1.4.4", + "qrcode": "^1.5.0", "redbean-node": "0.1.3", "socket.io": "~4.2.0", "socket.io-client": "~4.2.0", From 19d2db6c8c99e5039656dfc01affb485aa430f88 Mon Sep 17 00:00:00 2001 From: Ioma Taani <iomataani@users.noreply.github.com> Date: Sat, 4 Dec 2021 11:19:56 +0100 Subject: [PATCH 127/142] better translation --- src/languages/it-IT.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/languages/it-IT.js b/src/languages/it-IT.js index 4b035d4cb..f76a3581c 100644 --- a/src/languages/it-IT.js +++ b/src/languages/it-IT.js @@ -134,7 +134,7 @@ export default { "Clear Data": "Cancella dati", Events: "Eventi", Heartbeats: "Controlli", - "Auto Get": "Auto Get", + "Auto Get": "Rileva", backupDescription: "È possibile fare il backup di tutti i monitoraggi e di tutte le notifiche in un file JSON.", backupDescription2: "P.S.: lo storico e i dati relativi agli eventi non saranno inclusi", backupDescription3: "Dati sensibili come i token di autenticazione saranno inclusi nel backup, tenere quindi in un luogo sicuro.", @@ -156,11 +156,11 @@ export default { Token: "Token", "Show URI": "Mostra URI", Tags: "Etichette", - "Add New below or Select...": "Aggiungine una oppure scegli...", + "Add New below or Select...": "Aggiungi oppure scegli...", "Tag with this name already exist.": "Un'etichetta con questo nome già esiste.", "Tag with this value already exist.": "Un'etichetta con questo valore già esiste.", - color: "colori", - "value (optional)": "valore (opzionale)", + color: "colore", + "value (optional)": "descrizione (opzionale)", Gray: "Grigio", Red: "Rosso", Orange: "Arancione", @@ -170,8 +170,8 @@ export default { Purple: "Viola", Pink: "Rosa", "Search...": "Cerca...", - "Avg. Ping": "Tempo di risposta al ping medio", - "Avg. Response": "Tempo di risposta medio", + "Avg. Ping": "Tempo medio di risposta al ping", + "Avg. Response": "Tempo medio di risposta", "Entry Page": "Pagina Principale", statusPageNothing: "Non c'è nulla qui, aggiungere un gruppo oppure un monitoraggio.", "No Services": "Nessun Servizio", From d47d8517a801b9826b3d6ce61aef77cf2f22a38d Mon Sep 17 00:00:00 2001 From: Louis <louislam@users.noreply.github.com> Date: Sun, 5 Dec 2021 16:05:52 +0800 Subject: [PATCH 128/142] update apprise to 0.9.6 --- docker/alpine-base.dockerfile | 2 +- docker/debian-base.dockerfile | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docker/alpine-base.dockerfile b/docker/alpine-base.dockerfile index 922fd2527..d162fe8fb 100644 --- a/docker/alpine-base.dockerfile +++ b/docker/alpine-base.dockerfile @@ -4,5 +4,5 @@ WORKDIR /app # Install apprise, iputils for non-root ping, setpriv RUN apk add --no-cache iputils setpriv dumb-init python3 py3-cryptography py3-pip py3-six py3-yaml py3-click py3-markdown py3-requests py3-requests-oauthlib && \ - pip3 --no-cache-dir install apprise && \ + pip3 --no-cache-dir install apprise==0.9.6 && \ rm -rf /root/.cache diff --git a/docker/debian-base.dockerfile b/docker/debian-base.dockerfile index a4d701674..83fd434be 100644 --- a/docker/debian-base.dockerfile +++ b/docker/debian-base.dockerfile @@ -4,9 +4,9 @@ FROM node:14-buster-slim WORKDIR /app # Install Apprise, add sqlite3 cli for debugging in the future, iputils-ping for ping, util-linux for setpriv -# Stupid python3 and python3-pip actually install a lot of useless things into Debian, specific --no-install-recommends to skip them, make the base even smaller than alpine! +# Stupid python3 and python3-pip actually install a lot of useless things into Debian, specify --no-install-recommends to skip them, make the base even smaller than alpine! RUN apt update && \ apt --yes --no-install-recommends install python3 python3-pip python3-cryptography python3-six python3-yaml python3-click python3-markdown python3-requests python3-requests-oauthlib \ sqlite3 iputils-ping util-linux dumb-init && \ - pip3 --no-cache-dir install apprise && \ + pip3 --no-cache-dir install apprise==0.9.6 && \ rm -rf /var/lib/apt/lists/* From b62f1475ee54d10fa2b06c18241cdedf90c4a0cf Mon Sep 17 00:00:00 2001 From: Louis <louislam@users.noreply.github.com> Date: Sun, 5 Dec 2021 16:28:59 +0800 Subject: [PATCH 129/142] =?UTF-8?q?=F0=9F=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 490 +++++++++++++++------------------------------- package.json | 4 +- 2 files changed, 165 insertions(+), 329 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9b2e0acc9..4790d60ee 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,7 +19,7 @@ "axios": "~0.21.4", "bcryptjs": "~2.4.3", "bootstrap": "5.1.3", - "bree": "~6.3.1", + "bree": "~7.1.0", "chardet": "^1.3.0", "chart.js": "~3.6.0", "chartjs-adapter-dayjs": "~1.0.0", @@ -42,7 +42,7 @@ "postcss-scss": "~4.0.2", "prom-client": "~13.2.0", "prometheus-api-metrics": "~3.2.0", - "qrcode": "~1.4.4", + "qrcode": "~1.5.0", "redbean-node": "0.1.3", "socket.io": "~4.2.0", "socket.io-client": "~4.2.0", @@ -86,7 +86,7 @@ "vite": "~2.6.14" }, "engines": { - "node": "14.*" + "node": "14.* || >=16.*" } }, "node_modules/@babel/code-frame": { @@ -3437,6 +3437,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "dependencies": { "color-convert": "^1.9.0" }, @@ -3891,6 +3892,7 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, "funding": [ { "type": "github", @@ -4044,27 +4046,24 @@ } }, "node_modules/bree": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/bree/-/bree-6.3.1.tgz", - "integrity": "sha512-FADpEV5c+3ZuFIBothyyRUxZClJD2PetIo0lmqAFJ3ZMI9WsSmQmmstZ86Dy0G4Gyw3nPNdfYTjV7+9pPtlB8g==", - "deprecated": "bree@7.0.0 drops support for the browser, Node <12.11.0, and removes bthreads entirely. Either upgrade to v7.0.0 or lock your bree version to v6.5.0.", - "dependencies": { - "@babel/runtime": "^7.12.5", - "@breejs/later": "^4.0.2", - "boolean": "^3.0.2", - "bthreads": "^0.5.1", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/bree/-/bree-7.1.0.tgz", + "integrity": "sha512-1bKJDODePYjIIUvt/ImO5PnitRQjZnTfMnsXq64LAWf2muXn9lCju0PnKoayIHdYzEMKepXr+YYY+Y+cmaVkHA==", + "dependencies": { + "@breejs/later": "^4.1.0", + "boolean": "^3.1.4", "combine-errors": "^3.0.3", - "cron-validate": "^1.4.1", - "debug": "^4.3.1", - "human-interval": "^2.0.0", + "cron-validate": "^1.4.3", + "debug": "^4.3.2", + "human-interval": "^2.0.1", "is-string-and-not-blank": "^0.0.2", "is-valid-path": "^0.1.1", - "ms": "^2.1.2", - "p-wait-for": "3.1.0", + "ms": "^2.1.3", + "p-wait-for": "3", "safe-timers": "^1.1.0" }, "engines": { - "node": ">= 10" + "node": ">= 12.11.0" } }, "node_modules/browser-process-hrtime": { @@ -4105,21 +4104,11 @@ "node-int64": "^0.4.0" } }, - "node_modules/bthreads": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/bthreads/-/bthreads-0.5.1.tgz", - "integrity": "sha512-nK7Jo9ll+r1FRMNPWEFRTZMQrX6HhX8JjPAofxmbTNILHqWVIJPmWzCi9JlX/K0DL5AKZTFZg2Qser5C6gVs9A==", - "dependencies": { - "bufio": "~1.0.5" - }, - "engines": { - "node": ">=8.0.0" - } - }, "node_modules/buffer": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, "funding": [ { "type": "github", @@ -4139,20 +4128,6 @@ "ieee754": "^1.1.13" } }, - "node_modules/buffer-alloc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", - "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", - "dependencies": { - "buffer-alloc-unsafe": "^1.1.0", - "buffer-fill": "^1.0.0" - } - }, - "node_modules/buffer-alloc-unsafe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" - }, "node_modules/buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", @@ -4167,23 +4142,11 @@ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" }, - "node_modules/buffer-fill": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=" - }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "node_modules/bufio": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/bufio/-/bufio-1.0.7.tgz", - "integrity": "sha512-bd1dDQhiC+bEbEfg56IdBv7faWa6OipMs/AFFFvtFnB3wAYjlwQpQRZ0pm6ZkgtfL0pILRXhKxOiQj6UzoMR7A==", - "engines": { - "node": ">=8.0.0" - } + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true }, "node_modules/bytes": { "version": "3.1.0", @@ -4465,6 +4428,7 @@ "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, "dependencies": { "color-name": "1.1.3" } @@ -4472,7 +4436,8 @@ "node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, "node_modules/color-support": { "version": "1.1.3", @@ -5061,6 +5026,11 @@ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, + "node_modules/encode-utf8": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", + "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==" + }, "node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", @@ -6384,7 +6354,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -6976,6 +6945,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, "funding": [ { "type": "github", @@ -7380,11 +7350,6 @@ "node": ">=0.10.0" } }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" - }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -9713,7 +9678,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, "dependencies": { "p-locate": "^4.1.0" }, @@ -10783,7 +10747,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, "dependencies": { "p-limit": "^2.2.0" }, @@ -11033,11 +10996,11 @@ } }, "node_modules/pngjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", - "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==", "engines": { - "node": ">=4.0.0" + "node": ">=10.13.0" } }, "node_modules/postcss": { @@ -11516,133 +11479,73 @@ } }, "node_modules/qrcode": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.4.4.tgz", - "integrity": "sha512-oLzEC5+NKFou9P0bMj5+v6Z40evexeE29Z9cummZXZ9QXyMr3lphkURzxjXgPJC5azpxcshoDWV1xE46z+/c3Q==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.0.tgz", + "integrity": "sha512-9MgRpgVc+/+47dFvQeD6U2s0Z92EsKzcHogtum4QB+UNd025WOJSHvn/hjk9xmzj7Stj95CyUAs31mrjxliEsQ==", "dependencies": { - "buffer": "^5.4.3", - "buffer-alloc": "^1.2.0", - "buffer-from": "^1.1.1", "dijkstrajs": "^1.0.1", - "isarray": "^2.0.1", - "pngjs": "^3.3.0", - "yargs": "^13.2.4" + "encode-utf8": "^1.0.3", + "pngjs": "^5.0.0", + "yargs": "^15.3.1" }, "bin": { "qrcode": "bin/qrcode" }, "engines": { - "node": ">=4" - } - }, - "node_modules/qrcode/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/qrcode/node_modules/cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" + "node": ">=10.13.0" } }, - "node_modules/qrcode/node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - }, - "node_modules/qrcode/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "node_modules/qrcode/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { - "locate-path": "^3.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=6" - } - }, - "node_modules/qrcode/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "engines": { - "node": ">=4" - } - }, - "node_modules/qrcode/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "node": ">=8" }, - "engines": { - "node": ">=6" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/qrcode/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "node_modules/qrcode/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/qrcode/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "engines": { - "node": ">=4" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" } }, - "node_modules/qrcode/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "node_modules/qrcode/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=6" + "node": ">=7.0.0" } }, - "node_modules/qrcode/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } + "node_modules/qrcode/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/qrcode/node_modules/wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/qrcode/node_modules/y18n": { @@ -11651,29 +11554,36 @@ "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" }, "node_modules/qrcode/node_modules/yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", "dependencies": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", - "string-width": "^3.0.0", + "string-width": "^4.2.0", "which-module": "^2.0.0", "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" } }, "node_modules/qrcode/node_modules/yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "dependencies": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" } }, "node_modules/qs": { @@ -17087,6 +16997,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -17447,7 +17358,8 @@ "base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true }, "base64id": { "version": "2.0.0", @@ -17567,22 +17479,20 @@ } }, "bree": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/bree/-/bree-6.3.1.tgz", - "integrity": "sha512-FADpEV5c+3ZuFIBothyyRUxZClJD2PetIo0lmqAFJ3ZMI9WsSmQmmstZ86Dy0G4Gyw3nPNdfYTjV7+9pPtlB8g==", - "requires": { - "@babel/runtime": "^7.12.5", - "@breejs/later": "^4.0.2", - "boolean": "^3.0.2", - "bthreads": "^0.5.1", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/bree/-/bree-7.1.0.tgz", + "integrity": "sha512-1bKJDODePYjIIUvt/ImO5PnitRQjZnTfMnsXq64LAWf2muXn9lCju0PnKoayIHdYzEMKepXr+YYY+Y+cmaVkHA==", + "requires": { + "@breejs/later": "^4.1.0", + "boolean": "^3.1.4", "combine-errors": "^3.0.3", - "cron-validate": "^1.4.1", - "debug": "^4.3.1", - "human-interval": "^2.0.0", + "cron-validate": "^1.4.3", + "debug": "^4.3.2", + "human-interval": "^2.0.1", "is-string-and-not-blank": "^0.0.2", "is-valid-path": "^0.1.1", - "ms": "^2.1.2", - "p-wait-for": "3.1.0", + "ms": "^2.1.3", + "p-wait-for": "3", "safe-timers": "^1.1.0" } }, @@ -17614,37 +17524,16 @@ "node-int64": "^0.4.0" } }, - "bthreads": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/bthreads/-/bthreads-0.5.1.tgz", - "integrity": "sha512-nK7Jo9ll+r1FRMNPWEFRTZMQrX6HhX8JjPAofxmbTNILHqWVIJPmWzCi9JlX/K0DL5AKZTFZg2Qser5C6gVs9A==", - "requires": { - "bufio": "~1.0.5" - } - }, "buffer": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, "requires": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" } }, - "buffer-alloc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", - "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", - "requires": { - "buffer-alloc-unsafe": "^1.1.0", - "buffer-fill": "^1.0.0" - } - }, - "buffer-alloc-unsafe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" - }, "buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", @@ -17656,20 +17545,11 @@ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" }, - "buffer-fill": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=" - }, "buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "bufio": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/bufio/-/bufio-1.0.7.tgz", - "integrity": "sha512-bd1dDQhiC+bEbEfg56IdBv7faWa6OipMs/AFFFvtFnB3wAYjlwQpQRZ0pm6ZkgtfL0pILRXhKxOiQj6UzoMR7A==" + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true }, "bytes": { "version": "3.1.0", @@ -17884,6 +17764,7 @@ "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.3" } @@ -17891,7 +17772,8 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, "color-support": { "version": "1.1.3", @@ -18361,6 +18243,11 @@ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, + "encode-utf8": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", + "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==" + }, "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", @@ -19330,7 +19217,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, "requires": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -19769,7 +19655,8 @@ "ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true }, "ignore": { "version": "4.0.6", @@ -20053,11 +19940,6 @@ "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=", "dev": true }, - "isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" - }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -21809,7 +21691,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, "requires": { "p-locate": "^4.1.0" } @@ -22630,7 +22511,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, "requires": { "p-limit": "^2.2.0" } @@ -22810,9 +22690,9 @@ "integrity": "sha1-tUGO8EOd5UJfxJlQQtztFPsqhP8=" }, "pngjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", - "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==" }, "postcss": { "version": "8.3.11", @@ -23170,100 +23050,55 @@ } }, "qrcode": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.4.4.tgz", - "integrity": "sha512-oLzEC5+NKFou9P0bMj5+v6Z40evexeE29Z9cummZXZ9QXyMr3lphkURzxjXgPJC5azpxcshoDWV1xE46z+/c3Q==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.0.tgz", + "integrity": "sha512-9MgRpgVc+/+47dFvQeD6U2s0Z92EsKzcHogtum4QB+UNd025WOJSHvn/hjk9xmzj7Stj95CyUAs31mrjxliEsQ==", "requires": { - "buffer": "^5.4.3", - "buffer-alloc": "^1.2.0", - "buffer-from": "^1.1.1", "dijkstrajs": "^1.0.1", - "isarray": "^2.0.1", - "pngjs": "^3.3.0", - "yargs": "^13.2.4" + "encode-utf8": "^1.0.3", + "pngjs": "^5.0.0", + "yargs": "^15.3.1" }, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" - }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "requires": { - "locate-path": "^3.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "color-convert": "^2.0.1" } }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "requires": { - "p-limit": "^2.0.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" } }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "color-name": "~1.1.4" } }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "requires": { - "ansi-regex": "^4.1.0" - } + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" } }, "y18n": { @@ -23272,26 +23107,27 @@ "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" }, "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", - "string-width": "^3.0.0", + "string-width": "^4.2.0", "which-module": "^2.0.0", "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" + "yargs-parser": "^18.1.2" } }, "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" diff --git a/package.json b/package.json index 489378657..69aca8bb2 100644 --- a/package.json +++ b/package.json @@ -64,7 +64,7 @@ "axios": "~0.21.4", "bcryptjs": "~2.4.3", "bootstrap": "5.1.3", - "bree": "^7.1.0", + "bree": "~7.1.0", "chardet": "^1.3.0", "chart.js": "~3.6.0", "chartjs-adapter-dayjs": "~1.0.0", @@ -87,7 +87,7 @@ "postcss-scss": "~4.0.2", "prom-client": "~13.2.0", "prometheus-api-metrics": "~3.2.0", - "qrcode": "^1.5.0", + "qrcode": "~1.5.0", "redbean-node": "0.1.3", "socket.io": "~4.2.0", "socket.io-client": "~4.2.0", From d645e29455e850792d63d01bb3d26080878f5993 Mon Sep 17 00:00:00 2001 From: Louis <louislam@users.noreply.github.com> Date: Sun, 5 Dec 2021 17:40:13 +0800 Subject: [PATCH 130/142] mask telegram api url with asterisk --- src/components/notifications/Telegram.vue | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/components/notifications/Telegram.vue b/src/components/notifications/Telegram.vue index 55ff7ec45..d263f636f 100644 --- a/src/components/notifications/Telegram.vue +++ b/src/components/notifications/Telegram.vue @@ -25,7 +25,7 @@ </p> <p style="margin-top: 8px;"> - <a :href="telegramGetUpdatesURL(true)" target="_blank" style="word-break: break-word;">{{ telegramGetUpdatesURL() }}</a> + <a :href="telegramGetUpdatesURL('withToken')" target="_blank" style="word-break: break-word;">{{ telegramGetUpdatesURL("masked") }}</a> </p> </div> </div> @@ -42,18 +42,22 @@ export default { HiddenInput, }, methods: { - telegramGetUpdatesURL(withToken = false) { + telegramGetUpdatesURL(mode = "masked") { let token = `<${this.$t("YOUR BOT TOKEN HERE")}>`; - if (this.$parent.notification.telegramBotToken && withToken) { - token = this.$parent.notification.telegramBotToken; + if (this.$parent.notification.telegramBotToken) { + if (mode === "withToken") { + token = this.$parent.notification.telegramBotToken; + } else if (mode === "masked") { + token = "*".repeat(this.$parent.notification.telegramBotToken.length); + } } return `https://api.telegram.org/bot${token}/getUpdates`; }, async autoGetTelegramChatID() { try { - let res = await axios.get(this.telegramGetUpdatesURL(true)); + let res = await axios.get(this.telegramGetUpdatesURL("withToken")); if (res.data.result.length >= 1) { let update = res.data.result[res.data.result.length - 1]; From 03aeab04219b6c4e2ef003aaddcb6301fc772f97 Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Mon, 6 Dec 2021 17:31:25 +0800 Subject: [PATCH 131/142] close issues that don't follow the issue template Copy from axios --- .github/workflows/close-issue.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 .github/workflows/close-issue.yml diff --git a/.github/workflows/close-issue.yml b/.github/workflows/close-issue.yml new file mode 100644 index 000000000..2127fe166 --- /dev/null +++ b/.github/workflows/close-issue.yml @@ -0,0 +1,17 @@ +name: 'Close Invalid Issues' + +on: + issues: + types: [opened] + +jobs: + auto_close_issues: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Automatically close issues that don't follow the issue template + uses: lucasbento/auto-close-issues@v1.0.2 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + issue-close-message: 'Hello! :wave: \n\nThis issue is being automatically closed because it does not follow the issue template. Please read the issue template carefully and follow all of the instructions when opening a new issue. \n\nThanks' From 88bc08e7b758377636fd286d5aec58170ebce226 Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Mon, 6 Dec 2021 17:36:18 +0800 Subject: [PATCH 132/142] Update close-issue.yml --- .github/workflows/close-issue.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/close-issue.yml b/.github/workflows/close-issue.yml index 2127fe166..f6eb0ebc0 100644 --- a/.github/workflows/close-issue.yml +++ b/.github/workflows/close-issue.yml @@ -9,7 +9,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v1 - name: Automatically close issues that don't follow the issue template uses: lucasbento/auto-close-issues@v1.0.2 with: From c8e364911fbbc4be873c405f4b8704bc403c1a35 Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Mon, 6 Dec 2021 17:46:46 +0800 Subject: [PATCH 133/142] Delete close-issue.yml, no idea why not working --- .github/workflows/close-issue.yml | 17 ----------------- 1 file changed, 17 deletions(-) delete mode 100644 .github/workflows/close-issue.yml diff --git a/.github/workflows/close-issue.yml b/.github/workflows/close-issue.yml deleted file mode 100644 index f6eb0ebc0..000000000 --- a/.github/workflows/close-issue.yml +++ /dev/null @@ -1,17 +0,0 @@ -name: 'Close Invalid Issues' - -on: - issues: - types: [opened] - -jobs: - auto_close_issues: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v1 - - name: Automatically close issues that don't follow the issue template - uses: lucasbento/auto-close-issues@v1.0.2 - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - issue-close-message: 'Hello! :wave: \n\nThis issue is being automatically closed because it does not follow the issue template. Please read the issue template carefully and follow all of the instructions when opening a new issue. \n\nThanks' From f80215445607af4f02f9143a362f1c53e091bbe2 Mon Sep 17 00:00:00 2001 From: Ioma Taani <iomataani@users.noreply.github.com> Date: Mon, 6 Dec 2021 11:33:39 +0100 Subject: [PATCH 134/142] updated --- src/languages/it-IT.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/languages/it-IT.js b/src/languages/it-IT.js index f76a3581c..20ee93db0 100644 --- a/src/languages/it-IT.js +++ b/src/languages/it-IT.js @@ -351,4 +351,5 @@ export default { serwersmsAPIPassword: "Password API", serwersmsPhoneNumber: "Numero di Telefono", serwersmsSenderName: "Nome del mittente SMS (registrato via portale cliente)", + "stackfield": "Stackfield", }; From a041a7964aa22682661bfed08976122cc5c55a85 Mon Sep 17 00:00:00 2001 From: iooner <contact@iooner.be> Date: Tue, 7 Dec 2021 14:23:13 +0100 Subject: [PATCH 135/142] Fix typos --- src/languages/fr-FR.js | 48 +++++++++++++++++++++--------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/src/languages/fr-FR.js b/src/languages/fr-FR.js index 92083a387..4cf863efb 100644 --- a/src/languages/fr-FR.js +++ b/src/languages/fr-FR.js @@ -1,5 +1,5 @@ export default { - languageName: "Français (France)", + languageName: "Français", checkEverySecond: "Vérifier toutes les {0} secondes", retryCheckEverySecond: "Réessayer toutes les {0} secondes.", retriesDescription: "Nombre d'essais avant que le service soit déclaré hors-ligne.", @@ -13,17 +13,17 @@ export default { pauseDashboardHome: "En pause", deleteMonitorMsg: "Êtes-vous sûr de vouloir supprimer cette sonde ?", deleteNotificationMsg: "Êtes-vous sûr de vouloir supprimer ce type de notifications ? Une fois désactivée, les services qui l'utilisent ne pourront plus envoyer de notifications.", - resoverserverDescription: "Le DNS de cloudflare est utilisé par défaut, mais vous pouvez le changer si vous le souhaitez.", - rrtypeDescription: "Veuillez séléctionner un type d'enregistrement DNS", + resoverserverDescription: "Le DNS de Cloudflare est utilisé par défaut, mais vous pouvez le changer si vous le souhaitez.", + rrtypeDescription: "Veuillez sélectionner un type d'enregistrement DNS", pauseMonitorMsg: "Êtes-vous sûr de vouloir mettre en pause cette sonde ?", enableDefaultNotificationDescription: "Pour chaque nouvelle sonde, cette notification sera activée par défaut. Vous pouvez toujours désactiver la notification séparément pour chaque sonde.", clearEventsMsg: "Êtes-vous sûr de vouloir supprimer tous les événements pour cette sonde ?", - clearHeartbeatsMsg: "Êtes-vous sûr de vouloir supprimer tous les vérifications pour cette sonde ?", - confirmClearStatisticsMsg: "Êtes-vous sûr de vouloir supprimer tous les statistiques ?", + clearHeartbeatsMsg: "Êtes-vous sûr de vouloir supprimer toutes les vérifications pour cette sonde ?", + confirmClearStatisticsMsg: "Êtes-vous sûr de vouloir supprimer toutes les statistiques ?", importHandleDescription: "Choisissez 'Ignorer l'existant' si vous voulez ignorer chaque sonde ou notification portant le même nom. L'option 'Écraser' supprime toutes les sondes et notifications existantes.", confirmImportMsg: "Êtes-vous sûr de vouloir importer la sauvegarde ? Veuillez vous assurer que vous avez sélectionné la bonne option d'importation.", twoFAVerifyLabel: "Veuillez saisir votre jeton pour vérifier que le système 2FA fonctionne.", - tokenValidSettingsMsg: "Le jeton est valide ; Vous pouvez maintenant sauvegarder les paramètres 2FA.", + tokenValidSettingsMsg: "Le jeton est valide. Vous pouvez maintenant sauvegarder les paramètres 2FA.", confirmEnableTwoFAMsg: "Êtes-vous sûr de vouloir activer le 2FA ?", confirmDisableTwoFAMsg: "Êtes-vous sûr de vouloir désactiver le 2FA ?", Settings: "Paramètres", @@ -68,9 +68,9 @@ export default { URL: "URL", Hostname: "Nom d'hôte / adresse IP", Port: "Port", - "Heartbeat Interval": "Intervale de vérification", + "Heartbeat Interval": "Intervalle de vérification", Retries: "Essais", - "Heartbeat Retry Interval": "Réessayer l'intervale de vérification", + "Heartbeat Retry Interval": "Réessayer l'intervalle de vérification", Advanced: "Avancé", "Upside Down Mode": "Mode inversé", "Max. Redirects": "Nombre maximum de redirections", @@ -107,8 +107,8 @@ export default { Password: "Mot de passe", "Remember me": "Se souvenir de moi", Login: "Se connecter", - "No Monitors, please": "Pas de sondes, veuillez ", - "add one": "en ajouter une.", + "No Monitors, please": "Pas de sondes, veuillez", + "add one": "en ajouter une", "Notification Type": "Type de notification", Email: "Email", Test: "Tester", @@ -132,7 +132,7 @@ export default { Heartbeats: "Vérfications", "Auto Get": "Récuperer automatiquement", backupDescription: "Vous pouvez sauvegarder toutes les sondes et toutes les notifications dans un fichier JSON.", - backupDescription2: "PS: Les données relatives à l'historique et aux événements ne sont pas incluses.", + backupDescription2: "PS : Les données relatives à l'historique et aux événements ne sont pas incluses.", backupDescription3: "Les données sensibles telles que les jetons de notification sont incluses dans le fichier d'exportation, veuillez les conserver soigneusement.", alertNoFile: "Veuillez sélectionner un fichier à importer.", alertWrongFileType: "Veuillez sélectionner un fichier JSON à importer.", @@ -196,7 +196,7 @@ export default { webhookJsonDesc: "{0} est bien/bon pour tous les serveurs HTTP modernes comme express.js", webhookFormDataDesc: "{multipart} est bien/bon pour du PHP, vous avez juste besoin de mettre le json via/depuis {decodeFunction}", smtp: "Email (SMTP)", - secureOptionNone: "Aucun / STARTTLS (25, 587)", + secureOptionNone: "Aucun/STARTTLS (25, 587)", secureOptionTLS: "TLS (465)", "Ignore TLS Error": "Ignorer les erreurs TLS", "From Email": "Depuis l'Email", @@ -217,7 +217,7 @@ export default { Recipients: "Destinataires", needSignalAPI: "Vous avez besoin d'un client Signal avec l'API REST.", wayToCheckSignalURL: "Vous pouvez regarder l'URL sur comment le mettre en place :", - signalImportant: "IMPORTANT: Vous ne pouvez pas mixer les groupes et les numéros en destinataires !", + signalImportant: "IMPORTANT : Vous ne pouvez pas mixer les groupes et les numéros en destinataires !", gotify: "Gotify", "Application Token": "Application Token", "Server URL": "Server URL", @@ -226,7 +226,7 @@ export default { "Icon Emoji": "Icon Emoji", "Channel Name": "Nom du salon", "Uptime Kuma URL": "Uptime Kuma URL", - aboutWebhooks: "Plus d'informations sur les Webhooks ici: {0}", + aboutWebhooks: "Plus d'informations sur les Webhooks ici : {0}", aboutChannelName: "Mettez le nom du salon dans {0} dans 'Channel Name' si vous voulez bypass le salon Webhook. Ex : #autre-salon", aboutKumaURL: "Si vous laissez l'URL d'Uptime Kuma vierge, elle redirigera vers la page du projet GitHub.", emojiCheatSheet: "Emoji cheat sheet : {0}", @@ -244,14 +244,14 @@ export default { Device: "Appareil", "Message Title": "Titre du message", "Notification Sound": "Son de notification", - "More info on:": "Plus d'informations sur: {0}", + "More info on:": "Plus d'informations sur : {0}", pushoverDesc1: "Priorité d'urgence (2) a par défaut 30 secondes de délai dépassé entre les tentatives et expierera après 1 heure.", pushoverDesc2: "Si vous voulez envoyer des notifications sur différents Appareils, remplissez le champ 'Device'.", "SMS Type": "SMS Type", octopushTypePremium: "Premium (Rapide - recommandé pour les alertes)", - octopushTypeLowCost: "A bas prix (Lent, bloqué de temps en temps par l'opérateur)", + octopushTypeLowCost: "À bas prix (Lent, bloqué de temps en temps par l'opérateur)", "Check octopush prices": "Vérifier les prix d'octopush {0}.", - octopushPhoneNumber: "Numéro de téléphone (format intérn., ex : +33612345678) ", + octopushPhoneNumber: "Numéro de téléphone (format int., ex : +33612345678) ", octopushSMSSender: "Nom de l'envoyer : 3-11 caractères alphanumériques avec espace (a-zA-Z0-9)", "LunaSea Device ID": "LunaSea Device ID", "Apprise URL": "Apprise URL", @@ -259,8 +259,8 @@ export default { "Read more:": "En savoir plus : {0}", "Status:": "Status : {0}", "Read more": "En savoir plus", - appriseInstalled: "Apprise est intallé.", - appriseNotInstalled: "Apprise n'est pas intallé. {0}", + appriseInstalled: "Apprise est installé.", + appriseNotInstalled: "Apprise n'est pas installé. {0}", "Access Token": "Access Token", "Channel access token": "Channel access token", "Line Developers Console": "Line Developers Console", @@ -278,30 +278,30 @@ export default { promosmsTypeFull: "SMS FULL - Version Premium des SMS, Vous pouvez mettre le nom de l'expéditeur (Vous devez vous enregistrer avant). Fiable pour les alertes.", promosmsTypeSpeed: "SMS SPEED - La plus haute des priorités dans le système. Très rapide et fiable mais cher (environ le double du prix d'un SMS FULL).", promosmsPhoneNumber: "Numéro de téléphone (Poiur les déstinataires Polonais, vous pouvez enlever les codes interna.)", - promosmsSMSSender: "SMS Expéditeur : Nom pré-enregistré ou l'un de base: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + promosmsSMSSender: "SMS Expéditeur : Nom pré-enregistré ou l'un de base : InfoSMS, SMS Info, MaxSMS, INFO, SMS", "Primary Base URL": "Primary Base URL", emailCustomSubject: "Sujet personalisé", clicksendsms: "ClickSend SMS", - checkPrice: "Vérification {0} tarifs:", + checkPrice: "Vérification {0} tarifs :", apiCredentials: "Crédentials de l'API", octopushLegacyHint: "Vous utilisez l'ancienne version d'Octopush (2011-2020) ou la nouvelle version ?", "Feishu WebHookUrl": "Feishu WebHookURL", matrixHomeserverURL: "L'URL du serveur (avec http(s):// et le port de manière facultatif)", "Internal Room Id": "ID de la salle interne", - matrixDesc1: "Vous pouvez trouvez l'ID de salle interne en regardant dans la section avancée des paramètres dans le client Matrix. C'est sensé ressembler à: !QMdRCpUIfLwsfjxye6:home.server.", + matrixDesc1: "Vous pouvez trouver l'ID de salle interne en regardant dans la section avancée des paramètres dans le client Matrix. C'est censé ressembler à !QMdRCpUIfLwsfjxye6:home.server.", matrixDesc2: "Il est fortement recommandé de créer un nouvel utilisateur et de ne pas utiliser le jeton d'accès de votre propre utilisateur Matrix, car il vous donnera un accès complet à votre compte et à toutes les salles que vous avez rejointes. Au lieu de cela, créez un nouvel utilisateur et invitez-le uniquement dans la salle dans laquelle vous souhaitez recevoir la notification. Vous pouvez obtenir le jeton d'accès en exécutant {0}", Method: "Méthode", Body: "Le corps", Headers: "En-têtes", PushUrl: "Push URL", - HeadersInvalidFormat: "L'en-têtes de la requête n'est pas dans un format JSON valide: ", + HeadersInvalidFormat: "Les en-têtes de la requête ne sont pas dans un format JSON valide: ", BodyInvalidFormat: "Le corps de la requête n'est pas dans un format JSON valide: ", "Monitor History": "Historique de la sonde", clearDataOlderThan: "Garder l'historique des données de la sonde durant {0} jours.", PasswordsDoNotMatch: "Les mots de passe ne correspondent pas.", records: "Enregistrements", "One record": "Un enregistrement", - steamApiKeyDescription: "Pour surveiller un serveur Steam, vous avez besoin d'une clé Steam Web-API. Vous pouvez enregistrer votre clé ici: ", + steamApiKeyDescription: "Pour surveiller un serveur Steam, vous avez besoin d'une clé Steam Web-API. Vous pouvez enregistrer votre clé ici : ", "Current User": "Utilisateur actuel", recent: "Récent", }; From dcc91d6c7258707caf1df65eb07d3b21845dfc9e Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Wed, 8 Dec 2021 14:59:59 +0800 Subject: [PATCH 136/142] Fix #922 --- server/model/monitor.js | 12 ++++++++++++ server/routers/api-router.js | 12 ++++-------- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/server/model/monitor.js b/server/model/monitor.js index ab0c1d409..6aa614b74 100644 --- a/server/model/monitor.js +++ b/server/model/monitor.js @@ -296,6 +296,9 @@ class Monitor extends BeanModel { debug("heartbeatCount" + heartbeatCount + " " + time); if (heartbeatCount <= 0) { + // Fix #922, since previous heartbeat could be inserted by api, it should get from database + previousBeat = await Monitor.getPreviousHeartbeat(this.id); + throw new Error("No heartbeat in the time window"); } else { // No need to insert successful heartbeat for push type, so end here @@ -751,6 +754,15 @@ class Monitor extends BeanModel { debug("No notification, no need to send cert notification"); } } + + static async getPreviousHeartbeat(monitorID) { + return await R.getRow(` + SELECT status, time FROM heartbeat + WHERE id = (select MAX(id) from heartbeat where monitor_id = ?) + `, [ + monitorID + ]); + } } module.exports = Monitor; diff --git a/server/routers/api-router.js b/server/routers/api-router.js index 79e828378..70d94673f 100644 --- a/server/routers/api-router.js +++ b/server/routers/api-router.js @@ -31,12 +31,7 @@ router.get("/api/push/:pushToken", async (request, response) => { throw new Error("Monitor not found or not active."); } - const previousHeartbeat = await R.getRow(` - SELECT status, time FROM heartbeat - WHERE id = (select MAX(id) from heartbeat where monitor_id = ?) - `, [ - monitor.id - ]); + const previousHeartbeat = await Monitor.getPreviousHeartbeat(monitor.id); let status = UP; if (monitor.isUpsideDown()) { @@ -157,8 +152,9 @@ router.get("/api/status-page/monitor-list", cache("5 minutes"), async (_request, JOIN tag ON monitor_tag.tag_id = tag.id WHERE monitor_tag.monitor_id = ?`, [monitor.id] - ); - return {...monitor, tags: tags} + ); + return { ...monitor, + tags: tags }; })); } From d4bfe57b7994231cbb48096706dac5555c9af9c0 Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Wed, 8 Dec 2021 15:04:18 +0800 Subject: [PATCH 137/142] minor: improve formatting --- server/routers/api-router.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/server/routers/api-router.js b/server/routers/api-router.js index 70d94673f..1920cef71 100644 --- a/server/routers/api-router.js +++ b/server/routers/api-router.js @@ -153,8 +153,10 @@ router.get("/api/status-page/monitor-list", cache("5 minutes"), async (_request, ON monitor_tag.tag_id = tag.id WHERE monitor_tag.monitor_id = ?`, [monitor.id] ); - return { ...monitor, - tags: tags }; + return { + ...monitor, + tags: tags + }; })); } From 7899707582e4a0a9b766f906932505254278b3be Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Wed, 8 Dec 2021 15:17:37 +0800 Subject: [PATCH 138/142] update to 1.11.0 --- package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 69aca8bb2..38f018e9e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "uptime-kuma", - "version": "1.10.2", + "version": "1.11.0", "license": "MIT", "repository": { "type": "git", @@ -30,13 +30,13 @@ "build-docker": "npm run build-docker-debian && npm run build-docker-alpine", "build-docker-alpine-base": "docker buildx build -f docker/alpine-base.dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:base-alpine . --push", "build-docker-debian-base": "docker buildx build -f docker/debian-base.dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:base-debian . --push", - "build-docker-alpine": "docker buildx build -f docker/dockerfile-alpine --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:alpine -t louislam/uptime-kuma:1-alpine -t louislam/uptime-kuma:1.10.2-alpine --target release . --push", - "build-docker-debian": "docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma -t louislam/uptime-kuma:1 -t louislam/uptime-kuma:1.10.2 -t louislam/uptime-kuma:debian -t louislam/uptime-kuma:1-debian -t louislam/uptime-kuma:1.10.2-debian --target release . --push", + "build-docker-alpine": "docker buildx build -f docker/dockerfile-alpine --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:alpine -t louislam/uptime-kuma:1-alpine -t louislam/uptime-kuma:1.11.0-alpine --target release . --push", + "build-docker-debian": "docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma -t louislam/uptime-kuma:1 -t louislam/uptime-kuma:1.11.0 -t louislam/uptime-kuma:debian -t louislam/uptime-kuma:1-debian -t louislam/uptime-kuma:1.11.0-debian --target release . --push", "build-docker-nightly": "docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:nightly --target nightly . --push", "build-docker-nightly-alpine": "docker buildx build -f docker/dockerfile-alpine --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:nightly-alpine --target nightly . --push", "build-docker-nightly-amd64": "docker buildx build -f docker/dockerfile --platform linux/amd64 -t louislam/uptime-kuma:nightly-amd64 --target nightly . --push --progress plain", "upload-artifacts": "docker buildx build -f docker/dockerfile --platform linux/amd64 -t louislam/uptime-kuma:upload-artifact --build-arg GITHUB_TOKEN --target upload-artifact . --progress plain", - "setup": "git checkout 1.10.2 && npm ci --production && npm run download-dist", + "setup": "git checkout 1.11.0 && npm ci --production && npm run download-dist", "download-dist": "node extra/download-dist.js", "update-version": "node extra/update-version.js", "mark-as-nightly": "node extra/mark-as-nightly.js", From c91f517121c28707dac0bd1f898e5f10f9682abc Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Wed, 8 Dec 2021 15:25:43 +0800 Subject: [PATCH 139/142] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index ea2281667..d870d6175 100644 --- a/README.md +++ b/README.md @@ -41,6 +41,8 @@ docker volume create uptime-kuma docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:1 ``` +⚠️ Please use a **local volume** only. Other types such as NFS are not supported. + Browse to http://localhost:3001 after starting. ### 💪🏻 Non-Docker From f9cd0eb084bda06dd20d6a1d7533bf682a889fda Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Wed, 8 Dec 2021 15:35:44 +0800 Subject: [PATCH 140/142] fix upload-artifacts --- docker/dockerfile | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/dockerfile b/docker/dockerfile index efbbfe6f2..a9984351b 100644 --- a/docker/dockerfile +++ b/docker/dockerfile @@ -33,7 +33,7 @@ RUN apt update && \ COPY --from=build /app /app -ARG VERSION=1.9.1 +ARG VERSION ARG GITHUB_TOKEN ARG TARGETARCH ARG PLATFORM=debian diff --git a/package.json b/package.json index 38f018e9e..1a5424df8 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "build-docker-nightly": "docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:nightly --target nightly . --push", "build-docker-nightly-alpine": "docker buildx build -f docker/dockerfile-alpine --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:nightly-alpine --target nightly . --push", "build-docker-nightly-amd64": "docker buildx build -f docker/dockerfile --platform linux/amd64 -t louislam/uptime-kuma:nightly-amd64 --target nightly . --push --progress plain", - "upload-artifacts": "docker buildx build -f docker/dockerfile --platform linux/amd64 -t louislam/uptime-kuma:upload-artifact --build-arg GITHUB_TOKEN --target upload-artifact . --progress plain", + "upload-artifacts": "docker buildx build -f docker/dockerfile --platform linux/amd64 -t louislam/uptime-kuma:upload-artifact --build-arg VERSION --build-arg GITHUB_TOKEN --target upload-artifact . --progress plain", "setup": "git checkout 1.11.0 && npm ci --production && npm run download-dist", "download-dist": "node extra/download-dist.js", "update-version": "node extra/update-version.js", From a4841eb8aa8744d8e9439a5b164848bb4b9bb831 Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Thu, 9 Dec 2021 01:19:09 +0800 Subject: [PATCH 141/142] Fix #1016, .at() is not support in Safari --- src/pages/Settings.vue | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/pages/Settings.vue b/src/pages/Settings.vue index 3378a0e91..58162f571 100644 --- a/src/pages/Settings.vue +++ b/src/pages/Settings.vue @@ -49,8 +49,9 @@ export default { computed: { currentPage() { - let pathEnd = useRoute().path.split("/").at(-1); - if (pathEnd == "settings" || pathEnd == null) { + let pathSplit = useRoute().path.split("/"); + let pathEnd = pathSplit[pathSplit.length - 1]; + if (!pathEnd || pathEnd === "settings") { return "general"; } return pathEnd; From 8bb8b0a53c7f840d2d1ddff4987434474d34d28d Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Thu, 9 Dec 2021 01:23:49 +0800 Subject: [PATCH 142/142] update to 1.11.1 --- package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 1a5424df8..79ed1c30e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "uptime-kuma", - "version": "1.11.0", + "version": "1.11.1", "license": "MIT", "repository": { "type": "git", @@ -30,13 +30,13 @@ "build-docker": "npm run build-docker-debian && npm run build-docker-alpine", "build-docker-alpine-base": "docker buildx build -f docker/alpine-base.dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:base-alpine . --push", "build-docker-debian-base": "docker buildx build -f docker/debian-base.dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:base-debian . --push", - "build-docker-alpine": "docker buildx build -f docker/dockerfile-alpine --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:alpine -t louislam/uptime-kuma:1-alpine -t louislam/uptime-kuma:1.11.0-alpine --target release . --push", - "build-docker-debian": "docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma -t louislam/uptime-kuma:1 -t louislam/uptime-kuma:1.11.0 -t louislam/uptime-kuma:debian -t louislam/uptime-kuma:1-debian -t louislam/uptime-kuma:1.11.0-debian --target release . --push", + "build-docker-alpine": "docker buildx build -f docker/dockerfile-alpine --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:alpine -t louislam/uptime-kuma:1-alpine -t louislam/uptime-kuma:1.11.1-alpine --target release . --push", + "build-docker-debian": "docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma -t louislam/uptime-kuma:1 -t louislam/uptime-kuma:1.11.1 -t louislam/uptime-kuma:debian -t louislam/uptime-kuma:1-debian -t louislam/uptime-kuma:1.11.1-debian --target release . --push", "build-docker-nightly": "docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:nightly --target nightly . --push", "build-docker-nightly-alpine": "docker buildx build -f docker/dockerfile-alpine --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:nightly-alpine --target nightly . --push", "build-docker-nightly-amd64": "docker buildx build -f docker/dockerfile --platform linux/amd64 -t louislam/uptime-kuma:nightly-amd64 --target nightly . --push --progress plain", "upload-artifacts": "docker buildx build -f docker/dockerfile --platform linux/amd64 -t louislam/uptime-kuma:upload-artifact --build-arg VERSION --build-arg GITHUB_TOKEN --target upload-artifact . --progress plain", - "setup": "git checkout 1.11.0 && npm ci --production && npm run download-dist", + "setup": "git checkout 1.11.1 && npm ci --production && npm run download-dist", "download-dist": "node extra/download-dist.js", "update-version": "node extra/update-version.js", "mark-as-nightly": "node extra/mark-as-nightly.js",