From f2a27a2cf1d74ef9a90a4a689200cb62d15f66ad Mon Sep 17 00:00:00 2001 From: Adam Stachowicz Date: Fri, 29 Oct 2021 13:37:38 +0200 Subject: [PATCH 001/282] Use `hideCount` option for pagination --- package.json | 16 ++++++++-------- src/pages/DashboardHome.vue | 4 +--- src/pages/Details.vue | 4 +--- 3 files changed, 10 insertions(+), 14 deletions(-) diff --git a/package.json b/package.json index aa54f4be..644533d5 100644 --- a/package.json +++ b/package.json @@ -61,10 +61,10 @@ "args-parser": "~1.3.0", "axios": "~0.21.4", "bcryptjs": "~2.4.3", - "bootstrap": "~5.1.1", + "bootstrap": "~5.1.3", "bree": "~6.3.1", "chardet": "^1.3.0", - "chart.js": "~3.5.1", + "chart.js": "~3.6.0", "chartjs-adapter-dayjs": "~1.0.0", "check-password-strength": "^2.0.3", "command-exists": "~1.2.9", @@ -93,9 +93,9 @@ "tcp-ping": "~0.1.1", "thirty-two": "~1.0.2", "timezones-list": "~3.0.1", - "v-pagination-3": "~0.1.6", + "v-pagination-3": "~0.1.7", "vue": "next", - "vue-chart-3": "~0.5.8", + "vue-chart-3": "~0.5.11", "vue-confirm-dialog": "~1.0.2", "vue-contenteditable": "~3.0.4", "vue-i18n": "~9.1.9", @@ -110,9 +110,9 @@ "@babel/eslint-parser": "~7.15.7", "@babel/preset-env": "^7.15.8", "@types/bootstrap": "~5.1.6", - "@vitejs/plugin-legacy": "~1.6.1", - "@vitejs/plugin-vue": "~1.9.2", - "@vue/compiler-sfc": "~3.2.19", + "@vitejs/plugin-legacy": "~1.6.2", + "@vitejs/plugin-vue": "~1.9.4", + "@vue/compiler-sfc": "~3.2.20", "babel-plugin-rewire": "~1.2.0", "core-js": "~3.18.1", "cross-env": "~7.0.3", @@ -126,6 +126,6 @@ "stylelint": "~13.13.1", "stylelint-config-standard": "~22.0.0", "typescript": "~4.4.3", - "vite": "~2.6.4" + "vite": "~2.6.13" } } diff --git a/src/pages/DashboardHome.vue b/src/pages/DashboardHome.vue index 2832b1c7..16d07983 100644 --- a/src/pages/DashboardHome.vue +++ b/src/pages/DashboardHome.vue @@ -83,9 +83,7 @@ export default { perPage: 25, heartBeatList: [], paginationConfig: { - texts: { - count: "", - }, + hideCount: true, chunksNavigation: "scroll", }, }; diff --git a/src/pages/Details.vue b/src/pages/Details.vue index b8a75b29..d40561fe 100644 --- a/src/pages/Details.vue +++ b/src/pages/Details.vue @@ -209,9 +209,7 @@ export default { toggleCertInfoBox: false, showPingChartBox: true, paginationConfig: { - texts: { - count: "", - }, + hideCount: true, chunksNavigation: "scroll", }, }; From eaecd6e571d9faf77e13e09e65c2202344288760 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20Bratovi=C4=87?= Date: Fri, 29 Oct 2021 16:53:55 +0200 Subject: [PATCH 002/282] Clarity and grammar fixes to hr_HR languange file --- src/languages/hr-HR.js | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/languages/hr-HR.js b/src/languages/hr-HR.js index 78143a14..35383a0f 100644 --- a/src/languages/hr-HR.js +++ b/src/languages/hr-HR.js @@ -5,7 +5,7 @@ export default { retriesDescription: "Broj ponovnih pokušaja prije nego će se servis označiti kao DOWN 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.", - maxRedirectDescription: "Maksimalan broj preusmjeravanja. Postaviti na 0 kako bi se preusmeravanja onemogućila.", + 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.", @@ -20,7 +20,7 @@ export default { clearEventsMsg: "Jeste li sigurni da želite izbrisati sve zapise o događajima za ovaj monitor?", clearHeartbeatsMsg: "Jeste li sigurni da želite izbrisati sve zapise o provjerama za ovaj monitor?", confirmClearStatisticsMsg: "Jeste li sigurni da želite izbrisati SVE statistike?", - importHandleDescription: "Odaberite opciju 'Preskoči postojeće' ako želite prekočiti uvoz već postojećih monitora i obavijesti. Opcija 'Prepiši' će izbrisati postojeće monitore i obavijesti.", + importHandleDescription: "Odaberite opciju \"Preskoči postojeće\" ako želite preskočiti uvoz postojećih monitora i obavijesti ako dođe do poklapanja u imenu. Opcija \"Prepiši\" će izbrisati postojeće monitore i obavijesti.", confirmImportMsg: "Jeste li sigurni da želite pokrenuti uvoz? Provjerite jeste li odabrali ispravnu opciju uvoza.", twoFAVerifyLabel: "Unesite svoj 2FA token:", tokenValidSettingsMsg: "Token je važeći! Sada možete spremiti postavke dvofaktorske autentikacije.", @@ -44,7 +44,7 @@ export default { Down: "Nedostupno", Pending: "U tijeku", Unknown: "Nepoznato", - Pause: "Pauziraj", + Pause: "Pauzirano", Name: "Naziv monitora", Status: "Status", DateTime: "Vremenska oznaka", @@ -77,7 +77,7 @@ export default { "Max. Redirects": "Maksimalan broj preusmjeravanja", "Accepted Status Codes": "Prihvaćeni statusni kodovi", "Push URL": "Push URL", - needPushEvery: "Potrebno je zvati ovaj URL svakih {0} sekundi.", + needPushEvery: "Potrebno je slati zahtjeve na URL svakih {0} sekundi.", pushOptionalParams: "Neobavezni parametri: {0}", Save: "Spremi", Notifications: "Obavijesti", @@ -135,9 +135,9 @@ export default { Events: "Events", Heartbeats: "Provjere", "Auto Get": "Automatski dohvat", - backupDescription: "Moguće je napraviti sigurnosnu kopiju svih monitora i obavijesti u JSON datoteku.", + 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 izvozu; potrebno je čuvati izvoz na sigurnom mjestu.", + backupDescription3: "Osjetljivi podaci poput tokena za obavijesti jesu uključeni 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", @@ -197,14 +197,14 @@ export default { webhook: "Webhook", "Post URL": "Post URL", "Content Type": "Tip sadržaja (Content Type)", - webhookJsonDesc: "{0} je moguća opcija za moderne HTTP poslužitelje poput Express.js-a", + 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)", secureOptionNone: "Bez sigurnosti / STARTTLS (25, 587)", secureOptionTLS: "TLS (465)", "Ignore TLS Error": "Ignoriraj greške TLS-a", - "From Email": "Adresa za From polje", - emailCustomSubject: "Prilagođeno Subject polje", + "From Email": "Adresa za \"From\" polje", + emailCustomSubject: "Prilagođeno \"Subject\" polje", "To Email": "Odredišne adrese e-pošte", smtpCC: "Cc", smtpBCC: "Bcc", @@ -233,7 +233,7 @@ export default { "Uptime Kuma URL": "Uptime Kuma URL", aboutWebhooks: "Dodatne informacije o webhookovima su dostupne na: {0}", aboutChannelName: "Unesite ime {0} kanala u polju Naziv kanala ako želite zaobići webhook kanal. Primjerice: #neki-kanal", - aboutKumaURL: "Ako je polje Uptime Kuma URL prazno, koristi se zadana vrijednost koja vodi na GitHub stranicu projekta.", + aboutKumaURL: "Ako je polje \"Uptime Kuma URL\" prazno, koristi se zadana vrijednost koja vodi na GitHub stranicu projekta.", emojiCheatSheet: "Popis emotikona: {0}", "rocket.chat": "Rocket.Chat", pushover: "Pushover", @@ -252,7 +252,7 @@ export default { "Notification Sound": "Zvuk obavijesti", "More info on:": "Više informacija na: {0}", pushoverDesc1: "Hitni prioritet (2) ima zadani istek vremena od 30 sekundi između ponovnih pokušaja te će isteći nakon 1 sata.", - pushoverDesc2: "Ako želite slati obavijesti na više uređaja, ispunite polje Uređaji.", + pushoverDesc2: "Ako želite slati obavijesti na više uređaja, ispunite polje \"Uređaji\".", "SMS Type": "Tip SMS-a", octopushTypePremium: "Premium (Brzo - preporučeno za obavijesti)", octopushTypeLowCost: "Low Cost (Sporo - mobilni operateri ponekad blokiraju ove poruke)", @@ -277,7 +277,7 @@ export default { "Basic Settings": "Osnovne Postavke", "User ID": "Korisnički ID", "Messaging API": "API za razmjenu poruka", - wayToGetLineChannelToken: "Prvo, pristupite {0}, kreirajte create a pružatelja usluga te kanal (API za razmjenu poruka), zatim možete dobiti you can get the token za pristup kanalu te korisnički ID za polja iznad.", + wayToGetLineChannelToken: "Prvo, pristupite {0}, kreirajte pružatelja usluga te kanal (API za razmjenu poruka), zatim možete dobiti token za pristup kanalu te korisnički ID za polja iznad.", "Icon URL": "URL slike", aboutIconURL: "Možete postaviti poveznicu na sliku u polju \"URL slike\" kako biste spriječili korištenje zadane slike. Ovo se polje neće koristiti ako je postavljeno polje \"Emotikon\".", aboutMattermostChannelName: "Možete promijeniti kanal u kojeg webhook šalje tako da ispunite polje \"Naziv kanala\". Ta opcija mora biti omogućena unutar Mattermost postavki za webhook. Primjerice: #neki-kanal", @@ -286,19 +286,19 @@ export default { promosmsTypeFlash: "SMS FLASH - Poruka se automatski pojavljuje na uređaju primatelja. Ograničeno samo na primatelje unutar Poljske.", promosmsTypeFull: "SMS FULL - Premium razina usluge, dozvoljava postavljanje naziva SMS pošiljatelja (Naziv mora biti registriran). Usluga pouzdana za obavijesti.", promosmsTypeSpeed: "SMS SPEED - Usluga najvećeg prioriteta. Brza i pouzdana, ali skupa (otprilike dvostruko skuplja od cijene usluge SMS FULL).", - promosmsPhoneNumber: "Telefonski broj (za primitalje unutar Poljske nije potrebno navoditi pozivni broj države)", + promosmsPhoneNumber: "Telefonski broj (za primatelje unutar Poljske nije potrebno navoditi pozivni broj države)", promosmsSMSSender: "Naziv SMS pošiljatelja: Registriran naziv ili jedan od zadanih: InfoSMS, SMS Info, MaxSMS, INFO, SMS", "Feishu WebHookUrl": "Feishu URL webhooka", - matrixHomeserverURL: "URL homeservera (uključujući http(s):// te port, ako je potrebno)", + matrixHomeserverURL: "URL Matrix homeservera (uključujući http(s):// te port, ako je potrebno)", "Internal Room Id": "Interni ID sobe", matrixDesc1: "Interni ID sobe se može pronaći u naprednim postavkama sobe unutar Matrix klijenta. ID sobe nalikuje idućem zapisu: !QMdRCpUIfLwsfjxye6:home.server.", - matrixDesc2: "Preporuča se stvaranje novog korisnika te suzdržavanje od korištenja pristupnog tokena vlastitog Matrix korisnika. Novog korisnika potrebno je dodati u sobe u kojima želite primati obavijesti. Pristupni token možete dobiti pokretanjem naredbe {0}", + matrixDesc2: "Preporučuje se stvaranje novog korisnika te suzdržavanje od korištenja pristupnog tokena vlastitog Matrix korisnika. Novog korisnika potrebno je dodati u sobe u kojima želite primati obavijesti. Pristupni token možete dobiti pokretanjem naredbe {0}", Method: "Metoda", Body: "Tijelo", Headers: "Zaglavlja", PushUrl: "Push URL", HeadersInvalidFormat: "Zaglavlja nisu nije valjani JSON: ", - BodyInvalidFormat: "Tijelo zahjeva nije valjani JSON: ", + BodyInvalidFormat: "Tijelo zahtjeva nije valjani JSON: ", "Monitor History": "Povijest monitora", clearDataOlderThan: "Podaci o povijesti monitora čuvaju se {0} dana.", PasswordsDoNotMatch: "Lozinke se ne poklapaju.", From 69aa60d1fbd0dfa35163fe7ae842f40a1b063f33 Mon Sep 17 00:00:00 2001 From: Adam Stachowicz Date: Fri, 29 Oct 2021 17:01:29 +0200 Subject: [PATCH 003/282] Add missing i18n key + translate 2 keys for polish --- src/languages/en.js | 1 + src/languages/pl.js | 2 ++ 2 files changed, 3 insertions(+) diff --git a/src/languages/en.js b/src/languages/en.js index db376720..15c3cd0f 100644 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -306,4 +306,5 @@ export default { "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", }; diff --git a/src/languages/pl.js b/src/languages/pl.js index 89faa634..747ca1ad 100644 --- a/src/languages/pl.js +++ b/src/languages/pl.js @@ -303,4 +303,6 @@ export default { records: "rekordy", "One record": "Jeden rekord", steamApiKeyDescription: "Do monitorowania serwera gier Steam potrzebny jest klucz Steam Web-API. Możesz zarejestrować swój klucz API tutaj: ", + "Current User": "Aktualny użytkownik", + recent: "Ostatnie", }; From caa2a341772e823688880d3cf3e78c44c8acb365 Mon Sep 17 00:00:00 2001 From: Louis Date: Sat, 30 Oct 2021 02:35:05 +0800 Subject: [PATCH 004/282] fix 2fa not working #833 --- server/server.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/server.js b/server/server.js index c4d18869..61484e03 100644 --- a/server/server.js +++ b/server/server.js @@ -263,9 +263,8 @@ exports.entryPage = "dashboard"; let user = await login(data.username, data.password); if (user) { - afterLogin(socket, user); - if (user.twofaStatus == 0) { + afterLogin(socket, user); callback({ ok: true, token: jwt.sign({ @@ -284,6 +283,7 @@ exports.entryPage = "dashboard"; let verify = notp.totp.verify(data.token, user.twofa_secret, twofa_verification_opts); if (verify && verify.delta == 0) { + afterLogin(socket, user); callback({ ok: true, token: jwt.sign({ From cf548df15fcbebf2692f8d6648a8fb1b5a04d513 Mon Sep 17 00:00:00 2001 From: Louis Date: Sat, 30 Oct 2021 02:36:40 +0800 Subject: [PATCH 005/282] update to 1.9.2 --- package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 174ab6aa..d4acdc4c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "uptime-kuma", - "version": "1.9.1", + "version": "1.9.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.9.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.9.1 -t louislam/uptime-kuma:debian -t louislam/uptime-kuma:1-debian -t louislam/uptime-kuma:1.9.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.9.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.9.2 -t louislam/uptime-kuma:debian -t louislam/uptime-kuma:1-debian -t louislam/uptime-kuma:1.9.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.9.1 && npm ci --production && npm run download-dist", + "setup": "git checkout 1.9.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 5e6d945095f0923c4fb748a8fbfe94312a7bc021 Mon Sep 17 00:00:00 2001 From: Jasper Miller-Waugh Date: Wed, 27 Oct 2021 23:06:06 +1300 Subject: [PATCH 006/282] 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 fbe8136e..be186ccc 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 23d19e6c..39fb342e 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 007/282] 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 e1a5d052..ae1ff687 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 39fb342e..97441d50 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 008/282] 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 be186ccc..bf0cc54c 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 97441d50..f30edcef 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 009/282] 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 ae1ff687..db01e12d 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 010/282] 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 bf0cc54c..b58c4a00 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 87634f35..4ee810c7 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 011/282] 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 b58c4a00..a5d12450 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 1dbf1c3dea4991fe91e63ce590be50b6b8d8e495 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Sat, 30 Oct 2021 23:33:20 +0800 Subject: [PATCH 012/282] fix logout --- src/mixins/socket.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mixins/socket.js b/src/mixins/socket.js index 67979449..170a07a7 100644 --- a/src/mixins/socket.js +++ b/src/mixins/socket.js @@ -265,10 +265,10 @@ export default { }, logout() { + socket.emit("logout", () => { }); this.storage().removeItem("token"); this.socket.token = null; this.loggedIn = false; - this.clearData(); }, From e7104737e7c877a1fda546cf271ce9a30baf2876 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Sun, 31 Oct 2021 00:36:46 +0800 Subject: [PATCH 013/282] prevent to show "New Update" when the Docker image is not ready yet --- server/check-version.js | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/server/check-version.js b/server/check-version.js index 2ab5fe51..a3465ddf 100644 --- a/server/check-version.js +++ b/server/check-version.js @@ -9,18 +9,17 @@ let interval; exports.startInterval = () => { let check = async () => { try { - const res = await axios.get("https://raw.githubusercontent.com/louislam/uptime-kuma/master/package.json"); - - if (typeof res.data === "string") { - res.data = JSON.parse(res.data); - } + const res = await axios.get("https://uptime.kuma.pet/version"); // For debug if (process.env.TEST_CHECK_VERSION === "1") { - res.data.version = "1000.0.0"; + res.data.slow = "1000.0.0"; + } + + if (res.data.slow) { + exports.latestVersion = res.data.slow; } - exports.latestVersion = res.data.version; } catch (_) { } }; From 68b74f07e4d222572bda80f900e0fb0600390c69 Mon Sep 17 00:00:00 2001 From: Juan Calderon-Perez <835733+gaby@users.noreply.github.com> Date: Sat, 30 Oct 2021 19:06:32 -0400 Subject: [PATCH 014/282] Update wording of form field --- .github/ISSUE_TEMPLATE/ask-for-help.yaml | 4 ++-- .github/ISSUE_TEMPLATE/bug_report.yaml | 4 ++-- .github/ISSUE_TEMPLATE/feature_request.yaml | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/ask-for-help.yaml b/.github/ISSUE_TEMPLATE/ask-for-help.yaml index dd1bcaf7..a1425c9c 100644 --- a/.github/ISSUE_TEMPLATE/ask-for-help.yaml +++ b/.github/ISSUE_TEMPLATE/ask-for-help.yaml @@ -62,8 +62,8 @@ body: - type: checkboxes id: no-duplicate-issues attributes: - label: "👀 Have you spent some time to check if this question has been raised before?" - description: "Please search in the issues without filters [here](https://github.com/louislam/uptime-kuma/issues?q=)" + 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 diff --git a/.github/ISSUE_TEMPLATE/bug_report.yaml b/.github/ISSUE_TEMPLATE/bug_report.yaml index 5e3b5bf8..81ea9a32 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yaml +++ b/.github/ISSUE_TEMPLATE/bug_report.yaml @@ -86,8 +86,8 @@ body: - type: checkboxes id: no-duplicate-issues attributes: - label: "👀 Have you spent some time to check if this issue has been raised before?" - description: "Please search in the issues without filters [here](https://github.com/louislam/uptime-kuma/issues?q=)" + 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 diff --git a/.github/ISSUE_TEMPLATE/feature_request.yaml b/.github/ISSUE_TEMPLATE/feature_request.yaml index bca32552..1a3cebc0 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yaml +++ b/.github/ISSUE_TEMPLATE/feature_request.yaml @@ -52,8 +52,8 @@ body: - type: checkboxes id: no-duplicate-issues attributes: - label: "👀 Have you spent some time to check if this feature request has been raised before?" - description: "Please search in the issues without filters [here](https://github.com/louislam/uptime-kuma/issues?q=)" + 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 586c748d44aacdaad3273240a52d33ee3427dc08 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Sun, 31 Oct 2021 13:07:10 +0800 Subject: [PATCH 015/282] vite build on host machine, since it is very slow on armv7/arm64 build --- .dockerignore | 1 - CONTRIBUTING.md | 5 +++-- docker/dockerfile | 6 +++--- docker/dockerfile-alpine | 5 ++--- 4 files changed, 8 insertions(+), 9 deletions(-) diff --git a/.dockerignore b/.dockerignore index 6e11b36b..4a63437a 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,5 +1,4 @@ /.idea -/dist /node_modules /data /out diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c9f186df..b2efe3e0 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -226,10 +226,11 @@ https://github.com/louislam/uptime-kuma/issues?q=sort%3Aupdated-desc 1. Draft a release note 1. Make sure the repo is cleared 1. `npm run update-version 1.X.X` +1. `npm run build` 1. `npm run build-docker` -1. git push +1. `git push` 1. Publish the release note as 1.X.X -1. npm run upload-artifacts +1. `npm run upload-artifacts` 1. SSH to demo site server and update to 1.X.X Checking: diff --git a/docker/dockerfile b/docker/dockerfile index e2a3725f..efbbfe6f 100644 --- a/docker/dockerfile +++ b/docker/dockerfile @@ -4,9 +4,7 @@ WORKDIR /app ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1 COPY . . -RUN npm ci && \ - npm run build && \ - npm ci --production && \ +RUN npm ci --production && \ chmod +x /app/extra/entrypoint.sh @@ -22,9 +20,11 @@ HEALTHCHECK --interval=60s --timeout=30s --start-period=180s --retries=5 CMD nod ENTRYPOINT ["/usr/bin/dumb-init", "--", "extra/entrypoint.sh"] CMD ["node", "server/server.js"] + FROM release AS nightly RUN npm run mark-as-nightly + # Upload the artifact to Github FROM louislam/uptime-kuma:base-debian AS upload-artifact WORKDIR / diff --git a/docker/dockerfile-alpine b/docker/dockerfile-alpine index e883031a..ab9255f9 100644 --- a/docker/dockerfile-alpine +++ b/docker/dockerfile-alpine @@ -4,9 +4,7 @@ WORKDIR /app ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1 COPY . . -RUN npm ci && \ - npm run build && \ - npm ci --production && \ +RUN npm ci --production && \ chmod +x /app/extra/entrypoint.sh @@ -22,5 +20,6 @@ HEALTHCHECK --interval=60s --timeout=30s --start-period=180s --retries=5 CMD nod ENTRYPOINT ["/usr/bin/dumb-init", "--", "extra/entrypoint.sh"] CMD ["node", "server/server.js"] + FROM release AS nightly RUN npm run mark-as-nightly From 08a58dec2b257e927ec742e9991b5bb687628332 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Sun, 31 Oct 2021 13:17:34 +0800 Subject: [PATCH 016/282] fix manifest.json path --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index cd5da936..6a5525fb 100644 --- a/index.html +++ b/index.html @@ -5,7 +5,7 @@ - + Uptime Kuma From 61135e850025711f80de85dc2b60d2bc38089655 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Sun, 31 Oct 2021 13:18:06 +0800 Subject: [PATCH 017/282] update package-lock.json --- package-lock.json | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/package-lock.json b/package-lock.json index f65abc32..11feb349 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "uptime-kuma", - "version": "1.9.1", + "version": "1.9.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "uptime-kuma", - "version": "1.9.1", + "version": "1.9.2", "license": "MIT", "dependencies": { "@fortawesome/fontawesome-svg-core": "~1.2.36", @@ -18,10 +18,10 @@ "args-parser": "~1.3.0", "axios": "~0.21.4", "bcryptjs": "~2.4.3", - "bootstrap": "~5.1.1", + "bootstrap": "~5.1.3", "bree": "~6.3.1", "chardet": "^1.3.0", - "chart.js": "~3.5.1", + "chart.js": "~3.6.0", "chartjs-adapter-dayjs": "~1.0.0", "check-password-strength": "^2.0.3", "command-exists": "~1.2.9", @@ -50,9 +50,9 @@ "tcp-ping": "~0.1.1", "thirty-two": "~1.0.2", "timezones-list": "~3.0.1", - "v-pagination-3": "~0.1.6", + "v-pagination-3": "~0.1.7", "vue": "next", - "vue-chart-3": "~0.5.8", + "vue-chart-3": "~0.5.11", "vue-confirm-dialog": "~1.0.2", "vue-contenteditable": "~3.0.4", "vue-i18n": "~9.1.9", @@ -67,9 +67,9 @@ "@babel/eslint-parser": "~7.15.7", "@babel/preset-env": "^7.15.8", "@types/bootstrap": "~5.1.6", - "@vitejs/plugin-legacy": "~1.6.1", - "@vitejs/plugin-vue": "~1.9.2", - "@vue/compiler-sfc": "~3.2.19", + "@vitejs/plugin-legacy": "~1.6.2", + "@vitejs/plugin-vue": "~1.9.4", + "@vue/compiler-sfc": "~3.2.20", "babel-plugin-rewire": "~1.2.0", "core-js": "~3.18.1", "cross-env": "~7.0.3", @@ -83,7 +83,7 @@ "stylelint": "~13.13.1", "stylelint-config-standard": "~22.0.0", "typescript": "~4.4.3", - "vite": "~2.6.4" + "vite": "~2.6.13" }, "engines": { "node": "14.*" @@ -4259,9 +4259,9 @@ "integrity": "sha512-NpwMDdSIprbYx1CLnfbxEIarI0Z+s9MssEgggMNheGM+WD68yOhV7IEA/3r6tr0yTRgQD0HuZJDw32s99i6L+A==" }, "node_modules/chart.js": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.5.1.tgz", - "integrity": "sha512-m5kzt72I1WQ9LILwQC4syla/LD/N413RYv2Dx2nnTkRS9iv/ey1xLTt0DnPc/eWV4zI+BgEgDYBIzbQhZHc/PQ==" + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.6.0.tgz", + "integrity": "sha512-iOzzDKePL+bj+ccIsVAgWQehCXv8xOKGbaU2fO/myivH736zcx535PGJzQGanvcSGVOqX6yuLZsN3ygcQ35UgQ==" }, "node_modules/chartjs-adapter-dayjs": { "version": "1.0.0", @@ -18000,9 +18000,9 @@ "integrity": "sha512-NpwMDdSIprbYx1CLnfbxEIarI0Z+s9MssEgggMNheGM+WD68yOhV7IEA/3r6tr0yTRgQD0HuZJDw32s99i6L+A==" }, "chart.js": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.5.1.tgz", - "integrity": "sha512-m5kzt72I1WQ9LILwQC4syla/LD/N413RYv2Dx2nnTkRS9iv/ey1xLTt0DnPc/eWV4zI+BgEgDYBIzbQhZHc/PQ==" + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.6.0.tgz", + "integrity": "sha512-iOzzDKePL+bj+ccIsVAgWQehCXv8xOKGbaU2fO/myivH736zcx535PGJzQGanvcSGVOqX6yuLZsN3ygcQ35UgQ==" }, "chartjs-adapter-dayjs": { "version": "1.0.0", From 124c98ce766a0d0ccc45f239fd94e3d61222cf60 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Sun, 31 Oct 2021 13:48:05 +0800 Subject: [PATCH 018/282] update to 1.10.0 --- package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 9aa8be06..64be83ee 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "uptime-kuma", - "version": "1.9.2", + "version": "1.10.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.9.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.9.2 -t louislam/uptime-kuma:debian -t louislam/uptime-kuma:1-debian -t louislam/uptime-kuma:1.9.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.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-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.9.2 && npm ci --production && npm run download-dist", + "setup": "git checkout 1.10.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 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 019/282] 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 062435d7..176a6150 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 8840ca618bf120fa49811e1b603a67a4f7ab01a6 Mon Sep 17 00:00:00 2001 From: Adam Stachowicz Date: Sun, 31 Oct 2021 21:22:19 +0100 Subject: [PATCH 020/282] Update `pl.js` --- src/languages/pl.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/languages/pl.js b/src/languages/pl.js index 747ca1ad..43022446 100644 --- a/src/languages/pl.js +++ b/src/languages/pl.js @@ -28,7 +28,7 @@ export default { confirmDisableTwoFAMsg: "Jesteś pewien, że chcesz wyłączyć 2FA?", Settings: "Ustawienia", Dashboard: "Panel", - "New Update": "Nowa Aktualizacja", + "New Update": "Nowa aktualizacja", Language: "Język", Appearance: "Wygląd", Theme: "Motyw", @@ -305,4 +305,6 @@ export default { steamApiKeyDescription: "Do monitorowania serwera gier Steam potrzebny jest klucz Steam Web-API. Możesz zarejestrować swój klucz API tutaj: ", "Current User": "Aktualny użytkownik", recent: "Ostatnie", + clicksendsms: "ClickSend SMS", + apiCredentials: "Poświadczenia API", }; From bb96a577ca66c9de771195ae27bb1300d9e7ae33 Mon Sep 17 00:00:00 2001 From: Adam Stachowicz Date: Sun, 31 Oct 2021 21:47:07 +0100 Subject: [PATCH 021/282] Fix typos + translate `wayToGetTeamsURL` --- src/languages/pl.js | 62 ++++++++++++++++++++++----------------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/src/languages/pl.js b/src/languages/pl.js index 43022446..95d5890f 100644 --- a/src/languages/pl.js +++ b/src/languages/pl.js @@ -37,7 +37,7 @@ export default { "Check Update On GitHub": "Sprawdź aktualizację na GitHub", List: "Lista", Add: "Dodaj", - "Add New Monitor": "Dodaj Monitor", + "Add New Monitor": "Dodaj monitor", "Quick Stats": "Szybki podgląd statystyk", Up: "Online", Down: "Offline", @@ -53,8 +53,8 @@ export default { Edit: "Edytuj", Delete: "Usuń", Current: "Aktualny", - Uptime: "Czas Pracy", - "Cert Exp.": "Certyfikat Wygasa", + Uptime: "Czas pracy", + "Cert Exp.": "Certyfikat wygasa", days: "dni", day: "dzień", "-day": " dni", @@ -62,9 +62,9 @@ export default { "-hour": " godzin", Response: "Odpowiedź", Ping: "Ping", - "Monitor Type": "Rodzaj Monitora", + "Monitor Type": "Rodzaj monitora", Keyword: "Słowo kluczowe", - "Friendly Name": "Przyjazna Nazwa", + "Friendly Name": "Przyjazna nazwa", URL: "URL", Hostname: "Hostname", Port: "Port", @@ -73,12 +73,12 @@ export default { "Heartbeat Retry Interval": "Częstotliwość ponawiania bicia serca", Advanced: "Zaawansowane", "Upside Down Mode": "Tryb odwrócony", - "Max. Redirects": "Maks. Przekierowań", + "Max. Redirects": "Maks. przekierowań", "Accepted Status Codes": "Akceptowane kody statusu", Save: "Zapisz", Notifications: "Powiadomienia", "Not available, please setup.": "Niedostępne, proszę skonfigurować.", - "Setup Notification": "Skonfiguruj Powiadomienie", + "Setup Notification": "Skonfiguruj powiadomienie", Light: "Jasny", Dark: "Ciemny", Auto: "Automatyczny", @@ -122,7 +122,7 @@ export default { "Export Backup": "Eksportuj kopię zapasową", Export: "Eksportuj", Import: "Importuj", - respTime: "Czas Odp. (ms)", + respTime: "Czas odp. (ms)", notAvailableShort: "N/A", "Default enabled": "Włącz domyślnie", "Apply on all existing monitors": "Zastosuj do istniejących monitorów", @@ -183,7 +183,7 @@ export default { here: "tutaj", Required: "Wymagane", telegram: "Telegram", - "Bot Token": "Token Bota", + "Bot Token": "Token bota", wayToGetTelegramToken: "Token można uzyskać z {0}.", "Chat ID": "Identyfikator Czatu", supportTelegramChatID: "Czat wsprarcia technicznego / Bezpośrednia Rozmowa / Czat Grupowy", @@ -198,20 +198,20 @@ export default { smtp: "Email (SMTP)", secureOptionNone: "Brak / STARTTLS (25, 587)", secureOptionTLS: "TLS (465)", - "Ignore TLS Error": "Zignrouj Błędy TLS", + "Ignore TLS Error": "Zignoruj błędy TLS", "From Email": "Nadawca (OD)", "To Email": "Odbiorca (DO)", smtpCC: "DW", smtpBCC: "UDW", discord: "Discord", - "Discord Webhook URL": "URL Webhook Discorda", + "Discord Webhook URL": "URL webhook Discorda", wayToGetDiscordURL: "Możesz go uzyskać przechodząc do Ustawienia Serwera -> Integracje -> Tworzenie Webhooka", - "Bot Display Name": "Wyświetlana Nazwa Bota", - "Prefix Custom Message": "Własny Początek Wiadomości", + "Bot Display Name": "Wyświetlana nazwa bota", + "Prefix Custom Message": "Własny początek wiadomości", "Hello @everyone is...": "Hej {'@'}everyone ...", teams: "Microsoft Teams", - "Webhook URL": "URL Webhooka", - wayToGetTeamsURL: "You can learn how to create a webhook url {0}.", + "Webhook URL": "URL webhooka", + wayToGetTeamsURL: "Możesz dowiedzieć się, jak utworzyć adres url webhooka {0}.", signal: "Signal", Number: "Numer", Recipients: "Odbiorcy", @@ -219,17 +219,17 @@ export default { wayToCheckSignalURL: "W celu dowiedzenia się, jak go skonfigurować, odwiedź poniższy link:", signalImportant: "UWAGA: Nie można mieszać nazw grup i numerów odbiorców!", gotify: "Gotify", - "Application Token": "Token Aplikacji", + "Application Token": "Token aplikacji", "Server URL": "Server URL", Priority: "Priorytet", slack: "Slack", - "Icon Emoji": "Ikona Emoji", - "Channel Name": "Nazwa Kanału", + "Icon Emoji": "Ikona emoji", + "Channel Name": "Nazwa kanału", "Uptime Kuma URL": "Adres Uptime Kuma", aboutWebhooks: "Więcej informacji na temat webhooków: {0}", aboutChannelName: "Podaj nazwę kanału {0} w polu Nazwa Kanału, jeśli chcesz pominąć kanał webhooka. Np.: #inny-kanal", aboutKumaURL: "Jeśli pozostawisz pole Adres Uptime Kuma puste, domyślnie będzie to strona projektu na Github.", - emojiCheatSheet: "Ściąga Emoji: {0}", + emojiCheatSheet: "Ściąga emoji: {0}", "rocket.chat": "Rocket.chat", pushover: "Pushover", pushy: "Pushy", @@ -240,10 +240,10 @@ export default { pushbullet: "Pushbullet", line: "Line Messenger", mattermost: "Mattermost", - "User Key": "Klucz Użytkownika", + "User Key": "Klucz użytkownika", Device: "Urządzenie", - "Message Title": "Tytuł Wiadomości", - "Notification Sound": "Dźwięk Powiadomienia", + "Message Title": "Tytuł wiadomości", + "Notification Sound": "Dźwięk powiadomienia", "More info on:": "Więcej informacji na: {0}", pushoverDesc1: "Priorytet awaryjny (2) ma domyślny 30-sekundowy limit czasu między kolejnymi próbami i wygaśnie po 1 godzinie.", pushoverDesc2: "Jeśli chcesz wysyłać powiadomienia na różne urządzenia, wypełnij pole Urządzenie.", @@ -253,21 +253,21 @@ export default { "Check octopush prices": "Sprawdź ceny Octopush {0}.", octopushPhoneNumber: "Numer Telefonu (Format międzynarodowy np.: +33612345678)", octopushSMSSender: "Nadawca SMS : 3-11 znaków alfanumerycznych i spacji (a-zA-Z0-9)", - "LunaSea Device ID": "Idetyfikator Urządzenia LunaSea", + "LunaSea Device ID": "Idetyfikator urządzenia LunaSea", "Apprise URL": "URL Apprise", "Example:": "Przykład: {0}", - "Read more:": "Czytaj Dalej: {0}", + "Read more:": "Czytaj dalej: {0}", "Status:": "Status: {0}", "Read more": "Czytaj dalej", appriseInstalled: "Apprise jest zostało zainstalowane.", appriseNotInstalled: "Apprise nie zostało zainstalowane. {0}", - "Access Token": "Token Dostępu", - "Channel access token": "Token Dostępu Kanału", - "Line Developers Console": "Konsola Dewelopersja Line", - lineDevConsoleTo: "Konsola Dewelopersja Line - {0}", - "Basic Settings": "Ustawienia Ogólne", - "User ID": "Idetyfikator Użytkownika", - "Messaging API": "API Wiadomości", + "Access Token": "Token dostępu", + "Channel access token": "Token dostępu kanału", + "Line Developers Console": "Konsola deweloperska Line", + lineDevConsoleTo: "Konsola deweloperska Line - {0}", + "Basic Settings": "Ustawienia ogólne", + "User ID": "Identyfikator użytkownika", + "Messaging API": "API wiadomości", wayToGetLineChannelToken: "Najpierw uzyskaj dostęp do {0}, utwórz dostawcę i kanał (Messaging API), a następnie możesz uzyskać token dostępu do kanału i identyfikator użytkownika z wyżej wymienionych pozycji menu.", "Icon URL": "Adres Ikony", aboutIconURL: "Możesz podać link do zdjęcia w \"Adres URL ikony\", aby zastąpić domyślne zdjęcie profilowe. Nie będzie używany, jeśli ustawiona jest ikona Emoji.", From b12b848d974683a257b0fdcaa4c272c2e1135412 Mon Sep 17 00:00:00 2001 From: Adam Stachowicz Date: Sun, 31 Oct 2021 21:48:43 +0100 Subject: [PATCH 022/282] One more typo... --- src/languages/pl.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/languages/pl.js b/src/languages/pl.js index 95d5890f..f672fdbf 100644 --- a/src/languages/pl.js +++ b/src/languages/pl.js @@ -253,7 +253,7 @@ export default { "Check octopush prices": "Sprawdź ceny Octopush {0}.", octopushPhoneNumber: "Numer Telefonu (Format międzynarodowy np.: +33612345678)", octopushSMSSender: "Nadawca SMS : 3-11 znaków alfanumerycznych i spacji (a-zA-Z0-9)", - "LunaSea Device ID": "Idetyfikator urządzenia LunaSea", + "LunaSea Device ID": "Identyfikator urządzenia LunaSea", "Apprise URL": "URL Apprise", "Example:": "Przykład: {0}", "Read more:": "Czytaj dalej: {0}", From d06e5ef6fa805fbfc839803176b0cdd02423d4ad Mon Sep 17 00:00:00 2001 From: Adam Stachowicz Date: Sun, 31 Oct 2021 21:53:11 +0100 Subject: [PATCH 023/282] More small letters --- src/languages/pl.js | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/languages/pl.js b/src/languages/pl.js index f672fdbf..1144d4eb 100644 --- a/src/languages/pl.js +++ b/src/languages/pl.js @@ -236,7 +236,7 @@ export default { octopush: "Octopush", promosms: "PromoSMS", lunasea: "LunaSea", - apprise: "Apprise (Obsługuje 50+ usług powiadomień)", + apprise: "Apprise (obsługuje 50+ usług powiadomień)", pushbullet: "Pushbullet", line: "Line Messenger", mattermost: "Mattermost", @@ -248,11 +248,11 @@ export default { pushoverDesc1: "Priorytet awaryjny (2) ma domyślny 30-sekundowy limit czasu między kolejnymi próbami i wygaśnie po 1 godzinie.", pushoverDesc2: "Jeśli chcesz wysyłać powiadomienia na różne urządzenia, wypełnij pole Urządzenie.", "SMS Type": "Rodzaj SMS", - octopushTypePremium: "Premium (Szybki - rekomendowany dla powiadomień)", - octopushTypeLowCost: "Low Cost (Wolny, czasami blokowany przez operatorów)", + octopushTypePremium: "Premium (szybki - rekomendowany dla powiadomień)", + octopushTypeLowCost: "Low Cost (wolny, czasami blokowany przez operatorów)", "Check octopush prices": "Sprawdź ceny Octopush {0}.", - octopushPhoneNumber: "Numer Telefonu (Format międzynarodowy np.: +33612345678)", - octopushSMSSender: "Nadawca SMS : 3-11 znaków alfanumerycznych i spacji (a-zA-Z0-9)", + octopushPhoneNumber: "Numer telefonu (format międzynarodowy np.: +33612345678)", + octopushSMSSender: "Nadawca SMS: 3-11 znaków alfanumerycznych i spacji (a-zA-Z0-9)", "LunaSea Device ID": "Identyfikator urządzenia LunaSea", "Apprise URL": "URL Apprise", "Example:": "Przykład: {0}", @@ -271,14 +271,14 @@ export default { wayToGetLineChannelToken: "Najpierw uzyskaj dostęp do {0}, utwórz dostawcę i kanał (Messaging API), a następnie możesz uzyskać token dostępu do kanału i identyfikator użytkownika z wyżej wymienionych pozycji menu.", "Icon URL": "Adres Ikony", aboutIconURL: "Możesz podać link do zdjęcia w \"Adres URL ikony\", aby zastąpić domyślne zdjęcie profilowe. Nie będzie używany, jeśli ustawiona jest ikona Emoji.", - aboutMattermostChannelName: "Możesz zastąpić domyślny kanał, na którym publikowane są posty webhooka, wpisując nazwę kanału w polu \"Nazwa Kanału\". Należy to włączyć w ustawieniach webhooka Mattermost. Np.: #inny-kanał", + aboutMattermostChannelName: "Możesz zastąpić domyślny kanał, na którym publikowane są posty webhooka, wpisując nazwę kanału w polu \"Nazwa kanału\". Należy to włączyć w ustawieniach webhooka Mattermost. Np.: #inny-kanał", matrix: "Matrix", - promosmsTypeEco: "SMS ECO - Tanie, lecz wolne. Dostępne tylko w Polsce", - promosmsTypeFlash: "SMS FLASH - Wiadomość automatycznie wyświetli się na urządzeniu. Dostępne tylko w Polsce.", - promosmsTypeFull: "SMS FULL - Szybkie i dostępne międzynarodowo. Wersja premium usługi, która pozwala min. ustawić własną nazwę nadawcy.", - promosmsTypeSpeed: "SMS SPEED - Wysyłka priorytetowa, posiada wszystkie zalety SMS FULL", - promosmsPhoneNumber: "Numer Odbiorcy", - promosmsSMSSender: "Nadawca SMS (Wcześniej zatwierdzone nazwy z panelu PromoSMS)", + promosmsTypeEco: "SMS ECO - tanie, lecz wolne. Dostępne tylko w Polsce", + promosmsTypeFlash: "SMS FLASH - wiadomość automatycznie wyświetli się na urządzeniu. Dostępne tylko w Polsce.", + promosmsTypeFull: "SMS FULL - szybkie i dostępne międzynarodowo. Wersja premium usługi, która pozwala min. ustawić własną nazwę nadawcy.", + promosmsTypeSpeed: "SMS SPEED - wysyłka priorytetowa, posiada wszystkie zalety SMS FULL", + promosmsPhoneNumber: "Numer odbiorcy", + promosmsSMSSender: "Nadawca SMS (wcześniej zatwierdzone nazwy z panelu PromoSMS)", "Primary Base URL": "Główny URL", "Push URL": "Push URL", needPushEvery: "Powinieneś wywoływać ten URL co {0} sekund", From 4d3d6d6e259a92352982b39ab22333185614062d Mon Sep 17 00:00:00 2001 From: Adam Stachowicz Date: Sun, 31 Oct 2021 21:59:56 +0100 Subject: [PATCH 024/282] Missing this... --- src/languages/pl.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/languages/pl.js b/src/languages/pl.js index 1144d4eb..082980d3 100644 --- a/src/languages/pl.js +++ b/src/languages/pl.js @@ -185,8 +185,8 @@ export default { telegram: "Telegram", "Bot Token": "Token bota", wayToGetTelegramToken: "Token można uzyskać z {0}.", - "Chat ID": "Identyfikator Czatu", - supportTelegramChatID: "Czat wsprarcia technicznego / Bezpośrednia Rozmowa / Czat Grupowy", + "Chat ID": "Identyfikator czatu", + supportTelegramChatID: "Czat wsparcia technicznego / Bezpośrednia rozmowa / Czat grupowy", wayToGetTelegramChatID: "Możesz uzyskać swój identyfikator czatu, wysyłając wiadomość do bota i przechodząc pod ten adres URL, aby wyświetlić identyfikator czatu:", "YOUR BOT TOKEN HERE": "TWOJ TOKEN BOTA", chatIDNotFound: "Identyfikator czatu nie znaleziony, najpierw napisz do bota", @@ -205,7 +205,7 @@ export default { smtpBCC: "UDW", discord: "Discord", "Discord Webhook URL": "URL webhook Discorda", - wayToGetDiscordURL: "Możesz go uzyskać przechodząc do Ustawienia Serwera -> Integracje -> Tworzenie Webhooka", + wayToGetDiscordURL: "Możesz go uzyskać przechodząc do Ustawienia serwera -> Integracje -> Tworzenie webhooka", "Bot Display Name": "Wyświetlana nazwa bota", "Prefix Custom Message": "Własny początek wiadomości", "Hello @everyone is...": "Hej {'@'}everyone ...", @@ -227,8 +227,8 @@ export default { "Channel Name": "Nazwa kanału", "Uptime Kuma URL": "Adres Uptime Kuma", aboutWebhooks: "Więcej informacji na temat webhooków: {0}", - aboutChannelName: "Podaj nazwę kanału {0} w polu Nazwa Kanału, jeśli chcesz pominąć kanał webhooka. Np.: #inny-kanal", - aboutKumaURL: "Jeśli pozostawisz pole Adres Uptime Kuma puste, domyślnie będzie to strona projektu na Github.", + aboutChannelName: "Podaj nazwę kanału {0} w polu Nazwa kanału, jeśli chcesz pominąć kanał webhooka. Np.: #inny-kanal", + aboutKumaURL: "Jeśli pozostawisz pole Adres Uptime Kuma puste, domyślnie będzie to strona projektu na GitHub.", emojiCheatSheet: "Ściąga emoji: {0}", "rocket.chat": "Rocket.chat", pushover: "Pushover", @@ -270,7 +270,7 @@ export default { "Messaging API": "API wiadomości", wayToGetLineChannelToken: "Najpierw uzyskaj dostęp do {0}, utwórz dostawcę i kanał (Messaging API), a następnie możesz uzyskać token dostępu do kanału i identyfikator użytkownika z wyżej wymienionych pozycji menu.", "Icon URL": "Adres Ikony", - aboutIconURL: "Możesz podać link do zdjęcia w \"Adres URL ikony\", aby zastąpić domyślne zdjęcie profilowe. Nie będzie używany, jeśli ustawiona jest ikona Emoji.", + aboutIconURL: "Możesz podać link do zdjęcia w \"Adres URL ikony\", aby zastąpić domyślne zdjęcie profilowe. Nie będzie używany, jeśli ustawiona jest ikona emoji.", aboutMattermostChannelName: "Możesz zastąpić domyślny kanał, na którym publikowane są posty webhooka, wpisując nazwę kanału w polu \"Nazwa kanału\". Należy to włączyć w ustawieniach webhooka Mattermost. Np.: #inny-kanał", matrix: "Matrix", promosmsTypeEco: "SMS ECO - tanie, lecz wolne. Dostępne tylko w Polsce", From 4004926e643e63a2a8d6915cef6af6992225aa9f Mon Sep 17 00:00:00 2001 From: Jasper Miller-Waugh Date: Mon, 1 Nov 2021 12:52:21 +1300 Subject: [PATCH 025/282] 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 4ee810c7..06be1616 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 026/282] 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 a5d12450..30f6a828 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 06be1616..1320f093 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 027/282] 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 a3e34030..05fc9c18 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 028/282] 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 1320f093..70367cc9 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 60e12f4bfa55f10b0f5d90e3a6f87bf94e2cdb96 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Tue, 2 Nov 2021 01:13:05 +0800 Subject: [PATCH 029/282] fix healthcheck.js with prefix UPTIME_KUMA_ --- extra/healthcheck.js | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/extra/healthcheck.js b/extra/healthcheck.js index 99f748fb..8044f654 100644 --- a/extra/healthcheck.js +++ b/extra/healthcheck.js @@ -1,19 +1,35 @@ /* * This script should be run after a period of time (180s), because the server may need some time to prepare. */ +const { FBSD } = require("../server/util-server"); + process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"; let client; -if (process.env.SSL_KEY && process.env.SSL_CERT) { +const sslKey = process.env.UPTIME_KUMA_SSL_KEY || process.env.SSL_KEY || undefined; +const sslCert = process.env.UPTIME_KUMA_SSL_CERT || process.env.SSL_CERT || undefined; + +if (sslKey && sslCert) { client = require("https"); } else { client = require("http"); } +// If host is omitted, the server will accept connections on the unspecified IPv6 address (::) when IPv6 is available and the unspecified IPv4 address (0.0.0.0) otherwise. +// Dual-stack support for (::) +let hostname = process.env.UPTIME_KUMA_HOST; + +// Also read HOST if not FreeBSD, as HOST is a system environment variable in FreeBSD +if (!hostname && !FBSD) { + hostname = process.env.HOST; +} + +const port = parseInt(process.env.UPTIME_KUMA_PORT || process.env.PORT || 3001); + let options = { - host: process.env.HOST || "127.0.0.1", - port: parseInt(process.env.PORT) || 3001, + host: hostname || "127.0.0.1", + port: port, timeout: 28 * 1000, }; From 83ee46454a86f5d4b2e477b8972ced7d96f583b7 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Tue, 2 Nov 2021 13:12:46 +0800 Subject: [PATCH 030/282] 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 81ea9a32..1dcfea8c 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 031/282] 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 1dcfea8c..53028bf0 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 032/282] 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 53028bf0..90296e12 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 033/282] Update SECURITY.md --- SECURITY.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/SECURITY.md b/SECURITY.md index 7b9bfca4..3a11e881 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 034/282] 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 a1425c9c..a84eddae 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 035/282] 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 a84eddae..76a78e5c 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 036/282] 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 1a3cebc0..6464e276 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 037/282] 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 90296e12..055c3a62 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 038/282] 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 35383a0f..2fb04bb3 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 039/282] 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 2fb04bb3..29d1343d 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 040/282] 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 29d1343d..01674dce 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 041/282] 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 0af003d1..d1fd7ff2 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 042/282] 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 8044f654..c6e8a349 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 043/282] 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 30f6a828..79e82837 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 70367cc9..ce0f94b5 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 044/282] 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 e1a5d052..89639fd9 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 045/282] 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 64be83ee..d34531b3 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 046/282] 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 0d5af783..f1d9b078 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 047/282] 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 fa0aa883..c286db02 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 048/282] 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 3fe287ee..0fa4dd55 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 049/282] 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 c286db02..3be22931 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 050/282] 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 00000000..3a33350d --- /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 41d91e85..cc7247f1 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 051/282] 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 fc329231..c80e941e 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 d1fd7ff2..76d456c5 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 65c3dad6..18954968 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 052/282] 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 c80e941e..95ef3933 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 18954968..f5099aa3 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 053/282] 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 3a33350d..de4bdefd 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 cc7247f1..dfc739e0 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 95ef3933..f3c823c3 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 76d456c5..b1678198 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 f5099aa3..8b3157ea 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 054/282] 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 8b3157ea..108defb7 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 055/282] 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 76a78e5c..3442e8b7 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 055c3a62..2dca1556 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 6464e276..f0a92ede 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 056/282] 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 a4bf22f6..2717672c 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 057/282] =?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 87634f35..5a2b3551 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 058/282] 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 818893af..f37d8405 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 059/282] 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 176a6150..92083a38 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 060/282] 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 fc329231..c6e09f53 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 061/282] 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 c6e09f53..980e0ac6 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 5d65f46d..bfb4a9cb 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 bd73d202..bbfc6897 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 062/282] 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 bfb4a9cb..68f59f67 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 063/282] update to 1.10.1 --- package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index d34531b3..038d52eb 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 064/282] 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 f37d8405..108c8cae 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 065/282] 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 108c8cae..ff18832d 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 066/282] 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 f0a92ede..b26841c4 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 067/282] 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 170a07a7..affac4f8 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 9312b0c2..9d501407 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 068/282] update to 1.10.2 --- package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 038d52eb..c7ec3d8e 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 069/282] 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 0fa4dd55..55ff7ec4 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 5d836cf05dac7b763becd07ed76e5c818b4d741f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20Bratovi=C4=87?= <ivanbratovic4@gmail.com> Date: Wed, 10 Nov 2021 10:09:21 +0100 Subject: [PATCH 070/282] [empty commit] pull request for updating translatables 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 071/282] 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 15c3cd0f..37c1dd69 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 65c3dad6..332a9810 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 072/282] 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 37c1dd69..273ece35 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 ce0f94b5..82e46a74 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 073/282] 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 273ece35..6f1a6b5f 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 332a9810..907ecfa6 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 074/282] 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 6f1a6b5f..6cb42e40 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 075/282] 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 f1d9b078..d75fb599 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 66e7cb3d..9c797c3d 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 e6b7710c..e5e53466 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 6cb42e40..b46281a2 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 d772db06..d036b766 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 52439f5f..7bcbe7bc 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 aa5b129f..f5a8b623 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 92083a38..afc55489 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 01674dce..eb88e6b4 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 47ac72d6..5af4fee2 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 5bad2a7e..cf7abcb6 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 5ddc414f..01fc5937 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 f96028e4..c0bf4a6b 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 ad7b4337..457a41bf 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 0e566a01..5c375d97 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 ff18832d..1a684250 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 082980d3..fd0b70d6 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 70647fd9..b2a1a63f 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 83f4de2d..19e0188c 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 9e66aa54..786ca460 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 df8e9899..71c79df1 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 e29d355c..30f54ec4 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 e2630603..cc90cb5c 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 0bfa3f20..6e8a2e4a 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 8bbd0dcd..4e0aee12 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 7f5e2259..0e0cbe04 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 337d9422..573d619d 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 076/282] 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 b46281a2..ac884ffe 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 82e46a74..58ddb9a8 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 077/282] 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 2aed4184..4fbb2f41 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 078/282] 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 483917e3..ab660abe 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 ac884ffe..9f84a03d 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 079/282] 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 5ddc414f..5257a217 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 080/282] 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 d75fb599..f1d9b078 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 9c797c3d..66e7cb3d 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 e5e53466..e6b7710c 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 9f84a03d..bc3b66ba 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 d036b766..d772db06 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 7bcbe7bc..52439f5f 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 f5a8b623..aa5b129f 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 afc55489..92083a38 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 eb88e6b4..01674dce 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 5af4fee2..47ac72d6 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 cf7abcb6..5bad2a7e 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 c0bf4a6b..f96028e4 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 457a41bf..ad7b4337 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 5c375d97..0e566a01 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 1a684250..ff18832d 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 fd0b70d6..082980d3 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 b2a1a63f..70647fd9 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 19e0188c..83f4de2d 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 786ca460..9e66aa54 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 71c79df1..df8e9899 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 30f54ec4..e29d355c 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 cc90cb5c..e2630603 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 6e8a2e4a..0bfa3f20 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 4e0aee12..8bbd0dcd 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 0e0cbe04..7f5e2259 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 573d619d..337d9422 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 081/282] 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 bc3b66ba..9f84a03d 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 082/282] 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 58ddb9a8..e7e9c049 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 083/282] 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 9f84a03d..3a5ea122 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 e7e9c049..33719997 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 084/282] 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 3a5ea122..a9984075 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 33719997..ddb37c1a 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 085/282] 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 a9984075..dd37980a 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 9d501407..7724f3e1 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 086/282] 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 01674dce..6c553eae 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 087/282] 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 dd37980a..fbd59a91 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 6c553eae..9721f400 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 088/282] 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 fbd59a91..d27ceebe 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 9721f400..5fd837b0 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 089/282] 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 d27ceebe..f76aadf9 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 5fd837b0..8d23f003 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 907ecfa6..5c639725 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 090/282] 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 5257a217..0afd46ca 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 091/282] 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 0afd46ca..105755d6 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 092/282] 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 0bfa3f20..bc2e86de 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 093/282] 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 5257a217..5de29d44 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 094/282] 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 f96028e4..9446c78c 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 095/282] 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 | 741 +++------------------ 12 files changed, 1190 insertions(+), 633 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 2f436983..91ab917e 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 bd771f8f..ef51e89c 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 00000000..baa72f39 --- /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 00000000..e0a3d643 --- /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 00000000..6ac28d46 --- /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 00000000..308f21ae --- /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 00000000..85853ea1 --- /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 00000000..b2cbcf48 --- /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 00000000..1cbfb034 --- /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 15c3cd0f..a503b523 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 7228a460..2f4f689a 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 9d501407..9ff23415 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 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> - - <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> - - <!-- 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 { markRaw } from "vue"; -import { timezoneList, setPageLocale } from "../util-frontend"; -import { useToast } from "vue-toastification"; -import { debug } from "../util.ts"; - -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: { + show: true, + + 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,37 +126,8 @@ export default { .shadow-box { padding: 20px; -} - -.btn-check:active + .btn-outline-primary, -.btn-check:checked + .btn-outline-primary, -.btn-check:hover + .btn-outline-primary { - color: #fff; -} - -.dark { - .list-group-item { - background-color: $dark-bg2; - color: $dark-font-color; - } - - .btn-check:active + .btn-outline-primary, - .btn-check:checked + .btn-outline-primary, - .btn-check:hover + .btn-outline-primary { - color: #000; - } - - #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; - } - } + min-height: calc(100vh - 155px); + max-height: calc(100vh - 30px); } footer { @@ -707,4 +137,55 @@ footer { padding-bottom: 30px; text-align: center; } + +.settings-menu { + flex: 0 0 auto; + width: 300px; + + .menu-item { + border-radius: 10px; + margin: 0.5em; + padding: 0.7em 1em; + cursor: pointer; + } + + .menu-item:hover { + background: $highlight-white; + + .dark & { + background: $dark-header-bg; + } + } + + .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; + } + } +} + +.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 096/282] 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 308f21ae..a1b42d85 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 85853ea1..95efff0e 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 1cbfb034..27ff37fd 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 9ff23415..0cff1367 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 5c3fda94..86615f89 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 097/282] Fix: Fix page transition & improve active handling Fix: Fix current route parsing --- src/pages/Settings.vue | 83 +++++++++++++++++++++--------------------- src/router.js | 7 ---- 2 files changed, 42 insertions(+), 48 deletions(-) diff --git a/src/pages/Settings.vue b/src/pages/Settings.vue index 0cff1367..bacda3a3 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> + <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 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="settings-content"> - <div class="settings-content-header"> - {{ subMenus[$route.name.split("-")[1]].title }} - </div> - <div class="mx-3"> - <router-view /> - </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 86615f89..a2414eb6 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 098/282] 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 2f4f689a..75173e1f 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 099/282] 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 07830ca3..a34937c1 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 c7ec3d8e..83e7d25e 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 41d91e85..fbef40bb 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 d1fd7ff2..709a54c9 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 95efff0e..dc33db5b 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 27ff37fd..4ef6b3d9 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 6ba7d95e..52b70fa8 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 65c3dad6..11be3ed5 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 03920b30..488179e1 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 100/282] 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 dc33db5b..9b5b8bd7 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 101/282] 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 00000000..74f6d783 --- /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 a34937c1..dc4f7b34 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 4baaa0fb..2d3f585e 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 709a54c9..eea61dc7 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 488179e1..d96e88c5 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 102/282] 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 d96e88c5..66bbb794 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 103/282] Chore: Run spell check --- CONTRIBUTING.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b2efe3e0..46e9a899 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 104/282] 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 00000000..0f3f6346 --- /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 c7ec3d8e..79f01b55 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 00000000..bc8145cf --- /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 d1fd7ff2..78106515 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 105/282] 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 c7ffa99a..98a3421e 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 106/282] update dependencies --- package-lock.json | 3375 +++++++++++++++++++++------------------------ package.json | 24 +- 2 files changed, 1560 insertions(+), 1839 deletions(-) diff --git a/package-lock.json b/package-lock.json index 11feb349..25abc9e8 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==", + "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.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", + "@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==", + "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.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", + "@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==", + "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": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "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=", - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "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==", + "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.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", + "@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==", + "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.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", + "@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==", + "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.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" } }, "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 f516f4f6..a194c235 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 107/282] 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 108defb7..c8f48594 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 108/282] 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 f099192d..cf08f14b 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 109/282] 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 a503b523..74e32b8c 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 110/282] 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 74e32b8c..0667509f 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 111/282] 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 63ac34a9..6f4626fe 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 112/282] fix node-sqlite3 security issues --- package-lock.json | 1614 ++++++++++++++++++++------------------------- package.json | 5 +- 2 files changed, 702 insertions(+), 917 deletions(-) diff --git a/package-lock.json b/package-lock.json index 25abc9e8..9b2e0acc 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,6 +10295,71 @@ "node": ">=8" } }, + "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" + }, + "engines": { + "node": ">= 8" + } + }, + "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": { + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "optionalDependencies": { + "encoding": "^0.1.12" + } + }, + "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": ">= 8" + } + }, + "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", @@ -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 a194c235..fdc690f7 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 113/282] 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 00000000..9f75982f --- /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 18c823b2..e2cfb193 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 00000000..f2c3463b --- /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 4b51569a..9ade03a1 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 0667509f..a6ad9510 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 082980d3..9c11a323 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 114/282] [wip] lazy load language file --- src/components/settings/Appearance.vue | 10 +-- src/i18n.js | 91 +++++++++++--------------- src/main.js | 2 + src/mixins/lang.js | 27 ++++++++ 4 files changed, 68 insertions(+), 62 deletions(-) create mode 100644 src/mixins/lang.js diff --git a/src/components/settings/Appearance.vue b/src/components/settings/Appearance.vue index e0a3d643..63fbd40b 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 deeeac91..22949393 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 = { - 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 + "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, +}; + +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 14b87f49..18490908 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 00000000..2a13fec2 --- /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 115/282] 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 6f4626fe..5b1c6b8b 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 116/282] 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 5b1c6b8b..0011e33d 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 117/282] 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 9f75982f..14fe691a 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 9ade03a1..bb71fba0 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 118/282] 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 9c11a323..69d68193 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 119/282] 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 f1d9b078..3ae95b36 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 120/282] [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 2a13fec2..31d5a8e0 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 121/282] 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 bacda3a3..3378a0e9 100644 --- a/src/pages/Settings.vue +++ b/src/pages/Settings.vue @@ -44,8 +44,20 @@ export default { settings: {}, settingsLoaded: false, + }; + }, - subMenus: { + computed: { + currentPage() { + let pathEnd = useRoute().path.split("/").at(-1); + if (pathEnd == "settings" || pathEnd == null) { + return "general"; + } + return pathEnd; + }, + + 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 122/282] 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 52b70fa8..945fc207 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 123/282] 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 77ef1a3f..52d13eef 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 124/282] 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 a1b42d85..459bb8d5 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 125/282] 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 66bbb794..d4835d1c 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 126/282] 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 f7a637de..24de7410 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 07bd818e..2678a94a 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 127/282] 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 2678a94a..4a0d0408 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 128/282] 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 8d23f003..129403fa 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 129/282] Typo correction --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9177cc99..4fd0ff0c 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 130/282] 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 47ac72d6..37c9c6fd 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 131/282] Node engine version --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index fdc690f7..80134826 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 132/282] 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 00000000..7f22634e --- /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 e2cfb193..3eb5f97b 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 00000000..c8dfb72b --- /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 bb71fba0..155a1ab2 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 a51469c0..fee80a76 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 133/282] Update README.md --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 4fd0ff0c..ecd33bcb 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 134/282] Update CONTRIBUTING.md --- CONTRIBUTING.md | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 46e9a899..3679bbd9 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 135/282] 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 945fc207..3c7f4060 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 136/282] 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 3be22931..9afb8596 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 137/282] 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 0011e33d..4b035d4c 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 138/282] 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 80134826..67dabe8f 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 139/282] 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 67dabe8f..399ebb15 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 37c9c6fd..68758dd3 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 140/282] 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 6f4626fe..4b035d4c 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 141/282] 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 ecd33bcb..ea228166 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 142/282] 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 68758dd3..adcfce28 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 143/282] Upgrade bree to 7.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 399ebb15..148f4aa7 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 144/282] 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 148f4aa7..48937865 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 145/282] 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 4b035d4c..f76a3581 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 146/282] 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 922fd252..d162fe8f 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 a4d70167..83fd434b 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 147/282] =?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 | 492 ++++++++++++++++------------------------------ package.json | 4 +- 2 files changed, 166 insertions(+), 330 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9b2e0acc..4790d60e 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.", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/bree/-/bree-7.1.0.tgz", + "integrity": "sha512-1bKJDODePYjIIUvt/ImO5PnitRQjZnTfMnsXq64LAWf2muXn9lCju0PnKoayIHdYzEMKepXr+YYY+Y+cmaVkHA==", "dependencies": { - "@babel/runtime": "^7.12.5", - "@breejs/later": "^4.0.2", - "boolean": "^3.0.2", - "bthreads": "^0.5.1", + "@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": ">=10.13.0" } }, - "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==", + "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": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "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==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.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/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": { - "locate-path": "^3.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=6" + "node": ">=7.0.0" } }, - "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" - }, - "engines": { - "node": ">=6" - } - }, - "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==", - "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" - } - }, - "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==", - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "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==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/bree/-/bree-7.1.0.tgz", + "integrity": "sha512-1bKJDODePYjIIUvt/ImO5PnitRQjZnTfMnsXq64LAWf2muXn9lCju0PnKoayIHdYzEMKepXr+YYY+Y+cmaVkHA==", "requires": { - "@babel/runtime": "^7.12.5", - "@breejs/later": "^4.0.2", - "boolean": "^3.0.2", - "bthreads": "^0.5.1", + "@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==" + "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" + } }, "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.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==", + "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": { - "locate-path": "^3.0.0" + "color-name": "~1.1.4" } }, - "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==", - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "requires": { - "p-limit": "^2.0.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==", - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "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 48937865..69aca8bb 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 148/282] 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 55ff7ec4..d263f636 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 149/282] 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 00000000..2127fe16 --- /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 150/282] 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 2127fe16..f6eb0ebc 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 151/282] 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 f6eb0ebc..00000000 --- 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 152/282] 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 f76a3581..20ee93db 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 153/282] 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 92083a38..4cf863ef 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 154/282] 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 ab0c1d40..6aa614b7 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 79e82837..70d94673 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 155/282] 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 70d94673..1920cef7 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 156/282] update to 1.11.0 --- package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 69aca8bb..38f018e9 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 157/282] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index ea228166..d870d617 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 158/282] 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 efbbfe6f..a9984351 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 38f018e9..1a5424df 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 74f18a2b3f25e904acd0edb4fbeeb42bae97ee47 Mon Sep 17 00:00:00 2001 From: SiderealArt <nelson22768384@gmail.com> Date: Wed, 8 Dec 2021 17:23:13 +0800 Subject: [PATCH 159/282] update zh-TW translation --- src/languages/zh-TW.js | 48 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/src/languages/zh-TW.js b/src/languages/zh-TW.js index 337d9422..0e905260 100644 --- a/src/languages/zh-TW.js +++ b/src/languages/zh-TW.js @@ -14,7 +14,7 @@ export default { deleteMonitorMsg: "您確定要刪除此監測器嗎?", deleteNotificationMsg: "您確定要為所有監測器刪除此通知嗎?", resoverserverDescription: "Cloudflare 為預設伺服器。您可以隨時更換解析伺服器。", - rrtypeDescription: "選擇您想要監測的資源記錄", + rrtypeDescription: "選擇您想要監測的資源記錄類型", pauseMonitorMsg: "您確定要暫停嗎?", enableDefaultNotificationDescription: "預設情況下,新監測器將啟用此通知。您仍可分別停用各監測器的通知。", clearEventsMsg: "您確定要刪除此監測器的所有事件嗎?", @@ -307,4 +307,50 @@ export default { "Showing {from} to {to} of {count} records": "正在顯示 {count} 項記錄中的 {from} 至 {to} 項", steamApiKeyDescription: "若要監測 Steam 遊戲伺服器,您將需要 Steam Web-API 金鑰。您可以在此註冊您的 API 金鑰:", "Current User": "目前使用者", + recent: "最近", + Done: "完成", + Info: "資訊", + Security: "安全性", + "Steam API Key": "Steam API 金鑰", + "Shrink Database": "壓縮資料庫", + "Pick a RR-Type...": "選擇資源記錄類型...", + "Pick Accepted Status Codes...": "選擇可接受的狀態碼...", + Default: "預設", + "HTTP Options": "HTTP 選項", + "Create Incident": "建立事件", + Title: "標題", + Content: "內容", + Style: "樣式", + info: "資訊", + warning: "警告", + danger: "危險", + primary: "主要", + light: "淺色", + dark: "暗色", + Post: "發佈", + "Please input title and content": "請輸入標題及內容", + Created: "建立", + "Last Updated": "最後更新", + Unpin: "取消釘選", + "Switch to Light Theme": "切換至淺色佈景主題", + "Switch to Dark Theme": "切換至深色佈景主題", + "Show Tags": "顯示標籤", + "Hide Tags": "隱藏標籤", + Description: "說明", + "No monitors available.": "沒有可用的監測器。", + "Add one": "新增一個", + "No Monitors": "無監測器", + "Add one": "新增一個", + "Untitled Group": "未命名群組", + Services: "服務", + Discard: "捨棄", + Cancel: "取消", + "Powered by": "技術支援", + shrinkDatabaseDescription: "觸發 SQLite 的資料庫清理 (VACUUM)。如果您的資料庫是在 1.10.0 版本後建立,AUTO_VACUUM 已自動啟用,則無需此操作。", + serwersms: "SerwerSMS.pl", + serwersmsAPIUser: "API 使用者名稱 (包括 webapi_ 前綴)", + serwersmsAPIPassword: "API 密碼", + serwersmsPhoneNumber: "電話號碼", + serwersmsSenderName: "SMS 寄件人名稱 (由客戶入口網站註冊)", + "stackfield": "Stackfield", }; From 9473cd6919ababdc73f7e772080fdd8912a39836 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lars=20S=C3=B8rensen?= <dev@lrss.dk> Date: Wed, 8 Dec 2021 11:14:10 +0100 Subject: [PATCH 160/282] Update da-DK.js translation --- src/languages/da-DK.js | 554 ++++++++++++++++++++++++++--------------- 1 file changed, 354 insertions(+), 200 deletions(-) diff --git a/src/languages/da-DK.js b/src/languages/da-DK.js index 66e7cb3d..22a2c369 100644 --- a/src/languages/da-DK.js +++ b/src/languages/da-DK.js @@ -1,201 +1,355 @@ export default { - languageName: "Danish (Danmark)", - Settings: "Indstillinger", - Dashboard: "Dashboard", - "New Update": "Opdatering tilgængelig", - Language: "Sprog", - Appearance: "Udseende", - Theme: "Tema", - General: "Generelt", - Version: "Version", - "Check Update On GitHub": "Tjek efter opdateringer på Github", - List: "Liste", - Add: "Tilføj", - "Add New Monitor": "Tilføj ny Overvåger", - "Quick Stats": "Oversigt", - Up: "Aktiv", - Down: "Inaktiv", - Pending: "Afventer", - Unknown: "Ukendt", - Pause: "Stands", - pauseDashboardHome: "Standset", - Name: "Navn", - Status: "Status", - DateTime: "Dato / Tid", - Message: "Beskeder", - "No important events": "Inden vigtige begivenheder", - Resume: "Fortsæt", - Edit: "Rediger", - Delete: "Slet", - Current: "Aktuelt", - Uptime: "Oppetid", - "Cert Exp.": "Certifikatets udløb", - days: "Dage", - day: "Dag", - "-day": "-Dage", - hour: "Timer", - "-hour": "-Timer", - checkEverySecond: "Tjek hvert {0} sekund", - Response: "Respons", - Ping: "Ping", - "Monitor Type": "Overvåger Type", - Keyword: "Nøgleord", - "Friendly Name": "Visningsnavn", - URL: "URL", - Hostname: "Hostname", - Port: "Port", - "Heartbeat Interval": "Taktinterval", - Retries: "Gentagelser", - retriesDescription: "Maksimalt antal gentagelser, før tjenesten markeres som inaktiv og sender en meddelelse.", - Advanced: "Avanceret", - ignoreTLSError: "Ignorere TLS/SSL web fejl", - "Upside Down Mode": "Omvendt tilstand", - upsideDownModeDescription: "Håndter tilstanden omvendt. Hvis tjenesten er tilgængelig, vises den som inaktiv.", - "Max. Redirects": "Maks. Omdirigeringer", - maxRedirectDescription: "Maksimalt antal omdirigeringer, der skal følges. Indstil til 0 for at deaktivere omdirigeringer.", - "Accepted Status Codes": "Tilladte HTTP-Statuskoder", - acceptedStatusCodesDescription: "Vælg de statuskoder, der stadig skal vurderes som vellykkede.", - Save: "Gem", - Notifications: "Underretninger", - "Not available, please setup.": "Ikke tilgængelige, opsæt venligst.", - "Setup Notification": "Opsæt underretninger", - Light: "Lys", - Dark: "Mørk", - Auto: "Auto", - "Theme - Heartbeat Bar": "Tema - Tidslinje", - Normal: "Normal", - Bottom: "Bunden", - None: "Ingen", - Timezone: "Tidszone", - "Search Engine Visibility": "Søgemaskine synlighed", - "Allow indexing": "Tillad indeksering", - "Discourage search engines from indexing site": "Frabed søgemaskiner at indeksere webstedet", - "Change Password": "Ændre adgangskode", - "Current Password": "Nuværende adgangskode", - "New Password": "Ny adgangskode", - "Repeat New Password": "Gentag den nye adgangskode", - passwordNotMatchMsg: "Adgangskoderne er ikke ens.", - "Update Password": "Opdater adgangskode", - "Disable Auth": "Deaktiver autentificering", - "Enable Auth": "Aktiver autentificering", - Logout: "Log ud", - notificationDescription: "Tildel underretninger til Overvåger(e), så denne funktion træder i kraft.", - Leave: "Verlassen", - "I understand, please disable": "Jeg er indforstået, deaktiver venligst", - Confirm: "Bekræft", - Yes: "Ja", - No: "Nej", - Username: "Brugernavn", - Password: "Adgangskode", - "Remember me": "Husk mig", - Login: "Log ind", - "No Monitors, please": "Ingen Overvågere", - "add one": "tilføj en", - "Notification Type": "Underretningstype", - Email: "E-Mail", - Test: "Test", - "Certificate Info": "Certifikatoplysninger", - keywordDescription: "Søg efter et søgeord i almindelig HTML- eller JSON -output. Bemærk, at der skelnes mellem store og små bogstaver.", - deleteMonitorMsg: "Er du sikker på, at du vil slette overvågeren?", - deleteNotificationMsg: "Er du sikker på, at du vil slette denne underretning for alle overvågere? ", - resoverserverDescription: "Cloudflare er standardserveren, den kan til enhver tid ændres.", - "Resolver Server": "Navne-server", - rrtypeDescription: "Vælg den type RR, du vil overvåge.", - "Last Result": "Seneste resultat", - pauseMonitorMsg: "Er du sikker på, at du vil standse Overvågeren?", - "Create your admin account": "Opret din administratorkonto", - "Repeat Password": "Gentag adgangskoden", - "Resource Record Type": "Resource Record Type", - respTime: "Resp. Tid (ms)", - notAvailableShort: "N/A", - Create: "Opret", - clearEventsMsg: "Er du sikker på vil slette alle events for denne Overvåger?", - clearHeartbeatsMsg: "Er du sikker på vil slette alle heartbeats for denne Overvåger?", - confirmClearStatisticsMsg: "Vil du helt sikkert slette ALLE statistikker?", - "Clear Data": "Ryd Data", - Events: "Events", - Heartbeats: "Heartbeats", - "Auto Get": "Auto-hent", - enableDefaultNotificationDescription: "For hver ny overvåger aktiveres denne underretning som standard. Du kan stadig deaktivere underretningen separat for hver skærm.", - "Default enabled": "Standard aktiveret", - "Also apply to existing monitors": "Anvend også på eksisterende overvågere", - Export: "Eksport", - Import: "Import", - backupDescription: "Du kan sikkerhedskopiere alle Overvågere og alle underretninger til en JSON-fil.", - backupDescription2: "PS: Historik og hændelsesdata er ikke inkluderet.", - backupDescription3: "Følsom data, f.eks. underretnings-tokener, er inkluderet i eksportfilen. Gem den sikkert.", - alertNoFile: "Vælg en fil der skal importeres.", - alertWrongFileType: "Vælg venligst en JSON-fil.", - twoFAVerifyLabel: "Indtast venligst dit token for at bekræfte, at 2FA fungerer", - tokenValidSettingsMsg: "Token er gyldigt! Du kan nu gemme 2FA -indstillingerne.", - confirmEnableTwoFAMsg: "Er du sikker på at du vil aktivere 2FA?", - confirmDisableTwoFAMsg: "Er du sikker på at du vil deaktivere 2FA?", - "Apply on all existing monitors": "Anvend på alle eksisterende overvågere", - "Verify Token": "Verificere Token", - "Setup 2FA": "Opsæt 2FA", - "Enable 2FA": "Aktiver 2FA", - "Disable 2FA": "Deaktiver 2FA", - "2FA Settings": "2FA Indstillinger", - "Two Factor Authentication": "To-Faktor Autentificering", - Active: "Aktive", - Inactive: "Inaktive", - Token: "Token", - "Show URI": "Vis URI", - "Clear all statistics": "Ryd alle Statistikker", - retryCheckEverySecond: "Prøv igen hvert {0} sekund.", - importHandleDescription: "Vælg 'Spring over eksisterende', hvis du vil springe over hver overvåger eller underretning med samme navn. 'Overskriv' sletter alle eksisterende overvågere og underretninger.", - confirmImportMsg: "Er du sikker på at importere sikkerhedskopien? Sørg for, at du har valgt den rigtige importindstilling.", - "Heartbeat Retry Interval": "Heartbeat Gentagelsesinterval", - "Import Backup": "Importer Backup", - "Export Backup": "Eksporter Backup", - "Skip existing": "Spring over eksisterende", - Overwrite: "Overskriv", - Options: "Valgmuligheder", - "Keep both": "Behold begge", - Tags: "Tags", - "Add New below or Select...": "Tilføj Nyt nedenfor eller Vælg ...", - "Tag with this name already exist.": "Et Tag med dette navn findes allerede.", - "Tag with this value already exist.": "Et Tag med denne værdi findes allerede.", - color: "farve", - "value (optional)": "værdi (valgfri)", - Gray: "Grå", - Red: "Rød", - Orange: "Orange", - Green: "Grøn", - Blue: "Blå", - Indigo: "Indigo", - Purple: "Lilla", - Pink: "Pink", - "Search...": "Søg...", - "Avg. Ping": "Gns. Ping", - "Avg. Response": "Gns. Respons", - "Entry Page": "Entry Side", - statusPageNothing: "Intet her, tilføj venligst en Gruppe eller en Overvåger.", - "No Services": "Ingen Tjenester", - "All Systems Operational": "Alle Systemer i Drift", - "Partially Degraded Service": "Delvist Forringet Service", - "Degraded Service": "Forringet Service", - "Add Group": "Tilføj Gruppe", - "Add a monitor": "Tilføj en Overvåger", - "Edit Status Page": "Rediger Statusside", - "Go to Dashboard": "Gå til Dashboard", - "Status Page": "Status Page", - telegram: "Telegram", - webhook: "Webhook", - smtp: "Email (SMTP)", - discord: "Discord", - teams: "Microsoft Teams", - signal: "Signal", - gotify: "Gotify", - slack: "Slack", - "rocket.chat": "Rocket.chat", - pushover: "Pushover", - pushy: "Pushy", - octopush: "Octopush", - promosms: "PromoSMS", - lunasea: "LunaSea", - apprise: "Apprise (Support 50+ Notification services)", - pushbullet: "Pushbullet", - line: "Line Messenger", - mattermost: "Mattermost", -}; + languageName: 'Danish (Danmark)', + Settings: 'Indstillinger', + Dashboard: 'Betjeningspanel', + 'New Update': 'Opdatering tilgængelig', + Language: 'Sprog', + Appearance: 'Udseende', + Theme: 'Tema', + General: 'Generelt', + Version: 'Version', + 'Check Update On GitHub': 'Tjek efter opdateringer på Github', + List: 'Liste', + Add: 'Tilføj', + 'Add New Monitor': 'Tilføj ny Overvåger', + 'Quick Stats': 'Oversigt', + Up: 'Aktiv', + Down: 'Inaktiv', + Pending: 'Afventer', + Unknown: 'Ukendt', + Pause: 'Stands', + pauseDashboardHome: 'Standset', + Name: 'Navn', + Status: 'Status', + DateTime: 'Dato / Tid', + Message: 'Beskeder', + 'No important events': 'Inden vigtige begivenheder', + Resume: 'Fortsæt', + Edit: 'Rediger', + Delete: 'Slet', + Current: 'Aktuelt', + Uptime: 'Oppetid', + 'Cert Exp.': 'Certifikatets udløb', + days: 'Dage', + day: 'Dag', + '-day': '-Dage', + hour: 'Timer', + '-hour': '-Timer', + checkEverySecond: 'Tjek hvert {0} sekund', + Response: 'Respons', + Ping: 'Ping', + 'Monitor Type': 'Overvåger Type', + Keyword: 'Nøgleord', + 'Friendly Name': 'Visningsnavn', + URL: 'URL', + Hostname: 'Hostname', + Port: 'Port', + 'Heartbeat Interval': 'Taktinterval', + Retries: 'Gentagelser', + retriesDescription: 'Maksimalt antal gentagelser, før tjenesten markeres som inaktiv og sender en meddelelse.', + Advanced: 'Avanceret', + ignoreTLSError: 'Ignorere TLS/SSL web fejl', + 'Upside Down Mode': 'Omvendt tilstand', + upsideDownModeDescription: 'Håndter tilstanden omvendt. Hvis tjenesten er tilgængelig, vises den som inaktiv.', + 'Max. Redirects': 'Maks. Omdirigeringer', + maxRedirectDescription: 'Maksimalt antal omdirigeringer, der skal følges. Indstil til 0 for at deaktivere omdirigeringer.', + 'Accepted Status Codes': 'Tilladte HTTP-Statuskoder', + acceptedStatusCodesDescription: 'Vælg de statuskoder, der stadig skal vurderes som vellykkede.', + Save: 'Gem', + Notifications: 'Underretninger', + 'Not available, please setup.': 'Ikke tilgængelige, opsæt venligst.', + 'Setup Notification': 'Opsæt underretninger', + Light: 'Lys', + Dark: 'Mørk', + Auto: 'Auto', + 'Theme - Heartbeat Bar': 'Tema - Tidslinje', + Normal: 'Normal', + Bottom: 'Bunden', + None: 'Ingen', + Timezone: 'Tidszone', + 'Search Engine Visibility': 'Søgemaskine synlighed', + 'Allow indexing': 'Tillad indeksering', + 'Discourage search engines from indexing site': 'Frabed søgemaskiner at indeksere webstedet', + 'Change Password': 'Ændre adgangskode', + 'Current Password': 'Nuværende adgangskode', + 'New Password': 'Ny adgangskode', + 'Repeat New Password': 'Gentag den nye adgangskode', + passwordNotMatchMsg: 'Adgangskoderne er ikke ens.', + 'Update Password': 'Opdater adgangskode', + 'Disable Auth': 'Deaktiver autentificering', + 'Enable Auth': 'Aktiver autentificering', + Logout: 'Log ud', + notificationDescription: 'Tildel underretninger til Overvåger(e), så denne funktion træder i kraft.', + Leave: 'Verlassen', + 'I understand, please disable': 'Jeg er indforstået, deaktiver venligst', + Confirm: 'Bekræft', + Yes: 'Ja', + No: 'Nej', + Username: 'Brugernavn', + Password: 'Adgangskode', + 'Remember me': 'Husk mig', + Login: 'Log ind', + 'No Monitors, please': 'Ingen Overvågere', + 'add one': 'tilføj en', + 'Notification Type': 'Underretningstype', + Email: 'E-Mail', + Test: 'Test', + 'Certificate Info': 'Certifikatoplysninger', + keywordDescription: 'Søg efter et søgeord i almindelig HTML- eller JSON -output. Bemærk, at der skelnes mellem store og små bogstaver.', + deleteMonitorMsg: 'Er du sikker på, at du vil slette overvågeren?', + deleteNotificationMsg: 'Er du sikker på, at du vil slette denne underretning for alle overvågere? ', + resoverserverDescription: 'Cloudflare er standardserveren, den kan til enhver tid ændres.', + 'Resolver Server': 'Navne-server', + rrtypeDescription: 'Vælg den type RR, du vil overvåge.', + 'Last Result': 'Seneste resultat', + pauseMonitorMsg: 'Er du sikker på, at du vil standse Overvågeren?', + 'Create your admin account': 'Opret din administratorkonto', + 'Repeat Password': 'Gentag adgangskoden', + 'Resource Record Type': 'Resource Record Type', + respTime: 'Resp. Tid (ms)', + notAvailableShort: 'N/A', + Create: 'Opret', + clearEventsMsg: 'Er du sikker på vil slette alle events for denne Overvåger?', + clearHeartbeatsMsg: 'Er du sikker på vil slette alle hjerteslag for denne Overvåger?', + confirmClearStatisticsMsg: 'Vil du helt sikkert slette ALLE statistikker?', + 'Clear Data': 'Ryd Data', + Events: 'Events', + Heartbeats: 'Hjerteslag', + 'Auto Get': 'Auto-hent', + enableDefaultNotificationDescription: 'For hver ny overvåger aktiveres denne underretning som standard. Du kan stadig deaktivere underretningen separat for hver skærm.', + 'Default enabled': 'Standard aktiveret', + 'Also apply to existing monitors': 'Anvend også på eksisterende overvågere', + Export: 'Eksport', + Import: 'Import', + backupDescription: 'Du kan sikkerhedskopiere alle Overvågere og alle underretninger til en JSON-fil.', + backupDescription2: 'PS: Historik og hændelsesdata er ikke inkluderet.', + backupDescription3: 'Følsom data, f.eks. underretnings-tokener, er inkluderet i eksportfilen. Gem den sikkert.', + alertNoFile: 'Vælg en fil der skal importeres.', + alertWrongFileType: 'Vælg venligst en JSON-fil.', + twoFAVerifyLabel: 'Indtast venligst dit token for at bekræfte, at 2FA fungerer', + tokenValidSettingsMsg: 'Token er gyldigt! Du kan nu gemme 2FA -indstillingerne.', + confirmEnableTwoFAMsg: 'Er du sikker på at du vil aktivere 2FA?', + confirmDisableTwoFAMsg: 'Er du sikker på at du vil deaktivere 2FA?', + 'Apply on all existing monitors': 'Anvend på alle eksisterende overvågere', + 'Verify Token': 'Verificere Token', + 'Setup 2FA': 'Opsæt 2FA', + 'Enable 2FA': 'Aktiver 2FA', + 'Disable 2FA': 'Deaktiver 2FA', + '2FA Settings': '2FA Indstillinger', + 'Two Factor Authentication': 'To-Faktor Autentificering', + Active: 'Aktive', + Inactive: 'Inaktive', + Token: 'Token', + 'Show URI': 'Vis URI', + 'Clear all statistics': 'Ryd alle Statistikker', + retryCheckEverySecond: 'Prøv igen hvert {0} sekund.', + importHandleDescription: "Vælg 'Spring over eksisterende', hvis du vil springe over hver overvåger eller underretning med samme navn. 'Overskriv' sletter alle eksisterende overvågere og underretninger.", + confirmImportMsg: 'Er du sikker på at importere sikkerhedskopien? Sørg for, at du har valgt den rigtige importindstilling.', + 'Heartbeat Retry Interval': 'Hjerteslag Gentagelsesinterval', + 'Import Backup': 'Importer Backup', + 'Export Backup': 'Eksporter Backup', + 'Skip existing': 'Spring over eksisterende', + Overwrite: 'Overskriv', + Options: 'Valgmuligheder', + 'Keep both': 'Behold begge', + Tags: 'Etiketter', + 'Add New below or Select...': 'Tilføj Nyt nedenfor eller Vælg ...', + 'Tag with this name already exist.': 'Et Tag med dette navn findes allerede.', + 'Tag with this value already exist.': 'Et Tag med denne værdi findes allerede.', + color: 'farve', + 'value (optional)': 'værdi (valgfri)', + Gray: 'Grå', + Red: 'Rød', + Orange: 'Orange', + Green: 'Grøn', + Blue: 'Blå', + Indigo: 'Indigo', + Purple: 'Lilla', + Pink: 'Pink', + 'Search...': 'Søg...', + 'Avg. Ping': 'Gns. Ping', + 'Avg. Response': 'Gns. Respons', + 'Entry Page': 'Entry Side', + statusPageNothing: 'Intet her, tilføj venligst en Gruppe eller en Overvåger.', + 'No Services': 'Ingen Tjenester', + 'All Systems Operational': 'Alle Systemer i Drift', + 'Partially Degraded Service': 'Delvist Forringet Service', + 'Degraded Service': 'Forringet Service', + 'Add Group': 'Tilføj Gruppe', + 'Add a monitor': 'Tilføj en Overvåger', + 'Edit Status Page': 'Rediger Statusside', + 'Go to Dashboard': 'Gå til Betjeningspanel', + 'Status Page': 'Statusside', + telegram: 'Telegram', + webhook: 'Webhook', + smtp: 'Email (SMTP)', + discord: 'Discord', + teams: 'Microsoft Teams', + signal: 'Signal', + gotify: 'Gotify', + slack: 'Slack', + 'rocket.chat': 'Rocket.chat', + pushover: 'Pushover', + pushy: 'Pushy', + octopush: 'Octopush', + promosms: 'PromoSMS', + lunasea: 'LunaSea', + apprise: 'Apprise (Understøtter 50+ Notifikationstjenester)', + pushbullet: 'Pushbullet', + line: 'Line Messenger', + mattermost: 'Mattermost', + 'Primary Base URL': 'Primær Basis-URL', + 'Push URL': 'Push URL', + needPushEvery: 'Du bør kalde denne webadresse hvert {0} sekund.', + pushOptionalParams: 'Valgfrie parametre: {0}', + defaultNotificationName: 'Min {notification} Advarsel ({number})', + here: 'her', + Required: 'Påkrævet', + 'Bot Token': 'Bot Token', + wayToGetTelegramToken: 'Du kan få et token fra {0}.', + 'Chat ID': 'Chat ID', + supportTelegramChatID: "Support Direct Chat / Group / Channel's Chat ID", + wayToGetTelegramChatID: "Du kan få dit chat-ID ved at sende en besked til bot'en og gå til denne URL for at se chat_id'et:", + 'YOUR BOT TOKEN HERE': 'DIT BOT TOKEN HER', + chatIDNotFound: 'Chat-ID blev ikke fundet; send venligst en besked til denne bot først ', + 'Post URL': 'Post URL', + 'Content Type': 'Indholdstype', + webhookJsonDesc: '{0} er god til alle moderne HTTP-servere som f.eks Express.js', + webhookFormDataDesc: "{multipart} er god til PHP. JSON'en skal parses med {decodeFunction}", + secureOptionNone: 'Ingen / STARTTLS (25, 587)', + secureOptionTLS: 'TLS (465)', + 'Ignore TLS Error': 'Ignorer TLS-fejl', + 'From Email': 'Afsender Email', + emailCustomSubject: 'Brugerdefineret Emne', + 'To Email': 'Modtager Email', + smtpCC: 'CC', + smtpBCC: 'BCC', + 'Discord Webhook URL': 'Discord Webhook URL', + wayToGetDiscordURL: 'Du kan få dette ved at gå til Serverindstillinger -> Integrationer -> Opret webhook ', + 'Bot Display Name': 'Bot Visningsnavn', + 'Prefix Custom Message': 'Præfiks Brugerdefineret Besked', + 'Hello @everyone is...': "Hello {'@'}everyone is...", + 'Webhook URL': 'Webhook URL', + wayToGetTeamsURL: 'Du kan lære, hvordan du laver en webhook URL {0}.', + Number: 'Nummer', + Recipients: 'Modtagere', + needSignalAPI: 'Du skal have en Signal-klient med REST API.', + wayToCheckSignalURL: 'Du kan tjekke denne URL for at se, hvordan du konfigurerer en:', + signalImportant: 'VIGTIGT: Du kan ikke blande grupper og numre i modtagere!', + 'Application Token': 'Program Token', + 'Server URL': 'Server URL', + Priority: 'Prioritet', + 'Icon Emoji': 'Icon Emoji', + 'Channel Name': 'Kanalnavn', + 'Uptime Kuma URL': 'Uptime Kuma URL', + aboutWebhooks: 'Mere info om Webhooks på: {0}', + aboutChannelName: 'Indtast kanalnavnet i {0} Kanalnavn feltet, hvis du vil omgå Webhook-kanalen. Eks: #anden-kanal', + aboutKumaURL: 'Hvis du efterlader Uptime Kuma URL-feltet tomt, vil det som standard gå til projektets GitHub-siden.', + emojiCheatSheet: 'Emoji cheat sheet: {0}', + clicksendsms: 'ClickSend SMS', + 'User Key': 'Bruger-Nøgle', + Device: 'Enhed', + 'Message Title': 'Besked Titel', + 'Notification Sound': 'Notifikationslyd', + 'More info on:': 'Mere info på: {0}', + pushoverDesc1: 'Nødprioritet (2) har som standard 30 sekunders timeout mellem genforsøg og udløber efter 1 time.', + pushoverDesc2: 'Hvis du vil sende meddelelser til forskellige enheder, skal du udfylde feltet Enhed.', + 'SMS Type': 'SMS Type', + octopushTypePremium: 'Premium (Hurtig - anbefales til advarsel)', + octopushTypeLowCost: 'Lavpris (Langsom - nogle gange blokeret af operatøren)', + checkPrice: 'Tjek {0} priser:', + apiCredentials: 'API legitimationsoplysninger', + octopushLegacyHint: 'Bruger du den ældre version af Octopush (2011-2020) eller den nye version?', + 'Check octopush prices': 'Tjek octopush priser {0}.', + octopushPhoneNumber: 'Telefonnummer (intl format, f.eks : +4512345678) ', + octopushSMSSender: 'SMS Afsender Navn : 3-11 alfanumeriske tegn og mellemrum (a-zA-Z0-9)', + 'LunaSea Device ID': 'LunaSea Enhed-ID', + 'Apprise URL': 'Apprise URL', + 'Example:': 'Eksempel: {0}', + 'Read more:': 'Læs mere: {0}', + 'Status:': 'Status: {0}', + 'Read more': 'Læs mere', + appriseInstalled: 'Apprise er installeret.', + appriseNotInstalled: 'Apprise er ikke installeret. {0}', + 'Access Token': 'Access Token', + 'Channel access token': 'kanaladgangstoken', + 'Line Developers Console': 'Line Udviklerkonsol', + lineDevConsoleTo: 'Line Udviklerkonsol - {0}', + 'Basic Settings': 'Basisindstillinger', + 'User ID': 'Bruger-ID', + 'Messaging API': 'Messaging API', + wayToGetLineChannelToken: "Tilgå først {0}, opret en udbyder og kanal (Messaging API), så kan du få kanaladgangstoken'et og bruger-ID'et fra de ovennævnte menupunkter.", + 'Icon URL': 'Ikon URL', + aboutIconURL: 'Du kan angive et link til et billede i "Ikon URL" for at tilsidesætte standardprofilbilledet. Vil ikke blive brugt, hvis Ikon Emoji er angivet.', + aboutMattermostChannelName: 'Du kan tilsidesætte standardkanalen, som Webhoo\'en sender til ved at indtaste kanalnavnet i feltet "Kanalnavn". Dette skal aktiveres i Mattermost Webhook-indstillingerne. Eks: #anden-kanal', + matrix: 'Matrix', + promosmsTypeEco: 'SMS ECO - billig, men langsom og ofte overbelastet. Begrænset kun til polske modtagere.', + promosmsTypeFlash: 'SMS FLASH - Beskeden vises automatisk på modtagerenheden. Begrænset kun til polske modtagere.', + promosmsTypeFull: 'SMS FULL - Premium-niveau af SMS, Du kan bruge dit "Sender Name" (Du skal først registrere navn). Pålidelig til advarsler.', + promosmsTypeSpeed: 'SMS SPEED - Højeste prioritet i systemet. Meget hurtig og pålidelig, men dyr (ca. to gange af SMS FULL pris).', + promosmsPhoneNumber: 'Telefonnummer (polske numre behøver ikke angive områdenumre)', + promosmsSMSSender: 'SMS Sender Name : Forudregistreret navn eller en af standarderne: InfoSMS, SMS Info, MaxSMS, INFO, SMS', + 'Feishu WebHookUrl': 'Feishu WebHookURL', + matrixHomeserverURL: 'Hjemmeserver-URL (med http(s):// og eventuel port)', + 'Internal Room Id': 'Intern Rum-ID', + matrixDesc1: 'Du kan finde det interne rum-ID ved at se i det avancerede afsnit af rumindstillingerne i din Matrix-klient. Det skulle ligne !QMdRCpUIfLwsfjxye6:home.server.', + matrixDesc2: "Det anbefales stærkt, at du opretter en ny bruger og ikke bruger din egen Matrix-brugers adgangstoken, da det giver fuld adgang til din konto og alle de rum, du har tilsluttet dig. I stedet skal du oprette en ny bruger og kun invitere den til det rum, du vil modtage meddelelsen i. Du kan få adgangstokenet ved at køre {0}", + Method: 'Metode', + Body: 'Body', + Headers: 'Headers', + PushUrl: 'Push URL', + HeadersInvalidFormat: '"request headers"-erne er ikke gyldige JSON: ', + BodyInvalidFormat: '"request body"-en er ikke gyldige JSON: ', + 'Monitor History': 'Overvåger Historik', + clearDataOlderThan: 'Gem overvågningshistorikdata i {0} dage.', + PasswordsDoNotMatch: 'Adgangskoderne stemmer ikke overens.', + records: 'forekomster', + 'One record': 'Én forekomst', + steamApiKeyDescription: 'For at overvåge en Steam Game Server skal du bruge en Steam Web-API nøgle. Du kan registrere din API-nøgle her: ', + 'Current User': 'Nuværende Bruger', + recent: 'Seneste', + Done: 'Færdig', + Info: 'Info', + Security: 'Sikkerhed', + 'Steam API Key': 'Steam API-nøgle', + 'Shrink Database': 'Krymp Database', + 'Pick a RR-Type...': 'Vælg en RR-Type...', + 'Pick Accepted Status Codes...': 'Vælg Accepterede Statuskoder...', + Default: 'Standard', + 'HTTP Options': 'HTTP Valgmuligheder', + 'Create Incident': 'Opret Annoncering', + Title: 'Titel', + Content: 'Indhold', + Style: 'Type', + info: 'info', + warning: 'advarsel', + danger: 'fare', + primary: 'primær', + light: 'lys', + dark: 'mørk', + Post: 'Udgiv', + 'Please input title and content': 'Indtast venligst titel og indhold', + Created: 'Oprettet', + 'Last Updated': 'Sidst Opdateret', + Unpin: 'Frigør', + 'Switch to Light Theme': 'Skift til Lys Tema', + 'Switch to Dark Theme': 'Skift til Mørkt Tema', + 'Show Tags': 'Vis Etiketter', + 'Hide Tags': 'Skjul Etiketter', + Description: 'Beskrivelse', + 'No monitors available.': 'No monitors available.', + 'Add one': 'Tilføj en', + 'No Monitors': 'Ingen Overvågere', + 'Untitled Group': 'Unavngivet Gruppe', + Services: 'Tjenester', + Discard: 'Kassér', + Cancel: 'Annullér', + 'Powered by': 'Drevet af', + shrinkDatabaseDescription: 'Udfør database VACUUM for SQLite. Hvis din database er oprettet efter 1.10.0, er AUTO_VACUUM allerede aktiveret, og denne handling er ikke nødvendig.', + serwersms: 'SerwerSMS.pl', + serwersmsAPIUser: 'API Brugernavn (inkl. webapi_ prefix)', + serwersmsAPIPassword: 'API Adgangskode', + serwersmsPhoneNumber: 'Telefonnummer', + serwersmsSenderName: 'SMS Afsender Navn (registreret via kundeportal)', + stackfield: 'Stackfield' +} \ No newline at end of file From 2ef2a42e872d23a7287168302b8c994b5728106b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lars=20S=C3=B8rensen?= <dev@lrss.dk> Date: Wed, 8 Dec 2021 11:35:55 +0100 Subject: [PATCH 161/282] Fixed string enclosure as suggested by update-language-files --- src/languages/da-DK.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/languages/da-DK.js b/src/languages/da-DK.js index 22a2c369..04593d09 100644 --- a/src/languages/da-DK.js +++ b/src/languages/da-DK.js @@ -281,7 +281,7 @@ export default { wayToGetLineChannelToken: "Tilgå først {0}, opret en udbyder og kanal (Messaging API), så kan du få kanaladgangstoken'et og bruger-ID'et fra de ovennævnte menupunkter.", 'Icon URL': 'Ikon URL', aboutIconURL: 'Du kan angive et link til et billede i "Ikon URL" for at tilsidesætte standardprofilbilledet. Vil ikke blive brugt, hvis Ikon Emoji er angivet.', - aboutMattermostChannelName: 'Du kan tilsidesætte standardkanalen, som Webhoo\'en sender til ved at indtaste kanalnavnet i feltet "Kanalnavn". Dette skal aktiveres i Mattermost Webhook-indstillingerne. Eks: #anden-kanal', + aboutMattermostChannelName: `Du kan tilsidesætte standardkanalen, som Webhoo'en sender til ved at indtaste kanalnavnet i feltet "Kanalnavn". Dette skal aktiveres i Mattermost Webhook-indstillingerne. Eks: #anden-kanal`, matrix: 'Matrix', promosmsTypeEco: 'SMS ECO - billig, men langsom og ofte overbelastet. Begrænset kun til polske modtagere.', promosmsTypeFlash: 'SMS FLASH - Beskeden vises automatisk på modtagerenheden. Begrænset kun til polske modtagere.', @@ -293,7 +293,7 @@ export default { matrixHomeserverURL: 'Hjemmeserver-URL (med http(s):// og eventuel port)', 'Internal Room Id': 'Intern Rum-ID', matrixDesc1: 'Du kan finde det interne rum-ID ved at se i det avancerede afsnit af rumindstillingerne i din Matrix-klient. Det skulle ligne !QMdRCpUIfLwsfjxye6:home.server.', - matrixDesc2: "Det anbefales stærkt, at du opretter en ny bruger og ikke bruger din egen Matrix-brugers adgangstoken, da det giver fuld adgang til din konto og alle de rum, du har tilsluttet dig. I stedet skal du oprette en ny bruger og kun invitere den til det rum, du vil modtage meddelelsen i. Du kan få adgangstokenet ved at køre {0}", + matrixDesc2: 'Det anbefales stærkt, at du opretter en ny bruger og ikke bruger din egen Matrix-brugers adgangstoken, da det giver fuld adgang til din konto og alle de rum, du har tilsluttet dig. I stedet skal du oprette en ny bruger og kun invitere den til det rum, du vil modtage meddelelsen i. Du kan få adgangstokenet ved at køre {0}', Method: 'Metode', Body: 'Body', Headers: 'Headers', 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 162/282] 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 3378a0e9..58162f57 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 163/282] update to 1.11.1 --- package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 1a5424df..79ed1c30 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", From cb3429d3c76a716bada58633f855e147e9ffb2bb Mon Sep 17 00:00:00 2001 From: titiscan <github@th.imve.com> Date: Thu, 9 Dec 2021 17:26:05 +0100 Subject: [PATCH 164/282] Update fr-FR.js typo fix --- src/languages/fr-FR.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/languages/fr-FR.js b/src/languages/fr-FR.js index 4cf863ef..bf98dd8d 100644 --- a/src/languages/fr-FR.js +++ b/src/languages/fr-FR.js @@ -129,7 +129,7 @@ export default { Create: "Créer", "Clear Data": "Effacer les données", Events: "Evénements", - Heartbeats: "Vérfications", + Heartbeats: "Vérifications", "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.", From 728485d686ae424e3ad1e8791c581b47373bb91c Mon Sep 17 00:00:00 2001 From: Ioma Taani <iomataani@users.noreply.github.com> Date: Fri, 10 Dec 2021 09:08:01 +0100 Subject: [PATCH 165/282] updated translations --- src/languages/it-IT.js | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/src/languages/it-IT.js b/src/languages/it-IT.js index 20ee93db..4dd0bba0 100644 --- a/src/languages/it-IT.js +++ b/src/languages/it-IT.js @@ -185,21 +185,21 @@ export default { "Status Page": "Pagina di stato", defaultNotificationName: "Allarme {notification} ({number})", here: "qui", - "Required": "Richiesto", - "telegram": "Telegram", + Required: "Richiesto", + telegram: "Telegram", "Bot Token": "Token del Bot", - "You can get a token from": "Puoi ricevere un token da", + wayToGetTelegramToken: "Puoi ricevere un token da {0}.", "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", + 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)", + smtp: "E-mail (SMTP)", secureOptionNone: "Nessuno / STARTTLS (25, 587)", secureOptionTLS: "TLS (465)", "Ignore TLS Error": "Ignora gli errori TLS", @@ -208,26 +208,26 @@ export default { "To Email": "Destinatario", smtpCC: "CC", smtpBCC: "CCn", - "discord": "Discord", + 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", + teams: "Microsoft Teams", "Webhook URL": "URL Webhook", wayToGetTeamsURL: "È possibile imparare a creare un URL Webhook {0}.", - "signal": "Signal", - "Number": "Numero", - "Recipients": "Destinatari", + 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", + gotify: "Gotify", "Application Token": "Token Applicazione", "Server URL": "URL Server", - "Priority": "Priorità", - "slack": "Slack", + Priority: "Priorità", + slack: "Slack", "Icon Emoji": "Icona Emoji", "Channel Name": "Nome Canale", "Uptime Kuma URL": "Indirizzo Uptime Kuma", @@ -247,7 +247,7 @@ export default { line: "Line Messenger", mattermost: "Mattermost", "User Key": "Chiave Utente", - "Device": "Dispositivo", + Device: "Dispositivo", "Message Title": "Titolo Messaggio", "Notification Sound": "Suono di Notifica", "More info on:": "Maggiori informazioni su: {0}", @@ -281,7 +281,7 @@ export default { "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", + 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.", @@ -339,7 +339,6 @@ export default { "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", @@ -351,5 +350,5 @@ export default { serwersmsAPIPassword: "Password API", serwersmsPhoneNumber: "Numero di Telefono", serwersmsSenderName: "Nome del mittente SMS (registrato via portale cliente)", - "stackfield": "Stackfield", + stackfield: "Stackfield", }; From f793aa52640fbef24720d6aecd0dd7af022e573b Mon Sep 17 00:00:00 2001 From: Ioma Taani <iomataani@users.noreply.github.com> Date: Fri, 10 Dec 2021 09:26:55 +0100 Subject: [PATCH 166/282] better translations --- src/languages/it-IT.js | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/languages/it-IT.js b/src/languages/it-IT.js index 4dd0bba0..5a38a5aa 100644 --- a/src/languages/it-IT.js +++ b/src/languages/it-IT.js @@ -8,19 +8,19 @@ export default { maxRedirectDescription: "Numero massimo di redirezionamenti consentito. Per disabilitare impostare \"0\".", acceptedStatusCodesDescription: "Inserire i codici di stato considerati come risposte corrette.", passwordNotMatchMsg: "La password non coincide.", - notificationDescription: "Assegnare la notifica a uno o più elementi monitorati per metterla in funzione.", + notificationDescription: "Assegnare la notifica a uno o più oggetti monitorati per metterla in funzione.", keywordDescription: "Cerca la parola chiave nella risposta in html o JSON e fai distinzione tra maiuscole e minuscole", pauseDashboardHome: "In Pausa", - deleteMonitorMsg: "Si è certi di voler eliminare questo monitoraggio?", + deleteMonitorMsg: "Si è certi di voler eliminare questo oggetto monitorato?", deleteNotificationMsg: "Si è certi di voler eliminare questa notifica per tutti gli oggetti monitorati?", resoverserverDescription: "Cloudflare è il server predefinito, è possibile cambiare il server DNS.", rrtypeDescription: "Scegliere il tipo di RR che si vuole monitorare", pauseMonitorMsg: "Si è certi di voler mettere in pausa?", - enableDefaultNotificationDescription: "Per ogni nuovo monitoraggio questa notifica sarà abilitata di default. È comunque possibile disabilitare la notifica separatamente per ogni monitoraggio.", + enableDefaultNotificationDescription: "Per ogni nuovo oggetto monitorato questa notifica sarà abilitata di default. È comunque possibile disabilitare la notifica separatamente per ogni oggetto.", clearEventsMsg: "Si è certi di voler eliminare tutti gli eventi per questo servizio?", clearHeartbeatsMsg: "Si è certi di voler eliminare tutti gli intervalli di controllo per questo servizio?", confirmClearStatisticsMsg: "Si è certi di voler eliminare TUTTE le statistiche?", - importHandleDescription: "Selezionare 'Ignora gli esistenti' si vuole ignorare l'importazione dei monitoraggi o delle notifiche con lo stesso nome. 'Sovrascrivi' eliminerà ogni monitoraggio e notifica esistente.", + importHandleDescription: "Selezionare 'Ignora gli esistenti' si vuole ignorare l'importazione degli oggetti monitorati o delle notifiche con lo stesso nome. 'Sovrascrivi' eliminerà ogni oggetto e notifica esistente.", confirmImportMsg: "Si è certi di voler importare il backup? Essere certi di aver selezionato l'opzione corretta di importazione.", twoFAVerifyLabel: "Scrivi il token per verificare che l'autenticazione a due fattori funzioni", tokenValidSettingsMsg: "Il token è valido! È ora possibile salvare le impostazioni.", @@ -38,7 +38,7 @@ export default { "Check Update On GitHub": "Controlla aggiornamenti su GitHub", List: "Lista", Add: "Aggiungi", - "Add New Monitor": "Aggiungi un nuovo monitoraggio", + "Add New Monitor": "Aggiungi un nuovo oggetto da monitorare", "Quick Stats": "Statistiche rapide", Up: "Su", Down: "Giù", @@ -63,7 +63,7 @@ export default { "-hour": "-ore", Response: "Risposta", Ping: "Ping", - "Monitor Type": "Tipo di Monitoraggio", + "Monitor Type": "Modalità di monitoraggio", Keyword: "Parola chiave", "Friendly Name": "Nomignolo", URL: "URL", @@ -111,7 +111,7 @@ export default { Password: "Password", "Remember me": "Ricordami", Login: "Accesso", - "No Monitors, please": "Nessun monitoraggio, cortesemente", + "No Monitors, please": "Nessun oggetto monitorato,", "add one": "aggiungerne uno", "Notification Type": "Tipo di notifica", Email: "E-mail", @@ -173,13 +173,13 @@ export default { "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.", + statusPageNothing: "Non c'è nulla qui, aggiungere un gruppo oppure un oggetto da monitorare.", "No Services": "Nessun Servizio", "All Systems Operational": "Tutti i sistemi sono funzionali", "Partially Degraded Service": "Servizio parzialmente degradato", "Degraded Service": "Servizio degradato", "Add Group": "Aggiungi Gruppo", - "Add a monitor": "Aggiungi un monitoraggio", + "Add a monitor": "Aggiungi un oggetto", "Edit Status Page": "Modifica pagina di stato", "Go to Dashboard": "Vai al Cruscotto", "Status Page": "Pagina di stato", @@ -188,10 +188,10 @@ export default { Required: "Richiesto", telegram: "Telegram", "Bot Token": "Token del Bot", - wayToGetTelegramToken: "Puoi ricevere un token da {0}.", + wayToGetTelegramToken: "È possibile ricevere un token da {0}.", "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:", + wayToGetTelegramChatID: "È possibile ricereve l'ID chat mandando un messaggio al bot e poi 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", @@ -299,7 +299,7 @@ export default { PushUrl: "URL di Push", HeadersInvalidFormat: "L'intestazione di richiesta non è un JSON valido: ", BodyInvalidFormat: "Il corpo di richiesta non è un JSON valido: ", - "Monitor History": "Storico monitoraggio", + "Monitor History": "Storicizzazione", clearDataOlderThan: "Mantieni lo storico per {0} giorni.", PasswordsDoNotMatch: "Le password non corrispondono.", records: "records", @@ -323,22 +323,22 @@ export default { info: "informativo", warning: "attenzione", danger: "critico", - primary: "primario", + primary: "predefinito", 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", + Unpin: "Rimuovi", "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.", + "No monitors available.": "Nessun oggetto monitorato disponibile.", "Add one": "Aggiungi", - "No Monitors": "Nessun monitoraggio", + "No Monitors": "Nessun oggetto monitorato inserito", "Untitled Group": "Gruppo senza titolo", Services: "Servizi", Discard: "Scarta", From 34ee342d3e5b35a458a13d61a5d7262373f0ed01 Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Sat, 11 Dec 2021 17:20:51 +0800 Subject: [PATCH 167/282] eslint --- src/languages/da-DK.js | 708 ++++++++++++++++++++--------------------- 1 file changed, 354 insertions(+), 354 deletions(-) diff --git a/src/languages/da-DK.js b/src/languages/da-DK.js index 04593d09..21f030ea 100644 --- a/src/languages/da-DK.js +++ b/src/languages/da-DK.js @@ -1,355 +1,355 @@ export default { - languageName: 'Danish (Danmark)', - Settings: 'Indstillinger', - Dashboard: 'Betjeningspanel', - 'New Update': 'Opdatering tilgængelig', - Language: 'Sprog', - Appearance: 'Udseende', - Theme: 'Tema', - General: 'Generelt', - Version: 'Version', - 'Check Update On GitHub': 'Tjek efter opdateringer på Github', - List: 'Liste', - Add: 'Tilføj', - 'Add New Monitor': 'Tilføj ny Overvåger', - 'Quick Stats': 'Oversigt', - Up: 'Aktiv', - Down: 'Inaktiv', - Pending: 'Afventer', - Unknown: 'Ukendt', - Pause: 'Stands', - pauseDashboardHome: 'Standset', - Name: 'Navn', - Status: 'Status', - DateTime: 'Dato / Tid', - Message: 'Beskeder', - 'No important events': 'Inden vigtige begivenheder', - Resume: 'Fortsæt', - Edit: 'Rediger', - Delete: 'Slet', - Current: 'Aktuelt', - Uptime: 'Oppetid', - 'Cert Exp.': 'Certifikatets udløb', - days: 'Dage', - day: 'Dag', - '-day': '-Dage', - hour: 'Timer', - '-hour': '-Timer', - checkEverySecond: 'Tjek hvert {0} sekund', - Response: 'Respons', - Ping: 'Ping', - 'Monitor Type': 'Overvåger Type', - Keyword: 'Nøgleord', - 'Friendly Name': 'Visningsnavn', - URL: 'URL', - Hostname: 'Hostname', - Port: 'Port', - 'Heartbeat Interval': 'Taktinterval', - Retries: 'Gentagelser', - retriesDescription: 'Maksimalt antal gentagelser, før tjenesten markeres som inaktiv og sender en meddelelse.', - Advanced: 'Avanceret', - ignoreTLSError: 'Ignorere TLS/SSL web fejl', - 'Upside Down Mode': 'Omvendt tilstand', - upsideDownModeDescription: 'Håndter tilstanden omvendt. Hvis tjenesten er tilgængelig, vises den som inaktiv.', - 'Max. Redirects': 'Maks. Omdirigeringer', - maxRedirectDescription: 'Maksimalt antal omdirigeringer, der skal følges. Indstil til 0 for at deaktivere omdirigeringer.', - 'Accepted Status Codes': 'Tilladte HTTP-Statuskoder', - acceptedStatusCodesDescription: 'Vælg de statuskoder, der stadig skal vurderes som vellykkede.', - Save: 'Gem', - Notifications: 'Underretninger', - 'Not available, please setup.': 'Ikke tilgængelige, opsæt venligst.', - 'Setup Notification': 'Opsæt underretninger', - Light: 'Lys', - Dark: 'Mørk', - Auto: 'Auto', - 'Theme - Heartbeat Bar': 'Tema - Tidslinje', - Normal: 'Normal', - Bottom: 'Bunden', - None: 'Ingen', - Timezone: 'Tidszone', - 'Search Engine Visibility': 'Søgemaskine synlighed', - 'Allow indexing': 'Tillad indeksering', - 'Discourage search engines from indexing site': 'Frabed søgemaskiner at indeksere webstedet', - 'Change Password': 'Ændre adgangskode', - 'Current Password': 'Nuværende adgangskode', - 'New Password': 'Ny adgangskode', - 'Repeat New Password': 'Gentag den nye adgangskode', - passwordNotMatchMsg: 'Adgangskoderne er ikke ens.', - 'Update Password': 'Opdater adgangskode', - 'Disable Auth': 'Deaktiver autentificering', - 'Enable Auth': 'Aktiver autentificering', - Logout: 'Log ud', - notificationDescription: 'Tildel underretninger til Overvåger(e), så denne funktion træder i kraft.', - Leave: 'Verlassen', - 'I understand, please disable': 'Jeg er indforstået, deaktiver venligst', - Confirm: 'Bekræft', - Yes: 'Ja', - No: 'Nej', - Username: 'Brugernavn', - Password: 'Adgangskode', - 'Remember me': 'Husk mig', - Login: 'Log ind', - 'No Monitors, please': 'Ingen Overvågere', - 'add one': 'tilføj en', - 'Notification Type': 'Underretningstype', - Email: 'E-Mail', - Test: 'Test', - 'Certificate Info': 'Certifikatoplysninger', - keywordDescription: 'Søg efter et søgeord i almindelig HTML- eller JSON -output. Bemærk, at der skelnes mellem store og små bogstaver.', - deleteMonitorMsg: 'Er du sikker på, at du vil slette overvågeren?', - deleteNotificationMsg: 'Er du sikker på, at du vil slette denne underretning for alle overvågere? ', - resoverserverDescription: 'Cloudflare er standardserveren, den kan til enhver tid ændres.', - 'Resolver Server': 'Navne-server', - rrtypeDescription: 'Vælg den type RR, du vil overvåge.', - 'Last Result': 'Seneste resultat', - pauseMonitorMsg: 'Er du sikker på, at du vil standse Overvågeren?', - 'Create your admin account': 'Opret din administratorkonto', - 'Repeat Password': 'Gentag adgangskoden', - 'Resource Record Type': 'Resource Record Type', - respTime: 'Resp. Tid (ms)', - notAvailableShort: 'N/A', - Create: 'Opret', - clearEventsMsg: 'Er du sikker på vil slette alle events for denne Overvåger?', - clearHeartbeatsMsg: 'Er du sikker på vil slette alle hjerteslag for denne Overvåger?', - confirmClearStatisticsMsg: 'Vil du helt sikkert slette ALLE statistikker?', - 'Clear Data': 'Ryd Data', - Events: 'Events', - Heartbeats: 'Hjerteslag', - 'Auto Get': 'Auto-hent', - enableDefaultNotificationDescription: 'For hver ny overvåger aktiveres denne underretning som standard. Du kan stadig deaktivere underretningen separat for hver skærm.', - 'Default enabled': 'Standard aktiveret', - 'Also apply to existing monitors': 'Anvend også på eksisterende overvågere', - Export: 'Eksport', - Import: 'Import', - backupDescription: 'Du kan sikkerhedskopiere alle Overvågere og alle underretninger til en JSON-fil.', - backupDescription2: 'PS: Historik og hændelsesdata er ikke inkluderet.', - backupDescription3: 'Følsom data, f.eks. underretnings-tokener, er inkluderet i eksportfilen. Gem den sikkert.', - alertNoFile: 'Vælg en fil der skal importeres.', - alertWrongFileType: 'Vælg venligst en JSON-fil.', - twoFAVerifyLabel: 'Indtast venligst dit token for at bekræfte, at 2FA fungerer', - tokenValidSettingsMsg: 'Token er gyldigt! Du kan nu gemme 2FA -indstillingerne.', - confirmEnableTwoFAMsg: 'Er du sikker på at du vil aktivere 2FA?', - confirmDisableTwoFAMsg: 'Er du sikker på at du vil deaktivere 2FA?', - 'Apply on all existing monitors': 'Anvend på alle eksisterende overvågere', - 'Verify Token': 'Verificere Token', - 'Setup 2FA': 'Opsæt 2FA', - 'Enable 2FA': 'Aktiver 2FA', - 'Disable 2FA': 'Deaktiver 2FA', - '2FA Settings': '2FA Indstillinger', - 'Two Factor Authentication': 'To-Faktor Autentificering', - Active: 'Aktive', - Inactive: 'Inaktive', - Token: 'Token', - 'Show URI': 'Vis URI', - 'Clear all statistics': 'Ryd alle Statistikker', - retryCheckEverySecond: 'Prøv igen hvert {0} sekund.', - importHandleDescription: "Vælg 'Spring over eksisterende', hvis du vil springe over hver overvåger eller underretning med samme navn. 'Overskriv' sletter alle eksisterende overvågere og underretninger.", - confirmImportMsg: 'Er du sikker på at importere sikkerhedskopien? Sørg for, at du har valgt den rigtige importindstilling.', - 'Heartbeat Retry Interval': 'Hjerteslag Gentagelsesinterval', - 'Import Backup': 'Importer Backup', - 'Export Backup': 'Eksporter Backup', - 'Skip existing': 'Spring over eksisterende', - Overwrite: 'Overskriv', - Options: 'Valgmuligheder', - 'Keep both': 'Behold begge', - Tags: 'Etiketter', - 'Add New below or Select...': 'Tilføj Nyt nedenfor eller Vælg ...', - 'Tag with this name already exist.': 'Et Tag med dette navn findes allerede.', - 'Tag with this value already exist.': 'Et Tag med denne værdi findes allerede.', - color: 'farve', - 'value (optional)': 'værdi (valgfri)', - Gray: 'Grå', - Red: 'Rød', - Orange: 'Orange', - Green: 'Grøn', - Blue: 'Blå', - Indigo: 'Indigo', - Purple: 'Lilla', - Pink: 'Pink', - 'Search...': 'Søg...', - 'Avg. Ping': 'Gns. Ping', - 'Avg. Response': 'Gns. Respons', - 'Entry Page': 'Entry Side', - statusPageNothing: 'Intet her, tilføj venligst en Gruppe eller en Overvåger.', - 'No Services': 'Ingen Tjenester', - 'All Systems Operational': 'Alle Systemer i Drift', - 'Partially Degraded Service': 'Delvist Forringet Service', - 'Degraded Service': 'Forringet Service', - 'Add Group': 'Tilføj Gruppe', - 'Add a monitor': 'Tilføj en Overvåger', - 'Edit Status Page': 'Rediger Statusside', - 'Go to Dashboard': 'Gå til Betjeningspanel', - 'Status Page': 'Statusside', - telegram: 'Telegram', - webhook: 'Webhook', - smtp: 'Email (SMTP)', - discord: 'Discord', - teams: 'Microsoft Teams', - signal: 'Signal', - gotify: 'Gotify', - slack: 'Slack', - 'rocket.chat': 'Rocket.chat', - pushover: 'Pushover', - pushy: 'Pushy', - octopush: 'Octopush', - promosms: 'PromoSMS', - lunasea: 'LunaSea', - apprise: 'Apprise (Understøtter 50+ Notifikationstjenester)', - pushbullet: 'Pushbullet', - line: 'Line Messenger', - mattermost: 'Mattermost', - 'Primary Base URL': 'Primær Basis-URL', - 'Push URL': 'Push URL', - needPushEvery: 'Du bør kalde denne webadresse hvert {0} sekund.', - pushOptionalParams: 'Valgfrie parametre: {0}', - defaultNotificationName: 'Min {notification} Advarsel ({number})', - here: 'her', - Required: 'Påkrævet', - 'Bot Token': 'Bot Token', - wayToGetTelegramToken: 'Du kan få et token fra {0}.', - 'Chat ID': 'Chat ID', - supportTelegramChatID: "Support Direct Chat / Group / Channel's Chat ID", - wayToGetTelegramChatID: "Du kan få dit chat-ID ved at sende en besked til bot'en og gå til denne URL for at se chat_id'et:", - 'YOUR BOT TOKEN HERE': 'DIT BOT TOKEN HER', - chatIDNotFound: 'Chat-ID blev ikke fundet; send venligst en besked til denne bot først ', - 'Post URL': 'Post URL', - 'Content Type': 'Indholdstype', - webhookJsonDesc: '{0} er god til alle moderne HTTP-servere som f.eks Express.js', - webhookFormDataDesc: "{multipart} er god til PHP. JSON'en skal parses med {decodeFunction}", - secureOptionNone: 'Ingen / STARTTLS (25, 587)', - secureOptionTLS: 'TLS (465)', - 'Ignore TLS Error': 'Ignorer TLS-fejl', - 'From Email': 'Afsender Email', - emailCustomSubject: 'Brugerdefineret Emne', - 'To Email': 'Modtager Email', - smtpCC: 'CC', - smtpBCC: 'BCC', - 'Discord Webhook URL': 'Discord Webhook URL', - wayToGetDiscordURL: 'Du kan få dette ved at gå til Serverindstillinger -> Integrationer -> Opret webhook ', - 'Bot Display Name': 'Bot Visningsnavn', - 'Prefix Custom Message': 'Præfiks Brugerdefineret Besked', - 'Hello @everyone is...': "Hello {'@'}everyone is...", - 'Webhook URL': 'Webhook URL', - wayToGetTeamsURL: 'Du kan lære, hvordan du laver en webhook URL {0}.', - Number: 'Nummer', - Recipients: 'Modtagere', - needSignalAPI: 'Du skal have en Signal-klient med REST API.', - wayToCheckSignalURL: 'Du kan tjekke denne URL for at se, hvordan du konfigurerer en:', - signalImportant: 'VIGTIGT: Du kan ikke blande grupper og numre i modtagere!', - 'Application Token': 'Program Token', - 'Server URL': 'Server URL', - Priority: 'Prioritet', - 'Icon Emoji': 'Icon Emoji', - 'Channel Name': 'Kanalnavn', - 'Uptime Kuma URL': 'Uptime Kuma URL', - aboutWebhooks: 'Mere info om Webhooks på: {0}', - aboutChannelName: 'Indtast kanalnavnet i {0} Kanalnavn feltet, hvis du vil omgå Webhook-kanalen. Eks: #anden-kanal', - aboutKumaURL: 'Hvis du efterlader Uptime Kuma URL-feltet tomt, vil det som standard gå til projektets GitHub-siden.', - emojiCheatSheet: 'Emoji cheat sheet: {0}', - clicksendsms: 'ClickSend SMS', - 'User Key': 'Bruger-Nøgle', - Device: 'Enhed', - 'Message Title': 'Besked Titel', - 'Notification Sound': 'Notifikationslyd', - 'More info on:': 'Mere info på: {0}', - pushoverDesc1: 'Nødprioritet (2) har som standard 30 sekunders timeout mellem genforsøg og udløber efter 1 time.', - pushoverDesc2: 'Hvis du vil sende meddelelser til forskellige enheder, skal du udfylde feltet Enhed.', - 'SMS Type': 'SMS Type', - octopushTypePremium: 'Premium (Hurtig - anbefales til advarsel)', - octopushTypeLowCost: 'Lavpris (Langsom - nogle gange blokeret af operatøren)', - checkPrice: 'Tjek {0} priser:', - apiCredentials: 'API legitimationsoplysninger', - octopushLegacyHint: 'Bruger du den ældre version af Octopush (2011-2020) eller den nye version?', - 'Check octopush prices': 'Tjek octopush priser {0}.', - octopushPhoneNumber: 'Telefonnummer (intl format, f.eks : +4512345678) ', - octopushSMSSender: 'SMS Afsender Navn : 3-11 alfanumeriske tegn og mellemrum (a-zA-Z0-9)', - 'LunaSea Device ID': 'LunaSea Enhed-ID', - 'Apprise URL': 'Apprise URL', - 'Example:': 'Eksempel: {0}', - 'Read more:': 'Læs mere: {0}', - 'Status:': 'Status: {0}', - 'Read more': 'Læs mere', - appriseInstalled: 'Apprise er installeret.', - appriseNotInstalled: 'Apprise er ikke installeret. {0}', - 'Access Token': 'Access Token', - 'Channel access token': 'kanaladgangstoken', - 'Line Developers Console': 'Line Udviklerkonsol', - lineDevConsoleTo: 'Line Udviklerkonsol - {0}', - 'Basic Settings': 'Basisindstillinger', - 'User ID': 'Bruger-ID', - 'Messaging API': 'Messaging API', - wayToGetLineChannelToken: "Tilgå først {0}, opret en udbyder og kanal (Messaging API), så kan du få kanaladgangstoken'et og bruger-ID'et fra de ovennævnte menupunkter.", - 'Icon URL': 'Ikon URL', - aboutIconURL: 'Du kan angive et link til et billede i "Ikon URL" for at tilsidesætte standardprofilbilledet. Vil ikke blive brugt, hvis Ikon Emoji er angivet.', - aboutMattermostChannelName: `Du kan tilsidesætte standardkanalen, som Webhoo'en sender til ved at indtaste kanalnavnet i feltet "Kanalnavn". Dette skal aktiveres i Mattermost Webhook-indstillingerne. Eks: #anden-kanal`, - matrix: 'Matrix', - promosmsTypeEco: 'SMS ECO - billig, men langsom og ofte overbelastet. Begrænset kun til polske modtagere.', - promosmsTypeFlash: 'SMS FLASH - Beskeden vises automatisk på modtagerenheden. Begrænset kun til polske modtagere.', - promosmsTypeFull: 'SMS FULL - Premium-niveau af SMS, Du kan bruge dit "Sender Name" (Du skal først registrere navn). Pålidelig til advarsler.', - promosmsTypeSpeed: 'SMS SPEED - Højeste prioritet i systemet. Meget hurtig og pålidelig, men dyr (ca. to gange af SMS FULL pris).', - promosmsPhoneNumber: 'Telefonnummer (polske numre behøver ikke angive områdenumre)', - promosmsSMSSender: 'SMS Sender Name : Forudregistreret navn eller en af standarderne: InfoSMS, SMS Info, MaxSMS, INFO, SMS', - 'Feishu WebHookUrl': 'Feishu WebHookURL', - matrixHomeserverURL: 'Hjemmeserver-URL (med http(s):// og eventuel port)', - 'Internal Room Id': 'Intern Rum-ID', - matrixDesc1: 'Du kan finde det interne rum-ID ved at se i det avancerede afsnit af rumindstillingerne i din Matrix-klient. Det skulle ligne !QMdRCpUIfLwsfjxye6:home.server.', - matrixDesc2: 'Det anbefales stærkt, at du opretter en ny bruger og ikke bruger din egen Matrix-brugers adgangstoken, da det giver fuld adgang til din konto og alle de rum, du har tilsluttet dig. I stedet skal du oprette en ny bruger og kun invitere den til det rum, du vil modtage meddelelsen i. Du kan få adgangstokenet ved at køre {0}', - Method: 'Metode', - Body: 'Body', - Headers: 'Headers', - PushUrl: 'Push URL', - HeadersInvalidFormat: '"request headers"-erne er ikke gyldige JSON: ', - BodyInvalidFormat: '"request body"-en er ikke gyldige JSON: ', - 'Monitor History': 'Overvåger Historik', - clearDataOlderThan: 'Gem overvågningshistorikdata i {0} dage.', - PasswordsDoNotMatch: 'Adgangskoderne stemmer ikke overens.', - records: 'forekomster', - 'One record': 'Én forekomst', - steamApiKeyDescription: 'For at overvåge en Steam Game Server skal du bruge en Steam Web-API nøgle. Du kan registrere din API-nøgle her: ', - 'Current User': 'Nuværende Bruger', - recent: 'Seneste', - Done: 'Færdig', - Info: 'Info', - Security: 'Sikkerhed', - 'Steam API Key': 'Steam API-nøgle', - 'Shrink Database': 'Krymp Database', - 'Pick a RR-Type...': 'Vælg en RR-Type...', - 'Pick Accepted Status Codes...': 'Vælg Accepterede Statuskoder...', - Default: 'Standard', - 'HTTP Options': 'HTTP Valgmuligheder', - 'Create Incident': 'Opret Annoncering', - Title: 'Titel', - Content: 'Indhold', - Style: 'Type', - info: 'info', - warning: 'advarsel', - danger: 'fare', - primary: 'primær', - light: 'lys', - dark: 'mørk', - Post: 'Udgiv', - 'Please input title and content': 'Indtast venligst titel og indhold', - Created: 'Oprettet', - 'Last Updated': 'Sidst Opdateret', - Unpin: 'Frigør', - 'Switch to Light Theme': 'Skift til Lys Tema', - 'Switch to Dark Theme': 'Skift til Mørkt Tema', - 'Show Tags': 'Vis Etiketter', - 'Hide Tags': 'Skjul Etiketter', - Description: 'Beskrivelse', - 'No monitors available.': 'No monitors available.', - 'Add one': 'Tilføj en', - 'No Monitors': 'Ingen Overvågere', - 'Untitled Group': 'Unavngivet Gruppe', - Services: 'Tjenester', - Discard: 'Kassér', - Cancel: 'Annullér', - 'Powered by': 'Drevet af', - shrinkDatabaseDescription: 'Udfør database VACUUM for SQLite. Hvis din database er oprettet efter 1.10.0, er AUTO_VACUUM allerede aktiveret, og denne handling er ikke nødvendig.', - serwersms: 'SerwerSMS.pl', - serwersmsAPIUser: 'API Brugernavn (inkl. webapi_ prefix)', - serwersmsAPIPassword: 'API Adgangskode', - serwersmsPhoneNumber: 'Telefonnummer', - serwersmsSenderName: 'SMS Afsender Navn (registreret via kundeportal)', - stackfield: 'Stackfield' -} \ No newline at end of file + languageName: "Danish (Danmark)", + Settings: "Indstillinger", + Dashboard: "Betjeningspanel", + "New Update": "Opdatering tilgængelig", + Language: "Sprog", + Appearance: "Udseende", + Theme: "Tema", + General: "Generelt", + Version: "Version", + "Check Update On GitHub": "Tjek efter opdateringer på Github", + List: "Liste", + Add: "Tilføj", + "Add New Monitor": "Tilføj ny Overvåger", + "Quick Stats": "Oversigt", + Up: "Aktiv", + Down: "Inaktiv", + Pending: "Afventer", + Unknown: "Ukendt", + Pause: "Stands", + pauseDashboardHome: "Standset", + Name: "Navn", + Status: "Status", + DateTime: "Dato / Tid", + Message: "Beskeder", + "No important events": "Inden vigtige begivenheder", + Resume: "Fortsæt", + Edit: "Rediger", + Delete: "Slet", + Current: "Aktuelt", + Uptime: "Oppetid", + "Cert Exp.": "Certifikatets udløb", + days: "Dage", + day: "Dag", + "-day": "-Dage", + hour: "Timer", + "-hour": "-Timer", + checkEverySecond: "Tjek hvert {0} sekund", + Response: "Respons", + Ping: "Ping", + "Monitor Type": "Overvåger Type", + Keyword: "Nøgleord", + "Friendly Name": "Visningsnavn", + URL: "URL", + Hostname: "Hostname", + Port: "Port", + "Heartbeat Interval": "Taktinterval", + Retries: "Gentagelser", + retriesDescription: "Maksimalt antal gentagelser, før tjenesten markeres som inaktiv og sender en meddelelse.", + Advanced: "Avanceret", + ignoreTLSError: "Ignorere TLS/SSL web fejl", + "Upside Down Mode": "Omvendt tilstand", + upsideDownModeDescription: "Håndter tilstanden omvendt. Hvis tjenesten er tilgængelig, vises den som inaktiv.", + "Max. Redirects": "Maks. Omdirigeringer", + maxRedirectDescription: "Maksimalt antal omdirigeringer, der skal følges. Indstil til 0 for at deaktivere omdirigeringer.", + "Accepted Status Codes": "Tilladte HTTP-Statuskoder", + acceptedStatusCodesDescription: "Vælg de statuskoder, der stadig skal vurderes som vellykkede.", + Save: "Gem", + Notifications: "Underretninger", + "Not available, please setup.": "Ikke tilgængelige, opsæt venligst.", + "Setup Notification": "Opsæt underretninger", + Light: "Lys", + Dark: "Mørk", + Auto: "Auto", + "Theme - Heartbeat Bar": "Tema - Tidslinje", + Normal: "Normal", + Bottom: "Bunden", + None: "Ingen", + Timezone: "Tidszone", + "Search Engine Visibility": "Søgemaskine synlighed", + "Allow indexing": "Tillad indeksering", + "Discourage search engines from indexing site": "Frabed søgemaskiner at indeksere webstedet", + "Change Password": "Ændre adgangskode", + "Current Password": "Nuværende adgangskode", + "New Password": "Ny adgangskode", + "Repeat New Password": "Gentag den nye adgangskode", + passwordNotMatchMsg: "Adgangskoderne er ikke ens.", + "Update Password": "Opdater adgangskode", + "Disable Auth": "Deaktiver autentificering", + "Enable Auth": "Aktiver autentificering", + Logout: "Log ud", + notificationDescription: "Tildel underretninger til Overvåger(e), så denne funktion træder i kraft.", + Leave: "Verlassen", + "I understand, please disable": "Jeg er indforstået, deaktiver venligst", + Confirm: "Bekræft", + Yes: "Ja", + No: "Nej", + Username: "Brugernavn", + Password: "Adgangskode", + "Remember me": "Husk mig", + Login: "Log ind", + "No Monitors, please": "Ingen Overvågere", + "add one": "tilføj en", + "Notification Type": "Underretningstype", + Email: "E-Mail", + Test: "Test", + "Certificate Info": "Certifikatoplysninger", + keywordDescription: "Søg efter et søgeord i almindelig HTML- eller JSON -output. Bemærk, at der skelnes mellem store og små bogstaver.", + deleteMonitorMsg: "Er du sikker på, at du vil slette overvågeren?", + deleteNotificationMsg: "Er du sikker på, at du vil slette denne underretning for alle overvågere? ", + resoverserverDescription: "Cloudflare er standardserveren, den kan til enhver tid ændres.", + "Resolver Server": "Navne-server", + rrtypeDescription: "Vælg den type RR, du vil overvåge.", + "Last Result": "Seneste resultat", + pauseMonitorMsg: "Er du sikker på, at du vil standse Overvågeren?", + "Create your admin account": "Opret din administratorkonto", + "Repeat Password": "Gentag adgangskoden", + "Resource Record Type": "Resource Record Type", + respTime: "Resp. Tid (ms)", + notAvailableShort: "N/A", + Create: "Opret", + clearEventsMsg: "Er du sikker på vil slette alle events for denne Overvåger?", + clearHeartbeatsMsg: "Er du sikker på vil slette alle hjerteslag for denne Overvåger?", + confirmClearStatisticsMsg: "Vil du helt sikkert slette ALLE statistikker?", + "Clear Data": "Ryd Data", + Events: "Events", + Heartbeats: "Hjerteslag", + "Auto Get": "Auto-hent", + enableDefaultNotificationDescription: "For hver ny overvåger aktiveres denne underretning som standard. Du kan stadig deaktivere underretningen separat for hver skærm.", + "Default enabled": "Standard aktiveret", + "Also apply to existing monitors": "Anvend også på eksisterende overvågere", + Export: "Eksport", + Import: "Import", + backupDescription: "Du kan sikkerhedskopiere alle Overvågere og alle underretninger til en JSON-fil.", + backupDescription2: "PS: Historik og hændelsesdata er ikke inkluderet.", + backupDescription3: "Følsom data, f.eks. underretnings-tokener, er inkluderet i eksportfilen. Gem den sikkert.", + alertNoFile: "Vælg en fil der skal importeres.", + alertWrongFileType: "Vælg venligst en JSON-fil.", + twoFAVerifyLabel: "Indtast venligst dit token for at bekræfte, at 2FA fungerer", + tokenValidSettingsMsg: "Token er gyldigt! Du kan nu gemme 2FA -indstillingerne.", + confirmEnableTwoFAMsg: "Er du sikker på at du vil aktivere 2FA?", + confirmDisableTwoFAMsg: "Er du sikker på at du vil deaktivere 2FA?", + "Apply on all existing monitors": "Anvend på alle eksisterende overvågere", + "Verify Token": "Verificere Token", + "Setup 2FA": "Opsæt 2FA", + "Enable 2FA": "Aktiver 2FA", + "Disable 2FA": "Deaktiver 2FA", + "2FA Settings": "2FA Indstillinger", + "Two Factor Authentication": "To-Faktor Autentificering", + Active: "Aktive", + Inactive: "Inaktive", + Token: "Token", + "Show URI": "Vis URI", + "Clear all statistics": "Ryd alle Statistikker", + retryCheckEverySecond: "Prøv igen hvert {0} sekund.", + importHandleDescription: "Vælg 'Spring over eksisterende', hvis du vil springe over hver overvåger eller underretning med samme navn. 'Overskriv' sletter alle eksisterende overvågere og underretninger.", + confirmImportMsg: "Er du sikker på at importere sikkerhedskopien? Sørg for, at du har valgt den rigtige importindstilling.", + "Heartbeat Retry Interval": "Hjerteslag Gentagelsesinterval", + "Import Backup": "Importer Backup", + "Export Backup": "Eksporter Backup", + "Skip existing": "Spring over eksisterende", + Overwrite: "Overskriv", + Options: "Valgmuligheder", + "Keep both": "Behold begge", + Tags: "Etiketter", + "Add New below or Select...": "Tilføj Nyt nedenfor eller Vælg ...", + "Tag with this name already exist.": "Et Tag med dette navn findes allerede.", + "Tag with this value already exist.": "Et Tag med denne værdi findes allerede.", + color: "farve", + "value (optional)": "værdi (valgfri)", + Gray: "Grå", + Red: "Rød", + Orange: "Orange", + Green: "Grøn", + Blue: "Blå", + Indigo: "Indigo", + Purple: "Lilla", + Pink: "Pink", + "Search...": "Søg...", + "Avg. Ping": "Gns. Ping", + "Avg. Response": "Gns. Respons", + "Entry Page": "Entry Side", + statusPageNothing: "Intet her, tilføj venligst en Gruppe eller en Overvåger.", + "No Services": "Ingen Tjenester", + "All Systems Operational": "Alle Systemer i Drift", + "Partially Degraded Service": "Delvist Forringet Service", + "Degraded Service": "Forringet Service", + "Add Group": "Tilføj Gruppe", + "Add a monitor": "Tilføj en Overvåger", + "Edit Status Page": "Rediger Statusside", + "Go to Dashboard": "Gå til Betjeningspanel", + "Status Page": "Statusside", + telegram: "Telegram", + webhook: "Webhook", + smtp: "Email (SMTP)", + discord: "Discord", + teams: "Microsoft Teams", + signal: "Signal", + gotify: "Gotify", + slack: "Slack", + "rocket.chat": "Rocket.chat", + pushover: "Pushover", + pushy: "Pushy", + octopush: "Octopush", + promosms: "PromoSMS", + lunasea: "LunaSea", + apprise: "Apprise (Understøtter 50+ Notifikationstjenester)", + pushbullet: "Pushbullet", + line: "Line Messenger", + mattermost: "Mattermost", + "Primary Base URL": "Primær Basis-URL", + "Push URL": "Push URL", + needPushEvery: "Du bør kalde denne webadresse hvert {0} sekund.", + pushOptionalParams: "Valgfrie parametre: {0}", + defaultNotificationName: "Min {notification} Advarsel ({number})", + here: "her", + Required: "Påkrævet", + "Bot Token": "Bot Token", + wayToGetTelegramToken: "Du kan få et token fra {0}.", + "Chat ID": "Chat ID", + supportTelegramChatID: "Support Direct Chat / Group / Channel's Chat ID", + wayToGetTelegramChatID: "Du kan få dit chat-ID ved at sende en besked til bot'en og gå til denne URL for at se chat_id'et:", + "YOUR BOT TOKEN HERE": "DIT BOT TOKEN HER", + chatIDNotFound: "Chat-ID blev ikke fundet; send venligst en besked til denne bot først ", + "Post URL": "Post URL", + "Content Type": "Indholdstype", + webhookJsonDesc: "{0} er god til alle moderne HTTP-servere som f.eks Express.js", + webhookFormDataDesc: "{multipart} er god til PHP. JSON'en skal parses med {decodeFunction}", + secureOptionNone: "Ingen / STARTTLS (25, 587)", + secureOptionTLS: "TLS (465)", + "Ignore TLS Error": "Ignorer TLS-fejl", + "From Email": "Afsender Email", + emailCustomSubject: "Brugerdefineret Emne", + "To Email": "Modtager Email", + smtpCC: "CC", + smtpBCC: "BCC", + "Discord Webhook URL": "Discord Webhook URL", + wayToGetDiscordURL: "Du kan få dette ved at gå til Serverindstillinger -> Integrationer -> Opret webhook ", + "Bot Display Name": "Bot Visningsnavn", + "Prefix Custom Message": "Præfiks Brugerdefineret Besked", + "Hello @everyone is...": "Hello {'@'}everyone is...", + "Webhook URL": "Webhook URL", + wayToGetTeamsURL: "Du kan lære, hvordan du laver en webhook URL {0}.", + Number: "Nummer", + Recipients: "Modtagere", + needSignalAPI: "Du skal have en Signal-klient med REST API.", + wayToCheckSignalURL: "Du kan tjekke denne URL for at se, hvordan du konfigurerer en:", + signalImportant: "VIGTIGT: Du kan ikke blande grupper og numre i modtagere!", + "Application Token": "Program Token", + "Server URL": "Server URL", + Priority: "Prioritet", + "Icon Emoji": "Icon Emoji", + "Channel Name": "Kanalnavn", + "Uptime Kuma URL": "Uptime Kuma URL", + aboutWebhooks: "Mere info om Webhooks på: {0}", + aboutChannelName: "Indtast kanalnavnet i {0} Kanalnavn feltet, hvis du vil omgå Webhook-kanalen. Eks: #anden-kanal", + aboutKumaURL: "Hvis du efterlader Uptime Kuma URL-feltet tomt, vil det som standard gå til projektets GitHub-siden.", + emojiCheatSheet: "Emoji cheat sheet: {0}", + clicksendsms: "ClickSend SMS", + "User Key": "Bruger-Nøgle", + Device: "Enhed", + "Message Title": "Besked Titel", + "Notification Sound": "Notifikationslyd", + "More info on:": "Mere info på: {0}", + pushoverDesc1: "Nødprioritet (2) har som standard 30 sekunders timeout mellem genforsøg og udløber efter 1 time.", + pushoverDesc2: "Hvis du vil sende meddelelser til forskellige enheder, skal du udfylde feltet Enhed.", + "SMS Type": "SMS Type", + octopushTypePremium: "Premium (Hurtig - anbefales til advarsel)", + octopushTypeLowCost: "Lavpris (Langsom - nogle gange blokeret af operatøren)", + checkPrice: "Tjek {0} priser:", + apiCredentials: "API legitimationsoplysninger", + octopushLegacyHint: "Bruger du den ældre version af Octopush (2011-2020) eller den nye version?", + "Check octopush prices": "Tjek octopush priser {0}.", + octopushPhoneNumber: "Telefonnummer (intl format, f.eks : +4512345678) ", + octopushSMSSender: "SMS Afsender Navn : 3-11 alfanumeriske tegn og mellemrum (a-zA-Z0-9)", + "LunaSea Device ID": "LunaSea Enhed-ID", + "Apprise URL": "Apprise URL", + "Example:": "Eksempel: {0}", + "Read more:": "Læs mere: {0}", + "Status:": "Status: {0}", + "Read more": "Læs mere", + appriseInstalled: "Apprise er installeret.", + appriseNotInstalled: "Apprise er ikke installeret. {0}", + "Access Token": "Access Token", + "Channel access token": "kanaladgangstoken", + "Line Developers Console": "Line Udviklerkonsol", + lineDevConsoleTo: "Line Udviklerkonsol - {0}", + "Basic Settings": "Basisindstillinger", + "User ID": "Bruger-ID", + "Messaging API": "Messaging API", + wayToGetLineChannelToken: "Tilgå først {0}, opret en udbyder og kanal (Messaging API), så kan du få kanaladgangstoken'et og bruger-ID'et fra de ovennævnte menupunkter.", + "Icon URL": "Ikon URL", + aboutIconURL: "Du kan angive et link til et billede i \"Ikon URL\" for at tilsidesætte standardprofilbilledet. Vil ikke blive brugt, hvis Ikon Emoji er angivet.", + aboutMattermostChannelName: "Du kan tilsidesætte standardkanalen, som Webhoo'en sender til ved at indtaste kanalnavnet i feltet \"Kanalnavn\". Dette skal aktiveres i Mattermost Webhook-indstillingerne. Eks: #anden-kanal", + matrix: "Matrix", + promosmsTypeEco: "SMS ECO - billig, men langsom og ofte overbelastet. Begrænset kun til polske modtagere.", + promosmsTypeFlash: "SMS FLASH - Beskeden vises automatisk på modtagerenheden. Begrænset kun til polske modtagere.", + promosmsTypeFull: "SMS FULL - Premium-niveau af SMS, Du kan bruge dit \"Sender Name\" (Du skal først registrere navn). Pålidelig til advarsler.", + promosmsTypeSpeed: "SMS SPEED - Højeste prioritet i systemet. Meget hurtig og pålidelig, men dyr (ca. to gange af SMS FULL pris).", + promosmsPhoneNumber: "Telefonnummer (polske numre behøver ikke angive områdenumre)", + promosmsSMSSender: "SMS Sender Name : Forudregistreret navn eller en af standarderne: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "Feishu WebHookURL", + matrixHomeserverURL: "Hjemmeserver-URL (med http(s):// og eventuel port)", + "Internal Room Id": "Intern Rum-ID", + matrixDesc1: "Du kan finde det interne rum-ID ved at se i det avancerede afsnit af rumindstillingerne i din Matrix-klient. Det skulle ligne !QMdRCpUIfLwsfjxye6:home.server.", + matrixDesc2: "Det anbefales stærkt, at du opretter en ny bruger og ikke bruger din egen Matrix-brugers adgangstoken, da det giver fuld adgang til din konto og alle de rum, du har tilsluttet dig. I stedet skal du oprette en ny bruger og kun invitere den til det rum, du vil modtage meddelelsen i. Du kan få adgangstokenet ved at køre {0}", + Method: "Metode", + Body: "Body", + Headers: "Headers", + PushUrl: "Push URL", + HeadersInvalidFormat: "\"request headers\"-erne er ikke gyldige JSON: ", + BodyInvalidFormat: "\"request body\"-en er ikke gyldige JSON: ", + "Monitor History": "Overvåger Historik", + clearDataOlderThan: "Gem overvågningshistorikdata i {0} dage.", + PasswordsDoNotMatch: "Adgangskoderne stemmer ikke overens.", + records: "forekomster", + "One record": "Én forekomst", + steamApiKeyDescription: "For at overvåge en Steam Game Server skal du bruge en Steam Web-API nøgle. Du kan registrere din API-nøgle her: ", + "Current User": "Nuværende Bruger", + recent: "Seneste", + Done: "Færdig", + Info: "Info", + Security: "Sikkerhed", + "Steam API Key": "Steam API-nøgle", + "Shrink Database": "Krymp Database", + "Pick a RR-Type...": "Vælg en RR-Type...", + "Pick Accepted Status Codes...": "Vælg Accepterede Statuskoder...", + Default: "Standard", + "HTTP Options": "HTTP Valgmuligheder", + "Create Incident": "Opret Annoncering", + Title: "Titel", + Content: "Indhold", + Style: "Type", + info: "info", + warning: "advarsel", + danger: "fare", + primary: "primær", + light: "lys", + dark: "mørk", + Post: "Udgiv", + "Please input title and content": "Indtast venligst titel og indhold", + Created: "Oprettet", + "Last Updated": "Sidst Opdateret", + Unpin: "Frigør", + "Switch to Light Theme": "Skift til Lys Tema", + "Switch to Dark Theme": "Skift til Mørkt Tema", + "Show Tags": "Vis Etiketter", + "Hide Tags": "Skjul Etiketter", + Description: "Beskrivelse", + "No monitors available.": "No monitors available.", + "Add one": "Tilføj en", + "No Monitors": "Ingen Overvågere", + "Untitled Group": "Unavngivet Gruppe", + Services: "Tjenester", + Discard: "Kassér", + Cancel: "Annullér", + "Powered by": "Drevet af", + shrinkDatabaseDescription: "Udfør database VACUUM for SQLite. Hvis din database er oprettet efter 1.10.0, er AUTO_VACUUM allerede aktiveret, og denne handling er ikke nødvendig.", + serwersms: "SerwerSMS.pl", + serwersmsAPIUser: "API Brugernavn (inkl. webapi_ prefix)", + serwersmsAPIPassword: "API Adgangskode", + serwersmsPhoneNumber: "Telefonnummer", + serwersmsSenderName: "SMS Afsender Navn (registreret via kundeportal)", + stackfield: "Stackfield", +}; From 5ee5ea909df537ce1a9e63e9c29b36e90ef48ffd Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Sat, 11 Dec 2021 20:59:31 +0800 Subject: [PATCH 168/282] Add Github Action: close-incorrect-issue.yml --- .github/workflows/close-incorrect-issue.yml | 26 ++ extra/close-incorrect-issue.js | 57 ++++ package-lock.json | 348 +++++++++++++++++++- package.json | 1 + 4 files changed, 430 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/close-incorrect-issue.yml create mode 100644 extra/close-incorrect-issue.js diff --git a/.github/workflows/close-incorrect-issue.yml b/.github/workflows/close-incorrect-issue.yml new file mode 100644 index 00000000..026022df --- /dev/null +++ b/.github/workflows/close-incorrect-issue.yml @@ -0,0 +1,26 @@ + +name: Close Incorrect Issue + +on: + issues: + types: [opened] + +jobs: + close-incorrect-issue: + runs-on: ${{ matrix.os }} + + strategy: + matrix: + os: [ubuntu-latest] + node-version: [16.x] + + steps: + - uses: actions/checkout@v2 + + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v2 + with: + node-version: ${{ matrix.node-version }} + cache: 'npm' + - run: npm ci + - run: node extra/close-incorrect-issue.js ${{ secrets.GITHUB_TOKEN }} ${{ github.event.issue.number }} ${{ github.event.issue.user.login }} diff --git a/extra/close-incorrect-issue.js b/extra/close-incorrect-issue.js new file mode 100644 index 00000000..be4ed808 --- /dev/null +++ b/extra/close-incorrect-issue.js @@ -0,0 +1,57 @@ +const github = require("@actions/github"); + +(async () => { + try { + const token = process.argv[2]; + const issueNumber = process.argv[3]; + const username = process.argv[4]; + + const client = github.getOctokit(token).rest; + + const issue = { + owner: "louislam", + repo: "uptime-kuma", + number: issueNumber, + }; + + const labels = ( + await client.issues.listLabelsOnIssue({ + owner: issue.owner, + repo: issue.repo, + issue_number: issue.number + }) + ).data.map(({ name }) => name); + + if (labels.length === 0) { + console.log("Bad format here"); + + await client.issues.addLabels({ + owner: issue.owner, + repo: issue.repo, + issue_number: issue.number, + labels: ["invalid-format"] + }); + + // Add the issue closing comment + await client.issues.createComment({ + owner: issue.owner, + repo: issue.repo, + issue_number: issue.number, + body: `@${username}: Hello! :wave:\n\nThis issue is being automatically closed because it does not follow the issue template. Please DO NOT open a blank issue` + }); + + // Close the issue + await client.issues.update({ + owner: issue.owner, + repo: issue.repo, + issue_number: issue.number, + state: "closed" + }); + } else { + console.log("Pass!"); + } + } catch (e) { + console.log(e); + } + +})(); diff --git a/package-lock.json b/package-lock.json index 4790d60e..6b6c75cc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "uptime-kuma", - "version": "1.10.2", + "version": "1.11.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "uptime-kuma", - "version": "1.10.2", + "version": "1.11.1", "license": "MIT", "dependencies": { "@fortawesome/fontawesome-svg-core": "~1.2.36", @@ -64,6 +64,7 @@ "vuedraggable": "~4.1.0" }, "devDependencies": { + "@actions/github": "~5.0.0", "@babel/eslint-parser": "~7.15.8", "@babel/preset-env": "^7.15.8", "@types/bootstrap": "~5.1.6", @@ -89,6 +90,27 @@ "node": "14.* || >=16.*" } }, + "node_modules/@actions/github": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@actions/github/-/github-5.0.0.tgz", + "integrity": "sha512-QvE9eAAfEsS+yOOk0cylLBIO/d6WyWIOvsxxzdrPFaud39G6BOkUwScXZn1iBzQzHyu9SBkkLSWlohDWdsasAQ==", + "dev": true, + "dependencies": { + "@actions/http-client": "^1.0.11", + "@octokit/core": "^3.4.0", + "@octokit/plugin-paginate-rest": "^2.13.3", + "@octokit/plugin-rest-endpoint-methods": "^5.1.1" + } + }, + "node_modules/@actions/http-client": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-1.0.11.tgz", + "integrity": "sha512-VRYHGQV1rqnROJqdMvGUbY/Kn8vriQe/F9HR2AlYHzmKuM/p3kjNuXhmdBfcVgsvRWTz5C5XW5xvndZrVBuAYg==", + "dev": true, + "dependencies": { + "tunnel": "0.0.6" + } + }, "node_modules/@babel/code-frame": { "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", @@ -2716,6 +2738,135 @@ "node": ">=10" } }, + "node_modules/@octokit/auth-token": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", + "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", + "dev": true, + "dependencies": { + "@octokit/types": "^6.0.3" + } + }, + "node_modules/@octokit/core": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.5.1.tgz", + "integrity": "sha512-omncwpLVxMP+GLpLPgeGJBF6IWJFjXDS5flY5VbppePYX9XehevbDykRH9PdCdvqt9TS5AOTiDide7h0qrkHjw==", + "dev": true, + "dependencies": { + "@octokit/auth-token": "^2.4.4", + "@octokit/graphql": "^4.5.8", + "@octokit/request": "^5.6.0", + "@octokit/request-error": "^2.0.5", + "@octokit/types": "^6.0.3", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/endpoint": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", + "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", + "dev": true, + "dependencies": { + "@octokit/types": "^6.0.3", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/endpoint/node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@octokit/graphql": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", + "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", + "dev": true, + "dependencies": { + "@octokit/request": "^5.6.0", + "@octokit/types": "^6.0.3", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/openapi-types": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-11.2.0.tgz", + "integrity": "sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA==", + "dev": true + }, + "node_modules/@octokit/plugin-paginate-rest": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.17.0.tgz", + "integrity": "sha512-tzMbrbnam2Mt4AhuyCHvpRkS0oZ5MvwwcQPYGtMv4tUa5kkzG58SVB0fcsLulOZQeRnOgdkZWkRUiyBlh0Bkyw==", + "dev": true, + "dependencies": { + "@octokit/types": "^6.34.0" + }, + "peerDependencies": { + "@octokit/core": ">=2" + } + }, + "node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.13.0.tgz", + "integrity": "sha512-uJjMTkN1KaOIgNtUPMtIXDOjx6dGYysdIFhgA52x4xSadQCz3b/zJexvITDVpANnfKPW/+E0xkOvLntqMYpviA==", + "dev": true, + "dependencies": { + "@octokit/types": "^6.34.0", + "deprecation": "^2.3.1" + }, + "peerDependencies": { + "@octokit/core": ">=3" + } + }, + "node_modules/@octokit/request": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.2.tgz", + "integrity": "sha512-je66CvSEVf0jCpRISxkUcCa0UkxmFs6eGDRSbfJtAVwbLH5ceqF+YEyC8lj8ystKyZTy8adWr0qmkY52EfOeLA==", + "dev": true, + "dependencies": { + "@octokit/endpoint": "^6.0.1", + "@octokit/request-error": "^2.1.0", + "@octokit/types": "^6.16.1", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.1", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/request-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", + "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "dev": true, + "dependencies": { + "@octokit/types": "^6.0.3", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "node_modules/@octokit/request/node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@octokit/types": { + "version": "6.34.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz", + "integrity": "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==", + "dev": true, + "dependencies": { + "@octokit/openapi-types": "^11.2.0" + } + }, "node_modules/@popperjs/core": { "version": "2.10.2", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.10.2.tgz", @@ -3932,6 +4083,12 @@ "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", "integrity": "sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms=" }, + "node_modules/before-after-hook": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz", + "integrity": "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==", + "dev": true + }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -4838,6 +4995,12 @@ "node": ">= 0.6" } }, + "node_modules/deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true + }, "node_modules/destroy": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", @@ -13443,6 +13606,15 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" }, + "node_modules/tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "dev": true, + "engines": { + "node": ">=0.6.11 <=0.7.0 || >=0.7.3" + } + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -13664,6 +13836,12 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", + "dev": true + }, "node_modules/universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", @@ -14469,6 +14647,27 @@ } }, "dependencies": { + "@actions/github": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@actions/github/-/github-5.0.0.tgz", + "integrity": "sha512-QvE9eAAfEsS+yOOk0cylLBIO/d6WyWIOvsxxzdrPFaud39G6BOkUwScXZn1iBzQzHyu9SBkkLSWlohDWdsasAQ==", + "dev": true, + "requires": { + "@actions/http-client": "^1.0.11", + "@octokit/core": "^3.4.0", + "@octokit/plugin-paginate-rest": "^2.13.3", + "@octokit/plugin-rest-endpoint-methods": "^5.1.1" + } + }, + "@actions/http-client": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-1.0.11.tgz", + "integrity": "sha512-VRYHGQV1rqnROJqdMvGUbY/Kn8vriQe/F9HR2AlYHzmKuM/p3kjNuXhmdBfcVgsvRWTz5C5XW5xvndZrVBuAYg==", + "dev": true, + "requires": { + "tunnel": "0.0.6" + } + }, "@babel/code-frame": { "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", @@ -16350,6 +16549,127 @@ "rimraf": "^3.0.2" } }, + "@octokit/auth-token": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", + "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", + "dev": true, + "requires": { + "@octokit/types": "^6.0.3" + } + }, + "@octokit/core": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.5.1.tgz", + "integrity": "sha512-omncwpLVxMP+GLpLPgeGJBF6IWJFjXDS5flY5VbppePYX9XehevbDykRH9PdCdvqt9TS5AOTiDide7h0qrkHjw==", + "dev": true, + "requires": { + "@octokit/auth-token": "^2.4.4", + "@octokit/graphql": "^4.5.8", + "@octokit/request": "^5.6.0", + "@octokit/request-error": "^2.0.5", + "@octokit/types": "^6.0.3", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/endpoint": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", + "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", + "dev": true, + "requires": { + "@octokit/types": "^6.0.3", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + }, + "dependencies": { + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true + } + } + }, + "@octokit/graphql": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", + "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", + "dev": true, + "requires": { + "@octokit/request": "^5.6.0", + "@octokit/types": "^6.0.3", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/openapi-types": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-11.2.0.tgz", + "integrity": "sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA==", + "dev": true + }, + "@octokit/plugin-paginate-rest": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.17.0.tgz", + "integrity": "sha512-tzMbrbnam2Mt4AhuyCHvpRkS0oZ5MvwwcQPYGtMv4tUa5kkzG58SVB0fcsLulOZQeRnOgdkZWkRUiyBlh0Bkyw==", + "dev": true, + "requires": { + "@octokit/types": "^6.34.0" + } + }, + "@octokit/plugin-rest-endpoint-methods": { + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.13.0.tgz", + "integrity": "sha512-uJjMTkN1KaOIgNtUPMtIXDOjx6dGYysdIFhgA52x4xSadQCz3b/zJexvITDVpANnfKPW/+E0xkOvLntqMYpviA==", + "dev": true, + "requires": { + "@octokit/types": "^6.34.0", + "deprecation": "^2.3.1" + } + }, + "@octokit/request": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.2.tgz", + "integrity": "sha512-je66CvSEVf0jCpRISxkUcCa0UkxmFs6eGDRSbfJtAVwbLH5ceqF+YEyC8lj8ystKyZTy8adWr0qmkY52EfOeLA==", + "dev": true, + "requires": { + "@octokit/endpoint": "^6.0.1", + "@octokit/request-error": "^2.1.0", + "@octokit/types": "^6.16.1", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.1", + "universal-user-agent": "^6.0.0" + }, + "dependencies": { + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true + } + } + }, + "@octokit/request-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", + "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "dev": true, + "requires": { + "@octokit/types": "^6.0.3", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "@octokit/types": { + "version": "6.34.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz", + "integrity": "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==", + "dev": true, + "requires": { + "@octokit/openapi-types": "^11.2.0" + } + }, "@popperjs/core": { "version": "2.10.2", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.10.2.tgz", @@ -17379,6 +17699,12 @@ "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", "integrity": "sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms=" }, + "before-after-hook": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz", + "integrity": "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==", + "dev": true + }, "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -18090,6 +18416,12 @@ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" }, + "deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true + }, "destroy": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", @@ -24575,6 +24907,12 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" }, + "tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "dev": true + }, "type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -24728,6 +25066,12 @@ "@types/unist": "^2.0.2" } }, + "universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", + "dev": true + }, "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", diff --git a/package.json b/package.json index 79ed1c30..32c51176 100644 --- a/package.json +++ b/package.json @@ -109,6 +109,7 @@ "vuedraggable": "~4.1.0" }, "devDependencies": { + "@actions/github": "~5.0.0", "@babel/eslint-parser": "~7.15.8", "@babel/preset-env": "^7.15.8", "@types/bootstrap": "~5.1.6", From 8050cb8e99fed911f69b78b2d99994e2f180ef14 Mon Sep 17 00:00:00 2001 From: Philipp Bischoff <p.bischoff@innoloft.com> Date: Sat, 11 Dec 2021 23:43:12 +0100 Subject: [PATCH 169/282] implement google chat notification type --- server/notification-providers/google-chat.js | 46 ++++++++++++++++++++ server/notification.js | 2 + src/components/notifications/GoogleChat.vue | 13 ++++++ src/components/notifications/index.js | 2 + 4 files changed, 63 insertions(+) create mode 100644 server/notification-providers/google-chat.js create mode 100644 src/components/notifications/GoogleChat.vue diff --git a/server/notification-providers/google-chat.js b/server/notification-providers/google-chat.js new file mode 100644 index 00000000..f73f4b5a --- /dev/null +++ b/server/notification-providers/google-chat.js @@ -0,0 +1,46 @@ +const NotificationProvider = require("./notification-provider"); +const axios = require("axios"); +const { setting } = require("../util-server"); +const { getMonitorRelativeURL } = require("../../src/util"); + +class GoogleChat extends NotificationProvider { + + name = "Google Chat"; + + async send(notification, msg, monitorJSON = null, heartbeatJSON = null) { + let okMsg = "Sent Successfully."; + try { + // Google Chat message formatting: https://developers.google.com/chat/api/guides/message-formats/basic + + let textMsg = '' + if (heartbeatJSON && heartbeatJSON.status === UP) { + textMsg = `✅ Application is back online`; + } else { + textMsg = `🔴 Application went down`; + } + + 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 = { + "text": textMsg, + }; + + await axios.post(notification.googleChatWebhookURL, data); + return okMsg; + } catch (error) { + this.throwGeneralAxiosError(error); + } + + } +} + +module.exports = GoogleChat; diff --git a/server/notification.js b/server/notification.js index 3eb5f97b..56a7e84d 100644 --- a/server/notification.js +++ b/server/notification.js @@ -25,6 +25,7 @@ const DingDing = require("./notification-providers/dingding"); const Bark = require("./notification-providers/bark"); const SerwerSMS = require("./notification-providers/serwersms"); const Stackfield = require("./notification-providers/stackfield"); +const GoogleChat = require("./notification-providers/google-chat"); class Notification { @@ -62,6 +63,7 @@ class Notification { new Bark(), new SerwerSMS(), new Stackfield(), + new GoogleChat() ]; for (let item of list) { diff --git a/src/components/notifications/GoogleChat.vue b/src/components/notifications/GoogleChat.vue new file mode 100644 index 00000000..c19cae0d --- /dev/null +++ b/src/components/notifications/GoogleChat.vue @@ -0,0 +1,13 @@ +<template> + <div class="mb-3"> + <label for="google-chat-webhook-url" class="form-label">{{ $t("Webhook URL") }}<span style="color: red;"><sup>*</sup></span></label> + <input id="google-chat-webhook-url" v-model="$parent.notification.googleChatWebhookURL" 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://developers.google.com/chat/how-tos/webhooks" target="_blank">https://developers.google.com/chat/how-tos/webhooks</a> + </i18n-t> + </div> + </div> +</template> diff --git a/src/components/notifications/index.js b/src/components/notifications/index.js index 155a1ab2..67810610 100644 --- a/src/components/notifications/index.js +++ b/src/components/notifications/index.js @@ -24,6 +24,7 @@ import DingDing from "./DingDing.vue"; import Bark from "./Bark.vue"; import SerwerSMS from "./SerwerSMS.vue"; import Stackfield from './Stackfield.vue'; +import GoogleChat from './GoogleChat.vue'; /** * Manage all notification form. @@ -57,6 +58,7 @@ const NotificationFormList = { "Bark": Bark, "serwersms": SerwerSMS, "stackfield": Stackfield, + "Google Chat": GoogleChat } export default NotificationFormList From 83984668608fc9f3ff8e01f6c90fec4d8ecffff3 Mon Sep 17 00:00:00 2001 From: Philipp Bischoff <p.bischoff@innoloft.com> Date: Sat, 11 Dec 2021 23:50:03 +0100 Subject: [PATCH 170/282] order notification types by name --- src/components/notifications/index.js | 44 +++++++++++++-------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/src/components/notifications/index.js b/src/components/notifications/index.js index 67810610..a7c967ed 100644 --- a/src/components/notifications/index.js +++ b/src/components/notifications/index.js @@ -32,33 +32,33 @@ import GoogleChat from './GoogleChat.vue'; * @type { Record<string, any> } */ const NotificationFormList = { - "telegram": Telegram, - "webhook": Webhook, - "smtp": STMP, - "discord": Discord, - "teams": Teams, - "signal": Signal, - "gotify": Gotify, - "slack": Slack, - "rocket.chat": RocketChat, - "pushover": Pushover, - "pushy": Pushy, - "octopush": Octopush, - "promosms": PromoSMS, - "clicksendsms": ClickSendSMS, - "lunasea": LunaSea, - "Feishu": Feishu, "AliyunSMS": AliyunSMS, "apprise": Apprise, - "pushbullet": Pushbullet, - "line": Line, - "mattermost": Mattermost, - "matrix": Matrix, - "DingDing": DingDing, "Bark": Bark, + "clicksendsms": ClickSendSMS, + "DingDing": DingDing, + "discord": Discord, + "smtp": STMP, + "Feishu": Feishu, + "Google Chat": GoogleChat, + "gotify": Gotify, + "line": Line, + "lunasea": LunaSea, + "matrix": Matrix, + "mattermost": Mattermost, + "octopush": Octopush, + "promosms": PromoSMS, + "pushbullet": Pushbullet, + "pushover": Pushover, + "pushy": Pushy, + "rocket.chat": RocketChat, "serwersms": SerwerSMS, + "signal": Signal, + "slack": Slack, "stackfield": Stackfield, - "Google Chat": GoogleChat + "teams": Teams, + "telegram": Telegram, + "webhook": Webhook } export default NotificationFormList From a71569379ea9bbab2360ed0b129865124721ebf3 Mon Sep 17 00:00:00 2001 From: Philipp Bischoff <p.bischoff@innoloft.com> Date: Sun, 12 Dec 2021 00:01:12 +0100 Subject: [PATCH 171/282] add missing import --- server/notification-providers/google-chat.js | 1 + 1 file changed, 1 insertion(+) diff --git a/server/notification-providers/google-chat.js b/server/notification-providers/google-chat.js index f73f4b5a..897dd691 100644 --- a/server/notification-providers/google-chat.js +++ b/server/notification-providers/google-chat.js @@ -2,6 +2,7 @@ const NotificationProvider = require("./notification-provider"); const axios = require("axios"); const { setting } = require("../util-server"); const { getMonitorRelativeURL } = require("../../src/util"); +const { UP } = require("../../src/util"); class GoogleChat extends NotificationProvider { From 8ad6bd31d40f67c58f542cfc8775765eed7cb47b Mon Sep 17 00:00:00 2001 From: Philipp Bischoff <p.bischoff@innoloft.com> Date: Sun, 12 Dec 2021 00:08:33 +0100 Subject: [PATCH 172/282] Revert "order notification types by name" This reverts commit 83984668608fc9f3ff8e01f6c90fec4d8ecffff3. --- src/components/notifications/index.js | 42 +++++++++++++-------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/src/components/notifications/index.js b/src/components/notifications/index.js index a7c967ed..67810610 100644 --- a/src/components/notifications/index.js +++ b/src/components/notifications/index.js @@ -32,33 +32,33 @@ import GoogleChat from './GoogleChat.vue'; * @type { Record<string, any> } */ const NotificationFormList = { - "AliyunSMS": AliyunSMS, - "apprise": Apprise, - "Bark": Bark, - "clicksendsms": ClickSendSMS, - "DingDing": DingDing, - "discord": Discord, + "telegram": Telegram, + "webhook": Webhook, "smtp": STMP, - "Feishu": Feishu, - "Google Chat": GoogleChat, + "discord": Discord, + "teams": Teams, + "signal": Signal, "gotify": Gotify, - "line": Line, - "lunasea": LunaSea, - "matrix": Matrix, - "mattermost": Mattermost, - "octopush": Octopush, - "promosms": PromoSMS, - "pushbullet": Pushbullet, + "slack": Slack, + "rocket.chat": RocketChat, "pushover": Pushover, "pushy": Pushy, - "rocket.chat": RocketChat, + "octopush": Octopush, + "promosms": PromoSMS, + "clicksendsms": ClickSendSMS, + "lunasea": LunaSea, + "Feishu": Feishu, + "AliyunSMS": AliyunSMS, + "apprise": Apprise, + "pushbullet": Pushbullet, + "line": Line, + "mattermost": Mattermost, + "matrix": Matrix, + "DingDing": DingDing, + "Bark": Bark, "serwersms": SerwerSMS, - "signal": Signal, - "slack": Slack, "stackfield": Stackfield, - "teams": Teams, - "telegram": Telegram, - "webhook": Webhook + "Google Chat": GoogleChat } export default NotificationFormList From 56dfa05642e4d84290ea8939609be0721e3fdf16 Mon Sep 17 00:00:00 2001 From: dhfhfk <dhfhfk1203@gmail.com> Date: Sun, 12 Dec 2021 18:56:10 +0900 Subject: [PATCH 173/282] Update Ko-KR.js --- src/languages/ko-KR.js | 84 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 78 insertions(+), 6 deletions(-) diff --git a/src/languages/ko-KR.js b/src/languages/ko-KR.js index ad7b4337..a9ff4b60 100644 --- a/src/languages/ko-KR.js +++ b/src/languages/ko-KR.js @@ -194,7 +194,7 @@ export default { "Post URL": "Post URL", "Content Type": "Content Type", webhookJsonDesc: "{0}은 express.js와 같은 최신 HTTP 서버에 적합해요.", - webhookFormDataDesc: "{multipart}은 PHP에 적합해요. {decodeFunction}를 기준으로 json을 디코딩하면 돼요.", + webhookFormDataDesc: "{multipart}은 PHP에 적합해요. {decodeFunction}를 기준으로 json을 디코딩하면 되어요.", smtp: "Email (SMTP)", secureOptionNone: "없음 / STARTTLS (25, 587)", secureOptionTLS: "TLS (465)", @@ -245,7 +245,7 @@ export default { "Message Title": "메시지 제목", "Notification Sound": "알림음", "More info on:": "자세한 정보: {0}", - pushoverDesc1: "긴급 우선 순위 (2)는 재시도 사이에 기본적으로 30초의 타임아웃이 있고, 1시간 후에 만료돼요.", + pushoverDesc1: "긴급 우선 순위 (2)는 재시도 사이에 기본적으로 30초의 타임아웃이 있고, 1시간 후에 만료되어요.", pushoverDesc2: "다른 장치에 알림을 보내려면 장치칸을 입력해주세요.", "SMS Type": "SMS 종류", octopushTypePremium: "프리미엄 (빠름) - 알림 기능에 적합해요)", @@ -270,13 +270,85 @@ export default { "Messaging API": "Messaging API 메뉴", wayToGetLineChannelToken: "먼저 {0}에 액세스하고, 공급자 및 채널 (Messaging API)을 만든 다음, 각 메뉴 밑에 언급된 메뉴에서 채널 액세스 토큰과 사용자 ID를 얻을 수 있어요.", "Icon URL": "아이콘 URL", - aboutIconURL: "\"Icon URL\"에 사진 링크를 입력해 프로필 사진을 설정할 수 있어요. 아이콘 이모지가 설정되어 있으면 적용되지 않을 거예요.", + aboutIconURL: "\"아이콘 URL\"에 사진 링크를 입력해 프로필 사진을 설정할 수 있어요. 아이콘 이모지가 설정되어 있으면 적용되지 않을 거예요.", aboutMattermostChannelName: "채널 이름을 입력하면 Webhook이 게시할 기본 채널을 재설정할 수 있어요. 이 설정은 Mattermost 웹훅 설정에서 활성화해야 해요. 예: #기타-채널", - matrix: "매트릭스", + matrix: "Matrix", promosmsTypeEco: "SMS ECO - 저렴하지만 느리고 가끔 과부하에 걸려요. 폴란드 수신자만 사용할 수 있어요. ", - promosmsTypeFlash: "SMS FLASH - 메시지가 받는 사람 장치에 자동으로 표시돼요. 폴란드 수신자만 사용할 수 있어요.", + promosmsTypeFlash: "SMS FLASH - 메시지가 받는 사람 장치에 자동으로 표시되어요. 폴란드 수신자만 사용할 수 있어요.", promosmsTypeFull: "SMS FULL - SMS 프리미엄 티어, 보내는 사람 이름을 먼저 등록해야 해요. 알림 기능에 적합해요.", promosmsTypeSpeed: "SMS SPEED - 시스템에서 가장 높은 우선순위예요. 매우 빠르고 신뢰할 수 있지만 비용이 많이 들어요 (SMS 전체 가격의 약 두 배).", - promosmsPhoneNumber: "전화 번호 (폴란드 수신자라면 지역번호를 적지 않아도 돼요.)", + promosmsPhoneNumber: "전화 번호 (폴란드 수신자라면 지역번호를 적지 않아도 되어요.)", promosmsSMSSender: "SMS 보내는 사람 이름 : 미리 등록된 이름 혹은 기본값 중 하나예요: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Primary Base URL": "기본 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: "{0} 가격 확인:", + apiCredentials: "API credentials", + octopushLegacyHint: "Octopush 레거시 버전 (2011-2020) 을 사용하시나요? 아니면 새 버전을 사용하시나요?", + "Feishu WebHookUrl": "Feishu WebHookURL", + matrixHomeserverURL: "Homeserver URL (with http(s):// and optionally port)", + "Internal Room Id": "내부 방 ID", + matrixDesc1: "Matrix 클라이언트 방 설정의 고급 섹션에서 내부 방 ID를 찾을 수 있어요. 내부 방 ID는 이렇게 생겼답니다: !QMdRCpUIfLwsfjxye6:home.server.", + matrixDesc2: "사용자의 모든 방에 대한 엑세스가 허용될 수 있어서 새로운 사용자를 만들고 원하는 방에만 초대한 후 엑세스 토큰을 사용하는 것이 좋아요. {0} 이 명령어를 통해 엑세스 토큰을 얻을 수 있어요.", + Method: "Method", + Body: "Body", + Headers: "Headers", + PushUrl: "Push URL", + HeadersInvalidFormat: "요청 Headers의 JSON 형식이 올바르지 않아요: ", + BodyInvalidFormat: "요청 Body의 JSON 형식이 올바르지 않아요: ", + "Monitor History": "모니터링 기록", + clearDataOlderThan: "모니터링 기록을 {0}일 동안 저장해요.", + PasswordsDoNotMatch: "비밀번호가 일치하지 않아요.", + records: "records", + "One record": "One record", + steamApiKeyDescription: "스팀 게임 서버를 모니터링하려면 Steam Web API 키가 필요해요. API 키는 하단 사이트에서 등록할 수 있어요: ", + "Current User": "현재 사용자", + recent: "최근", + Done: "완료", + Info: "정보", + Security: "보안", + "Steam API Key": "Steam API Key", + "Shrink Database": "데이터베이스 축소", + "Pick a RR-Type...": "RR-Type을 골라주세요...", + "Pick Accepted Status Codes...": "상태 코드를 골라주세요...", + Default: "기본", + "HTTP Options": "HTTP 옵션", + "Create Incident": "인시던트 만들기", + Title: "제목", + Content: "내용", + Style: "스타일", + info: "정보", + warning: "경고", + danger: "위험", + primary: "기본", + light: "라이트", + dark: "다크", + Post: "올리기", + "Please input title and content": "제목과 내용을 작성해주세요.", + Created: "생성 날짜", + "Last Updated": "마지막 업데이트", + Unpin: "제거", + "Switch to Light Theme": "라이트 테마로 전환", + "Switch to Dark Theme": "다크 테마로 전환", + "Show Tags": "태그 보이기", + "Hide Tags": "태그 숨기기", + Description: "설명", + "No monitors available.": "모니터링이 없어요.", + "Add one": "추가하기", + "No Monitors": "모니터링 없음", + "Untitled Group": "이름없는 그룹", + Services: "서비스", + Discard: "취소", + Cancel: "취소", + "Powered by": "Powered by", + shrinkDatabaseDescription: "SQLite 데이터베이스 VACUUM을 트리거해요. 만약 데이터베이스가 1.10.0 버전 이후에 생성되었다면 AUTO_VACUUM이 설정되어 있어 이 작업은 필요 없을 거에요.", + serwersms: "SerwerSMS.pl", + serwersmsAPIUser: "API Usename (webapi_ 접두사 포함)", + serwersmsAPIPassword: "API 비밀번호", + serwersmsPhoneNumber: "휴대전화 번호", + serwersmsSenderName: "보내는 사람 이름 (registered via customer portal)", + stackfield: "Stackfield", }; From aa92727a61e6df38ed0868a8f1d8e3df347d848a Mon Sep 17 00:00:00 2001 From: Ponkhy <github@myon.lu> Date: Sun, 12 Dec 2021 21:52:51 +0100 Subject: [PATCH 174/282] Updated de-De --- src/languages/de-DE.js | 45 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/src/languages/de-DE.js b/src/languages/de-DE.js index e6b7710c..6c2dd1f1 100644 --- a/src/languages/de-DE.js +++ b/src/languages/de-DE.js @@ -304,4 +304,49 @@ 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", + recent: "Letzte", + Done: "Fertig", + Info: "Info", + Security: "Sicherheit", + "Steam API Key": "Steam API Key", + "Shrink Database": "Datenbank verkleinern", + "Pick a RR-Type...": "Wähle ein RR-Typ aus...", + "Pick Accepted Status Codes...": "Wähle akzeptierte Statuscodes aus...", + Default: "Standard", + "HTTP Options": "HTTP Optionen", + "Create Incident": "Vorfall erstellen", + Title: "Titel", + Content: "Inhalt", + Style: "Stil", + info: "info", + warning: "warnung", + danger: "gefahr", + primary: "primär", + light: "hell", + dark: "dunkel", + Post: "Eintrag", + "Please input title and content": "Bitte Titel und Inhalt eingeben", + Created: "Erstellt", + "Last Updated": "Zuletzt aktualisiert", + Unpin: "Loslösen", + "Switch to Light Theme": "Zu hellem Thema wechseln", + "Switch to Dark Theme": "Zum dunklen Thema wechseln", + "Show Tags": "Tags anzeigen", + "Hide Tags": "Tags ausblenden", + Description: "Beschreibung", + "No monitors available.": "Keine Monitore verfügbar.", + "Add one": "Füge eins hinzu", + "No Monitors": "Keine Monitore", + "Untitled Group": "Gruppe ohne Titel", + Services: "Dienste", + Discard: "Verwerfen", + Cancel: "Abbrechen", + "Powered by": "Powered by", + shrinkDatabaseDescription: "Löse VACUUM für die SQLite Datenbank aus. Wenn die Datenbank nach 1.10.0 erstellt wurde, ist AUTO_VACUUM bereits aktiviert und diese Aktion ist nicht erforderlich.", + serwersms: "SerwerSMS.pl", + serwersmsAPIUser: "API Benutzername (inkl. webapi_ prefix)", + serwersmsAPIPassword: "API Passwort", + serwersmsPhoneNumber: "Telefonnummer", + serwersmsSenderName: "Name des SMS-Absenders (über Kundenportal registriert)", + "stackfield": "Stackfield", }; From b10cecb362548cad285f60701544e9754e46e115 Mon Sep 17 00:00:00 2001 From: Erik <have-no@mail.com> Date: Tue, 14 Dec 2021 17:59:26 +0100 Subject: [PATCH 175/282] Added sl-SI language Added sl-SI language --- src/components/settings/Security.vue | 6 + src/i18n.js | 1 + src/languages/sl-SI.js | 355 +++++++++++++++++++++++++++ 3 files changed, 362 insertions(+) create mode 100644 src/languages/sl-SI.js diff --git a/src/components/settings/Security.vue b/src/components/settings/Security.vue index 4ef6b3d9..c94c3915 100644 --- a/src/components/settings/Security.vue +++ b/src/components/settings/Security.vue @@ -126,6 +126,12 @@ <p>Bitte mit Vorsicht nutzen.</p> </template> + <template v-else-if="$i18n.locale === 'sl-SI' "> + <p>Ali ste prepričani, da želite onemogočiti <strong>avtentikacijo</strong>?</p> + <p>Namenjen je <strong>nekomu, ki ima pred programom Uptime Kuma vklopljeno zunanje preverjanje pristnosti</strong>, na primer Cloudflare Access.</p> + <p>Uporabljajte previdno.</p> + </template> + <template v-else-if="$i18n.locale === 'sr' "> <p>Да ли сте сигурни да желите да <strong>искључите аутентификацију</strong>?</p> <p>То је за <strong>оне који имају додату аутентификацију</strong> испред Uptime Kuma као на пример Cloudflare Access.</p> diff --git a/src/i18n.js b/src/i18n.js index 22949393..cdb93e95 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -18,6 +18,7 @@ const languageList = { "ja": "日本語", "da-DK": "Danish (Danmark)", "sr": "Српски", + "sl-SI": "Slovenščina", "sr-latn": "Srpski", "sv-SE": "Svenska", "tr-TR": "Türkçe", diff --git a/src/languages/sl-SI.js b/src/languages/sl-SI.js new file mode 100644 index 00000000..b6fc3374 --- /dev/null +++ b/src/languages/sl-SI.js @@ -0,0 +1,355 @@ +export default { + languageName: "Slovenščina", + checkEverySecond: "Preveri na vsakih {0} sekund", + retryCheckEverySecond: "Ponovno poskusi na vsakih {0} sekund", + retriesDescription: "Maksimalno število poskusov predenj se storitev označi kot nedosegljiva in se pošlje obvestilo", + ignoreTLSError: "Ignoriraj TLS/SSL napake za HTTPS spletne strani", + upsideDownModeDescription: "Negiraj status. Če je storitev dosegljiva je NEDOSEGLJIVA.", + maxRedirectDescription: "Maksimalno število sledečih preusmeritev. 0 onemogoči preusmeritve.", + acceptedStatusCodesDescription: "Izberi kode statusa veljavna kot uspešen odgovor.", + passwordNotMatchMsg: "Ponovljeno geslo se ne ujema.", + notificationDescription: "Obvestila morajo biti dodeljena monitorju, da delujejo.", + keywordDescription: "Iskana ključna beseda v surovem HTML ali JSON odgovoru. Iskanje je občutljivo na začetnico.", + pauseDashboardHome: "Pavza", + deleteMonitorMsg: "Ste prepričani, da želite izbrisati ta monitor?", + deleteNotificationMsg: "Ste prepričani, da želite izbrisati to obvestilo za vse monitorje?", + resoverserverDescription: "Cloudflare je privzeti strežnik. DNS strežnik lahko spremenite kadarkoli.", + rrtypeDescription: "Izberite RR tip, ki ga želite spremljati", + pauseMonitorMsg: "Ste prepričani, da želite pavzirati?", + enableDefaultNotificationDescription: "To obvestilo bo kot privzeto omogočeno za vse nove monitorje. Še vedno ga lahko izključite posebej za vsak monitor.", + clearEventsMsg: "Ste prepričani da želite izbrisati vse dogodke tega monitorja?", + clearHeartbeatsMsg: "Ste prepričani da želite izbrisati vse srčne utripe tega monitorja?", + confirmClearStatisticsMsg: "Ste prepričani da želite izbrisati VSO statistiko?", + importHandleDescription: "Izberite 'Preskoči obstoječe', če želite preskočiti vsak monitor ali obvestilo z istim imenom. 'Prepiši' bo prepisal vse obstoječe monitorje in obvestila.", + confirmImportMsg: "Ste prepričani da želite uvoziti varnostno kopijo? Preverite da ste izbrali pravo opcijo za uvoz.", + twoFAVerifyLabel: "Prosimo vnesite žeton za potrditev 2FA:", + tokenValidSettingsMsg: "Žeton je veljaven! Sedaj lahko shranite 2FA nastavitev.", + confirmEnableTwoFAMsg: "Ste prepričani, da želite omogočiti 2FA?", + confirmDisableTwoFAMsg: "Ste prepričani, da želite onemogočiti 2FA?", + Settings: "Nastavitve", + Dashboard: "Nadzorna plošča", + "New Update": "Nova posodobitev", + Language: "Jezik", + Appearance: "Izgled", + Theme: "Teme", + General: "Splošno", + "Primary Base URL": "Primaren URL", + Version: "Različica", + "Check Update On GitHub": "Preveri posodobitev na GitHub-u", + List: "Seznam", + Add: "Dodaj", + "Add New Monitor": "Dodaj nov monitor", + "Quick Stats": "Hitro stanje", + Up: "Dosegljiv", + Down: "Nedosegljiv", + Pending: "Na čakanju", + Unknown: "Neznano", + Pause: "Pavza", + Name: "Ime", + Status: "Status", + DateTime: "DateTime", + Message: "Sporočilo", + "No important events": "Ni pomembnih dogodkov", + Resume: "Nadaljuj", + Edit: "Uredi", + Delete: "Izbriši", + Current: "Trenutno", + Uptime: "Uptime", + "Cert Exp.": "Potek certifikata", + days: "dni", + day: "dan", + "-day": "-dan", + hour: "ura", + "-hour": "-ura", + Response: "Odgovor", + Ping: "Ping", + "Monitor Type": "Tip monitorja", + Keyword: "Ključna beseda", + "Friendly Name": "Prijazno ime", + URL: "URL", + Hostname: "Hostname", + Port: "Vrata", + "Heartbeat Interval": "Interval srčnega utripa", + Retries: "Ponovni poskusi", + "Heartbeat Retry Interval": "Ponovni poskus srčnega utripa", + Advanced: "Napredno", + "Upside Down Mode": "Negiran način", + "Max. Redirects": "Max. preusmeritev", + "Accepted Status Codes": "Sprejete kode statusa", + "Push URL": "Push URL", + needPushEvery: "Pokliči ta URL vsakih {0} sekund.", + pushOptionalParams: "Dodatni parametri: {0}", + Save: "Shrani", + Notifications: "Obvestila", + "Not available, please setup.": "Ni na voljo, prosimo nastavite.", + "Setup Notification": "Nastavi obvestila", + Light: "Svetlo", + Dark: "Temno", + Auto: "Auto", + "Theme - Heartbeat Bar": "Tema - vrstica srčnega utripa", + Normal: "Normalna", + Bottom: "Spodaj", + None: "Brez", + Timezone: "Časovni pas", + "Search Engine Visibility": "Vidljivost v spletnih iskalnikih", + "Allow indexing": "Dovoli indeksiranje", + "Discourage search engines from indexing site": "Odvračaj spletne iskalnike od indeksiranja te strani", + "Change Password": "Zamenjaj geslo", + "Current Password": "Trenutno geslo", + "New Password": "Novo geslo", + "Repeat New Password": "Ponovi novo geslo", + "Update Password": "Posodobi geslo", + "Disable Auth": "Onemogoči auth", + "Enable Auth": "Omogoči auth", + Logout: "Odjava", + Leave: "Zapusti", + "I understand, please disable": "Razumem, prosim onemogočite", + Confirm: "Potrdi", + Yes: "Da", + No: "Ne", + Username: "Uporabniško ime", + Password: "Geslo", + "Remember me": "Zapomni si me", + Login: "Vpis", + "No Monitors, please": "Prosim, brez monitorjev", + "add one": "Dodaj enega", + "Notification Type": "Tip obvestila", + Email: "Email", + Test: "Test", + "Certificate Info": "Informacije certifikata", + "Resolver Server": "Strežnik za razreševanje", + "Resource Record Type": "Vrsta zapisa o viru", + "Last Result": "Zadnji rezultat", + "Create your admin account": "Ustvari administratorski račun", + "Repeat Password": "Ponovi geslo", + "Import Backup": "Uvozi varnostno kopijo", + "Export Backup": "Izvozi varnostno kopijo", + Export: "Izvozi", + Import: "Uvozi", + respTime: "Odzivni čas (ms)", + notAvailableShort: "N/A", + "Default enabled": "Privzeto omogočeno", + "Apply on all existing monitors": "Uporabi na vseh obstoječih monitorjih", + Create: "Ustvari", + "Clear Data": "Izbriši podatke", + Events: "Dogodki", + Heartbeats: "Srčni utripi", + "Auto Get": "Auto Get", + backupDescription: "Izvozite lahko vse monitorje in obvestila v JSON datoteko.", + backupDescription2: "Pomni: Zgodovina in podatki dogodkov niso vključeni.", + backupDescription3: "Občutljivi podatki, kot žetoni za obvestila so vlkjučeni v datoteko za izvoz; prosimo hranite na varnem.", + alertNoFile: "Izberite datoteko za Uvoz.", + alertWrongFileType: "Prosimo izberite JSON datoteko.", + "Clear all statistics": "Pobrišite vso statistiko", + "Skip existing": "Preskoči obstoječe", + Overwrite: "Prepiši", + Options: "Možnosti", + "Keep both": "Ohrani oboje", + "Verify Token": "Potrdi žeton", + "Setup 2FA": "Nastavi 2FA", + "Enable 2FA": "Omogoči 2FA", + "Disable 2FA": "Onemogoči 2FA", + "2FA Settings": "2FA nastavitve", + "Two Factor Authentication": "Preverjanje pristnosti z dvema dejavnikoma", + Active: "Aktivno", + Inactive: "Neaktivno", + Token: "Žeton", + "Show URI": "Prikaži URI", + Tags: "Značke", + "Add New below or Select...": "Dodaj novo spodaj ali izberi iz seznama...", + "Tag with this name already exist.": "Značka s tem imenom že obstaja.", + "Tag with this value already exist.": "Značka s to vrednostjo že obstaja.", + color: "barva", + "value (optional)": "vrednost (po želji)", + Gray: "Siva", + Red: "Rdeča", + Orange: "Oranžna", + Green: "Zelena", + Blue: "Modra", + Indigo: "Indigo", + Purple: "Vijolična", + Pink: "Roza", + "Search...": "Išči...", + "Avg. Ping": "Avg. Ping", + "Avg. Response": "Avg. odziv", + "Entry Page": "Vstopna stran", + statusPageNothing: "Nikjer nič... Dodajte skupino ali monitor.", + "No Services": "Ni storitev", + "All Systems Operational": "Vsi sistemi delujejo", + "Partially Degraded Service": "Delno poslabšana storitev", + "Degraded Service": "Poslabšana storitev", + "Add Group": "Dodaj skupino", + "Add a monitor": "Dodaj monitor", + "Edit Status Page": "Uredi statusno stran", + "Go to Dashboard": "Pojdi na nadzorno ploščo", + "Status Page": "Statusna stran", + defaultNotificationName: "Moje {notification} Obvestilo ({number})", + here: "tukaj", + Required: "Obvezno", + telegram: "Telegram", + "Bot Token": "Robotkov žetonček", + wayToGetTelegramToken: "Lahko dobiš žeton od {0}.", + "Chat ID": "ID pogovora", + supportTelegramChatID: "Direkten pogovor pomoči / Skupina / ID kanala", + wayToGetTelegramChatID: "Id lahko dobiš, če pošlješ sporočilo robotku in odpreš ta URL, da bi videl chat_id:", + "YOUR BOT TOKEN HERE": "ROBOTKOV ŽETON TUKAJ", + chatIDNotFound: "Ne najdem Chat Id-ja; prvo pošlji sporočilo robotku", + webhook: "Webhook", + "Post URL": "Post URL", + "Content Type": "Vrsta vsebine", + webhookJsonDesc: "{0} je v redu za vsak moderen HTTP strežnik, kot recimo Express.js", + webhookFormDataDesc: "{multipart} je v redu za PHP. JSON bo moral biti razčlenjen s {decodeFunction}", + smtp: "Email (SMTP)", + secureOptionNone: "Brez / STARTTLS (25, 587)", + secureOptionTLS: "TLS (465)", + "Ignore TLS Error": "Ignoriraj TLS napako", + "From Email": "Od Email", + emailCustomSubject: "Poljubna zadeva", + "To Email": "Za Email", + smtpCC: "CC", + smtpBCC: "BCC", + discord: "Discord", + "Discord Webhook URL": "Discord Webhook URL", + wayToGetDiscordURL: "To lahko dibiš v Server Settings -> Integrations -> Create Webhook", + "Bot Display Name": "Prikazno ime robotka", + "Prefix Custom Message": "Predpona poljubnega sporočila", + "Hello @everyone is...": "Pozdravljen {'@'}everyone je...", + teams: "Microsoft Teams", + "Webhook URL": "Webhook URL", + wayToGetTeamsURL: "Izvedi kako narediš webhook URL {0}.", + signal: "Signal", + Number: "Številka", + Recipients: "Prejemniki", + needSignalAPI: "Imeti moraš signal klienta z REST API.", + wayToCheckSignalURL: "Kako se to naredi, lahko preveriš na tem URL-ju:", + signalImportant: "POMEMBNO: Ne moreš mešati skupin in številk v prejemnikih!", + gotify: "Gotify", + "Application Token": "Žeton za aplikacijo", + "Server URL": "URL Strežnika", + Priority: "Prioriteta", + slack: "Slack", + "Icon Emoji": "Emoji ikona", + "Channel Name": "Ime kanala", + "Uptime Kuma URL": "Uptime Kuma URL", + aboutWebhooks: "Več o webhook-ih: {0}", + aboutChannelName: "Vnesi ime kanala na {0} Channel Name polje, če želiš preskočiti webhook kanal. npr.: #drug-kanal", + aboutKumaURL: "Če pustite polje Uptime Kuma URL prazno, bo nastavljeno privzeto na GitHub stran projekta.", + emojiCheatSheet: "Emoji plonk listek: {0}", + "rocket.chat": "Rocket.Chat", + pushover: "Pushover", + pushy: "Pushy", + octopush: "Octopush", + promosms: "PromoSMS", + clicksendsms: "ClickSend SMS", + lunasea: "LunaSea", + apprise: "Apprise (podpira 50+ storitev za obveščevanje)", + pushbullet: "Pushbullet", + line: "Line Messenger", + mattermost: "Mattermost", + "User Key": "User Key", + Device: "Naprava", + "Message Title": "Naslov sporočila", + "Notification Sound": "Zvok obvestila", + "More info on:": "Več informacij na: {0}", + pushoverDesc1: "Prioriteta nujnosti (2) ima privzeto nastavitev 30 sekund časa med ponovni poskusi in poteče po 1 uri.", + pushoverDesc2: "Če želite pošiljati obvestila na različne naprave izpolnite polje 'Naprava'.", + "SMS Type": "Vrsta SMS-a", + octopushTypePremium: "Premium (hitro - priporočljivo za opozarjanje)", + octopushTypeLowCost: "Cenovno ugodno (počasno - včasih jih blokira operater)", + checkPrice: "preveri {0} cene:", + apiCredentials: "API poverilnice", + octopushLegacyHint: "Uporabljate legacy verzijo Octopush-a (2011-2020) ali novo verzijo?", + "Check octopush prices": "Preveri octopush cene {0}.", + octopushPhoneNumber: "Telefonska številka (npr.: +386031234567) ", + octopushSMSSender: "Ime SMS pošiljatelja: 3-11 alfanumeričnih znakov in presledki (a-zA-Z0-9)", + "LunaSea Device ID": "LunaSea Device ID", + "Apprise URL": "Apprise URL", + "Example:": "Primer: {0}", + "Read more:": "Preberi več: {0}", + "Status:": "Status: {0}", + "Read more": "Preberi več", + appriseInstalled: "Apprise je nameščen.", + appriseNotInstalled: "Apprise ni nameščen. {0}", + "Access Token": "Žeton za dostop", + "Channel access token": "Žeton za dostop do kanala", + "Line Developers Console": "Line Developers Console", + lineDevConsoleTo: "Line Developers Console - {0}", + "Basic Settings": "Osnovne nastavitve", + "User ID": "User ID", + "Messaging API": "Messaging API", + wayToGetLineChannelToken: "Prvo odpri {0}, ustvarite ponudnika in kanal (Messaging API), potem lahko žeton za dostop do kanala in ID uporabnika dobite iz zgoraj navedenih elementov menija.", + "Icon URL": "URL ikone", + aboutIconURL: "V razdelku \"URL ikone\" lahko zagotovite povezavo do slike, ki bo nadomestila privzeto sliko profila. Ne bo uporabljena, če je nastavljena ikona Emoji.", + aboutMattermostChannelName: "V razdelku \"URL ikone\" lahko zagotovite povezavo do slike, ki bo nadomestila privzeto sliko profila. Ne bo uporabljena, če je nastavljena ikona Emoji", + matrix: "Matrix", + promosmsTypeEco: "SMS ECO - poceni, vendar počasen in pogosto preobremenjen. Omejeno samo na poljske prejemnike.", + promosmsTypeFlash: "SMS FLASH - sporočilo se samodejno prikaže v napravi prejemnika. Omejeno samo na poljske prejemnike.", + promosmsTypeFull: "SMS FULL - Premium raven SMS, Uporabite lahko svoje ime pošiljatelja (najprej morate registrirati ime). Zanesljivo za opozorila.", + promosmsTypeSpeed: "SMS SPEED - Najvišja prednost v sistemu. Zelo hitro in zanesljivo, vendar drago (približno dvakratnik cene SMS FULL)..", + promosmsPhoneNumber: "Telefonska številka (za poljskega prejemnika Lahko preskočite področne oznake", + promosmsSMSSender: "Ime pošiljatelja SMS : vnaprej registrirano ime ali eno od privzetih: SMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "Feishu WebHookURL", + matrixHomeserverURL: "Homeserver URL (z http(s):// in vrata po želji)", + "Internal Room Id": "Interni ID sobe", + matrixDesc1: "Notranji ID sobe lahko poiščete v naprednem razdelku nastavitev sobe v odjemalcu Matrix. Izgledati mora kot !QMdRCpUIfLwsfjxye6:home.server", + matrixDesc2: "Zelo priporočljivo je, da ustvarite novega uporabnika in ne uporabljate svojega žetona za dostop uporabnika Matrix, saj bo omogočil popoln dostop do vašega računa in vseh sob, ki ste se jim pridružili. Namesto tega ustvarite novega uporabnika in ga povabite le v sobo, v kateri želite prejemati obvestila. Token dostopa lahko dobite tako, da zaženete {0}", + Method: "Metoda", + Body: "Telo", + Headers: "Glave", + PushUrl: "Push URL", + HeadersInvalidFormat: "Glave zahtevka niso veljavni JSON: ", + BodyInvalidFormat: "Telo zahteve ni veljaven JSON: ", + "Monitor History": "Zgodovina", + clearDataOlderThan: "Ohrani zgodovino {0} dni.", + PasswordsDoNotMatch: "Gesli se ne ujemata.", + records: "vnosi", + "One record": "En vnos", + steamApiKeyDescription: "Za spremljanje igralnega strežnika Steam potrebujete ključ spletnega vmesnika Steam. Ključ API lahko registrirate tukaj: ", + "Current User": "Trenuten uporabnik", + recent: "Nedavno", + Done: "Zaključi", + Info: "Info", + Security: "Varnost", + "Steam API Key": "Steam API Key", + "Shrink Database": "Stisni bazo", + "Pick a RR-Type...": "Izberi RR tip...", + "Pick Accepted Status Codes...": "Izbiranje sprejetih kod stanja...", + Default: "Privzeto", + "HTTP Options": "HTTP možnosti", + "Create Incident": "Ustvari incident", + Title: "Naslov", + Content: "Vsebina", + Style: "Stil", + info: "info", + warning: "opozorilo", + danger: "nevarnost", + primary: "primarno", + light: "svetlo", + dark: "temno", + Post: "Objavi", + "Please input title and content": "Vnesi naslov in vsebino", + Created: "Ustvarjeno", + "Last Updated": "Nazadnje posodobljeno", + Unpin: "Odpni", + "Switch to Light Theme": "Preklopi na svetlo temo", + "Switch to Dark Theme": "Preklopi na temno temo", + "Show Tags": "Prikaži značke", + "Hide Tags": "Skrij značke", + Description: "Opis", + "No monitors available.": "Nobenega monitorja ni na voljo.", + "Add one": "Dodaj enega", + "No Monitors": "Ni monitorjev", + "Add one": "Dodaj enega", + "Untitled Group": "Skupina brez imena", + Services: "Storitve", + Discard: "zavrzi", + Cancel: "Prekliči", + "Powered by": "Powered by", + shrinkDatabaseDescription: "Sprožitev podatkovne zbirke VACUUM za SQLite. Če je vaša zbirka podatkov ustvarjena po različici 1.10.0, je funkcija AUTO_VACUUM že omogočena in ta ukrep ni potreben.", + serwersms: "SerwerSMS.pl", + serwersmsAPIUser: "API uporabniško ime (vključno z webapi_ prefix)", + serwersmsAPIPassword: "API geslo", + serwersmsPhoneNumber: "Telefonska številka", + serwersmsSenderName: "Ime SMS pošiljatelja (registrirani prek portala za stranke)", + "stackfield": "Stackfield", +}; \ No newline at end of file From 000703837b6a2b554edc059a812b6493125118f1 Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Wed, 15 Dec 2021 02:46:13 +0800 Subject: [PATCH 176/282] Update README.md --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index d870d617..c2c0c4a1 100644 --- a/README.md +++ b/README.md @@ -89,6 +89,12 @@ Project Plan: https://github.com/louislam/uptime-kuma/projects/1 +## ❤️ Sponsors + +Thank you so much! (GitHub Sponsors will be updated manually. OpenCollective sponsors will be updated automatically, the list will be cached by GitHub though. It may need some time to be updated) + +<img src="https://uptime.kuma.pet/sponsors?v=2" alt /> + ## 🖼 More Screenshots Light Mode: From 5bc68d7f3bcebeda4fd8e97a2a14733de819e93c Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Wed, 15 Dec 2021 02:50:45 +0800 Subject: [PATCH 177/282] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c2c0c4a1..7f88db5f 100644 --- a/README.md +++ b/README.md @@ -93,7 +93,7 @@ https://github.com/louislam/uptime-kuma/projects/1 Thank you so much! (GitHub Sponsors will be updated manually. OpenCollective sponsors will be updated automatically, the list will be cached by GitHub though. It may need some time to be updated) -<img src="https://uptime.kuma.pet/sponsors?v=2" alt /> +<img src="https://uptime.kuma.pet/sponsors?v=3" alt /> ## 🖼 More Screenshots From 475a466c7ed04dff38ea99595042363707dadc16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20Bratovi=C4=87?= <ivanbratovic4@gmail.com> Date: Wed, 15 Dec 2021 11:18:30 +0100 Subject: [PATCH 178/282] Add attribute to basicauth-pass to prevent browsers from autocompleting (#1063) --- src/pages/EditMonitor.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/EditMonitor.vue b/src/pages/EditMonitor.vue index 4a0d0408..4b6a920c 100644 --- a/src/pages/EditMonitor.vue +++ b/src/pages/EditMonitor.vue @@ -276,7 +276,7 @@ <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')"> + <input id="basicauth-pass" v-model="monitor.basic_auth_pass" type="password" autocomplete="new-password" class="form-control" :placeholder="$t('Password')"> </div> </template> </div> From a6072a0e306d44c5a5094601e8d6661e31f50878 Mon Sep 17 00:00:00 2001 From: Philipp Bischoff <p.bischoff@innoloft.com> Date: Wed, 15 Dec 2021 13:40:21 +0100 Subject: [PATCH 179/282] google chat: only show offline message in notification when service went down --- server/notification-providers/google-chat.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/server/notification-providers/google-chat.js b/server/notification-providers/google-chat.js index 897dd691..1610553c 100644 --- a/server/notification-providers/google-chat.js +++ b/server/notification-providers/google-chat.js @@ -2,7 +2,7 @@ const NotificationProvider = require("./notification-provider"); const axios = require("axios"); const { setting } = require("../util-server"); const { getMonitorRelativeURL } = require("../../src/util"); -const { UP } = require("../../src/util"); +const { DOWN, UP } = require("../../src/util"); class GoogleChat extends NotificationProvider { @@ -15,16 +15,16 @@ class GoogleChat extends NotificationProvider { let textMsg = '' if (heartbeatJSON && heartbeatJSON.status === UP) { - textMsg = `✅ Application is back online`; - } else { - textMsg = `🔴 Application went down`; + textMsg = `✅ Application is back online\n`; + } else if (heartbeatJSON && heartbeatJSON.status === DOWN) { + textMsg = `🔴 Application went down\n`; } if (monitorJSON && monitorJSON.name) { - textMsg += `\n*${monitorJSON.name}*`; + textMsg += `*${monitorJSON.name}*\n`; } - textMsg += `\n${msg}`; + textMsg += `${msg}`; const baseURL = await setting("primaryBaseURL"); if (baseURL) { From a42932a43efd66b347c9493c3ebbba7dff07aada Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Thu, 16 Dec 2021 15:09:10 +0800 Subject: [PATCH 180/282] Simulate Chrome's request Accept header. Better handling of #1067 --- server/model/monitor.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/model/monitor.js b/server/model/monitor.js index 6aa614b7..c4441d63 100644 --- a/server/model/monitor.js +++ b/server/model/monitor.js @@ -168,7 +168,7 @@ class Monitor extends BeanModel { ...(this.body ? { data: JSON.parse(this.body) } : {}), timeout: this.interval * 1000 * 0.8, headers: { - "Accept": "*/*", + "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", "User-Agent": "Uptime-Kuma/" + version, ...(this.headers ? JSON.parse(this.headers) : {}), ...(basicAuthHeader), From 0de7fb69f67d295fb28e43edbe540812c5a03b26 Mon Sep 17 00:00:00 2001 From: MrEddX <66828538+MrEddX@users.noreply.github.com> Date: Fri, 17 Dec 2021 12:29:53 +0200 Subject: [PATCH 181/282] Update bg-BG.js Added new fields. Translated new fields. --- src/languages/bg-BG.js | 43 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/src/languages/bg-BG.js b/src/languages/bg-BG.js index 3ae95b36..180b766d 100644 --- a/src/languages/bg-BG.js +++ b/src/languages/bg-BG.js @@ -308,4 +308,47 @@ export default { "Current User": "Текущ потребител", recent: "Скорошни", shrinkDatabaseDescription: "Инициира \"VACUUM\" за \"SQLite\" база данни. Ако Вашата база данни е създадена след версия 1.10.0, \"AUTO_VACUUM\" функцията е активна и това действие не нужно.", + Done: "Готово", + Info: "Информация", + Security: "Сигурност", + "Steam API Key": "Steam API ключ", + "Shrink Database": "Редуциране база данни", + "Pick a RR-Type...": "Изберете вида на ресурсния запис за мониторитане...", + "Pick Accepted Status Codes...": "Изберете статус кодове, които да се считат за успешен отговор...", + Default: "По подразбиране", + "HTTP Options": "HTTP Опции", + "Create Incident": "Създаване на инцидент", + Title: "Заглавие", + Content: "Съдържание", + Style: "Стил", + info: "информация", + warning: "предупреждение", + danger: "опасност", + primary: "основен", + light: "светъл", + dark: "тъмен", + Post: "Публикувай", + "Please input title and content": "Моля, въведете заглавие и съдържание", + Created: "Създаден", + "Last Updated": "Последно обновен", + Unpin: "Откачи", + "Switch to Light Theme": "Превключи към светла тема", + "Switch to Dark Theme": "Превключи към тъмна тема", + "Show Tags": "Покажи етикети", + "Hide Tags": "Скрий етикети", + Description: "Описание", + "No monitors available.": "Няма налични монитори.", + "Add one": "Добави един", + "No Monitors": "Няма монитори", + "Untitled Group": "Група без заглавие", + Services: "Услуги", + Discard: "Премахни", + Cancel: "Отмени", + "Powered by": "Създадено чрез", + serwersms: "SerwerSMS.pl", + serwersmsAPIUser: "API Потребителско име (вкл. webapi_ prefix)", + serwersmsAPIPassword: "API Парола", + serwersmsPhoneNumber: "Телефон номер", + serwersmsSenderName: "SMS Подател име (регистриран през клиентския портал)", + stackfield: "Stackfield", }; From 624cd862a5e38980cfce5b25b78acc0451ea45dc Mon Sep 17 00:00:00 2001 From: Nelson Chan <chakflying@hotmail.com> Date: Sun, 19 Dec 2021 13:30:53 +0800 Subject: [PATCH 182/282] Feat: Expose SMTP DKIM settings --- server/notification-providers/smtp.js | 8 ++ src/assets/app.scss | 14 +++ src/components/ToggleSection.vue | 67 +++++++++++ src/components/notifications/SMTP.vue | 157 ++++++++++++++++---------- src/icon.js | 2 + src/languages/en.js | 10 +- 6 files changed, 196 insertions(+), 62 deletions(-) create mode 100644 src/components/ToggleSection.vue diff --git a/server/notification-providers/smtp.js b/server/notification-providers/smtp.js index 14429bca..1be68aea 100644 --- a/server/notification-providers/smtp.js +++ b/server/notification-providers/smtp.js @@ -15,6 +15,14 @@ class SMTP extends NotificationProvider { tls: { rejectUnauthorized: notification.smtpIgnoreTLSError || false, }, + dkim: { + domainName: notification.smtpDkimDomain, + keySelector: notification.smtpDkimKeySelector, + privateKey: notification.smtpDkimPrivateKey, + hashAlgo: notification.smtpDkimHashAlgo, + headerFieldNames: notification.smtpDkimheaderFieldNames, + skipFields: notification.smtpDkimskipFields, + } }; // Should fix the issue in https://github.com/louislam/uptime-kuma/issues/26#issuecomment-896373904 diff --git a/src/assets/app.scss b/src/assets/app.scss index 5578946b..cec64467 100644 --- a/src/assets/app.scss +++ b/src/assets/app.scss @@ -313,6 +313,20 @@ textarea.form-control { opacity: 0; } +.slide-fade-up-enter-active { + transition: all 0.2s $easing-in; +} + +.slide-fade-up-leave-active { + transition: all 0.2s $easing-in; +} + +.slide-fade-up-enter-from, +.slide-fade-up-leave-to { + transform: translateY(-50px); + opacity: 0; +} + .monitor-list { &.scrollbar { min-height: calc(100vh - 240px); diff --git a/src/components/ToggleSection.vue b/src/components/ToggleSection.vue new file mode 100644 index 00000000..bc6028d7 --- /dev/null +++ b/src/components/ToggleSection.vue @@ -0,0 +1,67 @@ +<template> + <div class="my-3 py-3"> + <h5 @click="isOpen = !isOpen"> + <div + class=" + w-50 + d-flex + justify-content-between + align-items-center + pe-2 + " + > + <span class="pb-2">{{ heading }}</span> + <font-awesome-icon + icon="chevron-down" + class="animated" + :class="{ open: isOpen }" + /> + </div> + </h5> + <transition name="slide-fade-up"> + <div v-if="isOpen" class="mt-3"> + <slot></slot> + </div> + </transition> + </div> +</template> + +<script> +export default { + props: { + heading: { + type: String, + default: "", + }, + defaultOpen: { + type: Boolean, + default: false, + }, + }, + data() { + return { + isOpen: this.defaultOpen, + }; + }, +}; +</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; +} + +.open { + transform: rotate(180deg); +} + +.animated { + transition: all 0.2s $easing-in; +} +</style> diff --git a/src/components/notifications/SMTP.vue b/src/components/notifications/SMTP.vue index ab660abe..899f8f9b 100644 --- a/src/components/notifications/SMTP.vue +++ b/src/components/notifications/SMTP.vue @@ -1,82 +1,117 @@ <template> - <div class="mb-3"> - <label for="hostname" class="form-label">{{ $t("Hostname") }}</label> - <input id="hostname" v-model="$parent.notification.smtpHost" type="text" class="form-control" required> - </div> - - <div class="mb-3"> - <label for="port" class="form-label">{{ $t("Port") }}</label> - <input id="port" v-model="$parent.notification.smtpPort" type="number" class="form-control" required min="0" max="65535" step="1"> - </div> - - <div class="mb-3"> - <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> - </select> - </div> - - <div class="mb-3"> - <div class="form-check"> - <input id="ignore-tls-error" v-model="$parent.notification.smtpIgnoreTLSError" class="form-check-input" type="checkbox" value=""> - <label class="form-check-label" for="ignore-tls-error"> - {{ $t("Ignore TLS Error") }} - </label> + <div> + <div class="mb-3"> + <label for="hostname" class="form-label">{{ $t("Hostname") }}</label> + <input id="hostname" v-model="$parent.notification.smtpHost" type="text" class="form-control" required> </div> - </div> - <div class="mb-3"> - <label for="username" class="form-label">{{ $t("Username") }}</label> - <input id="username" v-model="$parent.notification.smtpUsername" type="text" class="form-control" autocomplete="false"> - </div> - - <div class="mb-3"> - <label for="password" class="form-label">{{ $t("Password") }}</label> - <HiddenInput id="password" v-model="$parent.notification.smtpPassword" :required="false" autocomplete="one-time-code"></HiddenInput> - </div> - - <div class="mb-3"> - <label for="from-email" class="form-label">{{ $t("From Email") }}</label> - <input id="from-email" v-model="$parent.notification.smtpFrom" type="text" class="form-control" required autocomplete="false" placeholder=""Uptime Kuma" <example@kuma.pet>"> - <div class="form-text"> + <div class="mb-3"> + <label for="port" class="form-label">{{ $t("Port") }}</label> + <input id="port" v-model="$parent.notification.smtpPort" type="number" class="form-control" required min="0" max="65535" step="1"> </div> - </div> - <div class="mb-3"> - <label for="to-email" class="form-label">{{ $t("To Email") }}</label> - <input id="to-email" v-model="$parent.notification.smtpTo" type="text" class="form-control" autocomplete="false" placeholder="example2@kuma.pet, example3@kuma.pet" :required="!hasRecipient"> - </div> + <div class="mb-3"> + <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> + </select> + </div> - <div class="mb-3"> - <label for="to-cc" class="form-label">{{ $t("smtpCC") }}</label> - <input id="to-cc" v-model="$parent.notification.smtpCC" type="text" class="form-control" autocomplete="false" :required="!hasRecipient"> - </div> + <div class="mb-3"> + <div class="form-check"> + <input id="ignore-tls-error" v-model="$parent.notification.smtpIgnoreTLSError" class="form-check-input" type="checkbox" value=""> + <label class="form-check-label" for="ignore-tls-error"> + {{ $t("Ignore TLS Error") }} + </label> + </div> + </div> - <div class="mb-3"> - <label for="to-bcc" class="form-label">{{ $t("smtpBCC") }}</label> - <input id="to-bcc" v-model="$parent.notification.smtpBCC" type="text" class="form-control" autocomplete="false" :required="!hasRecipient"> - </div> + <div class="mb-3"> + <label for="username" class="form-label">{{ $t("Username") }}</label> + <input id="username" v-model="$parent.notification.smtpUsername" type="text" class="form-control" autocomplete="false"> + </div> - <div class="mb-3"> - <label for="subject-email" class="form-label">{{ $t("emailCustomSubject") }}</label> - <input id="subject-email" v-model="$parent.notification.customSubject" type="text" class="form-control" autocomplete="false" placeholder=""> - <div v-pre class="form-text"> - (leave blank for default one)<br /> - {{NAME}}: Service Name<br /> - {{HOSTNAME_OR_URL}}: Hostname or URL<br /> - {{URL}}: URL<br /> - {{STATUS}}: Status<br /> + <div class="mb-3"> + <label for="password" class="form-label">{{ $t("Password") }}</label> + <HiddenInput id="password" v-model="$parent.notification.smtpPassword" :required="false" autocomplete="one-time-code"></HiddenInput> + </div> + + <div class="mb-3"> + <label for="from-email" class="form-label">{{ $t("From Email") }}</label> + <input id="from-email" v-model="$parent.notification.smtpFrom" type="text" class="form-control" required autocomplete="false" placeholder=""Uptime Kuma" <example@kuma.pet>"> + <div class="form-text"> + </div> + </div> + + <div class="mb-3"> + <label for="to-email" class="form-label">{{ $t("To Email") }}</label> + <input id="to-email" v-model="$parent.notification.smtpTo" type="text" class="form-control" autocomplete="false" placeholder="example2@kuma.pet, example3@kuma.pet" :required="!hasRecipient"> + </div> + + <div class="mb-3"> + <label for="to-cc" class="form-label">{{ $t("smtpCC") }}</label> + <input id="to-cc" v-model="$parent.notification.smtpCC" type="text" class="form-control" autocomplete="false" :required="!hasRecipient"> + </div> + + <div class="mb-3"> + <label for="to-bcc" class="form-label">{{ $t("smtpBCC") }}</label> + <input id="to-bcc" v-model="$parent.notification.smtpBCC" type="text" class="form-control" autocomplete="false" :required="!hasRecipient"> + </div> + + <ToggleSection :heading="$t('smtpDkimSettings')"> + <i18n-t tag="div" keypath="smtpDkimDesc" class="form-text mb-3"> + <a href="https://nodemailer.com/dkim/" target="_blank">{{ $t("documentation") }}</a> + </i18n-t> + + <div class="mb-3"> + <label for="dkim-domain" class="form-label">{{ $t("smtpDkimDomain") }}</label> + <input id="dkim-domain" v-model="$parent.notification.smtpDkimDomain" type="text" class="form-control" autocomplete="false" placeholder="example.com"> + </div> + <div class="mb-3"> + <label for="dkim-key-selector" class="form-label">{{ $t("smtpDkimKeySelector") }}</label> + <input id="dkim-key-selector" v-model="$parent.notification.smtpDkimKeySelector" type="text" class="form-control" autocomplete="false" placeholder="2017"> + </div> + <div class="mb-3"> + <label for="dkim-private-key" class="form-label">{{ $t("smtpDkimPrivateKey") }}</label> + <textarea id="dkim-private-key" v-model="$parent.notification.smtpDkimPrivateKey" rows="5" type="text" class="form-control" autocomplete="false" placeholder="-----BEGIN PRIVATE KEY-----"></textarea> + </div> + <div class="mb-3"> + <label for="dkim-hash-algo" class="form-label">{{ $t("smtpDkimHashAlgo") }}</label> + <input id="dkim-hash-algo" v-model="$parent.notification.smtpDkimHashAlgo" type="text" class="form-control" autocomplete="false" placeholder="sha256"> + </div> + <div class="mb-3"> + <label for="dkim-header-fields" class="form-label">{{ $t("smtpDkimheaderFieldNames") }}</label> + <input id="dkim-header-fields" v-model="$parent.notification.smtpDkimheaderFieldNames" type="text" class="form-control" autocomplete="false" placeholder="message-id:date:from:to"> + </div> + <div class="mb-3"> + <label for="dkim-skip-fields" class="form-label">{{ $t("smtpDkimskipFields") }}</label> + <input id="dkim-skip-fields" v-model="$parent.notification.smtpDkimskipFields" type="text" class="form-control" autocomplete="false" placeholder="message-id:date"> + </div> + </ToggleSection> + + <div class="mb-3"> + <label for="subject-email" class="form-label">{{ $t("emailCustomSubject") }}</label> + <input id="subject-email" v-model="$parent.notification.customSubject" type="text" class="form-control" autocomplete="false" placeholder=""> + <div v-pre class="form-text"> + (leave blank for default one)<br /> + {{NAME}}: Service Name<br /> + {{HOSTNAME_OR_URL}}: Hostname or URL<br /> + {{URL}}: URL<br /> + {{STATUS}}: Status<br /> + </div> </div> </div> </template> <script> import HiddenInput from "../HiddenInput.vue"; +import ToggleSection from "../ToggleSection.vue"; export default { components: { HiddenInput, + ToggleSection, }, computed: { hasRecipient() { diff --git a/src/icon.js b/src/icon.js index e78992f2..88b8a8ec 100644 --- a/src/icon.js +++ b/src/icon.js @@ -33,6 +33,7 @@ import { faFile, faAward, faLink, + faChevronDown, } from "@fortawesome/free-solid-svg-icons"; library.add( @@ -65,6 +66,7 @@ library.add( faFile, faAward, faLink, + faChevronDown, ); export { FontAwesomeIcon }; diff --git a/src/languages/en.js b/src/languages/en.js index fee80a76..80caba9a 100644 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -339,7 +339,6 @@ 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", @@ -352,4 +351,13 @@ export default { serwersmsPhoneNumber: "Phone number", serwersmsSenderName: "SMS Sender Name (registered via customer portal)", "stackfield": "Stackfield", + smtpDkimSettings: "DKIM Settings", + smtpDkimDesc: "Please refer to the Nodemailer DKIM {0} for usage.", + documentation: "documentation", + smtpDkimDomain: "Domain Name", + smtpDkimKeySelector: "Key Selector", + smtpDkimPrivateKey: "Private Key", + smtpDkimHashAlgo: "Hash Algorithm (Optional)", + smtpDkimheaderFieldNames: "Header Keys to sign (Optional)", + smtpDkimskipFields: "Header Keys not to sign (Optional)", }; From 7cfc5c64b7f52aaa8360a061dfb274f20814afcc Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Wed, 22 Dec 2021 13:49:57 +0800 Subject: [PATCH 183/282] Missing a full stop --- extra/close-incorrect-issue.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extra/close-incorrect-issue.js b/extra/close-incorrect-issue.js index be4ed808..a15a5da3 100644 --- a/extra/close-incorrect-issue.js +++ b/extra/close-incorrect-issue.js @@ -37,7 +37,7 @@ const github = require("@actions/github"); owner: issue.owner, repo: issue.repo, issue_number: issue.number, - body: `@${username}: Hello! :wave:\n\nThis issue is being automatically closed because it does not follow the issue template. Please DO NOT open a blank issue` + body: `@${username}: Hello! :wave:\n\nThis issue is being automatically closed because it does not follow the issue template. Please DO NOT open a blank issue.` }); // Close the issue From a2bc74c4fd1465f0308d593f893e3e39850c45a1 Mon Sep 17 00:00:00 2001 From: Ioma Taani <iomataani@users.noreply.github.com> Date: Fri, 24 Dec 2021 12:02:50 +0100 Subject: [PATCH 184/282] updated --- src/languages/it-IT.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/languages/it-IT.js b/src/languages/it-IT.js index 5a38a5aa..9aff1de0 100644 --- a/src/languages/it-IT.js +++ b/src/languages/it-IT.js @@ -351,4 +351,13 @@ export default { serwersmsPhoneNumber: "Numero di Telefono", serwersmsSenderName: "Nome del mittente SMS (registrato via portale cliente)", stackfield: "Stackfield", + smtpDkimSettings: "Impostazioni DKIM", + smtpDkimDesc: "Fare riferimento a Nodemailer DKIM {0} per l'utilizzo.", + documentation: "documentazione", + smtpDkimDomain: "Dominio", + smtpDkimKeySelector: "Selettore Chiave", + smtpDkimPrivateKey: "Chiave Privata", + smtpDkimHashAlgo: "Algoritmo di hashing (opzionale)", + smtpDkimheaderFieldNames: "Campi Intestazione da firmare (opzionale)", + smtpDkimskipFields: "Campi Intestazione da non firmare (opzionale)", }; From 40b70277c7a26ac64b880e5595f5ab69d55575d9 Mon Sep 17 00:00:00 2001 From: LeslieLeung <lesily9@gmail.com> Date: Sun, 26 Dec 2021 01:33:47 +0800 Subject: [PATCH 185/282] feat(*): support WeCom notification --- server/notification-providers/wecom.js | 47 ++++++++++++++++++++++++++ server/notification.js | 2 ++ src/components/notifications/WeCom.vue | 12 +++++++ src/components/notifications/index.js | 2 ++ 4 files changed, 63 insertions(+) create mode 100644 server/notification-providers/wecom.js create mode 100644 src/components/notifications/WeCom.vue diff --git a/server/notification-providers/wecom.js b/server/notification-providers/wecom.js new file mode 100644 index 00000000..7ba8c378 --- /dev/null +++ b/server/notification-providers/wecom.js @@ -0,0 +1,47 @@ +const NotificationProvider = require("./notification-provider"); +const axios = require("axios"); +const { DOWN, UP } = require("../../src/util"); + +class WeCom extends NotificationProvider { + + name = "WeCom"; + + async send(notification, msg, monitorJSON = null, heartbeatJSON = null) { + let okMsg = "Sent Successfully."; + + try { + let WeComUrl = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=" + notification.weComBotKey; + let config = { + headers: { + "Content-Type": "application/json" + } + }; + let body = this.composeMessage(heartbeatJSON, msg); + await axios.post(WeComUrl, body, config); + return okMsg; + } catch (error) { + this.throwGeneralAxiosError(error); + } + } + + composeMessage(heartbeatJSON, msg) { + let title; + if (msg != null && heartbeatJSON != null && heartbeatJSON['status'] == UP) { + title = "UptimeKuma Monitor Up"; + } + if (msg != null && heartbeatJSON != null && heartbeatJSON["status"] == DOWN) { + title = "UptimeKuma Monitor Down"; + } + if (msg != null) { + title = "UptimeKuma Message"; + } + return { + msgtype: "text", + text: { + content: title + msg + } + }; + } +} + +module.exports = WeCom; diff --git a/server/notification.js b/server/notification.js index 3eb5f97b..868e11fa 100644 --- a/server/notification.js +++ b/server/notification.js @@ -25,6 +25,7 @@ const DingDing = require("./notification-providers/dingding"); const Bark = require("./notification-providers/bark"); const SerwerSMS = require("./notification-providers/serwersms"); const Stackfield = require("./notification-providers/stackfield"); +const WeCom = require("./notification-providers/wecom"); class Notification { @@ -62,6 +63,7 @@ class Notification { new Bark(), new SerwerSMS(), new Stackfield(), + new WeCom(), ]; for (let item of list) { diff --git a/src/components/notifications/WeCom.vue b/src/components/notifications/WeCom.vue new file mode 100644 index 00000000..cef3708d --- /dev/null +++ b/src/components/notifications/WeCom.vue @@ -0,0 +1,12 @@ +<template> + <div class="mb-3"> + <label for="WeCom Bot Key" class="form-label">{{ $t("WeCom Bot Key") }}<span style="color: red;"><sup>*</sup></span></label> + <input id="WeCom Bot Key" v-model="$parent.notification.weComBotKey" type="text" class="form-control" required> + <div class="form-text"> + <p><span style="color: red;"><sup>*</sup></span>{{ $t("Required") }}</p> + </div> + <i18n-t tag="p" keypath="Read more:"> + <a href="https://work.weixin.qq.com/api/doc/90000/90136/91770" target="_blank">https://work.weixin.qq.com/api/doc/90000/90136/91770</a> + </i18n-t> + </div> +</template> diff --git a/src/components/notifications/index.js b/src/components/notifications/index.js index 155a1ab2..15cc09c7 100644 --- a/src/components/notifications/index.js +++ b/src/components/notifications/index.js @@ -24,6 +24,7 @@ import DingDing from "./DingDing.vue"; import Bark from "./Bark.vue"; import SerwerSMS from "./SerwerSMS.vue"; import Stackfield from './Stackfield.vue'; +import WeCom from "./WeCom.vue"; /** * Manage all notification form. @@ -57,6 +58,7 @@ const NotificationFormList = { "Bark": Bark, "serwersms": SerwerSMS, "stackfield": Stackfield, + "WeCom": WeCom, } export default NotificationFormList From 4005856ba662a825f5a069e35c5a00da49fe2671 Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Mon, 27 Dec 2021 19:09:51 +0800 Subject: [PATCH 186/282] run build dist when building docker image --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 32c51176..ad6436ec 100644 --- a/package.json +++ b/package.json @@ -27,12 +27,12 @@ "jest-backend": "cross-env TEST_BACKEND=1 jest --config=./config/jest-backend.config.js", "tsc": "tsc", "vite-preview-dist": "vite preview --host --config ./config/vite.config.js", - "build-docker": "npm run build-docker-debian && npm run build-docker-alpine", + "build-docker": "npm run build && 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.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": "npm run build && 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", From f6fc3737fcb7d27582bd0dde6732157efc43138f Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Thu, 30 Dec 2021 00:10:54 +0800 Subject: [PATCH 187/282] Change name from "Google Chat" to Google Chat (Google Workspace only) --- src/components/notifications/index.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/components/notifications/index.js b/src/components/notifications/index.js index 67810610..9d870f91 100644 --- a/src/components/notifications/index.js +++ b/src/components/notifications/index.js @@ -1,4 +1,4 @@ -import STMP from "./SMTP.vue" +import STMP from "./SMTP.vue"; import Telegram from "./Telegram.vue"; import Discord from "./Discord.vue"; import Webhook from "./Webhook.vue"; @@ -23,8 +23,8 @@ 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'; -import GoogleChat from './GoogleChat.vue'; +import Stackfield from "./Stackfield.vue"; +import GoogleChat from "./GoogleChat.vue"; /** * Manage all notification form. @@ -58,7 +58,7 @@ const NotificationFormList = { "Bark": Bark, "serwersms": SerwerSMS, "stackfield": Stackfield, - "Google Chat": GoogleChat -} + "Google Chat (Google Workspace only)": GoogleChat +}; -export default NotificationFormList +export default NotificationFormList; From d7cb4fa331260514f5d1fddab242bfb0623bc9e5 Mon Sep 17 00:00:00 2001 From: MrEddX <66828538+MrEddX@users.noreply.github.com> Date: Thu, 30 Dec 2021 08:12:25 +0200 Subject: [PATCH 188/282] Update bg-BG.js - Updated Bulgarian language file --- src/languages/bg-BG.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/languages/bg-BG.js b/src/languages/bg-BG.js index 180b766d..a731ad09 100644 --- a/src/languages/bg-BG.js +++ b/src/languages/bg-BG.js @@ -200,7 +200,7 @@ export default { "Primary Base URL": "Основен базов URL адрес", "Push URL": "Генериран Push URL адрес", needPushEvery: "Необходимо е да извършвате заявка към този URL адрес на всеки {0} секунди", - pushOptionalParams: "Допълнителни, но незадължителни параметри: {0}", + pushOptionalParams: "Допълнителни, но не задължителни параметри: {0}", defaultNotificationName: "Моето {notification} известяване ({number})", here: "тук", Required: "Задължително поле", @@ -351,4 +351,13 @@ export default { serwersmsPhoneNumber: "Телефон номер", serwersmsSenderName: "SMS Подател име (регистриран през клиентския портал)", stackfield: "Stackfield", + smtpDkimSettings: "DKIM Настройки", + smtpDkimDesc: "Моля, вижте Nodemailer DKIM {0} за инструкции.", + documentation: "документация", + smtpDkimDomain: "Домейн", + smtpDkimKeySelector: "Селектор на ключ", + smtpDkimPrivateKey: "Частен ключ", + smtpDkimHashAlgo: "Хеш алгоритъм (по желание)", + smtpDkimheaderFieldNames: "Хедър ключове за подписване (по желание)", + smtpDkimskipFields: "Хедър ключове, които да не се подписеат (по желание)", }; From 4b07ec23fec01f679f302cfea3d84201cdcdc56e Mon Sep 17 00:00:00 2001 From: Minvinea <29579830+Minvinea@users.noreply.github.com> Date: Mon, 3 Jan 2022 00:27:51 +0100 Subject: [PATCH 189/282] Update --- src/languages/fr-FR.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/languages/fr-FR.js b/src/languages/fr-FR.js index bf98dd8d..04dede1b 100644 --- a/src/languages/fr-FR.js +++ b/src/languages/fr-FR.js @@ -207,7 +207,7 @@ export default { "Discord Webhook URL": "Discord Webhook URL", wayToGetDiscordURL: "Vous pouvez l'obtenir en allant dans 'Paramètres du Serveur' -> 'Intégrations' -> 'Créer un Webhook'", "Bot Display Name": "Nom du bot (affiché)", - "Prefix Custom Message": "Prefix Custom Message", + "Prefix Custom Message": "Prefixe du message personnalisé", "Hello @everyone is...": "Bonjour {'@'}everyone il...", teams: "Microsoft Teams", "Webhook URL": "Webhook URL", @@ -229,7 +229,7 @@ export default { 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}", + emojiCheatSheet: "Aide emoji : {0}", "rocket.chat": "Rocket.chat", pushover: "Pushover", pushy: "Pushy", @@ -262,9 +262,9 @@ export default { 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", - lineDevConsoleTo: "Line Developers Console - {0}", + "Channel access token": "Token d'accès au canal", + "Line Developers Console": "Ligne console de développeurs", + lineDevConsoleTo: "Ligne console de développeurs - {0}", "Basic Settings": "Paramètres de base", "User ID": "Identifiant utilisateur", "Messaging API": "Messaging API", From 69dfc0c0d2112216ad9421e6c29c52e7d9b7ca4b Mon Sep 17 00:00:00 2001 From: MrEddX <66828538+MrEddX@users.noreply.github.com> Date: Wed, 5 Jan 2022 08:15:34 +0200 Subject: [PATCH 190/282] Update bg-BG.js Fixed some typos. --- src/languages/bg-BG.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/languages/bg-BG.js b/src/languages/bg-BG.js index a731ad09..e73abf84 100644 --- a/src/languages/bg-BG.js +++ b/src/languages/bg-BG.js @@ -131,8 +131,8 @@ export default { Events: "Събития", Heartbeats: "Проверки", "Auto Get": "Авт. попълване", - backupDescription: "Можете да архивирате всички монитори и всички известия в JSON файл.", - backupDescription2: "PS: Данни за история и събития не са включени.", + backupDescription: "Можете да архивирате всички монитори и всички известявания в JSON файл.", + backupDescription2: "PS: Имайте предвид, че данните за история и събития няма да бъдат включени.", backupDescription3: "Чувствителни данни, като токен кодове за известяване, се съдържат в експортирания файл. Моля, бъдете внимателни с неговото съхранение.", alertNoFile: "Моля, изберете файл за импортиране.", alertWrongFileType: "Моля, изберете JSON файл.", @@ -359,5 +359,5 @@ export default { smtpDkimPrivateKey: "Частен ключ", smtpDkimHashAlgo: "Хеш алгоритъм (по желание)", smtpDkimheaderFieldNames: "Хедър ключове за подписване (по желание)", - smtpDkimskipFields: "Хедър ключове, които да не се подписеат (по желание)", + smtpDkimskipFields: "Хедър ключове, които да не се подписват (по желание)", }; From 8f3ec3359110534cc0950e14ed04091a92e5ca63 Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Wed, 5 Jan 2022 16:40:50 +0800 Subject: [PATCH 191/282] update to 1.11.2 --- package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index ad6436ec..4cf0c03f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "uptime-kuma", - "version": "1.11.1", + "version": "1.11.2", "license": "MIT", "repository": { "type": "git", @@ -30,13 +30,13 @@ "build-docker": "npm run build && 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.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-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.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.11.2 -t louislam/uptime-kuma:debian -t louislam/uptime-kuma:1-debian -t louislam/uptime-kuma:1.11.2-debian --target release . --push", "build-docker-nightly": "npm run build && 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.1 && npm ci --production && npm run download-dist", + "setup": "git checkout 1.11.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 f8c5015e3f32a288b6a1a4b3f0be5712fd555e60 Mon Sep 17 00:00:00 2001 From: Philipp Bischoff <p.bischoff@innoloft.com> Date: Wed, 5 Jan 2022 23:44:14 +0100 Subject: [PATCH 192/282] fix google chat type mismatch --- server/notification-providers/google-chat.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/notification-providers/google-chat.js b/server/notification-providers/google-chat.js index 1610553c..04c92623 100644 --- a/server/notification-providers/google-chat.js +++ b/server/notification-providers/google-chat.js @@ -6,7 +6,7 @@ const { DOWN, UP } = require("../../src/util"); class GoogleChat extends NotificationProvider { - name = "Google Chat"; + name = "Google Chat (Google Workspace only)"; async send(notification, msg, monitorJSON = null, heartbeatJSON = null) { let okMsg = "Sent Successfully."; From bcc3cec7d6ad12208e09a6686c1c960d16ad4204 Mon Sep 17 00:00:00 2001 From: Philipp Bischoff <p.bischoff@innoloft.com> Date: Wed, 5 Jan 2022 23:57:40 +0100 Subject: [PATCH 193/282] extract translation for notification type --- server/notification-providers/google-chat.js | 2 +- src/components/notifications/index.js | 2 +- src/languages/de-DE.js | 1 + src/languages/en.js | 1 + 4 files changed, 4 insertions(+), 2 deletions(-) diff --git a/server/notification-providers/google-chat.js b/server/notification-providers/google-chat.js index 04c92623..2dcd6e20 100644 --- a/server/notification-providers/google-chat.js +++ b/server/notification-providers/google-chat.js @@ -6,7 +6,7 @@ const { DOWN, UP } = require("../../src/util"); class GoogleChat extends NotificationProvider { - name = "Google Chat (Google Workspace only)"; + name = "GoogleChat"; async send(notification, msg, monitorJSON = null, heartbeatJSON = null) { let okMsg = "Sent Successfully."; diff --git a/src/components/notifications/index.js b/src/components/notifications/index.js index be73d9ef..03945f90 100644 --- a/src/components/notifications/index.js +++ b/src/components/notifications/index.js @@ -60,7 +60,7 @@ const NotificationFormList = { "serwersms": SerwerSMS, "stackfield": Stackfield, "WeCom": WeCom, - "Google Chat (Google Workspace only)": GoogleChat + "GoogleChat": GoogleChat }; export default NotificationFormList; diff --git a/src/languages/de-DE.js b/src/languages/de-DE.js index 6c2dd1f1..48cdd2e3 100644 --- a/src/languages/de-DE.js +++ b/src/languages/de-DE.js @@ -194,6 +194,7 @@ export default { promosms: "PromoSMS", lunasea: "LunaSea", apprise: "Apprise (Unterstützung für 50+ Benachrichtigungsdienste)", + GoogleChat: "Google Chat (nur Google Workspace)", pushbullet: "Pushbullet", line: "Line Messenger", mattermost: "Mattermost", diff --git a/src/languages/en.js b/src/languages/en.js index 80caba9a..47513466 100644 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -243,6 +243,7 @@ export default { clicksendsms: "ClickSend SMS", lunasea: "LunaSea", apprise: "Apprise (Support 50+ Notification services)", + GoogleChat: "Google Chat (Google Workspace only)", pushbullet: "Pushbullet", line: "Line Messenger", mattermost: "Mattermost", From 64b3e04d3f8dbf65e25e94da960ab76c91a40336 Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Thu, 6 Jan 2022 14:34:45 +0800 Subject: [PATCH 194/282] Fix #1129 --- server/notification-providers/smtp.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/server/notification-providers/smtp.js b/server/notification-providers/smtp.js index 1be68aea..d85ee88c 100644 --- a/server/notification-providers/smtp.js +++ b/server/notification-providers/smtp.js @@ -14,16 +14,20 @@ class SMTP extends NotificationProvider { secure: notification.smtpSecure, tls: { rejectUnauthorized: notification.smtpIgnoreTLSError || false, - }, - dkim: { + } + }; + + // Fix #1129 + if (notification.smtpDkimDomain) { + config.dkim = { domainName: notification.smtpDkimDomain, keySelector: notification.smtpDkimKeySelector, privateKey: notification.smtpDkimPrivateKey, hashAlgo: notification.smtpDkimHashAlgo, headerFieldNames: notification.smtpDkimheaderFieldNames, skipFields: notification.smtpDkimskipFields, - } - }; + }; + } // Should fix the issue in https://github.com/louislam/uptime-kuma/issues/26#issuecomment-896373904 if (notification.smtpUsername || notification.smtpPassword) { From ec5037f30d01f57ea9e0d0f38db68f0b53f879ca Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Thu, 6 Jan 2022 14:51:20 +0800 Subject: [PATCH 195/282] update to 1.11.3 --- package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 4cf0c03f..d101ef5d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "uptime-kuma", - "version": "1.11.2", + "version": "1.11.3", "license": "MIT", "repository": { "type": "git", @@ -30,13 +30,13 @@ "build-docker": "npm run build && 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.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.11.2 -t louislam/uptime-kuma:debian -t louislam/uptime-kuma:1-debian -t louislam/uptime-kuma:1.11.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.3-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.3 -t louislam/uptime-kuma:debian -t louislam/uptime-kuma:1-debian -t louislam/uptime-kuma:1.11.3-debian --target release . --push", "build-docker-nightly": "npm run build && 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.2 && npm ci --production && npm run download-dist", + "setup": "git checkout 1.11.3 && 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 46fa6a56fa79c3ce793dcb73cd73b8be8fdfb0db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=89VEIL?= <thomasleveil@users.noreply.github.com> Date: Thu, 6 Jan 2022 08:48:12 +0100 Subject: [PATCH 196/282] fix `TypeError: Cannot read property 'id' of null` when testing a Google Chat notification see https://github.com/louislam/uptime-kuma/issues/1126#issuecomment-1006343423 --- server/notification-providers/google-chat.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/notification-providers/google-chat.js b/server/notification-providers/google-chat.js index 2dcd6e20..6fb32428 100644 --- a/server/notification-providers/google-chat.js +++ b/server/notification-providers/google-chat.js @@ -27,7 +27,7 @@ class GoogleChat extends NotificationProvider { textMsg += `${msg}`; const baseURL = await setting("primaryBaseURL"); - if (baseURL) { + if (baseURL && monitorJSON) { textMsg += `\n${baseURL + getMonitorRelativeURL(monitorJSON.id)}`; } From 2304c53c8d4801076c341455437a8ecf7a77b755 Mon Sep 17 00:00:00 2001 From: Matteo D <alex3025game@gmail.com> Date: Sat, 8 Jan 2022 13:28:48 +0100 Subject: [PATCH 197/282] Fixed some translations And made them more user-friendly. --- src/components/settings/Security.vue | 6 +- src/languages/it-IT.js | 155 ++++++++++++++------------- 2 files changed, 81 insertions(+), 80 deletions(-) diff --git a/src/components/settings/Security.vue b/src/components/settings/Security.vue index c94c3915..94c6b5a6 100644 --- a/src/components/settings/Security.vue +++ b/src/components/settings/Security.vue @@ -175,9 +175,9 @@ </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> + <p><strong>Disabilitare l'autenticazione?</strong></p> + <p><strong>Questa opzione è per chi un sistema di autenticazione gestito da terze parti</strong> messo davanti ad Uptime Kuma, ad esempio Cloudflare Access.</p> + <p>Utilizzare con attenzione!</p> </template> <template v-else-if="$i18n.locale === 'id-ID' "> diff --git a/src/languages/it-IT.js b/src/languages/it-IT.js index 9aff1de0..175ade0c 100644 --- a/src/languages/it-IT.js +++ b/src/languages/it-IT.js @@ -2,11 +2,11 @@ export default { languageName: "Italiano (Italian)", checkEverySecond: "controlla ogni {0} secondi", retryCheckEverySecond: "Riprova ogni {0} secondi.", - retriesDescription: "Tentativi da fare prima che il servizio venga marcato come \"giù\" e che una notifica venga inviata.", - ignoreTLSError: "Ignora gli errori TLS/SSL per i siti in HTTPS.", - upsideDownModeDescription: "Capovolgi lo stato. Se il servizio è raggiungibile viene marcato come \"GIÙ\".", - maxRedirectDescription: "Numero massimo di redirezionamenti consentito. Per disabilitare impostare \"0\".", - acceptedStatusCodesDescription: "Inserire i codici di stato considerati come risposte corrette.", + retriesDescription: "Tentativi prima che il servizio venga marcato come \"DOWN\" e che una notifica venga inviata.", + ignoreTLSError: "Ignora gli errori TLS/SSL per i siti HTTPS.", + upsideDownModeDescription: "Se il servizio risulta raggiungibile viene marcato come \"DOWN\".", + maxRedirectDescription: "Numero massimo di redirezionamenti consentito. Per disabilitare, impostare \"0\".", + acceptedStatusCodesDescription: "Elenco di codici di stato HTTP che sono considerati validi.", passwordNotMatchMsg: "La password non coincide.", notificationDescription: "Assegnare la notifica a uno o più oggetti monitorati per metterla in funzione.", keywordDescription: "Cerca la parola chiave nella risposta in html o JSON e fai distinzione tra maiuscole e minuscole", @@ -16,35 +16,35 @@ export default { resoverserverDescription: "Cloudflare è il server predefinito, è possibile cambiare il server DNS.", rrtypeDescription: "Scegliere il tipo di RR che si vuole monitorare", pauseMonitorMsg: "Si è certi di voler mettere in pausa?", - enableDefaultNotificationDescription: "Per ogni nuovo oggetto monitorato questa notifica sarà abilitata di default. È comunque possibile disabilitare la notifica separatamente per ogni oggetto.", + enableDefaultNotificationDescription: "Per ogni nuovo monitor questa notifica sarà abilitata di default. È comunque possibile disabilitare la notifica singolarmente.", clearEventsMsg: "Si è certi di voler eliminare tutti gli eventi per questo servizio?", clearHeartbeatsMsg: "Si è certi di voler eliminare tutti gli intervalli di controllo per questo servizio?", confirmClearStatisticsMsg: "Si è certi di voler eliminare TUTTE le statistiche?", - importHandleDescription: "Selezionare 'Ignora gli esistenti' si vuole ignorare l'importazione degli oggetti monitorati o delle notifiche con lo stesso nome. 'Sovrascrivi' eliminerà ogni oggetto e notifica esistente.", + importHandleDescription: "Selezionare \"Ignora esistenti\" se si vuole ignorare l'importazione dei monitor o delle notifiche con lo stesso nome. \"Sovrascrivi\" rimpiazzerà tutti i monitor e le notifiche presenti con quelli nel backup.", confirmImportMsg: "Si è certi di voler importare il backup? Essere certi di aver selezionato l'opzione corretta di importazione.", - twoFAVerifyLabel: "Scrivi il token per verificare che l'autenticazione a due fattori funzioni", + twoFAVerifyLabel: "Digita il token per verificare che l'autenticazione a due fattori funzioni correttamente:", tokenValidSettingsMsg: "Il token è valido! È ora possibile salvare le impostazioni.", confirmEnableTwoFAMsg: "Si è certi di voler abilitare l'autenticazione a due fattori?", confirmDisableTwoFAMsg: "Si è certi di voler disabilitare l'autenticazione a due fattori?", Settings: "Impostazioni", - Dashboard: "Cruscotto", - "New Update": "Nuovo Aggiornamento Disponibile", + Dashboard: "Dashboard", + "New Update": "Nuovo aggiornamento disponibile!", Language: "Lingua", Appearance: "Aspetto", Theme: "Tema", - General: "Generali", + General: "Generale", "Primary Base URL": "URL base primario", Version: "Versione", "Check Update On GitHub": "Controlla aggiornamenti su GitHub", List: "Lista", Add: "Aggiungi", - "Add New Monitor": "Aggiungi un nuovo oggetto da monitorare", + "Add New Monitor": "Aggiungi nuovo monitor", "Quick Stats": "Statistiche rapide", - Up: "Su", - Down: "Giù", - Pending: "Pendente", + Up: "Up", + Down: "Down", + Pending: "In attesa", Unknown: "Sconosciuti", - Pause: "Metti in Pausa", + Pause: "Metti in pausa", Name: "Nome", Status: "Stato", DateTime: "Data e Ora", @@ -65,15 +65,15 @@ export default { Ping: "Ping", "Monitor Type": "Modalità di monitoraggio", Keyword: "Parola chiave", - "Friendly Name": "Nomignolo", + "Friendly Name": "Nome", URL: "URL", Hostname: "Nome Host", Port: "Porta", "Heartbeat Interval": "Intervallo di controllo", Retries: "Tentativi", - "Heartbeat Retry Interval": "Intervallo tra un tentativo di controllo e l'altro", + "Heartbeat Retry Interval": "Intervallo tra i tentativo di controllo", Advanced: "Avanzate", - "Upside Down Mode": "Modalità capovolta", + "Upside Down Mode": "Modalità invertita", "Max. Redirects": "Reindirizzamenti massimi", "Accepted Status Codes": "Codici di stato accettati", "Push URL": "Push URL", @@ -81,52 +81,52 @@ export default { pushOptionalParams: "Parametri aggiuntivi: {0}", Save: "Salva", Notifications: "Notifiche", - "Not available, please setup.": "Non disponibili, da impostare.", - "Setup Notification": "Imposta le notifiche", + "Not available, please setup.": "Non disponibili, da configurare.", + "Setup Notification": "Configura le notifiche", Light: "Chiaro", Dark: "Scuro", Auto: "Automatico", - "Theme - Heartbeat Bar": "Tema - Barra di Stato", + "Theme - Heartbeat Bar": "Tema (barra di stato)", Normal: "Normale", Bottom: "Sotto", None: "Nessuna", Timezone: "Fuso Orario", "Search Engine Visibility": "Visibilità ai motori di ricerca", - "Allow indexing": "Permetti l'indicizzazione", - "Discourage search engines from indexing site": "Scoraggia l'indicizzazione da parte dei motori di ricerca", - "Change Password": "Cambio Password", - "Current Password": "Password Corrente", - "New Password": "Nuova Password", - "Repeat New Password": "Ripetere la nuova Password", - "Update Password": "Modifica Password", - "Disable Auth": "Disabilita l'autenticazione", - "Enable Auth": "Abilita Autenticazione", + "Allow indexing": "Consenti l'indicizzazione", + "Discourage search engines from indexing site": "Evita l'indicizzazione ai motori di ricerca", + "Change Password": "Cambia password", + "Current Password": "Password corrente", + "New Password": "Nuova password", + "Repeat New Password": "Ripeti nuova password", + "Update Password": "Modifica password", + "Disable Auth": "Disabilita autenticazione", + "Enable Auth": "Abilita autenticazione", Logout: "Esci", Leave: "Annulla", "I understand, please disable": "Lo capisco, disabilitare l'autenticazione.", Confirm: "Conferma", Yes: "Sì", No: "No", - Username: "Nome Utente", + Username: "Nome utente", Password: "Password", - "Remember me": "Ricordami", + "Remember me": "Ricorda credenziali", Login: "Accesso", - "No Monitors, please": "Nessun oggetto monitorato,", - "add one": "aggiungerne uno", - "Notification Type": "Tipo di notifica", + "No Monitors, please": "Nessun monitor presente,", + "add one": "aggiungine uno!", + "Notification Type": "Servizio di notifica", Email: "E-mail", - Test: "Prova", + Test: "Fai una prova", "Certificate Info": "Informazioni sul certificato", "Resolver Server": "Server DNS", "Resource Record Type": "Tipo di Resource Record", "Last Result": "Ultimo risultato", "Create your admin account": "Crea l'account amministratore", - "Repeat Password": "Ripeti Password", - "Import Backup": "Importa Backup", - "Export Backup": "Esporta Backup", + "Repeat Password": "Ripeti password", + "Import Backup": "Importa backup", + "Export Backup": "Esporta backup", Export: "Esporta", Import: "Importa", - respTime: "Tempo di Risposta (ms)", + respTime: "Tempo di risposta (ms)", notAvailableShort: "N/D", "Default enabled": "Abilitato di default", "Apply on all existing monitors": "Applica su tutti i monitoraggi", @@ -136,21 +136,21 @@ export default { Heartbeats: "Controlli", "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.", + backupDescription2: "NOTA: lo storico e i dati relativi agli eventi non saranno inclusi nel backup", + backupDescription3: "Dati sensibili come i token di autenticazione saranno inclusi nel backup, custodisci il file in un luogo sicuro!", alertNoFile: "Selezionare il file da importare.", alertWrongFileType: "Selezionare un file JSON.", - "Clear all statistics": "Pulisci tutte le statistiche", - "Skip existing": "Ignora gli esistenti", + "Clear all statistics": "Cancella tutte le statistiche", + "Skip existing": "Ignora esistenti", Overwrite: "Sovrascrivi", Options: "Opzioni", "Keep both": "Mantieni entrambi", - "Verify Token": "Verifica Token", - "Setup 2FA": "Imposta l'autenticazione a due fattori", - "Enable 2FA": "Abilita l'autenticazione a due fattori", - "Disable 2FA": "Disabilita l'autenticazione a due fattori", - "2FA Settings": "Impostazioni autenticazione a due fattori", - "Two Factor Authentication": "Autenticazione a due fattori", + "Verify Token": "Verifica token", + "Setup 2FA": "Configura 2FA", + "Enable 2FA": "Abilita 2FA", + "Disable 2FA": "Disabilita 2FA", + "2FA Settings": "Gestisci l'autenticazione a due fattori", + "Two Factor Authentication": "Autenticazione a due fattori (2FA)", Active: "Attivata", Inactive: "Disattivata", Token: "Token", @@ -173,31 +173,31 @@ export default { "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 oggetto da monitorare.", - "No Services": "Nessun Servizio", + statusPageNothing: "Non c'è nulla qui, aggiungi un gruppo oppure un monitor.", + "No Services": "Nessun servizio", "All Systems Operational": "Tutti i sistemi sono funzionali", "Partially Degraded Service": "Servizio parzialmente degradato", "Degraded Service": "Servizio degradato", - "Add Group": "Aggiungi Gruppo", - "Add a monitor": "Aggiungi un oggetto", + "Add Group": "Aggiungi gruppo", + "Add a monitor": "Aggiungi monitor", "Edit Status Page": "Modifica pagina di stato", - "Go to Dashboard": "Vai al Cruscotto", + "Go to Dashboard": "Vai alla dashboard", "Status Page": "Pagina di stato", - defaultNotificationName: "Allarme {notification} ({number})", + defaultNotificationName: "Notifica {notification} ({number})", here: "qui", - Required: "Richiesto", + Required: "Obbligatorio", telegram: "Telegram", - "Bot Token": "Token del Bot", - wayToGetTelegramToken: "È possibile ricevere un token da {0}.", + "Bot Token": "Token del bot", + wayToGetTelegramToken: "Puoi ottenere il token da {0}.", "Chat ID": "ID Chat", - supportTelegramChatID: "Supporta Chat dirette / di Gruppo / ID Canale", + supportTelegramChatID: "Supporta chat private, gruppi e canali.", wayToGetTelegramChatID: "È possibile ricereve l'ID chat mandando un messaggio al bot e poi 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", + 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)", @@ -294,29 +294,29 @@ export default { 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", + Body: "Body", Headers: "Intestazioni", PushUrl: "URL di Push", HeadersInvalidFormat: "L'intestazione di richiesta non è un JSON valido: ", BodyInvalidFormat: "Il corpo di richiesta non è un JSON valido: ", - "Monitor History": "Storicizzazione", + "Monitor History": "Storico monitor", clearDataOlderThan: "Mantieni lo storico per {0} giorni.", - PasswordsDoNotMatch: "Le password non corrispondono.", + PasswordsDoNotMatch: "Le password non corrispondono!", records: "records", "One record": "One record", - steamApiKeyDescription: "Per monitorare un server di gioco Steam si necessita della chiave Web-API di Steam. È possibile registrare la propria chiave API qui: ", + steamApiKeyDescription: "Per monitorare un server di gioco Steam è necessaria una Web-API Key di Steam. È possibile registrarne una qui: ", "Current User": "Utente corrente", recent: "Recenti", Done: "Fatto", Info: "Info", Security: "Sicurezza", - "Steam API Key": "Chiave API di Steam", - "Shrink Database": "Comprimi Database", + "Steam API Key": "API Key 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", + "Create Incident": "Segnala incidente", Title: "Titolo", Content: "Contenuto", Style: "Stile", @@ -331,20 +331,20 @@ export default { Created: "Creato", "Last Updated": "Ultima modifica", Unpin: "Rimuovi", - "Switch to Light Theme": "Utilizza tema chiaro", - "Switch to Dark Theme": "Utilizza tema scuro", + "Switch to Light Theme": "Utilizza il tema chiaro", + "Switch to Dark Theme": "Utilizza il tema scuro", "Show Tags": "Mostra etichette", "Hide Tags": "Nascondi etichette", Description: "Descrizione", - "No monitors available.": "Nessun oggetto monitorato disponibile.", - "Add one": "Aggiungi", - "No Monitors": "Nessun oggetto monitorato inserito", + "No monitors available.": "Nessun monitor disponibile.", + "Add one": "Aggiungine uno!", + "No Monitors": "Nessun monitor presente.", "Untitled Group": "Gruppo senza titolo", Services: "Servizi", - Discard: "Scarta", + Discard: "Scarta modifiche", 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.", + "Powered by": "Powered by", + shrinkDatabaseDescription: "Lancia il comando \"VACUUM\" sul database SQLite. Se il database è stato creato dopo la versione 1.10.0, la funzione \"AUTO_VACUUM\" è già abilitata di default e quindi questa azione non è necessaria.", serwersms: "SerwerSMS.pl", serwersmsAPIUser: "Nome utente API (incl. prefisso webapi_)", serwersmsAPIPassword: "Password API", @@ -360,4 +360,5 @@ export default { smtpDkimHashAlgo: "Algoritmo di hashing (opzionale)", smtpDkimheaderFieldNames: "Campi Intestazione da firmare (opzionale)", smtpDkimskipFields: "Campi Intestazione da non firmare (opzionale)", + GoogleChat: "Google Chat (solo per Google Workspace)", }; From 83d60fea296592c0dd35fc0da953bd70e3cd5396 Mon Sep 17 00:00:00 2001 From: sovushik <30425777+sovushik@users.noreply.github.com> Date: Sat, 8 Jan 2022 22:46:05 +0500 Subject: [PATCH 198/282] Update ru-RU.js 1. Updated the language lines (in the correct declension) 2. Added new lines for the "Create Incident" functionality --- src/languages/ru-RU.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/languages/ru-RU.js b/src/languages/ru-RU.js index 83f4de2d..760a15b6 100644 --- a/src/languages/ru-RU.js +++ b/src/languages/ru-RU.js @@ -308,4 +308,5 @@ export default { records: "записей", "One record": "Одна запись", steamApiKeyDescription: "Для мониторинга игрового сервера Steam вам необходим Web-API ключ Steam. Зарегистрировать его можно здесь: ", + "Show Tags": "Показать тэги", }; From 30a345d8b69aa8213f94745569de9151eb0a6fd0 Mon Sep 17 00:00:00 2001 From: sovushik <30425777+sovushik@users.noreply.github.com> Date: Sat, 8 Jan 2022 23:00:18 +0500 Subject: [PATCH 199/282] Update ru-RU.js Updated language files and added new lines --- src/languages/ru-RU.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/languages/ru-RU.js b/src/languages/ru-RU.js index 83f4de2d..40fa6d73 100644 --- a/src/languages/ru-RU.js +++ b/src/languages/ru-RU.js @@ -167,8 +167,8 @@ export default { Purple: "Пурпурный", Pink: "Розовый", "Search...": "Поиск...", - "Avg. Ping": "Средн. пинг", - "Avg. Response": "Средн. ответ", + "Avg. Ping": "Среднее значение пинга", + "Avg. Response": "Среднее время ответа", "Entry Page": "Главная страница", statusPageNothing: "Здесь пусто. Добавьте группу или монитор.", "No Services": "Нет сервисов", @@ -308,4 +308,12 @@ export default { records: "записей", "One record": "Одна запись", steamApiKeyDescription: "Для мониторинга игрового сервера Steam вам необходим Web-API ключ Steam. Зарегистрировать его можно здесь: ", + "Certificate Chain:": "Цепочка сертификатов:", + "Valid": "Действительный", + "Hide Tags": "Скрыть тэги", + "Title:": "Название инцидента:", + "Content:": "Содержание инцидента:", + "Post": "Опубликовать", + "Cancel": "Отмена", + "Created:": "Создано:", }; From cdcdf377ec77e52259307545b1f39428776cbc0e Mon Sep 17 00:00:00 2001 From: Erik <58110607+drodmantras@users.noreply.github.com> Date: Sun, 9 Jan 2022 11:39:05 +0100 Subject: [PATCH 200/282] Update sl-SI.js Small langue updates --- src/languages/sl-SI.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/languages/sl-SI.js b/src/languages/sl-SI.js index b6fc3374..fff2cbb6 100644 --- a/src/languages/sl-SI.js +++ b/src/languages/sl-SI.js @@ -58,14 +58,14 @@ export default { "Cert Exp.": "Potek certifikata", days: "dni", day: "dan", - "-day": "-dan", + "-day": "-dni", hour: "ura", - "-hour": "-ura", + "-hour": "-ur", Response: "Odgovor", Ping: "Ping", "Monitor Type": "Tip monitorja", Keyword: "Ključna beseda", - "Friendly Name": "Prijazno ime", + "Friendly Name": "Ime za prikaz", URL: "URL", Hostname: "Hostname", Port: "Vrata", @@ -182,7 +182,7 @@ export default { "Add a monitor": "Dodaj monitor", "Edit Status Page": "Uredi statusno stran", "Go to Dashboard": "Pojdi na nadzorno ploščo", - "Status Page": "Statusna stran", + "Status Page": "Status", defaultNotificationName: "Moje {notification} Obvestilo ({number})", here: "tukaj", Required: "Obvezno", From b6ad4c845a4c4fb57d9b5393f9573cb582d3789d Mon Sep 17 00:00:00 2001 From: James White <james@jmwhite.co.uk> Date: Sun, 9 Jan 2022 15:31:26 +0000 Subject: [PATCH 201/282] Update PULL_REQUEST_TEMPLATE.md Correct checklist item and make the UI type of change consistent with all others. --- .github/PULL_REQUEST_TEMPLATE.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 9afb8596..3dc7c8b2 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -4,10 +4,10 @@ Fixes #(issue) ## Type of change -Please delete options that are not relevant. +Please delete any options that are not relevant. - Bug fix (non-breaking change which fixes an issue) -- User Interface +- User interface (UI) - New feature (non-breaking change which adds functionality) - Breaking change (fix or feature that would cause existing functionality to not work as expected) - Translation update @@ -18,7 +18,7 @@ Please delete options that are not relevant. - [ ] My code follows the style guidelines of this project - [ ] I ran ESLint and other linters for modified files -- [ ] I have performed a self-review of my own code and test it +- [ ] I have performed a self-review of my own code and tested it - [ ] I have commented my code, particularly in hard-to-understand areas - [ ] My changes generate no new warnings - [ ] My code needed automated testing. I have added them (this is optional task) From 8063449f4970740b42b31862e83d64a531f75673 Mon Sep 17 00:00:00 2001 From: Denis <github@ggl.ledeuns.net> Date: Sun, 9 Jan 2022 17:27:24 +0100 Subject: [PATCH 202/282] ping path is common to all BSDs --- server/ping-lite.js | 2 +- server/util-server.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/server/ping-lite.js b/server/ping-lite.js index b2d6405a..0075e80b 100644 --- a/server/ping-lite.js +++ b/server/ping-lite.js @@ -48,7 +48,7 @@ function Ping(host, options) { this._args = (options.args) ? options.args : [ "-n", "-t", timeout, "-c", "1", host ]; this._regmatch = /=([0-9.]+?) ms/; - } else if (util.FBSD) { + } else if (util.BSD) { this._bin = "/sbin/ping"; const defaultArgs = [ "-n", "-t", timeout, "-c", "1", host ]; diff --git a/server/util-server.js b/server/util-server.js index 68f59f67..35aeeb50 100644 --- a/server/util-server.js +++ b/server/util-server.js @@ -15,7 +15,7 @@ const nodeJsUtil = require("util"); exports.WIN = /^win/.test(process.platform); exports.LIN = /^linux/.test(process.platform); exports.MAC = /^darwin/.test(process.platform); -exports.FBSD = /^freebsd/.test(process.platform); +exports.BSD = /bsd$/.test(process.platform); /** * Init or reset JWT secret From ea43422ccfae82f74dc2a0b1b00895a78d4df6ec Mon Sep 17 00:00:00 2001 From: Zack Elia <github@zacharyelia.com> Date: Sun, 9 Jan 2022 12:05:11 -0500 Subject: [PATCH 203/282] Implement gorush notifications --- server/notification-providers/gorush.js | 42 ++++++++++++++++++++ server/notification.js | 4 +- src/components/notifications/Gorush.vue | 51 +++++++++++++++++++++++++ src/components/notifications/index.js | 4 +- src/languages/en.js | 1 + 5 files changed, 100 insertions(+), 2 deletions(-) create mode 100644 server/notification-providers/gorush.js create mode 100644 src/components/notifications/Gorush.vue diff --git a/server/notification-providers/gorush.js b/server/notification-providers/gorush.js new file mode 100644 index 00000000..58da5525 --- /dev/null +++ b/server/notification-providers/gorush.js @@ -0,0 +1,42 @@ +const NotificationProvider = require("./notification-provider"); +const axios = require("axios"); + +class Gorush extends NotificationProvider { + + name = "gorush"; + + async send(notification, msg, monitorJSON = null, heartbeatJSON = null) { + let okMsg = "Sent Successfully."; + + let platformMapping = { + "ios": 1, + "android": 2, + "huawei": 3, + }; + + try { + let data = { + "notifications": [ + { + "tokens": [notification.gorushDeviceToken], + "platform": platformMapping[notification.gorushPlatform], + "message": msg, + // Optional + "title": notification.gorushTitle, + "priority": notification.gorushPriority, + "retry": parseInt(notification.gorushRetry) || 0, + "topic": notification.gorushTopic, + } + ] + }; + let config = {}; + + await axios.post(`${notification.gorushServerURL}/api/push`, data, config); + return okMsg; + } catch (error) { + this.throwGeneralAxiosError(error); + } + } +} + +module.exports = Gorush; diff --git a/server/notification.js b/server/notification.js index 4d72c81c..83782830 100644 --- a/server/notification.js +++ b/server/notification.js @@ -27,6 +27,7 @@ const SerwerSMS = require("./notification-providers/serwersms"); const Stackfield = require("./notification-providers/stackfield"); const WeCom = require("./notification-providers/wecom"); const GoogleChat = require("./notification-providers/google-chat"); +const Gorush = require("./notification-providers/gorush"); class Notification { @@ -65,7 +66,8 @@ class Notification { new SerwerSMS(), new Stackfield(), new WeCom(), - new GoogleChat() + new GoogleChat(), + new Gorush() ]; for (let item of list) { diff --git a/src/components/notifications/Gorush.vue b/src/components/notifications/Gorush.vue new file mode 100644 index 00000000..b53be2d2 --- /dev/null +++ b/src/components/notifications/Gorush.vue @@ -0,0 +1,51 @@ +<template> + <div class="mb-3"> + <label for="gorush-device-token" class="form-label">{{ $t("Device Token") }}</label><span style="color: red;"><sup>*</sup></span> + <div class="input-group mb-3"> + <input id="gorush-device-token" v-model="$parent.notification.gorushDeviceToken" type="text" class="form-control" required> + </div> + </div> + + <div class="mb-3"> + <label for="gorush-server-url" class="form-label">{{ $t("Server URL") }}</label><span style="color: red;"><sup>*</sup></span> + <div class="input-group mb-3"> + <input id="gorush-server-url" v-model="$parent.notification.gorushServerURL" type="text" class="form-control" required> + </div> + </div> + + <div class="mb-3"> + <label for="gorush-platform" class="form-label">{{ $t("Platform") }}</label><span style="color: red;"><sup>*</sup></span> + <select id="gorush-platform" v-model="$parent.notification.gorushPlatform" class="form-select"> + <option value="ios">{{ $t("iOS") }}</option> + <option value="android">{{ $t("Android") }}</option> + <option value="huawei">{{ $t("Huawei") }}</option> + </select> + </div> + + <div class="mb-3"> + <label for="gorush-title" class="form-label">{{ $t("Title") }}</label> + <input id="gorush-title" v-model="$parent.notification.gorushTitle" type="text" class="form-control"> + </div> + + <div class="mb-3"> + <label for="gorush-priority" class="form-label">{{ $t("Priority") }}</label> + <select id="gorush-priority" v-model="$parent.notification.gorushPriority" class="form-select"> + <option value="normal">{{ $t("Normal") }}</option> + <option value="high">{{ $t("High") }}</option> + </select> + </div> + + <div class="mb-3"> + <label for="gorush-retry" class="form-label">{{ $t("Retry") }}</label> + <input id="gorush-retry" v-model="$parent.notification.gorushRetry" type="number" class="form-control"> + </div> + + <div class="mb-3"> + <label for="gorush-topic" class="form-label">{{ $t("Topic") }}</label> + <input id="gorush-topic" v-model="$parent.notification.gorushTopic" type="text" class="form-control"> + </div> + + <div class="form-text"> + <span style="color: red;"><sup>*</sup></span>{{ $t("Required") }} + </div> +</template> diff --git a/src/components/notifications/index.js b/src/components/notifications/index.js index 03945f90..7883890b 100644 --- a/src/components/notifications/index.js +++ b/src/components/notifications/index.js @@ -26,6 +26,7 @@ import SerwerSMS from "./SerwerSMS.vue"; import Stackfield from './Stackfield.vue'; import WeCom from "./WeCom.vue"; import GoogleChat from "./GoogleChat.vue"; +import Gorush from "./Gorush.vue"; /** * Manage all notification form. @@ -60,7 +61,8 @@ const NotificationFormList = { "serwersms": SerwerSMS, "stackfield": Stackfield, "WeCom": WeCom, - "GoogleChat": GoogleChat + "GoogleChat": GoogleChat, + "gorush": Gorush }; export default NotificationFormList; diff --git a/src/languages/en.js b/src/languages/en.js index 47513466..37e831e6 100644 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -361,4 +361,5 @@ export default { smtpDkimHashAlgo: "Hash Algorithm (Optional)", smtpDkimheaderFieldNames: "Header Keys to sign (Optional)", smtpDkimskipFields: "Header Keys not to sign (Optional)", + gorush: "Gorush", }; From 53df9a36e32b6a948f8af0a6ccbb72c1a4ec25a5 Mon Sep 17 00:00:00 2001 From: Denis <github@ggl.ledeuns.net> Date: Tue, 11 Jan 2022 10:07:00 +0100 Subject: [PATCH 204/282] reintroduce exports.FBSD --- server/util-server.js | 1 + 1 file changed, 1 insertion(+) diff --git a/server/util-server.js b/server/util-server.js index 35aeeb50..2264ebea 100644 --- a/server/util-server.js +++ b/server/util-server.js @@ -15,6 +15,7 @@ const nodeJsUtil = require("util"); exports.WIN = /^win/.test(process.platform); exports.LIN = /^linux/.test(process.platform); exports.MAC = /^darwin/.test(process.platform); +exports.FBSD = /^freebsd/.test(process.platform); exports.BSD = /bsd$/.test(process.platform); /** From f9751d0c01d4334950ea2f933f8c3a3034a0b597 Mon Sep 17 00:00:00 2001 From: Louis <louislam@users.noreply.github.com> Date: Tue, 11 Jan 2022 19:15:28 +0800 Subject: [PATCH 205/282] Fix FBSD to BSD https://github.com/louislam/uptime-kuma/pull/1155#issuecomment-1009544236 --- extra/healthcheck.js | 4 ++-- server/server.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/extra/healthcheck.js b/extra/healthcheck.js index c6e8a349..06c87394 100644 --- a/extra/healthcheck.js +++ b/extra/healthcheck.js @@ -1,7 +1,7 @@ /* * This script should be run after a period of time (180s), because the server may need some time to prepare. */ -const { FBSD } = require("../server/util-server"); +const { BSD } = require("../server/util-server"); process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"; @@ -21,7 +21,7 @@ if (sslKey && sslCert) { let hostname = process.env.UPTIME_KUMA_HOST; // Also read HOST if not FreeBSD, as HOST is a system environment variable in FreeBSD -if (!hostname && !FBSD) { +if (!hostname && !BSD) { hostname = process.env.HOST; } diff --git a/server/server.js b/server/server.js index 868bbd5e..f4e2b72a 100644 --- a/server/server.js +++ b/server/server.js @@ -41,7 +41,7 @@ console.log("Importing this project modules"); debug("Importing Monitor"); const Monitor = require("./model/monitor"); debug("Importing Settings"); -const { getSettings, setSettings, setting, initJWTSecret, checkLogin, startUnitTest, FBSD, errorLog } = require("./util-server"); +const { getSettings, setSettings, setting, initJWTSecret, checkLogin, startUnitTest, BSD, errorLog } = require("./util-server"); debug("Importing Notification"); const { Notification } = require("./notification"); From 6bda5c6329851ce859e9ff67f1e73df30125b888 Mon Sep 17 00:00:00 2001 From: Denis <github@ggl.ledeuns.net> Date: Tue, 11 Jan 2022 13:39:45 +0100 Subject: [PATCH 206/282] update comment --- extra/healthcheck.js | 2 +- server/server.js | 2 +- server/util-server.js | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/extra/healthcheck.js b/extra/healthcheck.js index 06c87394..c1a1057d 100644 --- a/extra/healthcheck.js +++ b/extra/healthcheck.js @@ -20,7 +20,7 @@ if (sslKey && sslCert) { // Dual-stack support for (::) let hostname = process.env.UPTIME_KUMA_HOST; -// Also read HOST if not FreeBSD, as HOST is a system environment variable in FreeBSD +// Also read HOST if not *BSD, as HOST is a system environment variable in FreeBSD if (!hostname && !BSD) { hostname = process.env.HOST; } diff --git a/server/server.js b/server/server.js index f4e2b72a..6e82e8dc 100644 --- a/server/server.js +++ b/server/server.js @@ -65,7 +65,7 @@ console.info("Version: " + checkVersion.version); // Dual-stack support for (::) let hostname = process.env.UPTIME_KUMA_HOST || args.host; -// Also read HOST if not FreeBSD, as HOST is a system environment variable in FreeBSD +// Also read HOST if not *BSD, as HOST is a system environment variable in FreeBSD if (!hostname && !FBSD) { hostname = process.env.HOST; } diff --git a/server/util-server.js b/server/util-server.js index 2264ebea..35aeeb50 100644 --- a/server/util-server.js +++ b/server/util-server.js @@ -15,7 +15,6 @@ const nodeJsUtil = require("util"); exports.WIN = /^win/.test(process.platform); exports.LIN = /^linux/.test(process.platform); exports.MAC = /^darwin/.test(process.platform); -exports.FBSD = /^freebsd/.test(process.platform); exports.BSD = /bsd$/.test(process.platform); /** From 0f822d3b2a5b6b84e37884003122afcda83692c0 Mon Sep 17 00:00:00 2001 From: Denis <github@ggl.ledeuns.net> Date: Tue, 11 Jan 2022 13:42:51 +0100 Subject: [PATCH 207/282] FBSD does not exists anymore --- server/server.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/server.js b/server/server.js index 6e82e8dc..25929fc2 100644 --- a/server/server.js +++ b/server/server.js @@ -66,7 +66,7 @@ console.info("Version: " + checkVersion.version); let hostname = process.env.UPTIME_KUMA_HOST || args.host; // Also read HOST if not *BSD, as HOST is a system environment variable in FreeBSD -if (!hostname && !FBSD) { +if (!hostname && !BSD) { hostname = process.env.HOST; } From ed64853125bac90df2198127822feef5c453d684 Mon Sep 17 00:00:00 2001 From: Louis <louislam@users.noreply.github.com> Date: Wed, 12 Jan 2022 01:44:01 +0800 Subject: [PATCH 208/282] Keep FBSD, BSD for ping only --- extra/healthcheck.js | 4 ++-- server/server.js | 6 +++--- server/util-server.js | 1 + 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/extra/healthcheck.js b/extra/healthcheck.js index c1a1057d..7c3a7eb4 100644 --- a/extra/healthcheck.js +++ b/extra/healthcheck.js @@ -1,7 +1,7 @@ /* * This script should be run after a period of time (180s), because the server may need some time to prepare. */ -const { BSD } = require("../server/util-server"); +const { FBSD } = require("../server/util-server"); process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"; @@ -21,7 +21,7 @@ if (sslKey && sslCert) { let hostname = process.env.UPTIME_KUMA_HOST; // Also read HOST if not *BSD, as HOST is a system environment variable in FreeBSD -if (!hostname && !BSD) { +if (!hostname && !FBSD) { hostname = process.env.HOST; } diff --git a/server/server.js b/server/server.js index 25929fc2..868bbd5e 100644 --- a/server/server.js +++ b/server/server.js @@ -41,7 +41,7 @@ console.log("Importing this project modules"); debug("Importing Monitor"); const Monitor = require("./model/monitor"); debug("Importing Settings"); -const { getSettings, setSettings, setting, initJWTSecret, checkLogin, startUnitTest, BSD, errorLog } = require("./util-server"); +const { getSettings, setSettings, setting, initJWTSecret, checkLogin, startUnitTest, FBSD, errorLog } = require("./util-server"); debug("Importing Notification"); const { Notification } = require("./notification"); @@ -65,8 +65,8 @@ console.info("Version: " + checkVersion.version); // Dual-stack support for (::) let hostname = process.env.UPTIME_KUMA_HOST || args.host; -// Also read HOST if not *BSD, as HOST is a system environment variable in FreeBSD -if (!hostname && !BSD) { +// Also read HOST if not FreeBSD, as HOST is a system environment variable in FreeBSD +if (!hostname && !FBSD) { hostname = process.env.HOST; } diff --git a/server/util-server.js b/server/util-server.js index 35aeeb50..2264ebea 100644 --- a/server/util-server.js +++ b/server/util-server.js @@ -15,6 +15,7 @@ const nodeJsUtil = require("util"); exports.WIN = /^win/.test(process.platform); exports.LIN = /^linux/.test(process.platform); exports.MAC = /^darwin/.test(process.platform); +exports.FBSD = /^freebsd/.test(process.platform); exports.BSD = /bsd$/.test(process.platform); /** From 13acdd4c657c4774a2b51ae323b43723fddfbc15 Mon Sep 17 00:00:00 2001 From: Joseph Benguira <z51biz@gmail.com> Date: Wed, 12 Jan 2022 10:12:12 +0200 Subject: [PATCH 209/282] Fix for issue in logs This fix address the issue described here: https://github.com/louislam/uptime-kuma/issues/1024 --- server/prometheus.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/server/prometheus.js b/server/prometheus.js index 870581d2..e53dee5c 100644 --- a/server/prometheus.js +++ b/server/prometheus.js @@ -60,7 +60,9 @@ class Prometheus { } try { - monitor_cert_days_remaining.set(this.monitorLabelValues, tlsInfo.certInfo.daysRemaining); + if ( tlsInfo.certInfo != null ){ + monitor_cert_days_remaining.set(this.monitorLabelValues, tlsInfo.certInfo.daysRemaining); + } } catch (e) { console.error(e); } From 06aab3dee8a83600c7d7b2b7683ef01e3082f525 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Szczepa=C5=84ski?= <l.szczepanski@webd.pl> Date: Wed, 12 Jan 2022 09:48:37 +0100 Subject: [PATCH 210/282] Added missing text and fix typos --- src/languages/pl.js | 67 +++++++++++++++++++++++++++++++++++++++------ 1 file changed, 58 insertions(+), 9 deletions(-) diff --git a/src/languages/pl.js b/src/languages/pl.js index 69d68193..b352e691 100644 --- a/src/languages/pl.js +++ b/src/languages/pl.js @@ -22,8 +22,8 @@ export default { confirmClearStatisticsMsg: "Jesteś pewien, że chcesz usunąć WSZYSTKIE statystyki?", importHandleDescription: "Wybierz 'Pomiń istniejące', jeśli chcesz pominąć każdy monitor lub powiadomienie o tej samej nazwie. 'Nadpisz' spowoduje usunięcie każdego istniejącego monitora i powiadomienia.", confirmImportMsg: "Czy na pewno chcesz zaimportować kopię zapasową? Upewnij się, że wybrałeś właściwą opcję importu.", - twoFAVerifyLabel: "Proszę podaj swój token 2FA, aby sprawdzić czy 2FA działa.", - tokenValidSettingsMsg: "Token jest prawdiłowy! Teraz możesz zapisać ustawienia 2FA.", + twoFAVerifyLabel: "Proszę, podaj swój token 2FA, aby sprawdzić, czy 2FA działa.", + tokenValidSettingsMsg: "Token jest prawidłowy! Teraz możesz zapisać ustawienia 2FA.", confirmEnableTwoFAMsg: "Jesteś pewien, że chcesz włączyć 2FA?", confirmDisableTwoFAMsg: "Jesteś pewien, że chcesz wyłączyć 2FA?", Settings: "Ustawienia", @@ -68,7 +68,7 @@ export default { URL: "URL", Hostname: "Hostname", Port: "Port", - "Heartbeat Interval": "Czętotliwość bicia serca", + "Heartbeat Interval": "Częstotliwość bicia serca", Retries: "Prób", "Heartbeat Retry Interval": "Częstotliwość ponawiania bicia serca", Advanced: "Zaawansowane", @@ -110,7 +110,7 @@ export default { "No Monitors, please": "Brak monitorów, proszę", "add one": "dodać jeden", "Notification Type": "Rodzaj powiadomienia", - Email: "Email", + Email: "E-mail", Test: "Test", "Certificate Info": "Informacje o certyfikacie", "Resolver Server": "Serwer rozwiązywania nazw", @@ -188,13 +188,13 @@ export default { "Chat ID": "Identyfikator czatu", supportTelegramChatID: "Czat wsparcia technicznego / Bezpośrednia rozmowa / Czat grupowy", wayToGetTelegramChatID: "Możesz uzyskać swój identyfikator czatu, wysyłając wiadomość do bota i przechodząc pod ten adres URL, aby wyświetlić identyfikator czatu:", - "YOUR BOT TOKEN HERE": "TWOJ TOKEN BOTA", + "YOUR BOT TOKEN HERE": "TWÓJ TOKEN BOTA", chatIDNotFound: "Identyfikator czatu nie znaleziony, najpierw napisz do bota", webhook: "Webhook", "Post URL": "Adres URL", "Content Type": "Rodzaj danych", webhookJsonDesc: "{0} jest dobry w przypadku serwerów HTTP, takich jak express.js", - webhookFormDataDesc: "{multipart} jest dobry dla PHP, musisz jedynie przetowrzyć dane przez {decodeFunction}", + webhookFormDataDesc: "{multipart} jest dobry dla PHP, musisz jedynie przetworzyć dane przez {decodeFunction}", smtp: "Email (SMTP)", secureOptionNone: "Brak / STARTTLS (25, 587)", secureOptionTLS: "TLS (465)", @@ -205,7 +205,7 @@ export default { smtpBCC: "UDW", discord: "Discord", "Discord Webhook URL": "URL webhook Discorda", - wayToGetDiscordURL: "Możesz go uzyskać przechodząc do Ustawienia serwera -> Integracje -> Tworzenie webhooka", + wayToGetDiscordURL: "Możesz go uzyskać, przechodząc do Ustawienia serwera -> Integracje -> Tworzenie webhooka", "Bot Display Name": "Wyświetlana nazwa bota", "Prefix Custom Message": "Własny początek wiadomości", "Hello @everyone is...": "Hej {'@'}everyone ...", @@ -237,6 +237,7 @@ export default { promosms: "PromoSMS", lunasea: "LunaSea", apprise: "Apprise (obsługuje 50+ usług powiadomień)", + GoogleChat: "Google Chat (Wyłącznie Google Workspace)", pushbullet: "Pushbullet", line: "Line Messenger", mattermost: "Mattermost", @@ -259,7 +260,7 @@ export default { "Read more:": "Czytaj dalej: {0}", "Status:": "Status: {0}", "Read more": "Czytaj dalej", - appriseInstalled: "Apprise jest zostało zainstalowane.", + appriseInstalled: "Apprise jest zainstalowane.", appriseNotInstalled: "Apprise nie zostało zainstalowane. {0}", "Access Token": "Token dostępu", "Channel access token": "Token dostępu kanału", @@ -289,7 +290,7 @@ export default { "Feishu WebHookUrl": "Feishu WebHookURL", matrixHomeserverURL: "Adres URL serwera domowego (z http(s):// i opcjonalnie port)", "Internal Room Id": "Wewnętrzne ID pokoju", - matrixDesc1: "Możesz znaleźć wewnętrzne ID pokoju patrząc w zaawansowanej sekcji ustawień pokoju w twoim kliencie Matrix. Powinien on wyglądać jak !QMdRCpUIfLwsfjxye6:home.server.", + matrixDesc1: "Możesz znaleźć wewnętrzne ID pokoju, patrząc w zaawansowanej sekcji ustawień pokoju w twoim kliencie Matrix. Powinien on wyglądać jak !QMdRCpUIfLwsfjxye6:home.server.", matrixDesc2: "Jest wysoce zalecane, abyś stworzył nowego użytkownika i nie używał tokena dostępu swojego użytkownika Matrix, ponieważ pozwoli on na pełny dostęp do twojego konta i wszystkich pokoi, do których dołączyłeś. Zamiast tego, utwórz nowego użytkownika i zaproś go tylko do pokoju, w którym chcesz otrzymywać powiadomienia. Możesz uzyskać token dostępu przez uruchomienie {0}", Method: "Metoda", Body: "Treść", @@ -305,6 +306,44 @@ export default { steamApiKeyDescription: "Do monitorowania serwera gier Steam potrzebny jest klucz Steam Web-API. Możesz zarejestrować swój klucz API tutaj: ", "Current User": "Aktualny użytkownik", recent: "Ostatnie", + Done: "Zrobione", + Info: "Info", + Security: "Bezpieczeństwo", + "Steam API Key": "Klucz Steam API", + "Shrink Database": "Zmniejsz Bazę Danych", + "Pick a RR-Type...": "Wybierz Typ RR...", + "Pick Accepted Status Codes...": "Pick Accepted Status Codes...", + Default: "Default", + "HTTP Options": "Opcje HTTP", + "Create Incident": "Stwórz Incydent", + Title: "Tytuł", + Content: "Treść", + Style: "Styl", + info: "info", + warning: "ostrzeżenie", + danger: "niebezpieczeństwo", + primary: "podstawowy", + light: "jasny", + dark: "ciemny", + Post: "Wyślij", + "Please input title and content": "Podaj tytuł i treść", + Created: "Stworzony", + "Last Updated": "Ostatnio Zaktualizowany", + Unpin: "Odepnij", + "Switch to Light Theme": "Przełącz na Jasny Motyw", + "Switch to Dark Theme": "Przełącz na Ciemny Motyw", + "Show Tags": "Pokaż Tagi", + "Hide Tags": "Ukryj Tagi", + Description: "Opis", + "No monitors available.": "Brak dostępnych monitorów.", + "Add one": "Dodaj jeden", + "No Monitors": "Brak Monitorów", + "Untitled Group": "Nienazwana grupa", + Services: "Usługi", + Discard: "Odrzuć", + Cancel: "Anuluj", + "Powered by": "Napędzane przez", + shrinkDatabaseDescription: "Uruchum VACUUM na bazie SQLite. Jeżeli twoja baza została stworzona po wersji 1.10.0, to posiada już włączoną opcję AUTO_VACUUM i stosowanie ręcznego oczyszczania nie jest potrzbne.", clicksendsms: "ClickSend SMS", apiCredentials: "Poświadczenia API", serwersms: "SerwerSMS.pl", @@ -312,4 +351,14 @@ export default { serwersmsAPIPassword: "Hasło API", serwersmsPhoneNumber: "Numer telefonu", serwersmsSenderName: "Nazwa nadawcy (zatwierdzona w panelu klienta)", + "stackfield": "Stackfield", + smtpDkimSettings: "Ustawienia DKIM", + smtpDkimDesc: "Zapoznaj się z Nodemailer DKIM {0}, aby dowiedzieć się więcej", + documentation: "dokumentacja", + smtpDkimDomain: "Nazwa Domeny", + smtpDkimKeySelector: "Selektor klucza", + smtpDkimPrivateKey: "Klucz Prywatny", + smtpDkimHashAlgo: "Algorytm Hashowania (Opcjonalne)", + smtpDkimheaderFieldNames: "Klucze nagłówka do podpisu (Opcjonalne)", + smtpDkimskipFields: "Klucze nagłówka do pominięcia (Opcjonalne)", }; From 23532aaafe5065c0a8d75683c289ead636447a97 Mon Sep 17 00:00:00 2001 From: Adam Stachowicz <saibamenppl@gmail.com> Date: Wed, 12 Jan 2022 12:26:23 +0100 Subject: [PATCH 211/282] Update pl.js Addendum to https://github.com/louislam/uptime-kuma/commit/ab61acab638eee7e36557d180d54b565c4579007 --- src/languages/pl.js | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/languages/pl.js b/src/languages/pl.js index b352e691..24dc2ec7 100644 --- a/src/languages/pl.js +++ b/src/languages/pl.js @@ -237,7 +237,7 @@ export default { promosms: "PromoSMS", lunasea: "LunaSea", apprise: "Apprise (obsługuje 50+ usług powiadomień)", - GoogleChat: "Google Chat (Wyłącznie Google Workspace)", + GoogleChat: "Google Chat (wyłącznie Google Workspace)", pushbullet: "Pushbullet", line: "Line Messenger", mattermost: "Mattermost", @@ -310,12 +310,12 @@ export default { Info: "Info", Security: "Bezpieczeństwo", "Steam API Key": "Klucz Steam API", - "Shrink Database": "Zmniejsz Bazę Danych", - "Pick a RR-Type...": "Wybierz Typ RR...", - "Pick Accepted Status Codes...": "Pick Accepted Status Codes...", - Default: "Default", + "Shrink Database": "Zmniejsz bazę danych", + "Pick a RR-Type...": "Wybierz typ RR...", + "Pick Accepted Status Codes...": "Wybierz akceptowalne kody statusu...", + Default: "Domyślnie", "HTTP Options": "Opcje HTTP", - "Create Incident": "Stwórz Incydent", + "Create Incident": "Stwórz incydent", Title: "Tytuł", Content: "Treść", Style: "Styl", @@ -328,22 +328,22 @@ export default { Post: "Wyślij", "Please input title and content": "Podaj tytuł i treść", Created: "Stworzony", - "Last Updated": "Ostatnio Zaktualizowany", + "Last Updated": "Ostatnio zaktualizowany", Unpin: "Odepnij", - "Switch to Light Theme": "Przełącz na Jasny Motyw", - "Switch to Dark Theme": "Przełącz na Ciemny Motyw", - "Show Tags": "Pokaż Tagi", - "Hide Tags": "Ukryj Tagi", + "Switch to Light Theme": "Przełącz na jasny motyw", + "Switch to Dark Theme": "Przełącz na ciemny motyw", + "Show Tags": "Pokaż tagi", + "Hide Tags": "Ukryj tagi", Description: "Opis", "No monitors available.": "Brak dostępnych monitorów.", "Add one": "Dodaj jeden", - "No Monitors": "Brak Monitorów", + "No Monitors": "Brak monitorów", "Untitled Group": "Nienazwana grupa", Services: "Usługi", Discard: "Odrzuć", Cancel: "Anuluj", "Powered by": "Napędzane przez", - shrinkDatabaseDescription: "Uruchum VACUUM na bazie SQLite. Jeżeli twoja baza została stworzona po wersji 1.10.0, to posiada już włączoną opcję AUTO_VACUUM i stosowanie ręcznego oczyszczania nie jest potrzbne.", + shrinkDatabaseDescription: "Uruchom VACUUM na bazie SQLite. Jeżeli twoja baza została stworzona po wersji 1.10.0, to posiada już włączoną opcję AUTO_VACUUM i stosowanie ręcznego oczyszczania nie jest potrzebne.", clicksendsms: "ClickSend SMS", apiCredentials: "Poświadczenia API", serwersms: "SerwerSMS.pl", @@ -355,10 +355,10 @@ export default { smtpDkimSettings: "Ustawienia DKIM", smtpDkimDesc: "Zapoznaj się z Nodemailer DKIM {0}, aby dowiedzieć się więcej", documentation: "dokumentacja", - smtpDkimDomain: "Nazwa Domeny", + smtpDkimDomain: "Nazwa domeny", smtpDkimKeySelector: "Selektor klucza", - smtpDkimPrivateKey: "Klucz Prywatny", - smtpDkimHashAlgo: "Algorytm Hashowania (Opcjonalne)", - smtpDkimheaderFieldNames: "Klucze nagłówka do podpisu (Opcjonalne)", - smtpDkimskipFields: "Klucze nagłówka do pominięcia (Opcjonalne)", + smtpDkimPrivateKey: "Klucz prywatny", + smtpDkimHashAlgo: "Algorytm Hashowania (opcjonalne)", + smtpDkimheaderFieldNames: "Klucze nagłówka do podpisu (opcjonalne)", + smtpDkimskipFields: "Klucze nagłówka do pominięcia (opcjonalne)", }; From 52e0d74a1ee1d3de7a5d82e857b1680ad96479e0 Mon Sep 17 00:00:00 2001 From: sovushik <30425777+sovushik@users.noreply.github.com> Date: Wed, 12 Jan 2022 20:49:41 +0500 Subject: [PATCH 212/282] Update ru-RU.js Add new string --- src/languages/ru-RU.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/languages/ru-RU.js b/src/languages/ru-RU.js index bb62de5b..c67937b0 100644 --- a/src/languages/ru-RU.js +++ b/src/languages/ru-RU.js @@ -317,4 +317,14 @@ export default { "Cancel": "Отмена", "Created:": "Создано:", "Show Tags": "Показать тэги", + "Recent": "Текущее", + "3h": "3 часа", + "6h": "6 часов", + "24h": "24 часа", + "1w": "1 неделя", + "No monitors available.": "Нет доступных мониторов", + "Add one": "Добавить новый", + "Backup": "Резервная копия", + "Security": "Безопасность", + "Current User:": "Текущий пользователь:", }; From fd1fce014372a975bd83728ac13a1979b8fc7d70 Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Thu, 13 Jan 2022 11:15:38 +0800 Subject: [PATCH 213/282] Update stylelint from 13.13.x to 14.2.x --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index d101ef5d..0c8365fc 100644 --- a/package.json +++ b/package.json @@ -126,8 +126,8 @@ "jest-puppeteer": "~6.0.0", "puppeteer": "~10.4.0", "sass": "~1.42.1", - "stylelint": "~13.13.1", - "stylelint-config-standard": "~22.0.0", + "stylelint": "~14.2.0", + "stylelint-config-standard": "~24.0.0", "typescript": "~4.4.4", "vite": "~2.6.14" } From 329c8cbc2d9848f78b2f3d28eac3fb092a54f6a7 Mon Sep 17 00:00:00 2001 From: sovushik <30425777+sovushik@users.noreply.github.com> Date: Thu, 13 Jan 2022 22:07:21 +0500 Subject: [PATCH 214/282] Update ru-RU.js Add new string --- src/languages/ru-RU.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/languages/ru-RU.js b/src/languages/ru-RU.js index c67937b0..45782320 100644 --- a/src/languages/ru-RU.js +++ b/src/languages/ru-RU.js @@ -327,4 +327,5 @@ export default { "Backup": "Резервная копия", "Security": "Безопасность", "Current User:": "Текущий пользователь:", + "All Systems Operational": "Все системы работают", }; From 6490ef3787acf1f1780baf44651770794e9d7189 Mon Sep 17 00:00:00 2001 From: Dylan Khor <dylan@khord.net> Date: Thu, 13 Jan 2022 16:46:09 -0500 Subject: [PATCH 215/282] rename 2fa input element id and display name --- src/components/Login.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/Login.vue b/src/components/Login.vue index 543ca041..bdc1dcc8 100644 --- a/src/components/Login.vue +++ b/src/components/Login.vue @@ -16,8 +16,8 @@ <div v-if="tokenRequired"> <div class="form-floating mt-3"> - <input id="floatingToken" v-model="token" type="text" maxlength="6" class="form-control" placeholder="123456"> - <label for="floatingToken">{{ $t("Token") }}</label> + <input id="otp" v-model="token" type="text" maxlength="6" class="form-control" placeholder="123456"> + <label for="otp">{{ $t("2FA Code") }}</label> </div> </div> From b89efa49aa76a381294b9408c3bd4c616f530d39 Mon Sep 17 00:00:00 2001 From: Dylan Khor <dylan@khord.net> Date: Thu, 13 Jan 2022 16:58:46 -0500 Subject: [PATCH 216/282] retain Token verbiage in display name since "Token" is used in several places in the 2FA setup screen --- src/components/Login.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/Login.vue b/src/components/Login.vue index bdc1dcc8..c32ce361 100644 --- a/src/components/Login.vue +++ b/src/components/Login.vue @@ -17,7 +17,7 @@ <div v-if="tokenRequired"> <div class="form-floating mt-3"> <input id="otp" v-model="token" type="text" maxlength="6" class="form-control" placeholder="123456"> - <label for="otp">{{ $t("2FA Code") }}</label> + <label for="otp">{{ $t("2FA Token") }}</label> </div> </div> From 812e80030bff0ec2fb830c121b72a3852ab41492 Mon Sep 17 00:00:00 2001 From: Dylan Khor <dylan@khord.net> Date: Thu, 13 Jan 2022 23:43:57 -0500 Subject: [PATCH 217/282] revert Token because of language file --- src/components/Login.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/Login.vue b/src/components/Login.vue index c32ce361..987651e2 100644 --- a/src/components/Login.vue +++ b/src/components/Login.vue @@ -17,7 +17,7 @@ <div v-if="tokenRequired"> <div class="form-floating mt-3"> <input id="otp" v-model="token" type="text" maxlength="6" class="form-control" placeholder="123456"> - <label for="otp">{{ $t("2FA Token") }}</label> + <label for="otp">{{ $t("Token") }}</label> </div> </div> From 3b9fac29421e36d1d4f7e399248f5dfedf57f59d Mon Sep 17 00:00:00 2001 From: Joseph Benguira <z51biz@gmail.com> Date: Fri, 14 Jan 2022 08:51:45 +0200 Subject: [PATCH 218/282] Update server/prometheus.js removed useless spaces Co-authored-by: Adam Stachowicz <saibamenppl@gmail.com> --- server/prometheus.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/prometheus.js b/server/prometheus.js index e53dee5c..f91b0a13 100644 --- a/server/prometheus.js +++ b/server/prometheus.js @@ -60,7 +60,7 @@ class Prometheus { } try { - if ( tlsInfo.certInfo != null ){ + if (tlsInfo.certInfo != null) { monitor_cert_days_remaining.set(this.monitorLabelValues, tlsInfo.certInfo.daysRemaining); } } catch (e) { From d1a99b0a22ff36e50387b72369674bc514e691ff Mon Sep 17 00:00:00 2001 From: Louis <louislam@users.noreply.github.com> Date: Sat, 15 Jan 2022 01:25:28 +0800 Subject: [PATCH 219/282] Check Node.js version, better error message --- server/server.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/server/server.js b/server/server.js index 868bbd5e..153cac4f 100644 --- a/server/server.js +++ b/server/server.js @@ -1,4 +1,15 @@ console.log("Welcome to Uptime Kuma"); + +// Check Node.js Version +const nodeVersion = parseInt(process.versions.node.split(".")[0]); +const requiredVersion = 14; +console.log(`Your Node.js version: ${nodeVersion}`); + +if (nodeVersion < requiredVersion) { + console.error(`Error: Your Node.js version is not supported, please upgrade to Node.js >= ${requiredVersion}.`); + process.exit(-1); +} + const args = require("args-parser")(process.argv); const { sleep, debug, getRandomInt, genSecret } = require("../src/util"); const config = require("./config"); From c679613f7e4c1ef8f89d07a848493f7a17159cfb Mon Sep 17 00:00:00 2001 From: Hans Mayer <hans.mayer@outletcity.com> Date: Fri, 14 Jan 2022 19:06:21 +0100 Subject: [PATCH 220/282] Updates some DE translations, fix typo in resolverserverDescription, removes some duplicates in languages --- src/languages/bg-BG.js | 2 +- src/languages/da-DK.js | 2 +- src/languages/de-DE.js | 51 ++++++++++++++++++++++++--------------- src/languages/en.js | 2 +- src/languages/es-ES.js | 2 +- src/languages/et-EE.js | 2 +- src/languages/fa.js | 2 +- src/languages/fr-FR.js | 2 +- src/languages/hr-HR.js | 5 ++-- src/languages/hu.js | 2 +- src/languages/id-ID.js | 2 +- src/languages/it-IT.js | 2 +- src/languages/ja.js | 2 +- src/languages/ko-KR.js | 2 +- src/languages/nb-NO.js | 2 +- src/languages/nl-NL.js | 2 +- src/languages/pl.js | 2 +- src/languages/pt-BR.js | 2 +- src/languages/ru-RU.js | 2 +- src/languages/sl-SI.js | 5 ++-- src/languages/sr-latn.js | 2 +- src/languages/sr.js | 2 +- src/languages/sv-SE.js | 2 +- src/languages/tr-TR.js | 2 +- src/languages/vi.js | 2 +- src/languages/zh-CN.js | 2 +- src/languages/zh-HK.js | 2 +- src/languages/zh-TW.js | 3 +-- src/pages/EditMonitor.vue | 2 +- 29 files changed, 61 insertions(+), 53 deletions(-) diff --git a/src/languages/bg-BG.js b/src/languages/bg-BG.js index e73abf84..762cfff7 100644 --- a/src/languages/bg-BG.js +++ b/src/languages/bg-BG.js @@ -13,7 +13,7 @@ export default { pauseDashboardHome: "Пауза", deleteMonitorMsg: "Наистина ли желаете да изтриете този монитор?", deleteNotificationMsg: "Наистина ли желаете да изтриете това известяване за всички монитори?", - resoverserverDescription: "Cloudflare е сървърът по подразбиране, но можете да го промените по всяко време.", + resolverserverDescription: "Cloudflare е сървърът по подразбиране, но можете да го промените по всяко време.", rrtypeDescription: "Изберете ресурсния запис, който желаете да наблюдавате", pauseMonitorMsg: "Наистина ли желаете да поставите в режим пауза?", enableDefaultNotificationDescription: "За всеки нов монитор това известяване ще бъде активирано по подразбиране. Можете да го изключите за всеки отделен монитор.", diff --git a/src/languages/da-DK.js b/src/languages/da-DK.js index 21f030ea..6c295c77 100644 --- a/src/languages/da-DK.js +++ b/src/languages/da-DK.js @@ -98,7 +98,7 @@ export default { keywordDescription: "Søg efter et søgeord i almindelig HTML- eller JSON -output. Bemærk, at der skelnes mellem store og små bogstaver.", deleteMonitorMsg: "Er du sikker på, at du vil slette overvågeren?", deleteNotificationMsg: "Er du sikker på, at du vil slette denne underretning for alle overvågere? ", - resoverserverDescription: "Cloudflare er standardserveren, den kan til enhver tid ændres.", + resolverserverDescription: "Cloudflare er standardserveren, den kan til enhver tid ændres.", "Resolver Server": "Navne-server", rrtypeDescription: "Vælg den type RR, du vil overvåge.", "Last Result": "Seneste resultat", diff --git a/src/languages/de-DE.js b/src/languages/de-DE.js index 48cdd2e3..f1808d5c 100644 --- a/src/languages/de-DE.js +++ b/src/languages/de-DE.js @@ -54,7 +54,7 @@ export default { "Max. Redirects": "Max. Weiterleitungen", maxRedirectDescription: "Maximale Anzahl von Weiterleitungen, denen gefolgt werden soll. Auf 0 setzen, um Weiterleitungen zu deaktivieren.", "Accepted Status Codes": "Erlaubte HTTP-Statuscodes", - acceptedStatusCodesDescription: "Wähle die Statuscodes aus, welche trotzdem als erfolgreich gewertet werden sollen.", + acceptedStatusCodesDescription: "Wähle die Statuscodes aus, welche als erfolgreich gewertet werden sollen.", Save: "Speichern", Notifications: "Benachrichtigungen", "Not available, please setup.": "Keine verfügbar, bitte einrichten.", @@ -74,12 +74,12 @@ export default { "Current Password": "Derzeitiges Passwort", "New Password": "Neues Passwort", "Repeat New Password": "Neues Passwort wiederholen", - passwordNotMatchMsg: "Passwörter stimmen nicht überein. ", + passwordNotMatchMsg: "Passwörter stimmen nicht überein.", "Update Password": "Passwort aktualisieren", "Disable Auth": "Authentifizierung deaktivieren", "Enable Auth": "Authentifizierung aktivieren", Logout: "Ausloggen", - notificationDescription: "Weise den Monitor(en) eine Benachrichtigung zu, damit diese Funktion greift.", + notificationDescription: "Benachrichtigungen müssen einem Monitor zugewiesen werden, damit diese funktionieren.", Leave: "Verlassen", "I understand, please disable": "Ich verstehe, bitte deaktivieren", Confirm: "Bestätigen", @@ -98,7 +98,7 @@ export default { keywordDescription: "Ein Suchwort in der HTML- oder JSON-Ausgabe finden. Bitte beachte: es wird zwischen Groß-/Kleinschreibung unterschieden.", deleteMonitorMsg: "Bist du sicher, dass du den Monitor löschen möchtest?", deleteNotificationMsg: "Möchtest du diese Benachrichtigung wirklich für alle Monitore löschen?", - resoverserverDescription: "Cloudflare ist als der Standardserver festgelegt, dieser kann jederzeit geändern werden.", + resolverserverDescription: "Cloudflare ist als der Standardserver festgelegt, dieser kann jederzeit geändern werden.", "Resolver Server": "Auflösungsserver", rrtypeDescription: "Wähle den RR-Typ aus, welchen du überwachen möchtest.", "Last Result": "Letztes Ergebnis", @@ -148,7 +148,7 @@ export default { Token: "Token", "Show URI": "URI anzeigen", Tags: "Tags", - "Add New below or Select...": "Bestehenden Tag auswählen oder neuen hinzufügen...", + "Add New below or Select...": "Einen bestehenden Tag auswählen oder neuen hinzufügen...", "Tag with this name already exist.": "Ein Tag mit diesem Namen existiert bereits.", "Tag with this value already exist.": "Ein Tag mit diesem Wert existiert bereits.", color: "Farbe", @@ -202,7 +202,7 @@ export default { "Push URL": "Push URL", needPushEvery: "Du solltest diese URL alle {0} Sekunden aufrufen", pushOptionalParams: "Optionale Parameter: {0}", - defaultNotificationName: "Meine {notification} Alarm ({number})", + defaultNotificationName: "Mein {notification} Alarm ({number})", here: "hier", Required: "Erforderlich", "Bot Token": "Bot Token", @@ -219,18 +219,18 @@ export default { secureOptionNone: "Keine / STARTTLS (25, 587)", secureOptionTLS: "TLS (465)", "Ignore TLS Error": "TLS-Fehler ignorieren", - "From Email": "Von Email", + "From Email": "Abesender E-Mail", emailCustomSubject: "Benutzerdefinierter Betreff", - "To Email": "Zu Email", + "To Email": "Empfänger E-Mail", smtpCC: "CC", smtpBCC: "BCC", "Discord Webhook URL": "Discord Webhook URL", - wayToGetDiscordURL: "Du kannst diesen erhalten, indem du zu den Servereinstellungen gehst -> Integrationen -> Neuer Webhook", + wayToGetDiscordURL: "Du kannst diese erhalten, indem du zu den Servereinstellungen gehst -> Integrationen -> Neuer Webhook", "Bot Display Name": "Bot-Anzeigename", "Prefix Custom Message": "Benutzerdefinierter Nachrichten Präfix", "Hello @everyone is...": "Hallo {'@'}everyone ist...", "Webhook URL": "Webhook URL", - wayToGetTeamsURL: "Hier erfährst du, wie eine Webhook-URL erstellt werden kann {0}.", + wayToGetTeamsURL: "Wie eine Webhook-URL erstellt werden kann, erfährst du {0}.", Number: "Nummer", Recipients: "Empfänger", needSignalAPI: "Es wird ein Signal Client mit REST-API benötigt.", @@ -243,22 +243,22 @@ export default { "Channel Name": "Kanalname", "Uptime Kuma URL": "Uptime Kuma URL", aboutWebhooks: "Weitere Informationen zu Webhooks auf: {0}", - aboutChannelName: "Gebe den Kanalnamen ein auf {0} Feld Kanalname, wenn du den Webhook-Kanal umgehen möchtest. Ex: #other-channel", - aboutKumaURL: "Wenn das Feld für die Uptime Kuma URL leer gelassen wird, wird es standardmäßig die GitHub Projekt Seite verwenden.", + aboutChannelName: "Gebe den Kanalnamen ein in {0} Feld Kanalname, falls du den Webhook-Kanal umgehen möchtest. Ex: #other-channel", + aboutKumaURL: "Wenn das Feld für die Uptime Kuma URL leer gelassen wird, wird standardmäßig die GitHub Projekt Seite verwendet.", emojiCheatSheet: "Emoji Cheat Sheet: {0}", "User Key": "Benutzerschlüssel", Device: "Gerät", "Message Title": "Nachrichtentitel", "Notification Sound": "Benachrichtigungston", "More info on:": "Mehr Infos auf: {0}", - pushoverDesc1: "Notfallpriorität (2) hat Standardmäßig 30 Sekunden Auszeit, zwischen den Versuchen und läuft nach 1 Stunde ab.", + pushoverDesc1: "Notfallpriorität (2) hat standardmäßig 30 Sekunden Auszeit, zwischen den Versuchen und läuft nach 1 Stunde ab.", pushoverDesc2: "Fülle das Geräte Feld aus, wenn du Benachrichtigungen an verschiedene Geräte senden möchtest.", "SMS Type": "SMS Typ", octopushTypePremium: "Premium (Schnell - zur Benachrichtigung empfohlen)", octopushTypeLowCost: "Kostengünstig (Langsam - manchmal vom Betreiber gesperrt)", checkPrice: "Prüfe {0} Preise:", octopushLegacyHint: "Verwendest du die Legacy-Version von Octopush (2011-2020) oder die neue Version?", - "Check octopush prices": "Überprüfe die Oktopush Preise {0}.", + "Check octopush prices": "Vergleiche die Oktopush Preise {0}.", octopushPhoneNumber: "Telefonnummer (Internationales Format, z.B : +49612345678) ", octopushSMSSender: "Name des SMS-Absenders : 3-11 alphanumerische Zeichen und Leerzeichen (a-zA-Z0-9)", "LunaSea Device ID": "LunaSea Geräte ID", @@ -281,22 +281,22 @@ export default { aboutIconURL: "Du kannst einen Link zu einem Bild in 'Icon URL' übergeben um das Standardprofilbild zu überschreiben. Wird nicht verwendet, wenn ein Icon Emoji gesetzt ist.", aboutMattermostChannelName: "Du kannst den Standardkanal, auf dem der Webhook postet überschreiben, indem der Kanalnamen in das Feld 'Channel Name' eingeben wird. Dies muss in den Mattermost Webhook-Einstellungen aktiviert werden. Ex: #other-channel", matrix: "Matrix", - promosmsTypeEco: "SMS ECO - billig, aber langsam und oft überladen. Nur auf polnische Empfänger beschränkt.", - promosmsTypeFlash: "SMS FLASH - Die Nachricht wird automatisch auf dem Empfängergerät angezeigt. Nur auf polnische Empfänger beschränkt.", + promosmsTypeEco: "SMS ECO - billig, aber langsam und oft überladen. Auf polnische Empfänger beschränkt.", + promosmsTypeFlash: "SMS FLASH - Die Nachricht wird automatisch auf dem Empfängergerät angezeigt. Auf polnische Empfänger beschränkt.", promosmsTypeFull: "SMS FULL - Premium Stufe von SMS, es kann der Absendernamen verwendet werden (Der Name musst zuerst registriert werden). Zuverlässig für Warnungen.", promosmsTypeSpeed: "SMS SPEED - Höchste Priorität im System. Sehr schnell und zuverlässig, aber teuer (Ungefähr das doppelte von SMS FULL).", - promosmsPhoneNumber: "Phone number (Für polnische Empfänger können die Vorwahlen übersprungen werden)", + promosmsPhoneNumber: "Telefonnummer (Für polnische Empfänger können die Vorwahlen übersprungen werden)", promosmsSMSSender: "Name des SMS-Absenders : vorregistrierter Name oder einer der Standardwerte: InfoSMS, SMS Info, MaxSMS, INFO, SMS", "Feishu WebHookUrl": "Feishu Webhook URL", matrixHomeserverURL: "Heimserver URL (mit http(s):// und optionalen Ports)", "Internal Room Id": "Interne Raum-ID", - matrixDesc1: "Die interne Raum-ID findest du im erweiterten Bereich der Raumeinstellungen im Matrix-Client. Es sollte es aussehen wie z.B. !QMdRCpUIfLwsfjxye6:home.server.", - matrixDesc2: "Es wird dringend empfohlen, dass ein neuen Benutzer erstellt wird und nicht den Zugriffstoken deines eigenen Matrix-Benutzers verwendest. Anderfalls ermöglicht es vollen Zugriff auf dein Konto und alle Räume, denen du beigetreten bist. Erstelle stattdessen einen neuen Benutzer und lade ihn nur in den Raum ein, in dem du die Benachrichtigung erhalten möchtest. Du kannst den Zugriffstoken erhalten, indem du folgendes ausführst {0}", + matrixDesc1: "Die interne Raum-ID findest du im erweiterten Bereich der Raumeinstellungen im Matrix-Client. Es sollte aussehen wie z.B. !QMdRCpUIfLwsfjxye6:home.server.", + matrixDesc2: "Es wird dringend empfohlen, einen neuen Benutzer anzulegen und nicht den Zugriffstoken deines eigenen Matrix-Benutzers zu verwendet. Anderfalls ermöglicht es vollen Zugriff auf dein Konto und alle Räume, denen du beigetreten bist. Erstelle stattdessen einen neuen Benutzer und lade ihn nur in den Raum ein, in dem du die Benachrichtigung erhalten möchtest. Du kannst den Zugriffstoken erhalten, indem du folgendes ausführst {0}", Method: "Method", Body: "Body", Headers: "Headers", PushUrl: "Push URL", - HeadersInvalidFormat: "Die Header ist kein gültiges JSON: ", + HeadersInvalidFormat: "Der Header ist kein gültiges JSON: ", BodyInvalidFormat: "Der Body ist kein gültiges JSON: ", "Monitor History": "Monitor Verlauf", clearDataOlderThan: "Bewahre die Monitor-Verlaufsdaten für {0} Tage auf.", @@ -350,4 +350,15 @@ export default { serwersmsPhoneNumber: "Telefonnummer", serwersmsSenderName: "Name des SMS-Absenders (über Kundenportal registriert)", "stackfield": "Stackfield", + clicksendsms: "ClickSend SMS", + apiCredentials: "API Zugangsdaten", + smtpDkimSettings: "DKIM Einstellungen", + smtpDkimDesc: "Für die Verwendung, schaue bitte in die Nodemailer DKIM {0}.", + documentation: "Dokumentation", + smtpDkimDomain: "Domain Name", + smtpDkimKeySelector: "Schlüssel Auswahl", + smtpDkimPrivateKey: "Privater Schlüssel", + smtpDkimHashAlgo: "Hash-Algorithmus (Optional)", + smtpDkimheaderFieldNames: "Zu validierende Header-Schlüssel (optional)", + smtpDkimskipFields: "Zu ignorierende Header Schlüssel (optional)", }; diff --git a/src/languages/en.js b/src/languages/en.js index 47513466..a49db6cb 100644 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -13,7 +13,7 @@ export default { pauseDashboardHome: "Pause", deleteMonitorMsg: "Are you sure want to delete this monitor?", deleteNotificationMsg: "Are you sure want to delete this notification for all monitors?", - resoverserverDescription: "Cloudflare is the default server. You can change the resolver server anytime.", + resolverserverDescription: "Cloudflare is the default server. You can change the resolver server anytime.", rrtypeDescription: "Select the RR type you want to monitor", pauseMonitorMsg: "Are you sure want to pause?", enableDefaultNotificationDescription: "This notification will be enabled by default for new monitors. You can still disable the notification separately for each monitor.", diff --git a/src/languages/es-ES.js b/src/languages/es-ES.js index d772db06..088172bc 100644 --- a/src/languages/es-ES.js +++ b/src/languages/es-ES.js @@ -12,7 +12,7 @@ export default { pauseDashboardHome: "Pausado", deleteMonitorMsg: "¿Seguro que quieres eliminar este monitor?", deleteNotificationMsg: "¿Seguro que quieres eliminar esta notificación para todos los monitores?", - resoverserverDescription: "Cloudflare es el servidor por defecto, puedes cambiar el servidor de resolución en cualquier momento.", + resolverserverDescription: "Cloudflare es el servidor por defecto, puedes cambiar el servidor de resolución en cualquier momento.", rrtypeDescription: "Selecciona el tipo de registro que quieres monitorizar", pauseMonitorMsg: "¿Seguro que quieres pausar?", Settings: "Ajustes", diff --git a/src/languages/et-EE.js b/src/languages/et-EE.js index 52439f5f..224d9811 100644 --- a/src/languages/et-EE.js +++ b/src/languages/et-EE.js @@ -12,7 +12,7 @@ export default { pauseDashboardHome: "Seisatud", deleteMonitorMsg: "Kas soovid eemaldada seire?", deleteNotificationMsg: "Kas soovid eemaldada selle teavitusteenuse kõikidelt seiretelt?", - resoverserverDescription: "Cloudflare on vaikimisi pöördserver.", + resolverserverDescription: "Cloudflare on vaikimisi pöördserver.", rrtypeDescription: "Vali kirje tüüp, mida soovid jälgida.", pauseMonitorMsg: "Kas soovid peatada seire?", Settings: "Seaded", diff --git a/src/languages/fa.js b/src/languages/fa.js index aa5b129f..8901c72a 100644 --- a/src/languages/fa.js +++ b/src/languages/fa.js @@ -13,7 +13,7 @@ export default { pauseDashboardHome: "متوقف شده", deleteMonitorMsg: "آیا از حذف این مانیتور مطمئن هستید؟", deleteNotificationMsg: "آیا مطمئن هستید که میخواهید این سرویس اطلاع‌رسانی را برای تمامی مانیتورها حذف کنید؟", - resoverserverDescription: "سرویس CloudFlare به عنوان سرور پیش‌فرض استفاده می‌شود، شما میتوانید آنرا به هر سرور دیگری بعدا تغییر دهید.", + resolverserverDescription: "سرویس CloudFlare به عنوان سرور پیش‌فرض استفاده می‌شود، شما میتوانید آنرا به هر سرور دیگری بعدا تغییر دهید.", rrtypeDescription: "لطفا نوع Resource Record را انتخاب کنید.", pauseMonitorMsg: "آیا مطمئن هستید که میخواهید این مانیتور را متوقف کنید ؟", enableDefaultNotificationDescription: "برای هر مانیتور جدید، این سرویس اطلاع‌رسانی به صورت پیش‌فرض فعال خواهد شد. البته که شما میتوانید به صورت دستی آنرا برای هر مانیتور به صورت جداگانه غیر فعال کنید.", diff --git a/src/languages/fr-FR.js b/src/languages/fr-FR.js index 04dede1b..39199e4e 100644 --- a/src/languages/fr-FR.js +++ b/src/languages/fr-FR.js @@ -13,7 +13,7 @@ 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.", + resolverserverDescription: "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.", diff --git a/src/languages/hr-HR.js b/src/languages/hr-HR.js index 129403fa..6c7e4ea5 100644 --- a/src/languages/hr-HR.js +++ b/src/languages/hr-HR.js @@ -12,7 +12,7 @@ export default { 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.", + resolverserverDescription: "Cloudflare je zadani DNS poslužitelj. Možete to promijeniti u bilo kojem trenutku.", rrtypeDescription: "Odaberite vrstu DNS zapisa o resursu kojeg želite pratiti", pauseMonitorMsg: "Jeste li sigurni da želite pauzirati?", enableDefaultNotificationDescription: "Ova će obavijesti biti omogućena za sve nove monitore. Možete ju ručno onemogućiti za pojedini monitor.", @@ -338,9 +338,8 @@ export default { "Hide Tags": "Sakrij oznake", Description: "Opis", "No monitors available.": "Nema dostupnih monitora.", - "Add one": "Add one", - "No Monitors": "Bez monitora", "Add one": "Stvori jednog", + "No Monitors": "Bez monitora", "Untitled Group": "Bezimena grupa", Services: "Usluge", Discard: "Odbaci", diff --git a/src/languages/hu.js b/src/languages/hu.js index adcfce28..41979679 100644 --- a/src/languages/hu.js +++ b/src/languages/hu.js @@ -13,7 +13,7 @@ export default { 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.", + resolverserverDescription: "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", 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.", diff --git a/src/languages/id-ID.js b/src/languages/id-ID.js index 5bad2a7e..ef995e47 100644 --- a/src/languages/id-ID.js +++ b/src/languages/id-ID.js @@ -13,7 +13,7 @@ export default { pauseDashboardHome: "Jeda", deleteMonitorMsg: "Apakah Anda mau menghapus monitor ini?", deleteNotificationMsg: "Apakah Anda mau menghapus notifikasi ini untuk semua monitor?", - resoverserverDescription: "Cloudflare adalah server bawaan, Anda dapat mengubah server resolver kapan saja.", + resolverserverDescription: "Cloudflare adalah server bawaan, Anda dapat mengubah server resolver kapan saja.", rrtypeDescription: "Pilih RR-Type yang mau Anda monitor", pauseMonitorMsg: "Apakah Anda yakin mau menjeda?", enableDefaultNotificationDescription: "Untuk setiap monitor baru, notifikasi ini akan diaktifkan secara bawaan. Anda masih dapat menonaktifkan notifikasi secara terpisah untuk setiap monitor.", diff --git a/src/languages/it-IT.js b/src/languages/it-IT.js index 175ade0c..7c2638ba 100644 --- a/src/languages/it-IT.js +++ b/src/languages/it-IT.js @@ -13,7 +13,7 @@ export default { pauseDashboardHome: "In Pausa", deleteMonitorMsg: "Si è certi di voler eliminare questo oggetto monitorato?", deleteNotificationMsg: "Si è certi di voler eliminare questa notifica per tutti gli oggetti monitorati?", - resoverserverDescription: "Cloudflare è il server predefinito, è possibile cambiare il server DNS.", + resolverserverDescription: "Cloudflare è il server predefinito, è possibile cambiare il server DNS.", rrtypeDescription: "Scegliere il tipo di RR che si vuole monitorare", pauseMonitorMsg: "Si è certi di voler mettere in pausa?", enableDefaultNotificationDescription: "Per ogni nuovo monitor questa notifica sarà abilitata di default. È comunque possibile disabilitare la notifica singolarmente.", diff --git a/src/languages/ja.js b/src/languages/ja.js index 9446c78c..3a244d13 100644 --- a/src/languages/ja.js +++ b/src/languages/ja.js @@ -12,7 +12,7 @@ export default { pauseDashboardHome: "一時停止", deleteMonitorMsg: "この監視を削除してよろしいですか?", deleteNotificationMsg: "全ての監視のこの通知を削除してよろしいですか?", - resoverserverDescription: "Cloudflareがデフォルトのサーバーですが、いつでもリゾルバサーバーを変更できます。", + resolverserverDescription: "Cloudflareがデフォルトのサーバーですが、いつでもリゾルバサーバーを変更できます。", rrtypeDescription: "監視するRRタイプを選択します", pauseMonitorMsg: "一時停止しますか?", Settings: "設定", diff --git a/src/languages/ko-KR.js b/src/languages/ko-KR.js index a9ff4b60..fe943793 100644 --- a/src/languages/ko-KR.js +++ b/src/languages/ko-KR.js @@ -13,7 +13,7 @@ export default { pauseDashboardHome: "일시 정지", deleteMonitorMsg: "정말 이 모니터링을 삭제할까요?", deleteNotificationMsg: "정말 이 알림을 모든 모니터링에서 삭제할까요?", - resoverserverDescription: "Cloudflare가 기본 서버예요, 원한다면 언제나 다른 Resolver 서버로 변경할 수 있어요.", + resolverserverDescription: "Cloudflare가 기본 서버예요, 원한다면 언제나 다른 Resolver 서버로 변경할 수 있어요.", rrtypeDescription: "모니터링할 RR-Type을 선택해요.", pauseMonitorMsg: "정말 이 모니터링을 일시 정지할까요?", enableDefaultNotificationDescription: "새로 추가하는 모든 모니터링에 이 알림을 기본적으로 활성화해요. 각 모니터에 대해 별도로 알림을 비활성화할 수 있어요.", diff --git a/src/languages/nb-NO.js b/src/languages/nb-NO.js index 0e566a01..cf0d5d2c 100644 --- a/src/languages/nb-NO.js +++ b/src/languages/nb-NO.js @@ -13,7 +13,7 @@ export default { pauseDashboardHome: "Pause", deleteMonitorMsg: "Er du sikker på at du vil slette denne overvåkningen?", deleteNotificationMsg: "Er du sikker på at du vil slette dette varselet for alle overvåkningene?", - resoverserverDescription: "Cloudflare er standardserveren, kan du når som helst endre DNS-serveren.", + resolverserverDescription: "Cloudflare er standardserveren, kan du når som helst endre DNS-serveren.", rrtypeDescription: "Velg RR-typen du vil overvåke", pauseMonitorMsg: "Er du sikker på at du vil sette en pause?", enableDefaultNotificationDescription: "For hver ny overvåkning vil denne varslingen være aktivert som standard. Du kan fortsatt deaktivere varselet separat for hver overvåkning.", diff --git a/src/languages/nl-NL.js b/src/languages/nl-NL.js index ff18832d..a652b795 100644 --- a/src/languages/nl-NL.js +++ b/src/languages/nl-NL.js @@ -12,7 +12,7 @@ export default { pauseDashboardHome: "Gepauzeerd", deleteMonitorMsg: "Weet u zeker dat u deze monitor wilt verwijderen?", deleteNotificationMsg: "Weet u zeker dat u deze melding voor alle monitoren wilt verwijderen?", - resoverserverDescription: "Cloudflare is de standaardserver, u kunt de resolver server op elk moment wijzigen.", + resolverserverDescription: "Cloudflare is de standaardserver, u kunt de resolver server op elk moment wijzigen.", rrtypeDescription: "Selecteer het RR-type dat u wilt monitoren", pauseMonitorMsg: "Weet je zeker dat je wilt pauzeren?", enableDefaultNotificationDescription: "Voor elke nieuwe monitor wordt deze melding standaard ingeschakeld. U kunt de melding nog steeds afzonderlijk uitschakelen voor elke monitor.", diff --git a/src/languages/pl.js b/src/languages/pl.js index 24dc2ec7..c863e4e3 100644 --- a/src/languages/pl.js +++ b/src/languages/pl.js @@ -13,7 +13,7 @@ export default { pauseDashboardHome: "Wstrzymane", deleteMonitorMsg: "Czy na pewno chcesz usunąć ten monitor?", deleteNotificationMsg: "Czy na pewno chcesz usunąć to powiadomienie dla wszystkich monitorów?", - resoverserverDescription: "Cloudflare jest domyślnym serwerem, możesz zmienić serwer resolver w każdej chwili.", + resolverserverDescription: "Cloudflare jest domyślnym serwerem, możesz zmienić serwer resolver w każdej chwili.", rrtypeDescription: "Wybierz rodzaj rekordu, który chcesz monitorować.", pauseMonitorMsg: "Czy na pewno chcesz wstrzymać monitorowanie?", enableDefaultNotificationDescription: "Dla każdego nowego monitora to powiadomienie będzie domyślnie włączone. Nadal możesz wyłączyć powiadomienia osobno dla każdego monitora.", diff --git a/src/languages/pt-BR.js b/src/languages/pt-BR.js index 70647fd9..f3b1692d 100644 --- a/src/languages/pt-BR.js +++ b/src/languages/pt-BR.js @@ -13,7 +13,7 @@ export default { pauseDashboardHome: "Pausar", deleteMonitorMsg: "Tem certeza de que deseja excluir este monitor?", deleteNotificationMsg: "Tem certeza de que deseja excluir esta notificação para todos os monitores?", - resoverserverDescription: "Cloudflare é o servidor padrão, você pode alterar o servidor resolvedor a qualquer momento.", + resolverserverDescription: "Cloudflare é o servidor padrão, você pode alterar o servidor resolvedor a qualquer momento.", rrtypeDescription: "Selecione o RR-Type que você deseja monitorar", pauseMonitorMsg: "Tem certeza que deseja fazer uma pausa?", enableDefaultNotificationDescription: "Para cada novo monitor, esta notificação será habilitada por padrão. Você ainda pode desativar a notificação separadamente para cada monitor.", diff --git a/src/languages/ru-RU.js b/src/languages/ru-RU.js index c67937b0..97a70a83 100644 --- a/src/languages/ru-RU.js +++ b/src/languages/ru-RU.js @@ -12,7 +12,7 @@ export default { pauseDashboardHome: "Пауза", deleteMonitorMsg: "Вы действительно хотите удалить данный монитор?", deleteNotificationMsg: "Вы действительно хотите удалить это уведомление для всех мониторов?", - resoverserverDescription: "Cloudflare является сервером по умолчанию. Вы всегда можете сменить данный сервер.", + resolverserverDescription: "Cloudflare является сервером по умолчанию. Вы всегда можете сменить данный сервер.", rrtypeDescription: "Выберите тип ресурсной записи, который вы хотите отслеживать", pauseMonitorMsg: "Вы действительно хотите поставить на паузу?", Settings: "Настройки", diff --git a/src/languages/sl-SI.js b/src/languages/sl-SI.js index fff2cbb6..f143f731 100644 --- a/src/languages/sl-SI.js +++ b/src/languages/sl-SI.js @@ -13,7 +13,7 @@ export default { pauseDashboardHome: "Pavza", deleteMonitorMsg: "Ste prepričani, da želite izbrisati ta monitor?", deleteNotificationMsg: "Ste prepričani, da želite izbrisati to obvestilo za vse monitorje?", - resoverserverDescription: "Cloudflare je privzeti strežnik. DNS strežnik lahko spremenite kadarkoli.", + resolverserverDescription: "Cloudflare je privzeti strežnik. DNS strežnik lahko spremenite kadarkoli.", rrtypeDescription: "Izberite RR tip, ki ga želite spremljati", pauseMonitorMsg: "Ste prepričani, da želite pavzirati?", enableDefaultNotificationDescription: "To obvestilo bo kot privzeto omogočeno za vse nove monitorje. Še vedno ga lahko izključite posebej za vsak monitor.", @@ -339,7 +339,6 @@ export default { "No monitors available.": "Nobenega monitorja ni na voljo.", "Add one": "Dodaj enega", "No Monitors": "Ni monitorjev", - "Add one": "Dodaj enega", "Untitled Group": "Skupina brez imena", Services: "Storitve", Discard: "zavrzi", @@ -352,4 +351,4 @@ export default { serwersmsPhoneNumber: "Telefonska številka", serwersmsSenderName: "Ime SMS pošiljatelja (registrirani prek portala za stranke)", "stackfield": "Stackfield", -}; \ No newline at end of file +}; diff --git a/src/languages/sr-latn.js b/src/languages/sr-latn.js index 9e66aa54..39edde48 100644 --- a/src/languages/sr-latn.js +++ b/src/languages/sr-latn.js @@ -12,7 +12,7 @@ export default { pauseDashboardHome: "Pauziraj", deleteMonitorMsg: "Da li ste sigurni da želite da obrišete ovog posmatrača?", deleteNotificationMsg: "Da li ste sigurni d aželite da uklonite ovo obaveštenje za sve posmatrače?", - resoverserverDescription: "Cloudflare je podrazumevani server. Možete promeniti server za raszrešavanje u bilo kom trenutku.", + resolverserverDescription: "Cloudflare je podrazumevani server. Možete promeniti server za raszrešavanje u bilo kom trenutku.", rrtypeDescription: "Odaberite RR-Type koji želite da posmatrate", pauseMonitorMsg: "Da li ste sigurni da želite da pauzirate?", Settings: "Podešavanja", diff --git a/src/languages/sr.js b/src/languages/sr.js index df8e9899..aac79e58 100644 --- a/src/languages/sr.js +++ b/src/languages/sr.js @@ -12,7 +12,7 @@ export default { pauseDashboardHome: "Паузирај", deleteMonitorMsg: "Да ли сте сигурни да желите да обришете овог посматрача?", deleteNotificationMsg: "Да ли сте сигурни д ажелите да уклоните ово обавештење за све посматраче?", - resoverserverDescription: "Cloudflare је подразумевани сервер. Можете променити сервер за расзрешавање у било ком тренутку.", + resolverserverDescription: "Cloudflare је подразумевани сервер. Можете променити сервер за расзрешавање у било ком тренутку.", rrtypeDescription: "Одаберите RR-Type који желите да посматрате", pauseMonitorMsg: "Да ли сте сигурни да желите да паузирате?", Settings: "Подешавања", diff --git a/src/languages/sv-SE.js b/src/languages/sv-SE.js index e29d355c..e1fdadc9 100644 --- a/src/languages/sv-SE.js +++ b/src/languages/sv-SE.js @@ -12,7 +12,7 @@ export default { pauseDashboardHome: "Pausa", deleteMonitorMsg: "Är du säker på att du vill ta bort den här övervakningen?", deleteNotificationMsg: "Är du säker på att du vill ta bort den här notisen för alla övervakare?", - resoverserverDescription: "Cloudflare är den förvalda servern. Du kan byta resolver när som helst.", + resolverserverDescription: "Cloudflare är den förvalda servern. Du kan byta resolver när som helst.", rrtypeDescription: "Välj den RR-typ du vill övervaka", pauseMonitorMsg: "Är du säker på att du vill pausa?", Settings: "Inställningar", diff --git a/src/languages/tr-TR.js b/src/languages/tr-TR.js index e2630603..64fffd9d 100644 --- a/src/languages/tr-TR.js +++ b/src/languages/tr-TR.js @@ -12,7 +12,7 @@ export default { pauseDashboardHome: "Durdur", deleteMonitorMsg: "Servisi silmek istediğinden emin misin?", deleteNotificationMsg: "Bu bildirimi tüm servisler için silmek istediğinden emin misin?", - resoverserverDescription: "Cloudflare varsayılan sunucudur, çözümleyici sunucusunu istediğiniz zaman değiştirebilirsiniz.", + resolverserverDescription: "Cloudflare varsayılan sunucudur, çözümleyici sunucusunu istediğiniz zaman değiştirebilirsiniz.", rrtypeDescription: "İzlemek istediğiniz servisin RR-Tipini seçin", pauseMonitorMsg: "Durdurmak istediğinden emin misin?", clearEventsMsg: "Bu servisin bütün kayıtlarını silmek istediğinden emin misin?", diff --git a/src/languages/vi.js b/src/languages/vi.js index bc2e86de..f28c0046 100644 --- a/src/languages/vi.js +++ b/src/languages/vi.js @@ -13,7 +13,7 @@ export default { pauseDashboardHome: "Tạm dừng", deleteMonitorMsg: "Bạn chắc chắn muốn xóa monitor này chứ?", deleteNotificationMsg: "Bạn có chắc chắn muốn xóa kênh thông báo này cho tất cả monitor?", - resoverserverDescription: "Cloudflare là máy chủ mặc định, bạn có thể thay đổi bất cứ lúc nào.", + resolverserverDescription: "Cloudflare là máy chủ mặc định, bạn có thể thay đổi bất cứ lúc nào.", rrtypeDescription: "Hãy chọn RR-Type mà bạn muốn giám sát", pauseMonitorMsg: "Bạn chắc chắn muốn tạm dừng chứ?", enableDefaultNotificationDescription: "Bật làm mặc định cho mọi monitor mới về sau. Bạn vẫn có thể tắt thông báo riêng cho từng monitor.", diff --git a/src/languages/zh-CN.js b/src/languages/zh-CN.js index 8bbd0dcd..75b0cff0 100644 --- a/src/languages/zh-CN.js +++ b/src/languages/zh-CN.js @@ -12,7 +12,7 @@ export default { pauseDashboardHome: "暂停", deleteMonitorMsg: "确定要删除此监控吗?", deleteNotificationMsg: "确定要删除此消息通知吗?这将对所有监控生效。", - resoverserverDescription: "可自定义要使用的DNS服务器", + resolverserverDescription: "可自定义要使用的DNS服务器", rrtypeDescription: "选择要监控的资源记录类型", pauseMonitorMsg: "确定要暂停吗?", Settings: "设置", diff --git a/src/languages/zh-HK.js b/src/languages/zh-HK.js index 7f5e2259..cd574970 100644 --- a/src/languages/zh-HK.js +++ b/src/languages/zh-HK.js @@ -100,7 +100,7 @@ export default { deleteNotificationMsg: "是否確定刪除這個通知設定?如監測器啟用了這個通知,將會收不到通知。", "Resolver Server": "DNS 伺服器", "Resource Record Type": "DNS 記錄類型", - resoverserverDescription: "預設值為 Cloudflare DNS 伺服器,你可以轉用其他 DNS 伺服器。", + resolverserverDescription: "預設值為 Cloudflare DNS 伺服器,你可以轉用其他 DNS 伺服器。", rrtypeDescription: "請選擇 DNS 記錄類型", pauseMonitorMsg: "是否確定暫停?", "Last Result": "最後結果", diff --git a/src/languages/zh-TW.js b/src/languages/zh-TW.js index 0e905260..6f5bc099 100644 --- a/src/languages/zh-TW.js +++ b/src/languages/zh-TW.js @@ -13,7 +13,7 @@ export default { pauseDashboardHome: "暫停", deleteMonitorMsg: "您確定要刪除此監測器嗎?", deleteNotificationMsg: "您確定要為所有監測器刪除此通知嗎?", - resoverserverDescription: "Cloudflare 為預設伺服器。您可以隨時更換解析伺服器。", + resolverserverDescription: "Cloudflare 為預設伺服器。您可以隨時更換解析伺服器。", rrtypeDescription: "選擇您想要監測的資源記錄類型", pauseMonitorMsg: "您確定要暫停嗎?", enableDefaultNotificationDescription: "預設情況下,新監測器將啟用此通知。您仍可分別停用各監測器的通知。", @@ -340,7 +340,6 @@ export default { "No monitors available.": "沒有可用的監測器。", "Add one": "新增一個", "No Monitors": "無監測器", - "Add one": "新增一個", "Untitled Group": "未命名群組", Services: "服務", Discard: "捨棄", diff --git a/src/pages/EditMonitor.vue b/src/pages/EditMonitor.vue index 4b6a920c..f89e63bf 100644 --- a/src/pages/EditMonitor.vue +++ b/src/pages/EditMonitor.vue @@ -87,7 +87,7 @@ <label for="dns_resolve_server" class="form-label">{{ $t("Resolver Server") }}</label> <input id="dns_resolve_server" v-model="monitor.dns_resolve_server" type="text" class="form-control" :pattern="ipRegex" required> <div class="form-text"> - {{ $t("resoverserverDescription") }} + {{ $t("resolverserverDescription") }} </div> </div> From 3e87eb596f623a67c9f1e1bd83fc7d8e2d7494ba Mon Sep 17 00:00:00 2001 From: Hans Mayer <hans.mayer@outletcity.com> Date: Sat, 15 Jan 2022 12:25:17 +0100 Subject: [PATCH 221/282] change wording, according to PR suggestions --- src/languages/de-DE.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/languages/de-DE.js b/src/languages/de-DE.js index f1808d5c..04be67ae 100644 --- a/src/languages/de-DE.js +++ b/src/languages/de-DE.js @@ -98,7 +98,7 @@ export default { keywordDescription: "Ein Suchwort in der HTML- oder JSON-Ausgabe finden. Bitte beachte: es wird zwischen Groß-/Kleinschreibung unterschieden.", deleteMonitorMsg: "Bist du sicher, dass du den Monitor löschen möchtest?", deleteNotificationMsg: "Möchtest du diese Benachrichtigung wirklich für alle Monitore löschen?", - resolverserverDescription: "Cloudflare ist als der Standardserver festgelegt, dieser kann jederzeit geändern werden.", + resolverserverDescription: "Cloudflare ist als der Standardserver festgelegt. Dieser kann jederzeit geändert werden.", "Resolver Server": "Auflösungsserver", rrtypeDescription: "Wähle den RR-Typ aus, welchen du überwachen möchtest.", "Last Result": "Letztes Ergebnis", @@ -219,7 +219,7 @@ export default { secureOptionNone: "Keine / STARTTLS (25, 587)", secureOptionTLS: "TLS (465)", "Ignore TLS Error": "TLS-Fehler ignorieren", - "From Email": "Abesender E-Mail", + "From Email": "Absender E-Mail", emailCustomSubject: "Benutzerdefinierter Betreff", "To Email": "Empfänger E-Mail", smtpCC: "CC", @@ -251,7 +251,7 @@ export default { "Message Title": "Nachrichtentitel", "Notification Sound": "Benachrichtigungston", "More info on:": "Mehr Infos auf: {0}", - pushoverDesc1: "Notfallpriorität (2) hat standardmäßig 30 Sekunden Auszeit, zwischen den Versuchen und läuft nach 1 Stunde ab.", + pushoverDesc1: "Notfallpriorität (2) hat standardmäßig 30 Sekunden Auszeit zwischen den Versuchen und läuft nach 1 Stunde ab.", pushoverDesc2: "Fülle das Geräte Feld aus, wenn du Benachrichtigungen an verschiedene Geräte senden möchtest.", "SMS Type": "SMS Typ", octopushTypePremium: "Premium (Schnell - zur Benachrichtigung empfohlen)", @@ -285,13 +285,13 @@ export default { promosmsTypeFlash: "SMS FLASH - Die Nachricht wird automatisch auf dem Empfängergerät angezeigt. Auf polnische Empfänger beschränkt.", promosmsTypeFull: "SMS FULL - Premium Stufe von SMS, es kann der Absendernamen verwendet werden (Der Name musst zuerst registriert werden). Zuverlässig für Warnungen.", promosmsTypeSpeed: "SMS SPEED - Höchste Priorität im System. Sehr schnell und zuverlässig, aber teuer (Ungefähr das doppelte von SMS FULL).", - promosmsPhoneNumber: "Telefonnummer (Für polnische Empfänger können die Vorwahlen übersprungen werden)", + promosmsPhoneNumber: "Telefonnummer (für polnische Empfänger können die Vorwahlen übersprungen werden)", promosmsSMSSender: "Name des SMS-Absenders : vorregistrierter Name oder einer der Standardwerte: InfoSMS, SMS Info, MaxSMS, INFO, SMS", "Feishu WebHookUrl": "Feishu Webhook URL", matrixHomeserverURL: "Heimserver URL (mit http(s):// und optionalen Ports)", "Internal Room Id": "Interne Raum-ID", matrixDesc1: "Die interne Raum-ID findest du im erweiterten Bereich der Raumeinstellungen im Matrix-Client. Es sollte aussehen wie z.B. !QMdRCpUIfLwsfjxye6:home.server.", - matrixDesc2: "Es wird dringend empfohlen, einen neuen Benutzer anzulegen und nicht den Zugriffstoken deines eigenen Matrix-Benutzers zu verwendet. Anderfalls ermöglicht es vollen Zugriff auf dein Konto und alle Räume, denen du beigetreten bist. Erstelle stattdessen einen neuen Benutzer und lade ihn nur in den Raum ein, in dem du die Benachrichtigung erhalten möchtest. Du kannst den Zugriffstoken erhalten, indem du folgendes ausführst {0}", + matrixDesc2: "Es wird dringend empfohlen einen neuen Benutzer anzulegen und nicht den Zugriffstoken deines eigenen Matrix-Benutzers zu verwenden. Anderenfalls ermöglicht es vollen Zugriff auf dein Konto und alle Räume, denen du beigetreten bist. Erstelle stattdessen einen neuen Benutzer und lade ihn nur in den Raum ein, in dem du die Benachrichtigung erhalten möchtest. Du kannst den Zugriffstoken erhalten, indem du Folgendes ausführst {0}", Method: "Method", Body: "Body", Headers: "Headers", @@ -353,7 +353,7 @@ export default { clicksendsms: "ClickSend SMS", apiCredentials: "API Zugangsdaten", smtpDkimSettings: "DKIM Einstellungen", - smtpDkimDesc: "Für die Verwendung, schaue bitte in die Nodemailer DKIM {0}.", + smtpDkimDesc: "Details zur Konfiguration sind in der Nodemailer DKIM {0} zu finden.", documentation: "Dokumentation", smtpDkimDomain: "Domain Name", smtpDkimKeySelector: "Schlüssel Auswahl", From 63a3704836c8edb275a30521f1d0c61adfe7ffb0 Mon Sep 17 00:00:00 2001 From: Erik <58110607+drodmantras@users.noreply.github.com> Date: Sun, 16 Jan 2022 12:29:00 +0100 Subject: [PATCH 222/282] Update sl-SI.js --- src/languages/sl-SI.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/languages/sl-SI.js b/src/languages/sl-SI.js index fff2cbb6..35fd0097 100644 --- a/src/languages/sl-SI.js +++ b/src/languages/sl-SI.js @@ -2,9 +2,9 @@ export default { languageName: "Slovenščina", checkEverySecond: "Preveri na vsakih {0} sekund", retryCheckEverySecond: "Ponovno poskusi na vsakih {0} sekund", - retriesDescription: "Maksimalno število poskusov predenj se storitev označi kot nedosegljiva in se pošlje obvestilo", + retriesDescription: "Maksimalno število poskusov predenj se storitev označi kot 'ne deluje' in se pošlje obvestilo", ignoreTLSError: "Ignoriraj TLS/SSL napake za HTTPS spletne strani", - upsideDownModeDescription: "Negiraj status. Če je storitev dosegljiva je NEDOSEGLJIVA.", + upsideDownModeDescription: "Negiraj status. Če je storitev deluje bo označena kot 'ne deluje'.", maxRedirectDescription: "Maksimalno število sledečih preusmeritev. 0 onemogoči preusmeritve.", acceptedStatusCodesDescription: "Izberi kode statusa veljavna kot uspešen odgovor.", passwordNotMatchMsg: "Ponovljeno geslo se ne ujema.", @@ -40,8 +40,8 @@ export default { Add: "Dodaj", "Add New Monitor": "Dodaj nov monitor", "Quick Stats": "Hitro stanje", - Up: "Dosegljiv", - Down: "Nedosegljiv", + Up: "Deluje", + Down: "Ne deluje", Pending: "Na čakanju", Unknown: "Neznano", Pause: "Pavza", From 847a19afc18da628a40ca4fb83e1e79842f0ffb6 Mon Sep 17 00:00:00 2001 From: Roy Feng <rayzggz@ranfu.net> Date: Mon, 17 Jan 2022 15:03:39 +0800 Subject: [PATCH 223/282] Update zh-CN.js --- src/languages/zh-CN.js | 657 +++++++++++++++++++++++------------------ 1 file changed, 364 insertions(+), 293 deletions(-) diff --git a/src/languages/zh-CN.js b/src/languages/zh-CN.js index 8bbd0dcd..631df0dd 100644 --- a/src/languages/zh-CN.js +++ b/src/languages/zh-CN.js @@ -1,294 +1,365 @@ export default { - languageName: "简体中文", - checkEverySecond: "检测频率 {0} 秒", - retriesDescription: "最大重试失败次数", - ignoreTLSError: "忽略HTTPS站点的证书错误", - upsideDownModeDescription: "反向状态监控(状态码范围外为有效状态,反之为无效)", - maxRedirectDescription: "最大重定向次数,设置为 0 禁止重定向", - acceptedStatusCodesDescription: "选择被视为成功响应的状态码", - passwordNotMatchMsg: "两次密码输入不一致", - notificationDescription: "请为监控项配置消息通知", - keywordDescription: "检测响应内容中的关键字,区分大小写", - pauseDashboardHome: "暂停", - deleteMonitorMsg: "确定要删除此监控吗?", - deleteNotificationMsg: "确定要删除此消息通知吗?这将对所有监控生效。", - resoverserverDescription: "可自定义要使用的DNS服务器", - rrtypeDescription: "选择要监控的资源记录类型", - pauseMonitorMsg: "确定要暂停吗?", - Settings: "设置", - Dashboard: "仪表盘", - "New Update": "有新版本更新", - Language: "语言", - Appearance: "外观设置", - Theme: "主题", - General: "基本设置", - "Primary Base URL": "站点地址(URL)", - Version: "版本", - "Check Update On GitHub": "检查更新", - List: "列表", - Add: "添加", - "Add New Monitor": "创建监控项", - "Quick Stats": "状态速览", - Up: "正常", - Down: "故障", - Pending: "检测失败", - Unknown: "未知", - Pause: "暂停", - Name: "名称", - Status: "状态", - DateTime: "时间", - Message: "事件", - "No important events": "暂无重要事件", - Resume: "恢复", - Edit: "修改", - Delete: "删除", - Current: "当前", - Uptime: "可用率", - "Cert Exp.": "证书有效期", - days: "天", - day: "天", - "-day": " 天", - hour: "小时", - "-hour": " 小时", - Response: "响应时长", - Ping: "Ping", - "Monitor Type": "监控类型", - Keyword: "关键字", - "Friendly Name": "自定义名称", - URL: "网址URL", - Hostname: "主机名", - Port: "端口号", - "Heartbeat Interval": "心跳间隔", - Retries: "重试次数", - Advanced: "高级选项", - "Upside Down Mode": "反向监控", - "Max. Redirects": "重定向次数", - "Accepted Status Codes": "有效状态码", - "Push URL": "推送链接", - needPushEvery: "你需要每 {0} 秒调用一次", - pushOptionalParams: "可选参数:{0}", - Save: "保存", - Notifications: "消息通知", - "Not available, please setup.": "无可用通道,请先设置", - "Setup Notification": "设置通知", - Light: "明亮", - Dark: "黑暗", - Auto: "自动", - "Theme - Heartbeat Bar": "状态显示", - Normal: "正常显示", - Bottom: "靠下显示", - None: "不显示", - Timezone: "时区", - "Search Engine Visibility": "搜索引擎设置", - "Allow indexing": "允许索引", - "Discourage search engines from indexing site": "阻止搜索引擎索引网站", - "Change Password": "修改密码", - "Current Password": "当前密码", - "New Password": "新的密码", - "Repeat New Password": "重复新的密码", - "Update Password": "更新密码", - "Disable Auth": "禁用身份验证", - "Enable Auth": "启用身份验证", - Logout: "退出", - Leave: "离开", - "I understand, please disable": "我已了解,继续禁用", - Confirm: "确认", - Yes: "确定", - No: "取消", - Username: "用户名", - Password: "密码", - "Remember me": "记住登录", - Login: "登录", - "No Monitors, please": "还没有监控项,", - "add one": "点击新增", - "Notification Type": "消息类型", - Email: "邮件", - Test: "测试一下", - "Certificate Info": "证书信息", - "Resolver Server": "解析服务器", - "Resource Record Type": "资源记录类型", - "Last Result": "最后结果", - "Create your admin account": "创建管理员账号", - "Repeat Password": "重复密码", - respTime: "响应时间(毫秒)", - notAvailableShort: "N/A", - Create: "创建", - clearEventsMsg: "确定要删除此监控项的所有事件吗?", - clearHeartbeatsMsg: "确定要删除此监控项的所有状态吗?", - confirmClearStatisticsMsg: "确定要删除所有统计信息吗?", - "Clear Data": "清除数据", - Events: "事件", - Heartbeats: "心跳", - "Auto Get": "自动获取", - enableDefaultNotificationDescription: "新的监控项将默认启用,你也可以在每个监控项中分别设置", - "Default enabled": "默认开启", - "Also apply to existing monitors": "应用到所有监控项", - Export: "导出", - Import: "导入", - backupDescription: "你可以将所有的监控项和消息通知备份到一个 JSON 文件中", - backupDescription2: "注意: 不包括历史状态和事件数据", - backupDescription3: "导出的文件中可能包含敏感信息,如消息通知的 Token 信息,请小心存放!", - alertNoFile: "请选择一个文件导入", - alertWrongFileType: "请选择一个 JSON 格式的文件", - twoFAVerifyLabel: "请输入Token以验证 2FA(二次验证)是否正常工作", - tokenValidSettingsMsg: "Token有效!您现在可以保存 2FA(二次验证)设置", - confirmEnableTwoFAMsg: "确定要启用 2FA(二次验证)吗?", - confirmDisableTwoFAMsg: "确定要禁用 2FA(二次验证)吗?", - "Apply on all existing monitors": "应用到所有监控项", - "Verify Token": "验证 Token", - "Setup 2FA": "设置 2FA", - "Enable 2FA": "启用 2FA", - "Disable 2FA": "禁用 2FA", - "2FA Settings": "2FA 设置", - "Two Factor Authentication": "双因素认证", - Active: "生效", - Inactive: "未生效", - Token: "Token", - "Show URI": "显示链接", - "Clear all statistics": "清除所有统计数据", - retryCheckEverySecond: "重试间隔 {0} 秒", - 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)": "值(可选)", - Gray: "灰色", - Red: "红色", - Orange: "橙色", - Green: "绿色", - Blue: "蓝色", - Indigo: "靛蓝", - Purple: "紫色", - Pink: "粉色", - "Search...": "搜索...", - "Avg. Ping": "平均 Ping", - "Avg. Response": "平均响应", - "Entry Page": "入口页面", - statusPageNothing: "这里什么也没有,请添加一个分组或一个监控项。", - "No Services": "无服务", - "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: "电子邮件(SMTP)", - discord: "Discord", - teams: "Microsoft Teams", - signal: "Signal", - gotify: "Gotify", - slack: "Slack", - "rocket.chat": "Rocket.chat", - pushover: "Pushover", - pushy: "Pushy", - octopush: "Octopush", - promosms: "PromoSMS", - lunasea: "LunaSea", - apprise: "Apprise (支持50+种通知服务)", - pushbullet: "Pushbullet", - line: "Line Messenger", - mattermost: "Mattermost", - "Feishu WebHookUrl": "飞书 WebHook 地址", - defaultNotificationName: "{notification} 通知({number})", - here: "这里", - Required: "必填", - "Bot Token": "Bot Token", - wayToGetTelegramToken: "你可以从 {0} 获取 Token。", - "Chat ID": "Chat ID", - supportTelegramChatID: "支持对话/群组/频道的 ID", - wayToGetTelegramChatID: "你可以发送一条消息给你的机器人然后到下面的链接来查看你的 chat_id:", - "YOUR BOT TOKEN HERE": "这里替换成你的 BOT TOKEN", - chatIDNotFound: "没有找到 Chat ID,请先给你的机器人发送一条消息。", - "Post URL": "目标链接", - "Content Type": "Content Type", - webhookJsonDesc: "{0} 适合现代的服务,比如 express.js", - webhookFormDataDesc: "{multipart} 适合PHP,解码使用 {decodeFunction}", - secureOptionNone: "无 / STARTTLS(25,587)", - secureOptionTLS: "TLS(465)", - "Ignore TLS Error": "忽略 TLS 错误", - "From Email": "发信人", - "To Email": "收信人", - smtpCC: "抄送", - smtpBCC: "密送", - "Discord Webhook URL": "Discord Webhook 链接", - wayToGetDiscordURL: "获取方式:服务器设置 -> 整合 -> 创建 Webhook", - "Bot Display Name": "机器人显示名称", - "Prefix Custom Message": "自定义消息前缀", - "Hello @everyone is...": "{'@'}所有人,……", - "Webhook URL": "Webhook 链接", - wayToGetTeamsURL: "你可以在 {0} 获取 Webhook 链接。", - Number: "号码", - Recipients: "收件人", - needSignalAPI: "你需要有一个带 REST API 的 Signal 客户端。", - wayToCheckSignalURL: "你可以通过下面的链接来了解如何设置:", - signalImportant: "重要:你不能混合设定收件人的分组和号码!", - "Application Token": "Application Token", - "Server URL": "服务器链接", - Priority: "优先级", - "Icon Emoji": "Emoji 图标", - "Channel Name": "频道名称", - "Uptime Kuma URL": "Uptime Kuma 链接", - aboutWebhooks: "关于 Webhook 的更多信息:{0}", - aboutChannelName: "如果你想绕过 Webhook 设定的频道,请在设定 {0} 的频道名称字段为你想要的频道。例:#other-channel", - aboutKumaURL: "如果保留 Uptime Kuma 链接为空,将会默认指向项目的 Github 页面。", - emojiCheatSheet: "Emoji 参考表:{0}", - "User Key": "User Key", - Device: "设备", - "Message Title": "消息标题", - "Notification Sound": "通知铃声", - "More info on:": "更多信息:{0}", - pushoverDesc1: "紧急优先级(2)会在一小时内每30秒重试一次。", - pushoverDesc2: "如果你想发送通知给不同的设备,请填写“设备”字段。", - "SMS Type": "短信类型", - octopushTypePremium: "Premium(快 - 推荐用于警报)", - octopushTypeLowCost: "Low Cost(慢 - 有时会被运营商屏蔽)", - "Check octopush prices": "查看 Octopush 的价格 {0}。", - octopushPhoneNumber: "电话号码(国际格式,例:+33612345678)", - octopushSMSSender: "短信发送名称:3-11位大小写字母、数字和空格(a-zA-Z0-9)", - "LunaSea Device ID": "LunaSea 设备 ID", - "Apprise URL": "Apprise 链接", - "Example:": "例:{0}", - "Read more:": "了解更多:{0}", - "Status:": "状态:{0}", - "Read more": "了解更多", - appriseInstalled: "Apprise 已安装", - appriseNotInstalled: "Apprise 未安装。{0}", - "Access Token": "Access Token", - "Channel access token": "频道 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: "首先访问 {0},创建一个提供者和频道(Messaging API),然后你就可以从上面提到的地方获取频道的 access token 和用户 ID。", - "Icon URL": "图标链接", - aboutIconURL: "你可以在“Icon URL”中提供一个图片地址来覆盖默认的资料图片。如果设置了 Emoji 图标此字段会被忽略。", - aboutMattermostChannelName: "如果你想覆盖 Webhook 设定的频道,请在“频道名称”字段为你想要的频道。这需要在 Mattermost 的 Webhook 设定中启用。例:#other-channel", - matrix: "Matrix", - promosmsTypeEco: "SMS ECO - 便宜但是慢,并且容易超负荷。仅限波兰地区的收件人。", - promosmsTypeFlash: "SMS FLASH - 消息会自动显示在收件人设备上。仅限波兰地区的收件人。", - promosmsTypeFull: "SMS FULL - 高等级,你可以使用你自己的发件人名称(你需要先注册一个). 对于警报来说更可靠。", - promosmsTypeSpeed: "SMS SPEED - 最高优先级。非常快速可靠,但更贵(越两倍 SMS FULL 等级的价格)。", - promosmsPhoneNumber: "电话号码(波兰地区收件人可以不填区号)", - promosmsSMSSender: "短信发件人名称:已注册的名称或以下默认值之一:InfoSMS,SMS Info,MaxSMS,INFO,SMS", - checkPrice: "查看 {0} 的价格:", - octopushLegacyHint: "你是否在使用旧版本的 Octopush(2011-2020)?", - matrixHomeserverURL: "服务器链接(开头带 http(s):// 和可能的需要的端口号)", - "Internal Room Id": "Internal Room Id", - matrixDesc1: "你可以在 Matrix 客户端房间设置的高级选项找到 Internal Room Id。格式类似于 !QMdRCpUIfLwsfjxye6:home.server。", - matrixDesc2: "请不要使用你自己的 Access Token,这将开放你所有的账户权限和你加入的房间权限。你可以创建一个新的用户并邀请它至你允许的的房间中。你可以运行以下命令来获取 Access Token:{0}", -}; + languageName: "简体中文", + checkEverySecond: "检测频率 {0} 秒", + retriesDescription: "最大重试失败次数", + ignoreTLSError: "忽略HTTPS站点的证书错误", + upsideDownModeDescription: "反向状态监控(状态码范围外为有效状态,反之为无效)", + maxRedirectDescription: "最大重定向次数,设置为 0 禁止重定向", + acceptedStatusCodesDescription: "选择被视为成功响应的状态码", + passwordNotMatchMsg: "两次密码输入不一致", + notificationDescription: "请为监控项配置消息通知", + keywordDescription: "检测响应内容中的关键字,区分大小写", + pauseDashboardHome: "暂停", + deleteMonitorMsg: "确定要删除此监控吗?", + deleteNotificationMsg: "确定要删除此消息通知吗?这将对所有监控生效。", + resoverserverDescription: "可自定义要使用的DNS服务器", + rrtypeDescription: "选择要监控的资源记录类型", + pauseMonitorMsg: "确定要暂停吗?", + Settings: "设置", + Dashboard: "仪表盘", + "New Update": "有新版本更新", + Language: "语言", + Appearance: "外观设置", + Theme: "主题", + General: "基本设置", + "Primary Base URL": "站点地址(URL)", + Version: "版本", + "Check Update On GitHub": "检查更新", + List: "列表", + Add: "添加", + "Add New Monitor": "创建监控项", + "Quick Stats": "状态速览", + Up: "正常", + Down: "故障", + Pending: "检测失败", + Unknown: "未知", + Pause: "暂停", + Name: "名称", + Status: "状态", + DateTime: "时间", + Message: "事件", + "No important events": "暂无重要事件", + Resume: "恢复", + Edit: "修改", + Delete: "删除", + Current: "当前", + Uptime: "可用率", + "Cert Exp.": "证书有效期", + days: "天", + day: "天", + "-day": " 天", + hour: "小时", + "-hour": " 小时", + Response: "响应时长", + Ping: "Ping", + "Monitor Type": "监控类型", + Keyword: "关键字", + "Friendly Name": "自定义名称", + URL: "网址URL", + Hostname: "主机名", + Port: "端口号", + "Heartbeat Interval": "心跳间隔", + Retries: "重试次数", + Advanced: "高级选项", + "Upside Down Mode": "反向监控", + "Max. Redirects": "重定向次数", + "Accepted Status Codes": "有效状态码", + "Push URL": "推送链接", + needPushEvery: "你需要每 {0} 秒调用一次", + pushOptionalParams: "可选参数:{0}", + Save: "保存", + Notifications: "消息通知", + "Not available, please setup.": "无可用通道,请先设置", + "Setup Notification": "设置通知", + Light: "明亮", + Dark: "黑暗", + Auto: "自动", + "Theme - Heartbeat Bar": "状态显示", + Normal: "正常显示", + Bottom: "靠下显示", + None: "不显示", + Timezone: "时区", + "Search Engine Visibility": "搜索引擎设置", + "Allow indexing": "允许索引", + "Discourage search engines from indexing site": "阻止搜索引擎索引网站", + "Change Password": "修改密码", + "Current Password": "当前密码", + "New Password": "新的密码", + "Repeat New Password": "重复新的密码", + "Update Password": "更新密码", + "Disable Auth": "禁用身份验证", + "Enable Auth": "启用身份验证", + Logout: "退出", + Leave: "离开", + "I understand, please disable": "我已了解,继续禁用", + Confirm: "确认", + Yes: "确定", + No: "取消", + Username: "用户名", + Password: "密码", + "Remember me": "记住登录", + Login: "登录", + "No Monitors, please": "还没有监控项,", + "add one": "点击新增", + "Notification Type": "消息类型", + Email: "邮件", + Test: "测试一下", + "Certificate Info": "证书信息", + "Resolver Server": "解析服务器", + "Resource Record Type": "资源记录类型", + "Last Result": "最后结果", + "Create your admin account": "创建管理员账号", + "Repeat Password": "重复密码", + respTime: "响应时间(毫秒)", + notAvailableShort: "N/A", + Create: "创建", + clearEventsMsg: "确定要删除此监控项的所有事件吗?", + clearHeartbeatsMsg: "确定要删除此监控项的所有状态吗?", + confirmClearStatisticsMsg: "确定要删除所有统计信息吗?", + "Clear Data": "清除数据", + Events: "事件", + Heartbeats: "心跳", + "Auto Get": "自动获取", + enableDefaultNotificationDescription: "新的监控项将默认启用,你也可以在每个监控项中分别设置", + "Default enabled": "默认开启", + "Also apply to existing monitors": "应用到所有监控项", + Export: "导出", + Import: "导入", + backupDescription: "你可以将所有的监控项和消息通知备份到一个 JSON 文件中", + backupDescription2: "注意: 不包括历史状态和事件数据", + backupDescription3: "导出的文件中可能包含敏感信息,如消息通知的 Token 信息,请小心存放!", + alertNoFile: "请选择一个文件导入", + alertWrongFileType: "请选择一个 JSON 格式的文件", + twoFAVerifyLabel: "请输入Token以验证 2FA(二次验证)是否正常工作", + tokenValidSettingsMsg: "Token有效!您现在可以保存 2FA(二次验证)设置", + confirmEnableTwoFAMsg: "确定要启用 2FA(二次验证)吗?", + confirmDisableTwoFAMsg: "确定要禁用 2FA(二次验证)吗?", + "Apply on all existing monitors": "应用到所有监控项", + "Verify Token": "验证 Token", + "Setup 2FA": "设置 2FA", + "Enable 2FA": "启用 2FA", + "Disable 2FA": "禁用 2FA", + "2FA Settings": "2FA 设置", + "Two Factor Authentication": "双因素认证", + Active: "生效", + Inactive: "未生效", + Token: "Token", + "Show URI": "显示链接", + "Clear all statistics": "清除所有统计数据", + retryCheckEverySecond: "重试间隔 {0} 秒", + 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)": "值(可选)", + Gray: "灰色", + Red: "红色", + Orange: "橙色", + Green: "绿色", + Blue: "蓝色", + Indigo: "靛蓝", + Purple: "紫色", + Pink: "粉色", + "Search...": "搜索...", + "Avg. Ping": "平均 Ping", + "Avg. Response": "平均响应", + "Entry Page": "入口页面", + statusPageNothing: "这里什么也没有,请添加一个分组或一个监控项。", + "No Services": "无服务", + "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: "电子邮件(SMTP)", + discord: "Discord", + teams: "Microsoft Teams", + signal: "Signal", + gotify: "Gotify", + slack: "Slack", + "rocket.chat": "Rocket.chat", + pushover: "Pushover", + pushy: "Pushy", + octopush: "Octopush", + promosms: "PromoSMS", + lunasea: "LunaSea", + apprise: "Apprise (支持50+种通知服务)", + pushbullet: "Pushbullet", + line: "Line Messenger", + mattermost: "Mattermost", + "Feishu WebHookUrl": "飞书 WebHook 地址", + defaultNotificationName: "{notification} 通知({number})", + here: "这里", + Required: "必填", + "Bot Token": "Bot Token", + wayToGetTelegramToken: "你可以从 {0} 获取 Token。", + "Chat ID": "Chat ID", + supportTelegramChatID: "支持对话/群组/频道的 ID", + wayToGetTelegramChatID: "你可以发送一条消息给你的机器人然后到下面的链接来查看你的 chat_id:", + "YOUR BOT TOKEN HERE": "这里替换成你的 BOT TOKEN", + chatIDNotFound: "没有找到 Chat ID,请先给你的机器人发送一条消息。", + "Post URL": "目标链接", + "Content Type": "Content Type", + webhookJsonDesc: "{0} 适合现代的服务,比如 express.js", + webhookFormDataDesc: "{multipart} 适合PHP,解码使用 {decodeFunction}", + secureOptionNone: "无 / STARTTLS(25,587)", + secureOptionTLS: "TLS(465)", + "Ignore TLS Error": "忽略 TLS 错误", + "From Email": "发信人", + "To Email": "收信人", + smtpCC: "抄送", + smtpBCC: "密送", + "Discord Webhook URL": "Discord Webhook 链接", + wayToGetDiscordURL: "获取方式:服务器设置 -> 整合 -> 创建 Webhook", + "Bot Display Name": "机器人显示名称", + "Prefix Custom Message": "自定义消息前缀", + "Hello @everyone is...": "{'@'}所有人,……", + "Webhook URL": "Webhook 链接", + wayToGetTeamsURL: "你可以在 {0} 获取 Webhook 链接。", + Number: "号码", + Recipients: "收件人", + needSignalAPI: "你需要有一个带 REST API 的 Signal 客户端。", + wayToCheckSignalURL: "你可以通过下面的链接来了解如何设置:", + signalImportant: "重要:你不能混合设定收件人的分组和号码!", + "Application Token": "Application Token", + "Server URL": "服务器链接", + Priority: "优先级", + "Icon Emoji": "Emoji 图标", + "Channel Name": "频道名称", + "Uptime Kuma URL": "Uptime Kuma 链接", + aboutWebhooks: "关于 Webhook 的更多信息:{0}", + aboutChannelName: "如果你想绕过 Webhook 设定的频道,请在设定 {0} 的频道名称字段为你想要的频道。例:#other-channel", + aboutKumaURL: "如果保留 Uptime Kuma 链接为空,将会默认指向项目的 Github 页面。", + emojiCheatSheet: "Emoji 参考表:{0}", + "User Key": "User Key", + Device: "设备", + "Message Title": "消息标题", + "Notification Sound": "通知铃声", + "More info on:": "更多信息:{0}", + pushoverDesc1: "紧急优先级(2)会在一小时内每30秒重试一次。", + pushoverDesc2: "如果你想发送通知给不同的设备,请填写“设备”字段。", + "SMS Type": "短信类型", + octopushTypePremium: "Premium(快 - 推荐用于警报)", + octopushTypeLowCost: "Low Cost(慢 - 有时会被运营商屏蔽)", + "Check octopush prices": "查看 Octopush 的价格 {0}。", + octopushPhoneNumber: "电话号码(国际格式,例:+33612345678)", + octopushSMSSender: "短信发送名称:3-11位大小写字母、数字和空格(a-zA-Z0-9)", + "LunaSea Device ID": "LunaSea 设备 ID", + "Apprise URL": "Apprise 链接", + "Example:": "例:{0}", + "Read more:": "了解更多:{0}", + "Status:": "状态:{0}", + "Read more": "了解更多", + appriseInstalled: "Apprise 已安装", + appriseNotInstalled: "Apprise 未安装。{0}", + "Access Token": "Access Token", + "Channel access token": "频道 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: "首先访问 {0},创建一个提供者和频道(Messaging API),然后你就可以从上面提到的地方获取频道的 access token 和用户 ID。", + "Icon URL": "图标链接", + aboutIconURL: "你可以在“Icon URL”中提供一个图片地址来覆盖默认的资料图片。如果设置了 Emoji 图标此字段会被忽略。", + aboutMattermostChannelName: "如果你想覆盖 Webhook 设定的频道,请在“频道名称”字段为你想要的频道。这需要在 Mattermost 的 Webhook 设定中启用。例:#other-channel", + matrix: "Matrix", + promosmsTypeEco: "SMS ECO - 便宜但是慢,并且容易超负荷。仅限波兰地区的收件人。", + promosmsTypeFlash: "SMS FLASH - 消息会自动显示在收件人设备上。仅限波兰地区的收件人。", + promosmsTypeFull: "SMS FULL - 高等级,你可以使用你自己的发件人名称(你需要先注册一个). 对于警报来说更可靠。", + promosmsTypeSpeed: "SMS SPEED - 最高优先级。非常快速可靠,但更贵(越两倍 SMS FULL 等级的价格)。", + promosmsPhoneNumber: "电话号码(波兰地区收件人可以不填区号)", + promosmsSMSSender: "短信发件人名称:已注册的名称或以下默认值之一:InfoSMS,SMS Info,MaxSMS,INFO,SMS", + checkPrice: "查看 {0} 的价格:", + octopushLegacyHint: "你是否在使用旧版本的 Octopush(2011-2020)?", + matrixHomeserverURL: "服务器链接(开头带 http(s):// 和可能的需要的端口号)", + "Internal Room Id": "Internal Room Id", + matrixDesc1: "你可以在 Matrix 客户端房间设置的高级选项找到 Internal Room Id。格式类似于 !QMdRCpUIfLwsfjxye6:home.server。", + matrixDesc2: "请不要使用你自己的 Access Token,这将开放你所有的账户权限和你加入的房间权限。你可以创建一个新的用户并邀请它至你允许的的房间中。你可以运行以下命令来获取 Access Token:{0}", + emailCustomSubject: "邮件主题", + clicksendsms: "ClickSend SMS", + GoogleChat: "Google Chat (Google Workspace only)", + apiCredentials: "API credentials", + Method: "方法", + Body: "请求体", + Headers: "请求头", + PushUrl: "Push URL", + HeadersInvalidFormat: "请求头不是有效的JSON: ", + BodyInvalidFormat: "请求体不是有效的JSON: ", + "Monitor History": "监控历史数据", + clearDataOlderThan: "保留监控历史数据 {0} 天", + PasswordsDoNotMatch: "密码不匹配", + records: "records", + "One record": "One record", + steamApiKeyDescription: "为了监控Steam游戏服务器,你需要一个Steam Web-API key。你可以在这里注册你的API密钥: ", + "Current User": "当前用户", + recent: "最近", + Done: "完成", + Info: "信息", + Security: "安全性", + "Steam API Key": "Steam API Key", + "Shrink Database": "缩小数据库", + "Pick a RR-Type...": "选择资源记录类型...", + "Pick Accepted Status Codes...": "选择有效的状态码...", + Default: "默认", + "HTTP Options": "HTTP 选项", + "Create Incident": "创建事件", + Title: "标题", + Content: "内容", + Style: "类型", + info: "info", + warning: "warning", + danger: "danger", + primary: "primary", + light: "light", + dark: "dark", + Post: "发布", + "Please input title and content": "请输入标题和内容", + Created: "创建于", + "Last Updated": "最后更新", + Unpin: "删除", + "Switch to Light Theme": "切换到浅色主题", + "Switch to Dark Theme": "切换到深色主题", + "Show Tags": "显示标签", + "Hide Tags": "隐藏标签", + Description: "描述", + "No monitors available.": "没有可用的监控项", + "Add one": "Add one", + "No Monitors": "没有监控项", + "Untitled Group": "无标题的分组", + Services: "服务", + Discard: "取消", + Cancel: "取消", + "Powered by": "Powered by", + shrinkDatabaseDescription: "这将触发SQLite数据库的 VACUUM 命令,如果您的数据库是在1.10.0版本之后创建的,AUTO_VACUUM已经启用了,则不需要再使用此功能", + serwersms: "SerwerSMS.pl", + serwersmsAPIUser: "API Username (incl. webapi_ prefix)", + serwersmsAPIPassword: "API Password", + serwersmsPhoneNumber: "Phone number", + serwersmsSenderName: "SMS Sender Name (registered via customer portal)", + stackfield: "Stackfield", + smtpDkimSettings: "DKIM Settings", + smtpDkimDesc: "Please refer to the Nodemailer DKIM {0} for usage.", + documentation: "documentation", + smtpDkimDomain: "域名", + smtpDkimKeySelector: "Key Selector", + smtpDkimPrivateKey: "Private Key", + smtpDkimHashAlgo: "Hash Algorithm (可选)", + smtpDkimheaderFieldNames: "Header Keys to sign (可选)", + smtpDkimskipFields: "Header Keys not to sign (可选)" +} \ No newline at end of file From 6961af005e4e769e9f9a232e2d55fc3cf83094b5 Mon Sep 17 00:00:00 2001 From: Louis <louislam@users.noreply.github.com> Date: Tue, 18 Jan 2022 01:12:25 +0800 Subject: [PATCH 224/282] eslint --- src/languages/zh-CN.js | 728 ++++++++++++++++++++--------------------- 1 file changed, 364 insertions(+), 364 deletions(-) diff --git a/src/languages/zh-CN.js b/src/languages/zh-CN.js index 631df0dd..ecf91979 100644 --- a/src/languages/zh-CN.js +++ b/src/languages/zh-CN.js @@ -1,365 +1,365 @@ export default { - languageName: "简体中文", - checkEverySecond: "检测频率 {0} 秒", - retriesDescription: "最大重试失败次数", - ignoreTLSError: "忽略HTTPS站点的证书错误", - upsideDownModeDescription: "反向状态监控(状态码范围外为有效状态,反之为无效)", - maxRedirectDescription: "最大重定向次数,设置为 0 禁止重定向", - acceptedStatusCodesDescription: "选择被视为成功响应的状态码", - passwordNotMatchMsg: "两次密码输入不一致", - notificationDescription: "请为监控项配置消息通知", - keywordDescription: "检测响应内容中的关键字,区分大小写", - pauseDashboardHome: "暂停", - deleteMonitorMsg: "确定要删除此监控吗?", - deleteNotificationMsg: "确定要删除此消息通知吗?这将对所有监控生效。", - resoverserverDescription: "可自定义要使用的DNS服务器", - rrtypeDescription: "选择要监控的资源记录类型", - pauseMonitorMsg: "确定要暂停吗?", - Settings: "设置", - Dashboard: "仪表盘", - "New Update": "有新版本更新", - Language: "语言", - Appearance: "外观设置", - Theme: "主题", - General: "基本设置", - "Primary Base URL": "站点地址(URL)", - Version: "版本", - "Check Update On GitHub": "检查更新", - List: "列表", - Add: "添加", - "Add New Monitor": "创建监控项", - "Quick Stats": "状态速览", - Up: "正常", - Down: "故障", - Pending: "检测失败", - Unknown: "未知", - Pause: "暂停", - Name: "名称", - Status: "状态", - DateTime: "时间", - Message: "事件", - "No important events": "暂无重要事件", - Resume: "恢复", - Edit: "修改", - Delete: "删除", - Current: "当前", - Uptime: "可用率", - "Cert Exp.": "证书有效期", - days: "天", - day: "天", - "-day": " 天", - hour: "小时", - "-hour": " 小时", - Response: "响应时长", - Ping: "Ping", - "Monitor Type": "监控类型", - Keyword: "关键字", - "Friendly Name": "自定义名称", - URL: "网址URL", - Hostname: "主机名", - Port: "端口号", - "Heartbeat Interval": "心跳间隔", - Retries: "重试次数", - Advanced: "高级选项", - "Upside Down Mode": "反向监控", - "Max. Redirects": "重定向次数", - "Accepted Status Codes": "有效状态码", - "Push URL": "推送链接", - needPushEvery: "你需要每 {0} 秒调用一次", - pushOptionalParams: "可选参数:{0}", - Save: "保存", - Notifications: "消息通知", - "Not available, please setup.": "无可用通道,请先设置", - "Setup Notification": "设置通知", - Light: "明亮", - Dark: "黑暗", - Auto: "自动", - "Theme - Heartbeat Bar": "状态显示", - Normal: "正常显示", - Bottom: "靠下显示", - None: "不显示", - Timezone: "时区", - "Search Engine Visibility": "搜索引擎设置", - "Allow indexing": "允许索引", - "Discourage search engines from indexing site": "阻止搜索引擎索引网站", - "Change Password": "修改密码", - "Current Password": "当前密码", - "New Password": "新的密码", - "Repeat New Password": "重复新的密码", - "Update Password": "更新密码", - "Disable Auth": "禁用身份验证", - "Enable Auth": "启用身份验证", - Logout: "退出", - Leave: "离开", - "I understand, please disable": "我已了解,继续禁用", - Confirm: "确认", - Yes: "确定", - No: "取消", - Username: "用户名", - Password: "密码", - "Remember me": "记住登录", - Login: "登录", - "No Monitors, please": "还没有监控项,", - "add one": "点击新增", - "Notification Type": "消息类型", - Email: "邮件", - Test: "测试一下", - "Certificate Info": "证书信息", - "Resolver Server": "解析服务器", - "Resource Record Type": "资源记录类型", - "Last Result": "最后结果", - "Create your admin account": "创建管理员账号", - "Repeat Password": "重复密码", - respTime: "响应时间(毫秒)", - notAvailableShort: "N/A", - Create: "创建", - clearEventsMsg: "确定要删除此监控项的所有事件吗?", - clearHeartbeatsMsg: "确定要删除此监控项的所有状态吗?", - confirmClearStatisticsMsg: "确定要删除所有统计信息吗?", - "Clear Data": "清除数据", - Events: "事件", - Heartbeats: "心跳", - "Auto Get": "自动获取", - enableDefaultNotificationDescription: "新的监控项将默认启用,你也可以在每个监控项中分别设置", - "Default enabled": "默认开启", - "Also apply to existing monitors": "应用到所有监控项", - Export: "导出", - Import: "导入", - backupDescription: "你可以将所有的监控项和消息通知备份到一个 JSON 文件中", - backupDescription2: "注意: 不包括历史状态和事件数据", - backupDescription3: "导出的文件中可能包含敏感信息,如消息通知的 Token 信息,请小心存放!", - alertNoFile: "请选择一个文件导入", - alertWrongFileType: "请选择一个 JSON 格式的文件", - twoFAVerifyLabel: "请输入Token以验证 2FA(二次验证)是否正常工作", - tokenValidSettingsMsg: "Token有效!您现在可以保存 2FA(二次验证)设置", - confirmEnableTwoFAMsg: "确定要启用 2FA(二次验证)吗?", - confirmDisableTwoFAMsg: "确定要禁用 2FA(二次验证)吗?", - "Apply on all existing monitors": "应用到所有监控项", - "Verify Token": "验证 Token", - "Setup 2FA": "设置 2FA", - "Enable 2FA": "启用 2FA", - "Disable 2FA": "禁用 2FA", - "2FA Settings": "2FA 设置", - "Two Factor Authentication": "双因素认证", - Active: "生效", - Inactive: "未生效", - Token: "Token", - "Show URI": "显示链接", - "Clear all statistics": "清除所有统计数据", - retryCheckEverySecond: "重试间隔 {0} 秒", - 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)": "值(可选)", - Gray: "灰色", - Red: "红色", - Orange: "橙色", - Green: "绿色", - Blue: "蓝色", - Indigo: "靛蓝", - Purple: "紫色", - Pink: "粉色", - "Search...": "搜索...", - "Avg. Ping": "平均 Ping", - "Avg. Response": "平均响应", - "Entry Page": "入口页面", - statusPageNothing: "这里什么也没有,请添加一个分组或一个监控项。", - "No Services": "无服务", - "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: "电子邮件(SMTP)", - discord: "Discord", - teams: "Microsoft Teams", - signal: "Signal", - gotify: "Gotify", - slack: "Slack", - "rocket.chat": "Rocket.chat", - pushover: "Pushover", - pushy: "Pushy", - octopush: "Octopush", - promosms: "PromoSMS", - lunasea: "LunaSea", - apprise: "Apprise (支持50+种通知服务)", - pushbullet: "Pushbullet", - line: "Line Messenger", - mattermost: "Mattermost", - "Feishu WebHookUrl": "飞书 WebHook 地址", - defaultNotificationName: "{notification} 通知({number})", - here: "这里", - Required: "必填", - "Bot Token": "Bot Token", - wayToGetTelegramToken: "你可以从 {0} 获取 Token。", - "Chat ID": "Chat ID", - supportTelegramChatID: "支持对话/群组/频道的 ID", - wayToGetTelegramChatID: "你可以发送一条消息给你的机器人然后到下面的链接来查看你的 chat_id:", - "YOUR BOT TOKEN HERE": "这里替换成你的 BOT TOKEN", - chatIDNotFound: "没有找到 Chat ID,请先给你的机器人发送一条消息。", - "Post URL": "目标链接", - "Content Type": "Content Type", - webhookJsonDesc: "{0} 适合现代的服务,比如 express.js", - webhookFormDataDesc: "{multipart} 适合PHP,解码使用 {decodeFunction}", - secureOptionNone: "无 / STARTTLS(25,587)", - secureOptionTLS: "TLS(465)", - "Ignore TLS Error": "忽略 TLS 错误", - "From Email": "发信人", - "To Email": "收信人", - smtpCC: "抄送", - smtpBCC: "密送", - "Discord Webhook URL": "Discord Webhook 链接", - wayToGetDiscordURL: "获取方式:服务器设置 -> 整合 -> 创建 Webhook", - "Bot Display Name": "机器人显示名称", - "Prefix Custom Message": "自定义消息前缀", - "Hello @everyone is...": "{'@'}所有人,……", - "Webhook URL": "Webhook 链接", - wayToGetTeamsURL: "你可以在 {0} 获取 Webhook 链接。", - Number: "号码", - Recipients: "收件人", - needSignalAPI: "你需要有一个带 REST API 的 Signal 客户端。", - wayToCheckSignalURL: "你可以通过下面的链接来了解如何设置:", - signalImportant: "重要:你不能混合设定收件人的分组和号码!", - "Application Token": "Application Token", - "Server URL": "服务器链接", - Priority: "优先级", - "Icon Emoji": "Emoji 图标", - "Channel Name": "频道名称", - "Uptime Kuma URL": "Uptime Kuma 链接", - aboutWebhooks: "关于 Webhook 的更多信息:{0}", - aboutChannelName: "如果你想绕过 Webhook 设定的频道,请在设定 {0} 的频道名称字段为你想要的频道。例:#other-channel", - aboutKumaURL: "如果保留 Uptime Kuma 链接为空,将会默认指向项目的 Github 页面。", - emojiCheatSheet: "Emoji 参考表:{0}", - "User Key": "User Key", - Device: "设备", - "Message Title": "消息标题", - "Notification Sound": "通知铃声", - "More info on:": "更多信息:{0}", - pushoverDesc1: "紧急优先级(2)会在一小时内每30秒重试一次。", - pushoverDesc2: "如果你想发送通知给不同的设备,请填写“设备”字段。", - "SMS Type": "短信类型", - octopushTypePremium: "Premium(快 - 推荐用于警报)", - octopushTypeLowCost: "Low Cost(慢 - 有时会被运营商屏蔽)", - "Check octopush prices": "查看 Octopush 的价格 {0}。", - octopushPhoneNumber: "电话号码(国际格式,例:+33612345678)", - octopushSMSSender: "短信发送名称:3-11位大小写字母、数字和空格(a-zA-Z0-9)", - "LunaSea Device ID": "LunaSea 设备 ID", - "Apprise URL": "Apprise 链接", - "Example:": "例:{0}", - "Read more:": "了解更多:{0}", - "Status:": "状态:{0}", - "Read more": "了解更多", - appriseInstalled: "Apprise 已安装", - appriseNotInstalled: "Apprise 未安装。{0}", - "Access Token": "Access Token", - "Channel access token": "频道 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: "首先访问 {0},创建一个提供者和频道(Messaging API),然后你就可以从上面提到的地方获取频道的 access token 和用户 ID。", - "Icon URL": "图标链接", - aboutIconURL: "你可以在“Icon URL”中提供一个图片地址来覆盖默认的资料图片。如果设置了 Emoji 图标此字段会被忽略。", - aboutMattermostChannelName: "如果你想覆盖 Webhook 设定的频道,请在“频道名称”字段为你想要的频道。这需要在 Mattermost 的 Webhook 设定中启用。例:#other-channel", - matrix: "Matrix", - promosmsTypeEco: "SMS ECO - 便宜但是慢,并且容易超负荷。仅限波兰地区的收件人。", - promosmsTypeFlash: "SMS FLASH - 消息会自动显示在收件人设备上。仅限波兰地区的收件人。", - promosmsTypeFull: "SMS FULL - 高等级,你可以使用你自己的发件人名称(你需要先注册一个). 对于警报来说更可靠。", - promosmsTypeSpeed: "SMS SPEED - 最高优先级。非常快速可靠,但更贵(越两倍 SMS FULL 等级的价格)。", - promosmsPhoneNumber: "电话号码(波兰地区收件人可以不填区号)", - promosmsSMSSender: "短信发件人名称:已注册的名称或以下默认值之一:InfoSMS,SMS Info,MaxSMS,INFO,SMS", - checkPrice: "查看 {0} 的价格:", - octopushLegacyHint: "你是否在使用旧版本的 Octopush(2011-2020)?", - matrixHomeserverURL: "服务器链接(开头带 http(s):// 和可能的需要的端口号)", - "Internal Room Id": "Internal Room Id", - matrixDesc1: "你可以在 Matrix 客户端房间设置的高级选项找到 Internal Room Id。格式类似于 !QMdRCpUIfLwsfjxye6:home.server。", - matrixDesc2: "请不要使用你自己的 Access Token,这将开放你所有的账户权限和你加入的房间权限。你可以创建一个新的用户并邀请它至你允许的的房间中。你可以运行以下命令来获取 Access Token:{0}", - emailCustomSubject: "邮件主题", - clicksendsms: "ClickSend SMS", - GoogleChat: "Google Chat (Google Workspace only)", - apiCredentials: "API credentials", - Method: "方法", - Body: "请求体", - Headers: "请求头", - PushUrl: "Push URL", - HeadersInvalidFormat: "请求头不是有效的JSON: ", - BodyInvalidFormat: "请求体不是有效的JSON: ", - "Monitor History": "监控历史数据", - clearDataOlderThan: "保留监控历史数据 {0} 天", - PasswordsDoNotMatch: "密码不匹配", - records: "records", - "One record": "One record", - steamApiKeyDescription: "为了监控Steam游戏服务器,你需要一个Steam Web-API key。你可以在这里注册你的API密钥: ", - "Current User": "当前用户", - recent: "最近", - Done: "完成", - Info: "信息", - Security: "安全性", - "Steam API Key": "Steam API Key", - "Shrink Database": "缩小数据库", - "Pick a RR-Type...": "选择资源记录类型...", - "Pick Accepted Status Codes...": "选择有效的状态码...", - Default: "默认", - "HTTP Options": "HTTP 选项", - "Create Incident": "创建事件", - Title: "标题", - Content: "内容", - Style: "类型", - info: "info", - warning: "warning", - danger: "danger", - primary: "primary", - light: "light", - dark: "dark", - Post: "发布", - "Please input title and content": "请输入标题和内容", - Created: "创建于", - "Last Updated": "最后更新", - Unpin: "删除", - "Switch to Light Theme": "切换到浅色主题", - "Switch to Dark Theme": "切换到深色主题", - "Show Tags": "显示标签", - "Hide Tags": "隐藏标签", - Description: "描述", - "No monitors available.": "没有可用的监控项", - "Add one": "Add one", - "No Monitors": "没有监控项", - "Untitled Group": "无标题的分组", - Services: "服务", - Discard: "取消", - Cancel: "取消", - "Powered by": "Powered by", - shrinkDatabaseDescription: "这将触发SQLite数据库的 VACUUM 命令,如果您的数据库是在1.10.0版本之后创建的,AUTO_VACUUM已经启用了,则不需要再使用此功能", - serwersms: "SerwerSMS.pl", - serwersmsAPIUser: "API Username (incl. webapi_ prefix)", - serwersmsAPIPassword: "API Password", - serwersmsPhoneNumber: "Phone number", - serwersmsSenderName: "SMS Sender Name (registered via customer portal)", - stackfield: "Stackfield", - smtpDkimSettings: "DKIM Settings", - smtpDkimDesc: "Please refer to the Nodemailer DKIM {0} for usage.", - documentation: "documentation", - smtpDkimDomain: "域名", - smtpDkimKeySelector: "Key Selector", - smtpDkimPrivateKey: "Private Key", - smtpDkimHashAlgo: "Hash Algorithm (可选)", - smtpDkimheaderFieldNames: "Header Keys to sign (可选)", - smtpDkimskipFields: "Header Keys not to sign (可选)" -} \ No newline at end of file + languageName: "简体中文", + checkEverySecond: "检测频率 {0} 秒", + retriesDescription: "最大重试失败次数", + ignoreTLSError: "忽略HTTPS站点的证书错误", + upsideDownModeDescription: "反向状态监控(状态码范围外为有效状态,反之为无效)", + maxRedirectDescription: "最大重定向次数,设置为 0 禁止重定向", + acceptedStatusCodesDescription: "选择被视为成功响应的状态码", + passwordNotMatchMsg: "两次密码输入不一致", + notificationDescription: "请为监控项配置消息通知", + keywordDescription: "检测响应内容中的关键字,区分大小写", + pauseDashboardHome: "暂停", + deleteMonitorMsg: "确定要删除此监控吗?", + deleteNotificationMsg: "确定要删除此消息通知吗?这将对所有监控生效。", + resoverserverDescription: "可自定义要使用的DNS服务器", + rrtypeDescription: "选择要监控的资源记录类型", + pauseMonitorMsg: "确定要暂停吗?", + Settings: "设置", + Dashboard: "仪表盘", + "New Update": "有新版本更新", + Language: "语言", + Appearance: "外观设置", + Theme: "主题", + General: "基本设置", + "Primary Base URL": "站点地址(URL)", + Version: "版本", + "Check Update On GitHub": "检查更新", + List: "列表", + Add: "添加", + "Add New Monitor": "创建监控项", + "Quick Stats": "状态速览", + Up: "正常", + Down: "故障", + Pending: "检测失败", + Unknown: "未知", + Pause: "暂停", + Name: "名称", + Status: "状态", + DateTime: "时间", + Message: "事件", + "No important events": "暂无重要事件", + Resume: "恢复", + Edit: "修改", + Delete: "删除", + Current: "当前", + Uptime: "可用率", + "Cert Exp.": "证书有效期", + days: "天", + day: "天", + "-day": " 天", + hour: "小时", + "-hour": " 小时", + Response: "响应时长", + Ping: "Ping", + "Monitor Type": "监控类型", + Keyword: "关键字", + "Friendly Name": "自定义名称", + URL: "网址URL", + Hostname: "主机名", + Port: "端口号", + "Heartbeat Interval": "心跳间隔", + Retries: "重试次数", + Advanced: "高级选项", + "Upside Down Mode": "反向监控", + "Max. Redirects": "重定向次数", + "Accepted Status Codes": "有效状态码", + "Push URL": "推送链接", + needPushEvery: "你需要每 {0} 秒调用一次", + pushOptionalParams: "可选参数:{0}", + Save: "保存", + Notifications: "消息通知", + "Not available, please setup.": "无可用通道,请先设置", + "Setup Notification": "设置通知", + Light: "明亮", + Dark: "黑暗", + Auto: "自动", + "Theme - Heartbeat Bar": "状态显示", + Normal: "正常显示", + Bottom: "靠下显示", + None: "不显示", + Timezone: "时区", + "Search Engine Visibility": "搜索引擎设置", + "Allow indexing": "允许索引", + "Discourage search engines from indexing site": "阻止搜索引擎索引网站", + "Change Password": "修改密码", + "Current Password": "当前密码", + "New Password": "新的密码", + "Repeat New Password": "重复新的密码", + "Update Password": "更新密码", + "Disable Auth": "禁用身份验证", + "Enable Auth": "启用身份验证", + Logout: "退出", + Leave: "离开", + "I understand, please disable": "我已了解,继续禁用", + Confirm: "确认", + Yes: "确定", + No: "取消", + Username: "用户名", + Password: "密码", + "Remember me": "记住登录", + Login: "登录", + "No Monitors, please": "还没有监控项,", + "add one": "点击新增", + "Notification Type": "消息类型", + Email: "邮件", + Test: "测试一下", + "Certificate Info": "证书信息", + "Resolver Server": "解析服务器", + "Resource Record Type": "资源记录类型", + "Last Result": "最后结果", + "Create your admin account": "创建管理员账号", + "Repeat Password": "重复密码", + respTime: "响应时间(毫秒)", + notAvailableShort: "N/A", + Create: "创建", + clearEventsMsg: "确定要删除此监控项的所有事件吗?", + clearHeartbeatsMsg: "确定要删除此监控项的所有状态吗?", + confirmClearStatisticsMsg: "确定要删除所有统计信息吗?", + "Clear Data": "清除数据", + Events: "事件", + Heartbeats: "心跳", + "Auto Get": "自动获取", + enableDefaultNotificationDescription: "新的监控项将默认启用,你也可以在每个监控项中分别设置", + "Default enabled": "默认开启", + "Also apply to existing monitors": "应用到所有监控项", + Export: "导出", + Import: "导入", + backupDescription: "你可以将所有的监控项和消息通知备份到一个 JSON 文件中", + backupDescription2: "注意: 不包括历史状态和事件数据", + backupDescription3: "导出的文件中可能包含敏感信息,如消息通知的 Token 信息,请小心存放!", + alertNoFile: "请选择一个文件导入", + alertWrongFileType: "请选择一个 JSON 格式的文件", + twoFAVerifyLabel: "请输入Token以验证 2FA(二次验证)是否正常工作", + tokenValidSettingsMsg: "Token有效!您现在可以保存 2FA(二次验证)设置", + confirmEnableTwoFAMsg: "确定要启用 2FA(二次验证)吗?", + confirmDisableTwoFAMsg: "确定要禁用 2FA(二次验证)吗?", + "Apply on all existing monitors": "应用到所有监控项", + "Verify Token": "验证 Token", + "Setup 2FA": "设置 2FA", + "Enable 2FA": "启用 2FA", + "Disable 2FA": "禁用 2FA", + "2FA Settings": "2FA 设置", + "Two Factor Authentication": "双因素认证", + Active: "生效", + Inactive: "未生效", + Token: "Token", + "Show URI": "显示链接", + "Clear all statistics": "清除所有统计数据", + retryCheckEverySecond: "重试间隔 {0} 秒", + 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)": "值(可选)", + Gray: "灰色", + Red: "红色", + Orange: "橙色", + Green: "绿色", + Blue: "蓝色", + Indigo: "靛蓝", + Purple: "紫色", + Pink: "粉色", + "Search...": "搜索...", + "Avg. Ping": "平均 Ping", + "Avg. Response": "平均响应", + "Entry Page": "入口页面", + statusPageNothing: "这里什么也没有,请添加一个分组或一个监控项。", + "No Services": "无服务", + "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: "电子邮件(SMTP)", + discord: "Discord", + teams: "Microsoft Teams", + signal: "Signal", + gotify: "Gotify", + slack: "Slack", + "rocket.chat": "Rocket.chat", + pushover: "Pushover", + pushy: "Pushy", + octopush: "Octopush", + promosms: "PromoSMS", + lunasea: "LunaSea", + apprise: "Apprise (支持50+种通知服务)", + pushbullet: "Pushbullet", + line: "Line Messenger", + mattermost: "Mattermost", + "Feishu WebHookUrl": "飞书 WebHook 地址", + defaultNotificationName: "{notification} 通知({number})", + here: "这里", + Required: "必填", + "Bot Token": "Bot Token", + wayToGetTelegramToken: "你可以从 {0} 获取 Token。", + "Chat ID": "Chat ID", + supportTelegramChatID: "支持对话/群组/频道的 ID", + wayToGetTelegramChatID: "你可以发送一条消息给你的机器人然后到下面的链接来查看你的 chat_id:", + "YOUR BOT TOKEN HERE": "这里替换成你的 BOT TOKEN", + chatIDNotFound: "没有找到 Chat ID,请先给你的机器人发送一条消息。", + "Post URL": "目标链接", + "Content Type": "Content Type", + webhookJsonDesc: "{0} 适合现代的服务,比如 express.js", + webhookFormDataDesc: "{multipart} 适合PHP,解码使用 {decodeFunction}", + secureOptionNone: "无 / STARTTLS(25,587)", + secureOptionTLS: "TLS(465)", + "Ignore TLS Error": "忽略 TLS 错误", + "From Email": "发信人", + "To Email": "收信人", + smtpCC: "抄送", + smtpBCC: "密送", + "Discord Webhook URL": "Discord Webhook 链接", + wayToGetDiscordURL: "获取方式:服务器设置 -> 整合 -> 创建 Webhook", + "Bot Display Name": "机器人显示名称", + "Prefix Custom Message": "自定义消息前缀", + "Hello @everyone is...": "{'@'}所有人,……", + "Webhook URL": "Webhook 链接", + wayToGetTeamsURL: "你可以在 {0} 获取 Webhook 链接。", + Number: "号码", + Recipients: "收件人", + needSignalAPI: "你需要有一个带 REST API 的 Signal 客户端。", + wayToCheckSignalURL: "你可以通过下面的链接来了解如何设置:", + signalImportant: "重要:你不能混合设定收件人的分组和号码!", + "Application Token": "Application Token", + "Server URL": "服务器链接", + Priority: "优先级", + "Icon Emoji": "Emoji 图标", + "Channel Name": "频道名称", + "Uptime Kuma URL": "Uptime Kuma 链接", + aboutWebhooks: "关于 Webhook 的更多信息:{0}", + aboutChannelName: "如果你想绕过 Webhook 设定的频道,请在设定 {0} 的频道名称字段为你想要的频道。例:#other-channel", + aboutKumaURL: "如果保留 Uptime Kuma 链接为空,将会默认指向项目的 Github 页面。", + emojiCheatSheet: "Emoji 参考表:{0}", + "User Key": "User Key", + Device: "设备", + "Message Title": "消息标题", + "Notification Sound": "通知铃声", + "More info on:": "更多信息:{0}", + pushoverDesc1: "紧急优先级(2)会在一小时内每30秒重试一次。", + pushoverDesc2: "如果你想发送通知给不同的设备,请填写“设备”字段。", + "SMS Type": "短信类型", + octopushTypePremium: "Premium(快 - 推荐用于警报)", + octopushTypeLowCost: "Low Cost(慢 - 有时会被运营商屏蔽)", + "Check octopush prices": "查看 Octopush 的价格 {0}。", + octopushPhoneNumber: "电话号码(国际格式,例:+33612345678)", + octopushSMSSender: "短信发送名称:3-11位大小写字母、数字和空格(a-zA-Z0-9)", + "LunaSea Device ID": "LunaSea 设备 ID", + "Apprise URL": "Apprise 链接", + "Example:": "例:{0}", + "Read more:": "了解更多:{0}", + "Status:": "状态:{0}", + "Read more": "了解更多", + appriseInstalled: "Apprise 已安装", + appriseNotInstalled: "Apprise 未安装。{0}", + "Access Token": "Access Token", + "Channel access token": "频道 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: "首先访问 {0},创建一个提供者和频道(Messaging API),然后你就可以从上面提到的地方获取频道的 access token 和用户 ID。", + "Icon URL": "图标链接", + aboutIconURL: "你可以在“Icon URL”中提供一个图片地址来覆盖默认的资料图片。如果设置了 Emoji 图标此字段会被忽略。", + aboutMattermostChannelName: "如果你想覆盖 Webhook 设定的频道,请在“频道名称”字段为你想要的频道。这需要在 Mattermost 的 Webhook 设定中启用。例:#other-channel", + matrix: "Matrix", + promosmsTypeEco: "SMS ECO - 便宜但是慢,并且容易超负荷。仅限波兰地区的收件人。", + promosmsTypeFlash: "SMS FLASH - 消息会自动显示在收件人设备上。仅限波兰地区的收件人。", + promosmsTypeFull: "SMS FULL - 高等级,你可以使用你自己的发件人名称(你需要先注册一个). 对于警报来说更可靠。", + promosmsTypeSpeed: "SMS SPEED - 最高优先级。非常快速可靠,但更贵(越两倍 SMS FULL 等级的价格)。", + promosmsPhoneNumber: "电话号码(波兰地区收件人可以不填区号)", + promosmsSMSSender: "短信发件人名称:已注册的名称或以下默认值之一:InfoSMS,SMS Info,MaxSMS,INFO,SMS", + checkPrice: "查看 {0} 的价格:", + octopushLegacyHint: "你是否在使用旧版本的 Octopush(2011-2020)?", + matrixHomeserverURL: "服务器链接(开头带 http(s):// 和可能的需要的端口号)", + "Internal Room Id": "Internal Room Id", + matrixDesc1: "你可以在 Matrix 客户端房间设置的高级选项找到 Internal Room Id。格式类似于 !QMdRCpUIfLwsfjxye6:home.server。", + matrixDesc2: "请不要使用你自己的 Access Token,这将开放你所有的账户权限和你加入的房间权限。你可以创建一个新的用户并邀请它至你允许的的房间中。你可以运行以下命令来获取 Access Token:{0}", + emailCustomSubject: "邮件主题", + clicksendsms: "ClickSend SMS", + GoogleChat: "Google Chat (Google Workspace only)", + apiCredentials: "API credentials", + Method: "方法", + Body: "请求体", + Headers: "请求头", + PushUrl: "Push URL", + HeadersInvalidFormat: "请求头不是有效的JSON: ", + BodyInvalidFormat: "请求体不是有效的JSON: ", + "Monitor History": "监控历史数据", + clearDataOlderThan: "保留监控历史数据 {0} 天", + PasswordsDoNotMatch: "密码不匹配", + records: "records", + "One record": "One record", + steamApiKeyDescription: "为了监控Steam游戏服务器,你需要一个Steam Web-API key。你可以在这里注册你的API密钥: ", + "Current User": "当前用户", + recent: "最近", + Done: "完成", + Info: "信息", + Security: "安全性", + "Steam API Key": "Steam API Key", + "Shrink Database": "缩小数据库", + "Pick a RR-Type...": "选择资源记录类型...", + "Pick Accepted Status Codes...": "选择有效的状态码...", + Default: "默认", + "HTTP Options": "HTTP 选项", + "Create Incident": "创建事件", + Title: "标题", + Content: "内容", + Style: "类型", + info: "info", + warning: "warning", + danger: "danger", + primary: "primary", + light: "light", + dark: "dark", + Post: "发布", + "Please input title and content": "请输入标题和内容", + Created: "创建于", + "Last Updated": "最后更新", + Unpin: "删除", + "Switch to Light Theme": "切换到浅色主题", + "Switch to Dark Theme": "切换到深色主题", + "Show Tags": "显示标签", + "Hide Tags": "隐藏标签", + Description: "描述", + "No monitors available.": "没有可用的监控项", + "Add one": "Add one", + "No Monitors": "没有监控项", + "Untitled Group": "无标题的分组", + Services: "服务", + Discard: "取消", + Cancel: "取消", + "Powered by": "Powered by", + shrinkDatabaseDescription: "这将触发SQLite数据库的 VACUUM 命令,如果您的数据库是在1.10.0版本之后创建的,AUTO_VACUUM已经启用了,则不需要再使用此功能", + serwersms: "SerwerSMS.pl", + serwersmsAPIUser: "API Username (incl. webapi_ prefix)", + serwersmsAPIPassword: "API Password", + serwersmsPhoneNumber: "Phone number", + serwersmsSenderName: "SMS Sender Name (registered via customer portal)", + stackfield: "Stackfield", + smtpDkimSettings: "DKIM Settings", + smtpDkimDesc: "Please refer to the Nodemailer DKIM {0} for usage.", + documentation: "documentation", + smtpDkimDomain: "域名", + smtpDkimKeySelector: "Key Selector", + smtpDkimPrivateKey: "Private Key", + smtpDkimHashAlgo: "Hash Algorithm (可选)", + smtpDkimheaderFieldNames: "Header Keys to sign (可选)", + smtpDkimskipFields: "Header Keys not to sign (可选)", +}; From a0d51a15cf3bfea6dad92d0040482b3b3428e606 Mon Sep 17 00:00:00 2001 From: Louis <louislam@users.noreply.github.com> Date: Tue, 18 Jan 2022 01:24:07 +0800 Subject: [PATCH 225/282] Fix security vulnerabilities --- package-lock.json | 2198 ++++++--------------------------------------- package.json | 4 +- 2 files changed, 287 insertions(+), 1915 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6b6c75cc..fc21a63f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "uptime-kuma", - "version": "1.11.1", + "version": "1.11.3", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "uptime-kuma", - "version": "1.11.1", + "version": "1.11.3", "license": "MIT", "dependencies": { "@fortawesome/fontawesome-svg-core": "~1.2.36", @@ -44,8 +44,8 @@ "prometheus-api-metrics": "~3.2.0", "qrcode": "~1.5.0", "redbean-node": "0.1.3", - "socket.io": "~4.2.0", - "socket.io-client": "~4.2.0", + "socket.io": "~4.4.1", + "socket.io-client": "~4.4.1", "tar": "^6.1.11", "tcp-ping": "~0.1.1", "thirty-two": "~1.0.2", @@ -81,8 +81,8 @@ "jest-puppeteer": "~6.0.0", "puppeteer": "~10.4.0", "sass": "~1.42.1", - "stylelint": "~13.13.1", - "stylelint-config-standard": "~22.0.0", + "stylelint": "~14.2.0", + "stylelint-config-standard": "~24.0.0", "typescript": "~4.4.4", "vite": "~2.6.14" }, @@ -2915,33 +2915,18 @@ "@sinonjs/commons": "^1.7.0" } }, - "node_modules/@stylelint/postcss-css-in-js": { - "version": "0.37.2", - "resolved": "https://registry.npmjs.org/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.2.tgz", - "integrity": "sha512-nEhsFoJurt8oUmieT8qy4nk81WRHmJynmVwn/Vts08PL9fhgIsMhk1GId5yAN643OzqEEb5S/6At2TZW7pqPDA==", - "dev": true, - "dependencies": { - "@babel/core": ">=7.9.0" - }, - "peerDependencies": { - "postcss": ">=7.0.0", - "postcss-syntax": ">=0.36.2" + "node_modules/@socket.io/base64-arraybuffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@socket.io/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", + "integrity": "sha512-dOlCBKnDw4iShaIsH/bxujKTM18+2TOAsYz+KSc11Am38H4q5Xw8Bbz97ZYdrVNM+um3p7w86Bvvmcn9q+5+eQ==", + "engines": { + "node": ">= 0.6.0" } }, - "node_modules/@stylelint/postcss-markdown": { - "version": "0.36.2", - "resolved": "https://registry.npmjs.org/@stylelint/postcss-markdown/-/postcss-markdown-0.36.2.tgz", - "integrity": "sha512-2kGbqUVJUGE8dM+bMzXG/PYUWKkjLIkRLWNh39OaADkiabDRdw8ATFCgbMz5xdIcvwspPAluSL7uY+ZiTWdWmQ==", - "deprecated": "Use the original unforked package instead: postcss-markdown", - "dev": true, - "dependencies": { - "remark": "^13.0.0", - "unist-util-find-all-after": "^3.0.2" - }, - "peerDependencies": { - "postcss": ">=7.0.0", - "postcss-syntax": ">=0.36.2" - } + "node_modules/@socket.io/component-emitter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.0.0.tgz", + "integrity": "sha512-2pTGuibAXJswAPJjaKisthqS/NOK5ypG4LYT6tEAV0S/mxW0zOIvYvGK0V8w8+SHxAm6vRMSjqSalFXeBAqs+Q==" }, "node_modules/@tootallnate/once": { "version": "1.1.2", @@ -3165,15 +3150,6 @@ "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", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", - "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", - "dev": true, - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/@types/mime": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", @@ -3239,12 +3215,6 @@ "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", "dev": true }, - "node_modules/@types/unist": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", - "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", - "dev": true - }, "node_modules/@types/yargs": { "version": "16.0.4", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", @@ -3686,60 +3656,6 @@ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, - "node_modules/autoprefixer": { - "version": "9.8.8", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", - "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", - "dev": true, - "dependencies": { - "browserslist": "^4.12.0", - "caniuse-lite": "^1.0.30001109", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "picocolors": "^0.2.1", - "postcss": "^7.0.32", - "postcss-value-parser": "^4.1.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - } - }, - "node_modules/autoprefixer/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/autoprefixer/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/autoprefixer/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/await-lock": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/await-lock/-/await-lock-2.1.0.tgz", @@ -4016,29 +3932,11 @@ "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" }, - "node_modules/bail": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", - "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, - "node_modules/base64-arraybuffer": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", - "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=", - "engines": { - "node": ">= 0.6.0" - } - }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -4422,36 +4320,6 @@ "node": ">=10" } }, - "node_modules/character-entities": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", - "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities-legacy": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", - "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-reference-invalid": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", - "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/chardet": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/chardet/-/chardet-1.4.0.tgz", @@ -4604,6 +4472,12 @@ "color-support": "bin.js" } }, + "node_modules/colord": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz", + "integrity": "sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==", + "dev": true + }, "node_modules/colorette": { "version": "2.0.16", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", @@ -5076,43 +4950,6 @@ "node": ">=6.0.0" } }, - "node_modules/dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "dev": true, - "dependencies": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - } - }, - "node_modules/dom-serializer/node_modules/domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/dom-serializer/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true - }, "node_modules/domexception": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", @@ -5134,25 +4971,6 @@ "node": ">=8" } }, - "node_modules/domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "dev": true, - "dependencies": { - "domelementtype": "1" - } - }, - "node_modules/domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "dev": true, - "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, "node_modules/ecdsa-sig-formatter": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", @@ -5221,45 +5039,47 @@ } }, "node_modules/engine.io": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-5.2.0.tgz", - "integrity": "sha512-d1DexkQx87IFr1FLuV+0f5kAm1Hk1uOVijLOb+D1sDO2QMb7YjE02VHtZtxo7xIXMgcWLb+vl3HRT0rI9tr4jQ==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.1.1.tgz", + "integrity": "sha512-AyMc20q8JUUdvKd46+thc9o7yCZ6iC6MoBCChG5Z1XmFMpp+2+y/oKvwpZTUJB0KCjxScw1dV9c2h5pjiYBLuQ==", "dependencies": { + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", "accepts": "~1.3.4", "base64id": "2.0.0", "cookie": "~0.4.1", "cors": "~2.8.5", "debug": "~4.3.1", - "engine.io-parser": "~4.0.0", - "ws": "~7.4.2" + "engine.io-parser": "~5.0.0", + "ws": "~8.2.3" }, "engines": { "node": ">=10.0.0" } }, "node_modules/engine.io-client": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-5.2.0.tgz", - "integrity": "sha512-BcIBXGBkT7wKecwnfrSV79G2X5lSUSgeAGgoo60plXf8UsQEvCQww/KMwXSMhVjb98fFYNq20CC5eo8IOAPqsg==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.1.1.tgz", + "integrity": "sha512-V05mmDo4gjimYW+FGujoGmmmxRaDsrVr7AXA3ZIfa04MWM1jOfZfUwou0oNqhNwy/votUDvGDt4JA4QF4e0b4g==", "dependencies": { - "base64-arraybuffer": "0.1.4", - "component-emitter": "~1.3.0", + "@socket.io/component-emitter": "~3.0.0", "debug": "~4.3.1", - "engine.io-parser": "~4.0.1", + "engine.io-parser": "~5.0.0", "has-cors": "1.1.0", "parseqs": "0.0.6", "parseuri": "0.0.6", - "ws": "~7.4.2", + "ws": "~8.2.3", "xmlhttprequest-ssl": "~2.0.0", "yeast": "0.1.2" } }, "node_modules/engine.io-client/node_modules/ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", "engines": { - "node": ">=8.3.0" + "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", @@ -5275,14 +5095,14 @@ } }, "node_modules/engine.io-parser": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.3.tgz", - "integrity": "sha512-xEAAY0msNnESNPc00e19y5heTPX4y/TJ36gr8t1voOaNmTojP9b3oK3BbJLFufW2XFPQaaijpFewm2g2Um3uqA==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.3.tgz", + "integrity": "sha512-BtQxwF27XUNnSafQLvDi0dQ8s3i6VgzSoQMJacpIcGNrlUdfHSKbgm3jmjCVvQluGzqwujQMPAoMai3oYSTurg==", "dependencies": { - "base64-arraybuffer": "0.1.4" + "@socket.io/base64-arraybuffer": "~1.0.2" }, "engines": { - "node": ">=8.0.0" + "node": ">=10.0.0" } }, "node_modules/engine.io/node_modules/cookie": { @@ -5294,11 +5114,11 @@ } }, "node_modules/engine.io/node_modules/ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", "engines": { - "node": ">=8.3.0" + "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", @@ -5325,12 +5145,6 @@ "node": ">=8.6" } }, - "node_modules/entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "dev": true - }, "node_modules/env-paths": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", @@ -6242,12 +6056,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, "node_modules/extract-zip": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", @@ -6545,9 +6353,9 @@ "dev": true }, "node_modules/follow-redirects": { - "version": "1.14.5", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.5.tgz", - "integrity": "sha512-wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA==", + "version": "1.14.7", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz", + "integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==", "funding": [ { "type": "individual", @@ -6872,21 +6680,6 @@ "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=", "dev": true }, - "node_modules/gonzales-pe": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.3.0.tgz", - "integrity": "sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "gonzales": "bin/gonzales.js" - }, - "engines": { - "node": ">=0.6.0" - } - }, "node_modules/graceful-fs": { "version": "4.2.8", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", @@ -6995,20 +6788,6 @@ "node": ">=8" } }, - "node_modules/htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "dev": true, - "dependencies": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "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", @@ -7240,30 +7019,6 @@ "node": ">= 0.10" } }, - "node_modules/is-alphabetical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", - "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-alphanumerical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", - "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", - "dev": true, - "dependencies": { - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -7299,16 +7054,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-decimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", - "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", @@ -7356,16 +7101,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-hexadecimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", - "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/is-invalid-path": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-invalid-path/-/is-invalid-path-0.1.0.tgz", @@ -7481,18 +7216,6 @@ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-valid-path": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-valid-path/-/is-valid-path-0.1.1.tgz", @@ -9787,9 +9510,9 @@ } }, "node_modules/known-css-properties": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.21.0.tgz", - "integrity": "sha512-sZLUnTqimCkvkgRS+kbPlYW5o8q5w1cu+uIisKpEWkj31I8mx8kNG162DwRav8Zirkva6N5uoFsm9kzK4mUXjw==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.24.0.tgz", + "integrity": "sha512-RTSoaUAfLvpR357vWzAz/50Q/BmHfmE6ETSWfutT0AJiw10e6CmcdYRQJlLRd95B53D0Y2aD1jSxD3V3ySF+PA==", "dev": true }, "node_modules/lazy-cache": { @@ -9965,102 +9688,6 @@ "lodash._baseuniq": "~4.6.0" } }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-symbols/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==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "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/log-symbols/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==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/log-symbols/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==", - "dev": true - }, - "node_modules/log-symbols/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==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/log-symbols/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==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/longest-streak": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", - "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -10152,51 +9779,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/mdast-util-from-markdown": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", - "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==", - "dev": true, - "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-to-string": "^2.0.0", - "micromark": "~2.11.0", - "parse-entities": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-markdown": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", - "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0", - "longest-streak": "^2.0.0", - "mdast-util-to-string": "^2.0.0", - "parse-entities": "^2.0.0", - "repeat-string": "^1.0.0", - "zwitch": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", - "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -10290,26 +9872,6 @@ "node": ">= 0.6" } }, - "node_modules/micromark": { - "version": "2.11.4", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", - "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "debug": "^4.0.0", - "parse-entities": "^2.0.0" - } - }, "node_modules/micromatch": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", @@ -10723,15 +10285,6 @@ "node": ">=0.10.0" } }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/normalize-selector": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/normalize-selector/-/normalize-selector-0.2.0.tgz", @@ -10772,12 +10325,6 @@ "node": "^12.13.0 || ^14.15.0 || >=16" } }, - "node_modules/num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", - "dev": true - }, "node_modules/numbered": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/numbered/-/numbered-1.1.0.tgz", @@ -10974,24 +10521,6 @@ "node": ">=6" } }, - "node_modules/parse-entities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", - "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", - "dev": true, - "dependencies": { - "character-entities": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "character-reference-invalid": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-hexadecimal": "^1.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -11183,63 +10712,6 @@ "url": "https://opencollective.com/postcss/" } }, - "node_modules/postcss-html": { - "version": "0.36.0", - "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-0.36.0.tgz", - "integrity": "sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw==", - "dev": true, - "dependencies": { - "htmlparser2": "^3.10.0" - }, - "peerDependencies": { - "postcss": ">=5.0.0", - "postcss-syntax": ">=0.36.0" - } - }, - "node_modules/postcss-less": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-3.1.4.tgz", - "integrity": "sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA==", - "dev": true, - "dependencies": { - "postcss": "^7.0.14" - }, - "engines": { - "node": ">=6.14.4" - } - }, - "node_modules/postcss-less/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-less/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-less/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/postcss-media-query-parser": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", @@ -11267,89 +10739,19 @@ } }, "node_modules/postcss-safe-parser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz", - "integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", + "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", "dev": true, - "dependencies": { - "postcss": "^7.0.26" - }, "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-safe-parser/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-safe-parser/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" + "node": ">=12.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-safe-parser/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss-sass": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/postcss-sass/-/postcss-sass-0.4.4.tgz", - "integrity": "sha512-BYxnVYx4mQooOhr+zer0qWbSPYnarAy8ZT7hAQtbxtgVf8gy+LSLT/hHGe35h14/pZDTw1DsxdbrwxBN++H+fg==", - "dev": true, - "dependencies": { - "gonzales-pe": "^4.3.0", - "postcss": "^7.0.21" - } - }, - "node_modules/postcss-sass/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/postcss-sass/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/postcss-sass/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "postcss": "^8.3.3" } }, "node_modules/postcss-scss": { @@ -11368,9 +10770,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", - "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", + "version": "6.0.8", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.8.tgz", + "integrity": "sha512-D5PG53d209Z1Uhcc0qAZ5U3t5HagH3cxu+WLZ22jt3gLUpXM4eXXfiO14jiDWST3NNooX/E8wISfOhZ9eIjGTQ==", "dev": true, "dependencies": { "cssesc": "^3.0.0", @@ -11380,19 +10782,10 @@ "node": ">=4" } }, - "node_modules/postcss-syntax": { - "version": "0.36.2", - "resolved": "https://registry.npmjs.org/postcss-syntax/-/postcss-syntax-0.36.2.tgz", - "integrity": "sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==", - "dev": true, - "peerDependencies": { - "postcss": ">=5.0.0" - } - }, "node_modules/postcss-value-parser": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", - "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "dev": true }, "node_modules/prelude-ls": { @@ -12057,56 +11450,6 @@ "jsesc": "bin/jsesc" } }, - "node_modules/remark": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/remark/-/remark-13.0.0.tgz", - "integrity": "sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA==", - "dev": true, - "dependencies": { - "remark-parse": "^9.0.0", - "remark-stringify": "^9.0.0", - "unified": "^9.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-parse": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz", - "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==", - "dev": true, - "dependencies": { - "mdast-util-from-markdown": "^0.8.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-stringify": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-9.0.1.tgz", - "integrity": "sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==", - "dev": true, - "dependencies": { - "mdast-util-to-markdown": "^0.6.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -12603,18 +11946,15 @@ } }, "node_modules/socket.io": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.2.0.tgz", - "integrity": "sha512-sjlGfMmnaWvTRVxGRGWyhd9ctpg4APxWAxu85O/SxekkxHhfxmePWZbaYCkeX5QQX0z1YEnKOlNt6w82E4Nzug==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.4.1.tgz", + "integrity": "sha512-s04vrBswdQBUmuWJuuNTmXUVJhP0cVky8bBDhdkf8y0Ptsu7fKU2LuLbts9g+pdmAdyMMn8F/9Mf1/wbtUN0fg==", "dependencies": { - "@types/cookie": "^0.4.1", - "@types/cors": "^2.8.12", - "@types/node": ">=10.0.0", "accepts": "~1.3.4", "base64id": "~2.0.0", "debug": "~4.3.2", - "engine.io": "~5.2.0", - "socket.io-adapter": "~2.3.2", + "engine.io": "~6.1.0", + "socket.io-adapter": "~2.3.3", "socket.io-parser": "~4.0.4" }, "engines": { @@ -12627,17 +11967,28 @@ "integrity": "sha512-Qd/iwn3VskrpNO60BeRyCyr8ZWw9CPZyitW4AQwmRZ8zCiyDiL+znRnWX6tDHXnWn1sJrM1+b6Mn6wEDJJ4aYQ==" }, "node_modules/socket.io-client": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.2.0.tgz", - "integrity": "sha512-3GJ2KMh7inJUNAOjgf8NaKJZJa9uRyfryh2LrVJyKyxmzoXlfW9DeDNqylJn0ovOFt4e/kRLNWzMt/YqqEWYSA==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.4.1.tgz", + "integrity": "sha512-N5C/L5fLNha5Ojd7Yeb/puKcPWWcoB/A09fEjjNsg91EDVr5twk/OEyO6VT9dlLSUNY85NpW6KBhVMvaLKQ3vQ==", "dependencies": { - "@types/component-emitter": "^1.2.10", + "@socket.io/component-emitter": "~3.0.0", "backo2": "~1.0.2", - "component-emitter": "~1.3.0", "debug": "~4.3.2", - "engine.io-client": "~5.2.0", + "engine.io-client": "~6.1.1", "parseuri": "0.0.6", - "socket.io-parser": "~4.0.4" + "socket.io-parser": "~4.1.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-client/node_modules/socket.io-parser": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.1.1.tgz", + "integrity": "sha512-USQVLSkDWE5nbcY760ExdKaJxCE65kcsG/8k5FDGZVVxpD1pA7hABYXYkCUvxUuYYh/+uQw0N/fvBzfT8o07KA==", + "dependencies": { + "@socket.io/component-emitter": "~3.0.0", + "debug": "~4.3.1" }, "engines": { "node": ">=10.0.0" @@ -12941,57 +12292,48 @@ "dev": true }, "node_modules/stylelint": { - "version": "13.13.1", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.13.1.tgz", - "integrity": "sha512-Mv+BQr5XTUrKqAXmpqm6Ddli6Ief+AiPZkRsIrAoUKFuq/ElkUh9ZMYxXD0iQNZ5ADghZKLOWz1h7hTClB7zgQ==", + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-14.2.0.tgz", + "integrity": "sha512-i0DrmDXFNpDsWiwx6SPRs4/pyw4kvZgqpDGvsTslQMY7hpUl6r33aQvNSn6cnTg2wtZ9rreFElI7XAKpOWi1vQ==", "dev": true, "dependencies": { - "@stylelint/postcss-css-in-js": "^0.37.2", - "@stylelint/postcss-markdown": "^0.36.2", - "autoprefixer": "^9.8.6", "balanced-match": "^2.0.0", - "chalk": "^4.1.1", - "cosmiconfig": "^7.0.0", - "debug": "^4.3.1", + "colord": "^2.9.2", + "cosmiconfig": "^7.0.1", + "debug": "^4.3.3", "execall": "^2.0.0", - "fast-glob": "^3.2.5", + "fast-glob": "^3.2.7", "fastest-levenshtein": "^1.0.12", "file-entry-cache": "^6.0.1", "get-stdin": "^8.0.0", "global-modules": "^2.0.0", - "globby": "^11.0.3", + "globby": "^11.0.4", "globjoin": "^0.1.4", "html-tags": "^3.1.0", - "ignore": "^5.1.8", + "ignore": "^5.2.0", "import-lazy": "^4.0.0", "imurmurhash": "^0.1.4", - "known-css-properties": "^0.21.0", - "lodash": "^4.17.21", - "log-symbols": "^4.1.0", + "is-plain-object": "^5.0.0", + "known-css-properties": "^0.24.0", "mathml-tag-names": "^2.1.3", "meow": "^9.0.0", "micromatch": "^4.0.4", + "normalize-path": "^3.0.0", "normalize-selector": "^0.2.0", - "postcss": "^7.0.35", - "postcss-html": "^0.36.0", - "postcss-less": "^3.1.4", + "picocolors": "^1.0.0", + "postcss": "^8.3.11", "postcss-media-query-parser": "^0.2.3", "postcss-resolve-nested-selector": "^0.1.1", - "postcss-safe-parser": "^4.0.2", - "postcss-sass": "^0.4.4", - "postcss-scss": "^2.1.1", - "postcss-selector-parser": "^6.0.5", - "postcss-syntax": "^0.36.2", + "postcss-safe-parser": "^6.0.0", + "postcss-selector-parser": "^6.0.7", "postcss-value-parser": "^4.1.0", "resolve-from": "^5.0.0", - "slash": "^3.0.0", "specificity": "^0.4.1", - "string-width": "^4.2.2", - "strip-ansi": "^6.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", "style-search": "^0.1.0", - "sugarss": "^2.0.0", "svg-tags": "^1.0.0", - "table": "^6.6.0", + "table": "^6.7.5", "v8-compile-cache": "^2.3.0", "write-file-atomic": "^3.0.3" }, @@ -12999,7 +12341,7 @@ "stylelint": "bin/stylelint.js" }, "engines": { - "node": ">=10.13.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "type": "opencollective", @@ -13007,39 +12349,24 @@ } }, "node_modules/stylelint-config-recommended": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-5.0.0.tgz", - "integrity": "sha512-c8aubuARSu5A3vEHLBeOSJt1udOdS+1iue7BmJDTSXoCBmfEQmmWX+59vYIj3NQdJBY6a/QRv1ozVFpaB9jaqA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-6.0.0.tgz", + "integrity": "sha512-ZorSSdyMcxWpROYUvLEMm0vSZud2uB7tX1hzBZwvVY9SV/uly4AvvJPPhCcymZL3fcQhEQG5AELmrxWqtmzacw==", "dev": true, "peerDependencies": { - "stylelint": "^13.13.0" + "stylelint": "^14.0.0" } }, "node_modules/stylelint-config-standard": { - "version": "22.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-22.0.0.tgz", - "integrity": "sha512-uQVNi87SHjqTm8+4NIP5NMAyY/arXrBgimaaT7skvRfE9u3JKXRK9KBkbr4pVmeciuCcs64kAdjlxfq6Rur7Hw==", + "version": "24.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-24.0.0.tgz", + "integrity": "sha512-+RtU7fbNT+VlNbdXJvnjc3USNPZRiRVp/d2DxOF/vBDDTi0kH5RX2Ny6errdtZJH3boO+bmqIYEllEmok4jiuw==", "dev": true, "dependencies": { - "stylelint-config-recommended": "^5.0.0" + "stylelint-config-recommended": "^6.0.0" }, "peerDependencies": { - "stylelint": "^13.13.0" - } - }, - "node_modules/stylelint/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==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "stylelint": "^14.0.0" } }, "node_modules/stylelint/node_modules/balanced-match": { @@ -13048,40 +12375,23 @@ "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", "dev": true }, - "node_modules/stylelint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/stylelint/node_modules/debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "ms": "2.1.2" }, "engines": { - "node": ">=10" + "node": ">=6.0" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/stylelint/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==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/stylelint/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==", - "dev": true - }, "node_modules/stylelint/node_modules/global-modules": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", @@ -13108,24 +12418,24 @@ "node": ">=6" } }, - "node_modules/stylelint/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==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/stylelint/node_modules/ignore": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", - "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true, "engines": { "node": ">= 4" } }, + "node_modules/stylelint/node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/stylelint/node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -13135,41 +12445,12 @@ "node": ">=0.10.0" } }, - "node_modules/stylelint/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "node_modules/stylelint/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "node_modules/stylelint/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/stylelint/node_modules/postcss-scss": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-2.1.1.tgz", - "integrity": "sha512-jQmGnj0hSGLd9RscFw9LyuSVAa5Bl1/KBPqG1NQw9w8ND55nY4ZEsdlVuYJvLPpV+y0nwTV5v/4rHPzZRihQbA==", - "dev": true, - "dependencies": { - "postcss": "^7.0.6" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/stylelint/node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", @@ -13179,27 +12460,6 @@ "node": ">=8" } }, - "node_modules/stylelint/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stylelint/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==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/stylelint/node_modules/which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -13212,47 +12472,6 @@ "which": "bin/which" } }, - "node_modules/sugarss": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-2.0.0.tgz", - "integrity": "sha512-WfxjozUk0UVA4jm+U1d736AUpzSrNsQcIbyOkoE364GrtWmIrFdk5lksEupgWMD4VaT/0kVx1dobpiDumSgmJQ==", - "dev": true, - "dependencies": { - "postcss": "^7.0.2" - } - }, - "node_modules/sugarss/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/sugarss/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/sugarss/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -13318,9 +12537,9 @@ "dev": true }, "node_modules/table": { - "version": "6.7.3", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.3.tgz", - "integrity": "sha512-5DkIxeA7XERBqMwJq0aHZOdMadBx4e6eDoFRuyT5VR82J0Ycg2DwM6GfA/EQAhJ+toRTaS1lIdSQCqgrmhPnlw==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.0.tgz", + "integrity": "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==", "dev": true, "dependencies": { "ajv": "^8.0.1", @@ -13591,16 +12810,6 @@ "node": ">=8" } }, - "node_modules/trough": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", - "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/tslib": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", @@ -13732,56 +12941,6 @@ "node": ">=4" } }, - "node_modules/unified": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz", - "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==", - "dev": true, - "dependencies": { - "bail": "^1.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^2.0.0", - "trough": "^1.0.0", - "vfile": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unified/node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "engines": { - "node": ">=4" - } - }, - "node_modules/unified/node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/unique-filename": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", @@ -13800,42 +12959,6 @@ "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", - "integrity": "sha512-xaTC/AGZ0rIM2gM28YVRAFPIZpzbpDtU3dRmp7EXlNVA8ziQc4hY3H7BHXM1J49nEmiqc3svnqMReW+PGqbZKQ==", - "dev": true, - "dependencies": { - "unist-util-is": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-is": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", - "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-stringify-position": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", - "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/universal-user-agent": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", @@ -13938,59 +13061,6 @@ "node": ">= 0.8" } }, - "node_modules/vfile": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", - "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^2.0.0", - "vfile-message": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-message": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", - "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile/node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "engines": { - "node": ">=4" - } - }, "node_modules/vite": { "version": "2.6.14", "resolved": "https://registry.npmjs.org/vite/-/vite-2.6.14.tgz", @@ -14634,16 +13704,6 @@ "engines": { "node": ">=10" } - }, - "node_modules/zwitch": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", - "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } } }, "dependencies": { @@ -15854,8 +14914,7 @@ "@fortawesome/vue-fontawesome": { "version": "3.0.0-5", "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-3.0.0-5.tgz", - "integrity": "sha512-aNmBT4bOecrFsZTog1l6AJDQHPP3ocXV+WQ3Ogy8WZCqstB/ahfhH4CPu5i4N9Hw0MBKXqE+LX+NbUxcj8cVTw==", - "requires": {} + "integrity": "sha512-aNmBT4bOecrFsZTog1l6AJDQHPP3ocXV+WQ3Ogy8WZCqstB/ahfhH4CPu5i4N9Hw0MBKXqE+LX+NbUxcj8cVTw==" }, "@gar/promisify": { "version": "1.1.2", @@ -16714,24 +15773,15 @@ "@sinonjs/commons": "^1.7.0" } }, - "@stylelint/postcss-css-in-js": { - "version": "0.37.2", - "resolved": "https://registry.npmjs.org/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.2.tgz", - "integrity": "sha512-nEhsFoJurt8oUmieT8qy4nk81WRHmJynmVwn/Vts08PL9fhgIsMhk1GId5yAN643OzqEEb5S/6At2TZW7pqPDA==", - "dev": true, - "requires": { - "@babel/core": ">=7.9.0" - } + "@socket.io/base64-arraybuffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@socket.io/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", + "integrity": "sha512-dOlCBKnDw4iShaIsH/bxujKTM18+2TOAsYz+KSc11Am38H4q5Xw8Bbz97ZYdrVNM+um3p7w86Bvvmcn9q+5+eQ==" }, - "@stylelint/postcss-markdown": { - "version": "0.36.2", - "resolved": "https://registry.npmjs.org/@stylelint/postcss-markdown/-/postcss-markdown-0.36.2.tgz", - "integrity": "sha512-2kGbqUVJUGE8dM+bMzXG/PYUWKkjLIkRLWNh39OaADkiabDRdw8ATFCgbMz5xdIcvwspPAluSL7uY+ZiTWdWmQ==", - "dev": true, - "requires": { - "remark": "^13.0.0", - "unist-util-find-all-after": "^3.0.2" - } + "@socket.io/component-emitter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.0.0.tgz", + "integrity": "sha512-2pTGuibAXJswAPJjaKisthqS/NOK5ypG4LYT6tEAV0S/mxW0zOIvYvGK0V8w8+SHxAm6vRMSjqSalFXeBAqs+Q==" }, "@tootallnate/once": { "version": "1.1.2", @@ -16952,15 +16002,6 @@ "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.177.tgz", "integrity": "sha512-0fDwydE2clKe9MNfvXHBHF9WEahRuj+msTuQqOmAApNORFvhMYZKNGGJdCzuhheVjMps/ti0Ak/iJPACMaevvw==" }, - "@types/mdast": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", - "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", - "dev": true, - "requires": { - "@types/unist": "*" - } - }, "@types/mime": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", @@ -17026,12 +16067,6 @@ "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", "dev": true }, - "@types/unist": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", - "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", - "dev": true - }, "@types/yargs": { "version": "16.0.4", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", @@ -17082,8 +16117,7 @@ "version": "1.9.4", "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-1.9.4.tgz", "integrity": "sha512-0CZqaCoChriPTTtGkERy1LGPcYjGFpi2uYRhBPIkqJqUGV5JnJFhQAgh6oH9j5XZHfrRaisX8W0xSpO4T7S78A==", - "dev": true, - "requires": {} + "dev": true }, "@vue/compiler-core": { "version": "3.2.22", @@ -17243,8 +16277,7 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} + "dev": true }, "acorn-walk": { "version": "7.2.0", @@ -17394,45 +16427,6 @@ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, - "autoprefixer": { - "version": "9.8.8", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", - "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", - "dev": true, - "requires": { - "browserslist": "^4.12.0", - "caniuse-lite": "^1.0.30001109", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "picocolors": "^0.2.1", - "postcss": "^7.0.32", - "postcss-value-parser": "^4.1.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, "await-lock": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/await-lock/-/await-lock-2.1.0.tgz", @@ -17659,22 +16653,11 @@ "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" }, - "bail": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", - "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", - "dev": true - }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, - "base64-arraybuffer": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", - "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=" - }, "base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -17783,8 +16766,7 @@ "bootstrap": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.1.3.tgz", - "integrity": "sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q==", - "requires": {} + "integrity": "sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q==" }, "brace-expansion": { "version": "1.1.11", @@ -17963,24 +16945,6 @@ "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true }, - "character-entities": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", - "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", - "dev": true - }, - "character-entities-legacy": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", - "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", - "dev": true - }, - "character-reference-invalid": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", - "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", - "dev": true - }, "chardet": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/chardet/-/chardet-1.4.0.tgz", @@ -17994,8 +16958,7 @@ "chartjs-adapter-dayjs": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/chartjs-adapter-dayjs/-/chartjs-adapter-dayjs-1.0.0.tgz", - "integrity": "sha512-EnbVqTJGFKLpg1TROLdCEufrzbmIa2oeLGx8O2Wdjw2EoMudoOo9+YFu+6CM0Z0hQ/v3yq/e/Y6efQMu22n8Jg==", - "requires": {} + "integrity": "sha512-EnbVqTJGFKLpg1TROLdCEufrzbmIa2oeLGx8O2Wdjw2EoMudoOo9+YFu+6CM0Z0hQ/v3yq/e/Y6efQMu22n8Jg==" }, "check-password-strength": { "version": "2.0.3", @@ -18106,6 +17069,12 @@ "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" }, + "colord": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz", + "integrity": "sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==", + "dev": true + }, "colorette": { "version": "2.0.16", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", @@ -18479,36 +17448,6 @@ "esutils": "^2.0.2" } }, - "dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - }, - "dependencies": { - "domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", - "dev": true - }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true - } - } - }, - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true - }, "domexception": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", @@ -18526,25 +17465,6 @@ } } }, - "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "dev": true, - "requires": { - "domelementtype": "1" - } - }, - "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "dev": true, - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, "ecdsa-sig-formatter": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", @@ -18604,17 +17524,20 @@ } }, "engine.io": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-5.2.0.tgz", - "integrity": "sha512-d1DexkQx87IFr1FLuV+0f5kAm1Hk1uOVijLOb+D1sDO2QMb7YjE02VHtZtxo7xIXMgcWLb+vl3HRT0rI9tr4jQ==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.1.1.tgz", + "integrity": "sha512-AyMc20q8JUUdvKd46+thc9o7yCZ6iC6MoBCChG5Z1XmFMpp+2+y/oKvwpZTUJB0KCjxScw1dV9c2h5pjiYBLuQ==", "requires": { + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", "accepts": "~1.3.4", "base64id": "2.0.0", "cookie": "~0.4.1", "cors": "~2.8.5", "debug": "~4.3.1", - "engine.io-parser": "~4.0.0", - "ws": "~7.4.2" + "engine.io-parser": "~5.0.0", + "ws": "~8.2.3" }, "dependencies": { "cookie": { @@ -18623,44 +17546,41 @@ "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==" }, "ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "requires": {} + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==" } } }, "engine.io-client": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-5.2.0.tgz", - "integrity": "sha512-BcIBXGBkT7wKecwnfrSV79G2X5lSUSgeAGgoo60plXf8UsQEvCQww/KMwXSMhVjb98fFYNq20CC5eo8IOAPqsg==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.1.1.tgz", + "integrity": "sha512-V05mmDo4gjimYW+FGujoGmmmxRaDsrVr7AXA3ZIfa04MWM1jOfZfUwou0oNqhNwy/votUDvGDt4JA4QF4e0b4g==", "requires": { - "base64-arraybuffer": "0.1.4", - "component-emitter": "~1.3.0", + "@socket.io/component-emitter": "~3.0.0", "debug": "~4.3.1", - "engine.io-parser": "~4.0.1", + "engine.io-parser": "~5.0.0", "has-cors": "1.1.0", "parseqs": "0.0.6", "parseuri": "0.0.6", - "ws": "~7.4.2", + "ws": "~8.2.3", "xmlhttprequest-ssl": "~2.0.0", "yeast": "0.1.2" }, "dependencies": { "ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "requires": {} + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==" } } }, "engine.io-parser": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.3.tgz", - "integrity": "sha512-xEAAY0msNnESNPc00e19y5heTPX4y/TJ36gr8t1voOaNmTojP9b3oK3BbJLFufW2XFPQaaijpFewm2g2Um3uqA==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.3.tgz", + "integrity": "sha512-BtQxwF27XUNnSafQLvDi0dQ8s3i6VgzSoQMJacpIcGNrlUdfHSKbgm3jmjCVvQluGzqwujQMPAoMai3oYSTurg==", "requires": { - "base64-arraybuffer": "0.1.4" + "@socket.io/base64-arraybuffer": "~1.0.2" } }, "enquirer": { @@ -18672,12 +17592,6 @@ "ansi-colors": "^4.1.1" } }, - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "dev": true - }, "env-paths": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", @@ -19324,12 +18238,6 @@ "basic-auth": "^2.0.1" } }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, "extract-zip": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", @@ -19571,9 +18479,9 @@ "dev": true }, "follow-redirects": { - "version": "1.14.5", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.5.tgz", - "integrity": "sha512-wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA==" + "version": "1.14.7", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz", + "integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==" }, "for-in": { "version": "1.0.2", @@ -19803,15 +18711,6 @@ "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=", "dev": true }, - "gonzales-pe": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.3.0.tgz", - "integrity": "sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, "graceful-fs": { "version": "4.2.8", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", @@ -19893,20 +18792,6 @@ "integrity": "sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==", "dev": true }, - "htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "dev": true, - "requires": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "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", @@ -20076,22 +18961,6 @@ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" }, - "is-alphabetical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", - "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", - "dev": true - }, - "is-alphanumerical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", - "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", - "dev": true, - "requires": { - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0" - } - }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -20121,12 +18990,6 @@ "has": "^1.0.3" } }, - "is-decimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", - "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", - "dev": true - }, "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", @@ -20159,12 +19022,6 @@ "is-extglob": "^2.1.1" } }, - "is-hexadecimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", - "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", - "dev": true - }, "is-invalid-path": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-invalid-path/-/is-invalid-path-0.1.0.tgz", @@ -20252,12 +19109,6 @@ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, - "is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true - }, "is-valid-path": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-valid-path/-/is-valid-path-0.1.1.tgz", @@ -21164,8 +20015,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", - "dev": true, - "requires": {} + "dev": true }, "jest-puppeteer": { "version": "6.0.0", @@ -21978,9 +20828,9 @@ } }, "known-css-properties": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.21.0.tgz", - "integrity": "sha512-sZLUnTqimCkvkgRS+kbPlYW5o8q5w1cu+uIisKpEWkj31I8mx8kNG162DwRav8Zirkva6N5uoFsm9kzK4mUXjw==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.24.0.tgz", + "integrity": "sha512-RTSoaUAfLvpR357vWzAz/50Q/BmHfmE6ETSWfutT0AJiw10e6CmcdYRQJlLRd95B53D0Y2aD1jSxD3V3ySF+PA==", "dev": true }, "lazy-cache": { @@ -22144,73 +20994,6 @@ "lodash._baseuniq": "~4.6.0" } }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "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==", - "dev": true, - "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==", - "dev": true, - "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==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "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==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "longest-streak": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", - "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", - "dev": true - }, "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -22280,39 +21063,6 @@ "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", "dev": true }, - "mdast-util-from-markdown": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", - "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==", - "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "mdast-util-to-string": "^2.0.0", - "micromark": "~2.11.0", - "parse-entities": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" - } - }, - "mdast-util-to-markdown": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", - "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "longest-streak": "^2.0.0", - "mdast-util-to-string": "^2.0.0", - "parse-entities": "^2.0.0", - "repeat-string": "^1.0.0", - "zwitch": "^1.0.0" - } - }, - "mdast-util-to-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", - "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", - "dev": true - }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -22384,16 +21134,6 @@ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" }, - "micromark": { - "version": "2.11.4", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", - "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", - "dev": true, - "requires": { - "debug": "^4.0.0", - "parse-entities": "^2.0.0" - } - }, "micromatch": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", @@ -22704,12 +21444,6 @@ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", - "dev": true - }, "normalize-selector": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/normalize-selector/-/normalize-selector-0.2.0.tgz", @@ -22741,12 +21475,6 @@ "set-blocking": "^2.0.0" } }, - "num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", - "dev": true - }, "numbered": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/numbered/-/numbered-1.1.0.tgz", @@ -22886,20 +21614,6 @@ "callsites": "^3.0.0" } }, - "parse-entities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", - "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", - "dev": true, - "requires": { - "character-entities": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "character-reference-invalid": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-hexadecimal": "^1.0.0" - } - }, "parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -23036,48 +21750,6 @@ "source-map-js": "^0.6.2" } }, - "postcss-html": { - "version": "0.36.0", - "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-0.36.0.tgz", - "integrity": "sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw==", - "dev": true, - "requires": { - "htmlparser2": "^3.10.0" - } - }, - "postcss-less": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-3.1.4.tgz", - "integrity": "sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA==", - "dev": true, - "requires": { - "postcss": "^7.0.14" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, "postcss-media-query-parser": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", @@ -23099,99 +21771,30 @@ } }, "postcss-safe-parser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz", - "integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==", - "dev": true, - "requires": { - "postcss": "^7.0.26" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "postcss-sass": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/postcss-sass/-/postcss-sass-0.4.4.tgz", - "integrity": "sha512-BYxnVYx4mQooOhr+zer0qWbSPYnarAy8ZT7hAQtbxtgVf8gy+LSLT/hHGe35h14/pZDTw1DsxdbrwxBN++H+fg==", - "dev": true, - "requires": { - "gonzales-pe": "^4.3.0", - "postcss": "^7.0.21" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", + "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", + "dev": true }, "postcss-scss": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.2.tgz", - "integrity": "sha512-xfdkU128CkKKKVAwkyt0M8OdnelJ3MRcIRAPPQkRpoPeuzWY3RIeg7piRCpZ79MK7Q16diLXMMAD9dN5mauPlQ==", - "requires": {} + "integrity": "sha512-xfdkU128CkKKKVAwkyt0M8OdnelJ3MRcIRAPPQkRpoPeuzWY3RIeg7piRCpZ79MK7Q16diLXMMAD9dN5mauPlQ==" }, "postcss-selector-parser": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", - "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", + "version": "6.0.8", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.8.tgz", + "integrity": "sha512-D5PG53d209Z1Uhcc0qAZ5U3t5HagH3cxu+WLZ22jt3gLUpXM4eXXfiO14jiDWST3NNooX/E8wISfOhZ9eIjGTQ==", "dev": true, "requires": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, - "postcss-syntax": { - "version": "0.36.2", - "resolved": "https://registry.npmjs.org/postcss-syntax/-/postcss-syntax-0.36.2.tgz", - "integrity": "sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==", - "dev": true, - "requires": {} - }, "postcss-value-parser": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", - "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "dev": true }, "prelude-ls": { @@ -23376,8 +21979,7 @@ "version": "7.4.6", "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "dev": true, - "requires": {} + "dev": true } } }, @@ -23708,41 +22310,6 @@ } } }, - "remark": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/remark/-/remark-13.0.0.tgz", - "integrity": "sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA==", - "dev": true, - "requires": { - "remark-parse": "^9.0.0", - "remark-stringify": "^9.0.0", - "unified": "^9.1.0" - } - }, - "remark-parse": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz", - "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==", - "dev": true, - "requires": { - "mdast-util-from-markdown": "^0.8.0" - } - }, - "remark-stringify": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-9.0.1.tgz", - "integrity": "sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==", - "dev": true, - "requires": { - "mdast-util-to-markdown": "^0.6.0" - } - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -24114,18 +22681,15 @@ "optional": true }, "socket.io": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.2.0.tgz", - "integrity": "sha512-sjlGfMmnaWvTRVxGRGWyhd9ctpg4APxWAxu85O/SxekkxHhfxmePWZbaYCkeX5QQX0z1YEnKOlNt6w82E4Nzug==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.4.1.tgz", + "integrity": "sha512-s04vrBswdQBUmuWJuuNTmXUVJhP0cVky8bBDhdkf8y0Ptsu7fKU2LuLbts9g+pdmAdyMMn8F/9Mf1/wbtUN0fg==", "requires": { - "@types/cookie": "^0.4.1", - "@types/cors": "^2.8.12", - "@types/node": ">=10.0.0", "accepts": "~1.3.4", "base64id": "~2.0.0", "debug": "~4.3.2", - "engine.io": "~5.2.0", - "socket.io-adapter": "~2.3.2", + "engine.io": "~6.1.0", + "socket.io-adapter": "~2.3.3", "socket.io-parser": "~4.0.4" } }, @@ -24135,17 +22699,27 @@ "integrity": "sha512-Qd/iwn3VskrpNO60BeRyCyr8ZWw9CPZyitW4AQwmRZ8zCiyDiL+znRnWX6tDHXnWn1sJrM1+b6Mn6wEDJJ4aYQ==" }, "socket.io-client": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.2.0.tgz", - "integrity": "sha512-3GJ2KMh7inJUNAOjgf8NaKJZJa9uRyfryh2LrVJyKyxmzoXlfW9DeDNqylJn0ovOFt4e/kRLNWzMt/YqqEWYSA==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.4.1.tgz", + "integrity": "sha512-N5C/L5fLNha5Ojd7Yeb/puKcPWWcoB/A09fEjjNsg91EDVr5twk/OEyO6VT9dlLSUNY85NpW6KBhVMvaLKQ3vQ==", "requires": { - "@types/component-emitter": "^1.2.10", + "@socket.io/component-emitter": "~3.0.0", "backo2": "~1.0.2", - "component-emitter": "~1.3.0", "debug": "~4.3.2", - "engine.io-client": "~5.2.0", + "engine.io-client": "~6.1.1", "parseuri": "0.0.6", - "socket.io-parser": "~4.0.4" + "socket.io-parser": "~4.1.1" + }, + "dependencies": { + "socket.io-parser": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.1.1.tgz", + "integrity": "sha512-USQVLSkDWE5nbcY760ExdKaJxCE65kcsG/8k5FDGZVVxpD1pA7hABYXYkCUvxUuYYh/+uQw0N/fvBzfT8o07KA==", + "requires": { + "@socket.io/component-emitter": "~3.0.0", + "debug": "~4.3.1" + } + } } }, "socket.io-parser": { @@ -24380,101 +22954,67 @@ "dev": true }, "stylelint": { - "version": "13.13.1", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.13.1.tgz", - "integrity": "sha512-Mv+BQr5XTUrKqAXmpqm6Ddli6Ief+AiPZkRsIrAoUKFuq/ElkUh9ZMYxXD0iQNZ5ADghZKLOWz1h7hTClB7zgQ==", + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-14.2.0.tgz", + "integrity": "sha512-i0DrmDXFNpDsWiwx6SPRs4/pyw4kvZgqpDGvsTslQMY7hpUl6r33aQvNSn6cnTg2wtZ9rreFElI7XAKpOWi1vQ==", "dev": true, "requires": { - "@stylelint/postcss-css-in-js": "^0.37.2", - "@stylelint/postcss-markdown": "^0.36.2", - "autoprefixer": "^9.8.6", "balanced-match": "^2.0.0", - "chalk": "^4.1.1", - "cosmiconfig": "^7.0.0", - "debug": "^4.3.1", + "colord": "^2.9.2", + "cosmiconfig": "^7.0.1", + "debug": "^4.3.3", "execall": "^2.0.0", - "fast-glob": "^3.2.5", + "fast-glob": "^3.2.7", "fastest-levenshtein": "^1.0.12", "file-entry-cache": "^6.0.1", "get-stdin": "^8.0.0", "global-modules": "^2.0.0", - "globby": "^11.0.3", + "globby": "^11.0.4", "globjoin": "^0.1.4", "html-tags": "^3.1.0", - "ignore": "^5.1.8", + "ignore": "^5.2.0", "import-lazy": "^4.0.0", "imurmurhash": "^0.1.4", - "known-css-properties": "^0.21.0", - "lodash": "^4.17.21", - "log-symbols": "^4.1.0", + "is-plain-object": "^5.0.0", + "known-css-properties": "^0.24.0", "mathml-tag-names": "^2.1.3", "meow": "^9.0.0", "micromatch": "^4.0.4", + "normalize-path": "^3.0.0", "normalize-selector": "^0.2.0", - "postcss": "^7.0.35", - "postcss-html": "^0.36.0", - "postcss-less": "^3.1.4", + "picocolors": "^1.0.0", + "postcss": "^8.3.11", "postcss-media-query-parser": "^0.2.3", "postcss-resolve-nested-selector": "^0.1.1", - "postcss-safe-parser": "^4.0.2", - "postcss-sass": "^0.4.4", - "postcss-scss": "^2.1.1", - "postcss-selector-parser": "^6.0.5", - "postcss-syntax": "^0.36.2", + "postcss-safe-parser": "^6.0.0", + "postcss-selector-parser": "^6.0.7", "postcss-value-parser": "^4.1.0", "resolve-from": "^5.0.0", - "slash": "^3.0.0", "specificity": "^0.4.1", - "string-width": "^4.2.2", - "strip-ansi": "^6.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", "style-search": "^0.1.0", - "sugarss": "^2.0.0", "svg-tags": "^1.0.0", - "table": "^6.6.0", + "table": "^6.7.5", "v8-compile-cache": "^2.3.0", "write-file-atomic": "^3.0.3" }, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, "balanced-match": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", "dev": true }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", "dev": true, "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "ms": "2.1.2" } }, - "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==", - "dev": true, - "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==", - "dev": true - }, "global-modules": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", @@ -24495,16 +23035,16 @@ "which": "^1.3.1" } }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true }, - "ignore": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", - "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "dev": true }, "kind-of": { @@ -24513,52 +23053,18 @@ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "postcss-scss": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-2.1.1.tgz", - "integrity": "sha512-jQmGnj0hSGLd9RscFw9LyuSVAa5Bl1/KBPqG1NQw9w8ND55nY4ZEsdlVuYJvLPpV+y0nwTV5v/4rHPzZRihQbA==", - "dev": true, - "requires": { - "postcss": "^7.0.6" - } - }, "resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -24571,52 +23077,18 @@ } }, "stylelint-config-recommended": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-5.0.0.tgz", - "integrity": "sha512-c8aubuARSu5A3vEHLBeOSJt1udOdS+1iue7BmJDTSXoCBmfEQmmWX+59vYIj3NQdJBY6a/QRv1ozVFpaB9jaqA==", - "dev": true, - "requires": {} + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-6.0.0.tgz", + "integrity": "sha512-ZorSSdyMcxWpROYUvLEMm0vSZud2uB7tX1hzBZwvVY9SV/uly4AvvJPPhCcymZL3fcQhEQG5AELmrxWqtmzacw==", + "dev": true }, "stylelint-config-standard": { - "version": "22.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-22.0.0.tgz", - "integrity": "sha512-uQVNi87SHjqTm8+4NIP5NMAyY/arXrBgimaaT7skvRfE9u3JKXRK9KBkbr4pVmeciuCcs64kAdjlxfq6Rur7Hw==", + "version": "24.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-24.0.0.tgz", + "integrity": "sha512-+RtU7fbNT+VlNbdXJvnjc3USNPZRiRVp/d2DxOF/vBDDTi0kH5RX2Ny6errdtZJH3boO+bmqIYEllEmok4jiuw==", "dev": true, "requires": { - "stylelint-config-recommended": "^5.0.0" - } - }, - "sugarss": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-2.0.0.tgz", - "integrity": "sha512-WfxjozUk0UVA4jm+U1d736AUpzSrNsQcIbyOkoE364GrtWmIrFdk5lksEupgWMD4VaT/0kVx1dobpiDumSgmJQ==", - "dev": true, - "requires": { - "postcss": "^7.0.2" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "stylelint-config-recommended": "^6.0.0" } }, "supports-color": { @@ -24674,9 +23146,9 @@ "dev": true }, "table": { - "version": "6.7.3", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.3.tgz", - "integrity": "sha512-5DkIxeA7XERBqMwJq0aHZOdMadBx4e6eDoFRuyT5VR82J0Ycg2DwM6GfA/EQAhJ+toRTaS1lIdSQCqgrmhPnlw==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.0.tgz", + "integrity": "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==", "dev": true, "requires": { "ajv": "^8.0.1", @@ -24896,12 +23368,6 @@ "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", "dev": true }, - "trough": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", - "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", - "dev": true - }, "tslib": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", @@ -24996,34 +23462,6 @@ "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", "dev": true }, - "unified": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz", - "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==", - "dev": true, - "requires": { - "bail": "^1.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^2.0.0", - "trough": "^1.0.0", - "vfile": "^4.0.0" - }, - "dependencies": { - "is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "dev": true - }, - "is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true - } - } - }, "unique-filename": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", @@ -25042,30 +23480,6 @@ "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", - "integrity": "sha512-xaTC/AGZ0rIM2gM28YVRAFPIZpzbpDtU3dRmp7EXlNVA8ziQc4hY3H7BHXM1J49nEmiqc3svnqMReW+PGqbZKQ==", - "dev": true, - "requires": { - "unist-util-is": "^4.0.0" - } - }, - "unist-util-is": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", - "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", - "dev": true - }, - "unist-util-stringify-position": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", - "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", - "dev": true, - "requires": { - "@types/unist": "^2.0.2" - } - }, "universal-user-agent": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", @@ -25152,36 +23566,6 @@ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" }, - "vfile": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", - "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^2.0.0", - "vfile-message": "^2.0.0" - }, - "dependencies": { - "is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "dev": true - } - } - }, - "vfile-message": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", - "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" - } - }, "vite": { "version": "2.6.14", "resolved": "https://registry.npmjs.org/vite/-/vite-2.6.14.tgz", @@ -25269,20 +23653,17 @@ "vue-confirm-dialog": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/vue-confirm-dialog/-/vue-confirm-dialog-1.0.2.tgz", - "integrity": "sha512-gTo1bMDWOLd/6ihmWv8VlPxhc9QaKoE5YqlsKydUOfrrQ3Q3taljF6yI+1TMtAtJLrvZ8DYrePhgBhY1VCJzbQ==", - "requires": {} + "integrity": "sha512-gTo1bMDWOLd/6ihmWv8VlPxhc9QaKoE5YqlsKydUOfrrQ3Q3taljF6yI+1TMtAtJLrvZ8DYrePhgBhY1VCJzbQ==" }, "vue-contenteditable": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/vue-contenteditable/-/vue-contenteditable-3.0.4.tgz", - "integrity": "sha512-CmtqT4zHQwLoJEyNVaXUjjUFPUVYlXXBHfSbRCHCUjODMqrn6L293LM1nc1ELx8epitZZvecTfIqOLlSzB3d+w==", - "requires": {} + "integrity": "sha512-CmtqT4zHQwLoJEyNVaXUjjUFPUVYlXXBHfSbRCHCUjODMqrn6L293LM1nc1ELx8epitZZvecTfIqOLlSzB3d+w==" }, "vue-demi": { "version": "0.10.1", "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.10.1.tgz", - "integrity": "sha512-L6Oi+BvmMv6YXvqv5rJNCFHEKSVu7llpWWJczqmAQYOdmPPw5PNYoz1KKS//Fxhi+4QP64dsPjtmvnYGo1jemA==", - "requires": {} + "integrity": "sha512-L6Oi+BvmMv6YXvqv5rJNCFHEKSVu7llpWWJczqmAQYOdmPPw5PNYoz1KKS//Fxhi+4QP64dsPjtmvnYGo1jemA==" }, "vue-eslint-parser": { "version": "7.11.0", @@ -25354,8 +23735,7 @@ "vue-demi": { "version": "0.11.4", "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.11.4.tgz", - "integrity": "sha512-/3xFwzSykLW2HiiLie43a+FFgNOcokbBJ+fzvFXd0r2T8MYohqvphUyDQ8lbAwzQ3Dlcrb1c9ykifGkhSIAk6A==", - "requires": {} + "integrity": "sha512-/3xFwzSykLW2HiiLie43a+FFgNOcokbBJ+fzvFXd0r2T8MYohqvphUyDQ8lbAwzQ3Dlcrb1c9ykifGkhSIAk6A==" } } }, @@ -25370,8 +23750,7 @@ "vue-toastification": { "version": "2.0.0-rc.5", "resolved": "https://registry.npmjs.org/vue-toastification/-/vue-toastification-2.0.0-rc.5.tgz", - "integrity": "sha512-q73e5jy6gucEO/U+P48hqX+/qyXDozAGmaGgLFm5tXX4wJBcVsnGp4e/iJqlm9xzHETYOilUuwOUje2Qg1JdwA==", - "requires": {} + "integrity": "sha512-q73e5jy6gucEO/U+P48hqX+/qyXDozAGmaGgLFm5tXX4wJBcVsnGp4e/iJqlm9xzHETYOilUuwOUje2Qg1JdwA==" }, "vuedraggable": { "version": "4.1.0", @@ -25550,8 +23929,7 @@ "version": "7.5.5", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz", "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==", - "dev": true, - "requires": {} + "dev": true }, "xml-name-validator": { "version": "3.0.0", @@ -25641,12 +24019,6 @@ "property-expr": "^2.0.4", "toposort": "^2.0.2" } - }, - "zwitch": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", - "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", - "dev": true } } } diff --git a/package.json b/package.json index 0c8365fc..048a5e0a 100644 --- a/package.json +++ b/package.json @@ -89,8 +89,8 @@ "prometheus-api-metrics": "~3.2.0", "qrcode": "~1.5.0", "redbean-node": "0.1.3", - "socket.io": "~4.2.0", - "socket.io-client": "~4.2.0", + "socket.io": "~4.4.1", + "socket.io-client": "~4.4.1", "tar": "^6.1.11", "tcp-ping": "~0.1.1", "thirty-two": "~1.0.2", From 60f1eb7b457b3fcd85574c163e2775a4c8f08d90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Buchti=C4=8D?= <martin.buchta@gmail.com> Date: Mon, 17 Jan 2022 18:42:32 +0100 Subject: [PATCH 226/282] new cs-CZ.js --- src/languages/cs-CZ.js | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/languages/cs-CZ.js diff --git a/src/languages/cs-CZ.js b/src/languages/cs-CZ.js new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/src/languages/cs-CZ.js @@ -0,0 +1 @@ + From 3f8ca8243439758cfc6e1e9f5400d597ba0e42d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Buchti=C4=8D?= <martin.buchta@gmail.com> Date: Tue, 18 Jan 2022 08:48:39 +0100 Subject: [PATCH 227/282] cs-CZ translation --- src/components/settings/Security.vue | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/components/settings/Security.vue b/src/components/settings/Security.vue index 94c6b5a6..5ef9bac7 100644 --- a/src/components/settings/Security.vue +++ b/src/components/settings/Security.vue @@ -215,6 +215,12 @@ <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> + + <template v-else-if="$i18n.locale === 'cs-CZ' "> + <p>Opravdu chcete <strong>deaktivovat autentifikaci</strong>?</p> + <p>Tato možnost je určena pro případy, kdy <strong>máte autentifikaci zajištěnou třetí stranou</strong> ještě před přístupem do Uptime Kuma, například prostřednictvím Cloudflare Access.</p> + <p>Používejte ji prosím s rozmyslem.</p> + </template> <!-- English (en) --> <template v-else> From a99e87c02cda772702ad4e51640bfabd45e0cae8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Buchti=C4=8D?= <martin.buchta@gmail.com> Date: Tue, 18 Jan 2022 08:50:11 +0100 Subject: [PATCH 228/282] cs-CZ --- src/i18n.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/i18n.js b/src/i18n.js index cdb93e95..a5467561 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -2,6 +2,7 @@ import { createI18n } from "vue-i18n/index"; import en from "./languages/en"; const languageList = { + "cs-CZ": "Čeština", "zh-HK": "繁體中文 (香港)", "bg-BG": "Български", "de-DE": "Deutsch (Deutschland)", From 4713820da74887f27ca33584ad562a6b08be6734 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Buchti=C4=8D?= <martin.buchta@gmail.com> Date: Tue, 18 Jan 2022 14:44:11 +0100 Subject: [PATCH 229/282] first csy translation --- src/languages/cs-CZ.js | 365 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 364 insertions(+), 1 deletion(-) diff --git a/src/languages/cs-CZ.js b/src/languages/cs-CZ.js index 8b137891..8e74b9b7 100644 --- a/src/languages/cs-CZ.js +++ b/src/languages/cs-CZ.js @@ -1 +1,364 @@ - +export default { + languageName: "Czech", + checkEverySecond: "Kontrolovat každých {0} sekund", + retryCheckEverySecond: "Opakovat každých {0} sekund", + retriesDescription: "Maximální počet pokusů před označením služby jako nedostupné a odesláním oznámení", + ignoreTLSError: "Ignorovat TLS/SSL chyby na HTTPS stránkách", + upsideDownModeDescription: "Pomocí této možnosti změníte způsob vyhodnocování stavu. Pokud je služba dosažitelná, je NEDOSTUPNÁ.", + maxRedirectDescription: "Maximální počet přesměrování, která se mají následovat. Nastavením hodnoty 0 zakážete přesměrování.", + acceptedStatusCodesDescription: "Vyberte stavové kódy, které jsou považovány za úspěšnou odpověď.", + passwordNotMatchMsg: "Hesla se neshodují", + notificationDescription: "Pro zajištění funkčnosti oznámení je nutné je přiřadit dohledu.", + keywordDescription: "Vyhledat klíčové slovo v prosté odpovědi HTML nebo JSON. Při hledání se rozlišuje velikost písmen.", + pauseDashboardHome: "Pozastavit", + deleteMonitorMsg: "Opravdu chcete odstranit tento dohled?", + deleteNotificationMsg: "Opravdu chcete odstranit toto oznámení pro všechny dohledy?", + resoverserverDescription: "Cloudflare je výchozí server. Resolver server můžete kdykoli změnit.", + rrtypeDescription: "Vyberte typ záznamu o prostředku, který chcete monitorovat", + pauseMonitorMsg: "Opravdu chcete dohled pozastavit?", + enableDefaultNotificationDescription: "Toto oznámení bude standardně aktivní pro nové dohledy. V případě potřeby můžete oznámení stále zakázat na úrovni jednotlivých dohledů.", + clearEventsMsg: "Opravdu chcete odstranit všechny události pro tento dohled?", + clearHeartbeatsMsg: "Opravdu chcete odstranit všechny heartbeaty pro tento dohled?", + confirmClearStatisticsMsg: "Opravdu chcete smazat VŠECHNY statistiky?", + importHandleDescription: "Možnost 'Přeskočit existující' vyberte v případě, že chcete přeskočit všechny dohledy nebo oznámení se stejným názvem. Vybráním možnosti 'Přepsat' dojde k odstranění všech existujících dohledů a oznámení.", + confirmImportMsg: "Opravdu chcete importovat zálohu? Prosím ověřte, zda jste vybrali správnou možnost importu.", + twoFAVerifyLabel: "Prosím, zadejte svůj token pro ověření 2FA:", + tokenValidSettingsMsg: "Token je platný! Nyní můžete uložit nastavení 2FA.", + confirmEnableTwoFAMsg: "Opravdu chcete zapnout 2FA?", + confirmDisableTwoFAMsg: "Opravdu chcete deaktivovat 2FA?", + Settings: "Nastavení", + Dashboard: "Nástěnka", + "New Update": "Nová aktualizace", + Language: "Jazyk", + Appearance: "Vzhled", + Theme: "Motiv", + General: "Obecné", + "Primary Base URL": "Primární URL adresa", + Version: "Verze", + "Check Update On GitHub": "Zkontrolovat aktualizace na GitHubu", + List: "Seznam", + Add: "Přidat", + "Add New Monitor": "Přidat nový dohled", + "Quick Stats": "Rychlé statistiky", + Up: "Běží", + Down: "Nedostupný", + Pending: "Čekám", + Unknown: "Neznámý", + Pause: "Pozastavit", + Name: "Název", + Status: "Stav", + DateTime: "DateTime", + Message: "Zpráva", + "No important events": "Žádné důležité události", + Resume: "Pokračovat", + Edit: "Změnit", + Delete: "Vymazat", + Current: "Aktuální", + Uptime: "Doba provozu", + "Cert Exp.": "Platnost certifikátu", + days: "dny/í", + day: "den", + "-day": "-dní", + hour: "hodina", + "-hour": "-hodin", + Response: "Odpověď", + Ping: "Ping", + "Monitor Type": "Typ dohledu", + Keyword: "Klíčové slovo", + "Friendly Name": "Obecný název", + URL: "URL", + Hostname: "Adresa serveru", + Port: "Port", + "Heartbeat Interval": "Heartbeat interval", + Retries: "Počet pokusů", + "Heartbeat Retry Interval": "Interval opakování prezenčního signálu", + Advanced: "Rozšířené", + "Upside Down Mode": "Inverzní režim", + "Max. Redirects": "Max. Přesměrování", + "Accepted Status Codes": "Akceptované stavové kódy", + "Push URL": "Push URL", + needPushEvery: "Tuto URL adresu byste měli volat každých {0} sekund.", + pushOptionalParams: "Volitelné parametry: {0}", + Save: "Uložit", + Notifications: "Oznámení", + "Not available, please setup.": "Není k dispozici, prosím nastavte.", + "Setup Notification": "Nastavení oznámení", + Light: "Světlý", + Dark: "Tmavý", + Auto: "Automaticky", + "Theme - Heartbeat Bar": "Motiv – Heartbeat panel", + Normal: "Normální", + Bottom: "Dole", + None: "Žádné", + Timezone: "Časové pásmo", + "Search Engine Visibility": "Viditelnost pro vyhledávače", + "Allow indexing": "Povolit indexování", + "Discourage search engines from indexing site": "Zabránit vyhledávačům v indexování stránky", + "Change Password": "Změnit heslo", + "Current Password": "Aktuální heslo", + "New Password": "Nové heslo", + "Repeat New Password": "Znovu zadat nové heslo", + "Update Password": "Aktualizovat heslo", + "Disable Auth": "Deaktivovat ověřování", + "Enable Auth": "Povolit ověřování", + Logout: "Odhlášení", + Leave: "Odejít", + "I understand, please disable": "Rozumím, chci ji deaktivovat", + Confirm: "Potvrzení", + Yes: "Ano", + No: "Ne", + Username: "Uživatelské jméno", + Password: "Heslo", + "Remember me": "Zapamatovat si mě", + Login: "Přihlášení", + "No Monitors, please": "Žádné dohledy, prosím", + "add one": "přidat jeden", + "Notification Type": "Typ oznámení", + Email: "E-mail", + Test: "Test", + "Certificate Info": "Informace o certifikátu", + "Resolver Server": "Resolver Server", + "Resource Record Type": "Typ záznamu o prostředku", + "Last Result": "Poslední výsledek", + "Create your admin account": "Vytvořit účet administrátora", + "Repeat Password": "Znovu zadat heslo", + "Import Backup": "Importovat zálohu", + "Export Backup": "Exportovat zálohu", + Export: "Exportovat", + Import: "Importovat", + respTime: "Odezva Čas (ms)", + notAvailableShort: "N/A", + "Default enabled": "Standardně povoleno", + "Apply on all existing monitors": "Použít pro všechny existující dohledy", + Create: "Vytvořit", + "Clear Data": "Vymazat data", + Events: "Události", + Heartbeats: "Heartbeaty", + "Auto Get": "Získat automaticky", + backupDescription: "Všechny dohledy a oznámení můžete zálohovat do souboru ve formátu JSON.", + backupDescription2: "Poznámka: Nezahrnuje historii a data událostí.", + backupDescription3: "Součástí exportovaného souboru jsou citlivá data jako tokeny oznámení; export si prosím bezpečně uložte.", + alertNoFile: "Vyberte soubor, který chcete importovat.", + alertWrongFileType: "Vyberte soubor ve formátu JSON.", + "Clear all statistics": "Vymazat všechny statistiky", + "Skip existing": "Přeskočit existující", + Overwrite: "Přepsat", + Options: "Možnosti", + "Keep both": "Ponechat obojí", + "Verify Token": "Ověřit token", + "Setup 2FA": "Nastavení 2FA", + "Enable 2FA": "Povolit 2FA", + "Disable 2FA": "Deaktivovat 2FA", + "2FA Settings": "Nastavení 2FA", + "Two Factor Authentication": "Dvoufaktorová autentifikace", + Active: "Zapnuto", + Inactive: "Neaktivní", + Token: "Token", + "Show URI": "Zobrazit URI", + Tags: "Štítky", + "Add New below or Select...": "Níže přidejte nový nebo vyberte existující…", + "Tag with this name already exist.": "Štítek s tímto názvem již existuje.", + "Tag with this value already exist.": "Štítek touto hodnotou již existuje.", + color: "barva", + "value (optional)": "hodnota (volitelné)", + Gray: "Šedá", + Red: "Červená", + Orange: "Oranžová", + Green: "Zelená", + Blue: "Modrá", + Indigo: "Indigo", + Purple: "Purpurová", + Pink: "Růžová", + "Search...": "Hledat…", + "Avg. Ping": "Průměr Ping", + "Avg. Response": "Průměr Odpověď", + "Entry Page": "Vstupní stránka", + statusPageNothing: "Nic tady není, přidejte prosím skupinu nebo dohled.", + "No Services": "Žádné služby", + "All Systems Operational": "Všechny systémy běží", + "Partially Degraded Service": "Částečně zhoršená služba", + "Degraded Service": "Zhoršená služba", + "Add Group": "Přidat skupinu", + "Add a monitor": "Přidání dohledu", + "Edit Status Page": "Upravit stavovou stránku", + "Go to Dashboard": "Přejít na nástěnku", + "Status Page": "Stavová stránka", + defaultNotificationName: "Moje {notification} upozornění ({číslo})", + here: "sem", + Required: "Vyžadováno", + telegram: "Telegram", + "Bot Token": "Token robota", + wayToGetTelegramToken: "Token můžete získat od {0}.", + "Chat ID": "ID chatu", + supportTelegramChatID: "Podpora přímého chatu / skupiny / ID chatu kanálu", + wayToGetTelegramChatID: "ID chatu můžete získat tak, že robotovi zašlete zprávu a přejdete na tuto adresu URL, kde zobrazíte chat_id:", + "YOUR BOT TOKEN HERE": "YOUR BOT TOKEN HERE", + chatIDNotFound: "ID chatu nebylo nalezeno; nejprve tomuto robotovi zašlete zprávu", + webhook: "Webhook", + "Post URL": "URL adresa příspěvku", + "Content Type": "Typ obsahu", + webhookJsonDesc: "{0} je vhodný pro všechny moderní servery HTTP, jako je Express.js", + webhookFormDataDesc: "{multipart} je vhodné pro PHP. JSON bude nutné analyzovat prostřednictvím {decodeFunction}", + smtp: "E-mail (SMTP)", + secureOptionNone: "Žádné / STARTTLS (25, 587)", + secureOptionTLS: "TLS (465)", + "Ignore TLS Error": "Ignorovat chybu TLS", + "From Email": "Odesílatel", + emailCustomSubject: "Vlastní předmět", + "To Email": "Příjemce", + smtpCC: "Kopie", + smtpBCC: "Skrytá kopie", + discord: "Discord", + "Discord Webhook URL": "Discord Webhook URL", + wayToGetDiscordURL: "Získáte tak, že přejdete do Nastavení serveru - > Integrace - > Vytvořit Webhook", + "Bot Display Name": "Zobrazované jméno robota", + "Prefix Custom Message": "Předpona vlastní zprávy", + "Hello @everyone is...": "Dobrý den, {'@'}všichni jsou…", + teams: "Microsoft Teams", + "Webhook URL": "URL adresa webhooku", + wayToGetTeamsURL: "Informace o tom, jak vytvořit URL adresu webhooku naleznete {0}.", + signal: "Signal", + Number: "Číslo", + Recipients: "Příjemci", + needSignalAPI: "Musíte mít Signal klienta s REST API.", + wayToCheckSignalURL: "Pro zobrazení instrukcí, jak službu nastavit, přejděte na následující adresu:", + signalImportant: "Důležité V seznamu příjemců není možné současně použít skupiny a čísla!", + gotify: "Gotify", + "Application Token": "Token aplikace", + "Server URL": "URL adresa serveru", + Priority: "Priorita", + slack: "Slack", + "Icon Emoji": "Ikona smajlíka", + "Channel Name": "Název kanálu", + "Uptime Kuma URL": "Uptime Kuma URL", + aboutWebhooks: "Více informací o Webhoocích naleznete na adrese: {0}", + aboutChannelName: "Pro vynechání Webhook kanálu zadejte jeho název do pole Název kanálu {0}. Příklad: #jiny-kanal", + aboutKumaURL: "Pokud ponecháte pole URL adresa Uptime Kuma prázdné, použije se domovská stránka GitHub projektu.", + emojiCheatSheet: "Tahák smajlíků: {0}", + "rocket.chat": "Rocket.Chat", + pushover: "Pushover", + pushy: "Pushy", + octopush: "Octopush", + promosms: "PromoSMS", + clicksendsms: "ClickSend SMS", + lunasea: "LunaSea", + apprise: "Apprise (podpora více než 50 oznamovacích služeb)", + GoogleChat: "Google Chat (pouze Google Workspace)", + pushbullet: "Pushbullet", + line: "Line Messenger", + mattermost: "Mattermost", + "User Key": "Klíč uživatele", + Device: "Zařízení", + "Message Title": "Nadpis zprávy", + "Notification Sound": "Zvuk oznámení", + "More info on:": "Více informací naleznete na adrese: {0}", + pushoverDesc1: "Výchozí časový limit pro emergency prioritu (2) je 30 sekund mezi opakovanými pokusy a vyprší po 1 hodině.", + pushoverDesc2: "Pokud chcete odesílat oznámení do různých zařízení, vyplňte pole Zařízení.", + "SMS Type": "Typ SMS", + octopushTypePremium: "Premium (rychlé – doporučeno pro upozornění)", + octopushTypeLowCost: "Nízké náklady (pomalé – někdy blokované operátorem)", + checkPrice: "Ceny {0} zjistíte na adrese:", + apiCredentials: "API přihlašovací údaje", + octopushLegacyHint: "Používáte starší verzi Octopush (2011-2020) nebo novou verzi?", + "Check octopush prices": "Ceny octopush naleznete na adrese {0}.", + octopushPhoneNumber: "Telefonní číslo (v mezinárodním formátu, např: +42012345678) ", + octopushSMSSender: "Odesílatel SMS: 3-11 alfanumerických znaků a mezera (a-zA-Z0-9)", + "LunaSea Device ID": "ID zařízení LunaSea", + "Apprise URL": "Apprise URL", + "Example:": "Příklad: {0}", + "Read more:": "Více informací: {0}", + "Status:": "Stav: {0}", + "Read more": "Více informací", + appriseInstalled: "Apprise je nainstalován.", + appriseNotInstalled: "Apprise není nainstalován. {0}", + "Access Token": "Přístupový token", + "Channel access token": "Přístupový token ke kanálu", + "Line Developers Console": "Konzole Line Developers", + lineDevConsoleTo: "Konzole Line Developers - {0}", + "Basic Settings": "Obecné nastavení", + "User ID": "ID uživatele", + "Messaging API": "Messaging API", + wayToGetLineChannelToken: "Nejprve otevřete {0}, vytvořte poskytovatele a kanál (Messaging API). Poté můžete získat přístupový token ke kanálu a ID uživatele, v sekci uvedené výše.", + "Icon URL": "URL adresa ikony", + aboutIconURL: "Pro přepsání výchozího profilového obrázku můžete do pole \"URL adresa ikony\" zadat odkaz na obrázek. Nebude použito, pokud je nastavena ikona smajlíka.", + aboutMattermostChannelName: "Výchozí kanál, do kterého jsou zasílány Webhook příspěvky, můžete přepsat zadáním názvu kanálu do pole \"Název kanálu\". Tato možnost musí být povolena v nastavení Mattermost Webhooku. Příklad: #jiny-kanal", + matrix: "Matrix", + promosmsTypeEco: "SMS ECO – levné, ale pomalé a často přetížené. Omezeno pouze na polské příjemce.", + promosmsTypeFlash: "SMS FLASH –zpráva se automaticky zobrazí na zařízení příjemce. Omezeno pouze na polské příjemce.", + promosmsTypeFull: "SMS FULL – prémiová úroveň SMS. Můžete definovat odesílatele (vyžadována registrace jména). Spolehlivý pro výstrahy.", + promosmsTypeSpeed: "SMS SPEED – nejvyšší priorita v systému. Velmi rychlé a spolehlivé, ale nákladné (přibližně dvojnásobek ceny SMS FULL).", + promosmsPhoneNumber: "Telefonní číslo (polští příjemci mohou vynechat telefonní předvolbu)", + promosmsSMSSender: "Odesílatel SMS: Předem zaregistrovaný název nebo jeden z výchozích: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "Feishu WebHookURL", + matrixHomeserverURL: "URL adresa domácího serveru (s http(s):// a volitelně portem)", + "Internal Room Id": "ID interní místnosti", + matrixDesc1: "ID interní místnosti naleznete v Matrix klientovi v rozšířeném nastavení místnosti. Mělo by být ve tvaru !QMdRCpUIfLwsfjxye6:home.server.", + matrixDesc2: "Důrazně doporučujeme vytvořit nového uživatele a nepoužívat váš vlastní přístupový token uživatele Matrix. Pomocí něj je možné získat přístup k vašemu účtu a všem místnostem, ke kterým jste se připojili. Místo toho vytvořte nového uživatele a pozvěte jej pouze do místnosti, do které chcete oznámení dostávat. Přístupový token můžete získat spuštěním {0}", + Method: "Metoda", + Body: "Tělo", + Headers: "Hlavičky", + PushUrl: "Push URL", + HeadersInvalidFormat: "The request headers are not valid JSON: ", + BodyInvalidFormat: "The request body is not valid JSON: ", + "Monitor History": "Historie dohledu", + clearDataOlderThan: "Historie dohledu bude uchovávána po dobu {0} dní.", + PasswordsDoNotMatch: "Hesla se neshodují.", + records: "záznamů", + "One record": "Jeden záznam", + steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", + "Current User": "Aktuálně přihlášený uživatel", + recent: "Poslední", + Done: "Hotovo", + Info: "Informace", + Security: "Bezpečnost", + "Steam API Key": "API klíč služby Steam", + "Shrink Database": "Zmenšit databázi", + "Pick a RR-Type...": "Vyberte typ záznamu o prostředku…", + "Pick Accepted Status Codes...": "Vyberte stavové kódy, které chcete akceptovat…", + Default: "Standardní", + "HTTP Options": "Možnosti protokolu HTTP", + "Create Incident": "Vytvořit incident", + Title: "Předmět", + Content: "Obsah", + Style: "Styl", + info: "informace", + warning: "upozornění", + danger: "riziko", + primary: "primární", + light: "světlý", + dark: "tmavý", + Post: "Publikovat", + "Please input title and content": "Zadejte prosím název a obsah", + Created: "Vytvořen", + "Last Updated": "Poslední aktualizace", + Unpin: "Odepnout", + "Switch to Light Theme": "Přepnout na světlý motiv", + "Switch to Dark Theme": "Přepnutí na tmavý motiv", + "Show Tags": "Zobrazit štítky", + "Hide Tags": "Skrýt štítky", + Description: "Popis", + "No monitors available.": "Není dostupný žádný dohled.", + "Add one": "Přidat jeden", + "No Monitors": "Žádný dohled", + "Untitled Group": "Skupina bez názvu", + Services: "Služby", + Discard: "Zahodit", + Cancel: "Zrušit", + "Powered by": "Poskytuje", + shrinkDatabaseDescription: "Pomocí této možnosti provedete příkaz VACUUM nad SQLite databází. Pokud byla databáze vytvořena po vydání verze 1.10.0, AUTO_VACUUM je již povolena a tato akce není vyžadována.", + serwersms: "SerwerSMS.pl", + serwersmsAPIUser: "API uživatelské jméno (včetně předpony webapi_)", + serwersmsAPIPassword: "API heslo", + serwersmsPhoneNumber: "Telefonní číslo", + serwersmsSenderName: "Odesílatel SMS (registrováno prostřednictvím zákaznického portálu)", + "stackfield": "Stackfield", + smtpDkimSettings: "Nastavení DKIM", + smtpDkimDesc: "Informace o použití naleznete v {0} Nodemailer DKIM.", + documentation: "dokumentaci", + smtpDkimDomain: "Název domény", + smtpDkimKeySelector: "Selector klíče", + smtpDkimPrivateKey: "Privátní klíč", + smtpDkimHashAlgo: "Hashovací algoritmus (volitelné)", + smtpDkimheaderFieldNames: "Podepisovat tyto hlavičky (volitelné)", + smtpDkimskipFields: "Nepodepisovat tyto hlavičky (volitelné)", +}; From 74c584f544bb84c6f41f3d1f07bc5e6813d13fcf Mon Sep 17 00:00:00 2001 From: Arjun Komath <arjunkomath@gmail.com> Date: Fri, 21 Jan 2022 07:42:03 +0000 Subject: [PATCH 230/282] Add Push by Techulus --- .../notification-providers/techulus-push.js | 23 +++++++++++++++++++ server/notification.js | 3 +++ src/components/notifications/TechulusPush.vue | 20 ++++++++++++++++ src/components/notifications/index.js | 2 ++ src/languages/en.js | 1 + 5 files changed, 49 insertions(+) create mode 100644 server/notification-providers/techulus-push.js create mode 100644 src/components/notifications/TechulusPush.vue diff --git a/server/notification-providers/techulus-push.js b/server/notification-providers/techulus-push.js new file mode 100644 index 00000000..b6919da5 --- /dev/null +++ b/server/notification-providers/techulus-push.js @@ -0,0 +1,23 @@ +const NotificationProvider = require("./notification-provider"); +const axios = require("axios"); + +class TechulusPush extends NotificationProvider { + + name = "PushByTechulus"; + + async send(notification, msg, monitorJSON = null, heartbeatJSON = null) { + let okMsg = "Sent Successfully."; + + try { + await axios.post(`https://push.techulus.com/api/v1/notify/${notification.pushAPIKey}`, { + "title": "Uptime-Kuma", + "body": msg + }) + return okMsg; + } catch (error) { + this.throwGeneralAxiosError(error) + } + } +} + +module.exports = TechulusPush; diff --git a/server/notification.js b/server/notification.js index 4d72c81c..c66f175d 100644 --- a/server/notification.js +++ b/server/notification.js @@ -12,6 +12,7 @@ const ClickSendSMS = require("./notification-providers/clicksendsms"); const Pushbullet = require("./notification-providers/pushbullet"); const Pushover = require("./notification-providers/pushover"); const Pushy = require("./notification-providers/pushy"); +const TechulusPush = require("./notification-providers/techulus-push"); const RocketChat = require("./notification-providers/rocket-chat"); const Signal = require("./notification-providers/signal"); const Slack = require("./notification-providers/slack"); @@ -55,6 +56,7 @@ class Notification { new Pushbullet(), new Pushover(), new Pushy(), + new TechulusPush(), new RocketChat(), new Signal(), new Slack(), @@ -90,6 +92,7 @@ class Notification { * Throw Error with fail msg */ static async send(notification, msg, monitorJSON = null, heartbeatJSON = null) { + console.log("this.providerList[notification.type]", this.providerList[notification.type]) if (this.providerList[notification.type]) { return this.providerList[notification.type].send(notification, msg, monitorJSON, heartbeatJSON); } else { diff --git a/src/components/notifications/TechulusPush.vue b/src/components/notifications/TechulusPush.vue new file mode 100644 index 00000000..918f8be6 --- /dev/null +++ b/src/components/notifications/TechulusPush.vue @@ -0,0 +1,20 @@ +<template> + <div class="mb-3"> + <label for="push-api-key" class="form-label">API_KEY</label> + <HiddenInput id="push-api-key" v-model="$parent.notification.pushAPIKey" :required="true" autocomplete="one-time-code"></HiddenInput> + </div> + + <i18n-t tag="p" keypath="More info on:" style="margin-top: 8px;"> + <a href="https://docs.push.techulus.com" target="_blank">https://docs.push.techulus.com</a> + </i18n-t> +</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 03945f90..da21ee3f 100644 --- a/src/components/notifications/index.js +++ b/src/components/notifications/index.js @@ -9,6 +9,7 @@ import RocketChat from "./RocketChat.vue"; import Teams from "./Teams.vue"; import Pushover from "./Pushover.vue"; import Pushy from "./Pushy.vue"; +import TechulusPush from "./TechulusPush.vue"; import Octopush from "./Octopush.vue"; import PromoSMS from "./PromoSMS.vue"; import ClickSendSMS from "./ClickSendSMS.vue"; @@ -44,6 +45,7 @@ const NotificationFormList = { "rocket.chat": RocketChat, "pushover": Pushover, "pushy": Pushy, + "PushByTechulus": TechulusPush, "octopush": Octopush, "promosms": PromoSMS, "clicksendsms": ClickSendSMS, diff --git a/src/languages/en.js b/src/languages/en.js index 47513466..4acc59fa 100644 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -238,6 +238,7 @@ export default { "rocket.chat": "Rocket.Chat", pushover: "Pushover", pushy: "Pushy", + PushByTechulus: "Push by Techulus", octopush: "Octopush", promosms: "PromoSMS", clicksendsms: "ClickSend SMS", From 51b7a2badbf14f979b5c7bfa9422e908fea9e1a2 Mon Sep 17 00:00:00 2001 From: Arjun Komath <arjunkomath@gmail.com> Date: Fri, 21 Jan 2022 07:43:14 +0000 Subject: [PATCH 231/282] remove log --- server/notification.js | 1 - 1 file changed, 1 deletion(-) diff --git a/server/notification.js b/server/notification.js index c66f175d..69326794 100644 --- a/server/notification.js +++ b/server/notification.js @@ -92,7 +92,6 @@ class Notification { * Throw Error with fail msg */ static async send(notification, msg, monitorJSON = null, heartbeatJSON = null) { - console.log("this.providerList[notification.type]", this.providerList[notification.type]) if (this.providerList[notification.type]) { return this.providerList[notification.type].send(notification, msg, monitorJSON, heartbeatJSON); } else { From 23796723dd2b6be3623b925d0f9e74b63cab9262 Mon Sep 17 00:00:00 2001 From: Arjun Komath <arjunkomath@gmail.com> Date: Fri, 21 Jan 2022 20:42:08 +1100 Subject: [PATCH 232/282] Address code review Add missing comma Co-authored-by: Adam Stachowicz <saibamenppl@gmail.com> --- server/notification-providers/techulus-push.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/notification-providers/techulus-push.js b/server/notification-providers/techulus-push.js index b6919da5..f844d17c 100644 --- a/server/notification-providers/techulus-push.js +++ b/server/notification-providers/techulus-push.js @@ -11,7 +11,7 @@ class TechulusPush extends NotificationProvider { try { await axios.post(`https://push.techulus.com/api/v1/notify/${notification.pushAPIKey}`, { "title": "Uptime-Kuma", - "body": msg + "body": msg, }) return okMsg; } catch (error) { From eaf370637efcb67f6878414190bfc6ae59d54274 Mon Sep 17 00:00:00 2001 From: Computroniks <mnickson@sidingsmedia.com> Date: Thu, 27 Jan 2022 17:40:03 +0000 Subject: [PATCH 233/282] Fixed dark mode checkbox The border colour of the checkbox has been changed to make it more visible to the user when the dark mode is in use. Signed-off-by: Computroniks <mnickson@sidingsmedia.com> --- src/assets/app.scss | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/assets/app.scss b/src/assets/app.scss index cec64467..f49ed4f2 100644 --- a/src/assets/app.scss +++ b/src/assets/app.scss @@ -156,8 +156,13 @@ textarea.form-control { .form-check-input { background-color: $dark-bg2; + border-color: $dark-border-color; } + .form-check-input:checked { + border-color: $primary; // Re-apply bootstrap border + } + .form-switch .form-check-input { background-color: #232f3b; } From cefe43800f521279d9327fd9b67fc561ea10671b Mon Sep 17 00:00:00 2001 From: Alvin Pergens <alvin@pergens.fr> Date: Wed, 26 Jan 2022 15:54:17 +0100 Subject: [PATCH 234/282] add alerta service --- server/notification-providers/alerta.js | 67 +++++++++++++++++++++++++ server/notification.js | 4 +- src/components/notifications/Alerta.vue | 14 ++++++ src/components/notifications/index.js | 4 +- src/languages/en.js | 6 +++ src/languages/fr-FR.js | 5 ++ 6 files changed, 98 insertions(+), 2 deletions(-) create mode 100644 server/notification-providers/alerta.js create mode 100644 src/components/notifications/Alerta.vue diff --git a/server/notification-providers/alerta.js b/server/notification-providers/alerta.js new file mode 100644 index 00000000..d3b1a23c --- /dev/null +++ b/server/notification-providers/alerta.js @@ -0,0 +1,67 @@ +const NotificationProvider = require("./notification-provider"); +const { DOWN, UP } = require("../../src/util"); +const axios = require("axios"); + +class Alerta extends NotificationProvider { + + name = "alerta"; + + async send(notification, msg, monitorJSON = null, heartbeatJSON = null) { + let okMsg = "Sent Successfully."; + + try { + let alertaUrl = `${notification.alertaApiEndpoint}`; + let config = { + headers: { + "Content-Type": "application/json;charset=UTF-8", + "Authorization": "Key " + notification.alertaapiKey, + } + }; + let data = { + environment: notification.alertaEnvironment, + severity: "critical", + correlate: [], + service: [ "UptimeKuma" ], + value: "Timeout", + tags: [ "uptimekuma" ], + attributes: {}, + origin: "uptimekuma", + type: "exceptionAlert", + }; + + if (heartbeatJSON == null) { + let testdata = Object.assign( { + event: "test", + text: "Testing Successful.", + group: "uptimekuma-test", + resource: "Test", + }, data ); + await axios.post(alertaUrl, testdata, config); + } else { + let datadup = Object.assign( { + correlate: ["service_up", "service_down"], + group: "uptimekuma-" + monitorJSON["type"], + resource: monitorJSON["name"], + }, data ); + + if (heartbeatJSON["status"] == DOWN) { + datadup.severity = notification.alertaAlertState; // critical + datadup.event = "service_state"; + datadup.text = "Service is down."; + await axios.post(alertaUrl, datadup, config); + } else if (heartbeatJSON["status"] == UP) { + datadup.severity = notification.alertaRecoverState; // cleaner + datadup.event = "service_state"; + datadup.text = "Service is up."; + await axios.post(alertaUrl, datadup, config); + } + } + return okMsg; + } catch (error) { + this.throwGeneralAxiosError(error); + } + + } +} + +module.exports = Alerta; diff --git a/server/notification.js b/server/notification.js index 4d72c81c..dc3ea796 100644 --- a/server/notification.js +++ b/server/notification.js @@ -27,6 +27,7 @@ const SerwerSMS = require("./notification-providers/serwersms"); const Stackfield = require("./notification-providers/stackfield"); const WeCom = require("./notification-providers/wecom"); const GoogleChat = require("./notification-providers/google-chat"); +const Alerta = require("./notification-providers/alerta"); class Notification { @@ -65,7 +66,8 @@ class Notification { new SerwerSMS(), new Stackfield(), new WeCom(), - new GoogleChat() + new GoogleChat(), + new Alerta(), ]; for (let item of list) { diff --git a/src/components/notifications/Alerta.vue b/src/components/notifications/Alerta.vue new file mode 100644 index 00000000..962267fb --- /dev/null +++ b/src/components/notifications/Alerta.vue @@ -0,0 +1,14 @@ +<template> + <div class="mb-3"> + <label for="alerta-api-endpoint" class="form-label">{{ $t("alertaApiEndpoint") }}</label> + <input id="alerta-api-endpoint" v-model="$parent.notification.alertaApiEndpoint" type="text" class="form-control" required> + <label for="alerta-environment" class="form-label">{{ $t("alertaEnvironment") }}</label> + <input id="alerta-environment" v-model="$parent.notification.alertaEnvironment" type="text" class="form-control" required> + <label for="alerta-api-key" class="form-label">{{ $t("alertaApiKey") }}</label> + <input id="alerta-api-key" v-model="$parent.notification.alertaApiKey" type="text" class="form-control" required> + <label for="alerta-alert-state" class="form-label">{{ $t("alertaAlertState") }}</label> + <input id="alerta-alert-state" v-model="$parent.notification.alertaAlertState" type="text" class="form-control" placeholder="critical" required> + <label for="alerta-recover-state" class="form-label">{{ $t("alertaRecoverState") }}</label> + <input id="alerta-recover-state" v-model="$parent.notification.alertaRecoverState" type="text" class="form-control" placeholder="cleared" required> + </div> +</template> diff --git a/src/components/notifications/index.js b/src/components/notifications/index.js index 03945f90..599ea4db 100644 --- a/src/components/notifications/index.js +++ b/src/components/notifications/index.js @@ -26,6 +26,7 @@ import SerwerSMS from "./SerwerSMS.vue"; import Stackfield from './Stackfield.vue'; import WeCom from "./WeCom.vue"; import GoogleChat from "./GoogleChat.vue"; +import Alerta from "./Alerta.vue"; /** * Manage all notification form. @@ -60,7 +61,8 @@ const NotificationFormList = { "serwersms": SerwerSMS, "stackfield": Stackfield, "WeCom": WeCom, - "GoogleChat": GoogleChat + "GoogleChat": GoogleChat, + "alerta": Alerta, }; export default NotificationFormList; diff --git a/src/languages/en.js b/src/languages/en.js index 47513466..d4fe0a5f 100644 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -361,4 +361,10 @@ export default { smtpDkimHashAlgo: "Hash Algorithm (Optional)", smtpDkimheaderFieldNames: "Header Keys to sign (Optional)", smtpDkimskipFields: "Header Keys not to sign (Optional)", + alerta: 'Alerta', + alertaApiEndpoint: 'API Endpoint', + alertaEnvironment: 'Environment', + alertaApiKey: 'API Key', + alertaAlertState: 'Alert State', + alertaRecoverState: 'Recover State', }; diff --git a/src/languages/fr-FR.js b/src/languages/fr-FR.js index 04dede1b..81d8f2dc 100644 --- a/src/languages/fr-FR.js +++ b/src/languages/fr-FR.js @@ -304,4 +304,9 @@ 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", + alertaApiEndpoint: 'API Endpoint', + alertaEnvironment: 'Environement', + alertaApiKey: "Clé de l'API", + alertaAlertState: "État de l'Alerte", + alertaRecoverState: 'État de récupération', }; From a9df7b4a14f8ea6e74d2bc4dcc31a0202eb32257 Mon Sep 17 00:00:00 2001 From: Phuong Nguyen Minh <mrphuongbn@gmail.com> Date: Fri, 28 Jan 2022 20:23:37 +0700 Subject: [PATCH 235/282] Update vi.js (#1226) * update vi.js --- src/languages/vi.js | 58 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 56 insertions(+), 2 deletions(-) diff --git a/src/languages/vi.js b/src/languages/vi.js index bc2e86de..22538f91 100644 --- a/src/languages/vi.js +++ b/src/languages/vi.js @@ -176,8 +176,8 @@ export default { 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 bình thường", - "Partially Degraded Service": "Dịch vụ xuống cấp một phần", - "Degraded Service": "Degraded Service", + "Partially Degraded Service": "Có hệ thống down", + "Degraded Service": "Toàn bộ hệ thống down", "Add Group": "Thêm nhóm", "Add a monitor": "Thêm monitor", "Edit Status Page": "Sửa trang trạng thái", @@ -243,6 +243,7 @@ export default { clicksendsms: "ClickSend SMS", lunasea: "LunaSea", apprise: "Apprise (Hỗ trợ 50+ dịch vụ thông báo)", + GoogleChat: "Google Chat (Google Workspace only)", pushbullet: "Pushbullet", line: "Line Messenger", mattermost: "Mattermost", @@ -307,4 +308,57 @@ export default { 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", + Done: "Done", + Info: "Info", + Security: "Security", + "Steam API Key": "Steam API Key", + "Shrink Database": "Shrink Database", + "Pick a RR-Type...": "Pick a RR-Type...", + "Pick Accepted Status Codes...": "Chọn các Codes trạng thái chấp nhận được...", + Default: "Mặc định", + "HTTP Options": "Tuỳ chọn HTTP", + "Create Incident": "Create Incident", + Title: "Tiêu đề", + Content: "Nội dung", + Style: "Style", + info: "info", + warning: "cảnh báo", + danger: "nguy hiểm", + primary: "primary", + light: "sáng", + dark: "tối", + Post: "Post", + "Please input title and content": "Hãy nhập tiêu đề và nội dung", + Created: "Created", + "Last Updated": "Cập nhật mới nhất", + Unpin: "Bỏ ghim", + "Switch to Light Theme": "Chuyển sang Theme Sáng", + "Switch to Dark Theme": "Chuyển sang Theme Tối", + "Show Tags": "Hiện Tags", + "Hide Tags": "Ẩn Tags", + Description: "Mô tả", + "No monitors available.": "Không có monitor nào.", + "Add one": "Thêm mới", + "No Monitors": "No Monitors", + "Untitled Group": "Nhóm không có tiêu đề", + Services: "Services", + Discard: "Discard", + Cancel: "Cancel", + "Powered by": "Được cung cấp bởi", + shrinkDatabaseDescription: "Khởi chạy database VACCUM cho SQLite. Nếu database được tạo sau version 1.10.0, AUTO_VACCUM đã được bật sẵn, hành động này không cần thiết.", + serwersms: "SerwerSMS.pl", + serwersmsAPIUser: "API Username (incl. webapi_ prefix)", + serwersmsAPIPassword: "API Password", + serwersmsPhoneNumber: "Số điện thoại", + serwersmsSenderName: "Tên người gửi SMS (Đã đăng ký qua portal)", + "stackfield": "Stackfield", + smtpDkimSettings: "DKIM Settings", + smtpDkimDesc: "Please refer to the Nodemailer DKIM {0} for usage.", + documentation: "documentation", + smtpDkimDomain: "Domain Name", + smtpDkimKeySelector: "Key Selector", + smtpDkimPrivateKey: "Private Key", + smtpDkimHashAlgo: "Hash Algorithm (Tuỳ chọn)", + smtpDkimheaderFieldNames: "Header Keys to sign (Tuỳ chọn)", + smtpDkimskipFields: "Header Keys not to sign (Tuỳ chọn)", }; From 90f24975482068131258d672522047fc3c8ce7d4 Mon Sep 17 00:00:00 2001 From: Alvin Pergens <alvin@pergens.fr> Date: Fri, 28 Jan 2022 15:14:34 +0100 Subject: [PATCH 236/282] change data for Alerta --- server/notification-providers/alerta.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/server/notification-providers/alerta.js b/server/notification-providers/alerta.js index d3b1a23c..3ee331ac 100644 --- a/server/notification-providers/alerta.js +++ b/server/notification-providers/alerta.js @@ -40,19 +40,18 @@ class Alerta extends NotificationProvider { } else { let datadup = Object.assign( { correlate: ["service_up", "service_down"], + event: monitorJSON["type"], group: "uptimekuma-" + monitorJSON["type"], resource: monitorJSON["name"], }, data ); if (heartbeatJSON["status"] == DOWN) { datadup.severity = notification.alertaAlertState; // critical - datadup.event = "service_state"; - datadup.text = "Service is down."; + datadup.text = "Service " + monitorJSON["type"] + " is down."; await axios.post(alertaUrl, datadup, config); } else if (heartbeatJSON["status"] == UP) { datadup.severity = notification.alertaRecoverState; // cleaner - datadup.event = "service_state"; - datadup.text = "Service is up."; + datadup.text = "Service " + monitorJSON["type"] + " is up."; await axios.post(alertaUrl, datadup, config); } } From 8febff9282e3622b92bd420822ca3f9ec1f80d0e Mon Sep 17 00:00:00 2001 From: Alvin Pergens <alvin@pergens.fr> Date: Fri, 28 Jan 2022 15:35:33 +0100 Subject: [PATCH 237/282] fix comments --- server/notification-providers/alerta.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/notification-providers/alerta.js b/server/notification-providers/alerta.js index 3ee331ac..f00d1098 100644 --- a/server/notification-providers/alerta.js +++ b/server/notification-providers/alerta.js @@ -50,7 +50,7 @@ class Alerta extends NotificationProvider { datadup.text = "Service " + monitorJSON["type"] + " is down."; await axios.post(alertaUrl, datadup, config); } else if (heartbeatJSON["status"] == UP) { - datadup.severity = notification.alertaRecoverState; // cleaner + datadup.severity = notification.alertaRecoverState; // cleaned datadup.text = "Service " + monitorJSON["type"] + " is up."; await axios.post(alertaUrl, datadup, config); } From b13b20bd9587129d4892aa025ff983eb431df631 Mon Sep 17 00:00:00 2001 From: Mik Mueller <83001409+MikMuellerDev@users.noreply.github.com> Date: Sun, 30 Jan 2022 00:17:25 +0100 Subject: [PATCH 238/282] improve certain German words and phrases, improve grammer in README.md --- README.md | 4 ++-- src/languages/de-DE.js | 28 ++++++++++++++-------------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 7f88db5f..9e170761 100644 --- a/README.md +++ b/README.md @@ -115,7 +115,7 @@ Telegram Notification Sample: ## Motivation -* I was looking for a self-hosted monitoring tool like "Uptime Robot", but it is hard to find a suitable one. One of the close ones is statping. Unfortunately, it is not stable and unmaintained. +* I was looking for a self-hosted monitoring tool like "Uptime Robot", but it is hard to find a suitable one. One of the close ones is statping. Unfortunately, it is not stable and no longer maintained. * Want to build a fancy UI. * Learn Vue 3 and vite.js. * Show the power of Bootstrap 5. @@ -144,4 +144,4 @@ If you want to translate Uptime Kuma into your language, please read: https://gi 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. +Unfortunately, English proofreading is needed too because my grammar is not that great. Feel free to correct my grammar in this README, source code, or wiki. diff --git a/src/languages/de-DE.js b/src/languages/de-DE.js index 48cdd2e3..4e4f97ce 100644 --- a/src/languages/de-DE.js +++ b/src/languages/de-DE.js @@ -4,14 +4,14 @@ export default { Dashboard: "Dashboard", "New Update": "Update verfügbar", Language: "Sprache", - Appearance: "Erscheinung", - Theme: "Thema", + Appearance: "Erscheinungsbild", + Theme: "Erscheinungsbild", General: "Allgemein", Version: "Version", "Check Update On GitHub": "Auf GitHub nach Updates suchen", List: "Liste", Add: "Hinzufügen", - "Add New Monitor": "Neuer Monitor", + "Add New Monitor": "Neuen Monitor hinzufügen", "Quick Stats": "Übersicht", Up: "Aktiv", Down: "Inaktiv", @@ -49,15 +49,15 @@ export default { retriesDescription: "Maximale Anzahl von Wiederholungen, bevor der Dienst als inaktiv markiert und eine Benachrichtigung gesendet wird.", Advanced: "Erweitert", ignoreTLSError: "Ignoriere TLS-/SSL-Fehler von Webseiten", - "Upside Down Mode": "Invertierter Modus", - upsideDownModeDescription: "Im invertierten Modus wird der Dienst als inaktiv angezeigt, wenn er erreichbar ist.", + "Upside Down Mode": "Umgekehrter Modus", + upsideDownModeDescription: "Im umgekehrten Modus wird der Dienst als inaktiv angezeigt, wenn er erreichbar ist.", "Max. Redirects": "Max. Weiterleitungen", maxRedirectDescription: "Maximale Anzahl von Weiterleitungen, denen gefolgt werden soll. Auf 0 setzen, um Weiterleitungen zu deaktivieren.", "Accepted Status Codes": "Erlaubte HTTP-Statuscodes", - acceptedStatusCodesDescription: "Wähle die Statuscodes aus, welche trotzdem als erfolgreich gewertet werden sollen.", + acceptedStatusCodesDescription: "Wähle die Statuscodes aus, welche trotzdem als erfolgreich gelten sollen.", Save: "Speichern", Notifications: "Benachrichtigungen", - "Not available, please setup.": "Keine verfügbar, bitte einrichten.", + "Not available, please setup.": "Nicht verfügbar, bitte einrichten.", "Setup Notification": "Benachrichtigung einrichten", Light: "Hell", Dark: "Dunkel", @@ -71,7 +71,7 @@ export default { "Allow indexing": "Indizierung zulassen", "Discourage search engines from indexing site": "Halte Suchmaschinen von der Indexierung der Seite ab", "Change Password": "Passwort ändern", - "Current Password": "Derzeitiges Passwort", + "Current Password": "Aktuelles Passwort", "New Password": "Neues Passwort", "Repeat New Password": "Neues Passwort wiederholen", passwordNotMatchMsg: "Passwörter stimmen nicht überein. ", @@ -87,7 +87,7 @@ export default { No: "Nein", Username: "Benutzername", Password: "Passwort", - "Remember me": "Passwort merken", + "Remember me": "Angemeldet bleiben", Login: "Einloggen", "No Monitors, please": "Keine Monitore, bitte", "add one": "hinzufügen", @@ -110,8 +110,8 @@ export default { Heartbeats: "Statistiken", confirmClearStatisticsMsg: "Bist du dir sicher, dass du ALLE Statistiken löschen möchtest?", "Create your admin account": "Erstelle dein Admin-Konto", - "Repeat Password": "Wiederhole das Passwort", - "Resource Record Type": "Resource Record Type", + "Repeat Password": "Passwort erneut eingeben", + "Resource Record Type": "Ressourcen Record Typ", Export: "Export", Import: "Import", respTime: "Antw.-Zeit (ms)", @@ -162,7 +162,7 @@ export default { Purple: "Lila", Pink: "Pink", "Search...": "Suchen...", - "Heartbeat Retry Interval": "Heartbeat-Wiederholungsintervall", + "Heartbeat Retry Interval": "Prüfzeitpunkt-Wiederholungsintervall", retryCheckEverySecond: "Versuche alle {0} Sekunden", "Import Backup": "Backup importieren", "Export Backup": "Backup exportieren", @@ -215,7 +215,7 @@ export default { "Post URL": "Post URL", "Content Type": "Content Type", webhookJsonDesc: "{0} ist gut für alle modernen HTTP-Server sowie Express.js", - webhookFormDataDesc: "{multipart} ist gut für PHP. Die JSON muss mit {decodeFunction} geparst werden", + webhookFormDataDesc: "{multipart} ist gut für PHP. Die JSON muss mit {decodeFunction} verarbeitet werden", secureOptionNone: "Keine / STARTTLS (25, 587)", secureOptionTLS: "TLS (465)", "Ignore TLS Error": "TLS-Fehler ignorieren", @@ -279,7 +279,7 @@ export default { wayToGetLineChannelToken: "Rufe zuerst {0} auf, erstelle dann einen Provider und Channel (Messaging API). Als nächstes kannst du den Channel access token und die User ID aus den oben genannten Menüpunkten abrufen.", "Icon URL": "Icon URL", aboutIconURL: "Du kannst einen Link zu einem Bild in 'Icon URL' übergeben um das Standardprofilbild zu überschreiben. Wird nicht verwendet, wenn ein Icon Emoji gesetzt ist.", - aboutMattermostChannelName: "Du kannst den Standardkanal, auf dem der Webhook postet überschreiben, indem der Kanalnamen in das Feld 'Channel Name' eingeben wird. Dies muss in den Mattermost Webhook-Einstellungen aktiviert werden. Ex: #other-channel", + aboutMattermostChannelName: "Du kannst den Standardkanal, auf dem der Webhook gesendet wird überschreiben, indem der Kanalnamen in das Feld 'Channel Name' eingeben wird. Dies muss in den Mattermost Webhook-Einstellungen aktiviert werden. Ex: #other-channel", matrix: "Matrix", promosmsTypeEco: "SMS ECO - billig, aber langsam und oft überladen. Nur auf polnische Empfänger beschränkt.", promosmsTypeFlash: "SMS FLASH - Die Nachricht wird automatisch auf dem Empfängergerät angezeigt. Nur auf polnische Empfänger beschränkt.", From 65896ed03541e20ab61fc73cc028145ea19fbd8a Mon Sep 17 00:00:00 2001 From: dave9123 <91056752+dave9123@users.noreply.github.com> Date: Mon, 31 Jan 2022 08:01:45 +0700 Subject: [PATCH 239/282] Fixed some grammar error I fixed at some part of the text. --- src/languages/id-ID.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/languages/id-ID.js b/src/languages/id-ID.js index 5bad2a7e..7ce581fc 100644 --- a/src/languages/id-ID.js +++ b/src/languages/id-ID.js @@ -12,7 +12,7 @@ export default { keywordDescription: "Cari kata kunci dalam code html atau JSON huruf besar-kecil berpengaruh", pauseDashboardHome: "Jeda", deleteMonitorMsg: "Apakah Anda mau menghapus monitor ini?", - deleteNotificationMsg: "Apakah Anda mau menghapus notifikasi ini untuk semua monitor?", + deleteNotificationMsg: "Apakah Anda mau menghapus notifikasi untuk semua monitor?", resoverserverDescription: "Cloudflare adalah server bawaan, Anda dapat mengubah server resolver kapan saja.", rrtypeDescription: "Pilih RR-Type yang mau Anda monitor", pauseMonitorMsg: "Apakah Anda yakin mau menjeda?", @@ -23,9 +23,9 @@ export default { importHandleDescription: "Pilih 'Lewati yang ada' jika Anda ingin melewati setiap monitor atau notifikasi dengan nama yang sama. 'Timpa' akan menghapus setiap monitor dan notifikasi yang ada.", confirmImportMsg: "Apakah Anda yakin untuk mengimpor cadangan? Pastikan Anda telah memilih opsi impor yang tepat.", twoFAVerifyLabel: "Silakan ketik token Anda untuk memverifikasi bahwa 2FA berfungsi", - tokenValidSettingsMsg: "Tokennya benar! Anda sekarang dapat menyimpan pengaturan 2FA.", - confirmEnableTwoFAMsg: "Apakah Anda yakin ingin mengaktifkan 2FA?", - confirmDisableTwoFAMsg: "Apakah Anda yakin ingin menonaktifkan 2FA?", + tokenValidSettingsMsg: "Token benar! Anda sekarang dapat menyimpan pengaturan 2FA.", + confirmEnableTwoFAMsg: "Apakah anda yakin ingin mengaktifkan 2FA?", + confirmDisableTwoFAMsg: "Apakah anda yakin ingin menonaktifkan 2FA?", Settings: "Pengaturan", Dashboard: "Dasbor", "New Update": "Pembaruan Baru", @@ -276,7 +276,7 @@ export default { promosmsTypeEco: "SMS ECO - murah tapi lambat dan sering kelebihan beban. Terbatas hanya untuk penerima Polandia.", promosmsTypeFlash: "SMS FLASH - Pesan akan otomatis muncul di perangkat penerima. Terbatas hanya untuk penerima Polandia.", promosmsTypeFull: "SMS FULL - SMS tingkat premium, Anda dapat menggunakan Nama Pengirim Anda (Anda harus mendaftarkan nama terlebih dahulu). Dapat diAndalkan untuk peringatan.", - promosmsTypeSpeed: "SMS SPEED - Prioritas tertinggi dalam sistem. Sangat cepat dan dapat diAndalkan tetapi mahal (sekitar dua kali lipat dari harga SMS FULL).", + promosmsTypeSpeed: "SMS SPEED - Prioritas tertinggi dalam sistem. Sangat cepat dan dapat diandalkan tetapi mahal (sekitar dua kali lipat dari harga SMS FULL).", 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", From ffb2c2996bcededdcf68e43336435b4834f1723e Mon Sep 17 00:00:00 2001 From: Mik Mueller <83001409+MikMuellerDev@users.noreply.github.com> Date: Tue, 1 Feb 2022 08:12:42 +0100 Subject: [PATCH 240/282] Update src/languages/de-DE.js Co-authored-by: Alf <62615304+Alf-Melmac@users.noreply.github.com> --- src/languages/de-DE.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/languages/de-DE.js b/src/languages/de-DE.js index 4e4f97ce..e6c6dfb1 100644 --- a/src/languages/de-DE.js +++ b/src/languages/de-DE.js @@ -54,7 +54,7 @@ export default { "Max. Redirects": "Max. Weiterleitungen", maxRedirectDescription: "Maximale Anzahl von Weiterleitungen, denen gefolgt werden soll. Auf 0 setzen, um Weiterleitungen zu deaktivieren.", "Accepted Status Codes": "Erlaubte HTTP-Statuscodes", - acceptedStatusCodesDescription: "Wähle die Statuscodes aus, welche trotzdem als erfolgreich gelten sollen.", + acceptedStatusCodesDescription: "Statuscodes auswählen, die als erfolgreiche Verbindung gelten sollen.", Save: "Speichern", Notifications: "Benachrichtigungen", "Not available, please setup.": "Nicht verfügbar, bitte einrichten.", From 39f8b30b3614ff4458836f88fc52d005e8dbc99e Mon Sep 17 00:00:00 2001 From: Mik Mueller <83001409+MikMuellerDev@users.noreply.github.com> Date: Tue, 1 Feb 2022 08:13:13 +0100 Subject: [PATCH 241/282] Update src/languages/de-DE.js Co-authored-by: Alf <62615304+Alf-Melmac@users.noreply.github.com> --- src/languages/de-DE.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/languages/de-DE.js b/src/languages/de-DE.js index e6c6dfb1..3777f6e2 100644 --- a/src/languages/de-DE.js +++ b/src/languages/de-DE.js @@ -214,7 +214,7 @@ export default { chatIDNotFound: "Chat-ID wurde nicht gefunden: bitte sende zuerst eine Nachricht an diesen Bot", "Post URL": "Post URL", "Content Type": "Content Type", - webhookJsonDesc: "{0} ist gut für alle modernen HTTP-Server sowie Express.js", + webhookJsonDesc: "{0} ist gut für alle modernen HTTP-Server, wie z.B. Express.js, geeignet", webhookFormDataDesc: "{multipart} ist gut für PHP. Die JSON muss mit {decodeFunction} verarbeitet werden", secureOptionNone: "Keine / STARTTLS (25, 587)", secureOptionTLS: "TLS (465)", From 1bbf17f3dae302153455c40fcbd426da9b35f453 Mon Sep 17 00:00:00 2001 From: Mik Mueller <83001409+MikMuellerDev@users.noreply.github.com> Date: Tue, 1 Feb 2022 08:13:23 +0100 Subject: [PATCH 242/282] Update src/languages/de-DE.js Co-authored-by: Alf <62615304+Alf-Melmac@users.noreply.github.com> --- src/languages/de-DE.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/languages/de-DE.js b/src/languages/de-DE.js index 3777f6e2..e53479d6 100644 --- a/src/languages/de-DE.js +++ b/src/languages/de-DE.js @@ -163,7 +163,7 @@ export default { Pink: "Pink", "Search...": "Suchen...", "Heartbeat Retry Interval": "Prüfzeitpunkt-Wiederholungsintervall", - retryCheckEverySecond: "Versuche alle {0} Sekunden", + retryCheckEverySecond: "Alle {0} Sekunden neu versuchen", "Import Backup": "Backup importieren", "Export Backup": "Backup exportieren", "Avg. Ping": "Durchschn. Ping", From 11c2e86bfe5a112e9729b7f164234f9f316bcab3 Mon Sep 17 00:00:00 2001 From: Mik Mueller <83001409+MikMuellerDev@users.noreply.github.com> Date: Tue, 1 Feb 2022 08:13:30 +0100 Subject: [PATCH 243/282] Update src/languages/de-DE.js Co-authored-by: Alf <62615304+Alf-Melmac@users.noreply.github.com> --- src/languages/de-DE.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/languages/de-DE.js b/src/languages/de-DE.js index e53479d6..60aabfe5 100644 --- a/src/languages/de-DE.js +++ b/src/languages/de-DE.js @@ -215,7 +215,7 @@ export default { "Post URL": "Post URL", "Content Type": "Content Type", webhookJsonDesc: "{0} ist gut für alle modernen HTTP-Server, wie z.B. Express.js, geeignet", - webhookFormDataDesc: "{multipart} ist gut für PHP. Die JSON muss mit {decodeFunction} verarbeitet werden", + webhookFormDataDesc: "{multipart} ist gut für PHP. Das JSON muss mit {decodeFunction} verarbeitet werden", secureOptionNone: "Keine / STARTTLS (25, 587)", secureOptionTLS: "TLS (465)", "Ignore TLS Error": "TLS-Fehler ignorieren", From 0fce1b4b9b6ee42f965c816620219cefbbd071ab Mon Sep 17 00:00:00 2001 From: vfaergestad <49147564+vfaergestad@users.noreply.github.com> Date: Tue, 1 Feb 2022 17:31:00 +0100 Subject: [PATCH 244/282] Update nb-NO.js (#1232) Improved and finished the translation. --- src/languages/nb-NO.js | 116 ++++++++++++++++++++--------------------- 1 file changed, 58 insertions(+), 58 deletions(-) diff --git a/src/languages/nb-NO.js b/src/languages/nb-NO.js index 0e566a01..4908a257 100644 --- a/src/languages/nb-NO.js +++ b/src/languages/nb-NO.js @@ -4,24 +4,24 @@ export default { retryCheckEverySecond: "Prøv igjen hvert {0} sekund.", retriesDescription: "Maksimalt antall forsøk før tjenesten er merket som nede og et varsel sendes", ignoreTLSError: "Ignorer TLS/SSL-feil for HTTPS-nettsteder", - upsideDownModeDescription: "Snu statusen opp ned. Hvis tjenesten er tilgjengelig, er den NED.", + upsideDownModeDescription: "Snu statusen opp ned. Hvis tjenesten er tilgjengelig, er den NEDE.", maxRedirectDescription: "Maksimalt antall viderekoblinger å følge. Sett til 0 for å deaktivere viderekoblinger.", - acceptedStatusCodesDescription: "Velg statuskoder som anses som et vellykket svar.", + acceptedStatusCodesDescription: "Velg statuskoder som anses som en vellykket respons.", passwordNotMatchMsg: "Passordene stemmer ikke overens.", - notificationDescription: "Tilordne et varsel for å overvåkningen for å få det til å fungere.", - keywordDescription: "Søk etter nøkkelord i vanlig HTML eller JSON, og det er versalfølsom", + notificationDescription: "Varsler må tilordnes en overvåkning for å fungere.", + keywordDescription: "Søk etter nøkkelord i ren HTML eller JSON. Søket skiller mellom store og små bokstaver.", pauseDashboardHome: "Pause", deleteMonitorMsg: "Er du sikker på at du vil slette denne overvåkningen?", deleteNotificationMsg: "Er du sikker på at du vil slette dette varselet for alle overvåkningene?", - resoverserverDescription: "Cloudflare er standardserveren, kan du når som helst endre DNS-serveren.", + resoverserverDescription: "Cloudflare er standardserveren. Du kan endre DNS-serveren når som helst.", rrtypeDescription: "Velg RR-typen du vil overvåke", - pauseMonitorMsg: "Er du sikker på at du vil sette en pause?", + pauseMonitorMsg: "Er du sikker på at du vil sette på pause?", enableDefaultNotificationDescription: "For hver ny overvåkning vil denne varslingen være aktivert som standard. Du kan fortsatt deaktivere varselet separat for hver overvåkning.", clearEventsMsg: "Er du sikker på at du vil slette alle hendelser for denne overvåkningen?", clearHeartbeatsMsg: "Er du sikker på at du vil slette alle hjerteslag for denne overvåkningen?", confirmClearStatisticsMsg: "Er du sikker på at du vil slette ALL statistikk?", importHandleDescription: "Velg 'Hopp over eksisterende' hvis du vil hoppe over hver overvåkning eller varsel med samme navn. 'Overskriv' sletter alle eksisterende overvåkninger og varsler.", - confirmImportMsg: "Er du sikker på å importere sikkerhetskopien? Sørg for at du har valgt riktig importalternativ.", + confirmImportMsg: "Er du sikker på at du vil importere denne sikkerhetskopien? Sørg for at du har valgt riktig importalternativ.", twoFAVerifyLabel: "Skriv inn tokenet ditt for å bekrefte at 2FA fungerer", tokenValidSettingsMsg: "Token er gyldig! Du kan nå lagre 2FA-innstillingene.", confirmEnableTwoFAMsg: "Er du sikker på at du vil aktivere 2FA?", @@ -50,7 +50,7 @@ export default { Message: "Melding", "No important events": "Ingen viktige hendelser", Resume: "Fortsett", - Edit: "Endre", + Edit: "Rediger", Delete: "Slett", Current: "Nåværende", Uptime: "Oppetid", @@ -77,7 +77,7 @@ export default { "Accepted Status Codes": "Godkjente statuskoder", Save: "Lagre", Notifications: "Varsler", - "Not available, please setup.": "Ikke tilgjengelig, sett opp.", + "Not available, please setup.": "Ikke tilgjengelig, venligst sett opp.", "Setup Notification": "Sett opp varsel", Light: "Lys", Dark: "Mørk", @@ -87,9 +87,9 @@ export default { Bottom: "Bunn", None: "Ingen", Timezone: "Tidssone", - "Search Engine Visibility": "Søkemotor synlighet", + "Search Engine Visibility": "Søkemotor-synlighet", "Allow indexing": "Tillat indeksering", - "Discourage search engines from indexing site": "Avskrekk søkemotorer fra å indeksere nettstedet", + "Discourage search engines from indexing site": "Fraråd søkemotorer fra å indeksere nettstedet", "Change Password": "Endre passord", "Current Password": "Nåværende passord", "New Password": "Nytt passord", @@ -99,7 +99,7 @@ export default { "Enable Auth": "Aktiver autentisering", Logout: "Logg ut", Leave: "Forlat", - "I understand, please disable": "Jeg forstår, deaktiver", + "I understand, please disable": "Jeg forstår, vennligst deaktiver", Confirm: "Bekreft", Yes: "Ja", No: "Nei", @@ -125,15 +125,15 @@ export default { respTime: "Svartid (ms)", notAvailableShort: "N/A", "Default enabled": "Standard aktivert", - "Apply on all existing monitors": "Påfør på alle eksisterende overvåkninger", + "Apply on all existing monitors": "Anvend for alle eksisterende overvåkninger", Create: "Opprett", "Clear Data": "Slett data", Events: "Hendelser", Heartbeats: "Hjerteslag", - "Auto Get": "Auto Get", + "Auto Get": "Auto Hent", backupDescription: "Du kan sikkerhetskopiere alle overvåkninger og alle varsler til en JSON-fil.", backupDescription2: "PS: Historikk og hendelsesdata er ikke inkludert.", - backupDescription3: "Følsomme data som varslingstokener er inkludert i eksportfilen. Vennligst oppbevar dem nøye.", + backupDescription3: "Følsomme data som varslingstokener er inkludert i eksportfilen. Vennligst oppbevar dem sikkert.", alertNoFile: "Velg en fil som skal importeres.", alertWrongFileType: "Velg en JSON-fil.", "Clear all statistics": "Fjern all statistikk", @@ -154,7 +154,7 @@ export default { Tags: "Etiketter", "Add New below or Select...": "Legg til nytt nedenfor eller Velg ...", "Tag with this name already exist.": "Etikett med dette navnet eksisterer allerede.", - "Tag with this value already exist.": "Etikett med denne verdien finnes allerede.", + "Tag with this value already exist.": "Etikett med denne verdien eksisterer allerede.", color: "farge", "value (optional)": "verdi (valgfritt)", Gray: "Grå", @@ -172,29 +172,29 @@ export default { statusPageNothing: "Ingenting her, vennligst legg til en gruppe eller en overvåkning.", "No Services": "Ingen tjenester", "All Systems Operational": "Alle systemer i drift", - "Partially Degraded Service": "Delvis degradert drift", - "Degraded Service": "Degradert drift", + "Partially Degraded Service": "Delvis degradert tjeneste", + "Degraded Service": "Degradert tjeneste", "Add Group": "Legg til gruppe", "Add a monitor": "Legg til en overvåkning", "Edit Status Page": "Rediger statusside", "Go to Dashboard": "Gå til Dashboard", "Status Page": "Statusside", defaultNotificationName: "Min {notification} varsling ({number})", - here: "here", + here: "her", Required: "Obligatorisk", telegram: "Telegram", "Bot Token": "Bot Token", wayToGetTelegramToken: "Du kan få et token fra {0}.", "Chat ID": "Chat ID", supportTelegramChatID: "Support Direct Chat / Group / Channel's Chat ID", - wayToGetTelegramChatID: "Du kan få chat-ID-en din ved å sende meldingen til boten og gå til denne nettadressen for å se chat_id:", + wayToGetTelegramChatID: "Du kan få chat-ID-en din ved å sende en melding til boten og gå til denne nettadressen for å se chat_id:", "YOUR BOT TOKEN HERE": "DITT BOT TOKEN HER", chatIDNotFound: "Chat-ID ble ikke funnet. Send en melding til denne boten først", webhook: "Webhook", "Post URL": "Post URL", - "Content Type": "Content Type", + "Content Type": "Innholdstype", webhookJsonDesc: "{0} er bra for alle moderne HTTP-servere som express.js", - webhookFormDataDesc: "{multipart} er bra for PHP, du trenger bare å analysere JSON etter {decodeFunction}", + webhookFormDataDesc: "{multipart} er bra for PHP. JSON trenger å bli analysert med {decodeFunction}", smtp: "E-post (SMTP)", secureOptionNone: "None / STARTTLS (25, 587)", secureOptionTLS: "TLS (465)", @@ -205,7 +205,7 @@ export default { smtpBCC: "BCC", discord: "Discord", "Discord Webhook URL": "Discord Webhook URL", - wayToGetDiscordURL: "Du kan få dette ved å gå til Serverinnstillinger -> Integrasjoner -> Webhooks -> Ny webhook", + wayToGetDiscordURL: "Du kan få denne ved å gå til Serverinnstillinger -> Integrasjoner -> Opprett en Webhook", "Bot Display Name": "Bot Visningsnavn", "Prefix Custom Message": "Prefiks tilpasset melding", "Hello @everyone is...": "Hei {'@'}everyone det er...", @@ -240,43 +240,43 @@ export default { pushbullet: "Pushbullet", line: "Line Messenger", mattermost: "Mattermost", - "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.", + "User Key": "Bruker-nøkkel", + Device: "Enhet", + "Message Title": "Meldingstittel", + "Notification Sound": "Notifikasjonslyd", + "More info on:": "Mer info på: {0}", + pushoverDesc1: "Nødsprioritet (2) har en standard 30 sekunders tidsavbrudd mellom forsøk og vil utløpe etter 1 time.", + pushoverDesc2: "Hvis du vil sende varsler til forskjellige enheteter, fyll ut Enhet-feltet.", "SMS Type": "SMS Type", - octopushTypePremium: "Premium (Fast - recommended for alerting)", - octopushTypeLowCost: "Low Cost (Slow, sometimes blocked by operator)", - "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", + octopushTypePremium: "Premium (Raskt - anbefalt for varsling)", + octopushTypeLowCost: "Lav kostnad (Sakte, noen ganger blokkert av leverandør)", + "Check octopush prices": "Sjekk octopush priser {0}.", + octopushPhoneNumber: "Telefonnummer (intl format, eg : +4791234567) ", + octopushSMSSender: "SMS Avsendernavn : 3-11 alphanumeriske tegn og mellomrom (a-zA-Z0-9)", + "LunaSea Device ID": "LunaSea Enhet ID", "Apprise URL": "Apprise URL", - "Example:": "Example: {0}", - "Read more:": "Read more: {0}", + "Example:": "Eksempel: {0}", + "Read more:": "Les mer: {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 webhook posts to by entering the channel name into \"Channel Name\" field. This needs to be enabled in Mattermost webhook settings. Ex: #other-channel", + "Read more": "Les mer", + appriseInstalled: "Apprise er installert.", + appriseNotInstalled: "Apprise ikke installert. {0}", + "Access Token": "Tilgangs-Token", + "Channel access token": "Kanal tilgangs-token", + "Line Developers Console": "Line Utviklserskonsoll", + lineDevConsoleTo: "Line Utviklserskonsoll - {0}", + "Basic Settings": "Grunnleggende instillinger", + "User ID": "Bruker-ID", + "Messaging API": "Meldings-API", + wayToGetLineChannelToken: "Først, få tilgang til {0}, lag en leverandør og kanal (Meldings-API), deretter kan du hente kanaltilgangs-token og bruker id fra menu-valgene nevnt over.", + "Icon URL": "Ikon URL", + aboutIconURL: "Du kan gi en link til et bilde i \"Ikon URL\" for å overskrive det standard profilbildet. Vil ikke bli brukt hvis Ikon Emoji ikke er satt.", + aboutMattermostChannelName: "Du kan overskrive standardkanalen som webhook-en poster i ved å skrive enn kanalnavnet i \"Kanalnavn\" feltet. Dette må være skrudd på i Mattermost webhook-instillingene. Eks: #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", + promosmsTypeEco: "SMS ECO - billig, men treg og ofte overbelastet. Begrenset til bare polske mottakere.", + promosmsTypeFlash: "SMS FLASH - Melding vil automatisk vises på mottakker-enhet. Begrenset til bare polske mottakere.", + promosmsTypeFull: "SMS FULL - Premuimnivå SMS. Du kan bruke dit avsendernavn (Du må registerere et navn først). Pålitelig for alle varslinger.", + promosmsTypeSpeed: "SMS SPEED - Høyest prioritet i systemet.Veldig rask på pålitelig, men dyrt (omtrent det dobbeltet av SMS FULL pris).", + promosmsPhoneNumber: "Telefonnummber (for polske mottakere. Du trenger ikke områdekode.)", + promosmsSMSSender: "SMS Avsendernavn : Forhåndsregistert navn eller en av standardnavnene: InfoSMS, SMS Info, MaxSMS, INFO, SMS", }; From c1c1e2ba5bd3024277d6ef278f52150c2ef62c0b Mon Sep 17 00:00:00 2001 From: dave9123 <91056752+dave9123@users.noreply.github.com> Date: Wed, 2 Feb 2022 10:13:55 +0700 Subject: [PATCH 245/282] Fixed the grammar issue Here's my pull request --- src/languages/id-ID.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/languages/id-ID.js b/src/languages/id-ID.js index 7ce581fc..cd7c689a 100644 --- a/src/languages/id-ID.js +++ b/src/languages/id-ID.js @@ -7,7 +7,7 @@ export default { upsideDownModeDescription: "Balikkan statusnya. Jika layanan dapat dijangkau, TIDAK AKTIF.", maxRedirectDescription: "Jumlah maksimum pengalihan untuk diikuti. Setel ke 0 untuk menonaktifkan pengalihan.", acceptedStatusCodesDescription: "Pilih kode status yang dianggap sebagai tanggapan yang berhasil.", - passwordNotMatchMsg: "Sandi kedua tidak cocok.", + passwordNotMatchMsg: "Kata sandi kedua tidak cocok.", notificationDescription: "Harap atur notifikasi ke monitor agar berfungsi.", keywordDescription: "Cari kata kunci dalam code html atau JSON huruf besar-kecil berpengaruh", pauseDashboardHome: "Jeda", From dd28ecaa2dbe7ba6ddd0c63a58507d446a4872af Mon Sep 17 00:00:00 2001 From: Mik Mueller <83001409+MikMuellerDev@users.noreply.github.com> Date: Wed, 2 Feb 2022 22:57:02 +0100 Subject: [PATCH 246/282] Update de-DE.js --- src/languages/de-DE.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/languages/de-DE.js b/src/languages/de-DE.js index 60aabfe5..09330635 100644 --- a/src/languages/de-DE.js +++ b/src/languages/de-DE.js @@ -162,7 +162,7 @@ export default { Purple: "Lila", Pink: "Pink", "Search...": "Suchen...", - "Heartbeat Retry Interval": "Prüfzeitpunkt-Wiederholungsintervall", + "Heartbeat Retry Interval": "Intervall der Statusabfrage", retryCheckEverySecond: "Alle {0} Sekunden neu versuchen", "Import Backup": "Backup importieren", "Export Backup": "Backup exportieren", From f1007ad42f438958aea8fbe0bca896f8b9abb46b Mon Sep 17 00:00:00 2001 From: Mik Mueller <83001409+MikMuellerDev@users.noreply.github.com> Date: Wed, 2 Feb 2022 22:59:13 +0100 Subject: [PATCH 247/282] Update de-DE.js --- src/languages/de-DE.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/languages/de-DE.js b/src/languages/de-DE.js index 09330635..9de0dbcc 100644 --- a/src/languages/de-DE.js +++ b/src/languages/de-DE.js @@ -62,7 +62,7 @@ export default { Light: "Hell", Dark: "Dunkel", Auto: "Auto", - "Theme - Heartbeat Bar": "Thema - Zeitleiste", + "Theme - Heartbeat Bar": "Erscheinungsbild - Zeitleiste", Normal: "Normal", Bottom: "Unten", None: "Keine", From 41f1686147725c2a84e66f4944edbedf82f8ff57 Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Thu, 3 Feb 2022 12:20:15 +0800 Subject: [PATCH 248/282] Fix security vulnerabilities --- package-lock.json | 275 +++++++++++++++++++--------------------------- package.json | 2 +- 2 files changed, 113 insertions(+), 164 deletions(-) diff --git a/package-lock.json b/package-lock.json index fc21a63f..ccbbfded 100644 --- a/package-lock.json +++ b/package-lock.json @@ -79,7 +79,7 @@ "eslint-plugin-vue": "~7.18.0", "jest": "~27.2.5", "jest-puppeteer": "~6.0.0", - "puppeteer": "~10.4.0", + "puppeteer": "~13.1.3", "sass": "~1.42.1", "stylelint": "~14.2.0", "stylelint-config-standard": "~24.0.0", @@ -4901,9 +4901,9 @@ } }, "node_modules/devtools-protocol": { - "version": "0.0.901419", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.901419.tgz", - "integrity": "sha512-4INMPwNm9XRpBukhNbF7OB6fNTTCaI8pzy/fXg0xQzAy5h3zL1P8xT3QazgKqBrb/hAYwIBizqDBZ7GtJE74QQ==", + "version": "0.0.948846", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.948846.tgz", + "integrity": "sha512-5fGyt9xmMqUl2VI7+rnUkKCiAQIpLns8sfQtTENy5L70ktbNw0Z3TFJ1JoFNYdx/jffz4YXU45VF75wKZD7sZQ==", "dev": true }, "node_modules/diff-sequences": { @@ -10094,6 +10094,12 @@ "node": ">=10" } }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -10135,14 +10141,22 @@ "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==" }, "node_modules/node-fetch": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.6.tgz", - "integrity": "sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA==", + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", "dependencies": { "whatwg-url": "^5.0.0" }, "engines": { "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, "node_modules/node-fetch/node_modules/tr46": { @@ -10949,77 +10963,36 @@ } }, "node_modules/puppeteer": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-10.4.0.tgz", - "integrity": "sha512-2cP8mBoqnu5gzAVpbZ0fRaobBWZM8GEUF4I1F6WbgHrKV/rz7SX8PG2wMymZgD0wo0UBlg2FBPNxlF/xlqW6+w==", + "version": "13.1.3", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-13.1.3.tgz", + "integrity": "sha512-nqcJNThLUG0Dgo++2mMtGR2FCyg7olJJhj/rm0A65muyN3nrH6lGvnNRzEaNmSnHWvjaDIG9ox5kxQB+nXTg5A==", "dev": true, "hasInstallScript": true, "dependencies": { - "debug": "4.3.1", - "devtools-protocol": "0.0.901419", + "debug": "4.3.2", + "devtools-protocol": "0.0.948846", "extract-zip": "2.0.1", "https-proxy-agent": "5.0.0", - "node-fetch": "2.6.1", + "node-fetch": "2.6.7", "pkg-dir": "4.2.0", - "progress": "2.0.1", + "progress": "2.0.3", "proxy-from-env": "1.1.0", "rimraf": "3.0.2", - "tar-fs": "2.0.0", - "unbzip2-stream": "1.3.3", - "ws": "7.4.6" + "tar-fs": "2.1.1", + "unbzip2-stream": "1.4.3", + "ws": "8.2.3" }, "engines": { "node": ">=10.18.1" } }, - "node_modules/puppeteer/node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/puppeteer/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/puppeteer/node_modules/node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", - "dev": true, - "engines": { - "node": "4.x || >=6.0.0" - } - }, - "node_modules/puppeteer/node_modules/progress": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.1.tgz", - "integrity": "sha512-OE+a6vzqazc+K6LxJrX5UPyKFvGnL5CYmq2jFGNIBWHpc4QyE49/YOumcrpQFJpfejmvRtbJzgO1zPmMCqlbBg==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/puppeteer/node_modules/ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", "dev": true, "engines": { - "node": ">=8.3.0" + "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", @@ -12591,15 +12564,15 @@ } }, "node_modules/tar-fs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.0.tgz", - "integrity": "sha512-vaY0obB6Om/fso8a8vakQBzwholQ7v5+uy+tF3Ozvxv1KNezmVQAiWtcNmMHFSFPqL3dJA8ha6gdtFbfX9mcxA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", "dev": true, "dependencies": { "chownr": "^1.1.1", - "mkdirp": "^0.5.1", + "mkdirp-classic": "^0.5.2", "pump": "^3.0.0", - "tar-stream": "^2.0.0" + "tar-stream": "^2.1.4" } }, "node_modules/tar-fs/node_modules/chownr": { @@ -12608,18 +12581,6 @@ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", "dev": true }, - "node_modules/tar-fs/node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, "node_modules/tar-stream": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", @@ -12892,9 +12853,9 @@ } }, "node_modules/unbzip2-stream": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz", - "integrity": "sha512-fUlAF7U9Ah1Q6EieQ4x4zLNejrRvDWUYmxXUpN3uziFYCHapjWFaCAnreY9bGgxzaMCFAPPpYNng57CypwJVhg==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", "dev": true, "dependencies": { "buffer": "^5.2.1", @@ -14914,7 +14875,8 @@ "@fortawesome/vue-fontawesome": { "version": "3.0.0-5", "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-3.0.0-5.tgz", - "integrity": "sha512-aNmBT4bOecrFsZTog1l6AJDQHPP3ocXV+WQ3Ogy8WZCqstB/ahfhH4CPu5i4N9Hw0MBKXqE+LX+NbUxcj8cVTw==" + "integrity": "sha512-aNmBT4bOecrFsZTog1l6AJDQHPP3ocXV+WQ3Ogy8WZCqstB/ahfhH4CPu5i4N9Hw0MBKXqE+LX+NbUxcj8cVTw==", + "requires": {} }, "@gar/promisify": { "version": "1.1.2", @@ -16117,7 +16079,8 @@ "version": "1.9.4", "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-1.9.4.tgz", "integrity": "sha512-0CZqaCoChriPTTtGkERy1LGPcYjGFpi2uYRhBPIkqJqUGV5JnJFhQAgh6oH9j5XZHfrRaisX8W0xSpO4T7S78A==", - "dev": true + "dev": true, + "requires": {} }, "@vue/compiler-core": { "version": "3.2.22", @@ -16277,7 +16240,8 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true + "dev": true, + "requires": {} }, "acorn-walk": { "version": "7.2.0", @@ -16766,7 +16730,8 @@ "bootstrap": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.1.3.tgz", - "integrity": "sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q==" + "integrity": "sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q==", + "requires": {} }, "brace-expansion": { "version": "1.1.11", @@ -16958,7 +16923,8 @@ "chartjs-adapter-dayjs": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/chartjs-adapter-dayjs/-/chartjs-adapter-dayjs-1.0.0.tgz", - "integrity": "sha512-EnbVqTJGFKLpg1TROLdCEufrzbmIa2oeLGx8O2Wdjw2EoMudoOo9+YFu+6CM0Z0hQ/v3yq/e/Y6efQMu22n8Jg==" + "integrity": "sha512-EnbVqTJGFKLpg1TROLdCEufrzbmIa2oeLGx8O2Wdjw2EoMudoOo9+YFu+6CM0Z0hQ/v3yq/e/Y6efQMu22n8Jg==", + "requires": {} }, "check-password-strength": { "version": "2.0.3", @@ -17408,9 +17374,9 @@ "dev": true }, "devtools-protocol": { - "version": "0.0.901419", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.901419.tgz", - "integrity": "sha512-4INMPwNm9XRpBukhNbF7OB6fNTTCaI8pzy/fXg0xQzAy5h3zL1P8xT3QazgKqBrb/hAYwIBizqDBZ7GtJE74QQ==", + "version": "0.0.948846", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.948846.tgz", + "integrity": "sha512-5fGyt9xmMqUl2VI7+rnUkKCiAQIpLns8sfQtTENy5L70ktbNw0Z3TFJ1JoFNYdx/jffz4YXU45VF75wKZD7sZQ==", "dev": true }, "diff-sequences": { @@ -17548,7 +17514,8 @@ "ws": { "version": "8.2.3", "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==" + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "requires": {} } } }, @@ -17571,7 +17538,8 @@ "ws": { "version": "8.2.3", "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==" + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "requires": {} } } }, @@ -20015,7 +19983,8 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", - "dev": true + "dev": true, + "requires": {} }, "jest-puppeteer": { "version": "6.0.0", @@ -21295,6 +21264,12 @@ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" }, + "mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true + }, "ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -21327,9 +21302,9 @@ "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==" }, "node-fetch": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.6.tgz", - "integrity": "sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA==", + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", "requires": { "whatwg-url": "^5.0.0" }, @@ -21774,12 +21749,14 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", - "dev": true + "dev": true, + "requires": {} }, "postcss-scss": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.2.tgz", - "integrity": "sha512-xfdkU128CkKKKVAwkyt0M8OdnelJ3MRcIRAPPQkRpoPeuzWY3RIeg7piRCpZ79MK7Q16diLXMMAD9dN5mauPlQ==" + "integrity": "sha512-xfdkU128CkKKKVAwkyt0M8OdnelJ3MRcIRAPPQkRpoPeuzWY3RIeg7piRCpZ79MK7Q16diLXMMAD9dN5mauPlQ==", + "requires": {} }, "postcss-selector-parser": { "version": "6.0.8", @@ -21929,57 +21906,31 @@ "dev": true }, "puppeteer": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-10.4.0.tgz", - "integrity": "sha512-2cP8mBoqnu5gzAVpbZ0fRaobBWZM8GEUF4I1F6WbgHrKV/rz7SX8PG2wMymZgD0wo0UBlg2FBPNxlF/xlqW6+w==", + "version": "13.1.3", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-13.1.3.tgz", + "integrity": "sha512-nqcJNThLUG0Dgo++2mMtGR2FCyg7olJJhj/rm0A65muyN3nrH6lGvnNRzEaNmSnHWvjaDIG9ox5kxQB+nXTg5A==", "dev": true, "requires": { - "debug": "4.3.1", - "devtools-protocol": "0.0.901419", + "debug": "4.3.2", + "devtools-protocol": "0.0.948846", "extract-zip": "2.0.1", "https-proxy-agent": "5.0.0", - "node-fetch": "2.6.1", + "node-fetch": "2.6.7", "pkg-dir": "4.2.0", - "progress": "2.0.1", + "progress": "2.0.3", "proxy-from-env": "1.1.0", "rimraf": "3.0.2", - "tar-fs": "2.0.0", - "unbzip2-stream": "1.3.3", - "ws": "7.4.6" + "tar-fs": "2.1.1", + "unbzip2-stream": "1.4.3", + "ws": "8.2.3" }, "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", - "dev": true - }, - "progress": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.1.tgz", - "integrity": "sha512-OE+a6vzqazc+K6LxJrX5UPyKFvGnL5CYmq2jFGNIBWHpc4QyE49/YOumcrpQFJpfejmvRtbJzgO1zPmMCqlbBg==", - "dev": true - }, "ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "dev": true + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "dev": true, + "requires": {} } } }, @@ -23080,7 +23031,8 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-6.0.0.tgz", "integrity": "sha512-ZorSSdyMcxWpROYUvLEMm0vSZud2uB7tX1hzBZwvVY9SV/uly4AvvJPPhCcymZL3fcQhEQG5AELmrxWqtmzacw==", - "dev": true + "dev": true, + "requires": {} }, "stylelint-config-standard": { "version": "24.0.0", @@ -23192,15 +23144,15 @@ } }, "tar-fs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.0.tgz", - "integrity": "sha512-vaY0obB6Om/fso8a8vakQBzwholQ7v5+uy+tF3Ozvxv1KNezmVQAiWtcNmMHFSFPqL3dJA8ha6gdtFbfX9mcxA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", "dev": true, "requires": { "chownr": "^1.1.1", - "mkdirp": "^0.5.1", + "mkdirp-classic": "^0.5.2", "pump": "^3.0.0", - "tar-stream": "^2.0.0" + "tar-stream": "^2.1.4" }, "dependencies": { "chownr": { @@ -23208,15 +23160,6 @@ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", "dev": true - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } } } }, @@ -23425,9 +23368,9 @@ "dev": true }, "unbzip2-stream": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz", - "integrity": "sha512-fUlAF7U9Ah1Q6EieQ4x4zLNejrRvDWUYmxXUpN3uziFYCHapjWFaCAnreY9bGgxzaMCFAPPpYNng57CypwJVhg==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", "dev": true, "requires": { "buffer": "^5.2.1", @@ -23653,17 +23596,20 @@ "vue-confirm-dialog": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/vue-confirm-dialog/-/vue-confirm-dialog-1.0.2.tgz", - "integrity": "sha512-gTo1bMDWOLd/6ihmWv8VlPxhc9QaKoE5YqlsKydUOfrrQ3Q3taljF6yI+1TMtAtJLrvZ8DYrePhgBhY1VCJzbQ==" + "integrity": "sha512-gTo1bMDWOLd/6ihmWv8VlPxhc9QaKoE5YqlsKydUOfrrQ3Q3taljF6yI+1TMtAtJLrvZ8DYrePhgBhY1VCJzbQ==", + "requires": {} }, "vue-contenteditable": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/vue-contenteditable/-/vue-contenteditable-3.0.4.tgz", - "integrity": "sha512-CmtqT4zHQwLoJEyNVaXUjjUFPUVYlXXBHfSbRCHCUjODMqrn6L293LM1nc1ELx8epitZZvecTfIqOLlSzB3d+w==" + "integrity": "sha512-CmtqT4zHQwLoJEyNVaXUjjUFPUVYlXXBHfSbRCHCUjODMqrn6L293LM1nc1ELx8epitZZvecTfIqOLlSzB3d+w==", + "requires": {} }, "vue-demi": { "version": "0.10.1", "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.10.1.tgz", - "integrity": "sha512-L6Oi+BvmMv6YXvqv5rJNCFHEKSVu7llpWWJczqmAQYOdmPPw5PNYoz1KKS//Fxhi+4QP64dsPjtmvnYGo1jemA==" + "integrity": "sha512-L6Oi+BvmMv6YXvqv5rJNCFHEKSVu7llpWWJczqmAQYOdmPPw5PNYoz1KKS//Fxhi+4QP64dsPjtmvnYGo1jemA==", + "requires": {} }, "vue-eslint-parser": { "version": "7.11.0", @@ -23735,7 +23681,8 @@ "vue-demi": { "version": "0.11.4", "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.11.4.tgz", - "integrity": "sha512-/3xFwzSykLW2HiiLie43a+FFgNOcokbBJ+fzvFXd0r2T8MYohqvphUyDQ8lbAwzQ3Dlcrb1c9ykifGkhSIAk6A==" + "integrity": "sha512-/3xFwzSykLW2HiiLie43a+FFgNOcokbBJ+fzvFXd0r2T8MYohqvphUyDQ8lbAwzQ3Dlcrb1c9ykifGkhSIAk6A==", + "requires": {} } } }, @@ -23750,7 +23697,8 @@ "vue-toastification": { "version": "2.0.0-rc.5", "resolved": "https://registry.npmjs.org/vue-toastification/-/vue-toastification-2.0.0-rc.5.tgz", - "integrity": "sha512-q73e5jy6gucEO/U+P48hqX+/qyXDozAGmaGgLFm5tXX4wJBcVsnGp4e/iJqlm9xzHETYOilUuwOUje2Qg1JdwA==" + "integrity": "sha512-q73e5jy6gucEO/U+P48hqX+/qyXDozAGmaGgLFm5tXX4wJBcVsnGp4e/iJqlm9xzHETYOilUuwOUje2Qg1JdwA==", + "requires": {} }, "vuedraggable": { "version": "4.1.0", @@ -23929,7 +23877,8 @@ "version": "7.5.5", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz", "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==", - "dev": true + "dev": true, + "requires": {} }, "xml-name-validator": { "version": "3.0.0", diff --git a/package.json b/package.json index 048a5e0a..aa682cff 100644 --- a/package.json +++ b/package.json @@ -124,7 +124,7 @@ "eslint-plugin-vue": "~7.18.0", "jest": "~27.2.5", "jest-puppeteer": "~6.0.0", - "puppeteer": "~10.4.0", + "puppeteer": "~13.1.3", "sass": "~1.42.1", "stylelint": "~14.2.0", "stylelint-config-standard": "~24.0.0", From 742ad083e51cca7b912f4712c0154be968b933fb Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Thu, 3 Feb 2022 12:26:50 +0800 Subject: [PATCH 249/282] Fix security vulnerabilities --- package-lock.json | 126 +++++++++++----------------------------------- package.json | 2 +- 2 files changed, 30 insertions(+), 98 deletions(-) diff --git a/package-lock.json b/package-lock.json index ccbbfded..f533145f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -52,7 +52,7 @@ "timezones-list": "~3.0.1", "v-pagination-3": "~0.1.7", "vue": "next", - "vue-chart-3": "~0.5.11", + "vue-chart-3": "3.0.9", "vue-confirm-dialog": "~1.0.2", "vue-contenteditable": "~3.0.4", "vue-i18n": "~9.1.9", @@ -10111,9 +10111,9 @@ "integrity": "sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA==" }, "node_modules/nanoid": { - "version": "3.1.30", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz", - "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==", + "version": "3.1.31", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.31.tgz", + "integrity": "sha512-ZivnJm0o9bb13p2Ot5CpgC2rQdzB9Uxm/mFZweqm5eMViqOJe3PV6LU2E30SiLgheesmcPrjquqraoolONSA0A==", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -13072,26 +13072,19 @@ } }, "node_modules/vue-chart-3": { - "version": "0.5.11", - "resolved": "https://registry.npmjs.org/vue-chart-3/-/vue-chart-3-0.5.11.tgz", - "integrity": "sha512-sYUBU0N9V9a1Bv9kVIgLkQDWdKxd61Z+5+mvJaXC6lTZvvZ2BShEThD8NkSxtwbpqNLxdKZ+ORlUEEnsNnpkDQ==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/vue-chart-3/-/vue-chart-3-3.0.9.tgz", + "integrity": "sha512-RyVaOhSem0v4v645zAkdi1mgZjuD3KMQr11KrEZGFupoHzV2qn/sBpEDvplR9i57YnRxZ3KDnKqw/1rx2CkOZA==", "dependencies": { - "@vue/runtime-core": "3.2.20", - "@vue/runtime-dom": "3.2.20", - "csstype": "3.0.9", + "@vue/runtime-core": "latest", + "@vue/runtime-dom": "latest", + "csstype": "3.0.10", "lodash": "latest", - "nanoid": "3.1.30", - "vue-demi": "^0.10.1" + "nanoid": "3.1.31" }, "peerDependencies": { - "@vue/composition-api": "^1.0.4", - "chart.js": "^3.1.0", - "vue": "^2.0.0 || >=3.0.0-rc.0" - }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - } + "chart.js": "=> ^3.1.0", + "vue": ">= 3" } }, "node_modules/vue-chart-3/node_modules/@vue/reactivity": { @@ -13111,30 +13104,15 @@ "@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", - "integrity": "sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw==" + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz", + "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==" }, "node_modules/vue-confirm-dialog": { "version": "1.0.2", @@ -13152,28 +13130,6 @@ "vue": "^3.0.0" } }, - "node_modules/vue-demi": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.10.1.tgz", - "integrity": "sha512-L6Oi+BvmMv6YXvqv5rJNCFHEKSVu7llpWWJczqmAQYOdmPPw5PNYoz1KKS//Fxhi+4QP64dsPjtmvnYGo1jemA==", - "hasInstallScript": true, - "bin": { - "vue-demi-fix": "bin/vue-demi-fix.js", - "vue-demi-switch": "bin/vue-demi-switch.js" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@vue/composition-api": "^1.0.0-rc.1", - "vue": "^2.6.0 || >=3.0.0" - }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - } - } - }, "node_modules/vue-eslint-parser": { "version": "7.11.0", "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.11.0.tgz", @@ -21281,9 +21237,9 @@ "integrity": "sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA==" }, "nanoid": { - "version": "3.1.30", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz", - "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==" + "version": "3.1.31", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.31.tgz", + "integrity": "sha512-ZivnJm0o9bb13p2Ot5CpgC2rQdzB9Uxm/mFZweqm5eMViqOJe3PV6LU2E30SiLgheesmcPrjquqraoolONSA0A==" }, "natural-compare": { "version": "1.4.0", @@ -23535,16 +23491,15 @@ } }, "vue-chart-3": { - "version": "0.5.11", - "resolved": "https://registry.npmjs.org/vue-chart-3/-/vue-chart-3-0.5.11.tgz", - "integrity": "sha512-sYUBU0N9V9a1Bv9kVIgLkQDWdKxd61Z+5+mvJaXC6lTZvvZ2BShEThD8NkSxtwbpqNLxdKZ+ORlUEEnsNnpkDQ==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/vue-chart-3/-/vue-chart-3-3.0.9.tgz", + "integrity": "sha512-RyVaOhSem0v4v645zAkdi1mgZjuD3KMQr11KrEZGFupoHzV2qn/sBpEDvplR9i57YnRxZ3KDnKqw/1rx2CkOZA==", "requires": { - "@vue/runtime-core": "3.2.20", - "@vue/runtime-dom": "3.2.20", - "csstype": "3.0.9", + "@vue/runtime-core": "latest", + "@vue/runtime-dom": "latest", + "csstype": "3.0.10", "lodash": "latest", - "nanoid": "3.1.30", - "vue-demi": "^0.10.1" + "nanoid": "3.1.31" }, "dependencies": { "@vue/reactivity": { @@ -23564,32 +23519,15 @@ "@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", - "integrity": "sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw==" + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz", + "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==" } } }, @@ -23605,12 +23543,6 @@ "integrity": "sha512-CmtqT4zHQwLoJEyNVaXUjjUFPUVYlXXBHfSbRCHCUjODMqrn6L293LM1nc1ELx8epitZZvecTfIqOLlSzB3d+w==", "requires": {} }, - "vue-demi": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.10.1.tgz", - "integrity": "sha512-L6Oi+BvmMv6YXvqv5rJNCFHEKSVu7llpWWJczqmAQYOdmPPw5PNYoz1KKS//Fxhi+4QP64dsPjtmvnYGo1jemA==", - "requires": {} - }, "vue-eslint-parser": { "version": "7.11.0", "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.11.0.tgz", diff --git a/package.json b/package.json index aa682cff..0f617234 100644 --- a/package.json +++ b/package.json @@ -97,7 +97,7 @@ "timezones-list": "~3.0.1", "v-pagination-3": "~0.1.7", "vue": "next", - "vue-chart-3": "~0.5.11", + "vue-chart-3": "3.0.9", "vue-confirm-dialog": "~1.0.2", "vue-contenteditable": "~3.0.4", "vue-i18n": "~9.1.9", From 45dca072b2c433d06a44ef5bc82b2871802fef13 Mon Sep 17 00:00:00 2001 From: rovast <rovast@163.com> Date: Mon, 7 Feb 2022 15:28:21 +0800 Subject: [PATCH 250/282] Update zh-CN translation for setting module. --- src/languages/zh-CN.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/languages/zh-CN.js b/src/languages/zh-CN.js index ecf91979..aeb6c29a 100644 --- a/src/languages/zh-CN.js +++ b/src/languages/zh-CN.js @@ -23,6 +23,7 @@ export default { Theme: "主题", General: "基本设置", "Primary Base URL": "站点地址(URL)", + About: "关于", Version: "版本", "Check Update On GitHub": "检查更新", List: "列表", @@ -150,6 +151,7 @@ export default { importHandleDescription: "如果想跳过同名的监控项或通知,请选择“跳过”;“覆盖”将删除所有现有的监控项和通知。", confirmImportMsg: "确定要导入备份吗?请确保已经选择了正确的导入选项。", "Heartbeat Retry Interval": "心跳重试间隔", + "Backup": "备份", "Import Backup": "导入备份", "Export Backup": "导出备份", "Skip existing": "跳过", From 6bd2ee8c694fd368e7a62cf01ea36e3465dc941c Mon Sep 17 00:00:00 2001 From: James White <james@jmwhite.co.uk> Date: Tue, 8 Feb 2022 21:50:03 +0000 Subject: [PATCH 251/282] Fix minor typos on disable auth warning --- src/components/settings/Security.vue | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/settings/Security.vue b/src/components/settings/Security.vue index 94c6b5a6..a05a9c72 100644 --- a/src/components/settings/Security.vue +++ b/src/components/settings/Security.vue @@ -218,9 +218,9 @@ <!-- 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> + <p>Are you sure want to <strong>disable authentication</strong>?</p> + <p>It is designed for scenarios <strong>where you intend to implement third-party authentication</strong> in front of Uptime Kuma such as Cloudflare Access, Authelia or other authentication mechanisms.</p> + <p>Please use this option carefully!</p> </template> </Confirm> </div> From daac9ddffceabe21239d8e68ba15182e7d957df9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vi=E1=BB=87t=20Nguy=E1=BB=85n?= <mrholao09@gmail.com> Date: Sun, 6 Feb 2022 11:33:04 +0700 Subject: [PATCH 252/282] Update Vietnamese language MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cập nhật một số thông tin tiếng Việt --- src/components/settings/Security.vue | 6 ++ src/i18n.js | 2 +- src/languages/{vi.js => vi-VN.js} | 130 +++++++++++++-------------- 3 files changed, 72 insertions(+), 66 deletions(-) rename src/languages/{vi.js => vi-VN.js} (79%) diff --git a/src/components/settings/Security.vue b/src/components/settings/Security.vue index 94c6b5a6..e1459d48 100644 --- a/src/components/settings/Security.vue +++ b/src/components/settings/Security.vue @@ -216,6 +216,12 @@ <p>Vennligst vær forsiktig.</p> </template> + <template v-else-if="$i18n.locale === 'vi-VN' "> + <p>Bạn có muốn <strong>TẮT XÁC THỰC</strong> không?</p> + <p>Điều này rất nguy hiểm<strong>BẤT KỲ AI</strong> cũng có thể truy cập và cướp quyền điều khiển.</p> + <p>Vui lòng <strong>cẩn thận</strong>.</p> + </template> + <!-- English (en) --> <template v-else> <p>Are you sure want to <strong>disable auth</strong>?</p> diff --git a/src/i18n.js b/src/i18n.js index cdb93e95..d895543b 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -27,7 +27,7 @@ const languageList = { "zh-CN": "简体中文", "pl": "Polski", "et-EE": "eesti", - "vi": "Vietnamese", + "vi-VN": "Tiếng Việt", "zh-TW": "繁體中文 (台灣)" }; diff --git a/src/languages/vi.js b/src/languages/vi-VN.js similarity index 79% rename from src/languages/vi.js rename to src/languages/vi-VN.js index 22538f91..ec9e9efc 100644 --- a/src/languages/vi.js +++ b/src/languages/vi-VN.js @@ -1,31 +1,31 @@ export default { - languageName: "Vietnamese", + languageName: "Tiếng Việt", checkEverySecond: "Kiểm tra mỗi {0} giây.", retryCheckEverySecond: "Thử lại mỗi {0} giây.", retriesDescription: "Số lần thử lại tối đa trước khi dịch vụ được đánh dấu là down và gửi thông báo.", ignoreTLSError: "Bỏ qua lỗi TLS/SSL với các web HTTPS.", upsideDownModeDescription: "Trạng thái đảo ngược, nếu dịch vụ có thể truy cập được nghĩa là DOWN.", maxRedirectDescription: "Số lần chuyển hướng (redirect) tối đa. Đặt thành 0 để tắt chuyển hướng", - acceptedStatusCodesDescription: "Chọn mã code trạng thái được coi là phản hồi thành công.", + acceptedStatusCodesDescription: "Chọn mã trạng thái được coi là phản hồi thành công.", passwordNotMatchMsg: "Mật khẩu nhập lại không khớp.", notificationDescription: "Vui lòng chỉ định một kênh thông báo.", keywordDescription: "Từ khoá tìm kiếm phản hồi ở dạng html hoặc JSON, có phân biệt chữ HOA - thường", pauseDashboardHome: "Tạm dừng", - deleteMonitorMsg: "Bạn chắc chắn muốn xóa monitor này chứ?", - deleteNotificationMsg: "Bạn có chắc chắn muốn xóa kênh thông báo này cho tất cả monitor?", + deleteMonitorMsg: "Bạn chắc chắn muốn xóa kênh theo dõi này chứ?", + deleteNotificationMsg: "Bạn có chắc chắn muốn xóa kênh thông báo này cho tất cả kênh theo dõi?", resoverserverDescription: "Cloudflare là máy chủ mặc định, bạn có thể thay đổi bất cứ lúc nào.", rrtypeDescription: "Hãy chọn RR-Type mà bạn muốn giám sát", pauseMonitorMsg: "Bạn chắc chắn muốn tạm dừng chứ?", - enableDefaultNotificationDescription: "Bật làm mặc định cho mọi monitor mới về sau. Bạn vẫn có thể tắt thông báo riêng cho từng monitor.", - clearEventsMsg: "Bạn chắc chắn muốn xoá TẤT CẢ sự kiện cho monitor này chứ?", - clearHeartbeatsMsg: "Bạn chắc chắn muốn xoá TẤT CẢ heartbeats cho monitor này chứ?", + enableDefaultNotificationDescription: "Bật làm mặc định cho mọi kênh theo dõi mới về sau. Bạn vẫn có thể tắt thông báo riêng cho từng kênh theo dõi.", + clearEventsMsg: "Bạn chắc chắn muốn xoá TẤT CẢ sự kiện cho kênh theo dõi này chứ?", + clearHeartbeatsMsg: "Bạn chắc chắn muốn xoá TẤT CẢ heartbeats cho kênh theo dõi này chứ?", confirmClearStatisticsMsg: "Bạn chắc chắn muốn xoá TẤT CẢ số liệu thống kê?", - importHandleDescription: "Chọn 'Skip existing' nếu bạn muốn bỏ qua mọi monitor và kênh thông báo trùng tên. 'Overwrite' sẽ ghi đè lên tất cả các monitor và kênh thông báo.", + importHandleDescription: "Chọn 'Giữ lại' nếu bạn muốn bỏ qua mọi kênh theo dõi và kênh thông báo trùng tên. 'Ghi đè' sẽ ghi đè lên tất cả các kênh theo dõi và kênh thông báo.", confirmImportMsg: "Bạn có chắc chắn muốn khôi phục bản bản sao lưu này không?.", - twoFAVerifyLabel: "Vui lòng nhập mã token của bạn để xác minh rằng 2FA đang hoạt động", - tokenValidSettingsMsg: "Mã token hợp lệ! Bạn có thể lưu cài đặt 2FA bây giờ.", - confirmEnableTwoFAMsg: "Bạn chắc chắn muốn bật 2FA chứ?", - confirmDisableTwoFAMsg: "Bạn chắc chắn muốn tắt 2FA chứ?", + twoFAVerifyLabel: "Vui lòng nhập mã token của bạn để xác minh rằng xác thực 2 lớp (2FA) đang hoạt động", + tokenValidSettingsMsg: "Mã token hợp lệ! Bạn có thể lưu cài đặt xác thực 2 lớp (2FA) bây giờ.", + confirmEnableTwoFAMsg: "Bạn chắc chắn muốn bật xác thực 2 lớp (2FA) chứ?", + confirmDisableTwoFAMsg: "Bạn chắc chắn muốn tắt xác thực 2 lớp (2FA) chứ?", Settings: "Cài đặt", Dashboard: "Dashboard", "New Update": "Bản cập nhật mới", @@ -38,7 +38,7 @@ export default { "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", + "Add New Monitor": "Thêm mới kênh theo dõi", "Quick Stats": "Thống kê nhanh", Up: "Up", Down: "Down", @@ -63,9 +63,9 @@ export default { "-hour": "-giờ", Response: "Phản hồi", Ping: "Ping", - "Monitor Type": "Kiểu monitor", + "Monitor Type": "Kiểu kênh theo dõi", Keyword: "Từ khoá", - "Friendly Name": "Tên monitor", + "Friendly Name": "Tên rút gọn", URL: "URL", Hostname: "Hostname", Port: "Port", @@ -111,7 +111,7 @@ export default { Password: "Mật khẩu", "Remember me": "Lưu phiên đăng nhập", Login: "Đăng nhập", - "No Monitors, please": "Không có monitor nào", + "No Monitors, please": "Không có kênh theo dõi nào", "add one": "Thêm mới", "Notification Type": "Kiểu thông báo", Email: "Email", @@ -125,31 +125,31 @@ export default { "Import Backup": "Khôi phục bản sao lưu", "Export Backup": "Xuất bản sao lưu", Export: "Xuất", - Import: "Khôi phục", + Import: "Nhập", respTime: "Thời gian phản hồi (ms)", notAvailableShort: "N/A", "Default enabled": "Mặc định bật", - "Apply on all existing monitors": "Áp dụng cho tất cả monitor đang có", + "Apply on all existing monitors": "Áp dụng cho tất cả kênh theo dõi đang có", Create: "Tạo", "Clear Data": "Xoá dữ liệu", 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 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.", + backupDescription: "Sao lưu tất cả các kênh theo dõi và tất cả các thông báo vào một file định dạng JSON.", + backupDescription2: "Lưu ý: 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, trong file đó chứa cả các token thông báo.", alertNoFile: "Hãy chọn file để khôi phục.", - alertWrongFileType: "Hãy chọn file JSON.", + alertWrongFileType: "Hãy chọn file định dạng JSON.", "Clear all statistics": "Xoá tất cả thống kê", - "Skip existing": "Skip existing", + "Skip existing": "Giữ lại", Overwrite: "Ghi đè", Options: "Tuỳ chọn", "Keep both": "Giữ lại cả hai", "Verify Token": "Xác minh Token", - "Setup 2FA": "Cài đặt 2FA", - "Enable 2FA": "Bật 2FA", - "Disable 2FA": "Tắt 2FA", - "2FA Settings": "Cài đặt 2FA", + "Setup 2FA": "Cài đặt xác thực 2 lớp (2FA)", + "Enable 2FA": "Bật xác thực 2 lớp (2FA)", + "Disable 2FA": "Tắt xác thực 2 lớp (2FA)", + "2FA Settings": "Cài đặt xác thực 2 lớp (2FA)", "Two Factor Authentication": "Xác thực hai yếu tố", Active: "Hoạt động", Inactive: "Ngừng hoạt động", @@ -170,16 +170,16 @@ export default { Purple: "Tím", Pink: "Hồng", "Search...": "Tìm kiếm...", - "Avg. Ping": "Ping Trung bình", + "Avg. Ping": "Ping trung bình", "Avg. Response": "Phản hồi trung bình", "Entry Page": "Entry Page", - statusPageNothing: "Không có gì, hãy thêm nhóm monitor hoặc monitor.", + statusPageNothing: "Chưa có thông tin gì, hãy thêm nhóm kênh theo dõi hoặc kênh theo dõi.", "No Services": "Không có dịch vụ", "All Systems Operational": "Tất cả các hệ thống hoạt động bình thường", - "Partially Degraded Service": "Có hệ thống down", - "Degraded Service": "Toàn bộ hệ thống down", + "Partially Degraded Service": "Có hệ thống bị ngưng", + "Degraded Service": "Toàn bộ hệ thống bị ngưng", "Add Group": "Thêm nhóm", - "Add a monitor": "Thêm monitor", + "Add a monitor": "Thêm kênh theo dõi", "Edit Status Page": "Sửa trang trạng thái", "Go to Dashboard": "Đi tới Dashboard", "Status Page": "Trang trạng thái", @@ -195,23 +195,23 @@ export default { "YOUR BOT TOKEN HERE": "MÃ BOT TOKEN CỦA BẠN", chatIDNotFound: "Không tìm thấy Chat ID, vui lòng gửi tin nhắn cho bot này trước", webhook: "Webhook", - "Post URL": "URL đăng", + "Post URL": "URL webhook", "Content Type": "Loại nội dung", - webhookJsonDesc: "{0} phù hợp với bất kỳ máy chủ http hiện đại nào như express.js", - webhookFormDataDesc: "{multipart} phù hợp với PHP, bạn chỉ cần phân tích cú pháp json bằng {decodeFunction}", + webhookJsonDesc: "{0} tương thích với máy chủ HTTP ví dụ như Express.js", + webhookFormDataDesc: "{multipart} tương thích với máy chủ PHP, bạn chỉ cần phân tích cú pháp json bằng {decodeFunction}", smtp: "Email (SMTP)", - secureOptionNone: "None / STARTTLS (25, 587)", + secureOptionNone: "None/STARTTLS(25, 587)", secureOptionTLS: "TLS (465)", "Ignore TLS Error": "Bỏ qua lỗi TLS", - "From Email": "Từ Email", + "From Email": "Email gửi", emailCustomSubject: "Tuỳ chỉnh tiêu đề", - "To Email": "Tới Email", + "To Email": "Email nhận", smtpCC: "CC", smtpBCC: "BCC", discord: "Discord", "Discord Webhook URL": "Discord Webhook URL", wayToGetDiscordURL: "Để lấy Discord, hãy vào: Server Settings -> Integrations -> Create Webhook", - "Bot Display Name": "Tên hiển thị của Bot", + "Bot Display Name": "Tên hiển thị của BOT", "Prefix Custom Message": "Tiền tố tin nhắn tuỳ chọn", "Hello @everyone is...": "Xin chào {'@'} mọi người đang...", teams: "Microsoft Teams", @@ -220,8 +220,8 @@ export default { 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.", - wayToCheckSignalURL: "Bạn có thể kiểm tra url này để xem cách thiết lập:", + needSignalAPI: "Bạn cần một tín hiệu kết nối với REST API.", + wayToCheckSignalURL: "Bạn có thể kiểm tra URL này để xem cách thiết lập:", signalImportant: "QUAN TRỌNG: Bạn không thể kết hợp các nhóm và số trong người nhận!", gotify: "Gotify", "Application Token": "Mã Token ứng dụng", @@ -242,7 +242,7 @@ export default { promosms: "PromoSMS", clicksendsms: "ClickSend SMS", lunasea: "LunaSea", - apprise: "Apprise (Hỗ trợ 50+ dịch vụ thông báo)", + apprise: "Apprise (Hỗ trợ trên 50 dịch vụ thông báo)", GoogleChat: "Google Chat (Google Workspace only)", pushbullet: "Pushbullet", line: "Line Messenger", @@ -261,7 +261,7 @@ export default { 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 : +84123456789) ", + octopushPhoneNumber: "Số điện thoại (Định dạng intl, vd : +84692341165​) ", 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", @@ -300,50 +300,50 @@ export default { 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.", + "Monitor History": "Lịch sử kênh theo dõi", + clearDataOlderThan: "Giữ dữ liệu lịch sử kênh theo dõi {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: ", + steamApiKeyDescription: "Để theo dõi 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", - Done: "Done", - Info: "Info", - Security: "Security", + Done: "Hoàn thành", + Info: "Thông tin", + Security: "Bảo mật", "Steam API Key": "Steam API Key", "Shrink Database": "Shrink Database", "Pick a RR-Type...": "Pick a RR-Type...", "Pick Accepted Status Codes...": "Chọn các Codes trạng thái chấp nhận được...", Default: "Mặc định", "HTTP Options": "Tuỳ chọn HTTP", - "Create Incident": "Create Incident", + "Create Incident": "Tạo Incident", Title: "Tiêu đề", Content: "Nội dung", Style: "Style", - info: "info", + info: "thông tin", warning: "cảnh báo", danger: "nguy hiểm", - primary: "primary", + primary: "cơ sở", light: "sáng", dark: "tối", Post: "Post", "Please input title and content": "Hãy nhập tiêu đề và nội dung", - Created: "Created", + Created: "Đã tạo", "Last Updated": "Cập nhật mới nhất", Unpin: "Bỏ ghim", - "Switch to Light Theme": "Chuyển sang Theme Sáng", - "Switch to Dark Theme": "Chuyển sang Theme Tối", + "Switch to Light Theme": "Chuyển sang giao diện Sáng", + "Switch to Dark Theme": "Chuyển sang giao diện Tối", "Show Tags": "Hiện Tags", "Hide Tags": "Ẩn Tags", Description: "Mô tả", - "No monitors available.": "Không có monitor nào.", + "No monitors available.": "Không có kênh theo dõi nào.", "Add one": "Thêm mới", - "No Monitors": "No Monitors", + "No Monitors": "Không có kênh theo dõi", "Untitled Group": "Nhóm không có tiêu đề", - Services: "Services", - Discard: "Discard", - Cancel: "Cancel", + Services: "Dịch vụ", + Discard: "Bỏ", + Cancel: "Hủy", "Powered by": "Được cung cấp bởi", shrinkDatabaseDescription: "Khởi chạy database VACCUM cho SQLite. Nếu database được tạo sau version 1.10.0, AUTO_VACCUM đã được bật sẵn, hành động này không cần thiết.", serwersms: "SerwerSMS.pl", @@ -352,11 +352,11 @@ export default { serwersmsPhoneNumber: "Số điện thoại", serwersmsSenderName: "Tên người gửi SMS (Đã đăng ký qua portal)", "stackfield": "Stackfield", - smtpDkimSettings: "DKIM Settings", - smtpDkimDesc: "Please refer to the Nodemailer DKIM {0} for usage.", - documentation: "documentation", - smtpDkimDomain: "Domain Name", - smtpDkimKeySelector: "Key Selector", + smtpDkimSettings: "Cài đặt xác thực Email(DKIM)", + smtpDkimDesc: "Xem hướng dẫn tại {0}.", + documentation: "Nodemailer DKIM", + smtpDkimDomain: "Mail domain", + smtpDkimKeySelector: "DKIM Key Selector", smtpDkimPrivateKey: "Private Key", smtpDkimHashAlgo: "Hash Algorithm (Tuỳ chọn)", smtpDkimheaderFieldNames: "Header Keys to sign (Tuỳ chọn)", From e7e30bf49736ddba041253dbc7a4c19a4761a7b5 Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Wed, 9 Feb 2022 21:54:33 +0800 Subject: [PATCH 253/282] update to 1.11.4 --- package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 0f617234..dc3dedca 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "uptime-kuma", - "version": "1.11.3", + "version": "1.11.4", "license": "MIT", "repository": { "type": "git", @@ -30,13 +30,13 @@ "build-docker": "npm run build && 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.3-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.3 -t louislam/uptime-kuma:debian -t louislam/uptime-kuma:1-debian -t louislam/uptime-kuma:1.11.3-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.4-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.4 -t louislam/uptime-kuma:debian -t louislam/uptime-kuma:1-debian -t louislam/uptime-kuma:1.11.4-debian --target release . --push", "build-docker-nightly": "npm run build && 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.3 && npm ci --production && npm run download-dist", + "setup": "git checkout 1.11.4 && 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 79f99ce215ad49dbfc4094d1507b0e6ad97928ea Mon Sep 17 00:00:00 2001 From: sovushik <30425777+sovushik@users.noreply.github.com> Date: Wed, 9 Feb 2022 21:19:00 +0500 Subject: [PATCH 254/282] Update ru-RU.js Add new string --- src/languages/ru-RU.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/languages/ru-RU.js b/src/languages/ru-RU.js index 45782320..69de6383 100644 --- a/src/languages/ru-RU.js +++ b/src/languages/ru-RU.js @@ -328,4 +328,6 @@ export default { "Security": "Безопасность", "Current User:": "Текущий пользователь:", "All Systems Operational": "Все системы работают", + "About": "О программе", + "Description:": "Описание:", }; From b58120d2582d08627463d3873d854082772a7f90 Mon Sep 17 00:00:00 2001 From: sovushik <30425777+sovushik@users.noreply.github.com> Date: Wed, 9 Feb 2022 21:26:47 +0500 Subject: [PATCH 255/282] Update ru-RU.js Correct some words on Russian --- src/languages/ru-RU.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/languages/ru-RU.js b/src/languages/ru-RU.js index 45782320..d274b37f 100644 --- a/src/languages/ru-RU.js +++ b/src/languages/ru-RU.js @@ -308,11 +308,11 @@ export default { records: "записей", "One record": "Одна запись", steamApiKeyDescription: "Для мониторинга игрового сервера Steam вам необходим Web-API ключ Steam. Зарегистрировать его можно здесь: ", - "Certificate Chain:": "Цепочка сертификатов:", + "Certificate Chain": "Цепочка сертификатов", "Valid": "Действительный", "Hide Tags": "Скрыть тэги", - "Title:": "Название инцидента:", - "Content:": "Содержание инцидента:", + "Title": "Название инцидента:", + "Content": "Содержание инцидента:", "Post": "Опубликовать", "Cancel": "Отмена", "Created:": "Создано:", @@ -326,6 +326,6 @@ export default { "Add one": "Добавить новый", "Backup": "Резервная копия", "Security": "Безопасность", - "Current User:": "Текущий пользователь:", - "All Systems Operational": "Все системы работают", + "Current User": "Текущий пользователь", + "All Systems Operational": "Все системы работают без сбоев", }; From 76b9fb967f4ad1b9d1ea4d6e64d35c5e61ce47bc Mon Sep 17 00:00:00 2001 From: sovushik <30425777+sovushik@users.noreply.github.com> Date: Wed, 9 Feb 2022 21:37:45 +0500 Subject: [PATCH 256/282] Update ru-RU.js Add new string --- src/languages/ru-RU.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/languages/ru-RU.js b/src/languages/ru-RU.js index 45782320..f408e22f 100644 --- a/src/languages/ru-RU.js +++ b/src/languages/ru-RU.js @@ -328,4 +328,5 @@ export default { "Security": "Безопасность", "Current User:": "Текущий пользователь:", "All Systems Operational": "Все системы работают", + "Powered by": "Работает на основе скрипта от", }; From 5aed36b470eae19fb0d87e6d2fcd30d643e851ff Mon Sep 17 00:00:00 2001 From: AnnAngela <naganjue@vip.qq.com> Date: Thu, 10 Feb 2022 22:45:24 +0800 Subject: [PATCH 257/282] =?UTF-8?q?Update=20zh-CN=20----=20=E5=85=B3?= =?UTF-8?q?=E4=BA=8E=20smtpDkimKeySelector=EF=BC=9A=20Google=20Workspace?= =?UTF-8?q?=20=E7=9A=84=E5=B8=AE=E5=8A=A9=E9=87=8C=E7=94=A8=E8=AF=8D?= =?UTF-8?q?=E4=B8=BA=20[=E5=89=8D=E7=BC=80=E9=80=89=E6=8B=A9=E5=99=A8](htt?= =?UTF-8?q?ps://annangela.page.link/smtpDkimKeySelector)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/languages/zh-CN.js | 46 +++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/src/languages/zh-CN.js b/src/languages/zh-CN.js index aeb6c29a..7cb4f1a4 100644 --- a/src/languages/zh-CN.js +++ b/src/languages/zh-CN.js @@ -2,7 +2,7 @@ export default { languageName: "简体中文", checkEverySecond: "检测频率 {0} 秒", retriesDescription: "最大重试失败次数", - ignoreTLSError: "忽略HTTPS站点的证书错误", + ignoreTLSError: "忽略 HTTPS 站点的证书错误", upsideDownModeDescription: "反向状态监控(状态码范围外为有效状态,反之为无效)", maxRedirectDescription: "最大重定向次数,设置为 0 禁止重定向", acceptedStatusCodesDescription: "选择被视为成功响应的状态码", @@ -12,7 +12,7 @@ export default { pauseDashboardHome: "暂停", deleteMonitorMsg: "确定要删除此监控吗?", deleteNotificationMsg: "确定要删除此消息通知吗?这将对所有监控生效。", - resoverserverDescription: "可自定义要使用的DNS服务器", + resoverserverDescription: "可自定义要使用的 DNS 服务器", rrtypeDescription: "选择要监控的资源记录类型", pauseMonitorMsg: "确定要暂停吗?", Settings: "设置", @@ -56,7 +56,7 @@ export default { "Monitor Type": "监控类型", Keyword: "关键字", "Friendly Name": "自定义名称", - URL: "网址URL", + URL: "网址 URL", Hostname: "主机名", Port: "端口号", "Heartbeat Interval": "心跳间隔", @@ -131,8 +131,8 @@ export default { backupDescription3: "导出的文件中可能包含敏感信息,如消息通知的 Token 信息,请小心存放!", alertNoFile: "请选择一个文件导入", alertWrongFileType: "请选择一个 JSON 格式的文件", - twoFAVerifyLabel: "请输入Token以验证 2FA(二次验证)是否正常工作", - tokenValidSettingsMsg: "Token有效!您现在可以保存 2FA(二次验证)设置", + twoFAVerifyLabel: "请输入 Token 以验证 2FA(二次验证)是否正常工作", + tokenValidSettingsMsg: "Token 有效!您现在可以保存 2FA(二次验证)设置", confirmEnableTwoFAMsg: "确定要启用 2FA(二次验证)吗?", confirmDisableTwoFAMsg: "确定要禁用 2FA(二次验证)吗?", "Apply on all existing monitors": "应用到所有监控项", @@ -151,7 +151,7 @@ export default { importHandleDescription: "如果想跳过同名的监控项或通知,请选择“跳过”;“覆盖”将删除所有现有的监控项和通知。", confirmImportMsg: "确定要导入备份吗?请确保已经选择了正确的导入选项。", "Heartbeat Retry Interval": "心跳重试间隔", - "Backup": "备份", + Backup: "备份", "Import Backup": "导入备份", "Export Backup": "导出备份", "Skip existing": "跳过", @@ -218,9 +218,9 @@ export default { "Post URL": "目标链接", "Content Type": "Content Type", webhookJsonDesc: "{0} 适合现代的服务,比如 express.js", - webhookFormDataDesc: "{multipart} 适合PHP,解码使用 {decodeFunction}", - secureOptionNone: "无 / STARTTLS(25,587)", - secureOptionTLS: "TLS(465)", + webhookFormDataDesc: "{multipart} 适合 PHP,解码使用 {decodeFunction}", + secureOptionNone: "无 / STARTTLS(常见端口号为 25、587)", + secureOptionTLS: "TLS(常见端口号为 465)", "Ignore TLS Error": "忽略 TLS 错误", "From Email": "发信人", "To Email": "收信人", @@ -301,14 +301,14 @@ export default { Body: "请求体", Headers: "请求头", PushUrl: "Push URL", - HeadersInvalidFormat: "请求头不是有效的JSON: ", - BodyInvalidFormat: "请求体不是有效的JSON: ", + HeadersInvalidFormat: "请求头不是有效的 JSON: ", + BodyInvalidFormat: "请求体不是有效的 JSON: ", "Monitor History": "监控历史数据", clearDataOlderThan: "保留监控历史数据 {0} 天", PasswordsDoNotMatch: "密码不匹配", records: "records", "One record": "One record", - steamApiKeyDescription: "为了监控Steam游戏服务器,你需要一个Steam Web-API key。你可以在这里注册你的API密钥: ", + steamApiKeyDescription: "为了监控 Steam 游戏服务器,你需要一个 Steam Web-API key。你可以在这里注册你的 API 密钥: ", "Current User": "当前用户", recent: "最近", Done: "完成", @@ -341,27 +341,27 @@ export default { "Hide Tags": "隐藏标签", Description: "描述", "No monitors available.": "没有可用的监控项", - "Add one": "Add one", + "Add one": "创建新的监控项", "No Monitors": "没有监控项", "Untitled Group": "无标题的分组", Services: "服务", Discard: "取消", Cancel: "取消", "Powered by": "Powered by", - shrinkDatabaseDescription: "这将触发SQLite数据库的 VACUUM 命令,如果您的数据库是在1.10.0版本之后创建的,AUTO_VACUUM已经启用了,则不需要再使用此功能", + shrinkDatabaseDescription: "这将触发 SQLite 数据库的 VACUUM 命令,如果您的数据库是在1.10.0版本之后创建的,AUTO_VACUUM 已经启用了,则不需要再使用此功能", serwersms: "SerwerSMS.pl", - serwersmsAPIUser: "API Username (incl. webapi_ prefix)", + serwersmsAPIUser: "API Username(请保留 webapi_ 前缀)", serwersmsAPIPassword: "API Password", serwersmsPhoneNumber: "Phone number", serwersmsSenderName: "SMS Sender Name (registered via customer portal)", stackfield: "Stackfield", - smtpDkimSettings: "DKIM Settings", - smtpDkimDesc: "Please refer to the Nodemailer DKIM {0} for usage.", - documentation: "documentation", + smtpDkimSettings: "DKIM 设置", + smtpDkimDesc: "请参考 Nodemailer 的 DKIM {0} 进行配置。", + documentation: "文档", smtpDkimDomain: "域名", - smtpDkimKeySelector: "Key Selector", - smtpDkimPrivateKey: "Private Key", - smtpDkimHashAlgo: "Hash Algorithm (可选)", - smtpDkimheaderFieldNames: "Header Keys to sign (可选)", - smtpDkimskipFields: "Header Keys not to sign (可选)", + smtpDkimKeySelector: "前缀选择器", + smtpDkimPrivateKey: "密钥", + smtpDkimHashAlgo: "哈希算法(可选)", + smtpDkimheaderFieldNames: "明确包含在哈希计算对象内的 Header 列表(可选)", + smtpDkimskipFields: "不包含在哈希计算对象内的 Header 列表(可选)", }; From c75c6c5640a91346fda397c317566c6017224b5c Mon Sep 17 00:00:00 2001 From: AnnAngela <naganjue@vip.qq.com> Date: Fri, 11 Feb 2022 22:50:46 +0800 Subject: [PATCH 258/282] Update zh-CN.js Update DingDing and AliyunSms setting dialogs for better translations and document links --- src/components/notifications/AliyunSms.vue | 4 ++-- src/components/notifications/DingDing.vue | 4 ++-- src/languages/zh-CN.js | 9 +++++++++ 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/components/notifications/AliyunSms.vue b/src/components/notifications/AliyunSms.vue index 2c25a3a9..422b7006 100644 --- a/src/components/notifications/AliyunSms.vue +++ b/src/components/notifications/AliyunSms.vue @@ -6,7 +6,7 @@ <label for="secretAccessKey" class="form-label">{{ $t("SecretAccessKey") }}<span style="color: red;"><sup>*</sup></span></label> <input id="secretAccessKey" v-model="$parent.notification.secretAccessKey" type="text" class="form-control" required> - <label for="phonenumber" class="form-label">{{ $t("Phonenumber") }}<span style="color: red;"><sup>*</sup></span></label> + <label for="phonenumber" class="form-label">{{ $t("PhoneNumbers") }}<span style="color: red;"><sup>*</sup></span></label> <input id="phonenumber" v-model="$parent.notification.phonenumber" type="text" class="form-control" required> <label for="templateCode" class="form-label">{{ $t("TemplateCode") }}<span style="color: red;"><sup>*</sup></span></label> @@ -16,7 +16,7 @@ <input id="signName" v-model="$parent.notification.signName" type="text" class="form-control" required> <div class="form-text"> - <p>Sms template must contain parameters: <br> <code>${name} ${time} ${status} ${msg}</code></p> + <p>{{ $t("Sms template must contain parameters: ") }}<br> <code>${name} ${time} ${status} ${msg}</code></p> <i18n-t tag="p" keypath="Read more:"> <a href="https://help.aliyun.com/document_detail/101414.html" target="_blank">https://help.aliyun.com/document_detail/101414.html</a> </i18n-t> diff --git a/src/components/notifications/DingDing.vue b/src/components/notifications/DingDing.vue index 713859ac..79d8d837 100644 --- a/src/components/notifications/DingDing.vue +++ b/src/components/notifications/DingDing.vue @@ -7,9 +7,9 @@ <input id="secretKey" v-model="$parent.notification.secretKey" type="text" class="form-control" required> <div class="form-text"> - <p>For safety, must use secret key</p> + <p>{{ $t("For safety, must use secret key") }}</p> <i18n-t tag="p" keypath="Read more:"> - <a href="https://developers.dingtalk.com/document/robots/custom-robot-access" target="_blank">https://developers.dingtalk.com/document/robots/custom-robot-access</a> + <a href="https://developers.dingtalk.com/document/robots/custom-robot-access" target="_blank">https://developers.dingtalk.com/document/robots/custom-robot-access</a> <a href="https://open.dingtalk.com/document/robots/customize-robot-security-settings#title-7fs-kgs-36x" target="_blank">https://open.dingtalk.com/document/robots/customize-robot-security-settings#title-7fs-kgs-36x</a> </i18n-t> </div> </div> diff --git a/src/languages/zh-CN.js b/src/languages/zh-CN.js index 7cb4f1a4..bb4d997b 100644 --- a/src/languages/zh-CN.js +++ b/src/languages/zh-CN.js @@ -364,4 +364,13 @@ export default { smtpDkimHashAlgo: "哈希算法(可选)", smtpDkimheaderFieldNames: "明确包含在哈希计算对象内的 Header 列表(可选)", smtpDkimskipFields: "不包含在哈希计算对象内的 Header 列表(可选)", + Feishu: "飞书", + AliyunSMS: "阿里云短信服务", + "Sms template must contain parameters: ": "短信模板必须包含以下变量:", + DingDing: "钉钉自定义机器人", + WebHookUrl: "钉钉自定义机器人 Webhook 地址", + SecretKey: "钉钉自定义机器人加签密钥", + "For safety, must use secret key": "出于安全考虑,必须使用加签密钥", + WeCom: "企业微信群机器人", + "WeCom Bot Key": "企业微信群机器人 key", }; From 258d93be72233992966e1e39e9cdbd0f47dc2116 Mon Sep 17 00:00:00 2001 From: Ananth Kamath <ananth.atg@gmail.com> Date: Sun, 13 Feb 2022 18:48:05 +0530 Subject: [PATCH 259/282] Fix mattermost couldn't find channel issue --- server/notification-providers/mattermost.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/notification-providers/mattermost.js b/server/notification-providers/mattermost.js index d776284b..c2ffc23b 100644 --- a/server/notification-providers/mattermost.js +++ b/server/notification-providers/mattermost.js @@ -20,7 +20,7 @@ class Mattermost extends NotificationProvider { return okMsg; } - const mattermostChannel = notification.mattermostchannel; + const mattermostChannel = notification.mattermostchannel.toLowerCase(); const mattermostIconEmoji = notification.mattermosticonemo; const mattermostIconUrl = notification.mattermosticonurl; From a997f8e4f9d3bfdd6fcbd471e123da4b9e2e8a6c Mon Sep 17 00:00:00 2001 From: Mik Mueller <83001409+MikMuellerDev@users.noreply.github.com> Date: Tue, 15 Feb 2022 12:58:02 +0100 Subject: [PATCH 260/282] Update de-DE.js --- src/languages/de-DE.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/languages/de-DE.js b/src/languages/de-DE.js index 9de0dbcc..c78a649a 100644 --- a/src/languages/de-DE.js +++ b/src/languages/de-DE.js @@ -162,7 +162,7 @@ export default { Purple: "Lila", Pink: "Pink", "Search...": "Suchen...", - "Heartbeat Retry Interval": "Intervall der Statusabfrage", + "Heartbeat Retry Interval": "Überprüfungsintervall", retryCheckEverySecond: "Alle {0} Sekunden neu versuchen", "Import Backup": "Backup importieren", "Export Backup": "Backup exportieren", From 7638b736458e5d89779413ff12f0c16613532221 Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Tue, 15 Feb 2022 23:30:07 +0800 Subject: [PATCH 261/282] Fix #1300 --- src/components/notifications/Telegram.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/notifications/Telegram.vue b/src/components/notifications/Telegram.vue index d263f636..20deff7b 100644 --- a/src/components/notifications/Telegram.vue +++ b/src/components/notifications/Telegram.vue @@ -63,9 +63,9 @@ export default { let update = res.data.result[res.data.result.length - 1]; if (update.channel_post) { - this.notification.telegramChatID = update.channel_post.chat.id; + this.$parent.notification.telegramChatID = update.channel_post.chat.id; } else if (update.message) { - this.notification.telegramChatID = update.message.chat.id; + this.$parent.notification.telegramChatID = update.message.chat.id; } else { throw new Error(this.$t("chatIDNotFound")); } From 211b44269ce8d04f0c5131f13cf21691ff2a37c6 Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Mon, 21 Feb 2022 11:48:03 +0800 Subject: [PATCH 262/282] Do not close feature-request --- .github/workflows/stale-bot.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/stale-bot.yml b/.github/workflows/stale-bot.yml index 5dc50136..e4faaa5f 100644 --- a/.github/workflows/stale-bot.yml +++ b/.github/workflows/stale-bot.yml @@ -15,8 +15,8 @@ jobs: close-issue-message: 'This issue was closed because it has been stalled for 7 days with no activity.' close-pr-message: 'This PR was closed because it has been stalled for 7 days with no activity.' days-before-stale: 180 - days-before-close: 7 + days-before-close: 0 exempt-issue-labels: 'News,Medium,High,discussion,bug,doc,' - exempt-pr-labels: 'awaiting-approval,work-in-progress,enhancement,' + exempt-pr-labels: 'awaiting-approval,work-in-progress,enhancement,feature-request' exempt-issue-assignees: 'louislam' exempt-pr-assignees: 'louislam' From f3112c0b8563115d73249fc1efd03852b720b06e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bal=C3=A1zs=20Csaba?= <csaba@balazs-magyar.hu> Date: Wed, 23 Feb 2022 09:35:56 +0100 Subject: [PATCH 263/282] fix: hu lang --- src/languages/hu.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/languages/hu.js b/src/languages/hu.js index adcfce28..54d5d663 100644 --- a/src/languages/hu.js +++ b/src/languages/hu.js @@ -350,4 +350,15 @@ export default { serwersmsAPIPassword: "API jelszó", serwersmsPhoneNumber: "Telefonszám", serwersmsSenderName: "SMS feladó neve (regisztrált név az oldalon)", + GoogleChat: "Google Chat (csak Google Workspace)", + stackfield: "Stackfield", + smtpDkimSettings: "DKIM beállítások", + smtpDkimDesc: "Nézze meg a Nodemailer DKIM {0} használati szabályokat.", + documentation: "dokumentáció", + smtpDkimDomain: "Domain név", + smtpDkimKeySelector: "Kulcs választó", + smtpDkimPrivateKey: "Privát kulcs", + smtpDkimHashAlgo: "Hash algoritmus (nem kötelező)", + smtpDkimheaderFieldNames: "Fejléc kulcsok a bejelentkezéshez (nem kötelező)", + smtpDkimskipFields: "Fejléc kulcsok egyéb esetben (nem kötelező)", }; From 595cd9322080b209d9a7925463c850cae29d2c33 Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Thu, 24 Feb 2022 15:11:17 +0800 Subject: [PATCH 264/282] Check invalid interval --- server/model/monitor.js | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/server/model/monitor.js b/server/model/monitor.js index c4441d63..b4a80598 100644 --- a/server/model/monitor.js +++ b/server/model/monitor.js @@ -119,6 +119,19 @@ class Monitor extends BeanModel { const beat = async () => { + let beatInterval = this.interval; + + if (! beatInterval) { + beatInterval = 1; + } + + if (demoMode) { + if (beatInterval < 20) { + console.log("beat interval too low, reset to 20s"); + beatInterval = 20; + } + } + // Expose here for prometheus update // undefined if not https let tlsInfo = undefined; @@ -303,7 +316,7 @@ class Monitor extends BeanModel { } else { // No need to insert successful heartbeat for push type, so end here retries = 0; - this.heartbeatInterval = setTimeout(beat, this.interval * 1000); + this.heartbeatInterval = setTimeout(beat, beatInterval * 1000); return; } @@ -377,8 +390,6 @@ class Monitor extends BeanModel { } } - let beatInterval = this.interval; - debug(`[${this.name}] Check isImportant`); let isImportant = Monitor.isImportantBeat(isFirstBeat, previousBeat?.status, bean.status); @@ -422,14 +433,6 @@ class Monitor extends BeanModel { previousBeat = bean; if (! this.isStop) { - - if (demoMode) { - if (beatInterval < 20) { - console.log("beat interval too low, reset to 20s"); - beatInterval = 20; - } - } - debug(`[${this.name}] SetTimeout for next check.`); this.heartbeatInterval = setTimeout(safeBeat, beatInterval * 1000); } else { From 3a5b413af423305c0cccf1574277c48b87b11d16 Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Sat, 26 Feb 2022 14:36:38 +0800 Subject: [PATCH 265/282] Update axios to 0.26.0 due to vulnerability --- package-lock.json | 54 ++++++++++++++++++++++++++++++++--------------- package.json | 2 +- 2 files changed, 38 insertions(+), 18 deletions(-) diff --git a/package-lock.json b/package-lock.json index f533145f..eefd9d5a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "uptime-kuma", - "version": "1.11.3", + "version": "1.11.4", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "uptime-kuma", - "version": "1.11.3", + "version": "1.11.4", "license": "MIT", "dependencies": { "@fortawesome/fontawesome-svg-core": "~1.2.36", @@ -16,7 +16,7 @@ "@louislam/sqlite3": "~6.0.1", "@popperjs/core": "~2.10.2", "args-parser": "~1.3.0", - "axios": "~0.21.4", + "axios": "~0.26.0", "bcryptjs": "~2.4.3", "bootstrap": "5.1.3", "bree": "~7.1.0", @@ -3662,11 +3662,11 @@ "integrity": "sha512-t7Zm5YGgEEc/3eYAicF32m/TNvL+XOeYZy9CvBUeJY/szM7frLolFylhrlZNWV/ohWhcUXygrBGjYmoQdxF4CQ==" }, "node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.0.tgz", + "integrity": "sha512-lKoGLMYtHvFrPVt3r+RBMp9nh34N0M8zEfCWqdWZx6phynIEhQqAdydpyBAAG211zlhX9Rgu08cOamy6XjE5Og==", "dependencies": { - "follow-redirects": "^1.14.0" + "follow-redirects": "^1.14.8" } }, "node_modules/babel-jest": { @@ -6353,9 +6353,9 @@ "dev": true }, "node_modules/follow-redirects": { - "version": "1.14.7", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz", - "integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==", + "version": "1.14.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", + "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==", "funding": [ { "type": "individual", @@ -13325,6 +13325,15 @@ "node": ">=10.0.0" } }, + "node_modules/wait-on/node_modules/axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.14.0" + } + }, "node_modules/walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", @@ -16353,11 +16362,11 @@ "integrity": "sha512-t7Zm5YGgEEc/3eYAicF32m/TNvL+XOeYZy9CvBUeJY/szM7frLolFylhrlZNWV/ohWhcUXygrBGjYmoQdxF4CQ==" }, "axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.0.tgz", + "integrity": "sha512-lKoGLMYtHvFrPVt3r+RBMp9nh34N0M8zEfCWqdWZx6phynIEhQqAdydpyBAAG211zlhX9Rgu08cOamy6XjE5Og==", "requires": { - "follow-redirects": "^1.14.0" + "follow-redirects": "^1.14.8" } }, "babel-jest": { @@ -18403,9 +18412,9 @@ "dev": true }, "follow-redirects": { - "version": "1.14.7", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz", - "integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==" + "version": "1.14.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", + "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==" }, "for-in": { "version": "1.0.2", @@ -23669,6 +23678,17 @@ "lodash": "^4.17.21", "minimist": "^1.2.5", "rxjs": "^7.1.0" + }, + "dependencies": { + "axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "dev": true, + "requires": { + "follow-redirects": "^1.14.0" + } + } } }, "walker": { diff --git a/package.json b/package.json index dc3dedca..5406d548 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ "@louislam/sqlite3": "~6.0.1", "@popperjs/core": "~2.10.2", "args-parser": "~1.3.0", - "axios": "~0.21.4", + "axios": "~0.26.0", "bcryptjs": "~2.4.3", "bootstrap": "5.1.3", "bree": "~7.1.0", From a6fd626fb89b6fe8aa8c3bc2e614d26bf5be6e28 Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Sat, 26 Feb 2022 14:56:57 +0800 Subject: [PATCH 266/282] Locked Russian language, ask Putin to stop the war and unlock it --- src/languages/ru-RU.js | 661 ++++++++++++++++++++--------------------- 1 file changed, 330 insertions(+), 331 deletions(-) diff --git a/src/languages/ru-RU.js b/src/languages/ru-RU.js index 69de6383..72b6f1fe 100644 --- a/src/languages/ru-RU.js +++ b/src/languages/ru-RU.js @@ -1,333 +1,332 @@ export default { - languageName: "Русский", - checkEverySecond: "Проверка каждые {0} секунд", - retriesDescription: "Максимальное количество попыток перед пометкой сервиса как недоступного и отправкой уведомления", - ignoreTLSError: "Игнорировать ошибку TLS/SSL для HTTPS сайтов", - upsideDownModeDescription: "Реверс статуса сервиса. Если сервис доступен, то он помечается как НЕДОСТУПНЫЙ.", - maxRedirectDescription: "Максимальное количество перенаправлений. Поставьте 0, чтобы отключить перенаправления.", - acceptedStatusCodesDescription: "Выберите коды статусов для определения доступности сервиса.", - passwordNotMatchMsg: "Повтор пароля не совпадает.", - notificationDescription: "Привяжите уведомления к мониторам.", - keywordDescription: "Поиск слова в чистом HTML или в JSON-ответе (чувствительно к регистру)", - pauseDashboardHome: "Пауза", - deleteMonitorMsg: "Вы действительно хотите удалить данный монитор?", - deleteNotificationMsg: "Вы действительно хотите удалить это уведомление для всех мониторов?", - resoverserverDescription: "Cloudflare является сервером по умолчанию. Вы всегда можете сменить данный сервер.", - rrtypeDescription: "Выберите тип ресурсной записи, который вы хотите отслеживать", - pauseMonitorMsg: "Вы действительно хотите поставить на паузу?", - Settings: "Настройки", - Dashboard: "Панель мониторов", - "New Update": "Обновление", - Language: "Язык", - Appearance: "Внешний вид", - Theme: "Тема", - General: "Общее", - Version: "Версия", - "Check Update On GitHub": "Проверить обновления на GitHub", - List: "Список", - Add: "Добавить", - "Add New Monitor": "Новый монитор", - "Quick Stats": "Статистика", - Up: "Доступен", - Down: "Недоступен", - Pending: "Ожидание", - Unknown: "Неизвестно", - Pause: "Пауза", - Name: "Имя", - Status: "Статус", - DateTime: "Дата и время", - Message: "Сообщение", - "No important events": "Важных событий нет", - Resume: "Возобновить", - Edit: "Изменить", - Delete: "Удалить", - Current: "Текущий", - Uptime: "Аптайм", - "Cert Exp.": "Сертификат истекает", - days: "дней", - day: "день", - "-day": " дней", - hour: "час", - "-hour": " часа", - Response: "Ответ", - Ping: "Пинг", - "Monitor Type": "Тип монитора", - Keyword: "Слово", - "Friendly Name": "Имя", - URL: "URL", - Hostname: "Имя хоста", - Port: "Порт", - "Heartbeat Interval": "Частота опроса", - Retries: "Попыток", - Advanced: "Дополнительно", - "Upside Down Mode": "Режим реверса статуса", - "Max. Redirects": "Макс. количество перенаправлений", - "Accepted Status Codes": "Допустимые коды статуса", - Save: "Сохранить", - Notifications: "Уведомления", - "Not available, please setup.": "Доступных уведомлений нет, необходимо создать.", - "Setup Notification": "Создать уведомление", - Light: "Светлая", - Dark: "Тёмная", - Auto: "Авто", - "Theme - Heartbeat Bar": "Тема - Полоса частоты опроса", - Normal: "Обычный", - Bottom: "Снизу", - None: "Отсутствует", - Timezone: "Часовой пояс", - "Search Engine Visibility": "Видимость поисковым движком", - "Allow indexing": "Разрешить индексирование", - "Discourage search engines from indexing site": "Не позволять индексировать сайт", - "Change Password": "Сменить пароль", - "Current Password": "Текущий пароль", - "New Password": "Новый пароль", - "Repeat New Password": "Повтор нового пароля", - "Update Password": "Обновить пароль", - "Disable Auth": "Отключить авторизацию", - "Enable Auth": "Включить авторизацию", - Logout: "Выйти", - Leave: "Отмена", - "I understand, please disable": "Я понимаю, всё равно отключить", - Confirm: "Подтвердить", - Yes: "Да", - No: "Нет", - Username: "Логин", - Password: "Пароль", - "Remember me": "Запомнить меня", - Login: "Вход в систему", - "No Monitors, please": "Мониторов нет, пожалуйста", - "add one": "создайте новый", - "Notification Type": "Тип уведомления", - Email: "Почта", - Test: "Проверка", - "Certificate Info": "Информация о сертификате", - "Resolver Server": "DNS сервер", - "Resource Record Type": "Тип ресурсной записи", - "Last Result": "Последний результат", - "Create your admin account": "Создайте аккаунт администратора", - "Repeat Password": "Повторите пароль", - respTime: "Время ответа (мс)", - notAvailableShort: "Н/Д", - Create: "Создать", - clearEventsMsg: "Вы действительно хотите удалить всю статистику событий данного монитора?", - clearHeartbeatsMsg: "Вы действительно хотите удалить всю статистику опросов данного монитора?", - confirmClearStatisticsMsg: "Вы действительно хотите удалить ВСЮ статистику?", - "Clear Data": "Удалить статистику", - Events: "События", - Heartbeats: "Опросы", - "Auto Get": "Авто-получение", - enableDefaultNotificationDescription: "Для каждого нового монитора это уведомление будет включено по умолчанию. Вы всё ещё можете отключить уведомления в каждом мониторе отдельно.", - "Default enabled": "Использовать по умолчанию", - "Also apply to existing monitors": "Применить к существующим мониторам", - Export: "Резервная копия", - Import: "Восстановление", - backupDescription: "Вы можете сохранить резервную копию всех мониторов и уведомлений в виде JSON-файла", - backupDescription2: "P.S. История и события сохранены не будут", - backupDescription3: "Важные данные, такие как токены уведомлений, добавляются при экспорте, поэтому храните файлы в безопасном месте", - alertNoFile: "Выберите файл для импорта.", - alertWrongFileType: "Выберите JSON-файл.", - twoFAVerifyLabel: "Пожалуйста, введите свой токен, чтобы проверить работу 2FA", - tokenValidSettingsMsg: "Токен действителен! Теперь вы можете сохранить настройки 2FA.", - confirmEnableTwoFAMsg: "Вы действительно хотите включить 2FA?", - confirmDisableTwoFAMsg: "Вы действительно хотите выключить 2FA?", - "Apply on all existing monitors": "Применить ко всем существующим мониторам", - "Verify Token": "Проверить токен", - "Setup 2FA": "Настройка 2FA", - "Enable 2FA": "Включить 2FA", - "Disable 2FA": "Выключить 2FA", - "2FA Settings": "Настройки 2FA", - "Two Factor Authentication": "Двухфакторная аутентификация", - Active: "Активно", - Inactive: "Неактивно", - Token: "Токен", - "Show URI": "Показать URI", - "Clear all statistics": "Удалить всю статистику", - retryCheckEverySecond: "Повтор каждые {0} секунд", - 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)": "значение (опционально)", - Gray: "Серый", - Red: "Красный", - Orange: "Оранжевый", - Green: "Зелёный", - Blue: "Синий", - Indigo: "Индиго", - Purple: "Пурпурный", - Pink: "Розовый", - "Search...": "Поиск...", - "Avg. Ping": "Среднее значение пинга", - "Avg. Response": "Среднее время ответа", - "Entry Page": "Главная страница", - statusPageNothing: "Здесь пусто. Добавьте группу или монитор.", - "No Services": "Нет сервисов", - "All Systems Operational": "Все сервисы работают", - "Partially Degraded Service": "Сервисы частично не работают", - "Degraded Service": "Все сервисы не работают", - "Add Group": "Добавить группу", - "Add a monitor": "Добавить монитор", - "Edit Status Page": "Редактировать", - "Go to Dashboard": "Панель мониторов", - "Status Page": "Статус сервисов", - Discard: "Отмена", - "Create Incident": "Создать инцидент", - "Switch to Dark Theme": "Тёмная тема", - "Switch to Light Theme": "Светлая тема", - telegram: "Telegram", - webhook: "Вебхук", - smtp: "Email (SMTP)", - discord: "Discord", - teams: "Microsoft Teams", - signal: "Signal", - gotify: "Gotify", - slack: "Slack", - "rocket.chat": "Rocket.chat", - pushover: "Pushover", - pushy: "Pushy", - octopush: "Octopush", - promosms: "PromoSMS", - lunasea: "LunaSea", - apprise: "Apprise (Поддержка 50+ сервисов уведомлений)", - pushbullet: "Pushbullet", - line: "Line Messenger", - mattermost: "Mattermost", - "Primary Base URL": "Основной URL", - "Push URL": "URL пуша", - needPushEvery: "К этому URL необходимо обращаться каждые {0} секунд", - pushOptionalParams: "Опциональные параметры: {0}", - defaultNotificationName: "Моё уведомление {notification} ({number})", - here: "здесь", - Required: "Требуется", - "Bot Token": "Токен бота", - wayToGetTelegramToken: "Вы можете взять токен здесь - {0}.", - "Chat ID": "ID чата", - supportTelegramChatID: "Поддерживаются ID чатов, групп и каналов", - wayToGetTelegramChatID: "Вы можете взять ID вашего чата, отправив сообщение боту и перейдя по этому URL для просмотра chat_id:", - "YOUR BOT TOKEN HERE": "ВАШ ТОКЕН БОТА ЗДЕСЬ", - chatIDNotFound: "ID чата не найден; пожалуйста отправьте сначала сообщение боту", - "Post URL": "Post URL", - "Content Type": "Тип контента", - webhookJsonDesc: "{0} подходит для любых современных HTTP-серверов, например Express.js", - webhookFormDataDesc: "{multipart} подходит для PHP. JSON-вывод необходимо будет обработать с помощью {decodeFunction}", - secureOptionNone: "Нет / STARTTLS (25, 587)", - secureOptionTLS: "TLS (465)", - "Ignore TLS Error": "Игнорировать ошибки TLS", - "From Email": "От кого", - emailCustomSubject: "Своя тема", - "To Email": "Кому", - smtpCC: "Копия", - smtpBCC: "Скрытая копия", - "Discord Webhook URL": "Discord вебхук URL", - wayToGetDiscordURL: "Вы можете создать его в Параметрах сервера -> Интеграции -> Создать вебхук", - "Bot Display Name": "Отображаемое имя бота", - "Prefix Custom Message": "Свой префикс сообщения", - "Hello @everyone is...": "Привет {'@'}everyone это...", - "Webhook URL": "URL вебхука", - wayToGetTeamsURL: "Как создать URL вебхука вы можете узнать здесь - {0}.", - Number: "Номер", - Recipients: "Получатели", - needSignalAPI: "Вам необходим клиент Signal с поддержкой REST API.", - wayToCheckSignalURL: "Пройдите по этому URL, чтобы узнать как настроить такой клиент:", - signalImportant: "ВАЖНО: Нельзя смешивать в Получателях группы и номера!", - "Application Token": "Токен приложения", - "Server URL": "URL сервера", - Priority: "Приоритет", - "Icon Emoji": "Иконка Emoji", - "Channel Name": "Имя канала", - "Uptime Kuma URL": "Uptime Kuma URL", - aboutWebhooks: "Больше информации о вебхуках: {0}", - aboutChannelName: "Введите имя канала в поле {0} Имя канала, если вы хотите обойти канал вебхука. Например: #other-channel", - aboutKumaURL: "Если поле Uptime Kuma URL в настройках останется пустым, по умолчанию будет использоваться ссылка на проект на GitHub.", - emojiCheatSheet: "Шпаргалка по Emoji: {0}", - "User Key": "Ключ пользователя", - Device: "Устройство", - "Message Title": "Заголовок сообщения", - "Notification Sound": "Звук уведомления", - "More info on:": "Больше информации: {0}", - pushoverDesc1: "Экстренный приоритет (2) имеет таймаут повтора по умолчанию 30 секунд и истекает через 1 час.", - pushoverDesc2: "Если вы хотите отправлять уведомления различным устройствам, необходимо заполнить поле Устройство.", - "SMS Type": "Тип SMS", - octopushTypePremium: "Премиум (Быстрый - рекомендуется для алертов)", - octopushTypeLowCost: "Дешёвый (Медленный - иногда блокируется операторами)", - checkPrice: "Тарифы {0}:", - octopushLegacyHint: "Вы используете старую версию Octopush (2011-2020) или новую?", - "Check octopush prices": "Тарифы Octopush {0}.", - octopushPhoneNumber: "Номер телефона (межд. формат, например: +79831234567) ", - octopushSMSSender: "Имя отправителя SMS: 3-11 символов алвафита, цифр и пробелов (a-zA-Z0-9)", - "LunaSea Device ID": "ID устройства LunaSea", - "Apprise URL": "Apprise URL", - "Example:": "Пример: {0}", - "Read more:": "Подробнее: {0}", - "Status:": "Статус: {0}", - "Read more": "Подробнее", - appriseInstalled: "Apprise установлен.", - appriseNotInstalled: "Apprise не установлен. {0}", - "Access Token": "Токен доступа", - "Channel access token": "Токен доступа канала", - "Line Developers Console": "Консоль разработчиков Line", - lineDevConsoleTo: "Консоль разработчиков Line - {0}", - "Basic Settings": "Базовые настройки", - "User ID": "ID пользователя", - "Messaging API": "API сообщений", - wayToGetLineChannelToken: "Сначала зайдите в {0}, создайте провайдера и канал (API сообщений), затем вы сможете получить токен доступа канала и ID пользователя из вышеупомянутых пунктов меню.", - "Icon URL": "URL иконки", - aboutIconURL: "Вы можете предоставить ссылку на иконку в поле \"URL иконки\" чтобы переопределить картинку профиля по умолчанию. Не используется, если задана иконка Emoji.", - aboutMattermostChannelName: "Вы можете переопределить канал по умолчанию, в который вебхук пишет, введя имя канала в поле \"Имя канала\". Это необходимо включить в настройках вебхука Mattermost. Например: #other-channel", - matrix: "Matrix", - promosmsTypeEco: "SMS ECO - дёшево и медленно, часто перегружен. Только для получателей из Польши.", - promosmsTypeFlash: "SMS FLASH - сообщения автоматически появятся на устройстве получателя. Только для получателей из Польши.", - promosmsTypeFull: "SMS FULL - премиум-уровень SMS, можно использовать своё имя отправителя (предварительно зарегистрировав его). Надёжно для алертов.", - promosmsTypeSpeed: "SMS SPEED - наивысший приоритет в системе. Очень быстро и надёжно, но очень дорого (в два раза дороже, чем SMS FULL).", - promosmsPhoneNumber: "Номер телефона (для получателей из Польши можно пропустить код региона)", - promosmsSMSSender: "Имя отправителя SMS: Зарегистрированное или одно из имён по умолчанию: InfoSMS, SMS Info, MaxSMS, INFO, SMS", - "Feishu WebHookUrl": "Feishu WebHookURL", - matrixHomeserverURL: "URL сервера (вместе с http(s):// и опционально порт)", - "Internal Room Id": "Внутренний ID комнаты", - matrixDesc1: "Внутренний ID комнаты можно найти в Подробностях в параметрах канала вашего Matrix клиента. Он должен выглядеть примерно как !QMdRCpUIfLwsfjxye6:home.server.", - matrixDesc2: "Рекомендуется создать нового пользователя и не использовать токен доступа личного пользователя Matrix, т.к. это влечёт за собой полный доступ к аккаунту и к комнатам, в которых вы состоите. Вместо этого создайте нового пользователя и пригласите его только в ту комнату, в которой вы хотите получать уведомления. Токен доступа можно получить, выполнив команду {0}", - Method: "Метод", - Body: "Тело", - Headers: "Заголовки", - PushUrl: "URL пуша", - HeadersInvalidFormat: "Заголовки запроса некорректны JSON: ", - BodyInvalidFormat: "Тело запроса некорректно JSON: ", - "Monitor History": "История мониторов", - clearDataOlderThan: "Сохранять историю мониторов в течение {0} дней.", - PasswordsDoNotMatch: "Пароли не совпадают.", - records: "записей", - "One record": "Одна запись", - steamApiKeyDescription: "Для мониторинга игрового сервера Steam вам необходим Web-API ключ Steam. Зарегистрировать его можно здесь: ", - "Certificate Chain:": "Цепочка сертификатов:", - "Valid": "Действительный", - "Hide Tags": "Скрыть тэги", - "Title:": "Название инцидента:", - "Content:": "Содержание инцидента:", - "Post": "Опубликовать", - "Cancel": "Отмена", - "Created:": "Создано:", - "Show Tags": "Показать тэги", - "Recent": "Текущее", - "3h": "3 часа", - "6h": "6 часов", - "24h": "24 часа", - "1w": "1 неделя", - "No monitors available.": "Нет доступных мониторов", - "Add one": "Добавить новый", - "Backup": "Резервная копия", - "Security": "Безопасность", - "Current User:": "Текущий пользователь:", - "All Systems Operational": "Все системы работают", - "About": "О программе", - "Description:": "Описание:", + languageName: "Русский (LOCKED, ask Putin to unlock)", + checkEverySecond: "Ask Putin to unlock", + retriesDescription: "Ask Putin to unlock", + ignoreTLSError: "Ask Putin to unlock", + upsideDownModeDescription: "Ask Putin to unlock", + maxRedirectDescription: "Ask Putin to unlock", + acceptedStatusCodesDescription: "Ask Putin to unlock", + passwordNotMatchMsg: "Ask Putin to unlock", + notificationDescription: "Ask Putin to unlock", + keywordDescription: "Ask Putin to unlock", + pauseDashboardHome: "Ask Putin to unlock", + deleteMonitorMsg: "Ask Putin to unlock", + deleteNotificationMsg: "Ask Putin to unlock", + resoverserverDescription: "Ask Putin to unlock", + rrtypeDescription: "Ask Putin to unlock", + pauseMonitorMsg: "Ask Putin to unlock", + Settings: "Ask Putin to unlock", + Dashboard: "Ask Putin to unlock", + "New Update": "Ask Putin to unlock", + Language: "Ask Putin to unlock", + Appearance: "Ask Putin to unlock", + Theme: "Ask Putin to unlock", + General: "Ask Putin to unlock", + Version: "Ask Putin to unlock", + "Check Update On GitHub": "Ask Putin to unlock", + List: "Ask Putin to unlock", + Add: "Ask Putin to unlock", + "Add New Monitor": "Ask Putin to unlock", + "Quick Stats": "Ask Putin to unlock", + Up: "Ask Putin to unlock", + Down: "Ask Putin to unlock", + Pending: "Ask Putin to unlock", + Unknown: "Ask Putin to unlock", + Pause: "Ask Putin to unlock", + Name: "Ask Putin to unlock", + Status: "Ask Putin to unlock", + DateTime: "Ask Putin to unlock", + Message: "Ask Putin to unlock", + "No important events": "Ask Putin to unlock", + Resume: "Ask Putin to unlock", + Edit: "Ask Putin to unlock", + Delete: "Ask Putin to unlock", + Current: "Ask Putin to unlock", + Uptime: "Ask Putin to unlock", + "Cert Exp.": "Ask Putin to unlock", + days: "Ask Putin to unlock", + day: "Ask Putin to unlock", + "-day": "Ask Putin to unlock", + hour: "Ask Putin to unlock", + "-hour": "Ask Putin to unlock", + Response: "Ask Putin to unlock", + Ping: "Ask Putin to unlock", + "Monitor Type": "Ask Putin to unlock", + Keyword: "Ask Putin to unlock", + "Friendly Name": "Ask Putin to unlock", + URL: "Ask Putin to unlock", + Hostname: "Ask Putin to unlock", + Port: "Ask Putin to unlock", + "Heartbeat Interval": "Ask Putin to unlock", + Retries: "Ask Putin to unlock", + Advanced: "Ask Putin to unlock", + "Upside Down Mode": "Ask Putin to unlock", + "Max. Redirects": "Ask Putin to unlock", + "Accepted Status Codes": "Ask Putin to unlock", + Save: "Ask Putin to unlock", + Notifications: "Ask Putin to unlock", + "Not available, please setup.": "Ask Putin to unlock", + "Setup Notification": "Ask Putin to unlock", + Light: "Ask Putin to unlock", + Dark: "Ask Putin to unlock", + Auto: "Ask Putin to unlock", + "Theme - Heartbeat Bar": "Ask Putin to unlock", + Normal: "Ask Putin to unlock", + Bottom: "Ask Putin to unlock", + None: "Ask Putin to unlock", + Timezone: "Ask Putin to unlock", + "Search Engine Visibility": "Ask Putin to unlock", + "Allow indexing": "Ask Putin to unlock", + "Discourage search engines from indexing site": "Ask Putin to unlock", + "Change Password": "Ask Putin to unlock", + "Current Password": "Ask Putin to unlock", + "New Password": "Ask Putin to unlock", + "Repeat New Password": "Ask Putin to unlock", + "Update Password": "Ask Putin to unlock", + "Disable Auth": "Ask Putin to unlock", + "Enable Auth": "Ask Putin to unlock", + Logout: "Ask Putin to unlock", + Leave: "Ask Putin to unlock", + "I understand, please disable": "Ask Putin to unlock", + Confirm: "Ask Putin to unlock", + Yes: "Ask Putin to unlock", + No: "Ask Putin to unlock", + Username: "Ask Putin to unlock", + Password: "Ask Putin to unlock", + "Remember me": "Ask Putin to unlock", + Login: "Ask Putin to unlock", + "No Monitors, please": "Ask Putin to unlock", + "add one": "Ask Putin to unlock", + "Notification Type": "Ask Putin to unlock", + Email: "Ask Putin to unlock", + Test: "Ask Putin to unlock", + "Certificate Info": "Ask Putin to unlock", + "Resolver Server": "Ask Putin to unlock", + "Resource Record Type": "Ask Putin to unlock", + "Last Result": "Ask Putin to unlock", + "Create your admin account": "Ask Putin to unlock", + "Repeat Password": "Ask Putin to unlock", + respTime: "Ask Putin to unlock", + notAvailableShort: "Ask Putin to unlock", + Create: "Ask Putin to unlock", + clearEventsMsg: "Ask Putin to unlock", + clearHeartbeatsMsg: "Ask Putin to unlock", + confirmClearStatisticsMsg: "Ask Putin to unlock", + "Clear Data": "Ask Putin to unlock", + Events: "Ask Putin to unlock", + Heartbeats: "Ask Putin to unlock", + "Auto Get": "Ask Putin to unlock", + enableDefaultNotificationDescription: "Ask Putin to unlock", + "Default enabled": "Ask Putin to unlock", + "Also apply to existing monitors": "Ask Putin to unlock", + Export: "Ask Putin to unlock", + Import: "Ask Putin to unlock", + backupDescription: "Ask Putin to unlock", + backupDescription2: "Ask Putin to unlock", + backupDescription3: "Ask Putin to unlock", + alertNoFile: "Ask Putin to unlock", + alertWrongFileType: "Ask Putin to unlock", + twoFAVerifyLabel: "Ask Putin to unlock", + tokenValidSettingsMsg: "Ask Putin to unlock", + confirmEnableTwoFAMsg: "Ask Putin to unlock", + confirmDisableTwoFAMsg: "Ask Putin to unlock", + "Apply on all existing monitors": "Ask Putin to unlock", + "Verify Token": "Ask Putin to unlock", + "Setup 2FA": "Ask Putin to unlock", + "Enable 2FA": "Ask Putin to unlock", + "Disable 2FA": "Ask Putin to unlock", + "2FA Settings": "Ask Putin to unlock", + "Two Factor Authentication": "Ask Putin to unlock", + Active: "Ask Putin to unlock", + Inactive: "Ask Putin to unlock", + Token: "Ask Putin to unlock", + "Show URI": "Ask Putin to unlock", + "Clear all statistics": "Ask Putin to unlock", + retryCheckEverySecond: "Ask Putin to unlock", + importHandleDescription: "Ask Putin to unlock", + confirmImportMsg: "Ask Putin to unlock", + "Heartbeat Retry Interval": "Ask Putin to unlock", + "Import Backup": "Ask Putin to unlock", + "Export Backup": "Ask Putin to unlock", + "Skip existing": "Ask Putin to unlock", + Overwrite: "Ask Putin to unlock", + Options: "Ask Putin to unlock", + "Keep both": "Ask Putin to unlock", + Tags: "Ask Putin to unlock", + "Add New below or Select...": "Ask Putin to unlock", + "Tag with this name already exist.": "Ask Putin to unlock", + "Tag with this value already exist.": "Ask Putin to unlock", + color: "Ask Putin to unlock", + "value (optional)": "Ask Putin to unlock", + Gray: "Ask Putin to unlock", + Red: "Ask Putin to unlock", + Orange: "Ask Putin to unlock", + Green: "Ask Putin to unlock", + Blue: "Ask Putin to unlock", + Indigo: "Ask Putin to unlock", + Purple: "Ask Putin to unlock", + Pink: "Ask Putin to unlock", + "Search...": "Ask Putin to unlock", + "Avg. Ping": "Ask Putin to unlock", + "Avg. Response": "Ask Putin to unlock", + "Entry Page": "Ask Putin to unlock", + statusPageNothing: "Ask Putin to unlock", + "No Services": "Ask Putin to unlock", + "All Systems Operational": "Ask Putin to unlock", + "Partially Degraded Service": "Ask Putin to unlock", + "Degraded Service": "Ask Putin to unlock", + "Add Group": "Ask Putin to unlock", + "Add a monitor": "Ask Putin to unlock", + "Edit Status Page": "Ask Putin to unlock", + "Go to Dashboard": "Ask Putin to unlock", + "Status Page": "Ask Putin to unlock", + Discard: "Ask Putin to unlock", + "Create Incident": "Ask Putin to unlock", + "Switch to Dark Theme": "Ask Putin to unlock", + "Switch to Light Theme": "Ask Putin to unlock", + telegram: "Ask Putin to unlock", + webhook: "Ask Putin to unlock", + smtp: "Ask Putin to unlock", + discord: "Ask Putin to unlock", + teams: "Ask Putin to unlock", + signal: "Ask Putin to unlock", + gotify: "Ask Putin to unlock", + slack: "Ask Putin to unlock", + "rocket.chat": "Ask Putin to unlock", + pushover: "Ask Putin to unlock", + pushy: "Ask Putin to unlock", + octopush: "Ask Putin to unlock", + promosms: "Ask Putin to unlock", + lunasea: "Ask Putin to unlock", + apprise: "Ask Putin to unlock", + pushbullet: "Ask Putin to unlock", + line: "Ask Putin to unlock", + mattermost: "Ask Putin to unlock", + "Primary Base URL": "Ask Putin to unlock", + "Push URL": "Ask Putin to unlock", + needPushEvery: "Ask Putin to unlock", + pushOptionalParams: "Ask Putin to unlock", + defaultNotificationName: "Ask Putin to unlock", + here: "Ask Putin to unlock", + Required: "Ask Putin to unlock", + "Bot Token": "Ask Putin to unlock", + wayToGetTelegramToken: "Ask Putin to unlock", + "Chat ID": "Ask Putin to unlock", + supportTelegramChatID: "Ask Putin to unlock", + wayToGetTelegramChatID: "Ask Putin to unlock", + "YOUR BOT TOKEN HERE": "Ask Putin to unlock", + chatIDNotFound: "Ask Putin to unlock", + "Post URL": "Ask Putin to unlock", + "Content Type": "Ask Putin to unlock", + webhookJsonDesc: "Ask Putin to unlock", + webhookFormDataDesc: "Ask Putin to unlock", + secureOptionNone: "Ask Putin to unlock", + secureOptionTLS: "Ask Putin to unlock", + "Ignore TLS Error": "Ask Putin to unlock", + "From Email": "Ask Putin to unlock", + emailCustomSubject: "Ask Putin to unlock", + "To Email": "Ask Putin to unlock", + smtpCC: "Ask Putin to unlock", + smtpBCC: "Ask Putin to unlock", + "Discord Webhook URL": "Ask Putin to unlock", + wayToGetDiscordURL: "Ask Putin to unlock", + "Bot Display Name": "Ask Putin to unlock", + "Prefix Custom Message": "Ask Putin to unlock", + "Hello @everyone is...": "Ask Putin to unlock", + "Webhook URL": "Ask Putin to unlock", + wayToGetTeamsURL: "Ask Putin to unlock", + Number: "Ask Putin to unlock", + Recipients: "Ask Putin to unlock", + needSignalAPI: "Ask Putin to unlock", + wayToCheckSignalURL: "Ask Putin to unlock", + signalImportant: "Ask Putin to unlock", + "Application Token": "Ask Putin to unlock", + "Server URL": "Ask Putin to unlock", + Priority: "Ask Putin to unlock", + "Icon Emoji": "Ask Putin to unlock", + "Channel Name": "Ask Putin to unlock", + "Uptime Kuma URL": "Ask Putin to unlock", + aboutWebhooks: "Ask Putin to unlock", + aboutChannelName: "Ask Putin to unlock", + aboutKumaURL: "Ask Putin to unlock", + emojiCheatSheet: "Ask Putin to unlock", + "User Key": "Ask Putin to unlock", + Device: "Ask Putin to unlock", + "Message Title": "Ask Putin to unlock", + "Notification Sound": "Ask Putin to unlock", + "More info on:": "Ask Putin to unlock", + pushoverDesc1: "Ask Putin to unlock", + pushoverDesc2: "Ask Putin to unlock", + "SMS Type": "Ask Putin to unlock", + octopushTypePremium: "Ask Putin to unlock", + octopushTypeLowCost: "Ask Putin to unlock", + checkPrice: "Ask Putin to unlock", + octopushLegacyHint: "Ask Putin to unlock", + "Check octopush prices": "Ask Putin to unlock", + octopushPhoneNumber: "Ask Putin to unlock", + octopushSMSSender: "Ask Putin to unlock", + "LunaSea Device ID": "Ask Putin to unlock", + "Apprise URL": "Ask Putin to unlock", + "Example:": "Ask Putin to unlock", + "Read more:": "Ask Putin to unlock", + "Status:": "Ask Putin to unlock", + "Read more": "Ask Putin to unlock", + appriseInstalled: "Ask Putin to unlock", + appriseNotInstalled: "Ask Putin to unlock", + "Access Token": "Ask Putin to unlock", + "Channel access token": "Ask Putin to unlock", + "Line Developers Console": "Ask Putin to unlock", + lineDevConsoleTo: "Ask Putin to unlock", + "Basic Settings": "Ask Putin to unlock", + "User ID": "Ask Putin to unlock", + "Messaging API": "Ask Putin to unlock", + wayToGetLineChannelToken: "Ask Putin to unlock", + "Icon URL": "Ask Putin to unlock", + aboutIconURL: "Ask Putin to unlock", + aboutMattermostChannelName: "Ask Putin to unlock", + matrix: "Ask Putin to unlock", + promosmsTypeEco: "Ask Putin to unlock", + promosmsTypeFlash: "Ask Putin to unlock", + promosmsTypeFull: "Ask Putin to unlock", + promosmsTypeSpeed: "Ask Putin to unlock", + promosmsPhoneNumber: "Ask Putin to unlock", + promosmsSMSSender: "Ask Putin to unlock", + "Feishu WebHookUrl": "Ask Putin to unlock", + matrixHomeserverURL: "Ask Putin to unlock", + "Internal Room Id": "Ask Putin to unlock", + matrixDesc1: "Ask Putin to unlock", + matrixDesc2: "Ask Putin to unlock", + Method: "Ask Putin to unlock", + Body: "Ask Putin to unlock", + Headers: "Ask Putin to unlock", + PushUrl: "Ask Putin to unlock", + HeadersInvalidFormat: "Ask Putin to unlock", + BodyInvalidFormat: "Ask Putin to unlock", + "Monitor History": "Ask Putin to unlock", + clearDataOlderThan: "Ask Putin to unlock", + PasswordsDoNotMatch: "Ask Putin to unlock", + records: "Ask Putin to unlock", + "One record": "Ask Putin to unlock", + steamApiKeyDescription: "Ask Putin to unlock", + "Certificate Chain:": "Ask Putin to unlock", + "Valid": "Ask Putin to unlock", + "Hide Tags": "Ask Putin to unlock", + "Title:": "Ask Putin to unlock", + "Content:": "Ask Putin to unlock", + "Post": "Ask Putin to unlock", + "Cancel": "Ask Putin to unlock", + "Created:": "Ask Putin to unlock", + "Show Tags": "Ask Putin to unlock", + "Recent": "Ask Putin to unlock", + "3h": "Ask Putin to unlock", + "6h": "Ask Putin to unlock", + "24h": "Ask Putin to unlock", + "1w": "Ask Putin to unlock", + "No monitors available.": "Ask Putin to unlock", + "Add one": "Ask Putin to unlock", + "Backup": "Ask Putin to unlock", + "Security": "Ask Putin to unlock", + "Current User:": "Ask Putin to unlock", + "About": "Ask Putin to unlock", + "Description:": "Ask Putin to unlock", }; From d5d63474d8c9f15e2ffe9814dfcdfdca85819ff8 Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Sat, 26 Feb 2022 15:41:32 +0800 Subject: [PATCH 267/282] update to 1.12.0 --- package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 5406d548..96373348 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "uptime-kuma", - "version": "1.11.4", + "version": "1.12.0", "license": "MIT", "repository": { "type": "git", @@ -30,13 +30,13 @@ "build-docker": "npm run build && 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.4-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.4 -t louislam/uptime-kuma:debian -t louislam/uptime-kuma:1-debian -t louislam/uptime-kuma:1.11.4-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.12.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.12.0 -t louislam/uptime-kuma:debian -t louislam/uptime-kuma:1-debian -t louislam/uptime-kuma:1.12.0-debian --target release . --push", "build-docker-nightly": "npm run build && 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.4 && npm ci --production && npm run download-dist", + "setup": "git checkout 1.12.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 3681934d0519b425dda65f075301ac49c68d5bfc Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Sat, 26 Feb 2022 15:57:26 +0800 Subject: [PATCH 268/282] Update Apprise to 0.9.7 --- docker/alpine-base.dockerfile | 2 +- docker/debian-base.dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/alpine-base.dockerfile b/docker/alpine-base.dockerfile index d162fe8f..66a02686 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==0.9.6 && \ + pip3 --no-cache-dir install apprise==0.9.7 && \ rm -rf /root/.cache diff --git a/docker/debian-base.dockerfile b/docker/debian-base.dockerfile index 83fd434b..a74ac0b2 100644 --- a/docker/debian-base.dockerfile +++ b/docker/debian-base.dockerfile @@ -8,5 +8,5 @@ WORKDIR /app 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==0.9.6 && \ + pip3 --no-cache-dir install apprise==0.9.7 && \ rm -rf /var/lib/apt/lists/* From 81a9807a0a8abc0ef49a9ffb58628963b416e22e Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Sat, 26 Feb 2022 16:03:43 +0800 Subject: [PATCH 269/282] Update release procedures --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3679bbd9..ee090fc6 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -227,7 +227,7 @@ https://github.com/louislam/uptime-kuma/issues?q=sort%3Aupdated-desc 1. `npm run build-docker` 1. `git push` 1. Publish the release note as 1.X.X -1. `npm run upload-artifacts` +1. `npm run upload-artifacts` with env vars VERSION=1.X.X;GITHUB_TOKEN=XXXX 1. SSH to demo site server and update to 1.X.X Checking: From 60f67ccb35250f4bb9598359ac8b11e5efef4358 Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Sat, 26 Feb 2022 16:57:13 +0800 Subject: [PATCH 270/282] Revert commit: a6fd626f --- src/languages/ru-RU.js | 660 ++++++++++++++++++++--------------------- 1 file changed, 330 insertions(+), 330 deletions(-) diff --git a/src/languages/ru-RU.js b/src/languages/ru-RU.js index 72b6f1fe..be301d82 100644 --- a/src/languages/ru-RU.js +++ b/src/languages/ru-RU.js @@ -1,332 +1,332 @@ export default { - languageName: "Русский (LOCKED, ask Putin to unlock)", - checkEverySecond: "Ask Putin to unlock", - retriesDescription: "Ask Putin to unlock", - ignoreTLSError: "Ask Putin to unlock", - upsideDownModeDescription: "Ask Putin to unlock", - maxRedirectDescription: "Ask Putin to unlock", - acceptedStatusCodesDescription: "Ask Putin to unlock", - passwordNotMatchMsg: "Ask Putin to unlock", - notificationDescription: "Ask Putin to unlock", - keywordDescription: "Ask Putin to unlock", - pauseDashboardHome: "Ask Putin to unlock", - deleteMonitorMsg: "Ask Putin to unlock", - deleteNotificationMsg: "Ask Putin to unlock", - resoverserverDescription: "Ask Putin to unlock", - rrtypeDescription: "Ask Putin to unlock", - pauseMonitorMsg: "Ask Putin to unlock", - Settings: "Ask Putin to unlock", - Dashboard: "Ask Putin to unlock", - "New Update": "Ask Putin to unlock", - Language: "Ask Putin to unlock", - Appearance: "Ask Putin to unlock", - Theme: "Ask Putin to unlock", - General: "Ask Putin to unlock", - Version: "Ask Putin to unlock", - "Check Update On GitHub": "Ask Putin to unlock", - List: "Ask Putin to unlock", - Add: "Ask Putin to unlock", - "Add New Monitor": "Ask Putin to unlock", - "Quick Stats": "Ask Putin to unlock", - Up: "Ask Putin to unlock", - Down: "Ask Putin to unlock", - Pending: "Ask Putin to unlock", - Unknown: "Ask Putin to unlock", - Pause: "Ask Putin to unlock", - Name: "Ask Putin to unlock", - Status: "Ask Putin to unlock", - DateTime: "Ask Putin to unlock", - Message: "Ask Putin to unlock", - "No important events": "Ask Putin to unlock", - Resume: "Ask Putin to unlock", - Edit: "Ask Putin to unlock", - Delete: "Ask Putin to unlock", - Current: "Ask Putin to unlock", - Uptime: "Ask Putin to unlock", - "Cert Exp.": "Ask Putin to unlock", - days: "Ask Putin to unlock", - day: "Ask Putin to unlock", - "-day": "Ask Putin to unlock", - hour: "Ask Putin to unlock", - "-hour": "Ask Putin to unlock", - Response: "Ask Putin to unlock", - Ping: "Ask Putin to unlock", - "Monitor Type": "Ask Putin to unlock", - Keyword: "Ask Putin to unlock", - "Friendly Name": "Ask Putin to unlock", - URL: "Ask Putin to unlock", - Hostname: "Ask Putin to unlock", - Port: "Ask Putin to unlock", - "Heartbeat Interval": "Ask Putin to unlock", - Retries: "Ask Putin to unlock", - Advanced: "Ask Putin to unlock", - "Upside Down Mode": "Ask Putin to unlock", - "Max. Redirects": "Ask Putin to unlock", - "Accepted Status Codes": "Ask Putin to unlock", - Save: "Ask Putin to unlock", - Notifications: "Ask Putin to unlock", - "Not available, please setup.": "Ask Putin to unlock", - "Setup Notification": "Ask Putin to unlock", - Light: "Ask Putin to unlock", - Dark: "Ask Putin to unlock", - Auto: "Ask Putin to unlock", - "Theme - Heartbeat Bar": "Ask Putin to unlock", - Normal: "Ask Putin to unlock", - Bottom: "Ask Putin to unlock", - None: "Ask Putin to unlock", - Timezone: "Ask Putin to unlock", - "Search Engine Visibility": "Ask Putin to unlock", - "Allow indexing": "Ask Putin to unlock", - "Discourage search engines from indexing site": "Ask Putin to unlock", - "Change Password": "Ask Putin to unlock", - "Current Password": "Ask Putin to unlock", - "New Password": "Ask Putin to unlock", - "Repeat New Password": "Ask Putin to unlock", - "Update Password": "Ask Putin to unlock", - "Disable Auth": "Ask Putin to unlock", - "Enable Auth": "Ask Putin to unlock", - Logout: "Ask Putin to unlock", - Leave: "Ask Putin to unlock", - "I understand, please disable": "Ask Putin to unlock", - Confirm: "Ask Putin to unlock", - Yes: "Ask Putin to unlock", - No: "Ask Putin to unlock", - Username: "Ask Putin to unlock", - Password: "Ask Putin to unlock", - "Remember me": "Ask Putin to unlock", - Login: "Ask Putin to unlock", - "No Monitors, please": "Ask Putin to unlock", - "add one": "Ask Putin to unlock", - "Notification Type": "Ask Putin to unlock", - Email: "Ask Putin to unlock", - Test: "Ask Putin to unlock", - "Certificate Info": "Ask Putin to unlock", - "Resolver Server": "Ask Putin to unlock", - "Resource Record Type": "Ask Putin to unlock", - "Last Result": "Ask Putin to unlock", - "Create your admin account": "Ask Putin to unlock", - "Repeat Password": "Ask Putin to unlock", - respTime: "Ask Putin to unlock", - notAvailableShort: "Ask Putin to unlock", - Create: "Ask Putin to unlock", - clearEventsMsg: "Ask Putin to unlock", - clearHeartbeatsMsg: "Ask Putin to unlock", - confirmClearStatisticsMsg: "Ask Putin to unlock", - "Clear Data": "Ask Putin to unlock", - Events: "Ask Putin to unlock", - Heartbeats: "Ask Putin to unlock", - "Auto Get": "Ask Putin to unlock", - enableDefaultNotificationDescription: "Ask Putin to unlock", - "Default enabled": "Ask Putin to unlock", - "Also apply to existing monitors": "Ask Putin to unlock", - Export: "Ask Putin to unlock", - Import: "Ask Putin to unlock", - backupDescription: "Ask Putin to unlock", - backupDescription2: "Ask Putin to unlock", - backupDescription3: "Ask Putin to unlock", - alertNoFile: "Ask Putin to unlock", - alertWrongFileType: "Ask Putin to unlock", - twoFAVerifyLabel: "Ask Putin to unlock", - tokenValidSettingsMsg: "Ask Putin to unlock", - confirmEnableTwoFAMsg: "Ask Putin to unlock", - confirmDisableTwoFAMsg: "Ask Putin to unlock", - "Apply on all existing monitors": "Ask Putin to unlock", - "Verify Token": "Ask Putin to unlock", - "Setup 2FA": "Ask Putin to unlock", - "Enable 2FA": "Ask Putin to unlock", - "Disable 2FA": "Ask Putin to unlock", - "2FA Settings": "Ask Putin to unlock", - "Two Factor Authentication": "Ask Putin to unlock", - Active: "Ask Putin to unlock", - Inactive: "Ask Putin to unlock", - Token: "Ask Putin to unlock", - "Show URI": "Ask Putin to unlock", - "Clear all statistics": "Ask Putin to unlock", - retryCheckEverySecond: "Ask Putin to unlock", - importHandleDescription: "Ask Putin to unlock", - confirmImportMsg: "Ask Putin to unlock", - "Heartbeat Retry Interval": "Ask Putin to unlock", - "Import Backup": "Ask Putin to unlock", - "Export Backup": "Ask Putin to unlock", - "Skip existing": "Ask Putin to unlock", - Overwrite: "Ask Putin to unlock", - Options: "Ask Putin to unlock", - "Keep both": "Ask Putin to unlock", - Tags: "Ask Putin to unlock", - "Add New below or Select...": "Ask Putin to unlock", - "Tag with this name already exist.": "Ask Putin to unlock", - "Tag with this value already exist.": "Ask Putin to unlock", - color: "Ask Putin to unlock", - "value (optional)": "Ask Putin to unlock", - Gray: "Ask Putin to unlock", - Red: "Ask Putin to unlock", - Orange: "Ask Putin to unlock", - Green: "Ask Putin to unlock", - Blue: "Ask Putin to unlock", - Indigo: "Ask Putin to unlock", - Purple: "Ask Putin to unlock", - Pink: "Ask Putin to unlock", - "Search...": "Ask Putin to unlock", - "Avg. Ping": "Ask Putin to unlock", - "Avg. Response": "Ask Putin to unlock", - "Entry Page": "Ask Putin to unlock", - statusPageNothing: "Ask Putin to unlock", - "No Services": "Ask Putin to unlock", - "All Systems Operational": "Ask Putin to unlock", - "Partially Degraded Service": "Ask Putin to unlock", - "Degraded Service": "Ask Putin to unlock", - "Add Group": "Ask Putin to unlock", - "Add a monitor": "Ask Putin to unlock", - "Edit Status Page": "Ask Putin to unlock", - "Go to Dashboard": "Ask Putin to unlock", - "Status Page": "Ask Putin to unlock", - Discard: "Ask Putin to unlock", - "Create Incident": "Ask Putin to unlock", - "Switch to Dark Theme": "Ask Putin to unlock", - "Switch to Light Theme": "Ask Putin to unlock", - telegram: "Ask Putin to unlock", - webhook: "Ask Putin to unlock", - smtp: "Ask Putin to unlock", - discord: "Ask Putin to unlock", - teams: "Ask Putin to unlock", - signal: "Ask Putin to unlock", - gotify: "Ask Putin to unlock", - slack: "Ask Putin to unlock", - "rocket.chat": "Ask Putin to unlock", - pushover: "Ask Putin to unlock", - pushy: "Ask Putin to unlock", - octopush: "Ask Putin to unlock", - promosms: "Ask Putin to unlock", - lunasea: "Ask Putin to unlock", - apprise: "Ask Putin to unlock", - pushbullet: "Ask Putin to unlock", - line: "Ask Putin to unlock", - mattermost: "Ask Putin to unlock", - "Primary Base URL": "Ask Putin to unlock", - "Push URL": "Ask Putin to unlock", - needPushEvery: "Ask Putin to unlock", - pushOptionalParams: "Ask Putin to unlock", - defaultNotificationName: "Ask Putin to unlock", - here: "Ask Putin to unlock", - Required: "Ask Putin to unlock", - "Bot Token": "Ask Putin to unlock", - wayToGetTelegramToken: "Ask Putin to unlock", - "Chat ID": "Ask Putin to unlock", - supportTelegramChatID: "Ask Putin to unlock", - wayToGetTelegramChatID: "Ask Putin to unlock", - "YOUR BOT TOKEN HERE": "Ask Putin to unlock", - chatIDNotFound: "Ask Putin to unlock", - "Post URL": "Ask Putin to unlock", - "Content Type": "Ask Putin to unlock", - webhookJsonDesc: "Ask Putin to unlock", - webhookFormDataDesc: "Ask Putin to unlock", - secureOptionNone: "Ask Putin to unlock", - secureOptionTLS: "Ask Putin to unlock", - "Ignore TLS Error": "Ask Putin to unlock", - "From Email": "Ask Putin to unlock", - emailCustomSubject: "Ask Putin to unlock", - "To Email": "Ask Putin to unlock", - smtpCC: "Ask Putin to unlock", - smtpBCC: "Ask Putin to unlock", - "Discord Webhook URL": "Ask Putin to unlock", - wayToGetDiscordURL: "Ask Putin to unlock", - "Bot Display Name": "Ask Putin to unlock", - "Prefix Custom Message": "Ask Putin to unlock", - "Hello @everyone is...": "Ask Putin to unlock", - "Webhook URL": "Ask Putin to unlock", - wayToGetTeamsURL: "Ask Putin to unlock", - Number: "Ask Putin to unlock", - Recipients: "Ask Putin to unlock", - needSignalAPI: "Ask Putin to unlock", - wayToCheckSignalURL: "Ask Putin to unlock", - signalImportant: "Ask Putin to unlock", - "Application Token": "Ask Putin to unlock", - "Server URL": "Ask Putin to unlock", - Priority: "Ask Putin to unlock", - "Icon Emoji": "Ask Putin to unlock", - "Channel Name": "Ask Putin to unlock", - "Uptime Kuma URL": "Ask Putin to unlock", - aboutWebhooks: "Ask Putin to unlock", - aboutChannelName: "Ask Putin to unlock", - aboutKumaURL: "Ask Putin to unlock", - emojiCheatSheet: "Ask Putin to unlock", - "User Key": "Ask Putin to unlock", - Device: "Ask Putin to unlock", - "Message Title": "Ask Putin to unlock", - "Notification Sound": "Ask Putin to unlock", - "More info on:": "Ask Putin to unlock", - pushoverDesc1: "Ask Putin to unlock", - pushoverDesc2: "Ask Putin to unlock", - "SMS Type": "Ask Putin to unlock", - octopushTypePremium: "Ask Putin to unlock", - octopushTypeLowCost: "Ask Putin to unlock", - checkPrice: "Ask Putin to unlock", - octopushLegacyHint: "Ask Putin to unlock", - "Check octopush prices": "Ask Putin to unlock", - octopushPhoneNumber: "Ask Putin to unlock", - octopushSMSSender: "Ask Putin to unlock", - "LunaSea Device ID": "Ask Putin to unlock", - "Apprise URL": "Ask Putin to unlock", - "Example:": "Ask Putin to unlock", - "Read more:": "Ask Putin to unlock", - "Status:": "Ask Putin to unlock", - "Read more": "Ask Putin to unlock", - appriseInstalled: "Ask Putin to unlock", - appriseNotInstalled: "Ask Putin to unlock", - "Access Token": "Ask Putin to unlock", - "Channel access token": "Ask Putin to unlock", - "Line Developers Console": "Ask Putin to unlock", - lineDevConsoleTo: "Ask Putin to unlock", - "Basic Settings": "Ask Putin to unlock", - "User ID": "Ask Putin to unlock", - "Messaging API": "Ask Putin to unlock", - wayToGetLineChannelToken: "Ask Putin to unlock", - "Icon URL": "Ask Putin to unlock", - aboutIconURL: "Ask Putin to unlock", - aboutMattermostChannelName: "Ask Putin to unlock", - matrix: "Ask Putin to unlock", - promosmsTypeEco: "Ask Putin to unlock", - promosmsTypeFlash: "Ask Putin to unlock", - promosmsTypeFull: "Ask Putin to unlock", - promosmsTypeSpeed: "Ask Putin to unlock", - promosmsPhoneNumber: "Ask Putin to unlock", - promosmsSMSSender: "Ask Putin to unlock", - "Feishu WebHookUrl": "Ask Putin to unlock", - matrixHomeserverURL: "Ask Putin to unlock", - "Internal Room Id": "Ask Putin to unlock", - matrixDesc1: "Ask Putin to unlock", - matrixDesc2: "Ask Putin to unlock", - Method: "Ask Putin to unlock", - Body: "Ask Putin to unlock", - Headers: "Ask Putin to unlock", - PushUrl: "Ask Putin to unlock", - HeadersInvalidFormat: "Ask Putin to unlock", - BodyInvalidFormat: "Ask Putin to unlock", - "Monitor History": "Ask Putin to unlock", - clearDataOlderThan: "Ask Putin to unlock", - PasswordsDoNotMatch: "Ask Putin to unlock", - records: "Ask Putin to unlock", - "One record": "Ask Putin to unlock", - steamApiKeyDescription: "Ask Putin to unlock", - "Certificate Chain:": "Ask Putin to unlock", - "Valid": "Ask Putin to unlock", - "Hide Tags": "Ask Putin to unlock", - "Title:": "Ask Putin to unlock", - "Content:": "Ask Putin to unlock", - "Post": "Ask Putin to unlock", - "Cancel": "Ask Putin to unlock", - "Created:": "Ask Putin to unlock", - "Show Tags": "Ask Putin to unlock", - "Recent": "Ask Putin to unlock", - "3h": "Ask Putin to unlock", - "6h": "Ask Putin to unlock", - "24h": "Ask Putin to unlock", - "1w": "Ask Putin to unlock", - "No monitors available.": "Ask Putin to unlock", - "Add one": "Ask Putin to unlock", - "Backup": "Ask Putin to unlock", - "Security": "Ask Putin to unlock", - "Current User:": "Ask Putin to unlock", - "About": "Ask Putin to unlock", - "Description:": "Ask Putin to unlock", + languageName: "Русский", + checkEverySecond: "Проверка каждые {0} секунд", + retriesDescription: "Максимальное количество попыток перед пометкой сервиса как недоступного и отправкой уведомления", + ignoreTLSError: "Игнорировать ошибку TLS/SSL для HTTPS сайтов", + upsideDownModeDescription: "Реверс статуса сервиса. Если сервис доступен, то он помечается как НЕДОСТУПНЫЙ.", + maxRedirectDescription: "Максимальное количество перенаправлений. Поставьте 0, чтобы отключить перенаправления.", + acceptedStatusCodesDescription: "Выберите коды статусов для определения доступности сервиса.", + passwordNotMatchMsg: "Повтор пароля не совпадает.", + notificationDescription: "Привяжите уведомления к мониторам.", + keywordDescription: "Поиск слова в чистом HTML или в JSON-ответе (чувствительно к регистру)", + pauseDashboardHome: "Пауза", + deleteMonitorMsg: "Вы действительно хотите удалить данный монитор?", + deleteNotificationMsg: "Вы действительно хотите удалить это уведомление для всех мониторов?", + resoverserverDescription: "Cloudflare является сервером по умолчанию. Вы всегда можете сменить данный сервер.", + rrtypeDescription: "Выберите тип ресурсной записи, который вы хотите отслеживать", + pauseMonitorMsg: "Вы действительно хотите поставить на паузу?", + Settings: "Настройки", + Dashboard: "Панель мониторов", + "New Update": "Обновление", + Language: "Язык", + Appearance: "Внешний вид", + Theme: "Тема", + General: "Общее", + Version: "Версия", + "Check Update On GitHub": "Проверить обновления на GitHub", + List: "Список", + Add: "Добавить", + "Add New Monitor": "Новый монитор", + "Quick Stats": "Статистика", + Up: "Доступен", + Down: "Недоступен", + Pending: "Ожидание", + Unknown: "Неизвестно", + Pause: "Пауза", + Name: "Имя", + Status: "Статус", + DateTime: "Дата и время", + Message: "Сообщение", + "No important events": "Важных событий нет", + Resume: "Возобновить", + Edit: "Изменить", + Delete: "Удалить", + Current: "Текущий", + Uptime: "Аптайм", + "Cert Exp.": "Сертификат истекает", + days: "дней", + day: "день", + "-day": " дней", + hour: "час", + "-hour": " часа", + Response: "Ответ", + Ping: "Пинг", + "Monitor Type": "Тип монитора", + Keyword: "Слово", + "Friendly Name": "Имя", + URL: "URL", + Hostname: "Имя хоста", + Port: "Порт", + "Heartbeat Interval": "Частота опроса", + Retries: "Попыток", + Advanced: "Дополнительно", + "Upside Down Mode": "Режим реверса статуса", + "Max. Redirects": "Макс. количество перенаправлений", + "Accepted Status Codes": "Допустимые коды статуса", + Save: "Сохранить", + Notifications: "Уведомления", + "Not available, please setup.": "Доступных уведомлений нет, необходимо создать.", + "Setup Notification": "Создать уведомление", + Light: "Светлая", + Dark: "Тёмная", + Auto: "Авто", + "Theme - Heartbeat Bar": "Тема - Полоса частоты опроса", + Normal: "Обычный", + Bottom: "Снизу", + None: "Отсутствует", + Timezone: "Часовой пояс", + "Search Engine Visibility": "Видимость поисковым движком", + "Allow indexing": "Разрешить индексирование", + "Discourage search engines from indexing site": "Не позволять индексировать сайт", + "Change Password": "Сменить пароль", + "Current Password": "Текущий пароль", + "New Password": "Новый пароль", + "Repeat New Password": "Повтор нового пароля", + "Update Password": "Обновить пароль", + "Disable Auth": "Отключить авторизацию", + "Enable Auth": "Включить авторизацию", + Logout: "Выйти", + Leave: "Отмена", + "I understand, please disable": "Я понимаю, всё равно отключить", + Confirm: "Подтвердить", + Yes: "Да", + No: "Нет", + Username: "Логин", + Password: "Пароль", + "Remember me": "Запомнить меня", + Login: "Вход в систему", + "No Monitors, please": "Мониторов нет, пожалуйста", + "add one": "создайте новый", + "Notification Type": "Тип уведомления", + Email: "Почта", + Test: "Проверка", + "Certificate Info": "Информация о сертификате", + "Resolver Server": "DNS сервер", + "Resource Record Type": "Тип ресурсной записи", + "Last Result": "Последний результат", + "Create your admin account": "Создайте аккаунт администратора", + "Repeat Password": "Повторите пароль", + respTime: "Время ответа (мс)", + notAvailableShort: "Н/Д", + Create: "Создать", + clearEventsMsg: "Вы действительно хотите удалить всю статистику событий данного монитора?", + clearHeartbeatsMsg: "Вы действительно хотите удалить всю статистику опросов данного монитора?", + confirmClearStatisticsMsg: "Вы действительно хотите удалить ВСЮ статистику?", + "Clear Data": "Удалить статистику", + Events: "События", + Heartbeats: "Опросы", + "Auto Get": "Авто-получение", + enableDefaultNotificationDescription: "Для каждого нового монитора это уведомление будет включено по умолчанию. Вы всё ещё можете отключить уведомления в каждом мониторе отдельно.", + "Default enabled": "Использовать по умолчанию", + "Also apply to existing monitors": "Применить к существующим мониторам", + Export: "Резервная копия", + Import: "Восстановление", + backupDescription: "Вы можете сохранить резервную копию всех мониторов и уведомлений в виде JSON-файла", + backupDescription2: "P.S. История и события сохранены не будут", + backupDescription3: "Важные данные, такие как токены уведомлений, добавляются при экспорте, поэтому храните файлы в безопасном месте", + alertNoFile: "Выберите файл для импорта.", + alertWrongFileType: "Выберите JSON-файл.", + twoFAVerifyLabel: "Пожалуйста, введите свой токен, чтобы проверить работу 2FA", + tokenValidSettingsMsg: "Токен действителен! Теперь вы можете сохранить настройки 2FA.", + confirmEnableTwoFAMsg: "Вы действительно хотите включить 2FA?", + confirmDisableTwoFAMsg: "Вы действительно хотите выключить 2FA?", + "Apply on all existing monitors": "Применить ко всем существующим мониторам", + "Verify Token": "Проверить токен", + "Setup 2FA": "Настройка 2FA", + "Enable 2FA": "Включить 2FA", + "Disable 2FA": "Выключить 2FA", + "2FA Settings": "Настройки 2FA", + "Two Factor Authentication": "Двухфакторная аутентификация", + Active: "Активно", + Inactive: "Неактивно", + Token: "Токен", + "Show URI": "Показать URI", + "Clear all statistics": "Удалить всю статистику", + retryCheckEverySecond: "Повтор каждые {0} секунд", + 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)": "значение (опционально)", + Gray: "Серый", + Red: "Красный", + Orange: "Оранжевый", + Green: "Зелёный", + Blue: "Синий", + Indigo: "Индиго", + Purple: "Пурпурный", + Pink: "Розовый", + "Search...": "Поиск...", + "Avg. Ping": "Среднее значение пинга", + "Avg. Response": "Среднее время ответа", + "Entry Page": "Главная страница", + statusPageNothing: "Здесь пусто. Добавьте группу или монитор.", + "No Services": "Нет сервисов", + "All Systems Operational": "Все системы работают", + "Partially Degraded Service": "Сервисы частично не работают", + "Degraded Service": "Все сервисы не работают", + "Add Group": "Добавить группу", + "Add a monitor": "Добавить монитор", + "Edit Status Page": "Редактировать", + "Go to Dashboard": "Панель мониторов", + "Status Page": "Статус сервисов", + Discard: "Отмена", + "Create Incident": "Создать инцидент", + "Switch to Dark Theme": "Тёмная тема", + "Switch to Light Theme": "Светлая тема", + telegram: "Telegram", + webhook: "Вебхук", + smtp: "Email (SMTP)", + discord: "Discord", + teams: "Microsoft Teams", + signal: "Signal", + gotify: "Gotify", + slack: "Slack", + "rocket.chat": "Rocket.chat", + pushover: "Pushover", + pushy: "Pushy", + octopush: "Octopush", + promosms: "PromoSMS", + lunasea: "LunaSea", + apprise: "Apprise (Поддержка 50+ сервисов уведомлений)", + pushbullet: "Pushbullet", + line: "Line Messenger", + mattermost: "Mattermost", + "Primary Base URL": "Основной URL", + "Push URL": "URL пуша", + needPushEvery: "К этому URL необходимо обращаться каждые {0} секунд", + pushOptionalParams: "Опциональные параметры: {0}", + defaultNotificationName: "Моё уведомление {notification} ({number})", + here: "здесь", + Required: "Требуется", + "Bot Token": "Токен бота", + wayToGetTelegramToken: "Вы можете взять токен здесь - {0}.", + "Chat ID": "ID чата", + supportTelegramChatID: "Поддерживаются ID чатов, групп и каналов", + wayToGetTelegramChatID: "Вы можете взять ID вашего чата, отправив сообщение боту и перейдя по этому URL для просмотра chat_id:", + "YOUR BOT TOKEN HERE": "ВАШ ТОКЕН БОТА ЗДЕСЬ", + chatIDNotFound: "ID чата не найден; пожалуйста отправьте сначала сообщение боту", + "Post URL": "Post URL", + "Content Type": "Тип контента", + webhookJsonDesc: "{0} подходит для любых современных HTTP-серверов, например Express.js", + webhookFormDataDesc: "{multipart} подходит для PHP. JSON-вывод необходимо будет обработать с помощью {decodeFunction}", + secureOptionNone: "Нет / STARTTLS (25, 587)", + secureOptionTLS: "TLS (465)", + "Ignore TLS Error": "Игнорировать ошибки TLS", + "From Email": "От кого", + emailCustomSubject: "Своя тема", + "To Email": "Кому", + smtpCC: "Копия", + smtpBCC: "Скрытая копия", + "Discord Webhook URL": "Discord вебхук URL", + wayToGetDiscordURL: "Вы можете создать его в Параметрах сервера -> Интеграции -> Создать вебхук", + "Bot Display Name": "Отображаемое имя бота", + "Prefix Custom Message": "Свой префикс сообщения", + "Hello @everyone is...": "Привет {'@'}everyone это...", + "Webhook URL": "URL вебхука", + wayToGetTeamsURL: "Как создать URL вебхука вы можете узнать здесь - {0}.", + Number: "Номер", + Recipients: "Получатели", + needSignalAPI: "Вам необходим клиент Signal с поддержкой REST API.", + wayToCheckSignalURL: "Пройдите по этому URL, чтобы узнать как настроить такой клиент:", + signalImportant: "ВАЖНО: Нельзя смешивать в Получателях группы и номера!", + "Application Token": "Токен приложения", + "Server URL": "URL сервера", + Priority: "Приоритет", + "Icon Emoji": "Иконка Emoji", + "Channel Name": "Имя канала", + "Uptime Kuma URL": "Uptime Kuma URL", + aboutWebhooks: "Больше информации о вебхуках: {0}", + aboutChannelName: "Введите имя канала в поле {0} Имя канала, если вы хотите обойти канал вебхука. Например: #other-channel", + aboutKumaURL: "Если поле Uptime Kuma URL в настройках останется пустым, по умолчанию будет использоваться ссылка на проект на GitHub.", + emojiCheatSheet: "Шпаргалка по Emoji: {0}", + "User Key": "Ключ пользователя", + Device: "Устройство", + "Message Title": "Заголовок сообщения", + "Notification Sound": "Звук уведомления", + "More info on:": "Больше информации: {0}", + pushoverDesc1: "Экстренный приоритет (2) имеет таймаут повтора по умолчанию 30 секунд и истекает через 1 час.", + pushoverDesc2: "Если вы хотите отправлять уведомления различным устройствам, необходимо заполнить поле Устройство.", + "SMS Type": "Тип SMS", + octopushTypePremium: "Премиум (Быстрый - рекомендуется для алертов)", + octopushTypeLowCost: "Дешёвый (Медленный - иногда блокируется операторами)", + checkPrice: "Тарифы {0}:", + octopushLegacyHint: "Вы используете старую версию Octopush (2011-2020) или новую?", + "Check octopush prices": "Тарифы Octopush {0}.", + octopushPhoneNumber: "Номер телефона (межд. формат, например: +79831234567) ", + octopushSMSSender: "Имя отправителя SMS: 3-11 символов алвафита, цифр и пробелов (a-zA-Z0-9)", + "LunaSea Device ID": "ID устройства LunaSea", + "Apprise URL": "Apprise URL", + "Example:": "Пример: {0}", + "Read more:": "Подробнее: {0}", + "Status:": "Статус: {0}", + "Read more": "Подробнее", + appriseInstalled: "Apprise установлен.", + appriseNotInstalled: "Apprise не установлен. {0}", + "Access Token": "Токен доступа", + "Channel access token": "Токен доступа канала", + "Line Developers Console": "Консоль разработчиков Line", + lineDevConsoleTo: "Консоль разработчиков Line - {0}", + "Basic Settings": "Базовые настройки", + "User ID": "ID пользователя", + "Messaging API": "API сообщений", + wayToGetLineChannelToken: "Сначала зайдите в {0}, создайте провайдера и канал (API сообщений), затем вы сможете получить токен доступа канала и ID пользователя из вышеупомянутых пунктов меню.", + "Icon URL": "URL иконки", + aboutIconURL: "Вы можете предоставить ссылку на иконку в поле \"URL иконки\" чтобы переопределить картинку профиля по умолчанию. Не используется, если задана иконка Emoji.", + aboutMattermostChannelName: "Вы можете переопределить канал по умолчанию, в который вебхук пишет, введя имя канала в поле \"Имя канала\". Это необходимо включить в настройках вебхука Mattermost. Например: #other-channel", + matrix: "Matrix", + promosmsTypeEco: "SMS ECO - дёшево и медленно, часто перегружен. Только для получателей из Польши.", + promosmsTypeFlash: "SMS FLASH - сообщения автоматически появятся на устройстве получателя. Только для получателей из Польши.", + promosmsTypeFull: "SMS FULL - премиум-уровень SMS, можно использовать своё имя отправителя (предварительно зарегистрировав его). Надёжно для алертов.", + promosmsTypeSpeed: "SMS SPEED - наивысший приоритет в системе. Очень быстро и надёжно, но очень дорого (в два раза дороже, чем SMS FULL).", + promosmsPhoneNumber: "Номер телефона (для получателей из Польши можно пропустить код региона)", + promosmsSMSSender: "Имя отправителя SMS: Зарегистрированное или одно из имён по умолчанию: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "Feishu WebHookURL", + matrixHomeserverURL: "URL сервера (вместе с http(s):// и опционально порт)", + "Internal Room Id": "Внутренний ID комнаты", + matrixDesc1: "Внутренний ID комнаты можно найти в Подробностях в параметрах канала вашего Matrix клиента. Он должен выглядеть примерно как !QMdRCpUIfLwsfjxye6:home.server.", + matrixDesc2: "Рекомендуется создать нового пользователя и не использовать токен доступа личного пользователя Matrix, т.к. это влечёт за собой полный доступ к аккаунту и к комнатам, в которых вы состоите. Вместо этого создайте нового пользователя и пригласите его только в ту комнату, в которой вы хотите получать уведомления. Токен доступа можно получить, выполнив команду {0}", + Method: "Метод", + Body: "Тело", + Headers: "Заголовки", + PushUrl: "URL пуша", + HeadersInvalidFormat: "Заголовки запроса некорректны JSON: ", + BodyInvalidFormat: "Тело запроса некорректно JSON: ", + "Monitor History": "История мониторов", + clearDataOlderThan: "Сохранять историю мониторов в течение {0} дней.", + PasswordsDoNotMatch: "Пароли не совпадают.", + records: "записей", + "One record": "Одна запись", + steamApiKeyDescription: "Для мониторинга игрового сервера Steam вам необходим Web-API ключ Steam. Зарегистрировать его можно здесь: ", + "Certificate Chain:": "Цепочка сертификатов:", + "Valid": "Действительный", + "Hide Tags": "Скрыть тэги", + "Title:": "Название инцидента:", + "Content:": "Содержание инцидента:", + "Post": "Опубликовать", + "Cancel": "Отмена", + "Created:": "Создано:", + "Show Tags": "Показать тэги", + "Recent": "Текущее", + "3h": "3 часа", + "6h": "6 часов", + "24h": "24 часа", + "1w": "1 неделя", + "No monitors available.": "Нет доступных мониторов", + "Add one": "Добавить новый", + "Backup": "Резервная копия", + "Security": "Безопасность", + "Current User:": "Текущий пользователь:", + "About": "О программе", + "Description:": "Описание:", }; From b31af8a15c22297216fdc480451e71f5bd8daf98 Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Sat, 26 Feb 2022 17:05:13 +0800 Subject: [PATCH 271/282] update to 1.12.1 --- package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 96373348..9da73798 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "uptime-kuma", - "version": "1.12.0", + "version": "1.12.1", "license": "MIT", "repository": { "type": "git", @@ -30,13 +30,13 @@ "build-docker": "npm run build && 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.12.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.12.0 -t louislam/uptime-kuma:debian -t louislam/uptime-kuma:1-debian -t louislam/uptime-kuma:1.12.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.12.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.12.1 -t louislam/uptime-kuma:debian -t louislam/uptime-kuma:1-debian -t louislam/uptime-kuma:1.12.1-debian --target release . --push", "build-docker-nightly": "npm run build && 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.12.0 && npm ci --production && npm run download-dist", + "setup": "git checkout 1.12.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 b4a3d6835616ffaa4dc2ca719c972ff841a40f62 Mon Sep 17 00:00:00 2001 From: "PrikolMen:-b" <44779902+PrikolMen@users.noreply.github.com> Date: Mon, 28 Feb 2022 14:55:23 +0400 Subject: [PATCH 272/282] More correct Russian translation I tried to fix most of the shortcomings of the Russian translation... --- src/languages/ru-RU.js | 44 +++++++++++++++++++++++------------------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/src/languages/ru-RU.js b/src/languages/ru-RU.js index be301d82..e3f9ccbd 100644 --- a/src/languages/ru-RU.js +++ b/src/languages/ru-RU.js @@ -16,7 +16,7 @@ export default { rrtypeDescription: "Выберите тип ресурсной записи, который вы хотите отслеживать", pauseMonitorMsg: "Вы действительно хотите поставить на паузу?", Settings: "Настройки", - Dashboard: "Панель мониторов", + Dashboard: "Панель управления", "New Update": "Обновление", Language: "Язык", Appearance: "Внешний вид", @@ -60,7 +60,7 @@ export default { "Heartbeat Interval": "Частота опроса", Retries: "Попыток", Advanced: "Дополнительно", - "Upside Down Mode": "Режим реверса статуса", + "Upside Down Mode": "Реверс статуса", "Max. Redirects": "Макс. количество перенаправлений", "Accepted Status Codes": "Допустимые коды статуса", Save: "Сохранить", @@ -75,9 +75,9 @@ export default { Bottom: "Снизу", None: "Отсутствует", Timezone: "Часовой пояс", - "Search Engine Visibility": "Видимость поисковым движком", + "Search Engine Visibility": "Индексация поисковыми системами:", "Allow indexing": "Разрешить индексирование", - "Discourage search engines from indexing site": "Не позволять индексировать сайт", + "Discourage search engines from indexing site": "Запретить индексирование", "Change Password": "Сменить пароль", "Current Password": "Текущий пароль", "New Password": "Новый пароль", @@ -96,6 +96,7 @@ export default { "Remember me": "Запомнить меня", Login: "Вход в систему", "No Monitors, please": "Мониторов нет, пожалуйста", + "No Monitors": "Мониторы отсутствуют", "add one": "создайте новый", "Notification Type": "Тип уведомления", Email: "Почта", @@ -107,7 +108,7 @@ export default { "Create your admin account": "Создайте аккаунт администратора", "Repeat Password": "Повторите пароль", respTime: "Время ответа (мс)", - notAvailableShort: "Н/Д", + notAvailableShort: "N/A", Create: "Создать", clearEventsMsg: "Вы действительно хотите удалить всю статистику событий данного монитора?", clearHeartbeatsMsg: "Вы действительно хотите удалить всю статистику опросов данного монитора?", @@ -119,8 +120,8 @@ export default { enableDefaultNotificationDescription: "Для каждого нового монитора это уведомление будет включено по умолчанию. Вы всё ещё можете отключить уведомления в каждом мониторе отдельно.", "Default enabled": "Использовать по умолчанию", "Also apply to existing monitors": "Применить к существующим мониторам", - Export: "Резервная копия", - Import: "Восстановление", + Export: "Экспорт", + Import: "Импорт", backupDescription: "Вы можете сохранить резервную копию всех мониторов и уведомлений в виде JSON-файла", backupDescription2: "P.S. История и события сохранены не будут", backupDescription3: "Важные данные, такие как токены уведомлений, добавляются при экспорте, поэтому храните файлы в безопасном месте", @@ -141,13 +142,13 @@ export default { Inactive: "Неактивно", Token: "Токен", "Show URI": "Показать URI", - "Clear all statistics": "Удалить всю статистику", + "Clear all statistics": "Очистить статистику", retryCheckEverySecond: "Повтор каждые {0} секунд", importHandleDescription: "Выберите \"Пропустить существующие\", если вы хотите пропустить каждый монитор или уведомление с таким же именем. \"Перезаписать\" удалит каждый существующий монитор или уведомление и добавит заново. Вариант \"Не проверять\" принудительно восстанавливает все мониторы и уведомления, даже если они уже существуют.", confirmImportMsg: "Вы действительно хотите восстановить резервную копию? Убедитесь, что вы выбрали подходящий вариант импорта.", "Heartbeat Retry Interval": "Интервал повтора опроса", - "Import Backup": "Восстановление резервной копии", - "Export Backup": "Резервная копия", + "Import Backup": "Импорт", + "Export Backup": "Скачать", "Skip existing": "Пропустить существующие", Overwrite: "Перезаписать", Options: "Опции", @@ -172,14 +173,14 @@ export default { "Entry Page": "Главная страница", statusPageNothing: "Здесь пусто. Добавьте группу или монитор.", "No Services": "Нет сервисов", - "All Systems Operational": "Все системы работают", - "Partially Degraded Service": "Сервисы частично не работают", + "All Systems Operational": "Все системы работают в штатном режиме", + "Partially Degraded Service": "Сервисы работают частично", "Degraded Service": "Все сервисы не работают", "Add Group": "Добавить группу", "Add a monitor": "Добавить монитор", "Edit Status Page": "Редактировать", - "Go to Dashboard": "Панель мониторов", - "Status Page": "Статус сервисов", + "Go to Dashboard": "Панель управления", + "Status Page": "Мониторинг", Discard: "Отмена", "Create Incident": "Создать инцидент", "Switch to Dark Theme": "Тёмная тема", @@ -302,8 +303,8 @@ export default { PushUrl: "URL пуша", HeadersInvalidFormat: "Заголовки запроса некорректны JSON: ", BodyInvalidFormat: "Тело запроса некорректно JSON: ", - "Monitor History": "История мониторов", - clearDataOlderThan: "Сохранять историю мониторов в течение {0} дней.", + "Monitor History": "Статистика", + clearDataOlderThan: "Сохранять статистику за {0} дней.", PasswordsDoNotMatch: "Пароли не совпадают.", records: "записей", "One record": "Одна запись", @@ -315,9 +316,10 @@ export default { "Content:": "Содержание инцидента:", "Post": "Опубликовать", "Cancel": "Отмена", - "Created:": "Создано:", + "Created": "Создано", + "Unpin": "Открепить", "Show Tags": "Показать тэги", - "Recent": "Текущее", + "recent": "Сейчас", "3h": "3 часа", "6h": "6 часов", "24h": "24 часа", @@ -326,7 +328,9 @@ export default { "Add one": "Добавить новый", "Backup": "Резервная копия", "Security": "Безопасность", - "Current User:": "Текущий пользователь:", + "Shrink Database": "Сжать Базу Данных", + "Current User": "Текущий пользователь", "About": "О программе", - "Description:": "Описание:", + "Description": "Описание", + shrinkDatabaseDescription: "Включает VACUUM для базы данных SQLite. Если ваша база данных была создана на версии 1.10.0 и более, AUTO_VACUUM уже включен и это действие не требуется.", }; From 8e7c0a616313d66e774ba7339ddcde3a92937e07 Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Wed, 2 Mar 2022 14:25:37 +0800 Subject: [PATCH 273/282] Update pull request rules --- CONTRIBUTING.md | 51 +++++++++++++------------------------------------ 1 file changed, 13 insertions(+), 38 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ee090fc6..123cd049 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -27,9 +27,20 @@ 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 does not affect any existing logic, workflow and performance, I will merge into the master branch once it is tested. +⚠️ 2022-03-02 Update: -If you are not sure whether I will accept your pull request, feel free to create an empty pull request draft first. +Since I found that merging pull requests is a pretty heavy task for me, I try to rearrange it. + +✅ Accept: +- Bug/Security fix +- Translations +- Adding notification providers + +❌ Avoid: +- Large pull requests +- New big features + +My long story here: https://www.reddit.com/r/UptimeKuma/comments/t1t6or/comment/hynyijx/ ### Recommended Pull Request Guideline @@ -43,42 +54,6 @@ If you are not sure whether I will accept your pull request, feel free to create 1. Write a proper description 1. Click "Change to draft" -### Pull Request Examples - -Here are some example situations in the past. - -#### ✅ High - Medium Priority - -Easy to review, no breaking change and not touching the existing code - -- Add a new notification -- Add a chart -- Fix a bug -- Translations -- Add a independent new feature - -#### *️⃣ Requires one more reviewer - -I do not have such knowledge to test it. - -- Add k8s supports - -#### ⚠ 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. - -- 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 -- Modify auth - -#### *️⃣ Low Priority - -It changed my current workflow and require further studies. - -- Change my release approach - #### ❌ Won't Merge - Any breaking changes From 0dba06e48b54d02fe6727aea06cf55cf5a6127ec Mon Sep 17 00:00:00 2001 From: DX <deluxghost@gmail.com> Date: Thu, 17 Feb 2022 18:39:51 +0800 Subject: [PATCH 274/282] Update zh-CN translations --- src/languages/zh-CN.js | 383 ++++++++++++++++++++--------------------- 1 file changed, 191 insertions(+), 192 deletions(-) diff --git a/src/languages/zh-CN.js b/src/languages/zh-CN.js index 761c1626..d4d37948 100644 --- a/src/languages/zh-CN.js +++ b/src/languages/zh-CN.js @@ -1,92 +1,104 @@ export default { languageName: "简体中文", checkEverySecond: "检测频率 {0} 秒", - retriesDescription: "最大重试失败次数", - ignoreTLSError: "忽略 HTTPS 站点的证书错误", - upsideDownModeDescription: "反向状态监控(状态码范围外为有效状态,反之为无效)", - maxRedirectDescription: "最大重定向次数,设置为 0 禁止重定向", - acceptedStatusCodesDescription: "选择被视为成功响应的状态码", - passwordNotMatchMsg: "两次密码输入不一致", - notificationDescription: "请为监控项配置消息通知", - keywordDescription: "检测响应内容中的关键字,区分大小写", + retryCheckEverySecond: "重试间隔 {0} 秒", + retriesDescription: "服务被标记为故障并发送通知之前得最大重试次数", + ignoreTLSError: "忽略 HTTPS 站点的 TLS/SSL 错误", + upsideDownModeDescription: "反转状态监控,如果服务可访问,则认为是故障。", + maxRedirectDescription: "允许的最大重定向次数。设置为 0 禁用重定向。", + acceptedStatusCodesDescription: "选择被视为成功响应的状态码。", + passwordNotMatchMsg: "两次输入的密码不一致。", + notificationDescription: "通知必须被分配给监控项才能正常工作。", + keywordDescription: "在纯 HTML 或 JSON 响应中搜索关键字,区分大小写。", pauseDashboardHome: "暂停", - deleteMonitorMsg: "确定要删除此监控吗?", - deleteNotificationMsg: "确定要删除此消息通知吗?这将对所有监控生效。", - resolverserverDescription: "可自定义要使用的 DNS 服务器", + deleteMonitorMsg: "确定要删除此监控项吗?", + deleteNotificationMsg: "确定要为所有监控项删除此通知吗?", + resoverserverDescription: "默认服务器是 Cloudflare。您随时可以修改解析服务器。", rrtypeDescription: "选择要监控的资源记录类型", pauseMonitorMsg: "确定要暂停吗?", + enableDefaultNotificationDescription: "新的监控项将默认启用此通知,您仍然为每个监控项单独禁用。", + clearEventsMsg: "确定要删除此监控项的所有事件吗?", + clearHeartbeatsMsg: "确定要删除此监控项的所有心跳状态吗?", + confirmClearStatisticsMsg: "确定要删除所有统计信息吗?", + importHandleDescription: "如果想跳过同名的监控项或消息通知,请选择“跳过已存在”。“覆盖”将删除所有现有的监控项和通知。", + confirmImportMsg: "确定要导入备份吗?请确保已经选择了正确的导入选项。", + twoFAVerifyLabel: "请输入令牌码以确认二次验证:", + tokenValidSettingsMsg: "令牌码有效!您现在可以保存二次验证设置了。", + confirmEnableTwoFAMsg: "确定要启用二次验证吗?", + confirmDisableTwoFAMsg: "确定要禁用二次验证吗?", Settings: "设置", Dashboard: "仪表盘", - "New Update": "有新版本更新", + "New Update": "有新版本", Language: "语言", - Appearance: "外观设置", + Appearance: "外观", Theme: "主题", - General: "基本设置", - "Primary Base URL": "站点地址(URL)", + General: "常规", + "Primary Base URL": "站点主 URL", About: "关于", Version: "版本", - "Check Update On GitHub": "检查更新", + "Check Update On GitHub": "检查 GitHub 上的更新", List: "列表", Add: "添加", - "Add New Monitor": "创建监控项", + "Add New Monitor": "添加监控项", "Quick Stats": "状态速览", Up: "正常", Down: "故障", - Pending: "检测失败", + Pending: "正在检测", Unknown: "未知", Pause: "暂停", Name: "名称", Status: "状态", - DateTime: "时间", - Message: "事件", + DateTime: "日期时间", + Message: "消息", "No important events": "暂无重要事件", Resume: "恢复", - Edit: "修改", + Edit: "编辑", Delete: "删除", Current: "当前", - Uptime: "可用率", + Uptime: "在线时间", "Cert Exp.": "证书有效期", days: "天", day: "天", "-day": " 天", hour: "小时", "-hour": " 小时", - Response: "响应时长", + Response: "响应", Ping: "Ping", "Monitor Type": "监控类型", Keyword: "关键字", - "Friendly Name": "自定义名称", - URL: "网址 URL", + "Friendly Name": "显示名称", + URL: "URL", Hostname: "主机名", Port: "端口号", "Heartbeat Interval": "心跳间隔", Retries: "重试次数", - Advanced: "高级选项", - "Upside Down Mode": "反向监控", - "Max. Redirects": "重定向次数", + "Heartbeat Retry Interval": "心跳重试间隔", + Advanced: "高级", + "Upside Down Mode": "反转监控", + "Max. Redirects": "最大重定向次数", "Accepted Status Codes": "有效状态码", - "Push URL": "推送链接", - needPushEvery: "你需要每 {0} 秒调用一次", + "Push URL": "推送 URL", + needPushEvery: "您需要每 {0} 秒调用一次该 URL", pushOptionalParams: "可选参数:{0}", Save: "保存", - Notifications: "消息通知", - "Not available, please setup.": "无可用通道,请先设置", + Notifications: "通知", + "Not available, please setup.": "暂不可用,请先设置", "Setup Notification": "设置通知", Light: "明亮", Dark: "黑暗", Auto: "自动", - "Theme - Heartbeat Bar": "状态显示", + "Theme - Heartbeat Bar": "主题 - 心跳栏", Normal: "正常显示", Bottom: "靠下显示", None: "不显示", Timezone: "时区", - "Search Engine Visibility": "搜索引擎设置", + "Search Engine Visibility": "搜索引擎可见性", "Allow indexing": "允许索引", "Discourage search engines from indexing site": "阻止搜索引擎索引网站", "Change Password": "修改密码", "Current Password": "当前密码", - "New Password": "新的密码", - "Repeat New Password": "重复新的密码", + "New Password": "新密码", + "Repeat New Password": "重复新密码", "Update Password": "更新密码", "Disable Auth": "禁用身份验证", "Enable Auth": "启用身份验证", @@ -94,74 +106,61 @@ export default { Leave: "离开", "I understand, please disable": "我已了解,继续禁用", Confirm: "确认", - Yes: "确定", - No: "取消", + Yes: "是", + No: "否", Username: "用户名", Password: "密码", - "Remember me": "记住登录", + "Remember me": "记住我", Login: "登录", "No Monitors, please": "还没有监控项,", - "add one": "点击新增", - "Notification Type": "消息类型", + "add one": "点击添加", + "Notification Type": "通知类型", Email: "邮件", - Test: "测试一下", + Test: "测试", "Certificate Info": "证书信息", "Resolver Server": "解析服务器", "Resource Record Type": "资源记录类型", - "Last Result": "最后结果", - "Create your admin account": "创建管理员账号", + "Last Result": "上次结果", + "Create your admin account": "创建管理员账户", "Repeat Password": "重复密码", + Backup: "备份", + "Import Backup": "导入备份", + "Export Backup": "导出备份", + Export: "导出", + Import: "导入", respTime: "响应时间(毫秒)", notAvailableShort: "N/A", + "Default enabled": "默认开启", + "Apply on all existing monitors": "应用到所有现有监控项", Create: "创建", - clearEventsMsg: "确定要删除此监控项的所有事件吗?", - clearHeartbeatsMsg: "确定要删除此监控项的所有状态吗?", - confirmClearStatisticsMsg: "确定要删除所有统计信息吗?", "Clear Data": "清除数据", Events: "事件", Heartbeats: "心跳", "Auto Get": "自动获取", - enableDefaultNotificationDescription: "新的监控项将默认启用,你也可以在每个监控项中分别设置", - "Default enabled": "默认开启", - "Also apply to existing monitors": "应用到所有监控项", - Export: "导出", - Import: "导入", - backupDescription: "你可以将所有的监控项和消息通知备份到一个 JSON 文件中", - backupDescription2: "注意: 不包括历史状态和事件数据", - backupDescription3: "导出的文件中可能包含敏感信息,如消息通知的 Token 信息,请小心存放!", - alertNoFile: "请选择一个文件导入", - alertWrongFileType: "请选择一个 JSON 格式的文件", - twoFAVerifyLabel: "请输入 Token 以验证 2FA(二次验证)是否正常工作", - tokenValidSettingsMsg: "Token 有效!您现在可以保存 2FA(二次验证)设置", - confirmEnableTwoFAMsg: "确定要启用 2FA(二次验证)吗?", - confirmDisableTwoFAMsg: "确定要禁用 2FA(二次验证)吗?", - "Apply on all existing monitors": "应用到所有监控项", - "Verify Token": "验证 Token", - "Setup 2FA": "设置 2FA", - "Enable 2FA": "启用 2FA", - "Disable 2FA": "禁用 2FA", - "2FA Settings": "2FA 设置", - "Two Factor Authentication": "双因素认证", - Active: "生效", - Inactive: "未生效", - Token: "Token", - "Show URI": "显示链接", + backupDescription: "您可以将所有监控项和通知备份到 JSON 文件。", + backupDescription2: "注意: 不包括历史状态和事件数据。", + backupDescription3: "导出的文件可能包含敏感信息,例如通知的令牌信息,请小心存放!", + alertNoFile: "请选择要导入的文件", + alertWrongFileType: "请选择一个 JSON 文件", "Clear all statistics": "清除所有统计数据", - retryCheckEverySecond: "重试间隔 {0} 秒", - importHandleDescription: "如果想跳过同名的监控项或通知,请选择“跳过”;“覆盖”将删除所有现有的监控项和通知。", - confirmImportMsg: "确定要导入备份吗?请确保已经选择了正确的导入选项。", - "Heartbeat Retry Interval": "心跳重试间隔", - Backup: "备份", - "Import Backup": "导入备份", - "Export Backup": "导出备份", - "Skip existing": "跳过", + "Skip existing": "跳过已存在", Overwrite: "覆盖", Options: "选项", "Keep both": "全部保留", + "Verify Token": "验证令牌", + "Setup 2FA": "设置二次验证", + "Enable 2FA": "启用二次验证", + "Disable 2FA": "禁用二次验证", + "2FA Settings": "二次验证设置", + "Two Factor Authentication": "二次验证", + Active: "激活", + Inactive: "停用", + Token: "令牌", + "Show URI": "显示 URI", Tags: "标签", - "Add New below or Select...": "在下面新增或选择...", - "Tag with this name already exist.": "相同名称的标签已存在", - "Tag with this value already exist.": "相同内容的标签已存在", + "Add New below or Select...": "在下面添加或选择...", + "Tag with this name already exist.": "相同名称的标签已存在。", + "Tag with this value already exist.": "相同内容的标签已存在。", color: "颜色", "value (optional)": "值(可选)", Gray: "灰色", @@ -181,141 +180,141 @@ export default { "All Systems Operational": "所有服务运行正常", "Partially Degraded Service": "部分服务出现故障", "Degraded Service": "全部服务出现故障", - "Add Group": "新建分组", + "Add Group": "添加分组", "Add a monitor": "添加监控项", - "Edit Status Page": "编辑状态页", + "Edit Status Page": "编辑状态页面", "Go to Dashboard": "前往仪表盘", - "Status Page": "状态页", + "Status Page": "状态页面", + defaultNotificationName: "{notification} 通知({number})", + here: "这里", + Required: "必填", telegram: "Telegram", + "Bot Token": "Bot Token", + wayToGetTelegramToken: "您可以从 {0} 获取 Token。", + "Chat ID": "Chat ID", + supportTelegramChatID: "支持对话/群组/频道的 Chat ID", + wayToGetTelegramChatID: "您可以发送一条消息给您的机器人,然后访问此链接来查看 chat_id:", + "YOUR BOT TOKEN HERE": "这里替换成您的 BOT TOKEN", + chatIDNotFound: "未找到 Chat ID,请先给您的机器人发送一条消息。", webhook: "Webhook", + "Post URL": "Post URL", + "Content Type": "Content Type", + webhookJsonDesc: "{0} 适合现代的 HTTP 服务器,例如 Express.js", + webhookFormDataDesc: "{multipart} 适合 PHP,其中 JSON 需要使用 {decodeFunction} 解码", smtp: "电子邮件(SMTP)", + secureOptionNone: "无 / STARTTLS(常用端口 25、587)", + secureOptionTLS: "TLS(常用端口 465)", + "Ignore TLS Error": "忽略 TLS 错误", + "From Email": "发信人", + emailCustomSubject: "邮件主题", + "To Email": "收信人", + smtpCC: "抄送", + smtpBCC: "密送", discord: "Discord", + "Discord Webhook URL": "Discord Webhook URL", + wayToGetDiscordURL: "要获取,可以前往服务器设置 -> 整合 -> 创建 Webhook", + "Bot Display Name": "机器人显示名称", + "Prefix Custom Message": "自定义消息前缀", + "Hello @everyone is...": "{'@'}everyone,……", teams: "Microsoft Teams", + "Webhook URL": "Webhook URL", + wayToGetTeamsURL: "您可以在 {0} 了解如何获取 Webhook URL。", signal: "Signal", + Number: "号码", + Recipients: "收件人", + needSignalAPI: "您需要有一个支持 REST API 的 Signal 客户端。", + wayToCheckSignalURL: "您可以通过下面的 URL 了解如何设置:", + signalImportant: "重要:您不能混合设定收件人的分组和号码!", gotify: "Gotify", + "Application Token": "Application Token", + "Server URL": "服务器 URL", + Priority: "优先级", slack: "Slack", - "rocket.chat": "Rocket.chat", + "Icon Emoji": "Emoji 图标", + "Channel Name": "频道名称", + "Uptime Kuma URL": "Uptime Kuma URL", + aboutWebhooks: "关于 Webhook 的更多信息:{0}", + aboutChannelName: "如果您想绕过 Webhook 频道,请在 {0} 字段输入所需的频道名称。例如:#other-channel", + aboutKumaURL: "如果保留 Uptime Kuma URL 为空,将会默认指向项目的 GitHub 页面。", + emojiCheatSheet: "Emoji 速查:{0}", + "rocket.chat": "Rocket.Chat", pushover: "Pushover", pushy: "Pushy", octopush: "Octopush", promosms: "PromoSMS", + clicksendsms: "ClickSend SMS", lunasea: "LunaSea", - apprise: "Apprise (支持50+种通知服务)", + apprise: "Apprise (支持 50+ 种通知服务)", + GoogleChat: "Google Chat(仅 Google Workspace)", pushbullet: "Pushbullet", line: "Line Messenger", mattermost: "Mattermost", - "Feishu WebHookUrl": "飞书 WebHook 地址", - defaultNotificationName: "{notification} 通知({number})", - here: "这里", - Required: "必填", - "Bot Token": "Bot Token", - wayToGetTelegramToken: "你可以从 {0} 获取 Token。", - "Chat ID": "Chat ID", - supportTelegramChatID: "支持对话/群组/频道的 ID", - wayToGetTelegramChatID: "你可以发送一条消息给你的机器人然后到下面的链接来查看你的 chat_id:", - "YOUR BOT TOKEN HERE": "这里替换成你的 BOT TOKEN", - chatIDNotFound: "没有找到 Chat ID,请先给你的机器人发送一条消息。", - "Post URL": "目标链接", - "Content Type": "Content Type", - webhookJsonDesc: "{0} 适合现代的服务,比如 express.js", - webhookFormDataDesc: "{multipart} 适合 PHP,解码使用 {decodeFunction}", - secureOptionNone: "无 / STARTTLS(常见端口号为 25、587)", - secureOptionTLS: "TLS(常见端口号为 465)", - "Ignore TLS Error": "忽略 TLS 错误", - "From Email": "发信人", - "To Email": "收信人", - smtpCC: "抄送", - smtpBCC: "密送", - "Discord Webhook URL": "Discord Webhook 链接", - wayToGetDiscordURL: "获取方式:服务器设置 -> 整合 -> 创建 Webhook", - "Bot Display Name": "机器人显示名称", - "Prefix Custom Message": "自定义消息前缀", - "Hello @everyone is...": "{'@'}所有人,……", - "Webhook URL": "Webhook 链接", - wayToGetTeamsURL: "你可以在 {0} 获取 Webhook 链接。", - Number: "号码", - Recipients: "收件人", - needSignalAPI: "你需要有一个带 REST API 的 Signal 客户端。", - wayToCheckSignalURL: "你可以通过下面的链接来了解如何设置:", - signalImportant: "重要:你不能混合设定收件人的分组和号码!", - "Application Token": "Application Token", - "Server URL": "服务器链接", - Priority: "优先级", - "Icon Emoji": "Emoji 图标", - "Channel Name": "频道名称", - "Uptime Kuma URL": "Uptime Kuma 链接", - aboutWebhooks: "关于 Webhook 的更多信息:{0}", - aboutChannelName: "如果你想绕过 Webhook 设定的频道,请在设定 {0} 的频道名称字段为你想要的频道。例:#other-channel", - aboutKumaURL: "如果保留 Uptime Kuma 链接为空,将会默认指向项目的 Github 页面。", - emojiCheatSheet: "Emoji 参考表:{0}", "User Key": "User Key", Device: "设备", "Message Title": "消息标题", "Notification Sound": "通知铃声", "More info on:": "更多信息:{0}", - pushoverDesc1: "紧急优先级(2)会在一小时内每30秒重试一次。", - pushoverDesc2: "如果你想发送通知给不同的设备,请填写“设备”字段。", + pushoverDesc1: "紧急优先级(2)会在一小时内每隔 30 秒重试一次。", + pushoverDesc2: "如果您想发送通知给不同的设备,请填写“设备”字段。", "SMS Type": "短信类型", octopushTypePremium: "Premium(快 - 推荐用于警报)", octopushTypeLowCost: "Low Cost(慢 - 有时会被运营商屏蔽)", + checkPrice: "查看 {0} 的价格:", + apiCredentials: "API Credentials", + octopushLegacyHint: "您是否在使用旧版本的 Octopush(2011-2020)?", "Check octopush prices": "查看 Octopush 的价格 {0}。", - octopushPhoneNumber: "电话号码(国际格式,例:+33612345678)", - octopushSMSSender: "短信发送名称:3-11位大小写字母、数字和空格(a-zA-Z0-9)", + octopushPhoneNumber: "电话号码(国际格式,例如:+33612345678)", + octopushSMSSender: "短信发送名称:3-11 位大小写字母、数字和空格(a-zA-Z0-9)", "LunaSea Device ID": "LunaSea 设备 ID", - "Apprise URL": "Apprise 链接", - "Example:": "例:{0}", + "Apprise URL": "Apprise URL", + "Example:": "例如:{0}", "Read more:": "了解更多:{0}", "Status:": "状态:{0}", "Read more": "了解更多", appriseInstalled: "Apprise 已安装", appriseNotInstalled: "Apprise 未安装。{0}", "Access Token": "Access Token", - "Channel access token": "频道 access token", - "Line Developers Console": "Line Developers Console", - lineDevConsoleTo: "Line Developers Console - {0}", - "Basic Settings": "Basic Settings", - "User ID": "User ID", + "Channel access token": "频道 Access Token", + "Line Developers Console": "Line 开发者控制台", + lineDevConsoleTo: "Line 开发者控制台 - {0}", + "Basic Settings": "基本设置", + "User ID": "用户 ID", "Messaging API": "Messaging API", - wayToGetLineChannelToken: "首先访问 {0},创建一个提供者和频道(Messaging API),然后你就可以从上面提到的地方获取频道的 access token 和用户 ID。", - "Icon URL": "图标链接", - aboutIconURL: "你可以在“Icon URL”中提供一个图片地址来覆盖默认的资料图片。如果设置了 Emoji 图标此字段会被忽略。", - aboutMattermostChannelName: "如果你想覆盖 Webhook 设定的频道,请在“频道名称”字段为你想要的频道。这需要在 Mattermost 的 Webhook 设定中启用。例:#other-channel", + wayToGetLineChannelToken: "首先访问 {0},创建一个提供者和频道(Messaging API),然后您就可以从上面提到的菜单获取频道的 Access Token 和用户 ID。", + "Icon URL": "图标 URL", + aboutIconURL: "您可以在“图标 URL”中提供一个图片链接来覆盖默认的资料图片。如果设置了 Emoji 图标则此字段会被忽略。", + aboutMattermostChannelName: "您可以覆盖 Webhook 发送消息的默认频道,只需在“频道名称”字段中输入您想要的频道名。这需要在 Mattermost 的 Webhook 设置中启用。例如:#other-channel", matrix: "Matrix", - promosmsTypeEco: "SMS ECO - 便宜但是慢,并且容易超负荷。仅限波兰地区的收件人。", - promosmsTypeFlash: "SMS FLASH - 消息会自动显示在收件人设备上。仅限波兰地区的收件人。", - promosmsTypeFull: "SMS FULL - 高等级,你可以使用你自己的发件人名称(你需要先注册一个). 对于警报来说更可靠。", - promosmsTypeSpeed: "SMS SPEED - 最高优先级。非常快速可靠,但更贵(越两倍 SMS FULL 等级的价格)。", - promosmsPhoneNumber: "电话号码(波兰地区收件人可以不填区号)", - promosmsSMSSender: "短信发件人名称:已注册的名称或以下默认值之一:InfoSMS,SMS Info,MaxSMS,INFO,SMS", - checkPrice: "查看 {0} 的价格:", - octopushLegacyHint: "你是否在使用旧版本的 Octopush(2011-2020)?", - matrixHomeserverURL: "服务器链接(开头带 http(s):// 和可能的需要的端口号)", - "Internal Room Id": "Internal Room Id", - matrixDesc1: "你可以在 Matrix 客户端房间设置的高级选项找到 Internal Room Id。格式类似于 !QMdRCpUIfLwsfjxye6:home.server。", - matrixDesc2: "请不要使用你自己的 Access Token,这将开放你所有的账户权限和你加入的房间权限。你可以创建一个新的用户并邀请它至你允许的的房间中。你可以运行以下命令来获取 Access Token:{0}", - emailCustomSubject: "邮件主题", - clicksendsms: "ClickSend SMS", - GoogleChat: "Google Chat (Google Workspace only)", - apiCredentials: "API credentials", + promosmsTypeEco: "SMS ECO - 便宜但是慢,并且容易超负荷。仅限波兰地区的收信人。", + promosmsTypeFlash: "SMS FLASH - 消息会自动显示在收信人设备上。仅限波兰地区的收信人。", + promosmsTypeFull: "SMS FULL - 高级短信,您可以使用您自己的发信人名称(需要先注册)。对于警报来说更可靠。", + promosmsTypeSpeed: "SMS SPEED - 最高优先级。非常快速可靠,但更贵(大约两倍 SMS FULL 的价格)。", + promosmsPhoneNumber: "电话号码(波兰地区收信人可以不填区号)", + promosmsSMSSender: "短信发信人名称:已注册的名称或以下默认值之一:InfoSMS、SMS Info、MaxSMS、INFO、SMS", + "Feishu WebHookUrl": "飞书 WebHook URL", + matrixHomeserverURL: "服务器 URL(包含 http(s):// 和可选的端口号)", + "Internal Room Id": "内部房间 ID", + matrixDesc1: "您可以在 Matrix 客户端房间设置的高级选项内找到内部房间 ID。格式类似于 !QMdRCpUIfLwsfjxye6:home.server。", + matrixDesc2: "请不要使用您自己的 Access Token,这将开放您所有的账户权限和您已加入房间的权限。我们强烈建议您创建一个新用户并邀请它至您接收通知的房间中。您可以运行以下命令来获取 Access Token:{0}", Method: "方法", Body: "请求体", Headers: "请求头", - PushUrl: "Push URL", + PushUrl: "推送 URL", HeadersInvalidFormat: "请求头不是有效的 JSON: ", BodyInvalidFormat: "请求体不是有效的 JSON: ", - "Monitor History": "监控历史数据", - clearDataOlderThan: "保留监控历史数据 {0} 天", + "Monitor History": "监控历史", + clearDataOlderThan: "保留监控历史数据 {0} 天。", PasswordsDoNotMatch: "密码不匹配", - records: "records", - "One record": "One record", - steamApiKeyDescription: "为了监控 Steam 游戏服务器,你需要一个 Steam Web-API key。你可以在这里注册你的 API 密钥: ", + records: "记录", + "One record": "一条记录", + steamApiKeyDescription: "要监控 Steam 游戏服务器,您需要 Steam Web-API 密钥。您可以在这里注册您的 API 密钥: ", "Current User": "当前用户", recent: "最近", Done: "完成", Info: "信息", Security: "安全性", - "Steam API Key": "Steam API Key", - "Shrink Database": "缩小数据库", + "Steam API Key": "Steam API 密钥", + "Shrink Database": "压缩数据库", "Pick a RR-Type...": "选择资源记录类型...", "Pick Accepted Status Codes...": "选择有效的状态码...", Default: "默认", @@ -324,45 +323,45 @@ export default { Title: "标题", Content: "内容", Style: "类型", - info: "info", - warning: "warning", - danger: "danger", - primary: "primary", - light: "light", - dark: "dark", + info: "信息", + warning: "警告", + danger: "危险", + primary: "主要", + light: "明亮", + dark: "黑暗", Post: "发布", "Please input title and content": "请输入标题和内容", - Created: "创建于", - "Last Updated": "最后更新", - Unpin: "删除", + Created: "创建时间", + "Last Updated": "更新时间", + Unpin: "取消钉选", "Switch to Light Theme": "切换到浅色主题", "Switch to Dark Theme": "切换到深色主题", "Show Tags": "显示标签", "Hide Tags": "隐藏标签", Description: "描述", - "No monitors available.": "没有可用的监控项", - "Add one": "创建新的监控项", + "No monitors available.": "没有可用的监控项。", + "Add one": "添加一个", "No Monitors": "没有监控项", - "Untitled Group": "无标题的分组", + "Untitled Group": "无标题分组", Services: "服务", - Discard: "取消", + Discard: "放弃", Cancel: "取消", "Powered by": "Powered by", - shrinkDatabaseDescription: "这将触发 SQLite 数据库的 VACUUM 命令,如果您的数据库是在1.10.0版本之后创建的,AUTO_VACUUM 已经启用了,则不需要再使用此功能", + shrinkDatabaseDescription: "触发 SQLite 数据库的 VACUUM 命令,如果您的数据库是在 1.10.0 版本之后创建的,则已启用 AUTO_VACUUM,不再需要此操作。", serwersms: "SerwerSMS.pl", - serwersmsAPIUser: "API Username(请保留 webapi_ 前缀)", - serwersmsAPIPassword: "API Password", - serwersmsPhoneNumber: "Phone number", - serwersmsSenderName: "SMS Sender Name (registered via customer portal)", + serwersmsAPIUser: "API 用户名(包括 webapi_ 前缀)", + serwersmsAPIPassword: "API 密码", + serwersmsPhoneNumber: "电话号码", + serwersmsSenderName: "SMS 发信人名称(需要在客户中心注册)", stackfield: "Stackfield", smtpDkimSettings: "DKIM 设置", - smtpDkimDesc: "请参考 Nodemailer 的 DKIM {0} 进行配置。", + smtpDkimDesc: "请访问 Nodemailer DKIM {0} 了解配置方法。", documentation: "文档", smtpDkimDomain: "域名", smtpDkimKeySelector: "前缀选择器", smtpDkimPrivateKey: "密钥", smtpDkimHashAlgo: "哈希算法(可选)", - smtpDkimheaderFieldNames: "明确包含在哈希计算对象内的 Header 列表(可选)", + smtpDkimheaderFieldNames: "包含在哈希计算对象内的 Header 列表(可选)", smtpDkimskipFields: "不包含在哈希计算对象内的 Header 列表(可选)", Feishu: "飞书", AliyunSMS: "阿里云短信服务", @@ -372,5 +371,5 @@ export default { SecretKey: "钉钉自定义机器人加签密钥", "For safety, must use secret key": "出于安全考虑,必须使用加签密钥", WeCom: "企业微信群机器人", - "WeCom Bot Key": "企业微信群机器人 key", + "WeCom Bot Key": "企业微信群机器人 Key", }; From b3a690f3b1b604cc3d6c2a175c6fbfdae42464d7 Mon Sep 17 00:00:00 2001 From: deluxghost <deluxghost@users.noreply.github.com> Date: Wed, 2 Mar 2022 23:12:30 +0800 Subject: [PATCH 275/282] Update zh-CN.js --- src/languages/zh-CN.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/languages/zh-CN.js b/src/languages/zh-CN.js index d4d37948..9133f5d0 100644 --- a/src/languages/zh-CN.js +++ b/src/languages/zh-CN.js @@ -13,7 +13,7 @@ export default { pauseDashboardHome: "暂停", deleteMonitorMsg: "确定要删除此监控项吗?", deleteNotificationMsg: "确定要为所有监控项删除此通知吗?", - resoverserverDescription: "默认服务器是 Cloudflare。您随时可以修改解析服务器。", + resolverserverDescription: "默认服务器是 Cloudflare。您随时可以修改解析服务器。", rrtypeDescription: "选择要监控的资源记录类型", pauseMonitorMsg: "确定要暂停吗?", enableDefaultNotificationDescription: "新的监控项将默认启用此通知,您仍然为每个监控项单独禁用。", From e0175d0010c83e1783f03fc3f8bbed67494edcd5 Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Thu, 3 Mar 2022 10:21:34 +0800 Subject: [PATCH 276/282] Delete stale-bot.yml, no idea why it deleted some feature request --- .github/workflows/stale-bot.yml | 22 ---------------------- 1 file changed, 22 deletions(-) delete mode 100644 .github/workflows/stale-bot.yml diff --git a/.github/workflows/stale-bot.yml b/.github/workflows/stale-bot.yml deleted file mode 100644 index e4faaa5f..00000000 --- a/.github/workflows/stale-bot.yml +++ /dev/null @@ -1,22 +0,0 @@ -name: 'Automatically close stale issues and PRs' -on: - schedule: - - cron: '0 0 * * *' -#Run once a day at midnight - -jobs: - stale: - runs-on: ubuntu-latest - steps: - - uses: actions/stale@v4 - with: - stale-issue-message: 'We are clearing up our old issues and your ticket has been open for 6 months with no activity. Remove stale label or comment or this will be closed in 7 days.' - stale-pr-message: 'We are clearing up our old Pull Requests and yours has been open for 6 months with no activity. Remove stale label or comment or this will be closed in 7 days.' - close-issue-message: 'This issue was closed because it has been stalled for 7 days with no activity.' - close-pr-message: 'This PR was closed because it has been stalled for 7 days with no activity.' - days-before-stale: 180 - days-before-close: 0 - exempt-issue-labels: 'News,Medium,High,discussion,bug,doc,' - exempt-pr-labels: 'awaiting-approval,work-in-progress,enhancement,feature-request' - exempt-issue-assignees: 'louislam' - exempt-pr-assignees: 'louislam' From 602da565eb096ee2390a0d69797a9e7c86437505 Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Thu, 3 Mar 2022 20:49:00 +0800 Subject: [PATCH 277/282] Sort notification types --- src/components/NotificationDialog.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/NotificationDialog.vue b/src/components/NotificationDialog.vue index 659f5726..ce5d8057 100644 --- a/src/components/NotificationDialog.vue +++ b/src/components/NotificationDialog.vue @@ -85,7 +85,7 @@ export default { model: null, processing: false, id: null, - notificationTypes: Object.keys(NotificationFormList), + notificationTypes: Object.keys(NotificationFormList).sort(), notification: { name: "", /** @type { null | keyof NotificationFormList } */ From fa490d0bf1fa64ad601d9d6b12ef9410b4d5966b Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Fri, 4 Mar 2022 14:13:44 +0800 Subject: [PATCH 278/282] [Alerta] Handle general message --- server/notification-providers/alerta.js | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/server/notification-providers/alerta.js b/server/notification-providers/alerta.js index f00d1098..e692b57b 100644 --- a/server/notification-providers/alerta.js +++ b/server/notification-providers/alerta.js @@ -30,13 +30,14 @@ class Alerta extends NotificationProvider { }; if (heartbeatJSON == null) { - let testdata = Object.assign( { - event: "test", - text: "Testing Successful.", - group: "uptimekuma-test", - resource: "Test", - }, data ); - await axios.post(alertaUrl, testdata, config); + let postData = Object.assign({ + event: "msg", + text: msg, + group: "uptimekuma-msg", + resource: "Message", + }, data); + + await axios.post(alertaUrl, postData, config); } else { let datadup = Object.assign( { correlate: ["service_up", "service_down"], From e3a0eaf6af3e038d2d0f295ed770e60100ba9f53 Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Fri, 4 Mar 2022 21:48:35 +0800 Subject: [PATCH 279/282] Sort notification types in case-insensitive --- src/components/NotificationDialog.vue | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/components/NotificationDialog.vue b/src/components/NotificationDialog.vue index ce5d8057..034e1149 100644 --- a/src/components/NotificationDialog.vue +++ b/src/components/NotificationDialog.vue @@ -85,7 +85,9 @@ export default { model: null, processing: false, id: null, - notificationTypes: Object.keys(NotificationFormList).sort(), + notificationTypes: Object.keys(NotificationFormList).sort((a, b) => { + return a.toLowerCase().localeCompare(b.toLowerCase()); + }), notification: { name: "", /** @type { null | keyof NotificationFormList } */ From 88c3d952d38605c7b90e0d27f84089e1c2178285 Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Fri, 4 Mar 2022 23:20:42 +0800 Subject: [PATCH 280/282] Improve settings page's UI/UX on mobile --- src/layouts/Layout.vue | 2 +- src/pages/Settings.vue | 48 +++++++++++++++++++++++++++++++----------- src/router.js | 1 - 3 files changed, 37 insertions(+), 14 deletions(-) diff --git a/src/layouts/Layout.vue b/src/layouts/Layout.vue index 75173e1f..1a769a0d 100644 --- a/src/layouts/Layout.vue +++ b/src/layouts/Layout.vue @@ -157,7 +157,7 @@ export default { overflow: hidden; text-decoration: none; - &.router-link-exact-active { + &.router-link-exact-active, &.active { color: $primary; font-weight: bold; } diff --git a/src/pages/Settings.vue b/src/pages/Settings.vue index 58162f57..1717dd52 100644 --- a/src/pages/Settings.vue +++ b/src/pages/Settings.vue @@ -6,7 +6,7 @@ <div class="shadow-box"> <div class="row"> - <div class="settings-menu"> + <div v-if="showSubMenu" class="settings-menu col-lg-3 col-md-5"> <router-link v-for="(item, key) in subMenus" :key="key" @@ -17,8 +17,8 @@ </div> </router-link> </div> - <div class="settings-content"> - <div class="settings-content-header"> + <div class="settings-content col-lg-9 col-md-7"> + <div v-if="currentPage" class="settings-content-header"> {{ subMenus[currentPage].title }} </div> <div class="mx-3"> @@ -41,7 +41,6 @@ export default { data() { return { show: true, - settings: {}, settingsLoaded: false, }; @@ -52,11 +51,19 @@ export default { let pathSplit = useRoute().path.split("/"); let pathEnd = pathSplit[pathSplit.length - 1]; if (!pathEnd || pathEnd === "settings") { - return "general"; + return null; } return pathEnd; }, + showSubMenu() { + if (this.$root.isMobile) { + return !this.currentPage; + } else { + return true; + } + }, + subMenus() { return { general: { @@ -84,11 +91,26 @@ export default { }, }, + watch: { + "$root.isMobile"() { + this.loadGeneralPage(); + } + }, + mounted() { this.loadSettings(); + this.loadGeneralPage(); }, methods: { + + // For desktop only, mobile do nothing + loadGeneralPage() { + if (!this.currentPage && !this.$root.isMobile) { + this.$router.push("/settings/general"); + } + }, + loadSettings() { this.$root.getSocket().emit("getSettings", (res) => { this.settings = res.data; @@ -115,7 +137,7 @@ export default { this.loadSettings(); }); }, - }, + } }; </script> @@ -136,9 +158,6 @@ footer { } .settings-menu { - flex: 0 0 auto; - width: 300px; - a { text-decoration: none !important; } @@ -171,9 +190,6 @@ footer { } .settings-content { - flex: 0 0 auto; - width: calc(100% - 300px); - .settings-content-header { width: calc(100% + 20px); border-bottom: 1px solid #dee2e6; @@ -187,6 +203,14 @@ footer { background: $dark-header-bg; border-bottom: 0; } + + .mobile & { + padding: 15px 0 0 0; + + .dark & { + background-color: transparent; + } + } } } </style> diff --git a/src/router.js b/src/router.js index a2414eb6..c881dc97 100644 --- a/src/router.js +++ b/src/router.js @@ -70,7 +70,6 @@ const routes = [ children: [ { path: "general", - alias: "", component: General, }, { From 6a57c443fd3f756dac334a76b22d65a1107eab38 Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Mon, 7 Mar 2022 15:52:17 +0800 Subject: [PATCH 281/282] Set telegram as the default notification type --- src/components/NotificationDialog.vue | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/components/NotificationDialog.vue b/src/components/NotificationDialog.vue index 034e1149..8c03dbbd 100644 --- a/src/components/NotificationDialog.vue +++ b/src/components/NotificationDialog.vue @@ -145,12 +145,9 @@ export default { this.id = null; this.notification = { name: "", - type: null, + type: "telegram", isDefault: false, }; - - // Set Default value here - this.notification.type = this.notificationTypes[0]; } this.modal.show(); From 1fa4a166635441b2733239cc8175b96d0640e23e Mon Sep 17 00:00:00 2001 From: Louis Lam <louislam@users.noreply.github.com> Date: Mon, 7 Mar 2022 16:24:24 +0800 Subject: [PATCH 282/282] Check beta release --- server/check-version.js | 16 +++++++++++++++- src/components/settings/About.vue | 27 ++++++++++++++++++++++++++- 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/server/check-version.js b/server/check-version.js index a3465ddf..f3b15e84 100644 --- a/server/check-version.js +++ b/server/check-version.js @@ -1,5 +1,6 @@ -const { setSetting } = require("./util-server"); +const { setSetting, setting } = require("./util-server"); const axios = require("axios"); +const compareVersions = require("compare-versions"); exports.version = require("../package.json").version; exports.latestVersion = null; @@ -16,6 +17,19 @@ exports.startInterval = () => { res.data.slow = "1000.0.0"; } + if (!await setting("checkUpdate")) { + return; + } + + let checkBeta = await setting("checkBeta"); + + if (checkBeta && res.data.beta) { + if (compareVersions.compare(res.data.beta, res.data.beta, ">")) { + exports.latestVersion = res.data.beta; + return; + } + } + if (res.data.slow) { exports.latestVersion = res.data.slow; } diff --git a/src/components/settings/About.vue b/src/components/settings/About.vue index baa72f39..ad134094 100644 --- a/src/components/settings/About.vue +++ b/src/components/settings/About.vue @@ -4,14 +4,39 @@ <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 class="my-3 update-link"><a href="https://github.com/louislam/uptime-kuma/releases" target="_blank" rel="noopener">{{ $t("Check Update On GitHub") }}</a></div> + + <div class="mt-1"> + <div class="form-check"> + <label><input v-model="settings.checkUpdate" type="checkbox" @change="saveSettings()" /> Show update if available</label> + </div> + + <div class="form-check"> + <label><input v-model="settings.checkBeta" type="checkbox" :disabled="!settings.checkUpdate" @change="saveSettings()" /> Also check beta release</label> + </div> + </div> </div> </div> </template> <script> export default { + computed: { + settings() { + return this.$parent.$parent.$parent.settings; + }, + saveSettings() { + return this.$parent.$parent.$parent.saveSettings; + }, + settingsLoaded() { + return this.$parent.$parent.$parent.settingsLoaded; + }, + }, + watch: { + + } }; </script>