diff --git a/overseerr-api.yml b/overseerr-api.yml index dccd60ba..3dd8d31e 100644 --- a/overseerr-api.yml +++ b/overseerr-api.yml @@ -871,6 +871,26 @@ components: type: string chatId: type: string + PushoverSettings: + type: object + properties: + enabled: + type: boolean + example: false + types: + type: number + example: 2 + options: + type: object + properties: + accessToken: + type: string + userToken: + type: string + priority: + type: number + sound: + type: string NotificationEmailSettings: type: object properties: @@ -1720,6 +1740,52 @@ paths: responses: '204': description: Test notification attempted + /settings/notifications/pushover: + get: + summary: Return current pushover notification settings + description: Returns current pushover notification settings in JSON format + tags: + - settings + responses: + '200': + description: Returned pushover settings + content: + application/json: + schema: + $ref: '#/components/schemas/PushoverSettings' + post: + summary: Update pushover notification settings + description: Update current pushover notification settings with provided values + tags: + - settings + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PushoverSettings' + responses: + '200': + description: 'Values were sucessfully updated' + content: + application/json: + schema: + $ref: '#/components/schemas/PushoverSettings' + /settings/notifications/pushover/test: + post: + summary: Test the provided pushover settings + description: Sends a test notification to the pushover agent + tags: + - settings + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PushoverSettings' + responses: + '204': + description: Test notification attempted /settings/notifications/slack: get: summary: Return current slack notification settings diff --git a/package.json b/package.json index 69dafaa6..2eabdaab 100644 --- a/package.json +++ b/package.json @@ -18,19 +18,19 @@ "license": "MIT", "dependencies": { "@svgr/webpack": "^5.5.0", - "axios": "^0.21.0", + "axios": "^0.21.1", "body-parser": "^1.19.0", "bowser": "^2.11.0", "connect-typeorm": "^1.1.4", "cookie-parser": "^1.4.5", "email-templates": "^8.0.2", "express": "^4.17.1", - "express-openapi-validator": "^4.9.4", + "express-openapi-validator": "^4.10.2", "express-session": "^1.17.1", "formik": "^2.2.6", "intl": "^1.2.5", "lodash": "^4.17.20", - "next": "^10.0.3", + "next": "^10.0.4", "node-schedule": "^1.3.2", "nodemailer": "^6.4.17", "nookies": "^2.5.0", @@ -39,16 +39,16 @@ "react": "17.0.1", "react-dom": "17.0.1", "react-intersection-observer": "^8.31.0", - "react-intl": "^5.10.9", + "react-intl": "^5.10.11", "react-markdown": "^5.0.3", "react-spring": "^8.0.27", "react-toast-notifications": "^2.4.0", "react-transition-group": "^4.4.1", "react-truncate-markup": "^5.0.1", - "react-use-clipboard": "1.0.2", + "react-use-clipboard": "1.0.7", "reflect-metadata": "^0.1.13", "sqlite3": "^5.0.0", - "swagger-ui-express": "^4.1.5", + "swagger-ui-express": "^4.1.6", "swr": "^0.3.11", "typeorm": "^0.2.29", "uuid": "^8.3.2", @@ -71,11 +71,11 @@ "@tailwindcss/typography": "^0.3.1", "@types/body-parser": "^1.19.0", "@types/cookie-parser": "^1.4.2", - "@types/email-templates": "^7.1.0", + "@types/email-templates": "^8.0.0", "@types/express": "^4.17.9", "@types/express-session": "^1.17.0", - "@types/lodash": "^4.14.165", - "@types/node": "^14.14.14", + "@types/lodash": "^4.14.167", + "@types/node": "^14.14.20", "@types/node-schedule": "^1.3.1", "@types/nodemailer": "^6.4.0", "@types/react": "^17.0.0", @@ -87,20 +87,20 @@ "@types/xml2js": "^0.4.7", "@types/yamljs": "^0.2.31", "@types/yup": "^0.29.11", - "@typescript-eslint/eslint-plugin": "^4.10.0", - "@typescript-eslint/parser": "^4.10.0", + "@typescript-eslint/eslint-plugin": "^4.12.0", + "@typescript-eslint/parser": "^4.12.0", "autoprefixer": "^9", - "babel-plugin-react-intl": "^8.2.22", + "babel-plugin-react-intl": "^8.2.25", "babel-plugin-react-intl-auto": "^3.3.0", "commitizen": "^4.2.2", "copyfiles": "^2.4.1", "cz-conventional-changelog": "^3.3.0", - "eslint": "^7.16.0", + "eslint": "^7.17.0", "eslint-config-prettier": "^7.1.0", - "eslint-plugin-formatjs": "^2.9.11", + "eslint-plugin-formatjs": "^2.10.2", "eslint-plugin-jsx-a11y": "^6.4.1", - "eslint-plugin-prettier": "^3.3.0", - "eslint-plugin-react": "^7.21.5", + "eslint-plugin-prettier": "^3.3.1", + "eslint-plugin-react": "^7.22.0", "eslint-plugin-react-hooks": "^4.2.0", "extract-react-intl-messages": "^4.1.1", "husky": "^4.3.6", @@ -109,7 +109,7 @@ "postcss": "^7", "postcss-preset-env": "^6.7.0", "prettier": "^2.2.1", - "semantic-release": "^17.3.0", + "semantic-release": "^17.3.1", "semantic-release-docker": "^2.2.0", "tailwindcss": "npm:@tailwindcss/postcss7-compat", "ts-node": "^9.1.1", diff --git a/server/index.ts b/server/index.ts index eaf36833..32b14447 100644 --- a/server/index.ts +++ b/server/index.ts @@ -20,6 +20,7 @@ import EmailAgent from './lib/notifications/agents/email'; import TelegramAgent from './lib/notifications/agents/telegram'; import { getAppVersion } from './utils/appVersion'; import SlackAgent from './lib/notifications/agents/slack'; +import PushoverAgent from './lib/notifications/agents/pushover'; const API_SPEC_PATH = path.join(__dirname, '../overseerr-api.yml'); @@ -49,6 +50,7 @@ app new EmailAgent(), new SlackAgent(), new TelegramAgent(), + new PushoverAgent(), ]); // Start Jobs diff --git a/server/job/plexsync/index.ts b/server/job/plexsync/index.ts index f92f5ee0..6ee93f76 100644 --- a/server/job/plexsync/index.ts +++ b/server/job/plexsync/index.ts @@ -345,7 +345,7 @@ class JobPlexSync { private log( message: string, - level: 'info' | 'error' | 'debug' = 'debug', + level: 'info' | 'error' | 'debug' | 'warn' = 'debug', optional?: Record ): void { logger[level](message, { label: 'Plex Sync', ...optional }); @@ -356,11 +356,15 @@ class JobPlexSync { if (!this.running) { this.running = true; const userRepository = getRepository(User); - const admin = await userRepository.findOneOrFail({ + const admin = await userRepository.findOne({ select: ['id', 'plexToken'], order: { id: 'ASC' }, }); + if (!admin) { + return this.log('No admin configured. Plex sync skipped.', 'warn'); + } + this.plexClient = new PlexAPI({ plexToken: admin.plexToken }); this.libraries = settings.plex.libraries.filter( diff --git a/server/lib/notifications/agents/pushover.ts b/server/lib/notifications/agents/pushover.ts new file mode 100644 index 00000000..072352ab --- /dev/null +++ b/server/lib/notifications/agents/pushover.ts @@ -0,0 +1,122 @@ +import axios from 'axios'; +import { hasNotificationType, Notification } from '..'; +import logger from '../../../logger'; +import { getSettings, NotificationAgentPushover } from '../../settings'; +import { BaseAgent, NotificationAgent, NotificationPayload } from './agent'; + +interface PushoverPayload { + token: string; + user: string; + title: string; + message: string; + html: number; +} + +class PushoverAgent + extends BaseAgent + implements NotificationAgent { + protected getSettings(): NotificationAgentPushover { + if (this.settings) { + return this.settings; + } + + const settings = getSettings(); + + return settings.notifications.agents.pushover; + } + + public shouldSend(type: Notification): boolean { + if ( + this.getSettings().enabled && + this.getSettings().options.accessToken && + this.getSettings().options.userToken && + hasNotificationType(type, this.getSettings().types) + ) { + return true; + } + + return false; + } + + private constructMessageDetails( + type: Notification, + payload: NotificationPayload + ): { title: string; message: string } { + const settings = getSettings(); + let messageTitle = ''; + let message = ''; + + const title = payload.subject; + const plot = payload.message; + const user = payload.notifyUser.username; + + switch (type) { + case Notification.MEDIA_PENDING: + messageTitle = 'New Request'; + message += `${title}\n\n`; + message += `${plot}\n\n`; + message += `Requested By\n${user}\n\n`; + message += `Status\nPending Approval\n`; + break; + case Notification.MEDIA_APPROVED: + messageTitle = 'Request Approved'; + message += `${title}\n\n`; + message += `${plot}\n\n`; + message += `Requested By\n${user}\n\n`; + message += `Status\nProcessing Request\n`; + break; + case Notification.MEDIA_AVAILABLE: + messageTitle = 'Now available!'; + message += `${title}\n\n`; + message += `${plot}\n\n`; + message += `Requested By\n${user}\n\n`; + message += `Status\nAvailable\n`; + break; + case Notification.TEST_NOTIFICATION: + messageTitle = 'Test Notification'; + message += `${title}\n\n`; + message += `${plot}\n\n`; + message += `Requested By\n${user}\n`; + break; + } + + if (settings.main.applicationUrl && payload.media) { + const actionUrl = `${settings.main.applicationUrl}/${payload.media.mediaType}/${payload.media.tmdbId}`; + message += `Open in Overseerr`; + } + + return { title: messageTitle, message }; + } + + public async send( + type: Notification, + payload: NotificationPayload + ): Promise { + logger.debug('Sending Pushover notification', { label: 'Notifications' }); + try { + const endpoint = 'https://api.pushover.net/1/messages.json'; + + const { accessToken, userToken } = this.getSettings().options; + + const { title, message } = this.constructMessageDetails(type, payload); + + await axios.post(endpoint, { + token: accessToken, + user: userToken, + title: title, + message: message, + html: 1, + } as PushoverPayload); + + return true; + } catch (e) { + logger.error('Error sending Pushover notification', { + label: 'Notifications', + message: e.message, + }); + return false; + } + } +} + +export default PushoverAgent; diff --git a/server/lib/settings.ts b/server/lib/settings.ts index 75d3c72f..cea7774a 100644 --- a/server/lib/settings.ts +++ b/server/lib/settings.ts @@ -92,11 +92,21 @@ export interface NotificationAgentTelegram extends NotificationAgentConfig { }; } +export interface NotificationAgentPushover extends NotificationAgentConfig { + options: { + accessToken: string; + userToken: string; + priority: number; + sound: string; + }; +} + interface NotificationAgents { email: NotificationAgentEmail; discord: NotificationAgentDiscord; slack: NotificationAgentSlack; telegram: NotificationAgentTelegram; + pushover: NotificationAgentPushover; } interface NotificationSettings { @@ -174,6 +184,16 @@ class Settings { chatId: '', }, }, + pushover: { + enabled: false, + types: 0, + options: { + accessToken: '', + userToken: '', + priority: 0, + sound: '', + }, + }, }, }, }; diff --git a/server/routes/settings.ts b/server/routes/settings.ts index ba9b91bc..91d196e1 100644 --- a/server/routes/settings.ts +++ b/server/routes/settings.ts @@ -26,6 +26,7 @@ import DiscordAgent from '../lib/notifications/agents/discord'; import EmailAgent from '../lib/notifications/agents/email'; import SlackAgent from '../lib/notifications/agents/slack'; import TelegramAgent from '../lib/notifications/agents/telegram'; +import PushoverAgent from '../lib/notifications/agents/pushover'; const settingsRoutes = Router(); @@ -538,6 +539,40 @@ settingsRoutes.post('/notifications/telegram/test', (req, res, next) => { return res.status(204).send(); }); +settingsRoutes.get('/notifications/pushover', (_req, res) => { + const settings = getSettings(); + + res.status(200).json(settings.notifications.agents.pushover); +}); + +settingsRoutes.post('/notifications/pushover', (req, res) => { + const settings = getSettings(); + + settings.notifications.agents.pushover = req.body; + settings.save(); + + res.status(200).json(settings.notifications.agents.pushover); +}); + +settingsRoutes.post('/notifications/pushover/test', (req, res, next) => { + if (!req.user) { + return next({ + status: 500, + message: 'User information missing from request', + }); + } + + const pushoverAgent = new PushoverAgent(req.body); + pushoverAgent.send(Notification.TEST_NOTIFICATION, { + notifyUser: req.user, + subject: 'Test Notification', + message: + 'This is a test notification! Check check, 1, 2, 3. Are we coming in clear?', + }); + + return res.status(204).send(); +}); + settingsRoutes.get('/notifications/email', (_req, res) => { const settings = getSettings(); diff --git a/src/assets/extlogos/pushover.svg b/src/assets/extlogos/pushover.svg new file mode 100644 index 00000000..e3d7161f --- /dev/null +++ b/src/assets/extlogos/pushover.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/components/PersonCard/index.tsx b/src/components/PersonCard/index.tsx index 592ab445..ce446920 100644 --- a/src/components/PersonCard/index.tsx +++ b/src/components/PersonCard/index.tsx @@ -1,5 +1,5 @@ import Link from 'next/link'; -import React from 'react'; +import React, { useState } from 'react'; interface PersonCardProps { personId: number; @@ -16,13 +16,30 @@ const PersonCard: React.FC = ({ profilePath, canExpand = false, }) => { + const [isHovered, setHovered] = useState(false); + return ( - + { + setHovered(true); + }} + onMouseLeave={() => setHovered(false)} + onKeyDown={(e) => { + if (e.key === 'Enter') { + setHovered(true); + } + }} + role="link" + tabIndex={0} + >
diff --git a/src/components/Settings/Notifications/NotificationsPushover/index.tsx b/src/components/Settings/Notifications/NotificationsPushover/index.tsx new file mode 100644 index 00000000..9d2c8d86 --- /dev/null +++ b/src/components/Settings/Notifications/NotificationsPushover/index.tsx @@ -0,0 +1,257 @@ +import React from 'react'; +import { Field, Form, Formik } from 'formik'; +import useSWR from 'swr'; +import LoadingSpinner from '../../../Common/LoadingSpinner'; +import Button from '../../../Common/Button'; +import { defineMessages, useIntl } from 'react-intl'; +import axios from 'axios'; +import * as Yup from 'yup'; +import { useToasts } from 'react-toast-notifications'; +import Alert from '../../../Common/Alert'; +import NotificationTypeSelector from '../../../NotificationTypeSelector'; + +const messages = defineMessages({ + save: 'Save Changes', + saving: 'Saving...', + agentenabled: 'Agent Enabled', + accessToken: 'Access Token', + userToken: 'User Token', + validationAccessTokenRequired: 'You must provide an access token.', + validationUserTokenRequired: 'You must provide a user token.', + pushoversettingssaved: 'Pushover notification settings saved!', + pushoversettingsfailed: 'Pushover notification settings failed to save.', + testsent: 'Test notification sent!', + test: 'Test', + settinguppushover: 'Setting up Pushover Notifications', + settinguppushoverDescription: + 'To setup Pushover you need to register an application and get the access token.\ + When setting up the application you can use one of the icons in the public folder on github.\ + You also need the pushover user token which can be found on the start page when you log in.', + notificationtypes: 'Notification Types', +}); + +const NotificationsPushover: React.FC = () => { + const intl = useIntl(); + const { addToast } = useToasts(); + const { data, error, revalidate } = useSWR( + '/api/v1/settings/notifications/pushover' + ); + + const NotificationsPushoverSchema = Yup.object().shape({ + accessToken: Yup.string().required( + intl.formatMessage(messages.validationAccessTokenRequired) + ), + userToken: Yup.string().required( + intl.formatMessage(messages.validationUserTokenRequired) + ), + }); + + if (!data && !error) { + return ; + } + + return ( + { + try { + await axios.post('/api/v1/settings/notifications/pushover', { + enabled: values.enabled, + types: values.types, + options: { + accessToken: values.accessToken, + userToken: values.userToken, + }, + }); + addToast(intl.formatMessage(messages.pushoversettingssaved), { + appearance: 'success', + autoDismiss: true, + }); + } catch (e) { + addToast(intl.formatMessage(messages.pushoversettingsfailed), { + appearance: 'error', + autoDismiss: true, + }); + } finally { + revalidate(); + } + }} + > + {({ errors, touched, isSubmitting, values, isValid, setFieldValue }) => { + const testSettings = async () => { + await axios.post('/api/v1/settings/notifications/pushover/test', { + enabled: true, + types: values.types, + options: { + accessToken: values.accessToken, + userToken: values.userToken, + }, + }); + + addToast(intl.formatMessage(messages.testsent), { + appearance: 'info', + autoDismiss: true, + }); + }; + + return ( + <> + + {intl.formatMessage(messages.settinguppushoverDescription, { + RegisterApplicationLink: function RegisterApplicationLink(msg) { + return ( + + {msg} + + ); + }, + IconLink: function IconLink(msg) { + return ( + + {msg} + + ); + }, + })} + +
+
+ +
+ +
+
+
+ +
+
+ +
+ {errors.accessToken && touched.accessToken && ( +
+ {errors.accessToken} +
+ )} +
+ +
+
+ +
+ {errors.userToken && touched.userToken && ( +
{errors.userToken}
+ )} +
+
+
+
+
+
+
+ {intl.formatMessage(messages.notificationtypes)} +
+
+
+
+ + setFieldValue('types', newTypes) + } + /> +
+
+
+
+
+
+
+ + + + + + +
+
+
+ + ); + }} + + ); +}; + +export default NotificationsPushover; diff --git a/src/components/Settings/SettingsNotifications.tsx b/src/components/Settings/SettingsNotifications.tsx index 28af73f8..e873ecf8 100644 --- a/src/components/Settings/SettingsNotifications.tsx +++ b/src/components/Settings/SettingsNotifications.tsx @@ -5,6 +5,7 @@ import { defineMessages, useIntl } from 'react-intl'; import DiscordLogo from '../../assets/extlogos/discord_white.svg'; import SlackLogo from '../../assets/extlogos/slack.svg'; import TelegramLogo from '../../assets/extlogos/telegram.svg'; +import PushoverLogo from '../../assets/extlogos/pushover.svg'; const messages = defineMessages({ notificationsettings: 'Notification Settings', @@ -77,6 +78,17 @@ const settingsRoutes: SettingsRoute[] = [ route: '/settings/notifications/telegram', regex: /^\/settings\/notifications\/telegram/, }, + { + text: 'Pushover', + content: ( + + + Pushover + + ), + route: '/settings/notifications/pushover', + regex: /^\/settings\/notifications\/pushover/, + }, ]; const SettingsNotifications: React.FC = ({ children }) => { diff --git a/src/components/Slider/index.tsx b/src/components/Slider/index.tsx index 743894df..03923225 100644 --- a/src/components/Slider/index.tsx +++ b/src/components/Slider/index.tsx @@ -207,7 +207,7 @@ const Slider: React.FC = ({
diff --git a/src/components/TitleCard/index.tsx b/src/components/TitleCard/index.tsx index 8e5f21e5..437d8e43 100644 --- a/src/components/TitleCard/index.tsx +++ b/src/components/TitleCard/index.tsx @@ -76,7 +76,9 @@ const TitleCard: React.FC = ({ onCancel={closeModal} />
= ({ role="link" tabIndex={0} > -
-
-
- {mediaType === 'movie' - ? intl.formatMessage(messages.movie) - : intl.formatMessage(messages.tvshow)} -
-
-
- {(currentStatus === MediaStatus.AVAILABLE || - currentStatus === MediaStatus.PARTIALLY_AVAILABLE) && ( -
- - - +
+
+
+
+ {mediaType === 'movie' + ? intl.formatMessage(messages.movie) + : intl.formatMessage(messages.tvshow)}
- )} - {currentStatus === MediaStatus.PENDING && ( -
- - - -
- )} - {currentStatus === MediaStatus.PROCESSING && ( -
- - - -
- )} +
+
+ {(currentStatus === MediaStatus.AVAILABLE || + currentStatus === MediaStatus.PARTIALLY_AVAILABLE) && ( +
+ + + +
+ )} + {currentStatus === MediaStatus.PENDING && ( +
+ + + +
+ )} + {currentStatus === MediaStatus.PROCESSING && ( +
+ + + +
+ )} +
{title} abgebrochen", "components.RequestModal.requestSuccess": "{title} angefragt.", - "components.RequestModal.requestadmin": "Deine Anfrage wird direkt genehmigt werden.", + "components.RequestModal.requestadmin": "Deine Anfrage wird direkt genehmigt.", "components.RequestModal.requestfrom": "Derzeit steht eine Anfrage von {username} aus", "components.RequestModal.requesting": "Wird angefragt …", "components.RequestModal.requestseasons": "{seasonCount} {seasonCount, plural, one {Staffel} other {Staffeln}} anfragen", @@ -183,7 +183,7 @@ "components.Settings.jobname": "Aufgabenname", "components.Settings.librariesRemaining": "Verbleibende Bibliotheken: {count}", "components.Settings.manualscan": "Manueller Bibliotheksscan", - "components.Settings.manualscanDescription": "Normalerweise wird dies nur einmal alle 24 Stunden ausgeführt. Overseerr überprüft die kürzlich hinzugefügten Plex-Server aggressiver. Wenn Sie Plex zum ersten Mal konfigurieren, wird ein einmaliger vollständiger manueller Bibliotheksscan empfohlen!", + "components.Settings.manualscanDescription": "Normalerweise wird dies nur einmal alle 24 Stunden ausgeführt. Overseerr überprüft die kürzlich hinzugefügten Plex-Server aggressiver. Wenn du Plex zum ersten Mal konfigurierst, wird ein einmaliger vollständiger manueller Bibliotheksscan empfohlen!", "components.Settings.menuAbout": "Über", "components.Settings.menuGeneralSettings": "Allgemeine Einstellungen", "components.Settings.menuJobs": "Aufgaben", @@ -367,11 +367,11 @@ "components.Settings.defaultPermissions": "Standardbenutzerberechtigungen", "components.UserList.importfromplexerror": "Beim Importieren von Benutzern aus Plex ist etwas schief gelaufen", "components.UserList.importfromplex": "Benutzer aus Plex importieren", - "components.TvDetails.viewfullcrew": "Komplettes Team anzeigen", - "components.TvDetails.TvCrew.fullseriescrew": "Komplettes Serien Team", - "components.PersonDetails.crewmember": "Teammitglied", - "components.MovieDetails.viewfullcrew": "Komplettes Team anzeigen", - "components.MovieDetails.MovieCrew.fullcrew": "Komplettes Team", + "components.TvDetails.viewfullcrew": "Komplette Crew anzeigen", + "components.TvDetails.TvCrew.fullseriescrew": "Komplette Serien Crew", + "components.PersonDetails.crewmember": "Crewmitglied", + "components.MovieDetails.viewfullcrew": "Komplette Crew anzeigen", + "components.MovieDetails.MovieCrew.fullcrew": "Komplette Crew", "components.UserList.importedfromplex": "{userCount, plural, =0 {Keine neuen Benutzer} one {# neuer Benutzer} other {# neue Benutzer}} aus Plex importiert", "components.TvDetails.firstAirDate": "Erstausstrahlung", "components.Settings.Notifications.ssldisabletip": "SSL sollte bei Standard-TLS-Verbindungen deaktiviert werden (Port 587)", @@ -391,5 +391,66 @@ "i18n.requested": "Angefragt", "i18n.retry": "Wiederholen", "i18n.failed": "Fehlgeschlagen", - "components.RequestList.RequestItem.failedretry": "Beim Wiederholen der Anfrage ist etwas schief gelaufen" + "components.RequestList.RequestItem.failedretry": "Beim Wiederholen der Anfrage ist etwas schief gelaufen", + "components.Settings.Notifications.NotificationsSlack.settingupslackDescription": "Um Slack-Benachrichtigungen zu verwenden, musst du eine Incoming Webhook-Integration erstellen und die unten angegebene Webhook-URL verwenden.", + "components.Settings.Notifications.NotificationsSlack.webhookUrlPlaceholder": "Webhook URL", + "components.Settings.Notifications.NotificationsSlack.webhookUrl": "Webhook URL", + "components.Settings.Notifications.NotificationsSlack.testsent": "Testbenachrichtigung gesendet!", + "components.Settings.Notifications.NotificationsSlack.test": "Test", + "components.Settings.Notifications.NotificationsSlack.slacksettingssaved": "Slack-Benachrichtigungseinstellungen gespeichert!", + "components.Settings.Notifications.NotificationsSlack.slacksettingsfailed": "Die Einstellungen für Slack-Benachrichtigungen konnten nicht gespeichert werden.", + "components.Settings.Notifications.NotificationsSlack.settingupslack": "Einrichten von Slack-Benachrichtigungen", + "components.Settings.Notifications.NotificationsSlack.saving": "Speichern …", + "components.Settings.Notifications.NotificationsSlack.save": "Änderungen speichern", + "components.Settings.Notifications.NotificationsSlack.agentenabled": "Agent aktiviert", + "components.UserEdit.autoapproveSeries": "Automatische Genehmigung von Serien", + "components.UserEdit.autoapproveMovies": "Automatische Genehmigung von Filmen", + "components.UserEdit.autoapproveSeriesDescription": "Gewährt die automatische Genehmigung für Serienanfragen von diesem Benutzer.", + "components.UserEdit.autoapproveMoviesDescription": "Gewährt die automatische Genehmigung für Filmanfragen von diesem Benutzer.", + "components.Settings.Notifications.NotificationsSlack.validationWebhookUrlRequired": "Du musst eine Webhook-URL angeben", + "components.Settings.Notifications.validationChatIdRequired": "Du musst eine Chat-ID angeben.", + "components.Settings.Notifications.validationBotAPIRequired": "Du musst einen Bot-API-Schlüssel angeben.", + "components.Settings.Notifications.telegramsettingssaved": "Telegram-Benachrichtigungseinstellungen gespeichert!", + "components.Settings.Notifications.telegramsettingsfailed": "Die Einstellungen für die Telegram-Benachrichtigung konnten nicht gespeichert werden.", + "components.Settings.Notifications.senderName": "Absendername", + "components.Settings.Notifications.settinguptelegramDescription": "Um Telegram einzurichten, musst du einen Bot erstellen und den Bot-API-Schlüssel erhalten. Außerdem benötigst du die Chat-ID für den Chat, an den der Bot Benachrichtigungen senden soll. Du kannst dies tun, indem du @get_id_bot zum Chat oder Gruppenchat hinzufügst.", + "components.Settings.Notifications.settinguptelegram": "Einrichten von Telegram-Benachrichtigungen", + "components.Settings.Notifications.chatId": "Chat-ID", + "components.Settings.Notifications.botAPI": "Bot-API", + "components.StatusChacker.reloadOverseerr": "Overseerr neu laden", + "components.StatusChacker.newversionavailable": "Neue Version verfügbar", + "components.StatusChacker.newversionDescription": "Eine Aktualisierung ist jetzt verfügbar. Klicke auf die Schaltfläche unten, um die Anwendung neu zu laden.", + "components.Settings.SettingsAbout.documentation": "Dokumentation", + "components.Settings.Notifications.notificationtypes": "Benachrichtigungstypen", + "components.Settings.Notifications.NotificationsSlack.notificationtypes": "Benachrichtigungstypen", + "components.NotificationTypeSelector.mediarequestedDescription": "Sendet eine Benachrichtigung, wenn neue Medien angefordert werden. Bei bestimmten Agenten wird die Benachrichtigung nur an Administratoren oder Benutzer mit der Berechtigung „Anfragen verwalten“ gesendet.", + "components.NotificationTypeSelector.mediarequested": "Angeforderte Medien", + "components.NotificationTypeSelector.mediafailedDescription": "Sendet eine Benachrichtigung, wenn Medien nicht zu Diensten hinzugefügt werden (Radarr / Sonarr). Bei bestimmten Agenten wird die Benachrichtigung nur an Administratoren oder Benutzer mit der Berechtigung „Anfragen verwalten“ gesendet.", + "components.NotificationTypeSelector.mediafailed": "Medienhinzufügen fehlgeschlagen", + "components.NotificationTypeSelector.mediaapprovedDescription": "Sendet eine Benachrichtigung, wenn Medien genehmigt werden.", + "components.NotificationTypeSelector.mediaavailableDescription": "Sendet eine Benachrichtigung, wenn Medien verfügbar werden.", + "components.NotificationTypeSelector.mediaavailable": "Medien verfügbar", + "components.NotificationTypeSelector.mediaapproved": "Medien genehmigt", + "i18n.request": "Anfragen", + "components.Settings.Notifications.NotificationsPushover.settinguppushoverDescription": "Um Pushover einzurichten, müssen Sie registrieren eine Anwendung registrieren und das Zugriffstoken erhalten. Beim Einrichten der Anwendung können Sie eines der Symbole im öffentlichen Ordner auf Github verwenden. Sie benötigen auch das Pushover Benutzertoken, das Sie auf der Startseite finden können, wenn Sie sich anmelden.", + "components.Settings.Notifications.NotificationsPushover.validationUserTokenRequired": "Du musst ein Benutzertoken bereitstellen.", + "components.Settings.Notifications.NotificationsPushover.validationAccessTokenRequired": "Du musst ein Zugriffstoken bereitstellen.", + "components.Settings.Notifications.NotificationsPushover.userToken": "Benutzertoken", + "components.Settings.Notifications.NotificationsPushover.testsent": "Test-Benarichtigung gesendet!", + "components.Settings.Notifications.NotificationsPushover.test": "Test", + "components.Settings.Notifications.NotificationsPushover.settinguppushover": "Pushover-Benarichtigungseinstellungen", + "components.Settings.Notifications.NotificationsPushover.saving": "Speichern …", + "components.Settings.Notifications.NotificationsPushover.save": "Änderungen speichern", + "components.Settings.Notifications.NotificationsPushover.pushoversettingssaved": "Pushover-Benarichtigungseinstellungen erfolgreich gespeichert!", + "components.Settings.Notifications.NotificationsPushover.notificationtypes": "Benarichtungstypen", + "components.Settings.Notifications.NotificationsPushover.pushoversettingsfailed": "Pushover-Benarichtigungseinstellungen konnten nicht gespeichert werden.", + "components.Settings.Notifications.NotificationsPushover.agentenabled": "Agent aktiviert", + "components.Settings.Notifications.NotificationsPushover.accessToken": "Zugangstoken", + "components.RequestList.sortModified": "Zuletzt geändert", + "components.RequestList.sortAdded": "Anfragedatum", + "components.RequestList.showallrequests": "All Anfragen anzeigen", + "components.RequestList.noresults": "Keine Ergebnisse.", + "components.RequestList.filterPending": "Unerledigt", + "components.RequestList.filterApproved": "Genehmigt", + "components.RequestList.filterAll": "Alle" } diff --git a/src/i18n/locale/en.json b/src/i18n/locale/en.json index 30c3af47..2dc11495 100644 --- a/src/i18n/locale/en.json +++ b/src/i18n/locale/en.json @@ -83,13 +83,20 @@ "components.RequestList.RequestItem.notavailable": "N/A", "components.RequestList.RequestItem.requestedby": "Requested by {username}", "components.RequestList.RequestItem.seasons": "Seasons", + "components.RequestList.filterAll": "All", + "components.RequestList.filterApproved": "Approved", + "components.RequestList.filterPending": "Pending", "components.RequestList.mediaInfo": "Media Info", "components.RequestList.modifiedBy": "Last Modified By", "components.RequestList.next": "Next", + "components.RequestList.noresults": "No Results.", "components.RequestList.previous": "Previous", "components.RequestList.requestedAt": "Requested At", "components.RequestList.requests": "Requests", + "components.RequestList.showallrequests": "Show All Requests", "components.RequestList.showingresults": "Showing {from} to {to} of {total} results", + "components.RequestList.sortAdded": "Request Date", + "components.RequestList.sortModified": "Last Modified", "components.RequestList.status": "Status", "components.RequestModal.cancel": "Cancel Request", "components.RequestModal.cancelling": "Cancelling…", @@ -112,6 +119,20 @@ "components.RequestModal.selectseason": "Select season(s)", "components.RequestModal.status": "Status", "components.Search.searchresults": "Search Results", + "components.Settings.Notifications.NotificationsPushover.accessToken": "Access Token", + "components.Settings.Notifications.NotificationsPushover.agentenabled": "Agent Enabled", + "components.Settings.Notifications.NotificationsPushover.notificationtypes": "Notification Types", + "components.Settings.Notifications.NotificationsPushover.pushoversettingsfailed": "Pushover notification settings failed to save.", + "components.Settings.Notifications.NotificationsPushover.pushoversettingssaved": "Pushover notification settings saved!", + "components.Settings.Notifications.NotificationsPushover.save": "Save Changes", + "components.Settings.Notifications.NotificationsPushover.saving": "Saving...", + "components.Settings.Notifications.NotificationsPushover.settinguppushover": "Setting up Pushover Notifications", + "components.Settings.Notifications.NotificationsPushover.settinguppushoverDescription": "To setup Pushover you need to register an application and get the access token. When setting up the application you can use one of the icons in the public folder on github. You also need the pushover user token which can be found on the start page when you log in.", + "components.Settings.Notifications.NotificationsPushover.test": "Test", + "components.Settings.Notifications.NotificationsPushover.testsent": "Test notification sent!", + "components.Settings.Notifications.NotificationsPushover.userToken": "User Token", + "components.Settings.Notifications.NotificationsPushover.validationAccessTokenRequired": "You must provide an access token.", + "components.Settings.Notifications.NotificationsPushover.validationUserTokenRequired": "You must provide a user token.", "components.Settings.Notifications.NotificationsSlack.agentenabled": "Agent Enabled", "components.Settings.Notifications.NotificationsSlack.notificationtypes": "Notification Types", "components.Settings.Notifications.NotificationsSlack.save": "Save Changes", diff --git a/src/i18n/locale/es.json b/src/i18n/locale/es.json index 4f17588a..b5768bb5 100644 --- a/src/i18n/locale/es.json +++ b/src/i18n/locale/es.json @@ -384,5 +384,51 @@ "components.CollectionDetails.overviewunavailable": "Resumen no disponible", "components.CollectionDetails.overview": "Resumen", "components.CollectionDetails.numberofmovies": "Número de películas: {count}", - "components.CollectionDetails.movies": "Películas" + "components.CollectionDetails.movies": "Películas", + "i18n.retry": "Reintentar", + "i18n.requested": "Solicitado", + "i18n.failed": "Fallido", + "components.UserEdit.autoapproveSeriesDescription": "Concede aprobación automática para las solicitudes de series realizadas por este usuario.", + "components.UserEdit.autoapproveSeries": "Aprobación de Series automática", + "components.UserEdit.autoapproveMoviesDescription": "Concede aprobación automática para las solicitudes de película realizadas por este usuario.", + "components.UserEdit.autoapproveMovies": "Aprobación automática de películas", + "components.TvDetails.watchtrailer": "Ver Trailer", + "components.Settings.Notifications.NotificationsSlack.webhookUrlPlaceholder": "URL de Webhook", + "components.Settings.Notifications.NotificationsSlack.webhookUrl": "URL de Webhook", + "components.Settings.Notifications.NotificationsSlack.validationWebhookUrlRequired": "Debes proporcionar una URL de webhook", + "components.Settings.Notifications.NotificationsSlack.testsent": "¡Notificación de prueba enviada!", + "components.Settings.Notifications.NotificationsSlack.test": "Probar", + "components.Settings.Notifications.NotificationsSlack.slacksettingssaved": "¡Ajustes de notificación de Slack guardados!", + "components.Settings.Notifications.NotificationsSlack.slacksettingsfailed": "Fallo al guardar ajustes de notificación de Slack.", + "components.Settings.Notifications.NotificationsSlack.settingupslackDescription": "Para utilizar las notificaciones de Slack, deberá crear una integración de Webhook Incoming Webhook y utilizar la dirección URL de webhook proporcionada a continuación.", + "components.Settings.Notifications.NotificationsSlack.settingupslack": "Configurando notificaciones de Slack", + "components.Settings.Notifications.NotificationsSlack.saving": "Guardando...", + "components.Settings.Notifications.NotificationsSlack.save": "Guardar cambios", + "components.Settings.Notifications.NotificationsSlack.agentenabled": "Agente habilitado", + "components.RequestList.RequestItem.failedretry": "Algo salió mal al reintentar la solicitud", + "components.MovieDetails.watchtrailer": "Ver Trailer", + "components.MovieDetails.view": "Ver", + "components.NotificationTypeSelector.mediarequestedDescription": "Envía una notificación cuando se solicitan nuevos medios. Para ciertos agentes, esto solo enviará la notificación a los administradores o usuarios con el permiso \"Administrar solicitudes\".", + "components.StatusChacker.reloadOverseerr": "Relanzar Overseerr", + "components.StatusChacker.newversionavailable": "Nueva versión disponible", + "components.StatusChacker.newversionDescription": "Hay una actualización disponible. Haga clic en el botón de abajo para volver a cargar la aplicación.", + "components.Settings.SettingsAbout.documentation": "Documentación", + "components.Settings.Notifications.validationChatIdRequired": "Debe proporcionar una ID de chat.", + "components.Settings.Notifications.validationBotAPIRequired": "Debe proporcionar una clave de API de bot.", + "components.Settings.Notifications.telegramsettingssaved": "¡Se han guardado los ajustes de notificación de Telegram!", + "components.Settings.Notifications.telegramsettingsfailed": "La configuración de notificaciones de Telegram no se pudo guardar.", + "components.Settings.Notifications.settinguptelegramDescription": "Para configurar Telegram necesitas crear un bot y obtener la clave API del bot. Además, necesita la identificación del chat para el chat al que desea que el bot envíe notificaciones. Puede hacerlo agregando @get_id_bot al chat o al chat grupal.", + "components.Settings.Notifications.settinguptelegram": "Configuración de notificaciones de Telegram", + "components.Settings.Notifications.senderName": "Nombre del remitente", + "components.Settings.Notifications.notificationtypes": "Tipos de notificación", + "components.Settings.Notifications.chatId": "ID de chat", + "components.Settings.Notifications.botAPI": "API de bot", + "components.Settings.Notifications.NotificationsSlack.notificationtypes": "Tipos de notificación", + "components.NotificationTypeSelector.mediarequested": "Contenido Solicitado", + "components.NotificationTypeSelector.mediafailedDescription": "Envía una notificación cuando los medios no se agregan a los servicios (Radarr / Sonarr). Para ciertos agentes, esto solo enviará la notificación a los administradores o usuarios con el permiso \"Administrar solicitudes\".", + "components.NotificationTypeSelector.mediafailed": "Contenido Fallido", + "components.NotificationTypeSelector.mediaavailableDescription": "Envía una notificación cuando los medios están disponibles.", + "components.NotificationTypeSelector.mediaavailable": "Contenido disponible", + "components.NotificationTypeSelector.mediaapprovedDescription": "Envía una notificación cuando los medios son aprobados.", + "components.NotificationTypeSelector.mediaapproved": "Contenido Aprobado" } diff --git a/src/i18n/locale/fr.json b/src/i18n/locale/fr.json index 297f48a7..aea519b9 100644 --- a/src/i18n/locale/fr.json +++ b/src/i18n/locale/fr.json @@ -388,5 +388,69 @@ "components.CollectionDetails.overview": "Résumé", "components.CollectionDetails.numberofmovies": "Nombre de films : {count}", "components.CollectionDetails.movies": "Films", - "i18n.requested": "Demandé" + "i18n.requested": "Demandé", + "i18n.retry": "Réessayer", + "i18n.failed": "Échec", + "components.UserEdit.autoapproveSeriesDescription": "Accorde la validation automatique pour les demandes de séries effectuées par cet utilisateur.", + "components.UserEdit.autoapproveSeries": "Valider automatiquement les séries", + "components.UserEdit.autoapproveMoviesDescription": "Accorde la validation automatique des demandes de films effectuées par cet utilisateur.", + "components.UserEdit.autoapproveMovies": "Valider automatiquement les films", + "components.Settings.Notifications.NotificationsSlack.webhookUrlPlaceholder": "URL webhook", + "components.Settings.Notifications.NotificationsSlack.webhookUrl": "URL webhook", + "components.Settings.Notifications.NotificationsSlack.validationWebhookUrlRequired": "Vous devez fournir une URL Webhook", + "components.Settings.Notifications.NotificationsSlack.testsent": "Notification de test envoyée !", + "components.Settings.Notifications.NotificationsSlack.test": "Test", + "components.Settings.Notifications.NotificationsSlack.slacksettingssaved": "Les paramètres des notifications Slack ont été enregistrés !", + "components.Settings.Notifications.NotificationsSlack.slacksettingsfailed": "Impossible d'enregistrer les paramètres des notifications Slack.", + "components.Settings.Notifications.NotificationsSlack.settingupslackDescription": "Pour utiliser les notifications Slack, vous aurez besoin de créer une intégration de Webhook Entrant et utiliser l'URL fournie du Webhook ci-dessous.", + "components.Settings.Notifications.NotificationsSlack.settingupslack": "Paramétrage des notifications Slack", + "components.Settings.Notifications.NotificationsSlack.saving": "Enregistrement…", + "components.Settings.Notifications.NotificationsSlack.save": "Enregistrer les changements", + "components.Settings.Notifications.NotificationsSlack.agentenabled": "Agent activé", + "components.RequestList.RequestItem.failedretry": "Une erreur s'est produite lors du renvoi de la requête", + "components.Settings.Notifications.validationChatIdRequired": "Vous devez fournir un identifiant de conversation.", + "components.Settings.Notifications.botAPI": "API du bot", + "components.Settings.Notifications.validationBotAPIRequired": "Vous devez fournir une clé API de bot.", + "components.Settings.Notifications.telegramsettingssaved": "Paramètres de notification Telegram enregistrés !", + "components.Settings.Notifications.telegramsettingsfailed": "Les paramètres de notification Telegram n'ont pas pu être enregistrés.", + "components.Settings.Notifications.senderName": "Nom de l'expéditeur", + "components.Settings.Notifications.chatId": "ID conversation", + "components.Settings.Notifications.settinguptelegramDescription": "Pour configurer Telegram, vous devez créer un bot et obtenir la clé API du bot. De plus, vous avez besoin de l'identifiant de conversion pour la conversation à laquelle vous souhaitez que le bot envoie des notifications. Vous pouvez le faire en ajoutant @get_id_bot à la conversation ou à la conversation de groupe.", + "components.Settings.Notifications.settinguptelegram": "Configuration des notifications Telegram", + "components.StatusChacker.reloadOverseerr": "Recharger Overseerr", + "components.StatusChacker.newversionavailable": "Nouvelle version disponible", + "components.StatusChacker.newversionDescription": "Une mise à jour est maintenant disponible. Cliquez sur le bouton ci-dessous pour recharger l'application.", + "components.Settings.SettingsAbout.documentation": "Documentation", + "components.Settings.Notifications.notificationtypes": "Types de notification", + "components.Settings.Notifications.NotificationsSlack.notificationtypes": "Types de notification", + "components.NotificationTypeSelector.mediarequestedDescription": "Envoie une notification quand un nouveau média est demandé. Pour certains agents, ceci n'enverra la notification qu'aux administrateurs ou aux utilisateurs disposant de l'autorisation « Gérer les demandes ».", + "components.NotificationTypeSelector.mediarequested": "Média demandé", + "components.NotificationTypeSelector.mediafailedDescription": "Envoie une notification quand des médias ne sont pas ajoutés aux services (Radarr / Sonarr). Pour certains agents, ceci n'enverra la notification qu'aux administrateurs ou aux utilisateurs disposant de l'autorisation « Gérer les demandes ».", + "components.NotificationTypeSelector.mediafailed": "Échec d’ajout du média", + "components.NotificationTypeSelector.mediaavailableDescription": "Envoie une notification quand le média devient disponible.", + "components.NotificationTypeSelector.mediaavailable": "Média disponible", + "components.NotificationTypeSelector.mediaapprovedDescription": "Envoie une notification quand le média est validé.", + "components.NotificationTypeSelector.mediaapproved": "Média validé", + "i18n.request": "Demander", + "components.Settings.Notifications.NotificationsPushover.validationUserTokenRequired": "Vous devez fournir un jeton utilisateur.", + "components.Settings.Notifications.NotificationsPushover.validationAccessTokenRequired": "Vous devez fournir un jeton d'accès.", + "components.Settings.Notifications.NotificationsPushover.userToken": "Jeton utilisateur", + "components.Settings.Notifications.NotificationsPushover.testsent": "Notification de test envoyée !", + "components.Settings.Notifications.NotificationsPushover.test": "Test", + "components.Settings.Notifications.NotificationsPushover.settinguppushoverDescription": "Pour configurer Pushover, vous devez enregistrer une application et obtenir le jeton d'accès. Lors de la configuration de l'application, vous pouvez utiliser l'une des icônes du dossier public sur GitHub. Vous avez également besoin du jeton d'utilisateur pushover qui se trouve sur la page de démarrage quand vous vous connectez.", + "components.Settings.Notifications.NotificationsPushover.settinguppushover": "Configuration des notifications pushover", + "components.Settings.Notifications.NotificationsPushover.saving": "Enregistrement…", + "components.Settings.Notifications.NotificationsPushover.save": "Enregistrer les changements", + "components.Settings.Notifications.NotificationsPushover.pushoversettingssaved": "Paramètres de notification pushover enregistrés !", + "components.Settings.Notifications.NotificationsPushover.pushoversettingsfailed": "Les paramètres de notification pushover n'ont pas pu être enregistrés.", + "components.Settings.Notifications.NotificationsPushover.notificationtypes": "Types de notification", + "components.Settings.Notifications.NotificationsPushover.agentenabled": "Agent activé", + "components.Settings.Notifications.NotificationsPushover.accessToken": "Jeton d'accès", + "components.RequestList.sortModified": "Dernière modification", + "components.RequestList.sortAdded": "Date de la demande", + "components.RequestList.showallrequests": "Afficher toutes les demandes", + "components.RequestList.noresults": "Aucun résultat.", + "components.RequestList.filterPending": "En attente", + "components.RequestList.filterApproved": "Validées", + "components.RequestList.filterAll": "Toutes" } diff --git a/src/i18n/locale/it.json b/src/i18n/locale/it.json index 7f3818f4..d90bb224 100644 --- a/src/i18n/locale/it.json +++ b/src/i18n/locale/it.json @@ -388,5 +388,69 @@ "components.TvDetails.watchtrailer": "Guarda il trailer", "components.MovieDetails.watchtrailer": "Guarda il trailer", "components.MovieDetails.view": "Visualizza", - "i18n.requested": "Richiesto" + "i18n.requested": "Richiesto", + "components.RequestList.RequestItem.failedretry": "Qualcosa è andato storto nel riprovare la richiesta", + "i18n.retry": "Riprova", + "i18n.failed": "Fallito", + "components.UserEdit.autoapproveSeriesDescription": "Concede l'approvazione automatica per le richieste di serie effettuate da questo utente.", + "components.UserEdit.autoapproveSeries": "Approva automaticamente le serie", + "components.UserEdit.autoapproveMoviesDescription": "Concede l'autoapprovazione per le richieste di film effettuate da questo utente.", + "components.UserEdit.autoapproveMovies": "Approva automaticamente i film", + "components.Settings.Notifications.NotificationsSlack.webhookUrlPlaceholder": "URL webhook", + "components.Settings.Notifications.NotificationsSlack.webhookUrl": "URL webhook", + "components.Settings.Notifications.NotificationsSlack.validationWebhookUrlRequired": "È necessario fornire un URL per il webhook", + "components.Settings.Notifications.NotificationsSlack.test": "Prova", + "components.Settings.Notifications.NotificationsSlack.testsent": "Notifica di prova inviata!", + "components.Settings.Notifications.NotificationsSlack.slacksettingssaved": "Impostazioni di notifica Slack salvate!", + "components.Settings.Notifications.NotificationsSlack.slacksettingsfailed": "Impossibile salvare le impostazioni di notifica Slack.", + "components.Settings.Notifications.NotificationsSlack.settingupslackDescription": "Per utilizzare le notifiche con Slack, sarà necessario creare un'integrazione Incoming Webhook e utilizzare l'URL webhook fornito di seguito.", + "components.Settings.Notifications.NotificationsSlack.settingupslack": "Configurazione delle notifiche di Slack", + "components.Settings.Notifications.NotificationsSlack.saving": "Salvataggio…", + "components.Settings.Notifications.NotificationsSlack.save": "Salva le modifiche", + "components.Settings.Notifications.NotificationsSlack.agentenabled": "Agente abilitato", + "components.Settings.Notifications.validationChatIdRequired": "Devi fornire un ID discussione.", + "components.Settings.Notifications.validationBotAPIRequired": "Devi fornire una chiave API bot.", + "components.Settings.Notifications.telegramsettingssaved": "Impostazioni di notifica di Telegram salvate!", + "components.Settings.Notifications.telegramsettingsfailed": "Impossibile salvare le impostazioni di notifica di Telegram.", + "components.Settings.Notifications.senderName": "Nome del mittente", + "components.Settings.Notifications.settinguptelegramDescription": "Per configurare Telegram devi creare un bot e ottenere la chiave API del bot. Inoltre, è necessario l'ID discussione per la discussione a cui si desidera che il bot invii le notifiche. Puoi farlo aggiungendo @get_id_bot alla discussione o alla discussione di gruppo.", + "components.Settings.Notifications.settinguptelegram": "Configurazione delle notifiche Telegram", + "components.Settings.Notifications.chatId": "ID discussione", + "components.Settings.Notifications.botAPI": "API bot", + "components.StatusChacker.reloadOverseerr": "Ricarica Overseerr", + "components.StatusChacker.newversionavailable": "Nuova versione disponibile", + "components.StatusChacker.newversionDescription": "È ora disponibile un aggiornamento. Fai clic sul pulsante in basso per ricaricare l'applicazione.", + "components.Settings.SettingsAbout.documentation": "Documentazione", + "components.Settings.Notifications.notificationtypes": "Tipi di notifica", + "components.Settings.Notifications.NotificationsSlack.notificationtypes": "Tipi di notifica", + "components.NotificationTypeSelector.mediarequestedDescription": "Invia una notifica quando un nuovo media viene richiesto. Per alcuni agenti, la notifica verrà inviata solo agli amministratori o agli utenti con l'autorizzazione «Gestione richieste».", + "components.NotificationTypeSelector.mediarequested": "Media richiesto", + "components.NotificationTypeSelector.mediafailedDescription": "Invia una notifica quando il media non viene aggiunto ai servizi (Radarr / Sonarr). Per alcuni agenti, la notifica verrà inviata solo agli amministratori o agli utenti con l'autorizzazione «Gestione richieste».", + "components.NotificationTypeSelector.mediafailed": "Aggiunta media non riuscita", + "components.NotificationTypeSelector.mediaavailableDescription": "Invia una notifica quando il media diventa disponibile.", + "components.NotificationTypeSelector.mediaapprovedDescription": "Invia una notifica quando il media viene approvato.", + "components.NotificationTypeSelector.mediaapproved": "Media approvato", + "components.NotificationTypeSelector.mediaavailable": "Media disponibile", + "i18n.request": "Richiedi", + "components.Settings.Notifications.NotificationsPushover.test": "Test", + "components.Settings.Notifications.NotificationsPushover.validationUserTokenRequired": "Devi fornire un token utente.", + "components.Settings.Notifications.NotificationsPushover.validationAccessTokenRequired": "Devi fornire un token di accesso.", + "components.Settings.Notifications.NotificationsPushover.userToken": "Token utente", + "components.Settings.Notifications.NotificationsPushover.testsent": "Notifica di prova inviata!", + "components.Settings.Notifications.NotificationsPushover.settinguppushoverDescription": "Per configurare Pushover è necessario registrare un'applicazione e ottenere il token di accesso. Quando si configura l'applicazione, è possibile utilizzare una delle icone nella cartella pubblica su GitHub. È inoltre necessario il token utente pushover che può essere trovato nella pagina iniziale quando si accede.", + "components.Settings.Notifications.NotificationsPushover.settinguppushover": "Configurazione delle notifiche pushover", + "components.Settings.Notifications.NotificationsPushover.saving": "Salvataggio…", + "components.Settings.Notifications.NotificationsPushover.save": "Salva le modifiche", + "components.Settings.Notifications.NotificationsPushover.pushoversettingssaved": "Impostazioni di notifica pushover salvate!", + "components.Settings.Notifications.NotificationsPushover.pushoversettingsfailed": "Impossibile salvare le impostazioni di notifica pushover.", + "components.Settings.Notifications.NotificationsPushover.notificationtypes": "Tipi di notifica", + "components.Settings.Notifications.NotificationsPushover.agentenabled": "Agente abilitato", + "components.Settings.Notifications.NotificationsPushover.accessToken": "Token di accesso", + "components.RequestList.sortModified": "Ultima modifica", + "components.RequestList.sortAdded": "Data della richiesta", + "components.RequestList.showallrequests": "Mostra tutte le richieste", + "components.RequestList.noresults": "Nessun risultato.", + "components.RequestList.filterPending": "In sospeso", + "components.RequestList.filterApproved": "Approvate", + "components.RequestList.filterAll": "Tutte" } diff --git a/src/i18n/locale/ja.json b/src/i18n/locale/ja.json index e939bec4..8baac769 100644 --- a/src/i18n/locale/ja.json +++ b/src/i18n/locale/ja.json @@ -388,5 +388,22 @@ "components.TvDetails.TvCrew.fullseriescrew": "フルシリーズクルー", "components.Settings.Notifications.ssldisabletip": "標準TLS接続(ポート587)ではSSLを無効にすることをおすすめします。", "components.Settings.Notifications.allowselfsigned": "自己署名証明書を許可する", - "components.PersonDetails.crewmember": "クルーメンバー" + "components.PersonDetails.crewmember": "クルーメンバー", + "i18n.retry": "リトライ", + "i18n.failed": "失敗", + "components.UserEdit.autoapproveSeriesDescription": "このユーザーが行ったシリーズリクエストの自動承認をします。", + "components.UserEdit.autoapproveSeries": "シリーズを自動承認", + "components.UserEdit.autoapproveMoviesDescription": "このユーザーがリクエストした動画の自動承認を許可します。", + "components.UserEdit.autoapproveMovies": "ムービーの自動承認", + "components.Settings.Notifications.NotificationsSlack.webhookUrlPlaceholder": "ウェブフックURL", + "components.Settings.Notifications.NotificationsSlack.webhookUrl": "ウェブフックURL", + "components.Settings.Notifications.NotificationsSlack.validationWebhookUrlRequired": "ウェブフックのURLを指定してください。", + "components.Settings.Notifications.NotificationsSlack.testsent": "テスト通知が送信されました。", + "components.Settings.Notifications.NotificationsSlack.test": "テスト", + "components.Settings.Notifications.NotificationsSlack.slacksettingssaved": "Slackの通知設定が保存されました", + "components.Settings.Notifications.NotificationsSlack.slacksettingsfailed": "Slackの通知設定の保存に失敗しました。", + "components.Settings.Notifications.NotificationsSlack.settingupslackDescription": "Slack通知を使用するには、受信ウェブフックを作成し、以下のWebhook URLを使用する必要があります。", + "components.Settings.Notifications.NotificationsSlack.settingupslack": "Slack通知の設定", + "components.Settings.Notifications.NotificationsSlack.saving": "保存中...", + "components.Settings.Notifications.NotificationsSlack.save": "変更を保存" } diff --git a/src/i18n/locale/nl.json b/src/i18n/locale/nl.json index 46373f8a..88392d10 100644 --- a/src/i18n/locale/nl.json +++ b/src/i18n/locale/nl.json @@ -16,7 +16,7 @@ "components.Layout.Sidebar.settings": "Instellingen", "components.Layout.Sidebar.users": "Gebruikers", "components.Layout.UserDropdown.signout": "Uitloggen", - "components.Layout.alphawarning": "Dit is ALPHA software. Bijna alles is waarschijnlijk kapot of onstabiel. Rapporteer issues bij de Overseerr GitHub!", + "components.Layout.alphawarning": "Dit is ALPHA software. Bijna alles is waarschijnlijk kapot of instabiel. Rapporteer issues bij de Overseerr GitHub!", "components.Login.signinplex": "Log in om door te gaan", "components.MovieDetails.approve": "Goedkeuren", "components.MovieDetails.available": "Beschikbaar", @@ -25,7 +25,7 @@ "components.MovieDetails.cast": "Acteurs", "components.MovieDetails.decline": "Weigeren", "components.MovieDetails.manageModalClearMedia": "Wis Alle Media Data", - "components.MovieDetails.manageModalClearMediaWarning": "Dit wist alle media data inclusief alle verzoeken voor dit item zonder herstelmogelijkheden. Als dit item in je Plex bibliotheek bestaat zal alle media info bij de volgende sync hersteld worden.", + "components.MovieDetails.manageModalClearMediaWarning": "Dit wist alle mediadata voor dit item, inclusief alle verzoeken, zonder mogelijkheid tot herstel. Als dit item in je Plex-bibliotheek staat, zal alle media-info bij de volgende synchronisatie hersteld worden.", "components.MovieDetails.manageModalNoRequests": "Geen Verzoeken", "components.MovieDetails.manageModalRequests": "Verzoeken", "components.MovieDetails.manageModalTitle": "Beheer Film", @@ -50,15 +50,15 @@ "components.PersonDetails.nobiography": "Geen biografie beschikbaar.", "components.PlexLoginButton.loading": "Bezig met laden…", "components.PlexLoginButton.loggingin": "Bezig met inloggen…", - "components.PlexLoginButton.loginwithplex": "Login met Plex", + "components.PlexLoginButton.loginwithplex": "Inloggen met Plex", "components.RequestBlock.seasons": "Seizoenen", "components.RequestCard.all": "Alle", "components.RequestCard.requestedby": "Verzocht door {username}", "components.RequestCard.seasons": "Seizoenen", - "components.RequestList.RequestItem.notavailable": "Nvt", + "components.RequestList.RequestItem.notavailable": "N.v.t.", "components.RequestList.RequestItem.requestedby": "Verzocht door {username}", "components.RequestList.RequestItem.seasons": "Seizoenen", - "components.RequestList.mediaInfo": "Media Info", + "components.RequestList.mediaInfo": "Media-info", "components.RequestList.modifiedBy": "Laatst Aangepast Door", "components.RequestList.next": "Volgende", "components.RequestList.previous": "Vorige", @@ -183,7 +183,7 @@ "components.Settings.jobname": "Taaknaam", "components.Settings.librariesRemaining": "Resterende Bibliotheken: {count}", "components.Settings.manualscan": "Handmatige Bibliotheek Scan", - "components.Settings.manualscanDescription": "Normaal gesproken wordt dit eens elke 6 uur gedraaid. Overseerr controleert de recentelijk toegoevoegde items van je Plex Server aggresiever. Als dit je eerst keer is om Plex te configuren raden wij aan om eenmaal een volledige bibliotheek scan handmatig te draaien!", + "components.Settings.manualscanDescription": "Normaal gesproken wordt dit eens elke 24 uur gedraaid. Overseerr controleert de recentelijk toegoevoegde items van je Plex Server aggresiever. Als dit je eerst keer is om Plex te configuren raden wij aan om eenmaal een volledige bibliotheek scan handmatig te draaien!", "components.Settings.menuAbout": "Over", "components.Settings.menuGeneralSettings": "Algemene Instellingen", "components.Settings.menuJobs": "Taken", @@ -339,5 +339,110 @@ "components.Settings.SettingsAbout.Releases.currentversion": "Huidige versie", "components.Settings.Notifications.testsent": "Test notificatie verzonden!", "components.Settings.Notifications.test": "Test", - "components.MovieDetails.studio": "Studio" + "components.MovieDetails.studio": "Studio", + "components.CollectionDetails.requesting": "Aanvragen…", + "components.CollectionDetails.overviewunavailable": "Overzicht niet beschikbaar", + "components.CollectionDetails.overview": "Overzicht", + "components.CollectionDetails.numberofmovies": "Aantal films: {count}", + "components.CollectionDetails.movies": "Films", + "components.NotificationTypeSelector.mediafailed": "Media mislukt", + "components.NotificationTypeSelector.mediaapprovedDescription": "Stuurt een notificatie wanneer media is goedgekeurd.", + "components.NotificationTypeSelector.mediaavailableDescription": "Stuurt een notificatie wanneer media beschikbaar is.", + "components.NotificationTypeSelector.mediaapproved": "Media goedgekeurd", + "components.MovieDetails.view": "Bekijken", + "components.CollectionDetails.request": "Aanvragen", + "i18n.retry": "Opnieuw proberen", + "i18n.requested": "Aangevraagd", + "i18n.failed": "Mislukt", + "i18n.deleting": "Bezig met verwijderen…", + "i18n.close": "Sluiten", + "components.UserList.userdeleteerror": "Er ging iets mis bij het verwijderen van de gebruiker", + "components.UserList.userdeleted": "Gebruiker verwijderd", + "components.UserList.importfromplexerror": "Er is iets misgegaan bij het importeren van gebruikers uit Plex", + "components.UserList.importfromplex": "Gebruikers importeren uit Plex", + "components.UserList.deleteuser": "Gebruiker verwijderen", + "components.UserList.deleteconfirm": "Weet je zeker dat je deze gebruiker wilt verwijderen? Alle bestaande aanvraaggegevens van deze gebruiker zullen worden verwijderd.", + "components.UserEdit.autoapproveSeriesDescription": "Keurt serieverzoeken van deze gebruiker automatisch goed.", + "components.UserEdit.autoapproveSeries": "Serie automatisch goedkeuren", + "components.UserEdit.autoapproveMoviesDescription": "Keurt filmverzoeken van deze gebruiker automatisch goed.", + "components.UserEdit.autoapproveMovies": "Films automatisch goedkeuren", + "components.TvDetails.watchtrailer": "Trailer bekijken", + "components.TvDetails.viewfullcrew": "Bekijk volledige crew", + "components.TvDetails.showtype": "Type serie", + "components.TvDetails.network": "Netwerk", + "components.TvDetails.firstAirDate": "Eerste uitzenddatum", + "components.TvDetails.anime": "Anime", + "components.StatusChacker.reloadOverseerr": "Overseerr herladen", + "components.StatusChacker.newversionavailable": "Nieuwe versie beschikbaar", + "components.StatusChacker.newversionDescription": "Er is een update beschikbaar. Klik op de onderstaande knop om de toepassing opnieuw te laden.", + "components.Settings.toastSettingsSuccess": "Instellingen opgeslagen.", + "components.Settings.toastSettingsFailure": "Er ging iets mis met het opslaan van de instellingen.", + "components.Settings.toastApiKeySuccess": "Nieuwe API Key gegenereerd!", + "components.Settings.toastApiKeyFailure": "Er ging iets mis bij het genereren van een nieuwe API Key.", + "components.Settings.defaultPermissions": "Standaard gebruikersrechten", + "components.Settings.SonarrModal.animerootfolder": "Hoofdmap anime", + "components.Settings.SonarrModal.animequalityprofile": "Kwaliteitsprofiel anime", + "components.Settings.SettingsAbout.timezone": "Tijdzone", + "components.Settings.SettingsAbout.supportoverseerr": "Overseerr steunen", + "components.Settings.SettingsAbout.helppaycoffee": "Help een koffie te betalen", + "components.Settings.SettingsAbout.documentation": "Documentatie", + "components.Settings.SettingsAbout.Releases.viewongithub": "Bekijken op GitHub", + "components.Settings.SettingsAbout.Releases.viewchangelog": "Changelog bekijken", + "components.Settings.SettingsAbout.Releases.runningDevelopMessage": "De wijzigingen in je versie zijn hieronder niet beschikbaar. Kijk naar de GitHub repository voor de laatste updates.", + "components.Settings.SettingsAbout.Releases.runningDevelop": "Je gebruikt een ontwikkelversie van Overseerr!", + "components.Settings.Notifications.validationChatIdRequired": "Je moet een Chat-id opgeven.", + "components.Settings.Notifications.validationBotAPIRequired": "Je moet een Bot API-sleutel verstrekken.", + "components.Settings.Notifications.telegramsettingssaved": "Instellingen Telegramnotificaties opgeslagen!", + "components.Settings.Notifications.telegramsettingsfailed": "De instellingen voor Telegramnotificaties zijn niet opgeslagen.", + "components.Settings.Notifications.ssldisabletip": "SSL moet worden uitgeschakeld op standaard TLS-verbindingen (Poort 587)", + "components.Settings.Notifications.senderName": "Naam afzender", + "components.Settings.Notifications.notificationtypes": "Notificatietypes", + "components.Settings.Notifications.chatId": "Chat Id", + "components.Settings.Notifications.botAPI": "Bot API", + "components.Settings.Notifications.allowselfsigned": "Self-signed certificaten toestaan", + "components.Settings.Notifications.NotificationsSlack.webhookUrlPlaceholder": "Webhook URL", + "components.Settings.Notifications.NotificationsSlack.webhookUrl": "Webhook URL", + "components.Settings.Notifications.NotificationsSlack.validationWebhookUrlRequired": "Je moet een webhook URL ingeven", + "components.Settings.Notifications.NotificationsSlack.testsent": "Testnotificatie verstuurd!", + "components.Settings.Notifications.NotificationsSlack.test": "Test", + "components.Settings.Notifications.NotificationsSlack.saving": "Bezig met opslaan...", + "components.Settings.Notifications.NotificationsSlack.save": "Wijzigingen opslaan", + "components.Settings.Notifications.NotificationsSlack.notificationtypes": "Notificatietypes", + "components.Settings.Notifications.NotificationsSlack.agentenabled": "Agent ingeschakeld", + "components.RequestList.RequestItem.failedretry": "Er is iets misgegaan met het opnieuw proberen van het verzoek", + "components.PersonDetails.crewmember": "Crewlid", + "components.NotificationTypeSelector.mediarequested": "Media aangevraagd", + "components.NotificationTypeSelector.mediaavailable": "Media beschikbaar", + "components.CollectionDetails.requestswillbecreated": "De volgende titels zullen aangevraagd worden:", + "components.CollectionDetails.requestSuccess": "{title} succesvol aangevraagd!", + "components.MovieDetails.watchtrailer": "Trailer bekijken", + "components.MovieDetails.viewfullcrew": "Bekijk volledige crew", + "components.MovieDetails.MovieCrew.fullcrew": "Volledige crew", + "components.CollectionDetails.requestcollection": "Collectie aanvragen", + "components.UserList.importedfromplex": "{userCount, plural, =0 {Geen nieuwe gebruikers} one {# nieuwe gebruiker} other {# nieuwe gebruikers}} geïmporteerd vanuit Plex", + "components.Settings.SettingsAbout.Releases.versionChangelog": "Versie Changelog", + "components.Settings.SettingsAbout.Releases.releases": "Uitgaves", + "components.Settings.Notifications.settinguptelegramDescription": "Om Telegram in te stellen moet je een bot aanmaken en de bot API key gebruiken. Ook ben je het chat ID voor de chat waarheen je notificaties wil sturen nodig. Dit kun je doen door @get_id_bot toe te voegen aan de chat of group chat.", + "components.Settings.Notifications.settinguptelegram": "Telegram notificaties instellen", + "components.Settings.Notifications.NotificationsSlack.slacksettingssaved": "Slack notificatie instellingen zijn opgeslagen!", + "components.Settings.Notifications.NotificationsSlack.slacksettingsfailed": "Slack notificatie instellingen konden niet opgeslagen worden.", + "components.Settings.Notifications.NotificationsSlack.settingupslackDescription": "Om Slack notificaties te gebruiken moet je een Incoming Webhook integratie gebruiken en de onderstaande webhook URL gebruiken.", + "components.Settings.Notifications.NotificationsSlack.settingupslack": "Slack Notificaties Instellen", + "components.NotificationTypeSelector.mediarequestedDescription": "Stuurt een notificatie wanneer nieuwe media is verzocht. Voor bepaalde angenten wordt deze notificatie alleen verstuurd naar beheerders of gebruikers met de \"Beheer Verzoeken\" permissie.", + "components.NotificationTypeSelector.mediafailedDescription": "Stuurt een notificatie wanneer media niet toegevoegd kan worden aan diensten (Radarr/Sonarr). For bepaalde agenten stuurt dit alleen de notificatie naar beheerders of gebruikers met de \"Beheer Verzoeken\" permissie.", + "components.TvDetails.TvCrew.fullseriescrew": "Volledige crew van de serie", + "components.Settings.Notifications.NotificationsPushover.saving": "Bezig met opslaan...", + "components.Settings.Notifications.NotificationsPushover.save": "Sla Wijzingen Op", + "components.Settings.Notifications.NotificationsPushover.pushoversettingssaved": "Pushover notificatie instellingen zijn opgeslagen!", + "components.Settings.Notifications.NotificationsPushover.pushoversettingsfailed": "Pushover notificatie setting kon niet opgeslagen worden.", + "components.Settings.Notifications.NotificationsPushover.notificationtypes": "Notificatie Types", + "components.Settings.Notifications.NotificationsPushover.agentenabled": "Agent Ingeschakeld", + "components.Settings.Notifications.NotificationsPushover.accessToken": "Access Token", + "components.RequestList.sortModified": "Laatst Gewijzigd", + "components.RequestList.sortAdded": "Verzoek Datum", + "components.RequestList.showallrequests": "Toon Alle Verzoeken", + "components.RequestList.noresults": "Geen Resultaten.", + "components.RequestList.filterPending": "Wachtende", + "components.RequestList.filterApproved": "Goedgekeurd", + "components.RequestList.filterAll": "Alle" } diff --git a/src/i18n/locale/pt_BR.json b/src/i18n/locale/pt_BR.json index 8dda45e9..15f36586 100644 --- a/src/i18n/locale/pt_BR.json +++ b/src/i18n/locale/pt_BR.json @@ -7,7 +7,7 @@ "components.RequestCard.seasons": "Temporadas", "components.RequestCard.requestedby": "Solicitado por {username}", "components.RequestBlock.seasons": "Temporadas", - "components.PlexLoginButton.loginwithplex": "Entrar com", + "components.PlexLoginButton.loginwithplex": "Entrar com Plex", "components.PlexLoginButton.loggingin": "Fazendo login…", "components.PlexLoginButton.loading": "Carregando…", "components.PersonDetails.nobiography": "Biografia não disponível.", @@ -17,14 +17,14 @@ "components.MovieDetails.userrating": "Avaliação do usuário", "components.MovieDetails.unavailable": "Indisponível", "components.MovieDetails.studio": "Estúdio", - "components.MovieDetails.status": "Detalhes", + "components.MovieDetails.status": "Estado", "components.MovieDetails.similarsubtext": "Outros filmes semelhantes a {title}", "components.MovieDetails.similar": "Títulos Semelhantes", "components.MovieDetails.runtime": "{minutes} minutos", "components.MovieDetails.revenue": "Receita", "components.MovieDetails.request": "Solicitar", - "components.MovieDetails.releasedate": "Data de Lançamento", - "components.MovieDetails.recommendationssubtext": "Se você gostou {title}, você provavelmente irá gostar…", + "components.MovieDetails.releasedate": "Lançamento", + "components.MovieDetails.recommendationssubtext": "Se você gostou de {title}, você provavelmente irá gostar…", "components.MovieDetails.recommendations": "Recomendações", "components.MovieDetails.pending": "Pendente", "components.MovieDetails.overviewunavailable": "Sinopse indisponível", @@ -43,12 +43,12 @@ "components.MovieDetails.approve": "Aprovar", "components.MovieDetails.MovieCast.fullcast": "Elenco Completo", "components.Login.signinplex": "Faça login para continuar", - "components.Layout.alphawarning": "Esta é uma versão Alpha. Quase tudo é instável ou não funciona. Por favor reporte os problemas no GitHub do Overseerr!", + "components.Layout.alphawarning": "Essa é uma versão Alpha. Quase tudo é instável ou não funciona. Por favor reporte os problemas no GitHub do Overseerr!", "components.Layout.UserDropdown.signout": "Sair", "components.Layout.Sidebar.users": "Usuários", "components.Layout.Sidebar.settings": "Configurações", "components.Layout.Sidebar.requests": "Solicitações", - "components.Layout.Sidebar.dashboard": "Descobrir", + "components.Layout.Sidebar.dashboard": "Explorar", "components.Layout.SearchInput.searchPlaceholder": "Pesquisar Filmes & Séries", "components.Layout.LanguagePicker.changelanguage": "Alterar Idioma", "components.Discover.upcomingmovies": "Em Breve", @@ -255,25 +255,25 @@ "components.Settings.plexlibrariesDescription": "Bibliotecas que Overseerr irá buscar por títulos. Configure e salve as informações de conexão com Plex e click no botão abaixo se nenhuma biblioteca é listada.", "components.Settings.SettingsAbout.timezone": "Fuso Horário", "components.Settings.SettingsAbout.helppaycoffee": "Ajude a Pagar o Café", - "components.Settings.SettingsAbout.supportoverseerr": "Apoie Overseerr", + "components.Settings.SettingsAbout.supportoverseerr": "Apoie o Overseerr", "components.Settings.SettingsAbout.Releases.viewongithub": "Ver no GitHub", "components.Settings.SettingsAbout.Releases.viewchangelog": "Ver Mudanças", "components.Settings.SettingsAbout.Releases.versionChangelog": "Mudanças Nessa Versão", - "components.Settings.SettingsAbout.Releases.runningDevelopMessage": "As mudanças em sua versão não serão exibidas abaixo. Por favor acesso o repositório do GitHub para saber o que mudou.", + "components.Settings.SettingsAbout.Releases.runningDevelopMessage": "As mudanças em sua versão não serão exibidas abaixo. Por favor acesse o repositório do GitHub para saber o que mudou.", "components.Settings.SettingsAbout.Releases.runningDevelop": "Você está usando uma versão de desenvolvimento do Overseerr!", "components.Settings.SettingsAbout.Releases.releases": "Versões", "components.Settings.SettingsAbout.Releases.releasedataMissing": "Informações de versão faltando. O GitHub está indisponível?", "components.Settings.SettingsAbout.Releases.latestversion": "Última Versão", "components.Settings.SettingsAbout.Releases.currentversion": "Versão Atual", "components.TvDetails.request": "Solicitar", - "components.TvDetails.recommendationssubtext": "Se você gostou {title}, você provavelmente irá gostar…", + "components.TvDetails.recommendationssubtext": "Se você gostou de {title}, você provavelmente irá gostar…", "components.TvDetails.recommendations": "Recomendações", "components.TvDetails.pending": "Pendente", "components.TvDetails.overviewunavailable": "Sinopse indisponível", "components.TvDetails.overview": "Sinopse", "components.TvDetails.originallanguage": "Língua original", "components.TvDetails.network": "Estúdio", - "components.TvDetails.manageModalTitle": "Gerenciar Séries", + "components.TvDetails.manageModalTitle": "Gerenciar Série", "components.TvDetails.manageModalRequests": "Solicitações", "components.TvDetails.manageModalNoRequests": "Nenhuma Solicitação", "components.TvDetails.manageModalClearMedia": "Limpar Todos Dados de Mídia", @@ -286,7 +286,7 @@ "components.TvDetails.approve": "Aprovar", "components.TvDetails.anime": "Animes", "components.TvDetails.TvCast.fullseriescast": "Elenco Completo da Série", - "components.TitleCard.tvshow": "Séries", + "components.TitleCard.tvshow": "Série", "components.TitleCard.movie": "Filme", "components.Slider.noresults": "Nenhum Resultado", "components.Setup.welcome": "Bem-Vindo ao Overseerr", @@ -359,8 +359,8 @@ "components.TvDetails.similar": "Séries Similares", "components.TvDetails.showtype": "Categoria", "components.TvDetails.manageModalClearMediaWarning": "Isso irá remover em definitivo todos dados de mídia, incluindo todas solicitações para esse item. Se este item existir in sua biblioteca do Plex, os dados de mídia serão recriados na próxima sincronia.", - "components.Settings.sonarrSettingsDescription": "Configure sua conexão com Sonarr abaixo. Você pode criar várias, mas apenas duas por vez como padrão (uma para padrão HD, e outra para 4K). Administradores podem alterar qual conexão será usada para novas solicitações.", - "components.Settings.radarrSettingsDescription": "Configure sua conexão com Radarr abaixo. Você pode criar várias, mas apenas duas por vez como padrão (uma para padrão HD, e outra para 4K). Administradores podem alterar qual conexão será usada para novas solicitações.", + "components.Settings.sonarrSettingsDescription": "Configure abaixo sua conexão com Sonarr. Você pode criar várias conexões, mas apenas duas por vez como padrão (uma para padrão HD, e outra para 4K). Administradores podem alterar qual conexão será usada para novas solicitações.", + "components.Settings.radarrSettingsDescription": "Configure abaixo sua conexão com Radarr. Você pode criar várias conexões, mas apenas duas por vez como padrão (uma para padrão HD, e outra para 4K). Administradores podem alterar qual conexão será usada para novas solicitações.", "components.Settings.Notifications.testsent": "Notificação de teste enviada!", "components.Settings.Notifications.test": "Testar", "components.RequestModal.requestseasons": "Solicitar {seasonCount} {seasonCount, plural, one {Temporada} other {Temporadas}}", @@ -372,5 +372,64 @@ "components.UserList.importfromplexerror": "Algo deu errado ao importar usuários do Plex", "components.UserList.importfromplex": "Importar Usuários do Plex", "components.UserList.importedfromplex": "{userCount, plural, =0 {Nenhum novo usuário} one {# novo usuário} other {# novos usuários}} importado(s) do Plex", - "components.Settings.defaultPermissions": "Permissões Padrões de Usúarios" + "components.Settings.defaultPermissions": "Permissões Padrões de Usúarios", + "components.Settings.Notifications.NotificationsSlack.settingupslack": "Configurando Notificações Via Slack", + "components.Settings.Notifications.NotificationsSlack.saving": "Salvando...", + "components.Settings.Notifications.NotificationsSlack.save": "Salvar Mudanças", + "components.Settings.Notifications.NotificationsSlack.agentenabled": "Agente Habilitado", + "components.RequestList.RequestItem.failedretry": "Algo deu errado ao retentar fazer a solicitação", + "components.MovieDetails.watchtrailer": "Assistir Trailer", + "components.MovieDetails.view": "Ver", + "components.CollectionDetails.requestswillbecreated": "Serão feitas solitações para os seguintes títulos:", + "components.CollectionDetails.requesting": "Solicitando…", + "components.CollectionDetails.requestcollection": "Solicitar Coleção", + "components.CollectionDetails.requestSuccess": "{title} solictiado com sucesso!", + "components.CollectionDetails.request": "Solicitar", + "components.CollectionDetails.overviewunavailable": "Sinopse indisponível", + "components.CollectionDetails.overview": "Sinopse", + "components.CollectionDetails.numberofmovies": "Número de Filmes: {count}", + "components.CollectionDetails.movies": "Filmes", + "i18n.requested": "Solicitado", + "i18n.retry": "Tentar Novamente", + "i18n.failed": "Falhou", + "components.UserEdit.autoapproveSeriesDescription": "Concede aprovação automática de séries solicitadas por este usuário.", + "components.UserEdit.autoapproveSeries": "Aprovar Séries Automaticamente", + "components.UserEdit.autoapproveMoviesDescription": "Concede aprovação automática de filmes solicitados por este usuário.", + "components.UserEdit.autoapproveMovies": "Aprovar Filmes Automaticamente", + "components.TvDetails.watchtrailer": "Assisitir Trailer", + "components.TvDetails.firstAirDate": "Primeira Exibição", + "components.Settings.Notifications.validationChatIdRequired": "Você deve prover um ID de Chat.", + "components.Settings.Notifications.validationBotAPIRequired": "Você deve prover a chave de API do Bot.", + "components.Settings.Notifications.senderName": "Nome do Remetente", + "components.Settings.Notifications.telegramsettingssaved": "Configurações de notificação via Telegram salvas!", + "components.Settings.Notifications.telegramsettingsfailed": "Falha ao salvar configurações de notificação via Telegram.", + "components.Settings.Notifications.ssldisabletip": "SSL deve ser desabilitado em conexões TLS padrão (Porta 587)", + "components.Settings.Notifications.settinguptelegramDescription": "Para configurar notificações via Telegram, você precisa criar um bot e obter a chave de API do mesmo. Além disso, você irá precisar do ID de Chat de onde você deseja que o bot envie as notificações. Você pode obter o ID de Chat adicionando @get_id_bot ao chat ou grupo ao qual você deseja obter o ID.", + "components.Settings.Notifications.settinguptelegram": "Configurando notificações via Telegram", + "components.Settings.Notifications.chatId": "ID de Chat", + "components.Settings.Notifications.botAPI": "API do Bot", + "components.Settings.Notifications.allowselfsigned": "Permitir certificados auto-assinados", + "components.Settings.Notifications.NotificationsSlack.webhookUrlPlaceholder": "URL de Webhook", + "components.Settings.Notifications.NotificationsSlack.webhookUrl": "URL de Webhook", + "components.Settings.Notifications.NotificationsSlack.validationWebhookUrlRequired": "Você deve prover uma URL de webhook", + "components.Settings.Notifications.NotificationsSlack.testsent": "Notificação de teste enviada!", + "components.Settings.Notifications.NotificationsSlack.test": "Testar", + "components.Settings.Notifications.NotificationsSlack.slacksettingssaved": "Configurações de notificação via Slack salvas!", + "components.Settings.Notifications.NotificationsSlack.slacksettingsfailed": "Falha ao salvar configurações de notificação via Slack.", + "components.Settings.Notifications.NotificationsSlack.settingupslackDescription": "Para usar notificações via Slack você irá p recisar criar uma integração Webhook de entrada e usar no campo abaixo a URL gerada.", + "components.StatusChacker.reloadOverseerr": "Reiniciar Overseerr", + "components.StatusChacker.newversionDescription": "Uma atualização está disponível. Clique no botão abaixo para reiniciar a aplicação.", + "components.StatusChacker.newversionavailable": "Nova Versão Disponível", + "components.Settings.SettingsAbout.documentation": "Documentação", + "components.Settings.Notifications.notificationtypes": "Tipos de Notificação", + "components.Settings.Notifications.NotificationsSlack.notificationtypes": "Tipos de Notificação", + "components.NotificationTypeSelector.mediarequestedDescription": "Envia uma notificação quando nova mídia é solicitada. Para alguns agentes, somente serão enviadas notificações aos administradores ou usuários com perfil “Gerenciar solicitações”.", + "components.NotificationTypeSelector.mediaavailable": "Mídia Disponível", + "components.NotificationTypeSelector.mediaapproved": "Mídia Aprovada", + "components.NotificationTypeSelector.mediarequested": "Mídia Solicitada", + "components.NotificationTypeSelector.mediafailedDescription": "Envia uma notificação quando houver falha ao adicionar título aos serviços (Radarr/Sonarr). Para alguns agentes, somente serão enviadas notificações aos administradores ou usuários com perfil “Gerenciar solicitações”.", + "components.NotificationTypeSelector.mediafailed": "Solicitação Falhou", + "components.NotificationTypeSelector.mediaavailableDescription": "Envia uma notificação quando o título solicitado estiver disponível.", + "components.NotificationTypeSelector.mediaapprovedDescription": "Envia uma notificação quando a solicitação é aprovada.", + "i18n.request": "Solicitar" } diff --git a/src/i18n/locale/sv.json b/src/i18n/locale/sv.json index 1c04c32a..3ebdd160 100644 --- a/src/i18n/locale/sv.json +++ b/src/i18n/locale/sv.json @@ -364,5 +364,28 @@ "components.Settings.SettingsAbout.Releases.currentversion": "Aktuell Version", "components.Settings.Notifications.testsent": "Test-notifikation skickad!", "components.Settings.Notifications.test": "Testa", - "components.UserList.importfromplex": "Importera användare från Plex" + "components.UserList.importfromplex": "Importera användare från Plex", + "components.UserList.importfromplexerror": "Någonting gick fel vid importen av användare från Plex", + "components.UserEdit.autoapproveSeries": "Automatiskt Godkännande av TV Serier", + "components.UserEdit.autoapproveMovies": "Automatiskt Godkännande av Filmer", + "components.TvDetails.watchtrailer": "Kolla Trailer", + "components.Settings.Notifications.allowselfsigned": "Tillåt Självsignerade Certifikat", + "components.Settings.Notifications.NotificationsSlack.webhookUrl": "Webhook URL", + "components.Settings.Notifications.NotificationsSlack.validationWebhookUrlRequired": "Du måste lägga in en webhook URL", + "components.Settings.Notifications.NotificationsSlack.testsent": "Testnotifikation skickad!", + "components.Settings.Notifications.NotificationsSlack.test": "Test", + "components.Settings.Notifications.NotificationsSlack.slacksettingssaved": "Notiferingsinställningar för Slack sparade!", + "components.Settings.Notifications.NotificationsSlack.slacksettingsfailed": "Notifieringsinställningar för Slack misslyckades att sparas.", + "components.Settings.Notifications.NotificationsSlack.settingupslack": "Ställa in Slack Notifikationer", + "components.Settings.Notifications.NotificationsSlack.saving": "Sparar...", + "components.Settings.Notifications.NotificationsSlack.save": "Spara Ändringar", + "components.Settings.Notifications.NotificationsSlack.agentenabled": "Aktiverad", + "components.MovieDetails.watchtrailer": "Kolla Trailer", + "components.CollectionDetails.requesting": "Skickar förfrågan…", + "components.CollectionDetails.requestcollection": "Begär Kollektion", + "components.CollectionDetails.request": "Begär", + "components.CollectionDetails.overviewunavailable": "Översikt ej tillgänglig", + "components.CollectionDetails.overview": "Översikt", + "components.CollectionDetails.numberofmovies": "Antal Filmer: {count}", + "components.CollectionDetails.movies": "Filmer" } diff --git a/src/pages/settings/notifications/pushover.tsx b/src/pages/settings/notifications/pushover.tsx new file mode 100644 index 00000000..69b6f945 --- /dev/null +++ b/src/pages/settings/notifications/pushover.tsx @@ -0,0 +1,17 @@ +import { NextPage } from 'next'; +import React from 'react'; +import NotificationsPushover from '../../../components/Settings/Notifications/NotificationsPushover'; +import SettingsLayout from '../../../components/Settings/SettingsLayout'; +import SettingsNotifications from '../../../components/Settings/SettingsNotifications'; + +const NotificationsPage: NextPage = () => { + return ( + + + + + + ); +}; + +export default NotificationsPage; diff --git a/yarn.lock b/yarn.lock index a941d705..28cb1d09 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,56 +2,56 @@ # yarn lockfile v1 -"@ampproject/toolbox-core@^2.6.0": - version "2.6.0" - resolved "https://registry.yarnpkg.com/@ampproject/toolbox-core/-/toolbox-core-2.6.0.tgz#9824d5f133d82106a9bf0774920843c69fa5c869" - integrity sha512-sDMnHj8WaX3tqJS5VsIHkeW98nq5WQ0C9RoFc1PPS3rmYIlS0vhAfHbrjJw6wtuxBTQFxccje+Ew+2OJ2D15kA== +"@ampproject/toolbox-core@2.7.4", "@ampproject/toolbox-core@^2.7.1-alpha.0": + version "2.7.4" + resolved "https://registry.yarnpkg.com/@ampproject/toolbox-core/-/toolbox-core-2.7.4.tgz#8355136f16301458ce942acf6c55952c9a415627" + integrity sha512-qpBhcS4urB7IKc+jx2kksN7BuvvwCo7Y3IstapWo+EW+COY5EYAUwb2pil37v3TsaqHKgX//NloFP1SKzGZAnw== dependencies: - cross-fetch "3.0.5" + cross-fetch "3.0.6" lru-cache "6.0.0" -"@ampproject/toolbox-optimizer@2.7.0-alpha.1": - version "2.7.0-alpha.1" - resolved "https://registry.yarnpkg.com/@ampproject/toolbox-optimizer/-/toolbox-optimizer-2.7.0-alpha.1.tgz#ab4c386645f991e5da5a9d2967ed2bb734a9f6c4" - integrity sha512-2wTvOyM6GP6FrYQzxSQCg43STo1jMRGeDKa6YUkYXYH9fm9Wbt2wTRx+ajjb48JQ6WwUnGwga1MhQhVFzRQ+wQ== +"@ampproject/toolbox-optimizer@2.7.1-alpha.0": + version "2.7.1-alpha.0" + resolved "https://registry.yarnpkg.com/@ampproject/toolbox-optimizer/-/toolbox-optimizer-2.7.1-alpha.0.tgz#1571dcd02608223ff68f6b7223102a123e381197" + integrity sha512-WGPZKVQvHgNYJk1XVJCCmY+NVGTGJtvn0OALDyiegN4FJWOcilQUhCIcjMkZN59u1flz/u+sEKccM5qsROqVyg== dependencies: - "@ampproject/toolbox-core" "^2.6.0" - "@ampproject/toolbox-runtime-version" "^2.7.0-alpha.1" + "@ampproject/toolbox-core" "^2.7.1-alpha.0" + "@ampproject/toolbox-runtime-version" "^2.7.1-alpha.0" "@ampproject/toolbox-script-csp" "^2.5.4" - "@ampproject/toolbox-validator-rules" "^2.5.4" + "@ampproject/toolbox-validator-rules" "^2.7.1-alpha.0" abort-controller "3.0.0" - cross-fetch "3.0.5" - cssnano-simple "1.2.0" - dom-serializer "1.0.1" - domhandler "3.0.0" - domutils "2.1.0" - htmlparser2 "4.1.0" + cross-fetch "3.0.6" + cssnano-simple "1.2.1" + dom-serializer "1.1.0" + domhandler "3.3.0" + domutils "2.4.2" + htmlparser2 "5.0.1" https-proxy-agent "5.0.0" lru-cache "6.0.0" - node-fetch "2.6.0" + node-fetch "2.6.1" normalize-html-whitespace "1.0.0" postcss "7.0.32" postcss-safe-parser "4.0.2" - terser "5.1.0" + terser "5.5.1" -"@ampproject/toolbox-runtime-version@^2.7.0-alpha.1": - version "2.7.0-alpha.1" - resolved "https://registry.yarnpkg.com/@ampproject/toolbox-runtime-version/-/toolbox-runtime-version-2.7.0-alpha.1.tgz#2ecd603e1fc986f21048947639e99b5706e01ec3" - integrity sha512-JruvO4RfaC/piKOY/2w6vuasNjdrHnb+xvmQTl4zBBdMsDooohZKsN9jv9YiKIdpny4MzLt1ce497840vJJq+g== +"@ampproject/toolbox-runtime-version@^2.7.1-alpha.0": + version "2.7.4" + resolved "https://registry.yarnpkg.com/@ampproject/toolbox-runtime-version/-/toolbox-runtime-version-2.7.4.tgz#f49da0dab122101ef75ed3caed3a0142487b73e1" + integrity sha512-SAdOUOERp42thVNWaBJlnFvFVvnacMVnz5z9LyUZHSnoL1EqrAW5Sz5jv+Ly+gkA8NYsEaUxAdSCBAzE9Uzb4Q== dependencies: - "@ampproject/toolbox-core" "^2.6.0" + "@ampproject/toolbox-core" "2.7.4" "@ampproject/toolbox-script-csp@^2.5.4": version "2.5.4" resolved "https://registry.yarnpkg.com/@ampproject/toolbox-script-csp/-/toolbox-script-csp-2.5.4.tgz#d8b7b91a678ae8f263cb36d9b74e441b7d633aad" integrity sha512-+knTYetI5nWllRZ9wFcj7mYxelkiiFVRAAW/hl0ad8EnKHMH82tRlk40CapEnUHhp6Er5sCYkumQ8dngs3Q4zQ== -"@ampproject/toolbox-validator-rules@^2.5.4": - version "2.5.4" - resolved "https://registry.yarnpkg.com/@ampproject/toolbox-validator-rules/-/toolbox-validator-rules-2.5.4.tgz#7dee3a3edceefea459d060571db8cc6e7bbf0dd6" - integrity sha512-bS7uF+h0s5aiklc/iRaujiSsiladOsZBLrJ6QImJDXvubCAQtvE7om7ShlGSXixkMAO0OVMDWyuwLlEy8V1Ing== +"@ampproject/toolbox-validator-rules@^2.7.1-alpha.0": + version "2.7.4" + resolved "https://registry.yarnpkg.com/@ampproject/toolbox-validator-rules/-/toolbox-validator-rules-2.7.4.tgz#a58b5eca723f6c3557ac83b696de0247f5f03ce4" + integrity sha512-z3JRcpIZLLdVC9XVe7YTZuB3a/eR9s2SjElYB9AWRdyJyL5Jt7+pGNv4Uwh1uHVoBXsWEVQzNOWSNtrO3mSwZA== dependencies: - cross-fetch "3.0.5" + cross-fetch "3.0.6" "@apidevtools/json-schema-ref-parser@9.0.6": version "9.0.6" @@ -1365,26 +1365,26 @@ dependencies: tslib "^2.0.1" -"@formatjs/intl-datetimeformat@3.2.1": - version "3.2.1" - resolved "https://registry.yarnpkg.com/@formatjs/intl-datetimeformat/-/intl-datetimeformat-3.2.1.tgz#f20408cda0e932f2234ecb42fca1e90d2e75250d" - integrity sha512-teeUgUoieP0JjZYPWjJV72CoPQoukCMKGW1YUu00+TaHzZBNqVgPCdFJo2vgl1jKccOAT3VT79BHNEsR9DsBBQ== +"@formatjs/intl-datetimeformat@3.2.2": + version "3.2.2" + resolved "https://registry.yarnpkg.com/@formatjs/intl-datetimeformat/-/intl-datetimeformat-3.2.2.tgz#c1533cbff225ff835e9d11954fb3c77ccb68045f" + integrity sha512-wIqe4dPzbYB6SrJWNPKBnXkPj1pR68qtGCzHkPo8JGRpWQcVpHh3Cigw1cQs2I9M1F9dOtFHQP6gi+xsb1kAiA== dependencies: "@formatjs/ecma402-abstract" "1.5.0" tslib "^2.0.1" -"@formatjs/intl-displaynames@4.0.2": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@formatjs/intl-displaynames/-/intl-displaynames-4.0.2.tgz#31212238e7b07daa41fbac03186c532cbbb6c473" - integrity sha512-rOlDcFzr6UFYqH7BKI9vlpDC5MpTT48dsPxO9I6yciDlOb1IyqvIgUs+xsuNOj96akDCDrgwocrdJ1VEDO0Ntw== +"@formatjs/intl-displaynames@4.0.3": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@formatjs/intl-displaynames/-/intl-displaynames-4.0.3.tgz#af683f455b4b28b41e45bdeee3121e202cf38a03" + integrity sha512-wNJZzIzlA88oyHZAFdAnLKV/srtIrU//md9SU2Bo0LKXKIukz/g5LmJlyhq6uF1oYoJzVvvTxoVXscBJmKcJmg== dependencies: "@formatjs/ecma402-abstract" "1.5.0" tslib "^2.0.1" -"@formatjs/intl-listformat@5.0.2": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@formatjs/intl-listformat/-/intl-listformat-5.0.2.tgz#090055c437bf7176a7268a285f5d06fc7e963280" - integrity sha512-Y+7/Dw3oe29kT4afbw2KCSzast6M04ibidBMMPqjxOHHxan1LeL0KQsY/iRHTgTAcfiSIqZnneJZjZi4MzjLJg== +"@formatjs/intl-listformat@5.0.3": + version "5.0.3" + resolved "https://registry.yarnpkg.com/@formatjs/intl-listformat/-/intl-listformat-5.0.3.tgz#f56a0d28d0a78bff489513eabef980a966a570f9" + integrity sha512-IaW428RI5RpwXr/+doYT1H4ZHL3mYLU3nzR7ZaTkk5dBi1PKKGk1sDwymEzVxyrELT0WHhqhqLKdLjXAqxCz9g== dependencies: "@formatjs/ecma402-abstract" "1.5.0" tslib "^2.0.1" @@ -1396,35 +1396,44 @@ dependencies: "@formatjs/ecma402-abstract" "^1.2.1" -"@formatjs/intl-relativetimeformat@8.0.1": - version "8.0.1" - resolved "https://registry.yarnpkg.com/@formatjs/intl-relativetimeformat/-/intl-relativetimeformat-8.0.1.tgz#9fcad0dba673cf0e21b4b9f83dab22ca6b482901" - integrity sha512-yMCtrDeQnqx95ucaYbHc1BP4XUP0q+JoMiP8kzMe04AgVvkfAScsoRuKfXw1EH1FkV51C/vqWIKDoGj1WoZnxQ== +"@formatjs/intl-relativetimeformat@8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@formatjs/intl-relativetimeformat/-/intl-relativetimeformat-8.0.2.tgz#c8b999f66abe029f108a97a2105582f34b6319a8" + integrity sha512-RBO+4zxJuIYtYGfxv1GuZJQDtrA+fZlgcHjSVoo5HwznWdfg5vVTe8qdbSDbdyFobbB2OYqwj4mcRO2M5P1oNw== dependencies: "@formatjs/ecma402-abstract" "1.5.0" tslib "^2.0.1" -"@formatjs/intl@1.4.13": - version "1.4.13" - resolved "https://registry.yarnpkg.com/@formatjs/intl/-/intl-1.4.13.tgz#634e8e7d29385ade5cf7e7c0ba8aae63e585cba0" - integrity sha512-GEWwkaNFnskOGGd6gq0Y0RetiH2iNnARXzQ+glR2RqU0xk00aS5KpwkEDo1hN9NaO9fRr9UDvzDoEu9foQFVmA== +"@formatjs/intl@1.4.15": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@formatjs/intl/-/intl-1.4.15.tgz#b21122e7a900957fd25eed24383df4aaefeaa6ee" + integrity sha512-njrwmR/X0XwAp7yHPdAgqGeEeuohyO0JqoE798WxuzjTzLm3khAODJmyH0nZDg4DEJ4R5Uf5lj3whtfwBUVm+g== dependencies: "@formatjs/ecma402-abstract" "1.5.0" - "@formatjs/intl-datetimeformat" "3.2.1" - "@formatjs/intl-displaynames" "4.0.2" - "@formatjs/intl-listformat" "5.0.2" - "@formatjs/intl-relativetimeformat" "8.0.1" + "@formatjs/intl-datetimeformat" "3.2.2" + "@formatjs/intl-displaynames" "4.0.3" + "@formatjs/intl-listformat" "5.0.3" + "@formatjs/intl-relativetimeformat" "8.0.2" fast-memoize "^2.5.2" - intl-messageformat "9.4.0" - intl-messageformat-parser "6.1.0" + intl-messageformat "9.4.2" + intl-messageformat-parser "6.1.2" tslib "^2.0.1" -"@formatjs/ts-transformer@2.12.11": - version "2.12.11" - resolved "https://registry.yarnpkg.com/@formatjs/ts-transformer/-/ts-transformer-2.12.11.tgz#fedbc44a44a7da6925d149e3051cd8a7a869d8c2" - integrity sha512-XjknAXQEy7s8Q9LsyECFo1369kctH/C841o/JeDqHRDhkgn1vV/IlF3v2qli7mxEc+L2JcO8LUwqOALpTBW/5A== +"@formatjs/ts-transformer@2.13.0": + version "2.13.0" + resolved "https://registry.yarnpkg.com/@formatjs/ts-transformer/-/ts-transformer-2.13.0.tgz#df47b35cdd209269d282a411f1646e0498aa8fdc" + integrity sha512-mu7sHXZk1NWZrQ3eUqugpSYo8x5/tXkrI4uIbFqCEC0eNgQaIcoKgVeDFgDAcgG+cEme2atAUYSFF+DFWC4org== dependencies: - intl-messageformat-parser "6.1.0" + intl-messageformat-parser "6.1.2" + tslib "^2.0.1" + typescript "^4.0" + +"@formatjs/ts-transformer@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@formatjs/ts-transformer/-/ts-transformer-3.0.0.tgz#22f7fa2be9117d1369faf9037aff336071ea6f84" + integrity sha512-Q7fBV8Rpd8WFlb4+y94/OQUG/OonE6bMBKGeS08U7ET8qL4ReI82dhewiUuYisgl+ME32xTf4hcYZAHe0L0GyQ== + dependencies: + intl-messageformat-parser "6.1.2" tslib "^2.0.1" typescript "^4.0" @@ -1497,20 +1506,20 @@ titleize "^2.1.0" tlds "^1.212.0" -"@next/env@10.0.3": - version "10.0.3" - resolved "https://registry.yarnpkg.com/@next/env/-/env-10.0.3.tgz#ef1077d78bf500855576f83090d6fb1ec96272f8" - integrity sha512-xjJt2VXoSxAydskmt77nJuEtRL782E4ltaj5JtMzJ8YkNUMMu3d5ktpCR+Q3INKHF/RY6zHJ9QzyE3/s1ikbNg== +"@next/env@10.0.4": + version "10.0.4" + resolved "https://registry.yarnpkg.com/@next/env/-/env-10.0.4.tgz#ac759094d021853616af56a7bd6720e44a92a303" + integrity sha512-U+XIL75XM1pCmY4+9kYbst/0IptlfDnkFfKdgADBZulQlfng4RB3zirdzkoBtod0lVcrGgDryzOi1mM23RiiVQ== -"@next/polyfill-module@10.0.3": - version "10.0.3" - resolved "https://registry.yarnpkg.com/@next/polyfill-module/-/polyfill-module-10.0.3.tgz#507e99f6dd351dc4a6e45b63dbd397087ece459a" - integrity sha512-JaiycQZZbqViaMZgRGYcPIdCPDz+qRnqEGxbhQlrxyPaBaOtsrAEkGf1SS2wJZKa/ncxqWHMfSvizDcGcz/ygQ== +"@next/polyfill-module@10.0.4": + version "10.0.4" + resolved "https://registry.yarnpkg.com/@next/polyfill-module/-/polyfill-module-10.0.4.tgz#c34391a12ad80d6e373c403f96c8e2bbd793dca1" + integrity sha512-i2gLUa3YuZ2eQg+d91n+jS4YbPVKg1v0HHIUeJFJMMtpG/apBkTuTLBQGJXe4nKNf7/41NWLDft4ihC3Zfd+Yw== -"@next/react-dev-overlay@10.0.3": - version "10.0.3" - resolved "https://registry.yarnpkg.com/@next/react-dev-overlay/-/react-dev-overlay-10.0.3.tgz#99f3151677747d8be08a9314fa7ab3611e8161b8" - integrity sha512-ykiKeUhTsMRoyyYnx4jM8xeOPfKGqQ7xgx2dNXOu4tbPpdivzjJp2+K6+xnqhTmZ7uxfFBV+b1OE1ZzA8qyX5Q== +"@next/react-dev-overlay@10.0.4": + version "10.0.4" + resolved "https://registry.yarnpkg.com/@next/react-dev-overlay/-/react-dev-overlay-10.0.4.tgz#c578a3c71e2f8a8fe2aae8007cc40d1cf10bc768" + integrity sha512-8pKN0PspEtfVFqeSpNQymfXWyV95OTIT0xP9IqILJX2+52ICdU5D+YNuNIwpc4ZOZ0CssM/uYsz6K1FHbCaU7A== dependencies: "@babel/code-frame" "7.10.4" ally.js "1.4.1" @@ -1523,10 +1532,10 @@ stacktrace-parser "0.1.10" strip-ansi "6.0.0" -"@next/react-refresh-utils@10.0.3": - version "10.0.3" - resolved "https://registry.yarnpkg.com/@next/react-refresh-utils/-/react-refresh-utils-10.0.3.tgz#276bec60eae18768f96baf8a52f668f657f50ab4" - integrity sha512-XtzzPX2R4+MIyu1waEQUo2tiNwWVEkmObA6pboRCDTPOs4Ri8ckaIE08lN5A5opyF6GVN+IEq/J8KQrgsePsZQ== +"@next/react-refresh-utils@10.0.4": + version "10.0.4" + resolved "https://registry.yarnpkg.com/@next/react-refresh-utils/-/react-refresh-utils-10.0.4.tgz#5ad753572891aa7cb1010b358cc4241d7be20d20" + integrity sha512-kZ/37aSQaR0GCZVqh7WDLkeEZqzjPQoZUDdo6TOWiIEb+089AmfYp8A4/1ra9Fu8T4b4wnB76TRl6tp6DeJLXg== "@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents": version "2.1.8-no-fsevents" @@ -1669,6 +1678,18 @@ "@octokit/openapi-types" "^1.2.0" "@types/node" ">= 8" +"@opentelemetry/api@0.14.0": + version "0.14.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-0.14.0.tgz#4e17d8d2f1da72b19374efa7b6526aa001267cae" + integrity sha512-L7RMuZr5LzMmZiQSQDy9O1jo0q+DaLy6XpYJfIGfYSfoJA5qzYwUP3sP1uMIQ549DvxAgM3ng85EaPTM/hUHwQ== + dependencies: + "@opentelemetry/context-base" "^0.14.0" + +"@opentelemetry/context-base@^0.14.0": + version "0.14.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/context-base/-/context-base-0.14.0.tgz#c67fc20a4d891447ca1a855d7d70fa79a3533001" + integrity sha512-sDOAZcYwynHFTbLo6n8kIbLiVF3a3BLkrmehJUyEbT9F+Smbi47kLGS2gG2g0fjBLR/Lr1InPD7kXL7FaTqEkw== + "@semantic-release/changelog@^5.0.1": version "5.0.1" resolved "https://registry.yarnpkg.com/@semantic-release/changelog/-/changelog-5.0.1.tgz#50a84b63e5d391b7debfe021421589fa2bcdafe4" @@ -1987,13 +2008,14 @@ resolved "https://registry.yarnpkg.com/@types/debug/-/debug-0.0.31.tgz#bac8d8aab6a823e91deb7f79083b2a35fa638f33" integrity sha512-LS1MCPaQKqspg7FvexuhmDbWUhE2yIJ+4AgVIyObfc06/UKZ8REgxGNjZc82wPLWmbeOm7S+gSsLgo75TanG4A== -"@types/email-templates@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@types/email-templates/-/email-templates-7.1.0.tgz#9dbdb4e20aa6c700f5587b9b76bcbd7111e985df" - integrity sha512-IhL+OLeZySsTq7dRtmytObRJaX5Y0SDKS1yTUtwjI6oS4rEXELiD+pYESdv/Eq5Stk8hz2unJeWChjHN/q34ig== +"@types/email-templates@^8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@types/email-templates/-/email-templates-8.0.0.tgz#9bd4e328be02253d65609ff078181e98e3c2818a" + integrity sha512-oPZQ9qkidtJCTWH3XKwfcqKdAuBrFZ6L+yVr7FQONivDm0g88MoKR0cCn13Hrt79R4r+FFAinELC22+6eXFa0Q== dependencies: "@types/html-to-text" "*" "@types/nodemailer" "*" + juice "^7.0.0" "@types/emoji-regex@^8.0.0": version "8.0.0" @@ -2085,6 +2107,11 @@ resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.165.tgz#74d55d947452e2de0742bad65270433b63a8c30f" integrity sha512-tjSSOTHhI5mCHTy/OOXYIhi2Wt1qcbHmuXD1Ha7q70CgI/I71afO4XtLb/cVexki1oVYchpul/TOuu3Arcdxrg== +"@types/lodash@^4.14.167": + version "4.14.167" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.167.tgz#ce7d78553e3c886d4ea643c37ec7edc20f16765e" + integrity sha512-w7tQPjARrvdeBkX/Rwg95S592JwxqOjmms3zWQ0XZgSyxSLdzWaYH3vErBhdVS/lRBX7F8aBYcYJYTr5TMGOzw== + "@types/mdast@^3.0.0", "@types/mdast@^3.0.3": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.3.tgz#2d7d671b1cd1ea3deb306ea75036c2a0407d2deb" @@ -2124,10 +2151,10 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.10.tgz#5958a82e41863cfc71f2307b3748e3491ba03785" integrity sha512-J32dgx2hw8vXrSbu4ZlVhn1Nm3GbeCFNw2FWL8S5QKucHGY0cyNwjdQdO+KMBZ4wpmC7KhLCiNsdk1RFRIYUQQ== -"@types/node@^14.14.14": - version "14.14.14" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.14.tgz#f7fd5f3cc8521301119f63910f0fb965c7d761ae" - integrity sha512-UHnOPWVWV1z+VV8k6L1HhG7UbGBgIdghqF3l9Ny9ApPghbjICXkUJSd/b9gOgQfjM1r+37cipdw/HJ3F6ICEnQ== +"@types/node@^14.14.20": + version "14.14.20" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.20.tgz#f7974863edd21d1f8a494a73e8e2b3658615c340" + integrity sha512-Y93R97Ouif9JEOWPIUyU+eyIdyRqQR0I8Ez1dzku4hDx34NWh4HbtIc3WNzwB1Y9ULvNGeu5B8h8bVL5cAk4/A== "@types/nodemailer@*", "@types/nodemailer@^6.4.0": version "6.4.0" @@ -2258,66 +2285,66 @@ resolved "https://registry.yarnpkg.com/@types/yup/-/yup-0.29.11.tgz#d654a112973f5e004bf8438122bd7e56a8e5cd7e" integrity sha512-9cwk3c87qQKZrT251EDoibiYRILjCmxBvvcb4meofCmx1vdnNcR9gyildy5vOHASpOKMsn42CugxUvcwK5eu1g== -"@typescript-eslint/eslint-plugin@^4.10.0": - version "4.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.10.0.tgz#19ed3baf4bc4232c5a7fcd32eaca75c3a5baf9f3" - integrity sha512-h6/V46o6aXpKRlarP1AiJEXuCJ7cMQdlpfMDrcllIgX3dFkLwEBTXAoNP98ZoOmqd1xvymMVRAI4e7yVvlzWEg== +"@typescript-eslint/eslint-plugin@^4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.12.0.tgz#00d1b23b40b58031e6d7c04a5bc6c1a30a2e834a" + integrity sha512-wHKj6q8s70sO5i39H2g1gtpCXCvjVszzj6FFygneNFyIAxRvNSVz9GML7XpqrB9t7hNutXw+MHnLN/Ih6uyB8Q== dependencies: - "@typescript-eslint/experimental-utils" "4.10.0" - "@typescript-eslint/scope-manager" "4.10.0" + "@typescript-eslint/experimental-utils" "4.12.0" + "@typescript-eslint/scope-manager" "4.12.0" debug "^4.1.1" functional-red-black-tree "^1.0.1" regexpp "^3.0.0" semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/experimental-utils@4.10.0": - version "4.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.10.0.tgz#dbf5d0f89802d5feaf7d11e5b32df29bbc2f3a0e" - integrity sha512-opX+7ai1sdWBOIoBgpVJrH5e89ra1KoLrJTz0UtWAa4IekkKmqDosk5r6xqRaNJfCXEfteW4HXQAwMdx+jjEmw== +"@typescript-eslint/experimental-utils@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.12.0.tgz#372838e76db76c9a56959217b768a19f7129546b" + integrity sha512-MpXZXUAvHt99c9ScXijx7i061o5HEjXltO+sbYfZAAHxv3XankQkPaNi5myy0Yh0Tyea3Hdq1pi7Vsh0GJb0fA== dependencies: "@types/json-schema" "^7.0.3" - "@typescript-eslint/scope-manager" "4.10.0" - "@typescript-eslint/types" "4.10.0" - "@typescript-eslint/typescript-estree" "4.10.0" + "@typescript-eslint/scope-manager" "4.12.0" + "@typescript-eslint/types" "4.12.0" + "@typescript-eslint/typescript-estree" "4.12.0" eslint-scope "^5.0.0" eslint-utils "^2.0.0" -"@typescript-eslint/parser@^4.10.0": - version "4.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.10.0.tgz#1a622b0847b765b2d8f0ede6f0cdd85f03d76031" - integrity sha512-amBvUUGBMadzCW6c/qaZmfr3t9PyevcSWw7hY2FuevdZVp5QPw/K76VSQ5Sw3BxlgYCHZcK6DjIhSZK0PQNsQg== +"@typescript-eslint/parser@^4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.12.0.tgz#e1cf30436e4f916c31fcc962158917bd9e9d460a" + integrity sha512-9XxVADAo9vlfjfoxnjboBTxYOiNY93/QuvcPgsiKvHxW6tOZx1W4TvkIQ2jB3k5M0pbFP5FlXihLK49TjZXhuQ== dependencies: - "@typescript-eslint/scope-manager" "4.10.0" - "@typescript-eslint/types" "4.10.0" - "@typescript-eslint/typescript-estree" "4.10.0" + "@typescript-eslint/scope-manager" "4.12.0" + "@typescript-eslint/types" "4.12.0" + "@typescript-eslint/typescript-estree" "4.12.0" debug "^4.1.1" -"@typescript-eslint/scope-manager@4.10.0": - version "4.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.10.0.tgz#dbd7e1fc63d7363e3aaff742a6f2b8afdbac9d27" - integrity sha512-WAPVw35P+fcnOa8DEic0tQUhoJJsgt+g6DEcz257G7vHFMwmag58EfowdVbiNcdfcV27EFR0tUBVXkDoIvfisQ== +"@typescript-eslint/scope-manager@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.12.0.tgz#beeb8beca895a07b10c593185a5612f1085ef279" + integrity sha512-QVf9oCSVLte/8jvOsxmgBdOaoe2J0wtEmBr13Yz0rkBNkl5D8bfnf6G4Vhox9qqMIoG7QQoVwd2eG9DM/ge4Qg== dependencies: - "@typescript-eslint/types" "4.10.0" - "@typescript-eslint/visitor-keys" "4.10.0" + "@typescript-eslint/types" "4.12.0" + "@typescript-eslint/visitor-keys" "4.12.0" "@typescript-eslint/types@3.10.1": version "3.10.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-3.10.1.tgz#1d7463fa7c32d8a23ab508a803ca2fe26e758727" integrity sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ== -"@typescript-eslint/types@4.10.0": - version "4.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.10.0.tgz#12f983750ebad867f0c806e705c1953cd6415789" - integrity sha512-+dt5w1+Lqyd7wIPMa4XhJxUuE8+YF+vxQ6zxHyhLGHJjHiunPf0wSV8LtQwkpmAsRi1lEOoOIR30FG5S2HS33g== +"@typescript-eslint/types@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.12.0.tgz#fb891fe7ccc9ea8b2bbd2780e36da45d0dc055e5" + integrity sha512-N2RhGeheVLGtyy+CxRmxdsniB7sMSCfsnbh8K/+RUIXYYq3Ub5+sukRCjVE80QerrUBvuEvs4fDhz5AW/pcL6g== -"@typescript-eslint/typescript-estree@4.10.0": - version "4.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.10.0.tgz#1e62e45fd57866afd42daf5e9fb6bd4e8dbcfa75" - integrity sha512-mGK0YRp9TOk6ZqZ98F++bW6X5kMTzCRROJkGXH62d2azhghmq+1LNLylkGe6uGUOQzD452NOAEth5VAF6PDo5g== +"@typescript-eslint/typescript-estree@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.12.0.tgz#3963418c850f564bdab3882ae23795d115d6d32e" + integrity sha512-gZkFcmmp/CnzqD2RKMich2/FjBTsYopjiwJCroxqHZIY11IIoN0l5lKqcgoAPKHt33H2mAkSfvzj8i44Jm7F4w== dependencies: - "@typescript-eslint/types" "4.10.0" - "@typescript-eslint/visitor-keys" "4.10.0" + "@typescript-eslint/types" "4.12.0" + "@typescript-eslint/visitor-keys" "4.12.0" debug "^4.1.1" globby "^11.0.1" is-glob "^4.0.1" @@ -2346,12 +2373,12 @@ dependencies: eslint-visitor-keys "^1.1.0" -"@typescript-eslint/visitor-keys@4.10.0": - version "4.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.10.0.tgz#9478822329a9bc8ebcc80623d7f79a01da5ee451" - integrity sha512-hPyz5qmDMuZWFtHZkjcCpkAKHX8vdu1G3YsCLEd25ryZgnJfj6FQuJ5/O7R+dB1ueszilJmAFMtlU4CA6se3Jg== +"@typescript-eslint/visitor-keys@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.12.0.tgz#a470a79be6958075fa91c725371a83baf428a67a" + integrity sha512-hVpsLARbDh4B9TKYz5cLbcdMIOAoBYgFPCSP9FFS/liSF+b33gVNq8JHY3QGhHNVz85hObvL7BEYLlgx553WCw== dependencies: - "@typescript-eslint/types" "4.10.0" + "@typescript-eslint/types" "4.12.0" eslint-visitor-keys "^2.0.0" "@webassemblyjs/ast@1.9.0": @@ -3009,10 +3036,10 @@ axe-core@^4.0.2: resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.1.1.tgz#70a7855888e287f7add66002211a423937063eaf" integrity sha512-5Kgy8Cz6LPC9DJcNb3yjAXTu3XihQgEdnIg50c//zOC/MyLP0Clg+Y8Sh9ZjjnvBrDZU4DgXS9C3T9r4/scGZQ== -axios@^0.21.0: - version "0.21.0" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.0.tgz#26df088803a2350dff2c27f96fef99fe49442aca" - integrity sha512-fmkJBknJKoZwem3/IKSSLpkdNXZeBu5Q7GA/aRsr2btgrptmSCxi2oFjZHqGdK9DoTil9PIHlPIZw2EcRJXRvw== +axios@^0.21.1: + version "0.21.1" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8" + integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA== dependencies: follow-redirects "^1.10.0" @@ -3079,18 +3106,18 @@ babel-plugin-react-intl@^7.0.0: intl-messageformat-parser "^5.3.7" schema-utils "^2.6.6" -babel-plugin-react-intl@^8.2.22: - version "8.2.22" - resolved "https://registry.yarnpkg.com/babel-plugin-react-intl/-/babel-plugin-react-intl-8.2.22.tgz#076bbcf792a7d975803917dd49c9906799285ece" - integrity sha512-maUrmP2NY1falW5dYXGfq77YjGpQPLZUpzTgs/jRevTLTcey1u1+lTv01pA6so+iPtUfxkH3er7Z1P9zZNvKOg== +babel-plugin-react-intl@^8.2.25: + version "8.2.25" + resolved "https://registry.yarnpkg.com/babel-plugin-react-intl/-/babel-plugin-react-intl-8.2.25.tgz#7b6adaa2bc291ac7b9f87bf51f1c2ea8974ffe84" + integrity sha512-vqzRwqxMKHBKEpzWIIabxUXSBYd8urOkk49nQdzgEt55tLIuDc1XdHceeMNaeJt9VRLYZUiL5vpYpnvrntUNMQ== dependencies: "@babel/core" "^7.9.0" "@babel/helper-plugin-utils" "^7.8.3" "@babel/types" "^7.9.5" - "@formatjs/ts-transformer" "2.12.11" + "@formatjs/ts-transformer" "2.13.0" "@types/babel__core" "^7.1.7" "@types/schema-utils" "^2.4.0" - intl-messageformat-parser "6.1.0" + intl-messageformat-parser "6.1.2" schema-utils "^3.0.0" tslib "^2.0.1" @@ -4514,12 +4541,12 @@ cron-parser@^2.7.3: is-nan "^1.3.0" moment-timezone "^0.5.31" -cross-fetch@3.0.5: - version "3.0.5" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.0.5.tgz#2739d2981892e7ab488a7ad03b92df2816e03f4c" - integrity sha512-FFLcLtraisj5eteosnX1gf01qYDCOc4fDy0+euOt8Kn9YBY2NtXL/pCoYPavw24NIQkQqm5ZOLsGD5Zzj0gyew== +cross-fetch@3.0.6: + version "3.0.6" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.0.6.tgz#3a4040bc8941e653e0e9cf17f29ebcd177d3365c" + integrity sha512-KBPUbqgFjzWlVcURG+Svp9TlhA5uliYtiNx/0r8nv0pdypeQCRJ9IaSIc3q/x3q8t3F75cHuwxVql1HFGHCNJQ== dependencies: - node-fetch "2.6.0" + node-fetch "2.6.1" cross-spawn@^5.0.1: version "5.1.0" @@ -4703,14 +4730,6 @@ cssesc@^3.0.0: resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -cssnano-preset-simple@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/cssnano-preset-simple/-/cssnano-preset-simple-1.2.0.tgz#afcf13eb076e8ebd91c4f311cd449781c14c7371" - integrity sha512-zojGlY+KasFeQT/SnD/WqYXHcKddz2XHRDtIwxrWpGqGHp5IyLWsWFS3UW7pOf3AWvfkpYSRdxOSlYuJPz8j8g== - dependencies: - caniuse-lite "^1.0.30001093" - postcss "^7.0.32" - cssnano-preset-simple@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/cssnano-preset-simple/-/cssnano-preset-simple-1.2.1.tgz#8976013114b1fc4718253d30f21aaed1780fb80e" @@ -4719,14 +4738,6 @@ cssnano-preset-simple@1.2.1: caniuse-lite "^1.0.30001093" postcss "^7.0.32" -cssnano-simple@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/cssnano-simple/-/cssnano-simple-1.2.0.tgz#b8cc5f52c2a52e6513b4636d0da165ec9d48d327" - integrity sha512-pton9cZ70/wOCWMAbEGHO1ACsW1KggTB6Ikj7k71uOEsz6SfByH++86+WAmXjRSc9q/g9gxkpFP9bDX9vRotdA== - dependencies: - cssnano-preset-simple "1.2.0" - postcss "^7.0.32" - cssnano-simple@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/cssnano-simple/-/cssnano-simple-1.2.1.tgz#6de5d9dd75774bc8f31767573410a952c7dd8a12" @@ -5152,10 +5163,10 @@ dom-serializer@0, dom-serializer@^0.2.1: domelementtype "^2.0.1" entities "^2.0.0" -dom-serializer@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.0.1.tgz#79695eb49af3cd8abc8d93a73da382deb1ca0795" - integrity sha512-1Aj1Qy3YLbdslkI75QEOfdp9TkQ3o8LRISAzxOibjBs/xWwr1WxZFOQphFkZuepHFGo+kB8e5FVJSS0faAJ4Rw== +dom-serializer@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.1.0.tgz#5f7c828f1bfc44887dc2a315ab5c45691d544b58" + integrity sha512-ox7bvGXt2n+uLWtCRLybYx60IrOlWL/aCebWJk1T0d4m3y2tzf4U3ij9wBMUb6YJZpz06HCCYuyCDveE2xXmzQ== dependencies: domelementtype "^2.0.1" domhandler "^3.0.0" @@ -5198,10 +5209,10 @@ domelementtype@^2.1.0: resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.1.0.tgz#a851c080a6d1c3d94344aed151d99f669edf585e" integrity sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w== -domhandler@3.0.0, domhandler@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-3.0.0.tgz#51cd13efca31da95bbb0c5bee3a48300e333b3e9" - integrity sha512-eKLdI5v9m67kbXQbJSNn1zjh0SDzvzWVWtX+qEI3eMjZw8daH9k8rlj1FZY9memPwjiskQFbe7vHVVJIAqoEhw== +domhandler@3.3.0, domhandler@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-3.3.0.tgz#6db7ea46e4617eb15cf875df68b2b8524ce0037a" + integrity sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA== dependencies: domelementtype "^2.0.1" @@ -5212,10 +5223,10 @@ domhandler@^2.3.0: dependencies: domelementtype "1" -domhandler@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-3.3.0.tgz#6db7ea46e4617eb15cf875df68b2b8524ce0037a" - integrity sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA== +domhandler@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-3.0.0.tgz#51cd13efca31da95bbb0c5bee3a48300e333b3e9" + integrity sha512-eKLdI5v9m67kbXQbJSNn1zjh0SDzvzWVWtX+qEI3eMjZw8daH9k8rlj1FZY9memPwjiskQFbe7vHVVJIAqoEhw== dependencies: domelementtype "^2.0.1" @@ -5234,14 +5245,14 @@ domutils@1.5.1: dom-serializer "0" domelementtype "1" -domutils@2.1.0, domutils@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.1.0.tgz#7ade3201af43703fde154952e3a868eb4b635f16" - integrity sha512-CD9M0Dm1iaHfQ1R/TI+z3/JWp/pgub0j4jIQKH89ARR4ATAV2nbaOQS5XxU9maJP5jHaPdDDQSEHuE2UmpUTKg== +domutils@2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.4.2.tgz#7ee5be261944e1ad487d9aa0616720010123922b" + integrity sha512-NKbgaM8ZJOecTZsIzW5gSuplsX2IWW2mIK7xVr8hTQF2v1CJWTmLZ1HOCh5sH+IzVPAGE5IucooOkvwBRAdowA== dependencies: - dom-serializer "^0.2.1" + dom-serializer "^1.0.1" domelementtype "^2.0.1" - domhandler "^3.0.0" + domhandler "^3.3.0" domutils@^1.5.1, domutils@^1.7.0: version "1.7.0" @@ -5251,6 +5262,15 @@ domutils@^1.5.1, domutils@^1.7.0: dom-serializer "0" domelementtype "1" +domutils@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.1.0.tgz#7ade3201af43703fde154952e3a868eb4b635f16" + integrity sha512-CD9M0Dm1iaHfQ1R/TI+z3/JWp/pgub0j4jIQKH89ARR4ATAV2nbaOQS5XxU9maJP5jHaPdDDQSEHuE2UmpUTKg== + dependencies: + dom-serializer "^0.2.1" + domelementtype "^2.0.1" + domhandler "^3.0.0" + domutils@^2.4.2: version "2.4.4" resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.4.4.tgz#282739c4b150d022d34699797369aad8d19bbbd3" @@ -5596,18 +5616,18 @@ eslint-config-prettier@^7.1.0: resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-7.1.0.tgz#5402eb559aa94b894effd6bddfa0b1ca051c858f" integrity sha512-9sm5/PxaFG7qNJvJzTROMM1Bk1ozXVTKI0buKOyb0Bsr1hrwi0H/TzxF/COtf1uxikIK8SwhX7K6zg78jAzbeA== -eslint-plugin-formatjs@^2.9.11: - version "2.9.11" - resolved "https://registry.yarnpkg.com/eslint-plugin-formatjs/-/eslint-plugin-formatjs-2.9.11.tgz#a44d0bc4c32f408e8091f2dcda7cfd18dda56fdc" - integrity sha512-2JY/hAqwQIyIMpJb1CANUhlZL0ZiB3uvGLrIUSSOlu8TJjGI8m57l5j+/8jDlKrAtHy9qvFp5ywR+8qi9vDvlA== +eslint-plugin-formatjs@^2.10.2: + version "2.10.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-formatjs/-/eslint-plugin-formatjs-2.10.2.tgz#4bc2f5f57669ea761e66c56fbbd7099d644c3d6e" + integrity sha512-xi9EvtFalho/ZIny9QyoC84J+YHTh/k+ZRU5m8g7ClyRTyjPU1JTBA4IuukW5/rRb92Ah6f1vpQXwIajzgzGvA== dependencies: - "@formatjs/ts-transformer" "2.12.11" + "@formatjs/ts-transformer" "3.0.0" "@types/emoji-regex" "^8.0.0" "@types/eslint" "^7.2.0" "@types/estree" "^0.0.45" "@typescript-eslint/typescript-estree" "^3.6.0" emoji-regex "^9.0.0" - intl-messageformat-parser "6.1.0" + intl-messageformat-parser "6.1.2" tslib "^2.0.1" eslint-plugin-jsx-a11y@^6.4.1: @@ -5627,10 +5647,10 @@ eslint-plugin-jsx-a11y@^6.4.1: jsx-ast-utils "^3.1.0" language-tags "^1.0.5" -eslint-plugin-prettier@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.0.tgz#61e295349a65688ffac0b7808ef0a8244bdd8d40" - integrity sha512-tMTwO8iUWlSRZIwS9k7/E4vrTsfvsrcM5p1eftyuqWH25nKsz/o6/54I7jwQ/3zobISyC7wMy9ZsFwgTxOcOpQ== +eslint-plugin-prettier@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.1.tgz#7079cfa2497078905011e6f82e8dd8453d1371b7" + integrity sha512-Rq3jkcFY8RYeQLgk2cCwuc0P7SEFwDravPhsJZOQ5N4YI4DSg50NyqJ/9gdZHzQlHf8MvafSesbNJCcP/FF6pQ== dependencies: prettier-linter-helpers "^1.0.0" @@ -5639,10 +5659,10 @@ eslint-plugin-react-hooks@^4.2.0: resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.2.0.tgz#8c229c268d468956334c943bb45fc860280f5556" integrity sha512-623WEiZJqxR7VdxFCKLI6d6LLpwJkGPYKODnkH3D7WpOG5KM8yWueBd8TLsNAetEJNF5iJmolaAKO3F8yzyVBQ== -eslint-plugin-react@^7.21.5: - version "7.21.5" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.21.5.tgz#50b21a412b9574bfe05b21db176e8b7b3b15bff3" - integrity sha512-8MaEggC2et0wSF6bUeywF7qQ46ER81irOdWS4QWxnnlAEsnzeBevk1sWh7fhpCghPpXb+8Ks7hvaft6L/xsR6g== +eslint-plugin-react@^7.22.0: + version "7.22.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.22.0.tgz#3d1c542d1d3169c45421c1215d9470e341707269" + integrity sha512-p30tuX3VS+NWv9nQot9xIGAHBXR0+xJVaZriEsHoJrASGCJZDJ8JLNM0YqKqI0AKm6Uxaa1VUHoNEibxRCMQHA== dependencies: array-includes "^3.1.1" array.prototype.flatmap "^1.2.3" @@ -5689,10 +5709,10 @@ eslint-visitor-keys@^2.0.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== -eslint@^7.16.0: - version "7.16.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.16.0.tgz#a761605bf9a7b32d24bb7cde59aeb0fd76f06092" - integrity sha512-iVWPS785RuDA4dWuhhgXTNrGxHHK3a8HLSMBgbbU59ruJDubUraXN8N5rn7kb8tG6sjg74eE0RA3YWT51eusEw== +eslint@^7.17.0: + version "7.17.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.17.0.tgz#4ccda5bf12572ad3bf760e6f195886f50569adb0" + integrity sha512-zJk08MiBgwuGoxes5sSQhOtibZ75pz0J35XTRlZOk9xMffhpA9BTbQZxoXZzOl5zMbleShbGwtw+1kGferfFwQ== dependencies: "@babel/code-frame" "^7.0.0" "@eslint/eslintrc" "^0.2.2" @@ -5880,16 +5900,17 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2: dependencies: homedir-polyfill "^1.0.1" -express-openapi-validator@^4.9.4: - version "4.9.4" - resolved "https://registry.yarnpkg.com/express-openapi-validator/-/express-openapi-validator-4.9.4.tgz#2ac0b5fcbcb0c4b74a6f4df2674dbd27b1ce81d8" - integrity sha512-TAk9DcEnfwewdvou3jXLYGCgx120UMKRF/bN6vcmNPiDQPuk5axMxL9QwG5pterRkuq0LJcVQkK2dfifVnyMPA== +express-openapi-validator@^4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/express-openapi-validator/-/express-openapi-validator-4.10.2.tgz#55ba35b96522b5ef67f8a8d6b8b4a1cf0be96e91" + integrity sha512-dNfTt5US6ZEtycoTBS82uspMYwyQJsb2+S1RVvPg4OqCcqs44XUfn7R1pPDYQM3kWuDPxbE2Dzc8KbKxR+VKeA== dependencies: ajv "^6.12.6" content-type "^1.0.4" js-yaml "^3.14.0" json-schema-ref-parser "^9.0.6" lodash.clonedeep "^4.5.0" + lodash.get "^4.4.2" lodash.merge "^4.6.2" lodash.uniq "^4.5.0" lodash.zipobject "^4.1.3" @@ -6222,13 +6243,20 @@ find-up@^5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" -find-versions@^3.0.0, find-versions@^3.2.0: +find-versions@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-3.2.0.tgz#10297f98030a786829681690545ef659ed1d254e" integrity sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww== dependencies: semver-regex "^2.0.0" +find-versions@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-4.0.0.tgz#3c57e573bf97769b8cb8df16934b627915da4965" + integrity sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ== + dependencies: + semver-regex "^3.1.2" + findup-sync@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" @@ -6908,14 +6936,14 @@ html-to-text@6.0.0, html-to-text@^6.0.0: lodash "^4.17.20" minimist "^1.2.5" -htmlparser2@4.1.0, htmlparser2@^4.0.0, htmlparser2@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-4.1.0.tgz#9a4ef161f2e4625ebf7dfbe6c0a2f52d18a59e78" - integrity sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q== +htmlparser2@5.0.1, htmlparser2@^5.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-5.0.1.tgz#7daa6fc3e35d6107ac95a4fc08781f091664f6e7" + integrity sha512-vKZZra6CSe9qsJzh0BjBGXo8dvzNsq/oGvsjfRdOrrryfeD9UOBEEQdeoqCRmKZchF5h2zOBMQ6YuQ0uRUmdbQ== dependencies: domelementtype "^2.0.1" - domhandler "^3.0.0" - domutils "^2.0.0" + domhandler "^3.3.0" + domutils "^2.4.2" entities "^2.0.0" htmlparser2@^3.9.1: @@ -6930,14 +6958,14 @@ htmlparser2@^3.9.1: inherits "^2.0.1" readable-stream "^3.1.1" -htmlparser2@^5.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-5.0.1.tgz#7daa6fc3e35d6107ac95a4fc08781f091664f6e7" - integrity sha512-vKZZra6CSe9qsJzh0BjBGXo8dvzNsq/oGvsjfRdOrrryfeD9UOBEEQdeoqCRmKZchF5h2zOBMQ6YuQ0uRUmdbQ== +htmlparser2@^4.0.0, htmlparser2@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-4.1.0.tgz#9a4ef161f2e4625ebf7dfbe6c0a2f52d18a59e78" + integrity sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q== dependencies: domelementtype "^2.0.1" - domhandler "^3.3.0" - domutils "^2.4.2" + domhandler "^3.0.0" + domutils "^2.0.0" entities "^2.0.0" http-cache-semantics@^3.8.1: @@ -7254,10 +7282,10 @@ intl-messageformat-parser@6.0.18: "@formatjs/ecma402-abstract" "1.5.0" tslib "^2.0.1" -intl-messageformat-parser@6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/intl-messageformat-parser/-/intl-messageformat-parser-6.1.0.tgz#134328151c41592d9e1a61f5c6779c06c8eb3f08" - integrity sha512-nPPh2kOrKqlh4D9bCAetxkrUiq5/6S1exPQyg52Ihusy0ECNGhZ0Qmq8pFRK9gWIuiQPVmLA7eSNp8diC2tX3w== +intl-messageformat-parser@6.1.2: + version "6.1.2" + resolved "https://registry.yarnpkg.com/intl-messageformat-parser/-/intl-messageformat-parser-6.1.2.tgz#28c65f3689f538e66c7cf628881548d6a82ff3c2" + integrity sha512-4GQDEPhl/ZMNDKwMsLqyw1LG2IAWjmLJXdmnRcHKeLQzpgtNYZI6lVw1279pqIkRk2MfKb9aDsVFzm565azK5A== dependencies: "@formatjs/ecma402-abstract" "1.5.0" tslib "^2.0.1" @@ -7269,13 +7297,13 @@ intl-messageformat-parser@^5.3.7: dependencies: "@formatjs/intl-numberformat" "^5.5.2" -intl-messageformat@9.4.0: - version "9.4.0" - resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-9.4.0.tgz#b9c9c00a6e88a8f1ffd9ee3e54340c9dfb765d13" - integrity sha512-zcF8OWG52dCwwePkykqqv7F038vCaixPR14Lr3YUFc9jRdGoCazl2dTE3BwBaeHr3pG/qYb6A/mwMKrj4LFt9Q== +intl-messageformat@9.4.2: + version "9.4.2" + resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-9.4.2.tgz#4ac2290d9d2dd6d76e60a2b355eeb8d8bc310c9c" + integrity sha512-34XevT4ADM/DCwtHIgXcL+LNtAnqPM6LSYUx7itlqm+9b2zMv8hUPlj4Ct94cl6qWymWAq5UiHbj85XAdwvq1A== dependencies: fast-memoize "^2.5.2" - intl-messageformat-parser "6.1.0" + intl-messageformat-parser "6.1.2" tslib "^2.0.1" intl@^1.2.5: @@ -8377,6 +8405,11 @@ lodash.escaperegexp@^4.1.2: resolved "https://registry.yarnpkg.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz#64762c48618082518ac3df4ccf5d5886dae20347" integrity sha1-ZHYsSGGAglGKw99Mz11YhtriA0c= +lodash.get@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= + lodash.ismatch@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" @@ -9221,18 +9254,19 @@ next-tick@~1.0.0: resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= -next@^10.0.3: - version "10.0.3" - resolved "https://registry.yarnpkg.com/next/-/next-10.0.3.tgz#2bf9a1625dcd0afc8c31be19fc5516af68d99e80" - integrity sha512-QYCfjZgowjaLUFvyV8959SmkUZU/edFgHeiXNtWDv7kffo/oTm891p0KZAkk5cMIHcsDX3g3UuQdw/zmui783g== +next@^10.0.4: + version "10.0.4" + resolved "https://registry.yarnpkg.com/next/-/next-10.0.4.tgz#0d256f58a57d6bab7db7e533900c15f322960b4a" + integrity sha512-WXEYr1FuR2cLuWGN8peYGM6ykmbtwaHvrI6RqR2qrTXUNsW+KU5pzIMK5WPcpqP+xOuMhlykOCJvwJH8qU9FZQ== dependencies: - "@ampproject/toolbox-optimizer" "2.7.0-alpha.1" + "@ampproject/toolbox-optimizer" "2.7.1-alpha.0" "@babel/runtime" "7.12.5" "@hapi/accept" "5.0.1" - "@next/env" "10.0.3" - "@next/polyfill-module" "10.0.3" - "@next/react-dev-overlay" "10.0.3" - "@next/react-refresh-utils" "10.0.3" + "@next/env" "10.0.4" + "@next/polyfill-module" "10.0.4" + "@next/react-dev-overlay" "10.0.4" + "@next/react-refresh-utils" "10.0.4" + "@opentelemetry/api" "0.14.0" ast-types "0.13.2" babel-plugin-transform-define "2.0.0" babel-plugin-transform-react-remove-prop-types "0.4.24" @@ -9251,6 +9285,7 @@ next@^10.0.3: native-url "0.3.4" node-fetch "2.6.1" node-html-parser "1.4.9" + p-limit "3.1.0" path-browserify "1.0.1" pnp-webpack-plugin "1.6.4" postcss "8.1.7" @@ -9311,11 +9346,6 @@ node-fetch-npm@^2.0.2: json-parse-better-errors "^1.0.0" safe-buffer "^5.1.1" -node-fetch@2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" - integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== - node-fetch@2.6.1, node-fetch@^2.6.0, node-fetch@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" @@ -10071,6 +10101,13 @@ p-is-promise@^3.0.0: resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-3.0.0.tgz#58e78c7dfe2e163cf2a04ff869e7c1dba64a5971" integrity sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ== +p-limit@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + p-limit@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" @@ -11402,21 +11439,21 @@ react-intersection-observer@^8.31.0: resolved "https://registry.yarnpkg.com/react-intersection-observer/-/react-intersection-observer-8.31.0.tgz#0ed21aaf93c4c0475b22b0ccaba6169076d01605" integrity sha512-XraIC/tkrD9JtrmVA7ypEN1QIpKc52mXBH1u/bz/aicRLo8QQEJQAMUTb8mz4B6dqpPwyzgjrr7Ljv/2ACDtqw== -react-intl@^5.10.9: - version "5.10.9" - resolved "https://registry.yarnpkg.com/react-intl/-/react-intl-5.10.9.tgz#cab8d9445059d3544cffc762c3e6af47ef9bc8ad" - integrity sha512-DfUF4YMlZqaNRfgfvf46AcXxz7pDi7pkxRbQoimUJWEkjep+6QYLlH7ogypysGD1Sl5kbWi7b69bbG7wPqt1vA== +react-intl@^5.10.11: + version "5.10.11" + resolved "https://registry.yarnpkg.com/react-intl/-/react-intl-5.10.11.tgz#7a2815ddfc889dc6053c04c650f58673d41784cc" + integrity sha512-nF25oSFSeMLzqH/RncdgdS6e/lDQIpkQo14zQVwSOD5zu1wDEX6Wbn//+FyqkC+tdqTbpCAKWNg5dSD5Fjli5Q== dependencies: "@formatjs/ecma402-abstract" "1.5.0" - "@formatjs/intl" "1.4.13" - "@formatjs/intl-displaynames" "4.0.2" - "@formatjs/intl-listformat" "5.0.2" - "@formatjs/intl-relativetimeformat" "8.0.1" + "@formatjs/intl" "1.4.15" + "@formatjs/intl-displaynames" "4.0.3" + "@formatjs/intl-listformat" "5.0.3" + "@formatjs/intl-relativetimeformat" "8.0.2" "@types/hoist-non-react-statics" "^3.3.1" fast-memoize "^2.5.2" hoist-non-react-statics "^3.3.2" - intl-messageformat "9.4.0" - intl-messageformat-parser "6.1.0" + intl-messageformat "9.4.2" + intl-messageformat-parser "6.1.2" shallow-equal "^1.2.1" tslib "^2.0.1" @@ -11482,10 +11519,10 @@ react-truncate-markup@^5.0.1: prop-types "^15.6.0" resize-observer-polyfill "1.5.x" -react-use-clipboard@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/react-use-clipboard/-/react-use-clipboard-1.0.2.tgz#e00254ffc70b989daa41638325fa6557c7b89dd2" - integrity sha512-dgKUfjWm6xAeag7OHdMadUgDMEG59LSgCSwVRqPJwZIFbGNxUtA0GqCZQS5M9MvAeSzHNEi/j0LfJQecDcaNlQ== +react-use-clipboard@1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/react-use-clipboard/-/react-use-clipboard-1.0.7.tgz#34cccdfb4f17f5e6522e38f2cee62d05f605597a" + integrity sha512-blIprqARyITp0uVw/2Rh87mcujqXdH6vZ5NrcuXEhI5EmjBGxcGnwt/79+vdN7rwM6OliGj481lOj6ZCcsiYEQ== dependencies: copy-to-clipboard "^3.3.1" @@ -12147,10 +12184,10 @@ semantic-release-docker@^2.2.0: "@semantic-release/error" "^2.1.0" execa "^0.10.0" -semantic-release@^17.3.0: - version "17.3.0" - resolved "https://registry.yarnpkg.com/semantic-release/-/semantic-release-17.3.0.tgz#121252b5bb6acc1048d7657111173b03d47502c5" - integrity sha512-enhDayMZRP4nWcWAMBFHHB7THRaIcRdUAZv3lxd65pXs2ttzay7IeCvRRrGayRWExtnY0ulwRz5Ycp88Dv/UeQ== +semantic-release@^17.3.1: + version "17.3.1" + resolved "https://registry.yarnpkg.com/semantic-release/-/semantic-release-17.3.1.tgz#8904ef1ca8e704394de0e204b284f6c252284da4" + integrity sha512-NSdxvnBTklrRBYRexVUx44Hri9sTu9b8x+1HfWDGIWemDTFQfWOTbT1N3oy5l8WcZHodhRvtyI7gm50SfAa3Fg== dependencies: "@semantic-release/commit-analyzer" "^8.0.0" "@semantic-release/error" "^2.2.0" @@ -12163,7 +12200,7 @@ semantic-release@^17.3.0: env-ci "^5.0.0" execa "^4.0.0" figures "^3.0.0" - find-versions "^3.0.0" + find-versions "^4.0.0" get-stream "^5.0.0" git-log-parser "^1.2.0" hook-std "^2.0.0" @@ -12205,6 +12242,11 @@ semver-regex@^2.0.0: resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-2.0.0.tgz#a93c2c5844539a770233379107b38c7b4ac9d338" integrity sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw== +semver-regex@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-3.1.2.tgz#34b4c0d361eef262e07199dbef316d0f2ab11807" + integrity sha512-bXWyL6EAKOJa81XG1OZ/Yyuq+oT0b2YLlxx7c+mrdYPaPbnj6WgVULXhinMIeZGufuUBu/eVRqXEhiv4imfwxA== + "semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", "semver@^2.3.0 || 3.x || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" @@ -12549,7 +12591,7 @@ source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.5.17, source-map-support@~0.5.12: +source-map-support@^0.5.17, source-map-support@~0.5.12, source-map-support@~0.5.19: version "0.5.19" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== @@ -12567,7 +12609,7 @@ source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@0.7.3: +source-map@0.7.3, source-map@~0.7.2: version "0.7.3" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== @@ -13069,10 +13111,10 @@ swagger-ui-dist@^3.18.1: resolved "https://registry.yarnpkg.com/swagger-ui-dist/-/swagger-ui-dist-3.32.5.tgz#52fc8b714db113c0b5a0cf9ad12ad039fe5b87df" integrity sha512-3SKHv8UVqsKKknivtACHbFDGcn297jkoZN2h6zAZ7b2yoaJNMaRadQpC3qFw3GobZTGzqHCgHph4ZH9NkaCjrQ== -swagger-ui-express@^4.1.5: - version "4.1.5" - resolved "https://registry.yarnpkg.com/swagger-ui-express/-/swagger-ui-express-4.1.5.tgz#114f3ce017ca6d6069d960ea8ffef677784b6f2f" - integrity sha512-hs9OqBu2jwmhYyFUhdTiwurvbZC+bq2XnWmmbYymVdwhgJCcGkLdnqymX24ZYUve2nkYSvKPEDCo20ZF+vyw9A== +swagger-ui-express@^4.1.6: + version "4.1.6" + resolved "https://registry.yarnpkg.com/swagger-ui-express/-/swagger-ui-express-4.1.6.tgz#682294af3d5c70f74a1fa4d6a9b503a9ee55ea82" + integrity sha512-Xs2BGGudvDBtL7RXcYtNvHsFtP1DBFPMJFRxHe5ez/VG/rzVOEjazJOOSc/kSCyxreCTKfJrII6MJlL9a6t8vw== dependencies: swagger-ui-dist "^3.18.1" @@ -13212,14 +13254,14 @@ terser-webpack-plugin@^1.4.3: webpack-sources "^1.4.0" worker-farm "^1.7.0" -terser@5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.1.0.tgz#1f4ab81c8619654fdded51f3157b001e1747281d" - integrity sha512-pwC1Jbzahz1ZPU87NQ8B3g5pKbhyJSiHih4gLH6WZiPU8mmS1IlGbB0A2Nuvkj/LCNsgIKctg6GkYwWCeTvXZQ== +terser@5.5.1: + version "5.5.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.5.1.tgz#540caa25139d6f496fdea056e414284886fb2289" + integrity sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ== dependencies: commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" + source-map "~0.7.2" + source-map-support "~0.5.19" terser@^4.1.2: version "4.8.0" @@ -14502,6 +14544,11 @@ yn@3.1.1: resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + yup@^0.32.8: version "0.32.8" resolved "https://registry.yarnpkg.com/yup/-/yup-0.32.8.tgz#16e4a949a86a69505abf99fd0941305ac9adfc39"