From a640a91390f1411637ad379a8253002fdf60480f Mon Sep 17 00:00:00 2001 From: TheCatLady <52870424+TheCatLady@users.noreply.github.com> Date: Thu, 6 May 2021 04:40:22 -0400 Subject: [PATCH 01/73] feat(plex): add support for custom Plex Web App URLs (#1581) * feat(plex): add support for custom Plex Web App URLs * refactor: clean up Yup validation in *arr modals & email settings * fix(lang): change Web App URL tip * fix: remove web app URL validation and add 'Advanced' badge --- overseerr-api.yml | 3 + server/entity/Media.ts | 16 +++- server/lib/settings.ts | 1 + .../Notifications/NotificationsEmail.tsx | 16 ++-- src/components/Settings/RadarrModal/index.tsx | 25 ++---- src/components/Settings/SettingsPlex.tsx | 77 ++++++++++++------- src/components/Settings/SonarrModal/index.tsx | 25 ++---- src/i18n/locale/en.json | 11 +-- 8 files changed, 90 insertions(+), 84 deletions(-) diff --git a/overseerr-api.yml b/overseerr-api.yml index 637af162..1ded2696 100644 --- a/overseerr-api.yml +++ b/overseerr-api.yml @@ -171,6 +171,9 @@ components: readOnly: true items: $ref: '#/components/schemas/PlexLibrary' + webAppUrl: + type: string + example: 'https://app.plex.tv/desktop' required: - name - machineId diff --git a/server/entity/Media.ts b/server/entity/Media.ts index 3d821651..9666ac28 100644 --- a/server/entity/Media.ts +++ b/server/entity/Media.ts @@ -147,12 +147,22 @@ class Media { @AfterLoad() public setPlexUrls(): void { - const machineId = getSettings().plex.machineId; + const { machineId, webAppUrl } = getSettings().plex; + if (this.ratingKey) { - this.plexUrl = `https://app.plex.tv/desktop#!/server/${machineId}/details?key=%2Flibrary%2Fmetadata%2F${this.ratingKey}`; + this.plexUrl = `${ + webAppUrl ? webAppUrl : 'https://app.plex.tv/desktop' + }#!/server/${machineId}/details?key=%2Flibrary%2Fmetadata%2F${ + this.ratingKey + }`; } + if (this.ratingKey4k) { - this.plexUrl4k = `https://app.plex.tv/desktop#!/server/${machineId}/details?key=%2Flibrary%2Fmetadata%2F${this.ratingKey4k}`; + this.plexUrl4k = `${ + webAppUrl ? webAppUrl : 'https://app.plex.tv/desktop' + }#!/server/${machineId}/details?key=%2Flibrary%2Fmetadata%2F${ + this.ratingKey4k + }`; } } diff --git a/server/lib/settings.ts b/server/lib/settings.ts index a9e459b4..edc4026f 100644 --- a/server/lib/settings.ts +++ b/server/lib/settings.ts @@ -30,6 +30,7 @@ export interface PlexSettings { port: number; useSsl?: boolean; libraries: Library[]; + webAppUrl?: string; } export interface DVRSettings { diff --git a/src/components/Settings/Notifications/NotificationsEmail.tsx b/src/components/Settings/Notifications/NotificationsEmail.tsx index a7684bf0..d7e45491 100644 --- a/src/components/Settings/Notifications/NotificationsEmail.tsx +++ b/src/components/Settings/Notifications/NotificationsEmail.tsx @@ -92,15 +92,13 @@ const NotificationsEmail: React.FC = () => { /^(([a-z]|\d|_|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*)?([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])$/i, intl.formatMessage(messages.validationSmtpHostRequired) ), - smtpPort: Yup.number() - .typeError(intl.formatMessage(messages.validationSmtpPortRequired)) - .when('enabled', { - is: true, - then: Yup.number().required( - intl.formatMessage(messages.validationSmtpPortRequired) - ), - otherwise: Yup.number().nullable(), - }), + smtpPort: Yup.number().when('enabled', { + is: true, + then: Yup.number() + .nullable() + .required(intl.formatMessage(messages.validationSmtpPortRequired)), + otherwise: Yup.number().nullable(), + }), pgpPrivateKey: Yup.string() .when('pgpPassword', { is: (value: unknown) => !!value, diff --git a/src/components/Settings/RadarrModal/index.tsx b/src/components/Settings/RadarrModal/index.tsx index 62c04bb2..e25b8c53 100644 --- a/src/components/Settings/RadarrModal/index.tsx +++ b/src/components/Settings/RadarrModal/index.tsx @@ -41,7 +41,7 @@ const messages = defineMessages({ servername: 'Server Name', hostname: 'Hostname or IP Address', port: 'Port', - ssl: 'Enable SSL', + ssl: 'Use SSL', apiKey: 'API Key', baseUrl: 'URL Base', syncEnabled: 'Enable Scan', @@ -116,7 +116,7 @@ const RadarrModal: React.FC = ({ intl.formatMessage(messages.validationHostnameRequired) ), port: Yup.number() - .typeError(intl.formatMessage(messages.validationPortRequired)) + .nullable() .required(intl.formatMessage(messages.validationPortRequired)), apiKey: Yup.string().required( intl.formatMessage(messages.validationApiKeyRequired) @@ -135,33 +135,18 @@ const RadarrModal: React.FC = ({ .test( 'no-trailing-slash', intl.formatMessage(messages.validationApplicationUrlTrailingSlash), - (value) => { - if (value?.substr(value.length - 1) === '/') { - return false; - } - return true; - } + (value) => !value || !value.endsWith('/') ), baseUrl: Yup.string() .test( 'leading-slash', intl.formatMessage(messages.validationBaseUrlLeadingSlash), - (value) => { - if (value && value?.substr(0, 1) !== '/') { - return false; - } - return true; - } + (value) => !value || value.startsWith('/') ) .test( 'no-trailing-slash', intl.formatMessage(messages.validationBaseUrlTrailingSlash), - (value) => { - if (value?.substr(value.length - 1) === '/') { - return false; - } - return true; - } + (value) => !value || !value.endsWith('/') ), }); diff --git a/src/components/Settings/SettingsPlex.tsx b/src/components/Settings/SettingsPlex.tsx index b584247e..0130c23f 100644 --- a/src/components/Settings/SettingsPlex.tsx +++ b/src/components/Settings/SettingsPlex.tsx @@ -22,8 +22,6 @@ const messages = defineMessages({ plexsettings: 'Plex Settings', plexsettingsDescription: 'Configure the settings for your Plex server. Overseerr scans your Plex libraries to determine content availability.', - servername: 'Server Name', - servernameTip: 'Automatically retrieved from Plex after saving', serverpreset: 'Server', serverLocal: 'local', serverRemote: 'remote', @@ -41,7 +39,7 @@ const messages = defineMessages({ 'To set up Plex, you can either enter the details manually or select a server retrieved from plex.tv. Press the button to the right of the dropdown to fetch the list of available servers.', hostname: 'Hostname or IP Address', port: 'Port', - enablessl: 'Enable SSL', + enablessl: 'Use SSL', plexlibraries: 'Plex Libraries', plexlibrariesDescription: 'The libraries Overseerr scans for titles. Set up and save your Plex connection settings, then click the button below if no libraries are listed.', @@ -57,6 +55,10 @@ const messages = defineMessages({ cancelscan: 'Cancel Scan', validationHostnameRequired: 'You must provide a valid hostname or IP address', validationPortRequired: 'You must provide a valid port number', + webAppUrl: 'Web App URL', + webAppUrlTip: + 'Optionally direct users to the web app on your server instead of the "hosted" web app', + validationWebAppUrl: 'You must provide a valid Plex Web App URL', }); interface Library { @@ -108,14 +110,18 @@ const SettingsPlex: React.FC = ({ onComplete }) => { const { addToast, removeToast } = useToasts(); const PlexSettingsSchema = Yup.object().shape({ hostname: Yup.string() + .nullable() .required(intl.formatMessage(messages.validationHostnameRequired)) .matches( /^(([a-z]|\d|_|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*)?([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])$/i, intl.formatMessage(messages.validationHostnameRequired) ), port: Yup.number() - .typeError(intl.formatMessage(messages.validationPortRequired)) + .nullable() .required(intl.formatMessage(messages.validationPortRequired)), + webAppUrl: Yup.string() + .nullable() + .url(intl.formatMessage(messages.validationWebAppUrl)), }); const activeLibraries = @@ -282,6 +288,7 @@ const SettingsPlex: React.FC = ({ onComplete }) => { port: data?.port ?? 32400, useSsl: data?.useSsl, selectedPreset: undefined, + webAppUrl: data?.webAppUrl, }} validationSchema={PlexSettingsSchema} onSubmit={async (values) => { @@ -301,6 +308,7 @@ const SettingsPlex: React.FC = ({ onComplete }) => { ip: values.hostname, port: Number(values.port), useSsl: values.useSsl, + webAppUrl: values.webAppUrl, } as PlexSettings); revalidate(); @@ -336,34 +344,12 @@ const SettingsPlex: React.FC = ({ onComplete }) => { }) => { return (
-
- -
-
- -
-
-
-
+
-
+ )} + {(isValidating || + !serverData || + serverData.profiles.length > 1) && ( +
@@ -316,7 +320,7 @@ const AdvancedRequester: React.FC = ({ value={selectedProfile} onChange={(e) => setSelectedProfile(Number(e.target.value))} onBlur={(e) => setSelectedProfile(Number(e.target.value))} - className="block w-full py-2 pl-3 pr-10 mt-1 text-base leading-6 text-white transition duration-150 ease-in-out bg-gray-800 border-gray-700 rounded-md form-select focus:outline-none focus:ring-blue focus:border-blue-300 sm:text-sm sm:leading-5" + className="bg-gray-800 border-gray-700" disabled={isValidating || !serverData} > {(isValidating || !serverData) && ( @@ -346,11 +350,11 @@ const AdvancedRequester: React.FC = ({ ))}
-
+ )} + {(isValidating || + !serverData || + serverData.rootFolders.length > 1) && ( +
@@ -360,7 +364,7 @@ const AdvancedRequester: React.FC = ({ value={selectedFolder} onChange={(e) => setSelectedFolder(e.target.value)} onBlur={(e) => setSelectedFolder(e.target.value)} - className="block w-full py-2 pl-3 pr-10 mt-1 text-base leading-6 text-white transition duration-150 ease-in-out bg-gray-800 border-gray-700 rounded-md form-select focus:outline-none focus:ring-blue focus:border-blue-300 sm:text-sm sm:leading-5" + className="bg-gray-800 border-gray-700" disabled={isValidating || !serverData} > {(isValidating || !serverData) && ( @@ -399,8 +403,12 @@ const AdvancedRequester: React.FC = ({ ))}
- {type === 'tv' && ( -
+ )} + {type === 'tv' && + (isValidating || + !serverData || + (serverData.languageProfiles ?? []).length > 1) && ( +
@@ -414,7 +422,7 @@ const AdvancedRequester: React.FC = ({ onBlur={(e) => setSelectedLanguage(parseInt(e.target.value)) } - className="block w-full py-2 pl-3 pr-10 mt-1 text-base leading-6 text-white transition duration-150 ease-in-out bg-gray-800 border-gray-700 rounded-md form-select focus:outline-none focus:ring-blue focus:border-blue-300 sm:text-sm sm:leading-5" + className="bg-gray-800 border-gray-700" disabled={isValidating || !serverData} > {(isValidating || !serverData) && ( @@ -447,147 +455,145 @@ const AdvancedRequester: React.FC = ({
)} -
- - )} - {!!data && selectedServer !== null && ( -
- - ({ + label: tag.label, + value: tag.id, + }))} + isMulti + isDisabled={isValidating || !serverData} + placeholder={ + isValidating || !serverData + ? intl.formatMessage(globalMessages.loading) + : intl.formatMessage(messages.selecttags) + } + className="react-select-container react-select-container-dark" + classNamePrefix="react-select" + value={selectedTags.map((tagId) => { + const foundTag = serverData?.tags.find( + (tag) => tag.id === tagId + ); + return { + value: foundTag?.id, + label: foundTag?.label, + }; + })} + onChange={( + value: OptionTypeBase | OptionsType | null + ) => { + if (!Array.isArray(value)) { + return; + } + setSelectedTags(value?.map((option) => option.value)); + }} + noOptionsMessage={() => + intl.formatMessage(messages.notagoptions) + } + /> +
+ )} {hasPermission([Permission.MANAGE_REQUESTS, Permission.MANAGE_USERS]) && selectedUser && ( -
- setSelectedUser(value)} - className="space-y-1" - > - {({ open }) => ( - <> - - {intl.formatMessage(messages.requestas)} - -
- - - - - - {selectedUser.displayName} - - - ({selectedUser.email}) - + setSelectedUser(value)} + className="space-y-1" + > + {({ open }) => ( + <> + + {intl.formatMessage(messages.requestas)} + +
+ + + + + + {selectedUser.displayName} - - + + ({selectedUser.email}) - - + + + + + + - + - - {userData?.results.map((user) => ( - - {({ selected, active }) => ( -
( + + {({ selected, active }) => ( +
+ + + + {user.displayName} + + + ({user.email}) + + + {selected && ( - - - {user.displayName} - - - ({user.email}) - + - {selected && ( - - - - )} -
- )} -
- ))} - - -
- - )} - -
+ )} +
+ )} + + ))} + + +
+ + )} + )} {isAnime && (
diff --git a/src/i18n/locale/en.json b/src/i18n/locale/en.json index 965b96db..e6961f51 100644 --- a/src/i18n/locale/en.json +++ b/src/i18n/locale/en.json @@ -183,7 +183,7 @@ "components.RequestList.showallrequests": "Show All Requests", "components.RequestList.sortAdded": "Request Date", "components.RequestList.sortModified": "Last Modified", - "components.RequestModal.AdvancedRequester.advancedoptions": "Advanced Options", + "components.RequestModal.AdvancedRequester.advancedoptions": "Advanced", "components.RequestModal.AdvancedRequester.animenote": "* This series is an anime.", "components.RequestModal.AdvancedRequester.default": "{name} (Default)", "components.RequestModal.AdvancedRequester.destinationserver": "Destination Server", From 0c4fb6446be425905a120df5be9a28b052e884c0 Mon Sep 17 00:00:00 2001 From: TheCatLady <52870424+TheCatLady@users.noreply.github.com> Date: Sat, 8 May 2021 00:01:02 -0400 Subject: [PATCH 06/73] feat(webpush): add warning to web push settings re: HTTPS requirement (#1599) --- .../NotificationsWebPush/index.tsx | 16 +++++++++++++- .../Settings/SettingsNotifications.tsx | 22 +++++++++---------- src/i18n/locale/en.json | 1 + 3 files changed, 27 insertions(+), 12 deletions(-) diff --git a/src/components/Settings/Notifications/NotificationsWebPush/index.tsx b/src/components/Settings/Notifications/NotificationsWebPush/index.tsx index aa4f98bf..f3e0c6d7 100644 --- a/src/components/Settings/Notifications/NotificationsWebPush/index.tsx +++ b/src/components/Settings/Notifications/NotificationsWebPush/index.tsx @@ -1,10 +1,11 @@ import axios from 'axios'; import { Field, Form, Formik } from 'formik'; -import React, { useState } from 'react'; +import React, { useEffect, useState } from 'react'; import { defineMessages, useIntl } from 'react-intl'; import { useToasts } from 'react-toast-notifications'; import useSWR, { mutate } from 'swr'; import globalMessages from '../../../../i18n/globalMessages'; +import Alert from '../../../Common/Alert'; import Button from '../../../Common/Button'; import LoadingSpinner from '../../../Common/LoadingSpinner'; import NotificationTypeSelector from '../../../NotificationTypeSelector'; @@ -16,22 +17,35 @@ const messages = defineMessages({ toastWebPushTestSending: 'Sending web push test notification…', toastWebPushTestSuccess: 'Web push test notification sent!', toastWebPushTestFailed: 'Web push test notification failed to send.', + httpsRequirement: + 'In order to receive web push notifications, Overseerr must be served over HTTPS.', }); const NotificationsWebPush: React.FC = () => { const intl = useIntl(); const { addToast, removeToast } = useToasts(); const [isTesting, setIsTesting] = useState(false); + const [isHttps, setIsHttps] = useState(false); const { data, error, revalidate } = useSWR( '/api/v1/settings/notifications/webpush' ); + useEffect(() => { + setIsHttps(window.location.protocol.startsWith('https')); + }, []); + if (!data && !error) { return ; } return ( <> + {!isHttps && ( + + )} { route: '/settings/notifications/email', regex: /^\/settings\/notifications\/email/, }, + { + text: intl.formatMessage(messages.webpush), + content: ( + + + {intl.formatMessage(messages.webpush)} + + ), + route: '/settings/notifications/webpush', + regex: /^\/settings\/notifications\/webpush/, + }, { text: 'Discord', content: ( @@ -103,17 +114,6 @@ const SettingsNotifications: React.FC = ({ children }) => { route: '/settings/notifications/telegram', regex: /^\/settings\/notifications\/telegram/, }, - { - text: intl.formatMessage(messages.webpush), - content: ( - - - {intl.formatMessage(messages.webpush)} - - ), - route: '/settings/notifications/webpush', - regex: /^\/settings\/notifications\/webpush/, - }, { text: intl.formatMessage(messages.webhook), content: ( diff --git a/src/i18n/locale/en.json b/src/i18n/locale/en.json index e6961f51..855f3c9c 100644 --- a/src/i18n/locale/en.json +++ b/src/i18n/locale/en.json @@ -290,6 +290,7 @@ "components.Settings.Notifications.NotificationsSlack.webhookUrl": "Webhook URL", "components.Settings.Notifications.NotificationsSlack.webhookUrlTip": "Create an Incoming Webhook integration", "components.Settings.Notifications.NotificationsWebPush.agentenabled": "Enable Agent", + "components.Settings.Notifications.NotificationsWebPush.httpsRequirement": "In order to receive web push notifications, Overseerr must be served over HTTPS.", "components.Settings.Notifications.NotificationsWebPush.toastWebPushTestFailed": "Web push test notification failed to send.", "components.Settings.Notifications.NotificationsWebPush.toastWebPushTestSending": "Sending web push test notification…", "components.Settings.Notifications.NotificationsWebPush.toastWebPushTestSuccess": "Web push test notification sent!", From 694d0ffcf6b3e3fa00175400fa4217a7d6eb787f Mon Sep 17 00:00:00 2001 From: TheCatLady <52870424+TheCatLady@users.noreply.github.com> Date: Sat, 8 May 2021 00:10:47 -0400 Subject: [PATCH 07/73] fix(ui): hide Plex alert after setup and add local login warning to local user modal (#1600) --- src/components/Settings/SettingsPlex.tsx | 40 +++++++++++++----------- src/components/UserList/index.tsx | 18 +++++++++++ src/i18n/locale/en.json | 1 + 3 files changed, 40 insertions(+), 19 deletions(-) diff --git a/src/components/Settings/SettingsPlex.tsx b/src/components/Settings/SettingsPlex.tsx index 801d882c..6ac99805 100644 --- a/src/components/Settings/SettingsPlex.tsx +++ b/src/components/Settings/SettingsPlex.tsx @@ -262,25 +262,27 @@ const SettingsPlex: React.FC = ({ onComplete }) => {

{intl.formatMessage(messages.plexsettingsDescription)}

-
- - {msg} - - ); - }, - })} - type="info" - /> -
+ {!!onComplete && ( +
+ + {msg} + + ); + }, + })} + type="info" + /> +
+ )}
Enable Local Sign-In setting is currently disabled.', }); type Sort = 'created' | 'updated' | 'requests' | 'displayname'; @@ -84,6 +87,7 @@ type Sort = 'created' | 'updated' | 'requests' | 'displayname'; const UserList: React.FC = () => { const intl = useIntl(); const router = useRouter(); + const settings = useSettings(); const { addToast } = useToasts(); const { user: currentUser, hasPermission: currentHasPermission } = useUser(); const [currentSort, setCurrentSort] = useState('created'); @@ -347,6 +351,20 @@ const UserList: React.FC = () => { okButtonType="primary" onCancel={() => setCreateModal({ isOpen: false })} > + {!settings.currentSettings.localLogin && ( + + {msg} + + ); + }, + })} + type="warning" + /> + )} {!notificationSettings?.emailEnabled && ( Enable Local Sign-In setting is currently disabled.", "components.UserList.localuser": "Local User", "components.UserList.nouserstoimport": "No new users to import from Plex.", "components.UserList.owner": "Owner", From 7a19f82b9c9a284fd5546825e807440e4938e709 Mon Sep 17 00:00:00 2001 From: sct Date: Sat, 8 May 2021 17:13:56 +0900 Subject: [PATCH 08/73] build(deps): bump dependencies --- package.json | 24 ++-- yarn.lock | 313 ++++++++++++++++++++++++++++++--------------------- 2 files changed, 194 insertions(+), 143 deletions(-) diff --git a/package.json b/package.json index a328e2c7..5e87a945 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "@heroicons/react": "^1.0.1", "@supercharge/request-ip": "^1.1.2", "@svgr/webpack": "^5.5.0", - "@tanem/react-nprogress": "^3.0.64", + "@tanem/react-nprogress": "^3.0.65", "ace-builds": "^1.4.12", "axios": "^0.21.1", "bcrypt": "^5.0.1", @@ -34,7 +34,7 @@ "csurf": "^1.11.0", "email-templates": "^8.0.4", "express": "^4.17.1", - "express-openapi-validator": "^4.12.9", + "express-openapi-validator": "^4.12.10", "express-rate-limit": "^5.2.6", "express-session": "^1.17.1", "formik": "^2.2.6", @@ -54,7 +54,7 @@ "react-dom": "17.0.2", "react-intersection-observer": "^8.31.1", "react-intl": "5.17.4", - "react-markdown": "^6.0.1", + "react-markdown": "^6.0.2", "react-select": "^4.3.0", "react-spring": "^8.0.27", "react-toast-notifications": "^2.4.4", @@ -70,7 +70,7 @@ "uuid": "^8.3.2", "web-push": "^3.4.4", "winston": "^3.3.3", - "winston-daily-rotate-file": "^4.5.3", + "winston-daily-rotate-file": "^4.5.5", "xml2js": "^0.4.23", "yamljs": "^0.3.0", "yup": "^0.32.9" @@ -96,10 +96,10 @@ "@types/express-rate-limit": "^5.1.1", "@types/express-session": "^1.17.3", "@types/lodash": "^4.14.168", - "@types/node": "^15.0.1", + "@types/node": "^15.0.2", "@types/node-schedule": "^1.3.1", "@types/nodemailer": "^6.4.1", - "@types/react": "^17.0.4", + "@types/react": "^17.0.5", "@types/react-dom": "^17.0.3", "@types/react-select": "^4.0.15", "@types/react-toast-notifications": "^2.4.0", @@ -111,15 +111,15 @@ "@types/xml2js": "^0.4.8", "@types/yamljs": "^0.2.31", "@types/yup": "^0.29.11", - "@typescript-eslint/eslint-plugin": "^4.22.0", - "@typescript-eslint/parser": "^4.22.0", + "@typescript-eslint/eslint-plugin": "^4.22.1", + "@typescript-eslint/parser": "^4.22.1", "autoprefixer": "^10.2.5", "babel-plugin-react-intl": "^8.2.25", "babel-plugin-react-intl-auto": "^3.3.0", - "commitizen": "^4.2.3", + "commitizen": "^4.2.4", "copyfiles": "^2.4.1", "cz-conventional-changelog": "^3.3.0", - "eslint": "^7.25.0", + "eslint": "^7.26.0", "eslint-config-prettier": "^8.3.0", "eslint-plugin-formatjs": "^2.14.10", "eslint-plugin-jsx-a11y": "^6.4.1", @@ -128,9 +128,9 @@ "eslint-plugin-react-hooks": "^4.2.0", "extract-react-intl-messages": "^4.1.1", "husky": "4.3.8", - "lint-staged": "^10.5.4", + "lint-staged": "^11.0.0", "nodemon": "^2.0.7", - "postcss": "^8.2.13", + "postcss": "^8.2.14", "prettier": "^2.2.1", "semantic-release": "^17.4.2", "semantic-release-docker-buildx": "^1.0.1", diff --git a/yarn.lock b/yarn.lock index da507bb2..f7de3e97 100644 --- a/yarn.lock +++ b/yarn.lock @@ -982,13 +982,20 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/runtime@^7.1.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.13.10": +"@babel/runtime@^7.1.2", "@babel/runtime@^7.12.0": version "7.13.10" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.13.10.tgz#47d42a57b6095f4468da440388fdbad8bebf0d7d" integrity sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw== dependencies: regenerator-runtime "^0.13.4" +"@babel/runtime@^7.14.0": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.0.tgz#46794bc20b612c5f75e62dd071e24dfd95f1cbe6" + integrity sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA== + dependencies: + regenerator-runtime "^0.13.4" + "@babel/template@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" @@ -1377,10 +1384,10 @@ resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46" integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA== -"@eslint/eslintrc@^0.4.0": - version "0.4.0" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.0.tgz#99cc0a0584d72f1df38b900fb062ba995f395547" - integrity sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog== +"@eslint/eslintrc@^0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.1.tgz#442763b88cecbe3ee0ec7ca6d6dd6168550cbf14" + integrity sha512-5v7TDE9plVhvxQeWLXDTvFvJBdH6pEsdnl2g/dAptmuFEPedQ4Erq5rsDsX+mvAM610IhNaO2W5V1dOOnDKxkQ== dependencies: ajv "^6.12.4" debug "^4.1.1" @@ -2032,15 +2039,15 @@ lodash.merge "^4.6.2" lodash.uniq "^4.5.0" -"@tanem/react-nprogress@^3.0.64": - version "3.0.64" - resolved "https://registry.yarnpkg.com/@tanem/react-nprogress/-/react-nprogress-3.0.64.tgz#d6a5928de99db22cb5c0f53563736256ce9fc48d" - integrity sha512-rhCP7zTRi49c/AhP5NttLy7BQfNuMd2y5ybHN6X3EFP3OIa6Ig9+MbiwB3VWlwj2yX2Aa6DTh6n4mNG/pDQM6g== +"@tanem/react-nprogress@^3.0.65": + version "3.0.65" + resolved "https://registry.yarnpkg.com/@tanem/react-nprogress/-/react-nprogress-3.0.65.tgz#552e7fcd80091c7baddae4837cd9595120066014" + integrity sha512-LnN9UkwytouOv8MLRdf2RAf2lsZfoAus9qzkd0iL5EOcvX53cM5057A7QeCgamx9A48DZbffZHZfeo+5CQ+nMw== dependencies: - "@babel/runtime" "^7.13.10" + "@babel/runtime" "^7.14.0" hoist-non-react-statics "^3.3.2" prop-types "^15.7.2" - react-use "^17.2.3" + react-use "^17.2.4" "@tootallnate/once@1": version "1.1.2" @@ -2309,10 +2316,10 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.34.tgz#07935194fc049069a1c56c0c274265abeddf88da" integrity sha512-dBPaxocOK6UVyvhbnpFIj2W+S+1cBTkHQbFQfeeJhoKFbzYcVUGHvddeWPSucKATb3F0+pgDq0i6ghEaZjsugA== -"@types/node@^15.0.1": - version "15.0.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-15.0.1.tgz#ef34dea0881028d11398be5bf4e856743e3dc35a" - integrity sha512-TMkXt0Ck1y0KKsGr9gJtWGjttxlZnnvDtphxUOSd0bfaR6Q1jle+sPvrzNR1urqYTWMinoKvjKfXUGsumaO1PA== +"@types/node@^15.0.2": + version "15.0.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-15.0.2.tgz#51e9c0920d1b45936ea04341aa3e2e58d339fb67" + integrity sha512-p68+a+KoxpoB47015IeYZYRrdqMUcpbK8re/zpFB8Ld46LHC1lPEbp3EXgkEhAYEcPvjJF6ZO+869SQ0aH1dcA== "@types/nodemailer@*", "@types/nodemailer@^6.4.1": version "6.4.1" @@ -2390,10 +2397,10 @@ "@types/prop-types" "*" csstype "^3.0.2" -"@types/react@^17.0.4": - version "17.0.4" - resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.4.tgz#a67c6f7a460d2660e950d9ccc1c2f18525c28220" - integrity sha512-onz2BqScSFMoTRdJUZUDD/7xrusM8hBA2Fktk2qgaTYPCgPvWnDEgkrOs8hhPUf2jfcIXkJ5yK6VfYormJS3Jw== +"@types/react@^17.0.5": + version "17.0.5" + resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.5.tgz#3d887570c4489011f75a3fc8f965bf87d09a1bea" + integrity sha512-bj4biDB9ZJmGAYTWSKJly6bMr4BLUiBrx9ujiJEoP9XIDY9CTaPGxE5QWN/1WjpPLzYF7/jRNnV2nNxNe970sw== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" @@ -2476,13 +2483,13 @@ resolved "https://registry.yarnpkg.com/@types/zen-observable/-/zen-observable-0.8.2.tgz#808c9fa7e4517274ed555fa158f2de4b4f468e71" integrity sha512-HrCIVMLjE1MOozVoD86622S7aunluLb2PJdPfb3nYiEtohm8mIB/vyv0Fd37AdeMFrTUQXEunw78YloMA3Qilg== -"@typescript-eslint/eslint-plugin@^4.22.0": - version "4.22.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.22.0.tgz#3d5f29bb59e61a9dba1513d491b059e536e16dbc" - integrity sha512-U8SP9VOs275iDXaL08Ln1Fa/wLXfj5aTr/1c0t0j6CdbOnxh+TruXu1p4I0NAvdPBQgoPjHsgKn28mOi0FzfoA== +"@typescript-eslint/eslint-plugin@^4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.22.1.tgz#6bcdbaa4548553ab861b4e5f34936ead1349a543" + integrity sha512-kVTAghWDDhsvQ602tHBc6WmQkdaYbkcTwZu+7l24jtJiYvm9l+/y/b2BZANEezxPDiX5MK2ZecE+9BFi/YJryw== dependencies: - "@typescript-eslint/experimental-utils" "4.22.0" - "@typescript-eslint/scope-manager" "4.22.0" + "@typescript-eslint/experimental-utils" "4.22.1" + "@typescript-eslint/scope-manager" "4.22.1" debug "^4.1.1" functional-red-black-tree "^1.0.1" lodash "^4.17.15" @@ -2490,53 +2497,53 @@ semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/experimental-utils@4.22.0": - version "4.22.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.22.0.tgz#68765167cca531178e7b650a53456e6e0bef3b1f" - integrity sha512-xJXHHl6TuAxB5AWiVrGhvbGL8/hbiCQ8FiWwObO3r0fnvBdrbWEDy1hlvGQOAWc6qsCWuWMKdVWlLAEMpxnddg== +"@typescript-eslint/experimental-utils@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.22.1.tgz#3938a5c89b27dc9a39b5de63a62ab1623ab27497" + integrity sha512-svYlHecSMCQGDO2qN1v477ax/IDQwWhc7PRBiwAdAMJE7GXk5stF4Z9R/8wbRkuX/5e9dHqbIWxjeOjckK3wLQ== dependencies: "@types/json-schema" "^7.0.3" - "@typescript-eslint/scope-manager" "4.22.0" - "@typescript-eslint/types" "4.22.0" - "@typescript-eslint/typescript-estree" "4.22.0" + "@typescript-eslint/scope-manager" "4.22.1" + "@typescript-eslint/types" "4.22.1" + "@typescript-eslint/typescript-estree" "4.22.1" eslint-scope "^5.0.0" eslint-utils "^2.0.0" -"@typescript-eslint/parser@^4.22.0": - version "4.22.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.22.0.tgz#e1637327fcf796c641fe55f73530e90b16ac8fe8" - integrity sha512-z/bGdBJJZJN76nvAY9DkJANYgK3nlRstRRi74WHm3jjgf2I8AglrSY+6l7ogxOmn55YJ6oKZCLLy+6PW70z15Q== +"@typescript-eslint/parser@^4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.22.1.tgz#a95bda0fd01d994a15fc3e99dc984294f25c19cc" + integrity sha512-l+sUJFInWhuMxA6rtirzjooh8cM/AATAe3amvIkqKFeMzkn85V+eLzb1RyuXkHak4dLfYzOmF6DXPyflJvjQnw== dependencies: - "@typescript-eslint/scope-manager" "4.22.0" - "@typescript-eslint/types" "4.22.0" - "@typescript-eslint/typescript-estree" "4.22.0" + "@typescript-eslint/scope-manager" "4.22.1" + "@typescript-eslint/types" "4.22.1" + "@typescript-eslint/typescript-estree" "4.22.1" debug "^4.1.1" -"@typescript-eslint/scope-manager@4.22.0": - version "4.22.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.22.0.tgz#ed411545e61161a8d702e703a4b7d96ec065b09a" - integrity sha512-OcCO7LTdk6ukawUM40wo61WdeoA7NM/zaoq1/2cs13M7GyiF+T4rxuA4xM+6LeHWjWbss7hkGXjFDRcKD4O04Q== +"@typescript-eslint/scope-manager@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.22.1.tgz#5bb357f94f9cd8b94e6be43dd637eb73b8f355b4" + integrity sha512-d5bAiPBiessSmNi8Amq/RuLslvcumxLmyhf1/Xa9IuaoFJ0YtshlJKxhlbY7l2JdEk3wS0EnmnfeJWSvADOe0g== dependencies: - "@typescript-eslint/types" "4.22.0" - "@typescript-eslint/visitor-keys" "4.22.0" + "@typescript-eslint/types" "4.22.1" + "@typescript-eslint/visitor-keys" "4.22.1" "@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.22.0": - version "4.22.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.22.0.tgz#0ca6fde5b68daf6dba133f30959cc0688c8dd0b6" - integrity sha512-sW/BiXmmyMqDPO2kpOhSy2Py5w6KvRRsKZnV0c4+0nr4GIcedJwXAq+RHNK4lLVEZAJYFltnnk1tJSlbeS9lYA== +"@typescript-eslint/types@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.22.1.tgz#bf99c6cec0b4a23d53a61894816927f2adad856a" + integrity sha512-2HTkbkdAeI3OOcWbqA8hWf/7z9c6gkmnWNGz0dKSLYLWywUlkOAQ2XcjhlKLj5xBFDf8FgAOF5aQbnLRvgNbCw== -"@typescript-eslint/typescript-estree@4.22.0": - version "4.22.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.22.0.tgz#b5d95d6d366ff3b72f5168c75775a3e46250d05c" - integrity sha512-TkIFeu5JEeSs5ze/4NID+PIcVjgoU3cUQUIZnH3Sb1cEn1lBo7StSV5bwPuJQuoxKXlzAObjYTilOEKRuhR5yg== +"@typescript-eslint/typescript-estree@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.22.1.tgz#dca379eead8cdfd4edc04805e83af6d148c164f9" + integrity sha512-p3We0pAPacT+onSGM+sPR+M9CblVqdA9F1JEdIqRVlxK5Qth4ochXQgIyb9daBomyQKAXbygxp1aXQRV0GC79A== dependencies: - "@typescript-eslint/types" "4.22.0" - "@typescript-eslint/visitor-keys" "4.22.0" + "@typescript-eslint/types" "4.22.1" + "@typescript-eslint/visitor-keys" "4.22.1" debug "^4.1.1" globby "^11.0.1" is-glob "^4.0.1" @@ -2564,12 +2571,12 @@ dependencies: eslint-visitor-keys "^1.1.0" -"@typescript-eslint/visitor-keys@4.22.0": - version "4.22.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.22.0.tgz#169dae26d3c122935da7528c839f42a8a42f6e47" - integrity sha512-nnMu4F+s4o0sll6cBSsTeVsT4cwxB7zECK3dFxzEjPBii9xLpq4yqqsy/FU5zMfan6G60DKZSCXAa3sHJZrcYw== +"@typescript-eslint/visitor-keys@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.22.1.tgz#6045ae25a11662c671f90b3a403d682dfca0b7a6" + integrity sha512-WPkOrIRm+WCLZxXQHCi+WG8T2MMTUFR70rWjdWYddLT7cEfb2P4a3O/J2U1FBVsSFTocXLCoXWY6MZGejeStvQ== dependencies: - "@typescript-eslint/types" "4.22.0" + "@typescript-eslint/types" "4.22.1" eslint-visitor-keys "^2.0.0" "@xobotyi/scrollbar-width@^1.9.5": @@ -3741,6 +3748,14 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +chalk@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad" + integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + character-entities-legacy@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1" @@ -4147,10 +4162,10 @@ commander@^6.0.0: resolved "https://registry.yarnpkg.com/commander/-/commander-6.1.0.tgz#f8d722b78103141006b66f4c7ba1e97315ba75bc" integrity sha512-wl7PNrYWd2y5mp1OK/LhTlv8Ff4kQJQRXXAvF+uU/TPNiVJUxZLRYGj/B0y/lPGAVcSbJqH2Za/cvHmrPMC8mA== -commander@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.0.tgz#b990bfb8ac030aedc6d11bc04d1488ffef56db75" - integrity sha512-zP4jEKbe8SHzKJYQmq8Y9gYjtO/POJLgIdKgV7B9qNmABVFVc+ctqSX6iXh4mCpJfRBOabiZ2YKPg8ciDw6C+Q== +commander@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== commitizen@^4.0.3: version "4.2.1" @@ -4172,16 +4187,16 @@ commitizen@^4.0.3: strip-bom "4.0.0" strip-json-comments "3.0.1" -commitizen@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/commitizen/-/commitizen-4.2.3.tgz#088d0ef72500240d331b11e02e288223667c1475" - integrity sha512-pYlYEng7XMV2TW4xtjDKBGqeJ0Teq2zyRSx2S3Ml1XAplHSlJZK8vm1KdGclpMEZuGafbS5TeHXIVnHk8RWIzQ== +commitizen@^4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/commitizen/-/commitizen-4.2.4.tgz#a3e5b36bd7575f6bf6e7aa19dbbf06b0d8f37165" + integrity sha512-LlZChbDzg3Ir3O2S7jSo/cgWp5/QwylQVr59K4xayVq8S4/RdKzSyJkghAiZZHfhh5t4pxunUoyeg0ml1q/7aw== dependencies: cachedir "2.2.0" cz-conventional-changelog "3.2.0" dedent "0.7.0" detect-indent "6.0.0" - find-node-modules "2.0.0" + find-node-modules "^2.1.2" find-root "1.1.0" fs-extra "8.1.0" glob "7.1.4" @@ -4828,7 +4843,7 @@ debug@3.1.0: dependencies: ms "2.0.0" -debug@4, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3.1: +debug@4, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== @@ -5640,13 +5655,13 @@ 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.25.0: - version "7.25.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.25.0.tgz#1309e4404d94e676e3e831b3a3ad2b050031eb67" - integrity sha512-TVpSovpvCNpLURIScDRB6g5CYu/ZFq9GfX2hLNIV4dSBKxIWojeDODvYl3t0k0VtMxYeR8OXPCFE5+oHMlGfhw== +eslint@^7.26.0: + version "7.26.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.26.0.tgz#d416fdcdcb3236cd8f282065312813f8c13982f6" + integrity sha512-4R1ieRf52/izcZE7AlLy56uIHHDLT74Yzz2Iv2l6kDaYvEu9x+wMB5dZArVL8SYGXSYV2YAg70FcW5Y5nGGNIg== dependencies: "@babel/code-frame" "7.12.11" - "@eslint/eslintrc" "^0.4.0" + "@eslint/eslintrc" "^0.4.1" ajv "^6.10.0" chalk "^4.0.0" cross-spawn "^7.0.2" @@ -5766,7 +5781,7 @@ execa@^0.7.0: signal-exit "^3.0.0" strip-eof "^1.0.0" -execa@^4.0.0, execa@^4.1.0: +execa@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== @@ -5816,10 +5831,10 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2: dependencies: homedir-polyfill "^1.0.1" -express-openapi-validator@^4.12.9: - version "4.12.9" - resolved "https://registry.yarnpkg.com/express-openapi-validator/-/express-openapi-validator-4.12.9.tgz#ec37da1be3c80018bfa25747ba4616322923a03d" - integrity sha512-ZgeVVwIpTveJWhoEkYXY4CO+VeSxKvRf3IkoDTxmerq+hMEJ0cXrLaO2mzVYiKiieCkSGW23f4kruDCeTMvIng== +express-openapi-validator@^4.12.10: + version "4.12.10" + resolved "https://registry.yarnpkg.com/express-openapi-validator/-/express-openapi-validator-4.12.10.tgz#042b2b13014a14dafe9c994f43bf52722d2a35ae" + integrity sha512-a2tAYV+rwEeap8G7IQeHd3Q1bgiXWIZ7LmkTmkivFzpnM8mhOK/ujoEAY9fE2KG2W0B7eUgH/qYMVPraeljZCQ== dependencies: "@types/multer" "^1.4.5" ajv "^6.12.6" @@ -6119,6 +6134,14 @@ find-node-modules@2.0.0: findup-sync "^3.0.0" merge "^1.2.1" +find-node-modules@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/find-node-modules/-/find-node-modules-2.1.2.tgz#57565a3455baf671b835bc6b2134a9b938b9c53c" + integrity sha512-x+3P4mbtRPlSiVE1Qco0Z4YLU8WFiFcuWTf3m75OV9Uzcfs2Bg+O9N+r/K0AnmINBW06KpfqKwYJbFlFq4qNug== + dependencies: + findup-sync "^4.0.0" + merge "^2.1.0" + find-npm-prefix@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/find-npm-prefix/-/find-npm-prefix-1.0.2.tgz#8d8ce2c78b3b4b9e66c8acc6a37c231eb841cfdf" @@ -6176,6 +6199,16 @@ findup-sync@^3.0.0: micromatch "^3.0.4" resolve-dir "^1.0.1" +findup-sync@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-4.0.0.tgz#956c9cdde804052b881b428512905c4a5f2cdef0" + integrity sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ== + dependencies: + detect-file "^1.0.0" + is-glob "^4.0.0" + micromatch "^4.0.2" + resolve-dir "^1.0.1" + flat-cache@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" @@ -7787,6 +7820,11 @@ is-typedarray@^1.0.0, is-typedarray@~1.0.0: resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + is-utf8@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" @@ -8305,40 +8343,41 @@ linkify-it@3.0.2: dependencies: uc.micro "^1.0.1" -lint-staged@^10.5.4: - version "10.5.4" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.5.4.tgz#cd153b5f0987d2371fc1d2847a409a2fe705b665" - integrity sha512-EechC3DdFic/TdOPgj/RB3FicqE6932LTHCUm0Y2fsD9KGlLB+RwJl2q1IYBIvEsKzDOgn0D4gll+YxG5RsrKg== +lint-staged@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-11.0.0.tgz#24d0a95aa316ba28e257f5c4613369a75a10c712" + integrity sha512-3rsRIoyaE8IphSUtO1RVTFl1e0SLBtxxUOPBtHxQgBHS5/i6nqvjcUfNioMa4BU9yGnPzbO+xkfLtXtxBpCzjw== dependencies: - chalk "^4.1.0" + chalk "^4.1.1" cli-truncate "^2.1.0" - commander "^6.2.0" + commander "^7.2.0" cosmiconfig "^7.0.0" - debug "^4.2.0" + debug "^4.3.1" dedent "^0.7.0" enquirer "^2.3.6" - execa "^4.1.0" - listr2 "^3.2.2" - log-symbols "^4.0.0" - micromatch "^4.0.2" + execa "^5.0.0" + listr2 "^3.8.2" + log-symbols "^4.1.0" + micromatch "^4.0.4" normalize-path "^3.0.0" please-upgrade-node "^3.2.0" string-argv "0.3.1" stringify-object "^3.3.0" -listr2@^3.2.2: - version "3.2.3" - resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.2.3.tgz#ef9e0d790862f038dde8a9837be552b1adfd1c07" - integrity sha512-vUb80S2dSUi8YxXahO8/I/s29GqnOL8ozgHVLjfWQXa03BNEeS1TpBLjh2ruaqq5ufx46BRGvfymdBSuoXET5w== +listr2@^3.8.2: + version "3.8.2" + resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.8.2.tgz#99b138ad1cfb08f1b0aacd422972e49b2d814b99" + integrity sha512-E28Fw7Zd3HQlCJKzb9a8C8M0HtFWQeucE+S8YrSrqZObuCLPRHMRrR8gNmYt65cU9orXYHwvN5agXC36lYt7VQ== dependencies: - chalk "^4.1.0" + chalk "^4.1.1" cli-truncate "^2.1.0" figures "^3.2.0" indent-string "^4.0.0" log-update "^4.0.0" p-map "^4.0.0" - rxjs "^6.6.3" + rxjs "^6.6.7" through "^2.3.8" + wrap-ansi "^7.0.0" load-json-file@^2.0.0: version "2.0.0" @@ -8592,12 +8631,13 @@ lodash@^4.0.0, lodash@^4.15.0, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13 resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -log-symbols@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" - integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== dependencies: - chalk "^4.0.0" + chalk "^4.1.0" + is-unicode-supported "^0.1.0" log-update@^4.0.0: version "4.0.0" @@ -8974,6 +9014,11 @@ merge@^1.2.1: resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.1.tgz#38bebf80c3220a8a487b6fcfb3941bb11720c145" integrity sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ== +merge@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/merge/-/merge-2.1.1.tgz#59ef4bf7e0b3e879186436e8481c06a6c162ca98" + integrity sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w== + messageformat-formatters@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/messageformat-formatters/-/messageformat-formatters-2.0.1.tgz#0492c1402a48775f751c9b17c0354e92be012b08" @@ -9033,6 +9078,14 @@ micromatch@^4.0.0, micromatch@^4.0.2: braces "^3.0.1" picomatch "^2.0.5" +micromatch@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" + integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== + dependencies: + braces "^3.0.1" + picomatch "^2.2.3" + miller-rabin@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" @@ -10560,6 +10613,11 @@ picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== +picomatch@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.3.tgz#465547f359ccc206d3c48e46a1bcb89bf7ee619d" + integrity sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg== + pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -10743,10 +10801,10 @@ postcss@^8.1.6, postcss@^8.2.1: nanoid "^3.1.22" source-map "^0.6.1" -postcss@^8.2.13: - version "8.2.13" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.13.tgz#dbe043e26e3c068e45113b1ed6375d2d37e2129f" - integrity sha512-FCE5xLH+hjbzRdpbRb1IMCvPv9yZx2QnDarBEYSN0N0HYk+TcXsEhwdFcFb+SRWOKzKGErhIEbBK2ogyLdTtfQ== +postcss@^8.2.14: + version "8.2.14" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.14.tgz#dcf313eb8247b3ce8078d048c0e8262ca565ad2b" + integrity sha512-+jD0ZijcvyCqPQo/m/CW0UcARpdFylq04of+Q7RKX6f/Tu+dvpUI/9Sp81+i6/vJThnOBX09Quw0ZLOVwpzX3w== dependencies: colorette "^1.2.2" nanoid "^3.1.22" @@ -11263,10 +11321,10 @@ react-is@^17.0.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== -react-markdown@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/react-markdown/-/react-markdown-6.0.1.tgz#755a78840bdb32a6fa3fb2c33874005c6ac6c3b5" - integrity sha512-JNOIU+6xrG+eOwZu9UNZxDAc1bNBCpI8mueQNx5NwZWRbSrcD25FllhKHxyUkXhpdu3r/eg1hrLKCtCq9/uIrw== +react-markdown@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/react-markdown/-/react-markdown-6.0.2.tgz#d89be45c278b1e5f0196f851fffb11e30c69f027" + integrity sha512-Et2AjXAsbmPP1nLQQRqmVgcqzfwcz8uQJ8VAdADs8Nk/aaUA0YeU9RDLuCtD+GwajCnm/+Iiu2KPmXzmD/M3vA== dependencies: "@types/hast" "^2.0.0" "@types/unist" "^2.0.3" @@ -11280,6 +11338,7 @@ react-markdown@^6.0.1: style-to-object "^0.3.0" unified "^9.0.0" unist-util-visit "^2.0.0" + vfile "^4.0.0" react-refresh@0.8.3: version "0.8.3" @@ -11347,10 +11406,10 @@ react-use-clipboard@1.0.7: dependencies: copy-to-clipboard "^3.3.1" -react-use@^17.2.3: - version "17.2.3" - resolved "https://registry.yarnpkg.com/react-use/-/react-use-17.2.3.tgz#ba3e5711d6ec4d51637641d6db63897e98c5904f" - integrity sha512-cHLG5mwv9NSkydhlY3J1B/Z5gGzRF43QXzFaMisSaFClg0o1VeWJaYj2d9HJIiTGC+imt47FY4TpnZNRhbOyaQ== +react-use@^17.2.4: + version "17.2.4" + resolved "https://registry.yarnpkg.com/react-use/-/react-use-17.2.4.tgz#1f89be3db0a8237c79253db0a15e12bbe3cfeff1" + integrity sha512-vQGpsAM0F5UIlshw5UI8ULGPS4yn5rm7/qvn3T1Gnkrz7YRMEEMh+ynKcmRloOyiIeLvKWiQjMiwRGtdbgs5qQ== dependencies: "@types/js-cookie" "^2.2.6" "@xobotyi/scrollbar-width" "^1.9.5" @@ -11933,10 +11992,10 @@ rxjs@^6.4.0: dependencies: tslib "^1.9.0" -rxjs@^6.6.3: - version "6.6.3" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552" - integrity sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ== +rxjs@^6.6.7: + version "6.6.7" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" + integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== dependencies: tslib "^1.9.0" @@ -14066,15 +14125,15 @@ widest-line@^3.1.0: dependencies: string-width "^4.0.0" -winston-daily-rotate-file@^4.5.3: - version "4.5.3" - resolved "https://registry.yarnpkg.com/winston-daily-rotate-file/-/winston-daily-rotate-file-4.5.3.tgz#d5bdf735104e3763e6baa616d2f491a17cdd75e0" - integrity sha512-/V0wWnxK6RviPIKJ4ZNgBxj2BMHWHMvaBpUsY4wietLsdmoUS77w+XXtAZ2ed44FxaD3n3K8XE2r0J6527uHkw== +winston-daily-rotate-file@^4.5.5: + version "4.5.5" + resolved "https://registry.yarnpkg.com/winston-daily-rotate-file/-/winston-daily-rotate-file-4.5.5.tgz#cfa3a89f4eb0e4126917592b375759b772bcd972" + integrity sha512-ds0WahIjiDhKCiMXmY799pDBW+58ByqIBtUcsqr4oDoXrAI3Zn+hbgFdUxzMfqA93OG0mPLYVMiotqTgE/WeWQ== dependencies: file-stream-rotator "^0.5.7" object-hash "^2.0.1" triple-beam "^1.3.0" - winston-transport "github:winstonjs/winston-transport#868d657" + winston-transport "^4.4.0" winston-transport@^4.4.0: version "4.4.0" @@ -14084,14 +14143,6 @@ winston-transport@^4.4.0: readable-stream "^2.3.7" triple-beam "^1.2.0" -"winston-transport@github:winstonjs/winston-transport#868d657": - version "4.4.0" - resolved "https://codeload.github.com/winstonjs/winston-transport/tar.gz/868d6577956f82ee0b021b119a4de938c61645f7" - dependencies: - logform "^2.2.0" - readable-stream "^2.3.7" - triple-beam "^1.2.0" - winston@^3.3.3: version "3.3.3" resolved "https://registry.yarnpkg.com/winston/-/winston-3.3.3.tgz#ae6172042cafb29786afa3d09c8ff833ab7c9170" From 788f3dc435ae224fcc4d4cb2890b1b9b494c64e8 Mon Sep 17 00:00:00 2001 From: TheCatLady <52870424+TheCatLady@users.noreply.github.com> Date: Sat, 8 May 2021 12:33:37 -0400 Subject: [PATCH 09/73] fix(requests): remove requestedBy user param from existing movie request check (#1569) --- server/routes/request.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/routes/request.ts b/server/routes/request.ts index 96f47694..1bde2259 100644 --- a/server/routes/request.ts +++ b/server/routes/request.ts @@ -256,7 +256,6 @@ requestRoutes.post('/', async (req, res, next) => { media: { tmdbId: tmdbMedia.id, }, - requestedBy: req.user, is4k: req.body.is4k, }, }); @@ -265,6 +264,7 @@ requestRoutes.post('/', async (req, res, next) => { logger.warn('Duplicate request for media blocked', { tmdbId: tmdbMedia.id, mediaType: req.body.mediaType, + is4k: req.body.is4k, }); return next({ status: 409, From 361ea77588db3dc04a51dd3a62c73ae1297cdce2 Mon Sep 17 00:00:00 2001 From: "Weblate (bot)" Date: Sat, 8 May 2021 18:39:17 +0200 Subject: [PATCH 10/73] feat(lang): translations update from Weblate (#1585) * Update translation files Updated by "Cleanup translation files" hook in Weblate. Co-authored-by: Hosted Weblate Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/ Translation: Overseerr/Overseerr Frontend * feat(lang): translated using Weblate (French) Currently translated at 94.7% (819 of 864 strings) Update translation files Updated by "Cleanup translation files" hook in Weblate. Co-authored-by: Antoine Cardon Co-authored-by: Hosted Weblate Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/ Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/fr/ Translation: Overseerr/Overseerr Frontend * feat(lang): translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (866 of 866 strings) feat(lang): translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (865 of 865 strings) feat(lang): translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (864 of 864 strings) feat(lang): translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (864 of 864 strings) Update translation files Updated by "Cleanup translation files" hook in Weblate. Co-authored-by: Hosted Weblate Co-authored-by: TheCatLady <52870424+TheCatLady@users.noreply.github.com> Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/ Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/zh_Hant/ Translation: Overseerr/Overseerr Frontend * feat(lang): translated using Weblate (Catalan) Currently translated at 100.0% (866 of 866 strings) Update translation files Updated by "Cleanup translation files" hook in Weblate. Update translation files Updated by "Cleanup translation files" hook in Weblate. feat(lang): translated using Weblate (Catalan) Currently translated at 97.6% (843 of 863 strings) Co-authored-by: Hosted Weblate Co-authored-by: dtalens Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/ Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/ca/ Translation: Overseerr/Overseerr Frontend * feat(lang): translated using Weblate (Italian) Currently translated at 100.0% (866 of 866 strings) feat(lang): translated using Weblate (Italian) Currently translated at 98.0% (847 of 864 strings) Update translation files Updated by "Cleanup translation files" hook in Weblate. Co-authored-by: Hosted Weblate Co-authored-by: Simone Chiavaccini Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/ Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/it/ Translation: Overseerr/Overseerr Frontend * feat(lang): translated using Weblate (Dutch) Currently translated at 100.0% (864 of 864 strings) feat(lang): translated using Weblate (Dutch) Currently translated at 99.8% (863 of 864 strings) Update translation files Updated by "Cleanup translation files" hook in Weblate. Co-authored-by: Hosted Weblate Co-authored-by: Kobe Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/ Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/nl/ Translation: Overseerr/Overseerr Frontend * Update translation files Updated by "Cleanup translation files" hook in Weblate. Co-authored-by: Hosted Weblate Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/ Translation: Overseerr/Overseerr Frontend * Update translation files Updated by "Cleanup translation files" hook in Weblate. Co-authored-by: Hosted Weblate Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/ Translation: Overseerr/Overseerr Frontend * Update translation files Updated by "Cleanup translation files" hook in Weblate. Co-authored-by: Hosted Weblate Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/ Translation: Overseerr/Overseerr Frontend * Update translation files Updated by "Cleanup translation files" hook in Weblate. Co-authored-by: Hosted Weblate Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/ Translation: Overseerr/Overseerr Frontend * feat(lang): translated using Weblate (Swedish) Currently translated at 100.0% (866 of 866 strings) feat(lang): translated using Weblate (Swedish) Currently translated at 100.0% (864 of 864 strings) feat(lang): translated using Weblate (Swedish) Currently translated at 100.0% (864 of 864 strings) Update translation files Updated by "Cleanup translation files" hook in Weblate. Co-authored-by: Hosted Weblate Co-authored-by: Shjosan Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/ Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/sv/ Translation: Overseerr/Overseerr Frontend * Update translation files Updated by "Cleanup translation files" hook in Weblate. Co-authored-by: Hosted Weblate Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/ Translation: Overseerr/Overseerr Frontend * Update translation files Updated by "Cleanup translation files" hook in Weblate. Co-authored-by: Hosted Weblate Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/ Translation: Overseerr/Overseerr Frontend * Update translation files Updated by "Cleanup translation files" hook in Weblate. Co-authored-by: Hosted Weblate Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/ Translation: Overseerr/Overseerr Frontend Co-authored-by: Antoine Cardon Co-authored-by: TheCatLady <52870424+TheCatLady@users.noreply.github.com> Co-authored-by: dtalens Co-authored-by: Simone Chiavaccini Co-authored-by: Kobe Co-authored-by: Shjosan --- src/i18n/locale/ca.json | 47 +++++++++++------ src/i18n/locale/de.json | 2 - src/i18n/locale/es.json | 2 - src/i18n/locale/fr.json | 4 +- src/i18n/locale/it.json | 43 +++++++++++----- src/i18n/locale/ja.json | 1 - src/i18n/locale/nb_NO.json | 2 - src/i18n/locale/nl.json | 15 +++--- src/i18n/locale/pt_BR.json | 2 - src/i18n/locale/pt_PT.json | 2 - src/i18n/locale/ru.json | 1 - src/i18n/locale/sr.json | 1 - src/i18n/locale/sv.json | 17 ++++--- src/i18n/locale/zh_Hant.json | 99 +++++++++++++++++++----------------- 14 files changed, 132 insertions(+), 106 deletions(-) diff --git a/src/i18n/locale/ca.json b/src/i18n/locale/ca.json index 30a269f3..30513ae8 100644 --- a/src/i18n/locale/ca.json +++ b/src/i18n/locale/ca.json @@ -43,7 +43,7 @@ "components.RequestModal.AdvancedRequester.destinationserver": "Servidor de destí", "components.RequestModal.AdvancedRequester.default": "{name} (Predeterminat)", "components.RequestModal.AdvancedRequester.animenote": "* Aquesta sèrie es un anime.", - "components.RequestModal.AdvancedRequester.advancedoptions": "Opcions avançades", + "components.RequestModal.AdvancedRequester.advancedoptions": "Avançat", "components.RequestList.sortModified": "Última modificació", "components.RequestList.sortAdded": "Data de sol·licitud", "components.RequestList.showallrequests": "Mostra totes les sol·licituds", @@ -78,8 +78,8 @@ "components.RequestBlock.profilechanged": "Perfil de qualitat", "components.RegionSelector.regionServerDefault": "Predeterminada ({Region})", "components.PlexLoginButton.signinwithplex": "Inicieu la sessió", - "components.QuotaSelector.movieRequestLimit": "{quotaLimit} pel·lícula(es) per {quotaDays} dia(es)", - "components.QuotaSelector.tvRequestLimit": "{quotaLimit} temporada(es) per {quotaDays} dia(es)", + "components.QuotaSelector.movieRequestLimit": "{quotaLimit} pel·lícula(es) cada {quotaDays} dia(es)", + "components.QuotaSelector.tvRequestLimit": "{quotaLimit} temporada(es) cada {quotaDays} dia(es)", "components.RegionSelector.regionDefault": "Totes les regions", "components.QuotaSelector.unlimited": "Il·limitat", "components.PlexLoginButton.signingin": "S'està iniciant la sessió…", @@ -162,7 +162,7 @@ "components.Settings.RadarrModal.testFirstRootFolders": "Proveu la connexió per carregar les carpetes arrel", "components.Settings.RadarrModal.testFirstQualityProfiles": "Prova la connexió per carregar perfils de qualitat", "components.Settings.RadarrModal.syncEnabled": "Activa l’escaneig", - "components.Settings.RadarrModal.ssl": "Activa SSL", + "components.Settings.RadarrModal.ssl": "Utilitza SSL", "components.Settings.RadarrModal.servername": "Nom del Servidor", "components.Settings.RadarrModal.server4k": "Servidor 4K", "components.MovieDetails.manageModalRequests": "Sol·licituds", @@ -244,7 +244,7 @@ "components.Settings.Notifications.NotificationsPushover.pushoversettingssaved": "La configuració de notificacions Pushover s'ha desat correctament!", "components.Settings.Notifications.NotificationsPushover.pushoversettingsfailed": "No s'ha pogut desar la configuració de les notificacions de Pushover.", "components.Settings.Notifications.NotificationsPushover.agentenabled": "Activa l'agent", - "components.Settings.Notifications.NotificationsPushover.accessToken": "Testimoni d'aplicació / API", + "components.Settings.Notifications.NotificationsPushover.accessToken": "Testimoni de l'API de l'aplicació", "components.Settings.Notifications.NotificationsPushbullet.validationAccessTokenRequired": "Heu de proporcionar un testimoni d'accés", "components.Settings.Notifications.NotificationsPushbullet.pushbulletSettingsSaved": "La configuració de les notificacions de pushbullet s'ha desat correctament!", "components.Settings.Notifications.NotificationsPushbullet.pushbulletSettingsFailed": "No s'ha pogut desar la configuració de notificacions de Pushbullet.", @@ -276,7 +276,7 @@ "components.Settings.Notifications.chatId": "Identificador del xat", "components.Settings.Notifications.botUsername": "Nom d'usuari del Bot", "components.Settings.Notifications.botAvatarUrl": "URL de l’avatar del Bot", - "components.Settings.Notifications.botAPI": "Testimoni d'autenticació del Bot", + "components.Settings.Notifications.botAPI": "Testimoni d'autorització del Bot", "components.Settings.Notifications.authUser": "Nom d'usuari SMTP", "components.Settings.Notifications.authPass": "Contrasenya SMTP", "components.Settings.Notifications.allowselfsigned": "Permet certificats autosignats", @@ -483,8 +483,6 @@ "components.Settings.serverpresetManualMessage": "Configuració manual", "components.Settings.serverpresetLoad": "Premeu el botó per carregar els servidors disponibles", "components.Settings.serverpreset": "Servidor", - "components.Settings.servernameTip": "Recuperat automàticament de Plex després de desar-lo", - "components.Settings.servername": "Nom del Servidor", "components.Settings.serverRemote": "remot", "components.Settings.serverLocal": "local", "components.Settings.scanning": "S'està sincronitzant …", @@ -529,7 +527,7 @@ "components.Settings.applicationTitle": "Títol de l'aplicació", "components.Settings.addsonarr": "Afegeix un servidor Sonarr", "components.Settings.activeProfile": "Perfil actiu", - "components.Settings.enablessl": "Activa SSL", + "components.Settings.enablessl": "Utilitza SSL", "components.Settings.email": "Adreça electrònica", "components.Settings.default4k": "4K predeterminat", "components.Settings.default": "Predeterminat", @@ -559,7 +557,7 @@ "components.Settings.SonarrModal.testFirstQualityProfiles": "Prova la connexió per carregar perfils de qualitat", "components.Settings.SonarrModal.testFirstLanguageProfiles": "Prova la connexió per carregar els perfils d'idioma", "components.Settings.SonarrModal.syncEnabled": "Activa l’escaneig", - "components.Settings.SonarrModal.ssl": "Activa SSL", + "components.Settings.SonarrModal.ssl": "Utilitza SSL", "components.Settings.SonarrModal.servername": "Nom del Servidor", "components.Settings.SonarrModal.server4k": "Servidor 4K", "components.Settings.RadarrModal.selectRootFolder": "Seleccioneu la carpeta arrel", @@ -582,8 +580,8 @@ "components.Settings.SonarrModal.animequalityprofile": "Perfil de qualitat de l'anime", "components.Settings.SettingsUsers.userSettingsDescription": "Configureu la configuració global i predeterminada de l'usuari.", "components.Settings.SettingsUsers.toastSettingsFailure": "S'ha produït un error en desar la configuració.", - "components.Settings.RadarrModal.baseUrl": "URL base", - "components.Settings.SonarrModal.baseUrl": "URL base", + "components.Settings.RadarrModal.baseUrl": "Base d’URL", + "components.Settings.SonarrModal.baseUrl": "Base d'URL", "components.Settings.SonarrModal.apiKey": "Clau API", "components.Settings.SonarrModal.animerootfolder": "Carpeta arrel de l'anime", "components.Settings.SonarrModal.animelanguageprofile": "Perfil d'idioma per a Anime", @@ -668,7 +666,7 @@ "components.Settings.Notifications.validationSmtpHostRequired": "Heu de proporcionar un nom d’amfitrió o una adreça IP vàlids", "components.Settings.Notifications.validationEmail": "Heu de proporcionar una adreça de correu electrònic vàlida", "components.Settings.Notifications.validationChatIdRequired": "Heu de proporcionar un identificador de xat vàlid", - "components.Settings.Notifications.validationBotAPIRequired": "Heu de proporcionar un testimoni d'autenticació del bot", + "components.Settings.Notifications.validationBotAPIRequired": "Heu de proporcionar un testimoni d'autorització del bot", "components.Settings.Notifications.telegramsettingsfailed": "No s'ha pogut desar la configuració de les notificacions de Telegram.", "components.Settings.Notifications.smtpHost": "Amfitrió SMTP", "components.Settings.Notifications.emailsettingsfailed": "No s'ha pogut desar la configuració de les notificacions per correu electrònic.", @@ -775,7 +773,7 @@ "components.Settings.SettingsAbout.outofdate": "No està actualitzat", "components.Settings.Notifications.validationPgpPrivateKey": "Heu de proporcionar una clau privada PGP vàlida si s'introdueix una contrasenya PGP", "components.Settings.Notifications.validationPgpPassword": "Heu de proporcionar una contrasenya PGP si s'introdueix una clau privada PGP", - "components.Settings.Notifications.botUsernameTip": "Permet als usuaris iniciar un xat amb el bot i configurar les seves pròpies notificacions personals", + "components.Settings.Notifications.botUsernameTip": "Permetre als usuaris iniciar un xat amb el bot i configurar les seves pròpies notificacions", "components.RequestModal.pendingapproval": "La vostra sol·licitud està pendent d'aprovació.", "components.RequestList.RequestItem.mediaerror": "El títol associat per a aquesta sol·licitud ja no està disponible.", "components.RequestList.RequestItem.deleterequest": "Suprimeix la sol·licitud", @@ -847,5 +845,24 @@ "components.PermissionEdit.requestTvDescription": "Concedeix permís per sol·licitar sèries no 4K.", "components.PermissionEdit.requestTv": "Sol·licita sèries", "components.PermissionEdit.requestMoviesDescription": "Concedeix permís per sol·licitar pel·lícules no 4K.", - "components.PermissionEdit.requestMovies": "Sol·liciteu pel·lícules" + "components.PermissionEdit.requestMovies": "Sol·liciteu pel·lícules", + "components.Settings.Notifications.NotificationsLunaSea.webhookUrlTip": "El vostre URL del webhook de notificació basat en l'usuari o el dispositiu", + "components.UserList.localLoginDisabled": "El paràmetre Activa l'inici de sessió local està desactivat actualment.", + "components.Settings.webAppUrlTip": "Opcionalment, dirigiu els usuaris a l'aplicació web del vostre servidor en lloc de l'aplicació web \"allotjada\"", + "components.Settings.webAppUrl": "URL de l'aplicació web", + "components.Settings.Notifications.encryptionTip": "En la majoria dels casos, TLS implícit utilitza el port 465 i STARTTLS utilitza el port 587", + "components.Settings.Notifications.encryptionImplicitTls": "Utilitzeu TLS implícit", + "components.Settings.Notifications.encryptionDefault": "Utilitzeu STARTTLS si està disponible", + "components.Settings.Notifications.encryption": "Mètode de xifratge", + "components.Settings.Notifications.chatIdTip": "Inicieu un xat amb el bot, afegiu @get_id_bot i indiqueu l'ordre /my_id", + "components.Settings.Notifications.botApiTip": "Creeu un bot per utilitzar-lo amb Overseerr", + "components.Settings.Notifications.NotificationsWebPush.httpsRequirement": "Per tal de rebre notificacions push web, Overseerr s'ha de servir mitjançant HTTPS.", + "components.Settings.Notifications.NotificationsSlack.webhookUrlTip": "Creeu una integració Webhook entrant", + "components.Settings.Notifications.NotificationsPushover.userTokenTip": "El vostre identificador d'usuari o grup", + "components.Settings.Notifications.NotificationsPushover.accessTokenTip": "Registreu una aplicació per utilitzar-la amb Overseerr", + "components.Settings.Notifications.NotificationsPushbullet.accessTokenTip": "Creeu un testimoni a partir de la Configuració del compte", + "components.Settings.validationWebAppUrl": "Heu de proporcionar un URL d'aplicació web Plex vàlid", + "components.Settings.Notifications.webhookUrlTip": "Creeu una integració de webhook al vostre servidor", + "components.Settings.Notifications.encryptionOpportunisticTls": "Utilitzeu sempre STARTTLS", + "components.Settings.Notifications.encryptionNone": "Cap" } diff --git a/src/i18n/locale/de.json b/src/i18n/locale/de.json index 56d7733a..0c759ef5 100644 --- a/src/i18n/locale/de.json +++ b/src/i18n/locale/de.json @@ -137,7 +137,6 @@ "components.Settings.plexsettingsDescription": "Konfiguriere die Einstellungen für deinen Plex-Server. Overseerr durchsucht deine Plex-Bibliotheken, um festzustellen welche Inhalte verfügbar sind.", "components.Settings.port": "Port", "components.Settings.radarrsettings": "Radarr-Einstellungen", - "components.Settings.servername": "Servername", "components.Settings.sonarrsettings": "Sonarr-Einstellungen", "components.Settings.ssl": "SSL", "components.Settings.startscan": "Durchsuchung starten", @@ -381,7 +380,6 @@ "components.Settings.toastPlexConnectingFailure": "Verbindung zu Plex fehlgeschlagen.", "components.Settings.toastPlexConnecting": "Versuche mit Plex zu verbinden …", "components.Settings.settingUpPlexDescription": "Um Plex einzurichten, kannst du deine Daten manuell eintragen oder einen Server auswählen, welcher von plex.tv abgerufen wurde. Drück den Knopf rechts neben dem Dropdown-Menü, um die Liste der verfügbaren Server abzurufen.", - "components.Settings.servernameTip": "Wird nach dem Speichern automatisch von Plex abgerufen", "components.Settings.serverpresetRefreshing": "Rufe Server ab …", "components.Settings.serverpresetManualMessage": "Manuelle Konfiguration", "components.Settings.serverpresetLoad": "Drück den Knopf, um verfügbare Server zu laden", diff --git a/src/i18n/locale/es.json b/src/i18n/locale/es.json index c2739839..60775be7 100644 --- a/src/i18n/locale/es.json +++ b/src/i18n/locale/es.json @@ -170,7 +170,6 @@ "components.Settings.startscan": "Iniciar Escaneo", "components.Settings.ssl": "SSL", "components.Settings.sonarrsettings": "Ajustes de Sonarr", - "components.Settings.servername": "Nombre del Servidor", "components.Settings.radarrsettings": "Ajustes de Radarr", "components.Settings.port": "Puerto", "components.Settings.plexsettingsDescription": "Configure los ajustes de su servidor Plex. Overseerr escanea tu biblioteca para determinar la disponibilidad de contenidos.", @@ -558,7 +557,6 @@ "components.Settings.serverpresetManualMessage": "Configuración manual", "components.Settings.serverpresetLoad": "Presiona el botón para obtener los servidores disponibles", "components.Settings.serverpreset": "Servidor", - "components.Settings.servernameTip": "Obtenido automaticamente desde Plex tras guardar", "components.Settings.serverRemote": "remoto", "components.Settings.serverLocal": "local", "components.Settings.scanning": "Sincronizando…", diff --git a/src/i18n/locale/fr.json b/src/i18n/locale/fr.json index 91369387..f7cfa4ea 100644 --- a/src/i18n/locale/fr.json +++ b/src/i18n/locale/fr.json @@ -137,7 +137,6 @@ "components.Settings.plexsettingsDescription": "Configurer les paramètres de votre serveur Plex. Overseerr scanne vos librairies Plex pour déterminer les contenus disponibles.", "components.Settings.port": "Port", "components.Settings.radarrsettings": "Paramètres Radarr", - "components.Settings.servername": "Nom du serveur", "components.Settings.sonarrsettings": "Paramètres Sonarr", "components.Settings.ssl": "SSL", "components.Settings.startscan": "Commencer le scan", @@ -413,7 +412,6 @@ "components.TvDetails.mark4kavailable": "Marquer comme disponible en 4K", "components.TvDetails.downloadstatus": "État du téléchargement", "components.TvDetails.allseasonsmarkedavailable": "* Toutes les saisons seront marquées comme disponibles.", - "components.Settings.servernameTip": "Récupéré automatiquement de Plex après l'enregistrement", "components.Settings.SonarrModal.toastSonarrTestSuccess": "Connexion à Sonarr établie avec succès !", "components.Settings.SonarrModal.toastSonarrTestFailure": "Échec de la connexion à Sonarr.", "components.Settings.SonarrModal.syncEnabled": "Activer les scans", @@ -616,7 +614,7 @@ "components.Settings.SettingsUsers.toastSettingsSuccess": "Les paramètres utilisateur ont été enregistrés avec succès !", "components.Settings.Notifications.emailNotificationTypesAlertDescriptionPt2": "Les notifications par e-mail Média validé, Média refusé et Média disponible sont envoyées à l'utilisateur ayant fait la demande.", "components.NotificationTypeSelector.mediaAutoApproved": "Média validé automatiquement", - "components.NotificationTypeSelector.mediaAutoApprovedDescription": "Envoie une notification quand la demande d'un média est validé automatiquement.", + "components.NotificationTypeSelector.mediaAutoApprovedDescription": "Envoie une notification quand la demande d'un média est validée automatiquement.", "components.UserProfile.UserSettings.unauthorizedDescription": "Vous n'avez pas l'autorisation de modifier les paramètres de cet utilisateur.", "components.UserProfile.UserSettings.UserPermissions.unauthorizedDescription": "Vous ne pouvez pas modifier vos propres permissions.", "components.Settings.Notifications.pgpPrivateKeyTip": "Signer des emails chiffrés en utilisant OpenPGP", diff --git a/src/i18n/locale/it.json b/src/i18n/locale/it.json index ba809056..6a6d3966 100644 --- a/src/i18n/locale/it.json +++ b/src/i18n/locale/it.json @@ -9,11 +9,11 @@ "components.Settings.Notifications.emailsettingsfailed": "Impossibile salvare le impostazioni delle notifiche via posta elettronica.", "components.Settings.Notifications.emailsender": "Indirizzo del mittente", "components.Settings.address": "Indirizzo", - "components.Settings.SonarrModal.ssl": "Abilita SSL", + "components.Settings.SonarrModal.ssl": "Usa SSL", "components.Settings.SonarrModal.port": "Porta", "components.Settings.SonarrModal.hostname": "Hostname o indirizzo IP", "components.Settings.SettingsAbout.version": "Versione", - "components.Settings.RadarrModal.ssl": "Abilita SSL", + "components.Settings.RadarrModal.ssl": "Usa SSL", "components.Settings.RadarrModal.port": "Porta", "components.Settings.RadarrModal.hostname": "Hostname o indirizzo IP", "components.Settings.Notifications.agentenabled": "Abilita Agente", @@ -112,7 +112,7 @@ "components.Setup.loginwithplex": "Accedi con Plex", "components.Setup.configureplex": "Configurare Plex", "components.Settings.validationPortRequired": "È necessario fornire un numero di porta valido", - "components.Settings.validationHostnameRequired": "È necessario fornire un hostname o un indirizzo IP", + "components.Settings.validationHostnameRequired": "È necessario fornire un valido hostname o indirizzo IP", "components.Settings.toastSettingsSuccess": "Impostazioni salvate correttamente!", "components.Settings.startscan": "Avvia la scansione", "components.Settings.ssl": "SSL", @@ -207,7 +207,7 @@ "components.TvDetails.network": "{networkCount, plural, one {Rete} other {Reti}}", "components.Setup.finishing": "Finalizzazione…", "components.Settings.menuJobs": "Processi & Cache", - "components.TvDetails.manageModalClearMediaWarning": "* Questo rimuoverà irreversibilmente tutti i dati per questa serie TV, incluse eventuali richieste. Se questo elemento esiste nella tua libreria Plex, le informazioni dei media saranno ricreate durante la prossima scansione.", + "components.TvDetails.manageModalClearMediaWarning": "* Questo rimuoverà irreversibilmente tutti i dati per questa serie, incluse eventuali richieste. Se questo elemento esiste nella tua libreria Plex, le informazioni dei media saranno ricreate durante la prossima scansione.", "components.Setup.signinMessage": "Comincia accedendo con il tuo account Plex", "components.Settings.sonarrsettings": "Impostazioni Sonarr", "components.Settings.plexsettingsDescription": "Configura le impostazioni del tuo server Plex. Overseerr scansiona Plex a intervalli regolari alla ricerca di nuovi contenuti.", @@ -215,7 +215,6 @@ "components.Settings.plexlibraries": "Librerie Plex", "components.Settings.manualscanDescription": "Normalmente, questo verrà eseguito ogni 24 ore. Overseerr controllerà in modo più aggressivo i server Plex aggiunti di recente. Se è la prima volta che configuri Plex, si consiglia una scansione manuale completa della libreria!", "components.Settings.port": "Porta", - "components.Settings.servername": "Nome Server", "components.Settings.toastSettingsFailure": "Qualcosa è andato storto nel salvare le impostazioni.", "components.Settings.toastApiKeySuccess": "Nuova chiave API generata correttamente!", "components.Settings.toastApiKeyFailure": "Qualcosa è andato storto generando una nuova chiave API.", @@ -262,7 +261,7 @@ "components.Settings.Notifications.NotificationsSlack.slacksettingsfailed": "Impossibile salvare le impostazioni di Slack.", "components.Settings.Notifications.NotificationsSlack.agentenabled": "Abilita Agente", "components.Settings.Notifications.validationChatIdRequired": "È necessario fornire un ID della discussione valido", - "components.Settings.Notifications.validationBotAPIRequired": "Devi fornire un token di autenticazione del bot", + "components.Settings.Notifications.validationBotAPIRequired": "Devi fornire un token di autorizzazione del bot", "components.Settings.Notifications.telegramsettingssaved": "Impostazioni di Telegram salvate con successo!", "components.Settings.Notifications.telegramsettingsfailed": "Impossibile salvare le impostazioni di Telegram.", "components.Settings.Notifications.senderName": "Nome del mittente", @@ -351,7 +350,7 @@ "components.RequestModal.AdvancedRequester.destinationserver": "Server di destinazione", "components.RequestModal.AdvancedRequester.default": "{name} (Standard)", "components.RequestModal.AdvancedRequester.animenote": "* Questa serie è un anime.", - "components.RequestModal.AdvancedRequester.advancedoptions": "Opzioni avanzate", + "components.RequestModal.AdvancedRequester.advancedoptions": "Avanzate", "components.RequestButton.declinerequests": "Rifiuta {requestCount, plural, one {Richiesta} other {{requestCount} Richieste}}", "components.RequestBlock.requestoverrides": "Aggiramenti della richiesta", "components.UserList.bulkedit": "Modifica collettiva", @@ -383,7 +382,6 @@ "components.AppDataWarning.dockerVolumeMissingDescription": "Il volume {appDataPath} non è configurato correttamente. Tutte le modifiche apportate saranno perse quando il container verrà interrotto o riavviato.", "components.Settings.serverpresetLoad": "Premi il pulsante per caricare i server disponibili", "components.Settings.serverpreset": "Server", - "components.Settings.servernameTip": "Recuperato automaticamente da Plex dopo il salvataggio", "components.Settings.serverRemote": "remoto", "components.Settings.serverLocal": "locale", "components.Settings.notificationAgentSettingsDescription": "Configura e abilita gli agenti di notifica.", @@ -475,7 +473,7 @@ "components.UserList.validationEmail": "Devi fornire un indirizzo e-mail valido", "components.UserList.users": "Utenti", "components.TvDetails.playonplex": "Riproduci su Plex", - "components.TvDetails.play4konplex": "Riproduci 4K su Plex", + "components.TvDetails.play4konplex": "Riproduci in 4K su Plex", "components.TvDetails.opensonarr4k": "Apri la serie in 4K Sonarr", "components.TvDetails.opensonarr": "Apei la serie in Sonarr", "components.TvDetails.markavailable": "Segna come disponibile", @@ -495,9 +493,9 @@ "components.Settings.serverpresetRefreshing": "Recupero di server…", "components.Settings.serverpresetManualMessage": "Configurazione manuale", "components.TvDetails.nextAirDate": "Prossima data di messa in onda", - "components.TvDetails.mark4kavailable": "Segna 4K come disponibile", + "components.TvDetails.mark4kavailable": "Segna come disponibile in 4K", "components.Settings.trustProxyTip": "Permette a Overseerr di registrare correttamente gli indirizzi IP dei client dietro un proxy (Overseerr deve essere ricaricato perché le modifiche abbiano effetto)", - "components.Settings.settingUpPlexDescription": "Per impostare Plex, potete inserire i vostri dati manualmente o selezionare un server recuperato da plex.tv. Premi il pulsante a destra del menu a tendina per recuperare la lista di server disponibili.", + "components.Settings.settingUpPlexDescription": "Per impostare Plex, potete inserire i dati manualmente o selezionare un server recuperato da plex.tv. Premi il pulsante a destra del menu a tendina per recuperare la lista di server disponibili.", "components.Settings.Notifications.sendSilentlyTip": "Invia notifiche senza suono", "components.Settings.Notifications.sendSilently": "Invia silenziosamente", "components.UserList.sortCreated": "Data di creazione", @@ -667,7 +665,7 @@ "components.Settings.SettingsJobsCache.jobsandcache": "Processi e cache", "components.Settings.SettingsAbout.about": "Info", "components.ResetPassword.passwordreset": "Reimposta la password", - "components.Settings.enablessl": "Abilita SSL", + "components.Settings.enablessl": "Usa SSL", "components.Settings.SettingsLogs.logDetails": "Dettagli registro", "components.Settings.SettingsLogs.extraData": "Dati aggiuntivi", "components.Settings.SettingsLogs.copyToClipboard": "Copia negli appunti", @@ -847,5 +845,24 @@ "components.Settings.Notifications.NotificationsPushover.userTokenTip": "Il tuo identificatore utente o gruppo di 30 caratteri", "components.Settings.Notifications.NotificationsPushover.accessTokenTip": "Registra un'applicazione da usare con Overseerr", "components.Settings.Notifications.NotificationsPushbullet.accessTokenTip": "Crea un token dalle tue Impostazioni account", - "components.Settings.Notifications.toastDiscordTestFailed": "Invio della notifica di prova Discord non riuscito." + "components.Settings.Notifications.toastDiscordTestFailed": "Invio della notifica di prova Discord non riuscito.", + "components.Settings.Notifications.webhookUrlTip": "Crea un integrazione webhook nel server", + "components.Settings.Notifications.toastTelegramTestSuccess": "Notifica di prova con Telegram inviata!", + "components.Settings.Notifications.toastTelegramTestSending": "Invio notifica di prova con Telegram…", + "components.Settings.Notifications.toastTelegramTestFailed": "Impossibile inviare notifica di prova con Telegram.", + "components.Settings.Notifications.toastEmailTestSuccess": "Notifica email di prova inviata!", + "components.Settings.Notifications.toastEmailTestSending": "Invio notifica email di prova…", + "components.Settings.Notifications.toastEmailTestFailed": "Impossibile inviare la notifica email di prova.", + "components.Settings.Notifications.toastDiscordTestSending": "Invio della notifica Discord di prova…", + "components.Settings.Notifications.toastDiscordTestSuccess": "Notifica Discord di prova inviata!", + "components.UserList.localLoginDisabled": "L'impostazione Abilita Accesso Locale è attualmente disabilitata.", + "components.UserProfile.UserSettings.UserGeneralSettings.languageDefault": "Predefinito ({language})", + "components.Settings.webAppUrlTip": "Indirizza opzionalmente gli utenti alla web app sul tuo server invece che alla web app \"ospitata\"", + "components.Settings.Notifications.NotificationsLunaSea.webhookUrlTip": "La tua notifica webhook URL basata su utente o dispositivo", + "components.Settings.webAppUrl": "URL Web App", + "components.Settings.validationWebAppUrl": "Devi fornire un URL valido di Plex Web App", + "components.Settings.locale": "Lingua Interfaccia", + "components.Settings.SettingsUsers.newPlexLoginTip": "Permetti agli utenti di Plex di accedere senza essere prima importati", + "components.Settings.SettingsUsers.newPlexLogin": "Abilita accesso dei nuovi utenti Plex", + "components.Settings.Notifications.NotificationsWebPush.httpsRequirement": "Per ricevere le notifiche web push, Overseerr deve essere servito su HTTPS." } diff --git a/src/i18n/locale/ja.json b/src/i18n/locale/ja.json index 98047e0d..be2b1c8f 100644 --- a/src/i18n/locale/ja.json +++ b/src/i18n/locale/ja.json @@ -137,7 +137,6 @@ "components.Settings.plexsettingsDescription": "Plex サーバーの設定。Overseerr は、Plex サーバーを使用して、間隔をおいてライブラリをスキャンし、利用可能なコンテンツを確認します。", "components.Settings.port": "ポート", "components.Settings.radarrsettings": "Radarr 設定", - "components.Settings.servername": "サーバー名", "components.Settings.sonarrsettings": "Sonarr 設定", "components.Settings.ssl": "SSL", "components.Settings.startscan": "スキャンを開始", diff --git a/src/i18n/locale/nb_NO.json b/src/i18n/locale/nb_NO.json index 0ffdfdf1..20e8c0c7 100644 --- a/src/i18n/locale/nb_NO.json +++ b/src/i18n/locale/nb_NO.json @@ -137,7 +137,6 @@ "components.Settings.plexsettingsDescription": "Sett opp innstillingene for din Plex-tjener. Overseerr vil skanne de valgte bibliotekene på din Plex-tjener med jevne mellomrom for å se hvilket innhold som er tilgjengelig.", "components.Settings.port": "Port", "components.Settings.radarrsettings": "Radarr-innstillinger", - "components.Settings.servername": "Tjenernavn (automatisk valgt)", "components.Settings.sonarrsettings": "Sonarr-innstillinger", "components.Settings.ssl": "SSL", "components.Settings.startscan": "Start skanning", @@ -398,7 +397,6 @@ "components.UserList.deleteconfirm": "Er du sikker på at du ønsker å slette denne brukeren? All eksisterende forespørseldata for denne brukeren vil bli slettet.", "components.UserList.autogeneratepassword": "Generer passord automatisk", "components.TvDetails.allseasonsmarkedavailable": "* Alle sesonger vil bli merket som tilgjengelige.", - "components.Settings.servernameTip": "Hentet automatisk fra Plex etter lagring", "components.Settings.originallanguageTip": "Filtrer innhold basert på originalspråk", "components.Settings.originallanguage": "Oppdag-språk", "components.Settings.SettingsLogs.showall": "Vis all logg", diff --git a/src/i18n/locale/nl.json b/src/i18n/locale/nl.json index 233d6910..e40e49ea 100644 --- a/src/i18n/locale/nl.json +++ b/src/i18n/locale/nl.json @@ -75,7 +75,7 @@ "components.Settings.RadarrModal.selectRootFolder": "Hoofdmap selecteren", "components.Settings.RadarrModal.server4k": "4K-server", "components.Settings.RadarrModal.servername": "Servernaam", - "components.Settings.RadarrModal.ssl": "SSL inschakelen", + "components.Settings.RadarrModal.ssl": "SSL gebruiken", "components.Settings.RadarrModal.toastRadarrTestFailure": "Kon niet verbinden met Radarr.", "components.Settings.RadarrModal.toastRadarrTestSuccess": "Succesvol verbonden met Radarr-server!", "components.Settings.RadarrModal.validationApiKeyRequired": "Je moet een API-sleutel opgeven", @@ -98,7 +98,7 @@ "components.Settings.SonarrModal.selectRootFolder": "Hoofdmap selecteren", "components.Settings.SonarrModal.server4k": "4K-server", "components.Settings.SonarrModal.servername": "Servernaam", - "components.Settings.SonarrModal.ssl": "SSL inschakelen", + "components.Settings.SonarrModal.ssl": "SSL gebruiken", "components.Settings.SonarrModal.validationApiKeyRequired": "Je moet een API-sleutel opgeven", "components.Settings.SonarrModal.validationHostnameRequired": "Je moet een hostnaam of IP-adres opgeven", "components.Settings.SonarrModal.validationPortRequired": "Je moet een geldig poortnummer opgeven", @@ -137,7 +137,6 @@ "components.Settings.plexsettingsDescription": "Configureer de instellingen voor je Plex-server. Overseerr scant je Plex-bibliotheken om te zien welke content beschikbaar is.", "components.Settings.port": "Poort", "components.Settings.radarrsettings": "Radarr-instellingen", - "components.Settings.servername": "Servernaam", "components.Settings.sonarrsettings": "Sonarr-instellingen", "components.Settings.ssl": "SSL", "components.Settings.startscan": "Scan starten", @@ -344,7 +343,7 @@ "components.RequestModal.AdvancedRequester.destinationserver": "Doelserver", "components.RequestModal.AdvancedRequester.default": "{name} (Standaard)", "components.RequestModal.AdvancedRequester.animenote": "* Deze serie is anime.", - "components.RequestModal.AdvancedRequester.advancedoptions": "Geavanceerde opties", + "components.RequestModal.AdvancedRequester.advancedoptions": "Geavanceerd", "components.RequestBlock.server": "Doelserver", "components.RequestBlock.rootfolder": "Hoofdmap", "components.RequestBlock.profilechanged": "Kwaliteitsprofiel", @@ -405,7 +404,6 @@ "components.PermissionEdit.autoapprove": "Automatische goedkeuring", "components.PermissionEdit.advancedrequestDescription": "Toestemming geven om geavanceerde aanvraagopties te gebruiken.", "components.PermissionEdit.adminDescription": "Volledige beheerderstoegang. Omzeilt alle andere machtigingscontroles.", - "components.Settings.servernameTip": "Automatisch opgehaald van Plex na opslaan", "components.Settings.SonarrModal.toastSonarrTestSuccess": "Succesvol verbonden met Sonarr!", "components.Settings.SonarrModal.toastSonarrTestFailure": "Kon niet verbinden met Sonarr.", "components.TvDetails.playonplex": "Afspelen op Plex", @@ -671,7 +669,7 @@ "components.Settings.SettingsLogs.extraData": "Aanvullende gegevens", "components.Settings.SettingsLogs.copyToClipboard": "Naar klembord kopiëren", "components.Settings.SettingsLogs.copiedLogMessage": "Logbericht naar klembord gekopieerd.", - "components.Settings.enablessl": "SSL inschakelen", + "components.Settings.enablessl": "SSL gebruiken", "components.UserList.nouserstoimport": "Geen nieuwe gebruikers om te importeren uit Plex.", "components.PersonDetails.lifespan": "{birthdate} – {deathdate}", "components.PersonDetails.birthdate": "Geboren op {geboortedatum}", @@ -861,5 +859,8 @@ "components.Settings.Notifications.encryptionNone": "Geen", "components.Settings.Notifications.encryptionImplicitTls": "Impliciete TLS gebruiken", "components.Settings.Notifications.encryptionDefault": "STARTTLS gebruiken indien beschikbaar", - "components.Settings.Notifications.encryption": "Encryptiemethode" + "components.Settings.Notifications.encryption": "Encryptiemethode", + "components.Settings.webAppUrl": "URL van Web App", + "components.Settings.validationWebAppUrl": "U moet een geldige URL van de Plex Web App opgeven", + "components.Settings.webAppUrlTip": "Stuur gebruikers optioneel naar de web-app op uw server in plaats van de \"gehoste\" web-app" } diff --git a/src/i18n/locale/pt_BR.json b/src/i18n/locale/pt_BR.json index 6079906f..66f78d88 100644 --- a/src/i18n/locale/pt_BR.json +++ b/src/i18n/locale/pt_BR.json @@ -170,7 +170,6 @@ "components.Settings.startscan": "Iniciar Varredura", "components.Settings.ssl": "SSL", "components.Settings.sonarrsettings": "Configurações do Sonarr", - "components.Settings.servername": "Nome do Servidor", "components.Settings.radarrsettings": "Configurações do Radarr", "components.Settings.port": "Porta", "components.Settings.plexsettingsDescription": "Configure os dados de conexão com servidor Plex. Overseerr escanea suas bibliotecas do Plex em busca de novo conteúdo disponível.", @@ -405,7 +404,6 @@ "components.PermissionEdit.admin": "Administrador", "components.Login.signinwithplex": "Entrar com sua conta Plex", "components.Login.signinheader": "Autentique para continuar", - "components.Settings.servernameTip": "Obtido automaticamente do Plex após salvar", "components.Settings.SonarrModal.toastSonarrTestSuccess": "Conexão com Sonarr estabelecida com sucesso!", "components.Settings.SonarrModal.toastSonarrTestFailure": "Falha ao conectar-se ao Sonarr.", "components.TvDetails.opensonarr4k": "Abrir Série no Sonarr 4K", diff --git a/src/i18n/locale/pt_PT.json b/src/i18n/locale/pt_PT.json index 31111b8a..2028f356 100644 --- a/src/i18n/locale/pt_PT.json +++ b/src/i18n/locale/pt_PT.json @@ -231,7 +231,6 @@ "components.Settings.toastApiKeyFailure": "Algo errou gerando uma nova chave API.", "components.Settings.startscan": "Iniciar Scaneamento", "components.Settings.sonarrsettings": "Configurações do Sonarr", - "components.Settings.servername": "Nome do Servidor", "components.Settings.radarrsettings": "Configurações do Radarr", "components.Settings.port": "Porta", "components.Settings.plexsettingsDescription": "Define as configurações para o seu servidor Plex. Overseerr verifica suas bibliotecas Plex para determinar a disponibilidade de conteúdo.", @@ -407,7 +406,6 @@ "components.PermissionEdit.admin": "Administrador", "components.TvDetails.opensonarr4k": "Abrir série no Sonarr 4K", "components.TvDetails.opensonarr": "Abrir Série no Sonarr", - "components.Settings.servernameTip": "Obtido automaticamente do Plex após salvar", "components.Settings.SonarrModal.toastSonarrTestSuccess": "Conexão Sonarr estabelecida com sucesso!", "components.Settings.SonarrModal.toastSonarrTestFailure": "Falha ao conectar ao Sonarr.", "components.Settings.SonarrModal.syncEnabled": "Ativar Escaneamento", diff --git a/src/i18n/locale/ru.json b/src/i18n/locale/ru.json index 2ef443a2..60fc49a5 100644 --- a/src/i18n/locale/ru.json +++ b/src/i18n/locale/ru.json @@ -137,7 +137,6 @@ "components.Settings.plexsettingsDescription": "", "components.Settings.port": "Порт", "components.Settings.radarrsettings": "", - "components.Settings.servername": "Название сервера", "components.Settings.sonarrsettings": "", "components.Settings.ssl": "SSL", "components.Settings.startscan": "Начать сканирование", diff --git a/src/i18n/locale/sr.json b/src/i18n/locale/sr.json index c910211b..d67e5e28 100644 --- a/src/i18n/locale/sr.json +++ b/src/i18n/locale/sr.json @@ -62,7 +62,6 @@ "components.Settings.startscan": "Pokreni Skeniranje", "components.Settings.ssl": "SSL", "components.Settings.sonarrsettings": "Sonarr Podešavanja", - "components.Settings.servername": "Ime Servera (Automatski se podesi kada sačuvate)", "components.Settings.radarrsettings": "Radarr Podešavanja", "components.Settings.port": "Port", "components.Settings.plexsettingsDescription": "Konfigurišite podešavanja za Vaš Plex server. Overseerr koristi vaš Plex server da skenira vaš sadržaj u nekom intervalu da proveri šta je dostupno.", diff --git a/src/i18n/locale/sv.json b/src/i18n/locale/sv.json index 59f892a1..0df4f649 100644 --- a/src/i18n/locale/sv.json +++ b/src/i18n/locale/sv.json @@ -13,7 +13,6 @@ "components.Settings.startscan": "Starta scanning", "components.Settings.ssl": "SSL", "components.Settings.sonarrsettings": "Sonarrinställningar", - "components.Settings.servername": "Servernamn", "components.Settings.radarrsettings": "Radarrinställningar", "components.Settings.port": "Port", "components.Settings.plexsettingsDescription": "Konfigurera inställningarna för din Plex-server. Overseerr scannar din Plex-server för att avgöra om innehållet är tillgängligt.", @@ -55,7 +54,7 @@ "components.Settings.SonarrModal.validationApiKeyRequired": "Du måste ange en API-nyckel", "components.Settings.SonarrModal.testFirstRootFolders": "Testa anslutningen för att ladda in root-mapparna", "components.Settings.SonarrModal.testFirstQualityProfiles": "Testa anslutningen för att ladda in kvalitetsprofilerna", - "components.Settings.SonarrModal.ssl": "Aktivera SSL", + "components.Settings.SonarrModal.ssl": "Använd SSL", "components.Settings.SonarrModal.servername": "Servernamn", "components.Settings.SonarrModal.server4k": "4K Server", "components.Settings.SonarrModal.selectRootFolder": "Välj root-mapp", @@ -92,7 +91,7 @@ "components.Settings.RadarrModal.toastRadarrTestFailure": "Misslyckades att ansluta till Radarr.", "components.Settings.RadarrModal.testFirstRootFolders": "Testa anslutningen för att ladda in root-mapparna", "components.Settings.RadarrModal.testFirstQualityProfiles": "Testa anslutningen för att ladda in kvalitetsprofiler", - "components.Settings.RadarrModal.ssl": "Aktivera SSL", + "components.Settings.RadarrModal.ssl": "Använd SSL", "components.Settings.RadarrModal.servername": "Servernamn", "components.Settings.RadarrModal.server4k": "4K Server", "components.Settings.RadarrModal.selectRootFolder": "Välj root-mapp", @@ -350,7 +349,7 @@ "components.RequestModal.AdvancedRequester.destinationserver": "Destinationsserver", "components.RequestModal.AdvancedRequester.default": "{name} (Standard)", "components.RequestModal.AdvancedRequester.animenote": "* Denna serien är en anime.", - "components.RequestModal.AdvancedRequester.advancedoptions": "Avancerade Val", + "components.RequestModal.AdvancedRequester.advancedoptions": "Avancerat", "components.RequestBlock.server": "Destinationsserver", "components.RequestBlock.rootfolder": "Root-mapp", "components.RequestBlock.profilechanged": "Kvalitetsprofil", @@ -471,7 +470,6 @@ "components.Settings.SonarrModal.externalUrl": "Extern URL", "components.Settings.RadarrModal.syncEnabled": "Aktivera skanning", "components.Settings.RadarrModal.externalUrl": "Extern URL", - "components.Settings.servernameTip": "Automatiskt hämtad från Plex vid sparning", "components.Settings.SonarrModal.toastSonarrTestSuccess": "Sonarr-anslutning etablerad!", "components.Settings.SonarrModal.toastSonarrTestFailure": "Misslyckades att ansluta till Sonarr.", "components.Settings.toastPlexRefreshSuccess": "Hämtning av serverlistan från Plex lyckades!", @@ -671,7 +669,7 @@ "components.Settings.SettingsLogs.extraData": "Ytterligare data", "components.Settings.SettingsLogs.copyToClipboard": "Kopiera till urklipp", "components.Settings.SettingsLogs.copiedLogMessage": "Kopierat loggmeddelande till urklipp.", - "components.Settings.enablessl": "Aktivera SSL", + "components.Settings.enablessl": "Använd SSL", "components.UserList.nouserstoimport": "Inga nya användare importerade från Plex.", "components.PersonDetails.lifespan": "{birthdate} – {deathdate}", "components.PersonDetails.birthdate": "Född {birthdate}", @@ -861,5 +859,10 @@ "components.Settings.Notifications.NotificationsPushover.accessTokenTip": "Registrera en applikation för användning med Overseerr", "components.Settings.Notifications.NotificationsPushbullet.accessTokenTip": "Skapa en token från dina kontoinställningar", "components.Settings.Notifications.NotificationsLunaSea.webhookUrlTip": "Din användar- eller enhetsbaserade webbhook-URL för avisering", - "components.DownloadBlock.estimatedtime": "Beräknad tid}" + "components.DownloadBlock.estimatedtime": "Beräknad tid}", + "components.Settings.webAppUrlTip": "Alternativt dirigera användare till webbappen på din server istället för den \"värd\" webbappen", + "components.Settings.webAppUrl": "Webbapp URL", + "components.Settings.validationWebAppUrl": "Du måste ange en giltig webbadress för Plex-webbapp", + "components.UserList.localLoginDisabled": "Inställningen Aktivera lokal inloggning är för närvarande inaktiverad.", + "components.Settings.Notifications.NotificationsWebPush.httpsRequirement": "För att kunna ta emot push-notiser måste Overseerr serveras via HTTPS." } diff --git a/src/i18n/locale/zh_Hant.json b/src/i18n/locale/zh_Hant.json index 8f6dc96c..9da78694 100644 --- a/src/i18n/locale/zh_Hant.json +++ b/src/i18n/locale/zh_Hant.json @@ -2,7 +2,7 @@ "components.Settings.Notifications.webhookUrl": "網絡鉤手網址(URL)", "components.Settings.Notifications.NotificationsWebhook.webhookUrl": "網絡鉤手網址(URL)", "components.Settings.Notifications.NotificationsSlack.webhookUrl": "網絡鉤手網址(URL)", - "components.Settings.applicationurl": "應用程序網址(URL)", + "components.Settings.applicationurl": "應用程式網址(URL)", "components.Settings.SonarrModal.apiKey": "應用程式密鑰", "components.Settings.apikey": "應用程式密鑰", "components.Settings.RadarrModal.apiKey": "應用程式密鑰", @@ -14,8 +14,8 @@ "components.Settings.Notifications.agentenabled": "啟用通知", "components.Settings.Notifications.NotificationsSlack.agentenabled": "啟用通知", "components.Settings.Notifications.NotificationsPushover.agentenabled": "啟用通知", - "components.Settings.Notifications.validationSmtpPortRequired": "必須輸入有效通訊埠", - "components.Settings.Notifications.validationSmtpHostRequired": "必須輸入有效主機名稱或 IP 位址", + "components.Settings.Notifications.validationSmtpPortRequired": "請輸入有效的通訊埠", + "components.Settings.Notifications.validationSmtpHostRequired": "請輸入有效的主機名稱或 IP 位址", "components.Settings.Notifications.smtpPort": "SMTP 通訊埠", "components.Settings.Notifications.smtpHost": "SMTP 主機", "i18n.partiallyavailable": "部分可觀看", @@ -133,8 +133,8 @@ "components.MovieDetails.budget": "電影成本", "components.MovieDetails.MovieCrew.fullcrew": "製作群", "components.MovieDetails.MovieCast.fullcast": "演員陣容", - "components.Login.validationpasswordrequired": "必須輸入密碼", - "components.Login.validationemailrequired": "必須輸入有效電子郵件地址", + "components.Login.validationpasswordrequired": "請輸入您的密碼", + "components.Login.validationemailrequired": "請輸入有效的電子郵件地址", "components.Login.signinwithoverseerr": "使用您的 {applicationTitle} 帳戶", "components.Login.password": "密碼", "components.Login.loginerror": "登入中出了點問題。", @@ -233,20 +233,20 @@ "components.Settings.Notifications.NotificationsWebhook.resetPayload": "重置為默認", "components.Settings.Notifications.NotificationsWebhook.customJson": "JSON 有效負載", "components.Settings.Notifications.NotificationsWebhook.resetPayloadSuccess": "JSON 有效負載重設為默認負載成功!", - "components.Settings.Notifications.NotificationsPushover.validationUserTokenRequired": "必須輸入有效用戶令牌", + "components.Settings.Notifications.NotificationsPushover.validationUserTokenRequired": "請輸入有效的用戶或群組令牌", "components.Settings.menuJobs": "作業和快取", "components.Settings.toastApiKeyFailure": "生成應用程式密鑰出了點問題。", "components.Settings.toastSettingsFailure": "保存設置中出了點問題。", "components.UserList.deleteconfirm": "確定要刪除這個用戶嗎?此用戶的所有儲存資料將被清除。", "components.Settings.SettingsAbout.Releases.releasedataMissing": "無法獲取軟體版本資料。GitHub 崩潰了嗎?", "components.UserList.passwordinfodescription": "啟用電子郵件通知才能自動生成密碼。", - "components.Settings.Notifications.validationBotAPIRequired": "必須輸入 bot 機器人授權令牌", + "components.Settings.Notifications.validationBotAPIRequired": "請輸入機器人授權令牌", "components.Settings.Notifications.botAPI": "Bot 機器人授權令牌", "components.Settings.menuServices": "伺服器", "components.Settings.address": "網址", "components.Settings.ssl": "SSL", - "components.Settings.SonarrModal.ssl": "啟用安全通訊協定(SSL)", - "components.Settings.RadarrModal.ssl": "啟用安全通訊協定(SSL)", + "components.Settings.SonarrModal.ssl": "使用安全通訊協定(SSL)", + "components.Settings.RadarrModal.ssl": "使用安全通訊協定(SSL)", "components.Settings.port": "通訊埠", "components.Settings.SonarrModal.port": "通訊埠", "components.Settings.RadarrModal.port": "通訊埠", @@ -283,22 +283,22 @@ "components.TvDetails.similar": "類似", "components.RequestModal.requestfrom": "{username} 的請求待處理。", "components.Settings.toastApiKeySuccess": "生成新應用程式密鑰成功!", - "components.Settings.validationPortRequired": "必須輸入有效通訊埠", - "components.Settings.validationHostnameRequired": "必須輸入有效主機名稱或 IP 位址", - "components.Settings.SonarrModal.validationPortRequired": "必須輸入有效通訊埠", - "components.Settings.SonarrModal.validationNameRequired": "必須輸入伺服器名稱", - "components.Settings.SonarrModal.validationHostnameRequired": "必須輸入有效主機名稱或 IP 位址", - "components.Settings.RadarrModal.validationPortRequired": "必須輸入有效通訊埠", - "components.Settings.SonarrModal.validationApiKeyRequired": "必須輸入應用程式密鑰", - "components.Settings.RadarrModal.validationNameRequired": "必須輸入伺服器名稱", - "components.Settings.RadarrModal.validationHostnameRequired": "必須輸入有效主機名稱或 IP 位址", - "components.Settings.RadarrModal.validationApiKeyRequired": "必須輸入應用程式密鑰", - "components.Settings.Notifications.validationChatIdRequired": "必須輸入有效聊天室 ID", - "components.Settings.Notifications.NotificationsWebhook.validationJsonPayloadRequired": "必須輸入有效的 JSON 有效負載", + "components.Settings.validationPortRequired": "請輸入有效的通訊埠", + "components.Settings.validationHostnameRequired": "請輸入有效的主機名稱或 IP 位址", + "components.Settings.SonarrModal.validationPortRequired": "請輸入有效的通訊埠", + "components.Settings.SonarrModal.validationNameRequired": "請輸入伺服器名稱", + "components.Settings.SonarrModal.validationHostnameRequired": "請輸入有效的主機名稱或 IP 位址", + "components.Settings.RadarrModal.validationPortRequired": "請輸入有效的通訊埠", + "components.Settings.SonarrModal.validationApiKeyRequired": "請輸入應用程式密鑰", + "components.Settings.RadarrModal.validationNameRequired": "請輸入伺服器名稱", + "components.Settings.RadarrModal.validationHostnameRequired": "請輸入有效的主機名稱或 IP 位址", + "components.Settings.RadarrModal.validationApiKeyRequired": "請輸入應用程式密鑰", + "components.Settings.Notifications.validationChatIdRequired": "請輸入有效的聊天室 ID", + "components.Settings.Notifications.NotificationsWebhook.validationJsonPayloadRequired": "請輸入有效的 JSON 有效負載", "components.Settings.Notifications.NotificationsWebhook.authheader": "Authorization 頭欄位", "components.Settings.RadarrModal.minimumAvailability": "最低狀態", "components.Settings.Notifications.allowselfsigned": "允許自簽名證書", - "components.Settings.Notifications.NotificationsPushover.validationAccessTokenRequired": "必須輸入應用程式 API 令牌", + "components.Settings.Notifications.NotificationsPushover.validationAccessTokenRequired": "請輸入應用程式 API 令牌", "components.Settings.RadarrModal.hostname": "主機名稱或 IP 位址", "components.Settings.SonarrModal.hostname": "主機名稱或 IP 位址", "components.Settings.hostname": "主機名稱或 IP 位址", @@ -314,7 +314,6 @@ "components.UserList.create": "建立", "components.Settings.SonarrModal.createsonarr": "添加 Sonarr 伺服器", "components.Settings.RadarrModal.createradarr": "添加 Radarr 伺服器", - "components.Settings.servername": "伺服器名稱", "components.Settings.SonarrModal.servername": "伺服器名稱", "components.Settings.SonarrModal.editsonarr": "編輯 Sonarr 伺服器", "components.Settings.SonarrModal.add": "添加伺服器", @@ -339,7 +338,6 @@ "components.Login.signin": "登入", "components.Settings.SonarrModal.toastSonarrTestFailure": "Sonarr 伺服器連線失敗。", "components.Settings.serverpreset": "伺服器", - "components.Settings.servernameTip": "保存後自動設置", "components.RequestModal.autoapproval": "自動批准", "components.PermissionEdit.autoapproveSeries": "電視節目自動批准", "components.PermissionEdit.autoapproveMovies": "電影自動批准", @@ -425,7 +423,7 @@ "components.TvDetails.allseasonsmarkedavailable": "*每季將被標記為可觀看。", "components.Settings.csrfProtectionHoverTip": "除非您了解此功能,請勿啟用它!", "components.UserList.users": "用戶", - "components.Settings.applicationTitle": "應用程序名", + "components.Settings.applicationTitle": "應用程式名", "components.Search.search": "搜索", "components.Setup.setup": "配置", "components.Discover.discover": "探索", @@ -434,19 +432,19 @@ "components.Settings.RadarrModal.validationApplicationUrlTrailingSlash": "必須刪除結尾斜線", "components.Settings.SonarrModal.validationApplicationUrlTrailingSlash": "必須刪除結尾斜線", "components.Settings.validationApplicationUrlTrailingSlash": "必須刪除結尾斜線", - "components.Settings.validationApplicationTitle": "必須輸入應用程序名", - "components.Settings.validationApplicationUrl": "必須輸入有效網址", - "components.Settings.SonarrModal.validationApplicationUrl": "必須輸入有效網址", - "components.Settings.RadarrModal.validationApplicationUrl": "必須輸入有效網址", + "components.Settings.validationApplicationTitle": "請輸入應用程式名", + "components.Settings.validationApplicationUrl": "請輸入有效的網址", + "components.Settings.SonarrModal.validationApplicationUrl": "請輸入有效的網址", + "components.Settings.RadarrModal.validationApplicationUrl": "請輸入有效的網址", "components.PermissionEdit.viewrequests": "查看請求", "components.Settings.RadarrModal.validationBaseUrlLeadingSlash": "必須添加前置斜線", "components.Settings.SonarrModal.validationBaseUrlLeadingSlash": "必須添加前置斜線", "components.Settings.SonarrModal.validationBaseUrlTrailingSlash": "必須刪除結尾斜線", "components.Settings.RadarrModal.validationBaseUrlTrailingSlash": "必須刪除結尾斜線", - "components.UserList.validationEmail": "必須輸入有效電子郵件地址", - "components.Settings.Notifications.validationEmail": "必須輸入有效電子郵件地址", - "components.Settings.Notifications.NotificationsWebhook.validationWebhookUrl": "必須輸入有效網址", - "components.Settings.Notifications.NotificationsSlack.validationWebhookUrl": "必須輸入有效網址", + "components.UserList.validationEmail": "請輸入有效的電子郵件地址", + "components.Settings.Notifications.validationEmail": "請輸入有效的電子郵件地址", + "components.Settings.Notifications.NotificationsWebhook.validationWebhookUrl": "請輸入有效的網址", + "components.Settings.Notifications.NotificationsSlack.validationWebhookUrl": "請輸入有效的網址", "components.ResetPassword.confirmpassword": "確認密碼", "components.ResetPassword.emailresetlink": "發送密碼重設電子郵件", "components.ResetPassword.email": "電子郵件地址", @@ -454,8 +452,8 @@ "components.ResetPassword.resetpassword": "重設密碼", "components.ResetPassword.validationpasswordmatch": "密碼必須匹配", "components.ResetPassword.validationpasswordminchars": "密碼必須至少包含八個字符", - "components.ResetPassword.validationemailrequired": "必須輸入有效電子郵件地址", - "components.ResetPassword.validationpasswordrequired": "必須輸入密碼", + "components.ResetPassword.validationemailrequired": "請輸入有效的電子郵件地址", + "components.ResetPassword.validationpasswordrequired": "請輸入密碼", "components.ResetPassword.password": "密碼", "components.Login.forgotpassword": "忘記密碼?", "components.TvDetails.nextAirDate": "下一次播出日期", @@ -479,7 +477,7 @@ "components.PermissionEdit.autoapproveSeriesDescription": "自動批准非 4K 電視節目請求。", "components.PermissionEdit.autoapproveMoviesDescription": "自動批准非 4K 電影請求。", "components.PermissionEdit.autoapproveDescription": "自動批准所有非 4K 請求。", - "components.PermissionEdit.advancedrequestDescription": "授予使用進階請求設置的權限。", + "components.PermissionEdit.advancedrequestDescription": "授予使用進階請求選項的權限。", "components.PermissionEdit.adminDescription": "授予最高權限;旁路所有權限檢查。", "components.PermissionEdit.managerequestsDescription": "授予管理請求的權限,以及所有自動批准的權限。", "components.Settings.SettingsJobsCache.cacheDescription": "外部應用程式介面(external API)請求將存到快取記憶體,以減少 API 呼叫次數。", @@ -512,7 +510,7 @@ "components.UserList.edituser": "編輯用戶權限", "components.Settings.Notifications.NotificationsPushbullet.pushbulletSettingsFailed": "Pushbullet 通知設置保存失敗。", "components.Settings.Notifications.NotificationsPushbullet.pushbulletSettingsSaved": "Pushbullet 通知設置保存成功!", - "components.Settings.Notifications.NotificationsPushbullet.validationAccessTokenRequired": "必須輸入 API 令牌", + "components.Settings.Notifications.NotificationsPushbullet.validationAccessTokenRequired": "請輸入 API 令牌", "components.UserProfile.UserSettings.UserNotificationSettings.discordId": "用戶 ID", "components.UserProfile.ProfileHeader.profile": "個人檔案", "components.UserProfile.ProfileHeader.settings": "用戶設定", @@ -530,11 +528,11 @@ "components.UserProfile.UserSettings.UserPasswordChange.validationConfirmPassword": "密碼必須匹配", "components.UserProfile.UserSettings.UserPasswordChange.currentpassword": "當前的密碼", "components.UserProfile.UserSettings.UserPasswordChange.newpassword": "新密碼", - "components.UserProfile.UserSettings.UserPasswordChange.validationCurrentPassword": "必須輸入當前的密碼", - "components.UserProfile.UserSettings.UserPasswordChange.validationNewPassword": "必須輸入新密碼", + "components.UserProfile.UserSettings.UserPasswordChange.validationCurrentPassword": "請輸入當前的密碼", + "components.UserProfile.UserSettings.UserPasswordChange.validationNewPassword": "請輸入新密碼", "components.UserProfile.UserSettings.UserPasswordChange.toastSettingsSuccess": "密碼設置成功!", "components.RequestModal.SearchByNameModal.nosummary": "沒有概要。", - "components.UserProfile.UserSettings.UserNotificationSettings.validationDiscordId": "必須輸入有效用戶 ID", + "components.UserProfile.UserSettings.UserNotificationSettings.validationDiscordId": "請輸入有效的用戶 ID", "components.UserProfile.UserSettings.UserNotificationSettings.discordIdTip": "您的用戶身分證號碼", "components.UserProfile.UserSettings.UserPasswordChange.toastSettingsFailure": "重設密碼中出了點問題。", "components.RequestModal.SearchByNameModal.notvdbiddescription": "無法自動配對您的請求。請從以下列表中選擇正確的媒體項。", @@ -583,7 +581,7 @@ "components.Discover.DiscoverStudio.studioMovies": "{studio} 電影", "components.Discover.DiscoverMovieGenre.genreMovies": "{genre}電影", "i18n.loading": "載入中…", - "components.UserProfile.UserSettings.UserNotificationSettings.validationTelegramChatId": "必須輸入聊天室 ID", + "components.UserProfile.UserSettings.UserNotificationSettings.validationTelegramChatId": "請輸入聊天室 ID", "components.UserProfile.UserSettings.UserNotificationSettings.telegramChatId": "聊天室 ID", "components.UserProfile.UserSettings.UserNotificationSettings.sendSilently": "無聲通知", "components.UserProfile.UserSettings.UserNotificationSettings.sendSilentlyDescription": "發送沒有聲音警報的通知", @@ -591,7 +589,7 @@ "components.Settings.Notifications.botUsername": "Bot 機器人名", "components.Discover.NetworkSlider.networks": "電視網", "components.Discover.StudioSlider.studios": "製作公司", - "components.Settings.Notifications.validationUrl": "必須輸入有效網址", + "components.Settings.Notifications.validationUrl": "請輸入有效的網址", "components.Settings.Notifications.botAvatarUrl": "Bot 機器人頭像網址(URL)", "components.RequestList.RequestItem.modified": "最後修改者", "components.RequestList.RequestItem.modifieduserdate": "{user}({date})", @@ -671,7 +669,7 @@ "components.Settings.SettingsLogs.extraData": "附加數據", "components.Settings.SettingsLogs.copyToClipboard": "複製到剪貼板", "components.Settings.SettingsLogs.copiedLogMessage": "日誌訊息已複製到剪貼板。", - "components.Settings.enablessl": "啟用安全通訊協定(SSL)", + "components.Settings.enablessl": "使用安全通訊協定(SSL)", "components.UserList.nouserstoimport": "沒有未導入的 Plex 用戶。", "components.PersonDetails.birthdate": "{birthdate}-", "components.PersonDetails.lifespan": "{birthdate}-{deathdate}", @@ -765,9 +763,9 @@ "components.UserProfile.UserSettings.UserNotificationSettings.enableEmail": "啟用通知", "components.UserProfile.UserSettings.UserNotificationSettings.email": "電子郵件", "components.UserProfile.UserSettings.UserNotificationSettings.pgpPublicKeyTip": "使用 OpenPGP 電子郵件加密", - "components.Settings.Notifications.validationPgpPassword": "必須輸入 PGP 解密密碼", - "components.Settings.Notifications.validationPgpPrivateKey": "必須輸入有效 PGP 私鑰", - "components.UserProfile.UserSettings.UserNotificationSettings.validationPgpPublicKey": "必須輸入有效 PGP 公鑰", + "components.Settings.Notifications.validationPgpPassword": "請輸入 PGP 解密密碼", + "components.Settings.Notifications.validationPgpPrivateKey": "請輸入有效的 PGP 私鑰", + "components.UserProfile.UserSettings.UserNotificationSettings.validationPgpPublicKey": "請輸入有效的 PGP 公鑰", "components.UserProfile.UserSettings.UserNotificationSettings.pgpPublicKey": "PGP 公鑰", "components.RequestList.RequestItem.cancelRequest": "取消請求", "components.NotificationTypeSelector.notificationTypes": "通知類型", @@ -804,7 +802,7 @@ "components.Settings.Notifications.NotificationsLunaSea.settingsSaved": "LunaSea 通知設置保存成功!", "components.Settings.Notifications.NotificationsLunaSea.settingsFailed": "LunaSea 通知設置保存失敗。", "components.Settings.Notifications.NotificationsLunaSea.webhookUrl": "網絡鉤手網址(URL)", - "components.Settings.Notifications.NotificationsLunaSea.validationWebhookUrl": "必須輸入有效網址", + "components.Settings.Notifications.NotificationsLunaSea.validationWebhookUrl": "請輸入有效的網址", "components.Settings.Notifications.NotificationsLunaSea.agentenabled": "啟用通知", "components.Settings.is4k": "4K", "components.UserProfile.UserSettings.UserNotificationSettings.webpushsettingsfailed": "網絡推送知設置保存失敗。", @@ -861,5 +859,10 @@ "components.Settings.Notifications.NotificationsLunaSea.webhookUrlTip": "用戶或設備通知的網絡鉤手網址", "components.Settings.Notifications.webhookUrlTip": "在您的服務器裡創建一個網絡鉤手", "components.Settings.Notifications.botApiTip": "建立一個 Overseerr 專用的機器人", - "components.Settings.Notifications.chatIdTip": "先與您的機器人建立一個聊天室以及把 @get_id_bot 也加到聊天室,然後在聊天室裡發出 /my_id 命令" + "components.Settings.Notifications.chatIdTip": "先與您的機器人建立一個聊天室以及把 @get_id_bot 也加到聊天室,然後在聊天室裡發出 /my_id 命令", + "components.Settings.webAppUrlTip": "使用伺服器的網絡應用代替「託管」的網絡應用", + "components.Settings.webAppUrl": "網絡應用網址(URL)", + "components.Settings.validationWebAppUrl": "請輸入有效的 Plex 網絡應用網址", + "components.Settings.Notifications.NotificationsWebPush.httpsRequirement": "Overseerr 必須通過 HTTPS 投放才能使用網絡推送通知。", + "components.UserList.localLoginDisabled": "允許本地登錄的設置目前被禁用。" } From d0703aa37772759e8e28b5da7187e97e7aadc495 Mon Sep 17 00:00:00 2001 From: Jabster28 <29015942+Jabster28@users.noreply.github.com> Date: Tue, 11 May 2021 02:58:27 +0100 Subject: [PATCH 11/73] fix: switch PGP regex to span multiple lines (#1598) * fix: switch PGP regex to span multiple lines * also change the regex in this file --- src/components/Settings/Notifications/NotificationsEmail.tsx | 2 +- .../UserNotificationSettings/UserNotificationsEmail.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/Settings/Notifications/NotificationsEmail.tsx b/src/components/Settings/Notifications/NotificationsEmail.tsx index d7e45491..71a8e230 100644 --- a/src/components/Settings/Notifications/NotificationsEmail.tsx +++ b/src/components/Settings/Notifications/NotificationsEmail.tsx @@ -108,7 +108,7 @@ const NotificationsEmail: React.FC = () => { otherwise: Yup.string().nullable(), }) .matches( - /^-----BEGIN PGP PRIVATE KEY BLOCK-----.+-----END PGP PRIVATE KEY BLOCK-----$/, + /-----BEGIN PGP PRIVATE KEY BLOCK-----.+-----END PGP PRIVATE KEY BLOCK-----/s, intl.formatMessage(messages.validationPgpPrivateKey) ), pgpPassword: Yup.string().when('pgpPrivateKey', { diff --git a/src/components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsEmail.tsx b/src/components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsEmail.tsx index b8123c90..bac478e2 100644 --- a/src/components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsEmail.tsx +++ b/src/components/UserProfile/UserSettings/UserNotificationSettings/UserNotificationsEmail.tsx @@ -38,7 +38,7 @@ const UserEmailSettings: React.FC = () => { pgpKey: Yup.string() .nullable() .matches( - /^-----BEGIN PGP PUBLIC KEY BLOCK-----.+-----END PGP PUBLIC KEY BLOCK-----$/, + /-----BEGIN PGP PUBLIC KEY BLOCK-----.+-----END PGP PUBLIC KEY BLOCK-----/s, intl.formatMessage(messages.validationPgpPublicKey) ), }); From b0fd29e33ecc27089ebdedbdfb3dd874eba00986 Mon Sep 17 00:00:00 2001 From: "allcontributors[bot]" <46447321+allcontributors[bot]@users.noreply.github.com> Date: Tue, 11 May 2021 10:59:07 +0900 Subject: [PATCH 12/73] docs: add Jabster28 as a contributor (#1617) [skip ci] * docs: update README.md [skip ci] * docs: update .all-contributorsrc [skip ci] Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com> --- .all-contributorsrc | 9 +++++++++ README.md | 3 ++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/.all-contributorsrc b/.all-contributorsrc index 7902f4aa..0588c343 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -467,6 +467,15 @@ "contributions": [ "translation" ] + }, + { + "login": "Jabster28", + "name": "Jabster28", + "avatar_url": "https://avatars.githubusercontent.com/u/29015942?v=4", + "profile": "https://github.com/Jabster28", + "contributions": [ + "code" + ] } ], "badgeTemplate": "\"All-orange.svg\"/>", diff --git a/README.md b/README.md index 3bd9f66e..8c8017b6 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ Language grade: JavaScript GitHub -All Contributors +All Contributors

@@ -139,6 +139,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
Dabu-dot

🌍 +
Jabster28

💻 From 6968caa35a70c172bdd57c984fde6cb6a04a1470 Mon Sep 17 00:00:00 2001 From: TheCatLady <52870424+TheCatLady@users.noreply.github.com> Date: Thu, 13 May 2021 07:44:08 -0400 Subject: [PATCH 13/73] fix(ui): apply pointer cursor style for clickable status badges (#1632) --- src/components/StatusBadge/index.tsx | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/components/StatusBadge/index.tsx b/src/components/StatusBadge/index.tsx index 818e7654..ece5a512 100644 --- a/src/components/StatusBadge/index.tsx +++ b/src/components/StatusBadge/index.tsx @@ -1,9 +1,9 @@ import React from 'react'; -import { MediaStatus } from '../../../server/constants/media'; -import Badge from '../Common/Badge'; import { defineMessages, useIntl } from 'react-intl'; -import globalMessages from '../../i18n/globalMessages'; +import { MediaStatus } from '../../../server/constants/media'; import Spinner from '../../assets/spinner.svg'; +import globalMessages from '../../i18n/globalMessages'; +import Badge from '../Common/Badge'; const messages = defineMessages({ status4k: '4K {status}', @@ -34,7 +34,7 @@ const StatusBadge: React.FC = ({ {intl.formatMessage(messages.status4k, { status: intl.formatMessage(globalMessages.available), @@ -57,7 +57,7 @@ const StatusBadge: React.FC = ({ {intl.formatMessage(messages.status4k, { status: intl.formatMessage(globalMessages.partiallyavailable), @@ -109,7 +109,7 @@ const StatusBadge: React.FC = ({
{intl.formatMessage(globalMessages.available)} @@ -134,7 +134,7 @@ const StatusBadge: React.FC = ({
From d7b9b1a525ec6d1d81ad6fe4e55994dd8428988f Mon Sep 17 00:00:00 2001 From: TheCatLady <52870424+TheCatLady@users.noreply.github.com> Date: Thu, 13 May 2021 07:51:20 -0400 Subject: [PATCH 14/73] feat(ui): request list item & request card improvements (#1532) * feat(ui): add additional request card buttons * feat(ui): add year to request list items & request cards * fix(ui): do not show edit button conditionally, and don't hide modifiedBy user * revert: do not unhide season list for reg users on mobile --- src/components/RequestCard/index.tsx | 410 ++++++++++++------ .../RequestList/RequestItem/index.tsx | 141 +++--- src/i18n/locale/en.json | 2 + src/styles/globals.css | 2 +- 4 files changed, 359 insertions(+), 196 deletions(-) diff --git a/src/components/RequestCard/index.tsx b/src/components/RequestCard/index.tsx index afa6216e..2c23a43d 100644 --- a/src/components/RequestCard/index.tsx +++ b/src/components/RequestCard/index.tsx @@ -1,9 +1,16 @@ -import { CheckIcon, TrashIcon, XIcon } from '@heroicons/react/solid'; +import { + CheckIcon, + PencilIcon, + RefreshIcon, + TrashIcon, + XIcon, +} from '@heroicons/react/solid'; import axios from 'axios'; import Link from 'next/link'; -import React, { useEffect } from 'react'; +import React, { useEffect, useState } from 'react'; import { useInView } from 'react-intersection-observer'; import { defineMessages, useIntl } from 'react-intl'; +import { useToasts } from 'react-toast-notifications'; import useSWR, { mutate } from 'swr'; import { MediaRequestStatus, @@ -18,10 +25,12 @@ import { withProperties } from '../../utils/typeHelpers'; import Badge from '../Common/Badge'; import Button from '../Common/Button'; import CachedImage from '../Common/CachedImage'; +import RequestModal from '../RequestModal'; import StatusBadge from '../StatusBadge'; const messages = defineMessages({ seasons: '{seasonCount, plural, one {Season} other {Seasons}}', + failedretry: 'Something went wrong while retrying the request.', mediaerror: 'The associated title for this request is no longer available.', deleterequest: 'Delete Request', }); @@ -89,7 +98,10 @@ const RequestCard: React.FC = ({ request, onTitleData }) => { triggerOnce: true, }); const intl = useIntl(); - const { hasPermission } = useUser(); + const { user, hasPermission } = useUser(); + const { addToast } = useToasts(); + const [isRetrying, setRetrying] = useState(false); + const [showEditModal, setShowEditModal] = useState(false); const url = request.type === 'movie' ? `/api/v1/movie/${request.media.tmdbId}` @@ -113,6 +125,30 @@ const RequestCard: React.FC = ({ request, onTitleData }) => { } }; + const deleteRequest = async () => { + await axios.delete(`/api/v1/request/${request.id}`); + mutate('/api/v1/request?filter=all&take=10&sort=modified&skip=0'); + }; + + const retryRequest = async () => { + setRetrying(true); + + try { + const response = await axios.post(`/api/v1/request/${request.id}/retry`); + + if (response) { + revalidate(); + } + } catch (e) { + addToast(intl.formatMessage(messages.failedretry), { + autoDismiss: true, + appearance: 'error', + }); + } finally { + setRetrying(false); + } + }; + useEffect(() => { if (title && onTitleData) { onTitleData(request.id, title); @@ -136,25 +172,224 @@ const RequestCard: React.FC = ({ request, onTitleData }) => { } return ( -
- {title.backdropPath && ( -
- -
+ <> + setShowEditModal(false)} + onComplete={() => { + revalidate(); + setShowEditModal(false); + }} + /> +
+ {title.backdropPath && ( +
+ +
+
+ )} +
+
+ {(isMovie(title) ? title.releaseDate : title.firstAirDate)?.slice( + 0, + 4 + )} +
+ +
+ {isMovie(title) ? title.title : title.name} + + + {hasPermission( + [Permission.MANAGE_REQUESTS, Permission.REQUEST_VIEW], + { type: 'or' } + ) && ( + + )} + {!isMovie(title) && request.seasons.length > 0 && ( +
+ + {intl.formatMessage(messages.seasons, { + seasonCount: + title.seasons.filter((season) => season.seasonNumber !== 0) + .length === request.seasons.length + ? 0 + : request.seasons.length, + })} + + {title.seasons.filter((season) => season.seasonNumber !== 0) + .length === request.seasons.length ? ( + + {intl.formatMessage(globalMessages.all)} + + ) : ( +
+ {request.seasons.map((season) => ( + + {season.seasonNumber} + + ))} +
+ )} +
+ )} +
+ + {intl.formatMessage(globalMessages.status)} + + {requestData.media[requestData.is4k ? 'status4k' : 'status'] === + MediaStatus.UNKNOWN || + requestData.status === MediaRequestStatus.DECLINED ? ( + + {requestData.status === MediaRequestStatus.DECLINED + ? intl.formatMessage(globalMessages.declined) + : intl.formatMessage(globalMessages.failed)} + + ) : ( + 0 + } + is4k={requestData.is4k} + plexUrl={requestData.media.plexUrl} + plexUrl4k={requestData.media.plexUrl4k} + /> + )} +
+
+ {requestData.media[requestData.is4k ? 'status4k' : 'status'] === + MediaStatus.UNKNOWN && + requestData.status !== MediaRequestStatus.DECLINED && + hasPermission(Permission.MANAGE_REQUESTS) && ( + + )} + {requestData.status !== MediaRequestStatus.PENDING && + hasPermission(Permission.MANAGE_REQUESTS) && ( + + )} + {requestData.status === MediaRequestStatus.PENDING && + hasPermission(Permission.MANAGE_REQUESTS) && ( + <> + + + + )} + {requestData.status === MediaRequestStatus.PENDING && + !hasPermission(Permission.MANAGE_REQUESTS) && + requestData.requestedBy.id === user?.id && + (requestData.type === 'tv' || + hasPermission(Permission.REQUEST_ADVANCED)) && ( + + )} + {requestData.status === MediaRequestStatus.PENDING && + !hasPermission(Permission.MANAGE_REQUESTS) && + requestData.requestedBy.id === user?.id && ( + + )} +
- )} -
= ({ request, onTitleData }) => { : `/tv/${requestData.media.tmdbId}` } > - - {isMovie(title) ? title.title : title.name} + + - - {!isMovie(title) && request.seasons.length > 0 && ( -
- - {intl.formatMessage(messages.seasons, { - seasonCount: - title.seasons.filter((season) => season.seasonNumber !== 0) - .length === request.seasons.length - ? 0 - : request.seasons.length, - })} - - {title.seasons.filter((season) => season.seasonNumber !== 0) - .length === request.seasons.length ? ( - - {intl.formatMessage(globalMessages.all)} - - ) : ( -
- {request.seasons.map((season) => ( - - {season.seasonNumber} - - ))} -
- )} -
- )} -
- - {intl.formatMessage(globalMessages.status)} - - {requestData.media[requestData.is4k ? 'status4k' : 'status'] === - MediaStatus.UNKNOWN || - requestData.status === MediaRequestStatus.DECLINED ? ( - - {requestData.status === MediaRequestStatus.DECLINED - ? intl.formatMessage(globalMessages.declined) - : intl.formatMessage(globalMessages.failed)} - - ) : ( - 0 - } - is4k={requestData.is4k} - plexUrl={requestData.media.plexUrl} - plexUrl4k={requestData.media.plexUrl4k} - /> - )} -
- {requestData.status === MediaRequestStatus.PENDING && - hasPermission(Permission.MANAGE_REQUESTS) && ( -
- - -
- )}
- - - - - -
+ ); }; diff --git a/src/components/RequestList/RequestItem/index.tsx b/src/components/RequestList/RequestItem/index.tsx index 6642f54d..8127eeb2 100644 --- a/src/components/RequestList/RequestItem/index.tsx +++ b/src/components/RequestList/RequestItem/index.tsx @@ -32,6 +32,7 @@ const messages = defineMessages({ seasons: '{seasonCount, plural, one {Season} other {Seasons}}', failedretry: 'Something went wrong while retrying the request.', requested: 'Requested', + requesteddate: 'Requested', modified: 'Modified', modifieduserdate: '{date} by {user}', mediaerror: 'The associated title for this request is no longer available.', @@ -219,33 +220,23 @@ const RequestItem: React.FC = ({
- -
- - - - - {requestData.requestedBy.displayName} - - - +
+ {(isMovie(title) + ? title.releaseDate + : title.firstAirDate + )?.slice(0, 4)}
+ + + {isMovie(title) ? title.title : title.name} + + {!isMovie(title) && request.seasons.length > 0 && (
@@ -276,7 +267,7 @@ const RequestItem: React.FC = ({ )}
-
+
{intl.formatMessage(globalMessages.status)} @@ -308,29 +299,20 @@ const RequestItem: React.FC = ({ )}
- - {intl.formatMessage(messages.requested)} - - - {intl.formatDate(requestData.createdAt, { - year: 'numeric', - month: 'long', - day: 'numeric', - })} - -
-
- - {intl.formatMessage(messages.modified)} - - - {requestData.modifiedBy ? ( - + {hasPermission( + [Permission.MANAGE_REQUESTS, Permission.REQUEST_VIEW], + { type: 'or' } + ) ? ( + <> + + {intl.formatMessage(messages.requested)} + + {intl.formatMessage(messages.modifieduserdate, { date: ( = ({ /> ), user: ( - - + + - {requestData.modifiedBy.displayName} + {requestData.requestedBy.displayName} ), })} - ) : ( - N/A - )} - + + ) : ( + <> + + {intl.formatMessage(messages.requesteddate)} + + + + + + )}
+ {requestData.modifiedBy && ( +
+ + {intl.formatMessage(messages.modified)} + + + {intl.formatMessage(messages.modifieduserdate, { + date: ( + + ), + user: ( + + + + + {requestData.modifiedBy.displayName} + + + + ), + })} + +
+ )}
diff --git a/src/i18n/locale/en.json b/src/i18n/locale/en.json index 8e12649c..f5a53089 100644 --- a/src/i18n/locale/en.json +++ b/src/i18n/locale/en.json @@ -168,6 +168,7 @@ "components.RequestButton.viewrequest": "View Request", "components.RequestButton.viewrequest4k": "View 4K Request", "components.RequestCard.deleterequest": "Delete Request", + "components.RequestCard.failedretry": "Something went wrong while retrying the request.", "components.RequestCard.mediaerror": "The associated title for this request is no longer available.", "components.RequestCard.seasons": "{seasonCount, plural, one {Season} other {Seasons}}", "components.RequestList.RequestItem.cancelRequest": "Cancel Request", @@ -178,6 +179,7 @@ "components.RequestList.RequestItem.modified": "Modified", "components.RequestList.RequestItem.modifieduserdate": "{date} by {user}", "components.RequestList.RequestItem.requested": "Requested", + "components.RequestList.RequestItem.requesteddate": "Requested", "components.RequestList.RequestItem.seasons": "{seasonCount, plural, one {Season} other {Seasons}}", "components.RequestList.requests": "Requests", "components.RequestList.showallrequests": "Show All Requests", diff --git a/src/styles/globals.css b/src/styles/globals.css index 73e5ef20..c18260b9 100644 --- a/src/styles/globals.css +++ b/src/styles/globals.css @@ -198,7 +198,7 @@ img.avatar-sm { } .card-field { - @apply flex items-center py-0.5 sm:py-1 text-sm; + @apply flex items-center py-0.5 sm:py-1 text-sm truncate; } .card-field-name { From 4e484282f001bc3f92e503c1e23865976061be06 Mon Sep 17 00:00:00 2001 From: sct Date: Thu, 13 May 2021 23:44:23 +0900 Subject: [PATCH 15/73] build(deps): bump dependencies --- .github/workflows/ci.yml | 16 +- .github/workflows/deploy_docs.yml | 4 +- .github/workflows/invalid_template.yml | 2 +- .github/workflows/preview.yml | 12 +- .github/workflows/release.yml | 20 +- .github/workflows/snap.yaml | 10 +- .github/workflows/support.yml | 2 +- package.json | 28 +- yarn.lock | 499 ++++++++++++------------- 9 files changed, 293 insertions(+), 300 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7e1212b5..649694c6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,7 +15,7 @@ jobs: container: node:14.16-alpine steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v2.3.4 - name: Install dependencies env: HUSKY_SKIP_INSTALL: 1 @@ -32,11 +32,11 @@ jobs: runs-on: ubuntu-20.04 steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v2.3.4 - name: Set up QEMU - uses: docker/setup-qemu-action@v1 + uses: docker/setup-qemu-action@v1.1.0 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v1 + uses: docker/setup-buildx-action@v1.3.0 - name: Cache Docker layers uses: actions/cache@v2.1.5 with: @@ -45,18 +45,18 @@ jobs: restore-keys: | ${{ runner.os }}-buildx- - name: Log in to Docker Hub - uses: docker/login-action@v1 + uses: docker/login-action@v1.9.0 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_TOKEN }} - name: Log in to GitHub Container Registry - uses: docker/login-action@v1 + uses: docker/login-action@v1.9.0 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push - uses: docker/build-push-action@v2 + uses: docker/build-push-action@v2.4.0 with: context: . file: ./Dockerfile @@ -86,7 +86,7 @@ jobs: runs-on: ubuntu-20.04 steps: - name: Get Build Job Status - uses: technote-space/workflow-conclusion-action@v2.1.5 + uses: technote-space/workflow-conclusion-action@v2.1.6 - name: Combine Job Status id: status run: | diff --git a/.github/workflows/deploy_docs.yml b/.github/workflows/deploy_docs.yml index 13e3e01d..809d4706 100644 --- a/.github/workflows/deploy_docs.yml +++ b/.github/workflows/deploy_docs.yml @@ -11,12 +11,12 @@ jobs: steps: - uses: actions/checkout@v2 - name: Generate Swagger UI - uses: Legion2/swagger-ui-action@v1 + uses: Legion2/swagger-ui-action@v1.1.2 with: output: swagger-ui spec-file: overseerr-api.yml - name: Deploy to GitHub Pages - uses: peaceiris/actions-gh-pages@v3 + uses: peaceiris/actions-gh-pages@v3.8.0 with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: swagger-ui diff --git a/.github/workflows/invalid_template.yml b/.github/workflows/invalid_template.yml index 641b1d6a..24f95d74 100644 --- a/.github/workflows/invalid_template.yml +++ b/.github/workflows/invalid_template.yml @@ -8,7 +8,7 @@ jobs: support: runs-on: ubuntu-20.04 steps: - - uses: dessant/support-requests@v2 + - uses: dessant/support-requests@v2.0.1 with: github-token: ${{ github.token }} support-label: 'invalid:template-incomplete' diff --git a/.github/workflows/preview.yml b/.github/workflows/preview.yml index 9f05f86e..e7d40b57 100644 --- a/.github/workflows/preview.yml +++ b/.github/workflows/preview.yml @@ -11,27 +11,27 @@ jobs: runs-on: ubuntu-20.04 steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v2.3.4 - name: Get the version id: get_version run: echo ::set-output name=VERSION::${GITHUB_REF#refs/tags/} - name: Set up QEMU - uses: docker/setup-qemu-action@v1 + uses: docker/setup-qemu-action@v1.1.0 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v1 + uses: docker/setup-buildx-action@v1.3.0 - name: Log in to Docker Hub - uses: docker/login-action@v1 + uses: docker/login-action@v1.9.0 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_TOKEN }} - name: Log in to GitHub Container Registry - uses: docker/login-action@v1 + uses: docker/login-action@v1.9.0 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push - uses: docker/build-push-action@v2 + uses: docker/build-push-action@v2.4.0 with: context: . file: ./Dockerfile diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8ff0fbb7..984b8079 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -12,7 +12,7 @@ jobs: container: node:14.16-alpine steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v2.3.4 - name: Install dependencies env: HUSKY_SKIP_INSTALL: 1 @@ -28,7 +28,7 @@ jobs: runs-on: ubuntu-20.04 steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v2.3.4 with: fetch-depth: 0 - name: Set up Node.js @@ -36,16 +36,16 @@ jobs: with: node-version: 14 - name: Set up QEMU - uses: docker/setup-qemu-action@v1 + uses: docker/setup-qemu-action@v1.1.0 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v1 + uses: docker/setup-buildx-action@v1.3.0 - name: Log in to Docker Hub - uses: docker/login-action@v1 + uses: docker/login-action@v1.9.0 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_TOKEN }} - name: Log in to GitHub Container Registry - uses: docker/login-action@v1 + uses: docker/login-action@v1.9.0 with: registry: ghcr.io username: ${{ github.repository_owner }} @@ -72,7 +72,7 @@ jobs: - armhf steps: - name: Checkout Code - uses: actions/checkout@v2 + uses: actions/checkout@v2.3.4 with: fetch-depth: 0 - name: Switch to master branch @@ -89,7 +89,7 @@ jobs: echo ::set-output name=RELEASE::edge fi - name: Set Up QEMU - uses: docker/setup-qemu-action@v1 + uses: docker/setup-qemu-action@v1.1.0 with: image: tonistiigi/binfmt@sha256:df15403e06a03c2f461c1f7938b171fda34a5849eb63a70e2a2109ed5a778bde - name: Build Snap Package @@ -103,7 +103,7 @@ jobs: name: overseerr-snap-package-${{ matrix.architecture }} path: ${{ steps.build.outputs.snap }} - name: Review Snap Package - uses: diddlesnaps/snapcraft-review-tools-action@v1.2.0 + uses: diddlesnaps/snapcraft-review-tools-action@v1.3.0 with: snap: ${{ steps.build.outputs.snap }} - name: Publish Snap Package @@ -120,7 +120,7 @@ jobs: runs-on: ubuntu-20.04 steps: - name: Get Build Job Status - uses: technote-space/workflow-conclusion-action@v2.1.5 + uses: technote-space/workflow-conclusion-action@v2.1.6 - name: Combine Job Status id: status run: | diff --git a/.github/workflows/snap.yaml b/.github/workflows/snap.yaml index b0b5a399..658a8b65 100644 --- a/.github/workflows/snap.yaml +++ b/.github/workflows/snap.yaml @@ -23,7 +23,7 @@ jobs: container: node:14.16-alpine steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v2.3.4 - name: Install dependencies env: HUSKY_SKIP_INSTALL: 1 @@ -46,7 +46,7 @@ jobs: - armhf steps: - name: Checkout Code - uses: actions/checkout@v2 + uses: actions/checkout@v2.3.4 - name: Prepare id: prepare run: | @@ -57,7 +57,7 @@ jobs: echo ::set-output name=RELEASE::edge fi - name: Set Up QEMU - uses: docker/setup-qemu-action@v1 + uses: docker/setup-qemu-action@v1.1.0 with: image: tonistiigi/binfmt@sha256:df15403e06a03c2f461c1f7938b171fda34a5849eb63a70e2a2109ed5a778bde - name: Build Snap Package @@ -71,7 +71,7 @@ jobs: name: overseerr-snap-package-${{ matrix.architecture }} path: ${{ steps.build.outputs.snap }} - name: Review Snap Package - uses: diddlesnaps/snapcraft-review-tools-action@v1.2.0 + uses: diddlesnaps/snapcraft-review-tools-action@v1.3.0 with: snap: ${{ steps.build.outputs.snap }} - name: Publish Snap Package @@ -88,7 +88,7 @@ jobs: runs-on: ubuntu-20.04 steps: - name: Get Build Job Status - uses: technote-space/workflow-conclusion-action@v2.1.5 + uses: technote-space/workflow-conclusion-action@v2.1.6 - name: Combine Job Status id: status run: | diff --git a/.github/workflows/support.yml b/.github/workflows/support.yml index 9c4bf49e..42882134 100644 --- a/.github/workflows/support.yml +++ b/.github/workflows/support.yml @@ -8,7 +8,7 @@ jobs: support: runs-on: ubuntu-20.04 steps: - - uses: dessant/support-requests@v2 + - uses: dessant/support-requests@v2.0.1 with: github-token: ${{ github.token }} support-label: 'support' diff --git a/package.json b/package.json index 5e87a945..1cacbf48 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ }, "license": "MIT", "dependencies": { - "@headlessui/react": "^1.1.1", + "@headlessui/react": "^1.2.0", "@heroicons/react": "^1.0.1", "@supercharge/request-ip": "^1.1.2", "@svgr/webpack": "^5.5.0", @@ -53,9 +53,9 @@ "react-animate-height": "^2.0.23", "react-dom": "17.0.2", "react-intersection-observer": "^8.31.1", - "react-intl": "5.17.4", + "react-intl": "5.17.5", "react-markdown": "^6.0.2", - "react-select": "^4.3.0", + "react-select": "^4.3.1", "react-spring": "^8.0.27", "react-toast-notifications": "^2.4.4", "react-transition-group": "^4.4.1", @@ -77,8 +77,8 @@ }, "devDependencies": { "@babel/cli": "^7.13.16", - "@commitlint/cli": "^12.1.1", - "@commitlint/config-conventional": "^12.1.1", + "@commitlint/cli": "^12.1.4", + "@commitlint/config-conventional": "^12.1.4", "@semantic-release/changelog": "^5.0.1", "@semantic-release/commit-analyzer": "^8.0.1", "@semantic-release/exec": "^5.0.0", @@ -86,7 +86,7 @@ "@tailwindcss/aspect-ratio": "^0.2.0", "@tailwindcss/forms": "^0.3.2", "@tailwindcss/typography": "^0.4.0", - "@types/bcrypt": "^3.0.1", + "@types/bcrypt": "^5.0.0", "@types/body-parser": "^1.19.0", "@types/cookie-parser": "^1.4.2", "@types/country-flag-icons": "^1.2.0", @@ -95,12 +95,12 @@ "@types/express": "^4.17.11", "@types/express-rate-limit": "^5.1.1", "@types/express-session": "^1.17.3", - "@types/lodash": "^4.14.168", - "@types/node": "^15.0.2", + "@types/lodash": "^4.14.169", + "@types/node": "^15.0.3", "@types/node-schedule": "^1.3.1", "@types/nodemailer": "^6.4.1", "@types/react": "^17.0.5", - "@types/react-dom": "^17.0.3", + "@types/react-dom": "^17.0.5", "@types/react-select": "^4.0.15", "@types/react-toast-notifications": "^2.4.0", "@types/react-transition-group": "^4.4.1", @@ -111,8 +111,8 @@ "@types/xml2js": "^0.4.8", "@types/yamljs": "^0.2.31", "@types/yup": "^0.29.11", - "@typescript-eslint/eslint-plugin": "^4.22.1", - "@typescript-eslint/parser": "^4.22.1", + "@typescript-eslint/eslint-plugin": "^4.23.0", + "@typescript-eslint/parser": "^4.23.0", "autoprefixer": "^10.2.5", "babel-plugin-react-intl": "^8.2.25", "babel-plugin-react-intl-auto": "^3.3.0", @@ -121,7 +121,7 @@ "cz-conventional-changelog": "^3.3.0", "eslint": "^7.26.0", "eslint-config-prettier": "^8.3.0", - "eslint-plugin-formatjs": "^2.14.10", + "eslint-plugin-formatjs": "^2.15.0", "eslint-plugin-jsx-a11y": "^6.4.1", "eslint-plugin-prettier": "^3.4.0", "eslint-plugin-react": "^7.23.2", @@ -130,9 +130,9 @@ "husky": "4.3.8", "lint-staged": "^11.0.0", "nodemon": "^2.0.7", - "postcss": "^8.2.14", + "postcss": "^8.2.15", "prettier": "^2.2.1", - "semantic-release": "^17.4.2", + "semantic-release": "^17.4.3", "semantic-release-docker-buildx": "^1.0.1", "tailwindcss": "^2.1.2", "ts-node": "^9.1.1", diff --git a/yarn.lock b/yarn.lock index f7de3e97..8156952a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1077,35 +1077,34 @@ lodash "^4.17.19" to-fast-properties "^2.0.0" -"@commitlint/cli@^12.1.1": - version "12.1.1" - resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-12.1.1.tgz#740370e557a8a17f415052821cdd5276ecb0ab98" - integrity sha512-SB67/s6VJ50seoPx/Sr2gj1fMzKrx+udgarecGdr8h43ah+M2e22gjQJ7xHv5KwyPQ+6ug1YOMCL34ubT4zupQ== +"@commitlint/cli@^12.1.4": + version "12.1.4" + resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-12.1.4.tgz#af4d9dd3c0122c7b39a61fa1cd2abbad0422dbe0" + integrity sha512-ZR1WjXLvqEffYyBPT0XdnSxtt3Ty1TMoujEtseW5o3vPnkA1UNashAMjQVg/oELqfaiAMnDw8SERPMN0e/0kLg== dependencies: - "@commitlint/format" "^12.1.1" - "@commitlint/lint" "^12.1.1" - "@commitlint/load" "^12.1.1" - "@commitlint/read" "^12.1.1" - "@commitlint/types" "^12.1.1" - get-stdin "8.0.0" + "@commitlint/format" "^12.1.4" + "@commitlint/lint" "^12.1.4" + "@commitlint/load" "^12.1.4" + "@commitlint/read" "^12.1.4" + "@commitlint/types" "^12.1.4" lodash "^4.17.19" resolve-from "5.0.0" resolve-global "1.0.0" yargs "^16.2.0" -"@commitlint/config-conventional@^12.1.1": - version "12.1.1" - resolved "https://registry.yarnpkg.com/@commitlint/config-conventional/-/config-conventional-12.1.1.tgz#73dd3b1a7912138420d248f334f15c94c250bc9e" - integrity sha512-15CqbXMsQiEb0qbzjEHe2OkzaXPYSp7RxaS6KoSVk/4W0QiigquavQ+M0huBZze92h0lMS6Pxoq4AJ5CQ3D+iQ== +"@commitlint/config-conventional@^12.1.4": + version "12.1.4" + resolved "https://registry.yarnpkg.com/@commitlint/config-conventional/-/config-conventional-12.1.4.tgz#95bbab622f117a8a3e49f95917b08655040c66a8" + integrity sha512-ZIdzmdy4o4WyqywMEpprRCrehjCSQrHkaRTVZV411GyLigFQHlEBSJITAihLAWe88Qy/8SyoIe5uKvAsV5vRqQ== dependencies: conventional-changelog-conventionalcommits "^4.3.1" -"@commitlint/ensure@^12.1.1": - version "12.1.1" - resolved "https://registry.yarnpkg.com/@commitlint/ensure/-/ensure-12.1.1.tgz#bcefc85f7f8a41bb31f67d7a8966e322b47a6e43" - integrity sha512-XEUQvUjzBVQM7Uv8vYz+c7PDukFvx0AvQEyX/V+PaTkCK/xPvexu7FLbFwvypjSt9BPMf+T/rhB1hVmldkd6lw== +"@commitlint/ensure@^12.1.4": + version "12.1.4" + resolved "https://registry.yarnpkg.com/@commitlint/ensure/-/ensure-12.1.4.tgz#287ae2dcc5ccb086e749705b1bd9bdb99773056f" + integrity sha512-MxHIBuAG9M4xl33qUfIeMSasbv3ktK0W+iygldBxZOL4QSYC2Gn66pZAQMnV9o3V+sVFHoAK2XUKqBAYrgbEqw== dependencies: - "@commitlint/types" "^12.1.1" + "@commitlint/types" "^12.1.4" lodash "^4.17.19" "@commitlint/execute-rule@^11.0.0": @@ -1113,36 +1112,36 @@ resolved "https://registry.yarnpkg.com/@commitlint/execute-rule/-/execute-rule-11.0.0.tgz#3ed60ab7a33019e58d90e2d891b75d7df77b4b4d" integrity sha512-g01p1g4BmYlZ2+tdotCavrMunnPFPhTzG1ZiLKTCYrooHRbmvqo42ZZn4QMStUEIcn+jfLb6BRZX3JzIwA1ezQ== -"@commitlint/execute-rule@^12.1.1": - version "12.1.1" - resolved "https://registry.yarnpkg.com/@commitlint/execute-rule/-/execute-rule-12.1.1.tgz#8aad1d46fb78b3199e4ae36debdc93570bf765ea" - integrity sha512-6mplMGvLCKF5LieL7BRhydpg32tm6LICnWQADrWU4S5g9PKi2utNvhiaiuNPoHUXr29RdbNaGNcyyPv8DSjJsQ== +"@commitlint/execute-rule@^12.1.4": + version "12.1.4" + resolved "https://registry.yarnpkg.com/@commitlint/execute-rule/-/execute-rule-12.1.4.tgz#9973b02e9779adbf1522ae9ac207a4815ec73de1" + integrity sha512-h2S1j8SXyNeABb27q2Ok2vD1WfxJiXvOttKuRA9Or7LN6OQoC/KtT3844CIhhWNteNMu/wE0gkTqGxDVAnJiHg== -"@commitlint/format@^12.1.1": - version "12.1.1" - resolved "https://registry.yarnpkg.com/@commitlint/format/-/format-12.1.1.tgz#a6b14f8605171374eecc2c463098d63c127ab7df" - integrity sha512-bTAoOryTFLqls17JTaRwk2WDVOP0NwuG4F/JPK8RaF6DMZNVQTfajkgTxFENNZRnESfau1BvivvEXfUAW2ZsvA== +"@commitlint/format@^12.1.4": + version "12.1.4" + resolved "https://registry.yarnpkg.com/@commitlint/format/-/format-12.1.4.tgz#db2d46418a6ae57c90e5f7f65dff46f0265d9f24" + integrity sha512-h28ucMaoRjVvvgS6Bdf85fa/+ZZ/iu1aeWGCpURnQV7/rrVjkhNSjZwGlCOUd5kDV1EnZ5XdI7L18SUpRjs26g== dependencies: - "@commitlint/types" "^12.1.1" + "@commitlint/types" "^12.1.4" chalk "^4.0.0" -"@commitlint/is-ignored@^12.1.1": - version "12.1.1" - resolved "https://registry.yarnpkg.com/@commitlint/is-ignored/-/is-ignored-12.1.1.tgz#6075a5cd2dcda7b6ec93322f5dbe2142cfbb3248" - integrity sha512-Sn4fsnWX+wLAJOD/UZeoVruB98te1TyPYRiDEq0MhRJAQIrP+7jE/O3/ass68AAMq00HvH3OK9kt4UBXggcGjA== +"@commitlint/is-ignored@^12.1.4": + version "12.1.4" + resolved "https://registry.yarnpkg.com/@commitlint/is-ignored/-/is-ignored-12.1.4.tgz#4c430bc3b361aa9be5cd4ddb252c1559870ea7bc" + integrity sha512-uTu2jQU2SKvtIRVLOzMQo3KxDtO+iJ1p0olmncwrqy4AfPLgwoyCP2CiULq5M7xpR3+dE3hBlZXbZTQbD7ycIw== dependencies: - "@commitlint/types" "^12.1.1" + "@commitlint/types" "^12.1.4" semver "7.3.5" -"@commitlint/lint@^12.1.1": - version "12.1.1" - resolved "https://registry.yarnpkg.com/@commitlint/lint/-/lint-12.1.1.tgz#cdd898af6eadba8f9e71d7f1255b5a479a757078" - integrity sha512-FFFPpku/E0svL1jaUVqosuZJDDWiNWYBlUw5ZEljh3MwWRcoaWtMIX5bseX+IvHpFZsCTAiBs1kCgNulCi0UvA== +"@commitlint/lint@^12.1.4": + version "12.1.4" + resolved "https://registry.yarnpkg.com/@commitlint/lint/-/lint-12.1.4.tgz#856b7fd2b2e6367b836cb84a12f1c1b3c0e40d22" + integrity sha512-1kZ8YDp4to47oIPFELUFGLiLumtPNKJigPFDuHt2+f3Q3IKdQ0uk53n3CPl4uoyso/Og/EZvb1mXjFR/Yce4cA== dependencies: - "@commitlint/is-ignored" "^12.1.1" - "@commitlint/parse" "^12.1.1" - "@commitlint/rules" "^12.1.1" - "@commitlint/types" "^12.1.1" + "@commitlint/is-ignored" "^12.1.4" + "@commitlint/parse" "^12.1.4" + "@commitlint/rules" "^12.1.4" + "@commitlint/types" "^12.1.4" "@commitlint/load@>6.1.1": version "11.0.0" @@ -1157,40 +1156,40 @@ lodash "^4.17.19" resolve-from "^5.0.0" -"@commitlint/load@^12.1.1": - version "12.1.1" - resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-12.1.1.tgz#5a7fb8be11e520931d1237c5e8dc401b7cc9c6c1" - integrity sha512-qOQtgNdJRULUQWP9jkpTwhj7aEtnqUtqeUpbQ9rjS+GIUST65HZbteNUX4S0mAEGPWqy2aK5xGd73cUfFSvuuw== +"@commitlint/load@^12.1.4": + version "12.1.4" + resolved "https://registry.yarnpkg.com/@commitlint/load/-/load-12.1.4.tgz#e3c2dbc0e7d8d928f57a6878bd7219909fc0acab" + integrity sha512-Keszi0IOjRzKfxT+qES/n+KZyLrxy79RQz8wWgssCboYjKEp+wC+fLCgbiMCYjI5k31CIzIOq/16J7Ycr0C0EA== dependencies: - "@commitlint/execute-rule" "^12.1.1" - "@commitlint/resolve-extends" "^12.1.1" - "@commitlint/types" "^12.1.1" + "@commitlint/execute-rule" "^12.1.4" + "@commitlint/resolve-extends" "^12.1.4" + "@commitlint/types" "^12.1.4" chalk "^4.0.0" cosmiconfig "^7.0.0" lodash "^4.17.19" resolve-from "^5.0.0" -"@commitlint/message@^12.1.1": - version "12.1.1" - resolved "https://registry.yarnpkg.com/@commitlint/message/-/message-12.1.1.tgz#56eb1dbb561e85e9295380a46ff3b09bc93cac65" - integrity sha512-RakDSLAiOligXjhbLahV8HowF4K75pZIcs0+Ii9Q8Gz5H3DWf1Ngit7alFTWfcbf/+DTjSzVPov5HiwQZPIBUg== +"@commitlint/message@^12.1.4": + version "12.1.4" + resolved "https://registry.yarnpkg.com/@commitlint/message/-/message-12.1.4.tgz#3895edcc0709deca5945f3d55f5ea95a9f1f446d" + integrity sha512-6QhalEKsKQ/Y16/cTk5NH4iByz26fqws2ub+AinHPtM7Io0jy4e3rym9iE+TkEqiqWZlUigZnTwbPvRJeSUBaA== -"@commitlint/parse@^12.1.1": - version "12.1.1" - resolved "https://registry.yarnpkg.com/@commitlint/parse/-/parse-12.1.1.tgz#3e49d6dc113d59cf266af0db99e320e933108c56" - integrity sha512-nuljIvAbBDr93DgL0wCArftEIhjSghawAwhvrKNV9FFcqAJqfVqitwMxJrNDCQ5pgUMCSKULLOEv+dA0bLlTEQ== +"@commitlint/parse@^12.1.4": + version "12.1.4" + resolved "https://registry.yarnpkg.com/@commitlint/parse/-/parse-12.1.4.tgz#ba03d54d24ef84f6fd2ff31c5e9998b22d7d0aa1" + integrity sha512-yqKSAsK2V4X/HaLb/yYdrzs6oD/G48Ilt0EJ2Mp6RJeWYxG14w/Out6JrneWnr/cpzemyN5hExOg6+TB19H/Lw== dependencies: - "@commitlint/types" "^12.1.1" + "@commitlint/types" "^12.1.4" conventional-changelog-angular "^5.0.11" conventional-commits-parser "^3.0.0" -"@commitlint/read@^12.1.1": - version "12.1.1" - resolved "https://registry.yarnpkg.com/@commitlint/read/-/read-12.1.1.tgz#22a2d7fd1eab5e38b9b262311af28ac42f9a5097" - integrity sha512-1k0CQEoZIdixvmqZRKEcWdj2XiKS7SlizEOJ1SE99Qui5d5FlBey8eaooTGgmpR6zObpIHJehtEPzM3VzUT3qA== +"@commitlint/read@^12.1.4": + version "12.1.4" + resolved "https://registry.yarnpkg.com/@commitlint/read/-/read-12.1.4.tgz#552fda42ef185d5b578beb6f626a5f8b282de3a6" + integrity sha512-TnPQSJgD8Aod5Xeo9W4SaYKRZmIahukjcCWJ2s5zb3ZYSmj6C85YD9cR5vlRyrZjj78ItLUV/X4FMWWVIS38Jg== dependencies: - "@commitlint/top-level" "^12.1.1" - "@commitlint/types" "^12.1.1" + "@commitlint/top-level" "^12.1.4" + "@commitlint/types" "^12.1.4" fs-extra "^9.0.0" git-raw-commits "^2.0.0" @@ -1204,35 +1203,35 @@ resolve-from "^5.0.0" resolve-global "^1.0.0" -"@commitlint/resolve-extends@^12.1.1": - version "12.1.1" - resolved "https://registry.yarnpkg.com/@commitlint/resolve-extends/-/resolve-extends-12.1.1.tgz#80a78b0940775d17888dd2985b52f93d93e0a885" - integrity sha512-/DXRt0S0U3o9lq5cc8OL1Lkx0IjW0HcDWjUkUXshAajBIKBYSJB8x/loNCi1krNEJ8SwLXUEFt5OLxNO6wE9yQ== +"@commitlint/resolve-extends@^12.1.4": + version "12.1.4" + resolved "https://registry.yarnpkg.com/@commitlint/resolve-extends/-/resolve-extends-12.1.4.tgz#e758ed7dcdf942618b9f603a7c28a640f6a0802a" + integrity sha512-R9CoUtsXLd6KSCfsZly04grsH6JVnWFmVtWgWs1KdDpdV+G3TSs37tColMFqglpkx3dsWu8dsPD56+D9YnJfqg== dependencies: import-fresh "^3.0.0" lodash "^4.17.19" resolve-from "^5.0.0" resolve-global "^1.0.0" -"@commitlint/rules@^12.1.1": - version "12.1.1" - resolved "https://registry.yarnpkg.com/@commitlint/rules/-/rules-12.1.1.tgz#d59182a837d2addf301a3a4ef83316ae7e70248f" - integrity sha512-oCcLF/ykcJfhM2DeeaDyrgdaiuKsqIPNocugdPj2WEyhSYqmx1/u18CV96LAtW+WyyiOLCCeiZwiQutx3T5nXg== +"@commitlint/rules@^12.1.4": + version "12.1.4" + resolved "https://registry.yarnpkg.com/@commitlint/rules/-/rules-12.1.4.tgz#0e141b08caa3d7bdc48aa784baa8baff3efd64db" + integrity sha512-W8m6ZSjg7RuIsIfzQiFHa48X5mcPXeKT9yjBxVmjHvYfS2FDBf1VxCQ7vO0JTVIdV4ohjZ0eKg/wxxUuZHJAZg== dependencies: - "@commitlint/ensure" "^12.1.1" - "@commitlint/message" "^12.1.1" - "@commitlint/to-lines" "^12.1.1" - "@commitlint/types" "^12.1.1" + "@commitlint/ensure" "^12.1.4" + "@commitlint/message" "^12.1.4" + "@commitlint/to-lines" "^12.1.4" + "@commitlint/types" "^12.1.4" -"@commitlint/to-lines@^12.1.1": - version "12.1.1" - resolved "https://registry.yarnpkg.com/@commitlint/to-lines/-/to-lines-12.1.1.tgz#40fbed1767d637249ce49b311a51909d8361ecf8" - integrity sha512-W23AH2XF5rI27MOAPSSr0TUDoRe7ZbFoRtYhFnPu2MBmcuDA9Tmfd9N5sM2tBXtdE26uq3SazwKqGt1OoGAilQ== +"@commitlint/to-lines@^12.1.4": + version "12.1.4" + resolved "https://registry.yarnpkg.com/@commitlint/to-lines/-/to-lines-12.1.4.tgz#caa582dbf121f377a0588bb64e25c4854843cd25" + integrity sha512-TParumvbi8bdx3EdLXz2MaX+e15ZgoCqNUgqHsRLwyqLUTRbqCVkzrfadG1UcMQk8/d5aMbb327ZKG3Q4BRorw== -"@commitlint/top-level@^12.1.1": - version "12.1.1" - resolved "https://registry.yarnpkg.com/@commitlint/top-level/-/top-level-12.1.1.tgz#228df8fc36b6d7ea7ad149badfb6ef53dbc7001d" - integrity sha512-g7uRbr81QEIg+pbii0OkE17Zh/2C/f6dSmiMDVRn1S0+hNHR1bENCh18hVUKcV/qKTUsKkFlhhWXM9mQBfxQJw== +"@commitlint/top-level@^12.1.4": + version "12.1.4" + resolved "https://registry.yarnpkg.com/@commitlint/top-level/-/top-level-12.1.4.tgz#96d5c715bfc1bdf86dfcf11b67fc2cf7658c7a6e" + integrity sha512-d4lTJrOT/dXlpY+NIt4CUl77ciEzYeNVc0VFgUQ6VA+b1rqYD2/VWFjBlWVOrklxtSDeKyuEhs36RGrppEFAvg== dependencies: find-up "^5.0.0" @@ -1241,10 +1240,10 @@ resolved "https://registry.yarnpkg.com/@commitlint/types/-/types-11.0.0.tgz#719cf05fcc1abb6533610a2e0f5dd1e61eac14fe" integrity sha512-VoNqai1vR5anRF5Tuh/+SWDFk7xi7oMwHrHrbm1BprYXjB2RJsWLhUrStMssDxEl5lW/z3EUdg8RvH/IUBccSQ== -"@commitlint/types@^12.1.1": - version "12.1.1" - resolved "https://registry.yarnpkg.com/@commitlint/types/-/types-12.1.1.tgz#8e651f6af0171cd4f8d464c6c37a7cf63ee071bd" - integrity sha512-+qGH+s2Lo6qwacV2X3/ZypZwaAI84ift+1HBjXdXtI/q0F5NtmXucV3lcQOTviMTNiJhq4qWON2fjci2NItASw== +"@commitlint/types@^12.1.4": + version "12.1.4" + resolved "https://registry.yarnpkg.com/@commitlint/types/-/types-12.1.4.tgz#9618a5dc8991fb58e6de6ed89d7bf712fa74ba7e" + integrity sha512-KRIjdnWNUx6ywz+SJvjmNCbQKcKP6KArhjZhY2l+CWKxak0d77SOjggkMwFTiSgLODOwmuLTbarR2ZfWPiPMlw== dependencies: chalk "^4.0.0" @@ -1267,7 +1266,7 @@ "@emotion/utils" "0.11.3" "@emotion/weak-memoize" "0.2.5" -"@emotion/cache@^11.0.0", "@emotion/cache@^11.1.3": +"@emotion/cache@^11.1.3": version "11.1.3" resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.1.3.tgz#c7683a9484bcd38d5562f2b9947873cf66829afd" integrity sha512-n4OWinUPJVaP6fXxWZD9OUeQ0lY7DvtmtSuqtRWT0Ofo/sBLCVSgb4/Oa0Q5eFxcwablRKjUXqXtNZVyEwCAuA== @@ -1278,6 +1277,17 @@ "@emotion/weak-memoize" "^0.2.5" stylis "^4.0.3" +"@emotion/cache@^11.4.0": + version "11.4.0" + resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.4.0.tgz#293fc9d9a7a38b9aad8e9337e5014366c3b09ac0" + integrity sha512-Zx70bjE7LErRO9OaZrhf22Qye1y4F7iDl+ITjet0J+i+B88PrAOBkKvaAWhxsZf72tDLajwCgfCjJ2dvH77C3g== + dependencies: + "@emotion/memoize" "^0.7.4" + "@emotion/sheet" "^1.0.0" + "@emotion/utils" "^1.0.0" + "@emotion/weak-memoize" "^0.2.5" + stylis "^4.0.3" + "@emotion/core@^10.0.14": version "10.0.35" resolved "https://registry.yarnpkg.com/@emotion/core/-/core-10.0.35.tgz#513fcf2e22cd4dfe9d3894ed138c9d7a859af9b3" @@ -1406,10 +1416,10 @@ dependencies: tslib "^2.0.1" -"@formatjs/ecma402-abstract@1.7.0": - version "1.7.0" - resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-1.7.0.tgz#440b341ba18451d53d9172e3110d96ca420b3760" - integrity sha512-0IQF4oDZdO8ruyrNJZuRle3F/YiGgRwTNrZyMI1N1X8GERZusOrXU9Stw+j/lyyfDWaJK44b+Qnri/qfLPCtGQ== +"@formatjs/ecma402-abstract@1.7.1": + version "1.7.1" + resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-1.7.1.tgz#1459a9dad654d5d5ec34765965b8e4f22ad6ff81" + integrity sha512-FjewVLB2DVEVCvvC7IMffzXVhysvi442i6ed0H7qcrT6xtUpO4vr0oZgpOmsv6D9I4Io0GVebIuySwteS/k3gg== dependencies: tslib "^2.1.0" @@ -1425,37 +1435,37 @@ resolved "https://registry.yarnpkg.com/@formatjs/fast-memoize/-/fast-memoize-1.1.1.tgz#3006b58aca1e39a98aca213356b42da5d173f26b" integrity sha512-mIqBr5uigIlx13eZTOPSEh2buDiy3BCdMYUtewICREQjbb4xarDiVWoXSnrERM7NanZ+0TAHNXSqDe6HpEFQUg== -"@formatjs/icu-messageformat-parser@2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.0.0.tgz#a705da9c5040ebdee295147951cfaeb3e61a8ae0" - integrity sha512-NwbcVP6jtnL+4vpmlWJoBA2/vxrl57uw5jBq8Cb3bfYJLxdL01IRxh//hFBePvLi9cyTYJEC3ZfzIuEH4kyX+w== +"@formatjs/icu-messageformat-parser@2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.0.1.tgz#a3b542542b92958f1cdd090f1cb475cb7cb4e21a" + integrity sha512-GXHsATo6/9OMgrfAuyX86fYPMLeQXDN93TOKXQeW7A7ULCy9eEOp3beNwhrVFxaGIjVy/haLLqHMT36iyhwvCA== dependencies: - "@formatjs/ecma402-abstract" "1.7.0" - "@formatjs/icu-skeleton-parser" "1.2.1" + "@formatjs/ecma402-abstract" "1.7.1" + "@formatjs/icu-skeleton-parser" "1.2.2" tslib "^2.1.0" -"@formatjs/icu-skeleton-parser@1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.2.1.tgz#aa3204b941b436cb88fea9269a6bdf10610336aa" - integrity sha512-mTpmCozmksatv3gQ+6/9dwwtoR+r+DFms22X6D6GLS4TaeaFKIPmC3k/DlsMGZIr3Q+dT+is5IcexChrPBGmCg== +"@formatjs/icu-skeleton-parser@1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.2.2.tgz#6e9a6eff16e3c7b69d67d40b292d4b499e37228e" + integrity sha512-peBBPIiNzJdPsvEzFGCicD7ARvlcaUYOVZ5dljvzzcHqc5OHlH58OrUNWwYgxFS6Dnb3Ncy4qFwlTdPGTTvw1g== dependencies: - "@formatjs/ecma402-abstract" "1.7.0" + "@formatjs/ecma402-abstract" "1.7.1" tslib "^2.1.0" -"@formatjs/intl-displaynames@4.0.15": - version "4.0.15" - resolved "https://registry.yarnpkg.com/@formatjs/intl-displaynames/-/intl-displaynames-4.0.15.tgz#460b542b24078753990a337a44c4ad495c48f5d9" - integrity sha512-iOrzwRpro9ggNgGH6Mec9PPMw9Oo6IY6c/Ujjdt85p2wOnS4FnKu2EP/X1pKDRcKOXS3SF4Ec4XqGeikRTR3DA== +"@formatjs/intl-displaynames@4.0.16": + version "4.0.16" + resolved "https://registry.yarnpkg.com/@formatjs/intl-displaynames/-/intl-displaynames-4.0.16.tgz#f310b9a43313c6c3da736a912fc27bce395742b4" + integrity sha512-2vmY2yKu7VvtLmuZhPAGAZ6AtQMQpbUGEW/5IEwFub0AGR5iF/ayC7nbrQvg2NWVRVdVBt/HlTws/QWTZaRCyg== dependencies: - "@formatjs/ecma402-abstract" "1.7.0" + "@formatjs/ecma402-abstract" "1.7.1" tslib "^2.1.0" -"@formatjs/intl-listformat@5.0.16": - version "5.0.16" - resolved "https://registry.yarnpkg.com/@formatjs/intl-listformat/-/intl-listformat-5.0.16.tgz#bbfa91f81e0156564a6c83ad2926ee76ad17d0d2" - integrity sha512-kKT8g+uoPdjyyQNZPlbnTo1juNhnHROTljhukx7m8Vm/W6ahtFVwFRgyMbOcaGvGH2p7Rfus4Tg/NQ6mFI2giA== +"@formatjs/intl-listformat@5.0.17": + version "5.0.17" + resolved "https://registry.yarnpkg.com/@formatjs/intl-listformat/-/intl-listformat-5.0.17.tgz#baa4474a95bab26d5dd0c1a4aad246ed193e5505" + integrity sha512-3WU1cmcoGk1zgNR7BoD/GIOaIJSjWa6GXArEOPiE+ocM6ZgYIYsDcjfQOso0z2NNN1k8CPOlfzWY4olwdKAtxQ== dependencies: - "@formatjs/ecma402-abstract" "1.7.0" + "@formatjs/ecma402-abstract" "1.7.1" tslib "^2.1.0" "@formatjs/intl-numberformat@^5.5.2": @@ -1465,17 +1475,17 @@ dependencies: "@formatjs/ecma402-abstract" "^1.2.1" -"@formatjs/intl@1.10.5": - version "1.10.5" - resolved "https://registry.yarnpkg.com/@formatjs/intl/-/intl-1.10.5.tgz#af139e5bcabfe732b1544e0a287b895cce3c2557" - integrity sha512-B486yGoCij6qKGtopk+Ln8i850yE2PJUSW7G7gJXWnYUpBiIlYBi9kINDqOF3G5HBRM3f1WmIv/GB01aD8OaSA== +"@formatjs/intl@1.10.6": + version "1.10.6" + resolved "https://registry.yarnpkg.com/@formatjs/intl/-/intl-1.10.6.tgz#fc3810ccfdc0b81a735c7fe8298e6ff335843b7a" + integrity sha512-Szxu18bG2LSXWlMHQyNap9AibOaCYgK4/1JlBy2o2UB89fjqJfXaotF7rNGD9dJc+JGzcUYhhBH0ofyN9uSXLg== dependencies: - "@formatjs/ecma402-abstract" "1.7.0" + "@formatjs/ecma402-abstract" "1.7.1" "@formatjs/fast-memoize" "1.1.1" - "@formatjs/icu-messageformat-parser" "2.0.0" - "@formatjs/intl-displaynames" "4.0.15" - "@formatjs/intl-listformat" "5.0.16" - intl-messageformat "9.6.12" + "@formatjs/icu-messageformat-parser" "2.0.1" + "@formatjs/intl-displaynames" "4.0.16" + "@formatjs/intl-listformat" "5.0.17" + intl-messageformat "9.6.13" tslib "^2.1.0" "@formatjs/ts-transformer@2.13.0": @@ -1487,12 +1497,12 @@ tslib "^2.0.1" typescript "^4.0" -"@formatjs/ts-transformer@3.3.11": - version "3.3.11" - resolved "https://registry.yarnpkg.com/@formatjs/ts-transformer/-/ts-transformer-3.3.11.tgz#088b1d1a877a50d739fd99ea022dfdb80cd73144" - integrity sha512-w9ovL3MSs4avmDKWaAxlj+QduFB3XwfMmAgEURExpQpt0XCwm9MDM7qSNKkOELkaT2A3EzEXIaVNvnFDiTuP2Q== +"@formatjs/ts-transformer@3.3.12": + version "3.3.12" + resolved "https://registry.yarnpkg.com/@formatjs/ts-transformer/-/ts-transformer-3.3.12.tgz#f3630b77eee7563e8b2a6ba01a20a53e656c2a44" + integrity sha512-mEcY5QeotuzUqysq2UnZpOv05poLDxU30PUh1lhdywrJ45nZnJ8/9SU1NMLCKI/6I8ML/y0dORr7r6SjXwlEZA== dependencies: - "@formatjs/icu-messageformat-parser" "2.0.0" + "@formatjs/icu-messageformat-parser" "2.0.1" tslib "^2.1.0" typescript "^4.0" @@ -1539,10 +1549,10 @@ resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.1.0.tgz#6c9eafc78c1529248f8f4d92b0799a712b6052c6" integrity sha512-i9YbZPN3QgfighY/1X1Pu118VUz2Fmmhd6b2n0/O8YVgGGfw0FbUYoA97k7FkpGJ+pLCFEDLUmAPPV4D1kpeFw== -"@headlessui/react@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@headlessui/react/-/react-1.1.1.tgz#71ecb3444eb21947ceefe768a25efaba4f8eceb0" - integrity sha512-fxNKxRrjNXdNYNMhAVrv1nz0gIMX3JhFizTA9lNrEC8+aY3JR00GZTPhuG785RZGvnHXCdYCGHeAhqw9uRNRrA== +"@headlessui/react@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@headlessui/react/-/react-1.2.0.tgz#e48652bfce82ddf73d7f331faeb9db6526ee6874" + integrity sha512-19DkLz8gDgbi+WvkoTzi9vs0NK9TJf94vbYhMzB4LYJo03Kili0gmvXT9CiKZoxXZ7YAvy/b1U1oQKEnjWrqxw== "@heroicons/react@^1.0.1": version "1.0.1" @@ -2087,10 +2097,12 @@ dependencies: "@babel/types" "^7.3.0" -"@types/bcrypt@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/bcrypt/-/bcrypt-3.0.1.tgz#9c767594e31aa1c4ce78d23aa4351984403ca28f" - integrity sha512-SwBrq5wb6jXP0o3O3jStdPWbKpimTImfdFD/OZE3uW+jhGpds/l5wMX9lfYOTDOa5Bod2QmOgo9ln+tMp2XP/w== +"@types/bcrypt@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@types/bcrypt/-/bcrypt-5.0.0.tgz#a835afa2882d165aff5690893db314eaa98b9f20" + integrity sha512-agtcFKaruL8TmcvqbndlqHPSJgsolhf/qPWchFlgnW1gECTN/nKbFcoFnvKAQRFfKbh+BO6A3SWdJu9t+xF3Lw== + dependencies: + "@types/node" "*" "@types/body-parser@*", "@types/body-parser@^1.19.0": version "1.19.0" @@ -2270,10 +2282,10 @@ resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.165.tgz#74d55d947452e2de0742bad65270433b63a8c30f" integrity sha512-tjSSOTHhI5mCHTy/OOXYIhi2Wt1qcbHmuXD1Ha7q70CgI/I71afO4XtLb/cVexki1oVYchpul/TOuu3Arcdxrg== -"@types/lodash@^4.14.168": - version "4.14.168" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.168.tgz#fe24632e79b7ade3f132891afff86caa5e5ce008" - integrity sha512-oVfRvqHV/V6D1yifJbVRU3TMp8OT6o6BG+U9MkwuJ3U8/CsDHvalRpsxBqivn71ztOFZBTfJMvETbqHiaNSj7Q== +"@types/lodash@^4.14.169": + version "4.14.169" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.169.tgz#83c217688f07a4d9ef8f28a3ebd1d318f6ff4cbb" + integrity sha512-DvmZHoHTFJ8zhVYwCLWbQ7uAbYQEk52Ev2/ZiQ7Y7gQGeV9pjBqjnQpECMHfKS1rCYAhMI7LHVxwyZLZinJgdw== "@types/mdast@^3.0.0": version "3.0.3" @@ -2316,10 +2328,10 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.34.tgz#07935194fc049069a1c56c0c274265abeddf88da" integrity sha512-dBPaxocOK6UVyvhbnpFIj2W+S+1cBTkHQbFQfeeJhoKFbzYcVUGHvddeWPSucKATb3F0+pgDq0i6ghEaZjsugA== -"@types/node@^15.0.2": - version "15.0.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-15.0.2.tgz#51e9c0920d1b45936ea04341aa3e2e58d339fb67" - integrity sha512-p68+a+KoxpoB47015IeYZYRrdqMUcpbK8re/zpFB8Ld46LHC1lPEbp3EXgkEhAYEcPvjJF6ZO+869SQ0aH1dcA== +"@types/node@^15.0.3": + version "15.0.3" + resolved "https://registry.yarnpkg.com/@types/node/-/node-15.0.3.tgz#ee09fcaac513576474c327da5818d421b98db88a" + integrity sha512-/WbxFeBU+0F79z9RdEOXH4CsDga+ibi5M8uEYr91u3CkT/pdWcV8MCook+4wDPnZBexRdwWS+PiVZ2xJviAzcQ== "@types/nodemailer@*", "@types/nodemailer@^6.4.1": version "6.4.1" @@ -2358,13 +2370,20 @@ resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== -"@types/react-dom@*", "@types/react-dom@^17.0.3": +"@types/react-dom@*": version "17.0.3" resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.3.tgz#7fdf37b8af9d6d40127137865bb3fff8871d7ee1" integrity sha512-4NnJbCeWE+8YBzupn/YrJxZ8VnjcJq5iR1laqQ1vkpQgBiA7bwk0Rp24fxsdNinzJY2U+HHS4dJJDPdoMjdJ7w== dependencies: "@types/react" "*" +"@types/react-dom@^17.0.5": + version "17.0.5" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.5.tgz#df44eed5b8d9e0b13bb0cd38e0ea6572a1231227" + integrity sha512-ikqukEhH4H9gr4iJCmQVNzTB307kROe3XFfHAOTxOXPOw7lAoEXnM5KWTkzeANGL5Ce6ABfiMl/zJBYNi7ObmQ== + dependencies: + "@types/react" "*" + "@types/react-select@^4.0.15": version "4.0.15" resolved "https://registry.yarnpkg.com/@types/react-select/-/react-select-4.0.15.tgz#2e6a1cff22c4bbae6c95b8dbee5b5097c12eae54" @@ -2483,13 +2502,13 @@ resolved "https://registry.yarnpkg.com/@types/zen-observable/-/zen-observable-0.8.2.tgz#808c9fa7e4517274ed555fa158f2de4b4f468e71" integrity sha512-HrCIVMLjE1MOozVoD86622S7aunluLb2PJdPfb3nYiEtohm8mIB/vyv0Fd37AdeMFrTUQXEunw78YloMA3Qilg== -"@typescript-eslint/eslint-plugin@^4.22.1": - version "4.22.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.22.1.tgz#6bcdbaa4548553ab861b4e5f34936ead1349a543" - integrity sha512-kVTAghWDDhsvQ602tHBc6WmQkdaYbkcTwZu+7l24jtJiYvm9l+/y/b2BZANEezxPDiX5MK2ZecE+9BFi/YJryw== +"@typescript-eslint/eslint-plugin@^4.23.0": + version "4.23.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.23.0.tgz#29d3c9c81f6200b1fd6d8454cfb007ba176cde80" + integrity sha512-tGK1y3KIvdsQEEgq6xNn1DjiFJtl+wn8JJQiETtCbdQxw1vzjXyAaIkEmO2l6Nq24iy3uZBMFQjZ6ECf1QdgGw== dependencies: - "@typescript-eslint/experimental-utils" "4.22.1" - "@typescript-eslint/scope-manager" "4.22.1" + "@typescript-eslint/experimental-utils" "4.23.0" + "@typescript-eslint/scope-manager" "4.23.0" debug "^4.1.1" functional-red-black-tree "^1.0.1" lodash "^4.17.15" @@ -2497,86 +2516,60 @@ semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/experimental-utils@4.22.1": - version "4.22.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.22.1.tgz#3938a5c89b27dc9a39b5de63a62ab1623ab27497" - integrity sha512-svYlHecSMCQGDO2qN1v477ax/IDQwWhc7PRBiwAdAMJE7GXk5stF4Z9R/8wbRkuX/5e9dHqbIWxjeOjckK3wLQ== +"@typescript-eslint/experimental-utils@4.23.0": + version "4.23.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.23.0.tgz#f2059434cd6e5672bfeab2fb03b7c0a20622266f" + integrity sha512-WAFNiTDnQfrF3Z2fQ05nmCgPsO5o790vOhmWKXbbYQTO9erE1/YsFot5/LnOUizLzU2eeuz6+U/81KV5/hFTGA== dependencies: "@types/json-schema" "^7.0.3" - "@typescript-eslint/scope-manager" "4.22.1" - "@typescript-eslint/types" "4.22.1" - "@typescript-eslint/typescript-estree" "4.22.1" + "@typescript-eslint/scope-manager" "4.23.0" + "@typescript-eslint/types" "4.23.0" + "@typescript-eslint/typescript-estree" "4.23.0" eslint-scope "^5.0.0" eslint-utils "^2.0.0" -"@typescript-eslint/parser@^4.22.1": - version "4.22.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.22.1.tgz#a95bda0fd01d994a15fc3e99dc984294f25c19cc" - integrity sha512-l+sUJFInWhuMxA6rtirzjooh8cM/AATAe3amvIkqKFeMzkn85V+eLzb1RyuXkHak4dLfYzOmF6DXPyflJvjQnw== +"@typescript-eslint/parser@^4.23.0": + version "4.23.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.23.0.tgz#239315d38e42e852bef43a4b0b01bef78f78911c" + integrity sha512-wsvjksHBMOqySy/Pi2Q6UuIuHYbgAMwLczRl4YanEPKW5KVxI9ZzDYh3B5DtcZPQTGRWFJrfcbJ6L01Leybwug== dependencies: - "@typescript-eslint/scope-manager" "4.22.1" - "@typescript-eslint/types" "4.22.1" - "@typescript-eslint/typescript-estree" "4.22.1" + "@typescript-eslint/scope-manager" "4.23.0" + "@typescript-eslint/types" "4.23.0" + "@typescript-eslint/typescript-estree" "4.23.0" debug "^4.1.1" -"@typescript-eslint/scope-manager@4.22.1": - version "4.22.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.22.1.tgz#5bb357f94f9cd8b94e6be43dd637eb73b8f355b4" - integrity sha512-d5bAiPBiessSmNi8Amq/RuLslvcumxLmyhf1/Xa9IuaoFJ0YtshlJKxhlbY7l2JdEk3wS0EnmnfeJWSvADOe0g== +"@typescript-eslint/scope-manager@4.23.0": + version "4.23.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.23.0.tgz#8792ef7eacac122e2ec8fa2d30a59b8d9a1f1ce4" + integrity sha512-ZZ21PCFxPhI3n0wuqEJK9omkw51wi2bmeKJvlRZPH5YFkcawKOuRMQMnI8mH6Vo0/DoHSeZJnHiIx84LmVQY+w== dependencies: - "@typescript-eslint/types" "4.22.1" - "@typescript-eslint/visitor-keys" "4.22.1" + "@typescript-eslint/types" "4.23.0" + "@typescript-eslint/visitor-keys" "4.23.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.23.0": + version "4.23.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.23.0.tgz#da1654c8a5332f4d1645b2d9a1c64193cae3aa3b" + integrity sha512-oqkNWyG2SLS7uTWLZf6Sr7Dm02gA5yxiz1RP87tvsmDsguVATdpVguHr4HoGOcFOpCvx9vtCSCyQUGfzq28YCw== -"@typescript-eslint/types@4.22.1": - version "4.22.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.22.1.tgz#bf99c6cec0b4a23d53a61894816927f2adad856a" - integrity sha512-2HTkbkdAeI3OOcWbqA8hWf/7z9c6gkmnWNGz0dKSLYLWywUlkOAQ2XcjhlKLj5xBFDf8FgAOF5aQbnLRvgNbCw== - -"@typescript-eslint/typescript-estree@4.22.1": - version "4.22.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.22.1.tgz#dca379eead8cdfd4edc04805e83af6d148c164f9" - integrity sha512-p3We0pAPacT+onSGM+sPR+M9CblVqdA9F1JEdIqRVlxK5Qth4ochXQgIyb9daBomyQKAXbygxp1aXQRV0GC79A== +"@typescript-eslint/typescript-estree@4.23.0", "@typescript-eslint/typescript-estree@^4.11.0": + version "4.23.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.23.0.tgz#0753b292097523852428a6f5a1aa8ccc1aae6cd9" + integrity sha512-5Sty6zPEVZF5fbvrZczfmLCOcby3sfrSPu30qKoY1U3mca5/jvU5cwsPb/CO6Q3ByRjixTMIVsDkqwIxCf/dMw== dependencies: - "@typescript-eslint/types" "4.22.1" - "@typescript-eslint/visitor-keys" "4.22.1" + "@typescript-eslint/types" "4.23.0" + "@typescript-eslint/visitor-keys" "4.23.0" debug "^4.1.1" globby "^11.0.1" is-glob "^4.0.1" semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/typescript-estree@^3.6.0": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz#fd0061cc38add4fad45136d654408569f365b853" - integrity sha512-QbcXOuq6WYvnB3XPsZpIwztBoquEYLXh2MtwVU+kO8jgYCiv4G5xrSP/1wg4tkvrEE+esZVquIPX/dxPlePk1w== +"@typescript-eslint/visitor-keys@4.23.0": + version "4.23.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.23.0.tgz#7215cc977bd3b4ef22467b9023594e32f9e4e455" + integrity sha512-5PNe5cmX9pSifit0H+nPoQBXdbNzi5tOEec+3riK+ku4e3er37pKxMKDH5Ct5Y4fhWxcD4spnlYjxi9vXbSpwg== dependencies: - "@typescript-eslint/types" "3.10.1" - "@typescript-eslint/visitor-keys" "3.10.1" - debug "^4.1.1" - glob "^7.1.6" - is-glob "^4.0.1" - lodash "^4.17.15" - semver "^7.3.2" - tsutils "^3.17.1" - -"@typescript-eslint/visitor-keys@3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz#cd4274773e3eb63b2e870ac602274487ecd1e931" - integrity sha512-9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ== - dependencies: - eslint-visitor-keys "^1.1.0" - -"@typescript-eslint/visitor-keys@4.22.1": - version "4.22.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.22.1.tgz#6045ae25a11662c671f90b3a403d682dfca0b7a6" - integrity sha512-WPkOrIRm+WCLZxXQHCi+WG8T2MMTUFR70rWjdWYddLT7cEfb2P4a3O/J2U1FBVsSFTocXLCoXWY6MZGejeStvQ== - dependencies: - "@typescript-eslint/types" "4.22.1" + "@typescript-eslint/types" "4.23.0" eslint-visitor-keys "^2.0.0" "@xobotyi/scrollbar-width@^1.9.5": @@ -5570,16 +5563,16 @@ eslint-config-prettier@^8.3.0: resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz#f7471b20b6fe8a9a9254cc684454202886a2dd7a" integrity sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew== -eslint-plugin-formatjs@^2.14.10: - version "2.14.10" - resolved "https://registry.yarnpkg.com/eslint-plugin-formatjs/-/eslint-plugin-formatjs-2.14.10.tgz#faedc97319805f7b2d8910c285d537522041160a" - integrity sha512-5zgVCovmXxnPjmS8PLkiuxlmWmPuMBZVsY3q369+gZ0FwsqmBe/CsA/PKvu/ki0WiJ4xIF5/XVhL2P74EwJpaA== +eslint-plugin-formatjs@^2.15.0: + version "2.15.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-formatjs/-/eslint-plugin-formatjs-2.15.0.tgz#65dafd0de34b099fee6b1cafdd272131f52110ea" + integrity sha512-A5XfeOO5m6eH6yMtinyh34Mn5EUqaqRKAuh1w6wtUiy/J0rk++ps1nE4ibLWg5Q4udstohL+Eet9WFzDRUzEfA== dependencies: - "@formatjs/icu-messageformat-parser" "2.0.0" - "@formatjs/ts-transformer" "3.3.11" + "@formatjs/icu-messageformat-parser" "2.0.1" + "@formatjs/ts-transformer" "3.3.12" "@types/emoji-regex" "^8.0.0" "@types/eslint" "^7.2.0" - "@typescript-eslint/typescript-estree" "^3.6.0" + "@typescript-eslint/typescript-estree" "^4.11.0" emoji-regex "^9.0.0" tslib "^2.1.0" @@ -6500,11 +6493,6 @@ get-paths@^0.0.7: dependencies: pify "^4.0.1" -get-stdin@8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53" - integrity sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg== - get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" @@ -7321,13 +7309,13 @@ intl-messageformat-parser@^5.3.7: dependencies: "@formatjs/intl-numberformat" "^5.5.2" -intl-messageformat@9.6.12: - version "9.6.12" - resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-9.6.12.tgz#4794aa6b7beb74ec7dc7bffe7487bcf432c6cb87" - integrity sha512-4oLEiYRWq+GAYETFxYOaGPWb9CT7j9F5UavhXIvBdbcsLIbaQFAa3LQBJh/9/NgV0Y8ZTzX2z+A1sf2AzslWxw== +intl-messageformat@9.6.13: + version "9.6.13" + resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-9.6.13.tgz#7c4ace385b3b8cc5010bfd774451ed0c50a73a9b" + integrity sha512-F8OHdgdZYdY3O7TSkQtIGY1qBL7ttbbfIb6g9sgjLw1SQ9SlN3rlaUa1tv9RK3sX0qVkqNLqlPVuOfHlhXpm2Q== dependencies: "@formatjs/fast-memoize" "1.1.1" - "@formatjs/icu-messageformat-parser" "2.0.0" + "@formatjs/icu-messageformat-parser" "2.0.1" tslib "^2.1.0" intl@^1.2.5: @@ -9358,6 +9346,11 @@ nanoid@^3.1.16, nanoid@^3.1.22: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.22.tgz#b35f8fb7d151990a8aebd5aa5015c03cf726f844" integrity sha512-/2ZUaJX2ANuLtTvqTlgqBQNJoQO398KyJgZloL0PZkC0dpysjncRUPsFe3DUPzz/y3h+u7C46np8RMuvF3jsSQ== +nanoid@^3.1.23: + version "3.1.23" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.23.tgz#f744086ce7c2bc47ee0a8472574d5c78e4183a81" + integrity sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw== + nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -10801,13 +10794,13 @@ postcss@^8.1.6, postcss@^8.2.1: nanoid "^3.1.22" source-map "^0.6.1" -postcss@^8.2.14: - version "8.2.14" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.14.tgz#dcf313eb8247b3ce8078d048c0e8262ca565ad2b" - integrity sha512-+jD0ZijcvyCqPQo/m/CW0UcARpdFylq04of+Q7RKX6f/Tu+dvpUI/9Sp81+i6/vJThnOBX09Quw0ZLOVwpzX3w== +postcss@^8.2.15: + version "8.2.15" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.15.tgz#9e66ccf07292817d226fc315cbbf9bc148fbca65" + integrity sha512-2zO3b26eJD/8rb106Qu2o7Qgg52ND5HPjcyQiK2B98O388h43A448LCslC0dI2P97wCAQRJsFvwTRcXxTKds+Q== dependencies: colorette "^1.2.2" - nanoid "^3.1.22" + nanoid "^3.1.23" source-map "^0.6.1" prelude-ls@^1.2.1: @@ -11296,19 +11289,19 @@ react-intersection-observer@^8.31.1: resolved "https://registry.yarnpkg.com/react-intersection-observer/-/react-intersection-observer-8.31.1.tgz#dea4e9a10bbfc899c4159eadd94354cc083920b5" integrity sha512-Q4OH2aUXcEi6tPBBgOBjfodoRM68wikXqqbPf8FaY4VBMcSACbxulfkW/OqcfLYfSAOEPGvxN+NCn9PqBgAOfQ== -react-intl@5.17.4: - version "5.17.4" - resolved "https://registry.yarnpkg.com/react-intl/-/react-intl-5.17.4.tgz#9f715ad0831bf4b9ea058bbe39e63fd38202c5d5" - integrity sha512-Y4JaY8zxJc2CpNai0MY/UvuDJL3YlzRVRrhgOnitKngNBIen+rCmqefZ3fF+mwpwejcP4Kycv3ql/x3tVlUgNw== +react-intl@5.17.5: + version "5.17.5" + resolved "https://registry.yarnpkg.com/react-intl/-/react-intl-5.17.5.tgz#8e70fcb6c9a70d20c066f514cb34ad48620c6b75" + integrity sha512-CCGZnb69TUXlDm/GL6R6VAD4RFTqPcIlotRs8RA5SjZX5gxJVgVokvlM9T3sA5BWInGNZUXXNOiZE7yROVUDIg== dependencies: - "@formatjs/ecma402-abstract" "1.7.0" - "@formatjs/icu-messageformat-parser" "2.0.0" - "@formatjs/intl" "1.10.5" - "@formatjs/intl-displaynames" "4.0.15" - "@formatjs/intl-listformat" "5.0.16" + "@formatjs/ecma402-abstract" "1.7.1" + "@formatjs/icu-messageformat-parser" "2.0.1" + "@formatjs/intl" "1.10.6" + "@formatjs/intl-displaynames" "4.0.16" + "@formatjs/intl-listformat" "5.0.17" "@types/hoist-non-react-statics" "^3.3.1" hoist-non-react-statics "^3.3.2" - intl-messageformat "9.6.12" + intl-messageformat "9.6.13" tslib "^2.1.0" react-is@16.13.1, react-is@^16.7.0, react-is@^16.8.1: @@ -11345,13 +11338,13 @@ react-refresh@0.8.3: resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.8.3.tgz#721d4657672d400c5e3c75d063c4a85fb2d5d68f" integrity sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg== -react-select@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/react-select/-/react-select-4.3.0.tgz#6bde634ae7a378b49f3833c85c126f533483fa2e" - integrity sha512-SBPD1a3TJqE9zoI/jfOLCAoLr/neluaeokjOixr3zZ1vHezkom8K0A9J4QG9IWDqIDE9K/Mv+0y1GjidC2PDtQ== +react-select@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/react-select/-/react-select-4.3.1.tgz#389fc07c9bc7cf7d3c377b7a05ea18cd7399cb81" + integrity sha512-HBBd0dYwkF5aZk1zP81Wx5UsLIIT2lSvAY2JiJo199LjoLHoivjn9//KsmvQMEFGNhe58xyuOITjfxKCcGc62Q== dependencies: "@babel/runtime" "^7.12.0" - "@emotion/cache" "^11.0.0" + "@emotion/cache" "^11.4.0" "@emotion/react" "^11.1.1" memoize-one "^5.0.0" prop-types "^15.6.0" @@ -12081,10 +12074,10 @@ semantic-release-docker-buildx@^1.0.1: dependencies: execa "^5.0.0" -semantic-release@^17.4.2: - version "17.4.2" - resolved "https://registry.yarnpkg.com/semantic-release/-/semantic-release-17.4.2.tgz#b5147b5a629c227b7074ad4cc89920a14cb08c96" - integrity sha512-TPLWuoe2L2DmgnQEh+OLWW5V1T+ZAa1xWuHXsuPAWEko0BqSdLPl+5+BlQ+D5Bp27S5gDJ1//Y1tgbmvUhnOCw== +semantic-release@^17.4.3: + version "17.4.3" + resolved "https://registry.yarnpkg.com/semantic-release/-/semantic-release-17.4.3.tgz#e01b2d0c0adaf5a6cc427359f1df755d1e908927" + integrity sha512-lTOUSrkbaQ+TRs3+BmtJhLtPSyiO7iTGmh5SyuEFqNO8HQbQ4nzXg4UlPrDQasO/C0eFK/V0eCbOzJdjtKBOYw== dependencies: "@semantic-release/commit-analyzer" "^8.0.0" "@semantic-release/error" "^2.2.0" @@ -12102,7 +12095,7 @@ semantic-release@^17.4.2: git-log-parser "^1.2.0" hook-std "^2.0.0" hosted-git-info "^4.0.0" - lodash "^4.17.15" + lodash "^4.17.21" marked "^2.0.0" marked-terminal "^4.1.1" micromatch "^4.0.2" From aa86809dc93499e9897aa5f56b457ac3d492a4e1 Mon Sep 17 00:00:00 2001 From: sct Date: Thu, 13 May 2021 23:48:08 +0900 Subject: [PATCH 16/73] style: bump prettier and format app --- .gitbook.yaml | 4 +- .github/FUNDING.yml | 2 +- package.json | 2 +- server/lib/notifications/agents/discord.ts | 10 ++--- server/lib/notifications/agents/email.ts | 3 +- server/lib/notifications/agents/lunasea.ts | 3 +- server/lib/notifications/agents/pushbullet.ts | 3 +- server/lib/notifications/agents/pushover.ts | 12 ++---- server/lib/notifications/agents/slack.ts | 3 +- server/lib/notifications/agents/telegram.ts | 3 +- server/lib/notifications/agents/webhook.ts | 3 +- server/lib/notifications/agents/webpush.ts | 3 +- server/lib/scanners/baseScanner.ts | 20 ++++------ server/lib/scanners/plex/index.ts | 3 +- server/lib/scanners/radarr/index.ts | 3 +- server/lib/scanners/sonarr/index.ts | 3 +- ...8217312474-AddUserRequestDeleteCascades.ts | 3 +- .../1608477467935-AddLastSeasonChangeMedia.ts | 3 +- ...477467936-ForceDropImdbUniqueConstraint.ts | 3 +- ...9236552057-RemoveTmdbIdUniqueConstraint.ts | 3 +- ...1610522845513-AddMediaAddedFieldToMedia.ts | 3 +- ...757511674-SonarrRadarrSyncServiceFields.ts | 3 +- ...78137-AddResetPasswordGuidAndExpiryDate.ts | 3 +- ...1613955393450-UpdateUserSettingsRegions.ts | 3 +- ...95680-AddTelegramSettingsToUserSettings.ts | 3 +- ...624225464-CreateTagsFieldonMediaRequest.ts | 3 +- ...-AddUserSettingsNotificationAgentsField.ts | 3 +- ...18912653565-CreateUserPushSubscriptions.ts | 3 +- ...817343-AddUserSettingsNotificationTypes.ts | 3 +- server/routes/media.ts | 6 +-- snap/snapcraft.yaml | 40 +++++++++---------- src/components/CollectionDetails/index.tsx | 5 +-- src/components/Discover/index.tsx | 12 +++--- .../Layout/LanguagePicker/index.tsx | 8 ++-- src/components/MovieDetails/index.tsx | 7 ++-- src/components/PersonDetails/index.tsx | 10 ++--- .../RequestList/RequestItem/index.tsx | 13 +++--- .../RequestModal/AdvancedRequester/index.tsx | 28 ++++++------- .../RequestModal/MovieRequestModal.tsx | 6 +-- .../RequestModal/TvRequestModal.tsx | 6 +-- .../NotificationsPushover/index.tsx | 27 ++++++------- src/components/Settings/SettingsMain.tsx | 8 ++-- src/components/Settings/SettingsPlex.tsx | 5 +-- src/components/TvDetails/index.tsx | 12 +++--- src/components/UserList/index.tsx | 13 +++--- .../UserGeneralSettings/index.tsx | 8 ++-- src/hooks/useVerticalScroll.ts | 5 +-- src/pages/collection/[collectionId]/index.tsx | 35 ++++++++-------- src/utils/plex.ts | 10 ++--- yarn.lock | 8 ++-- 50 files changed, 196 insertions(+), 195 deletions(-) diff --git a/.gitbook.yaml b/.gitbook.yaml index 6c5133ed..2b0a6c4e 100644 --- a/.gitbook.yaml +++ b/.gitbook.yaml @@ -1,5 +1,5 @@ root: ./docs ​structure: - readme: README.md - summary: SUMMARY.md​ + readme: README.md + summary: SUMMARY.md​ diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 9d966899..6b2dc700 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,2 +1,2 @@ -github: [sct] +github: [sct] patreon: overseerr diff --git a/package.json b/package.json index 1cacbf48..3f93ce58 100644 --- a/package.json +++ b/package.json @@ -131,7 +131,7 @@ "lint-staged": "^11.0.0", "nodemon": "^2.0.7", "postcss": "^8.2.15", - "prettier": "^2.2.1", + "prettier": "^2.3.0", "semantic-release": "^17.4.3", "semantic-release-docker-buildx": "^1.0.1", "tailwindcss": "^2.1.2", diff --git a/server/lib/notifications/agents/discord.ts b/server/lib/notifications/agents/discord.ts index 1b79f7e3..f88d8b88 100644 --- a/server/lib/notifications/agents/discord.ts +++ b/server/lib/notifications/agents/discord.ts @@ -91,7 +91,8 @@ interface DiscordWebhookPayload { class DiscordAgent extends BaseAgent - implements NotificationAgent { + implements NotificationAgent +{ protected getSettings(): NotificationAgentDiscord { if (this.settings) { return this.settings; @@ -217,11 +218,8 @@ class DiscordAgent let content = undefined; try { - const { - botUsername, - botAvatarUrl, - webhookUrl, - } = this.getSettings().options; + const { botUsername, botAvatarUrl, webhookUrl } = + this.getSettings().options; if (!webhookUrl) { return false; diff --git a/server/lib/notifications/agents/email.ts b/server/lib/notifications/agents/email.ts index d3f34186..56401c0d 100644 --- a/server/lib/notifications/agents/email.ts +++ b/server/lib/notifications/agents/email.ts @@ -16,7 +16,8 @@ import { BaseAgent, NotificationAgent, NotificationPayload } from './agent'; class EmailAgent extends BaseAgent - implements NotificationAgent { + implements NotificationAgent +{ protected getSettings(): NotificationAgentEmail { if (this.settings) { return this.settings; diff --git a/server/lib/notifications/agents/lunasea.ts b/server/lib/notifications/agents/lunasea.ts index 9fc332f6..24fa5f44 100644 --- a/server/lib/notifications/agents/lunasea.ts +++ b/server/lib/notifications/agents/lunasea.ts @@ -7,7 +7,8 @@ import { BaseAgent, NotificationAgent, NotificationPayload } from './agent'; class LunaSeaAgent extends BaseAgent - implements NotificationAgent { + implements NotificationAgent +{ protected getSettings(): NotificationAgentLunaSea { if (this.settings) { return this.settings; diff --git a/server/lib/notifications/agents/pushbullet.ts b/server/lib/notifications/agents/pushbullet.ts index ab4b811e..02431fcd 100644 --- a/server/lib/notifications/agents/pushbullet.ts +++ b/server/lib/notifications/agents/pushbullet.ts @@ -12,7 +12,8 @@ interface PushbulletPayload { class PushbulletAgent extends BaseAgent - implements NotificationAgent { + implements NotificationAgent +{ protected getSettings(): NotificationAgentPushbullet { if (this.settings) { return this.settings; diff --git a/server/lib/notifications/agents/pushover.ts b/server/lib/notifications/agents/pushover.ts index 858da0c6..0c38b1bd 100644 --- a/server/lib/notifications/agents/pushover.ts +++ b/server/lib/notifications/agents/pushover.ts @@ -18,7 +18,8 @@ interface PushoverPayload { class PushoverAgent extends BaseAgent - implements NotificationAgent { + implements NotificationAgent +{ protected getSettings(): NotificationAgentPushover { if (this.settings) { return this.settings; @@ -170,13 +171,8 @@ class PushoverAgent const { accessToken, userToken } = this.getSettings().options; - const { - title, - message, - url, - url_title, - priority, - } = this.constructMessageDetails(type, payload); + const { title, message, url, url_title, priority } = + this.constructMessageDetails(type, payload); await axios.post(endpoint, { token: accessToken, diff --git a/server/lib/notifications/agents/slack.ts b/server/lib/notifications/agents/slack.ts index 7004fe4b..40ace37e 100644 --- a/server/lib/notifications/agents/slack.ts +++ b/server/lib/notifications/agents/slack.ts @@ -43,7 +43,8 @@ interface SlackBlockEmbed { class SlackAgent extends BaseAgent - implements NotificationAgent { + implements NotificationAgent +{ protected getSettings(): NotificationAgentSlack { if (this.settings) { return this.settings; diff --git a/server/lib/notifications/agents/telegram.ts b/server/lib/notifications/agents/telegram.ts index 1a22ddce..c62e7027 100644 --- a/server/lib/notifications/agents/telegram.ts +++ b/server/lib/notifications/agents/telegram.ts @@ -26,7 +26,8 @@ interface TelegramPhotoPayload { class TelegramAgent extends BaseAgent - implements NotificationAgent { + implements NotificationAgent +{ private baseUrl = 'https://api.telegram.org/'; protected getSettings(): NotificationAgentTelegram { diff --git a/server/lib/notifications/agents/webhook.ts b/server/lib/notifications/agents/webhook.ts index 7d8cbd86..946bd3f7 100644 --- a/server/lib/notifications/agents/webhook.ts +++ b/server/lib/notifications/agents/webhook.ts @@ -40,7 +40,8 @@ const KeyMap: Record = { class WebhookAgent extends BaseAgent - implements NotificationAgent { + implements NotificationAgent +{ protected getSettings(): NotificationAgentWebhook { if (this.settings) { return this.settings; diff --git a/server/lib/notifications/agents/webpush.ts b/server/lib/notifications/agents/webpush.ts index fb337670..6af5b2bb 100644 --- a/server/lib/notifications/agents/webpush.ts +++ b/server/lib/notifications/agents/webpush.ts @@ -26,7 +26,8 @@ interface PushNotificationPayload { class WebPushAgent extends BaseAgent - implements NotificationAgent { + implements NotificationAgent +{ protected getSettings(): NotificationAgentConfig { if (this.settings) { return this.settings; diff --git a/server/lib/scanners/baseScanner.ts b/server/lib/scanners/baseScanner.ts index b7e36547..1adbad48 100644 --- a/server/lib/scanners/baseScanner.ts +++ b/server/lib/scanners/baseScanner.ts @@ -145,9 +145,8 @@ class BaseScanner { existing[is4k ? 'externalServiceId4k' : 'externalServiceId'] !== externalServiceId ) { - existing[ - is4k ? 'externalServiceId4k' : 'externalServiceId' - ] = externalServiceId; + existing[is4k ? 'externalServiceId4k' : 'externalServiceId'] = + externalServiceId; changedExisting = true; } @@ -156,9 +155,8 @@ class BaseScanner { existing[is4k ? 'externalServiceSlug4k' : 'externalServiceSlug'] !== externalServiceSlug ) { - existing[ - is4k ? 'externalServiceSlug4k' : 'externalServiceSlug' - ] = externalServiceSlug; + existing[is4k ? 'externalServiceSlug4k' : 'externalServiceSlug'] = + externalServiceSlug; changedExisting = true; } @@ -389,15 +387,13 @@ class BaseScanner { } if (externalServiceId !== undefined) { - media[ - is4k ? 'externalServiceId4k' : 'externalServiceId' - ] = externalServiceId; + media[is4k ? 'externalServiceId4k' : 'externalServiceId'] = + externalServiceId; } if (externalServiceSlug !== undefined) { - media[ - is4k ? 'externalServiceSlug4k' : 'externalServiceSlug' - ] = externalServiceSlug; + media[is4k ? 'externalServiceSlug4k' : 'externalServiceSlug'] = + externalServiceSlug; } // If the show is already available, and there are no new seasons, dont adjust diff --git a/server/lib/scanners/plex/index.ts b/server/lib/scanners/plex/index.ts index dc136900..5a4bfc08 100644 --- a/server/lib/scanners/plex/index.ts +++ b/server/lib/scanners/plex/index.ts @@ -30,7 +30,8 @@ type SyncStatus = StatusBase & { class PlexScanner extends BaseScanner - implements RunnableScanner { + implements RunnableScanner +{ private plexClient: PlexAPI; private libraries: Library[]; private currentLibrary: Library; diff --git a/server/lib/scanners/radarr/index.ts b/server/lib/scanners/radarr/index.ts index 4c4e6e7f..71d687dc 100644 --- a/server/lib/scanners/radarr/index.ts +++ b/server/lib/scanners/radarr/index.ts @@ -10,7 +10,8 @@ type SyncStatus = StatusBase & { class RadarrScanner extends BaseScanner - implements RunnableScanner { + implements RunnableScanner +{ private servers: RadarrSettings[]; private currentServer: RadarrSettings; private radarrApi: RadarrAPI; diff --git a/server/lib/scanners/sonarr/index.ts b/server/lib/scanners/sonarr/index.ts index 73500db9..db3aef98 100644 --- a/server/lib/scanners/sonarr/index.ts +++ b/server/lib/scanners/sonarr/index.ts @@ -16,7 +16,8 @@ type SyncStatus = StatusBase & { class SonarrScanner extends BaseScanner - implements RunnableScanner { + implements RunnableScanner +{ private servers: SonarrSettings[]; private currentServer: SonarrSettings; private sonarrApi: SonarrAPI; diff --git a/server/migration/1608217312474-AddUserRequestDeleteCascades.ts b/server/migration/1608217312474-AddUserRequestDeleteCascades.ts index ce3de849..e2aa8865 100644 --- a/server/migration/1608217312474-AddUserRequestDeleteCascades.ts +++ b/server/migration/1608217312474-AddUserRequestDeleteCascades.ts @@ -1,7 +1,8 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; export class AddUserRequestDeleteCascades1608219049304 - implements MigrationInterface { + implements MigrationInterface +{ name = 'AddUserRequestDeleteCascades1608219049304'; public async up(queryRunner: QueryRunner): Promise { diff --git a/server/migration/1608477467935-AddLastSeasonChangeMedia.ts b/server/migration/1608477467935-AddLastSeasonChangeMedia.ts index 89bb4317..fba7af7f 100644 --- a/server/migration/1608477467935-AddLastSeasonChangeMedia.ts +++ b/server/migration/1608477467935-AddLastSeasonChangeMedia.ts @@ -1,7 +1,8 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; export class AddLastSeasonChangeMedia1608477467935 - implements MigrationInterface { + implements MigrationInterface +{ name = 'AddLastSeasonChangeMedia1608477467935'; public async up(queryRunner: QueryRunner): Promise { diff --git a/server/migration/1608477467936-ForceDropImdbUniqueConstraint.ts b/server/migration/1608477467936-ForceDropImdbUniqueConstraint.ts index 9cd006ec..6a109e4d 100644 --- a/server/migration/1608477467936-ForceDropImdbUniqueConstraint.ts +++ b/server/migration/1608477467936-ForceDropImdbUniqueConstraint.ts @@ -1,7 +1,8 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; export class ForceDropImdbUniqueConstraint1608477467935 - implements MigrationInterface { + implements MigrationInterface +{ name = 'ForceDropImdbUniqueConstraint1608477467936'; public async up(queryRunner: QueryRunner): Promise { diff --git a/server/migration/1609236552057-RemoveTmdbIdUniqueConstraint.ts b/server/migration/1609236552057-RemoveTmdbIdUniqueConstraint.ts index 0be26699..2cd5415e 100644 --- a/server/migration/1609236552057-RemoveTmdbIdUniqueConstraint.ts +++ b/server/migration/1609236552057-RemoveTmdbIdUniqueConstraint.ts @@ -1,7 +1,8 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; export class RemoveTmdbIdUniqueConstraint1609236552057 - implements MigrationInterface { + implements MigrationInterface +{ name = 'RemoveTmdbIdUniqueConstraint1609236552057'; public async up(queryRunner: QueryRunner): Promise { diff --git a/server/migration/1610522845513-AddMediaAddedFieldToMedia.ts b/server/migration/1610522845513-AddMediaAddedFieldToMedia.ts index 78dbc06e..25e42a74 100644 --- a/server/migration/1610522845513-AddMediaAddedFieldToMedia.ts +++ b/server/migration/1610522845513-AddMediaAddedFieldToMedia.ts @@ -1,7 +1,8 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; export class AddMediaAddedFieldToMedia1610522845513 - implements MigrationInterface { + implements MigrationInterface +{ name = 'AddMediaAddedFieldToMedia1610522845513'; public async up(queryRunner: QueryRunner): Promise { diff --git a/server/migration/1611757511674-SonarrRadarrSyncServiceFields.ts b/server/migration/1611757511674-SonarrRadarrSyncServiceFields.ts index 49f47e40..355384a0 100644 --- a/server/migration/1611757511674-SonarrRadarrSyncServiceFields.ts +++ b/server/migration/1611757511674-SonarrRadarrSyncServiceFields.ts @@ -1,7 +1,8 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; export class SonarrRadarrSyncServiceFields1611757511674 - implements MigrationInterface { + implements MigrationInterface +{ name = 'SonarrRadarrSyncServiceFields1611757511674'; public async up(queryRunner: QueryRunner): Promise { diff --git a/server/migration/1612482778137-AddResetPasswordGuidAndExpiryDate.ts b/server/migration/1612482778137-AddResetPasswordGuidAndExpiryDate.ts index 01278c01..7d191d10 100644 --- a/server/migration/1612482778137-AddResetPasswordGuidAndExpiryDate.ts +++ b/server/migration/1612482778137-AddResetPasswordGuidAndExpiryDate.ts @@ -1,7 +1,8 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; export class AddResetPasswordGuidAndExpiryDate1612482778137 - implements MigrationInterface { + implements MigrationInterface +{ name = 'AddResetPasswordGuidAndExpiryDate1612482778137'; public async up(queryRunner: QueryRunner): Promise { diff --git a/server/migration/1613955393450-UpdateUserSettingsRegions.ts b/server/migration/1613955393450-UpdateUserSettingsRegions.ts index 17c25ec2..d33df4ee 100644 --- a/server/migration/1613955393450-UpdateUserSettingsRegions.ts +++ b/server/migration/1613955393450-UpdateUserSettingsRegions.ts @@ -1,7 +1,8 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; export class UpdateUserSettingsRegions1613955393450 - implements MigrationInterface { + implements MigrationInterface +{ name = 'UpdateUserSettingsRegions1613955393450'; public async up(queryRunner: QueryRunner): Promise { diff --git a/server/migration/1614334195680-AddTelegramSettingsToUserSettings.ts b/server/migration/1614334195680-AddTelegramSettingsToUserSettings.ts index 1e0175cc..5e480d48 100644 --- a/server/migration/1614334195680-AddTelegramSettingsToUserSettings.ts +++ b/server/migration/1614334195680-AddTelegramSettingsToUserSettings.ts @@ -1,7 +1,8 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; export class AddTelegramSettingsToUserSettings1614334195680 - implements MigrationInterface { + implements MigrationInterface +{ name = 'AddTelegramSettingsToUserSettings1614334195680'; public async up(queryRunner: QueryRunner): Promise { diff --git a/server/migration/1617624225464-CreateTagsFieldonMediaRequest.ts b/server/migration/1617624225464-CreateTagsFieldonMediaRequest.ts index c8bd6dd4..d498a8b1 100644 --- a/server/migration/1617624225464-CreateTagsFieldonMediaRequest.ts +++ b/server/migration/1617624225464-CreateTagsFieldonMediaRequest.ts @@ -1,7 +1,8 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; export class CreateTagsFieldonMediaRequest1617624225464 - implements MigrationInterface { + implements MigrationInterface +{ name = 'CreateTagsFieldonMediaRequest1617624225464'; public async up(queryRunner: QueryRunner): Promise { diff --git a/server/migration/1617730837489-AddUserSettingsNotificationAgentsField.ts b/server/migration/1617730837489-AddUserSettingsNotificationAgentsField.ts index 86a52c08..79cd061b 100644 --- a/server/migration/1617730837489-AddUserSettingsNotificationAgentsField.ts +++ b/server/migration/1617730837489-AddUserSettingsNotificationAgentsField.ts @@ -1,7 +1,8 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; export class AddUserSettingsNotificationAgentsField1617730837489 - implements MigrationInterface { + implements MigrationInterface +{ name = 'AddUserSettingsNotificationAgentsField1617730837489'; public async up(queryRunner: QueryRunner): Promise { diff --git a/server/migration/1618912653565-CreateUserPushSubscriptions.ts b/server/migration/1618912653565-CreateUserPushSubscriptions.ts index 90ea0d3f..539221d1 100644 --- a/server/migration/1618912653565-CreateUserPushSubscriptions.ts +++ b/server/migration/1618912653565-CreateUserPushSubscriptions.ts @@ -1,7 +1,8 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; export class CreateUserPushSubscriptions1618912653565 - implements MigrationInterface { + implements MigrationInterface +{ name = 'CreateUserPushSubscriptions1618912653565'; public async up(queryRunner: QueryRunner): Promise { diff --git a/server/migration/1619339817343-AddUserSettingsNotificationTypes.ts b/server/migration/1619339817343-AddUserSettingsNotificationTypes.ts index 67d77072..cccdae2f 100644 --- a/server/migration/1619339817343-AddUserSettingsNotificationTypes.ts +++ b/server/migration/1619339817343-AddUserSettingsNotificationTypes.ts @@ -1,7 +1,8 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; export class AddUserSettingsNotificationTypes1619339817343 - implements MigrationInterface { + implements MigrationInterface +{ name = 'AddUserSettingsNotificationTypes1619339817343'; public async up(queryRunner: QueryRunner): Promise { diff --git a/server/routes/media.ts b/server/routes/media.ts index c77f7708..34819782 100644 --- a/server/routes/media.ts +++ b/server/routes/media.ts @@ -15,10 +15,8 @@ mediaRoutes.get('/', async (req, res, next) => { const pageSize = req.query.take ? Number(req.query.take) : 20; const skip = req.query.skip ? Number(req.query.skip) : 0; - let statusFilter: - | MediaStatus - | FindOperator - | undefined = undefined; + let statusFilter: MediaStatus | FindOperator | undefined = + undefined; switch (req.query.filter) { case 'available': diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index 0d73f8ad..0f03c059 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -11,22 +11,22 @@ confinement: strict parts: overseerr: plugin: nodejs - nodejs-version: "14.16.1" - nodejs-package-manager: "yarn" + nodejs-version: '14.16.1' + nodejs-package-manager: 'yarn' nodejs-yarn-version: v1.22.10 build-packages: - git - on arm64: - - build-essential - - automake - - python-gi - - python-gi-dev + - build-essential + - automake + - python-gi + - python-gi-dev - on armhf: - - libatomic1 - - build-essential - - automake - - python-gi - - python-gi-dev + - libatomic1 + - build-essential + - automake + - python-gi + - python-gi-dev source: . override-pull: | snapcraftctl pull @@ -56,7 +56,7 @@ parts: snapcraftctl set-version "$SNAP_VERSION" snapcraftctl set-grade "$GRADE" build-environment: - - PATH: "$SNAPCRAFT_PART_BUILD/node_modules/.bin:$SNAPCRAFT_PART_BUILD/../npm/bin:$PATH" + - PATH: '$SNAPCRAFT_PART_BUILD/node_modules/.bin:$SNAPCRAFT_PART_BUILD/../npm/bin:$PATH' override-build: | set -e # Set COMMIT_TAG before the build begins @@ -72,11 +72,9 @@ parts: rm -rf $SNAPCRAFT_PART_INSTALL/.github && rm $SNAPCRAFT_PART_INSTALL/.gitbook.yaml stage-packages: - on armhf: - - libatomic1 - stage: - [ .next, ./* ] - prime: - [ .next, ./* ] + - libatomic1 + stage: [.next, ./*] + prime: [.next, ./*] apps: deamon: @@ -89,8 +87,8 @@ apps: - network - network-bind environment: - PATH: "$SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH" - OVERSEERR_SNAP: "True" + PATH: '$SNAP/usr/sbin:$SNAP/usr/bin:$SNAP/sbin:$SNAP/bin:$PATH' + OVERSEERR_SNAP: 'True' CONFIG_DIRECTORY: $SNAP_USER_COMMON - LOG_LEVEL: "debug" - NODE_ENV: "production" + LOG_LEVEL: 'debug' + NODE_ENV: 'production' diff --git a/src/components/CollectionDetails/index.tsx b/src/components/CollectionDetails/index.tsx index 180bd2ed..56b368d9 100644 --- a/src/components/CollectionDetails/index.tsx +++ b/src/components/CollectionDetails/index.tsx @@ -60,9 +60,8 @@ const CollectionDetails: React.FC = ({ } ); - const { data: genres } = useSWR<{ id: number; name: string }[]>( - `/api/v1/genres/movie` - ); + const { data: genres } = + useSWR<{ id: number; name: string }[]>(`/api/v1/genres/movie`); if (!data && !error) { return ; diff --git a/src/components/Discover/index.tsx b/src/components/Discover/index.tsx index 0d7b1da7..3ebd6226 100644 --- a/src/components/Discover/index.tsx +++ b/src/components/Discover/index.tsx @@ -35,13 +35,11 @@ const Discover: React.FC = () => { { revalidateOnMount: true } ); - const { - data: requests, - error: requestError, - } = useSWR( - '/api/v1/request?filter=all&take=10&sort=modified&skip=0', - { revalidateOnMount: true } - ); + const { data: requests, error: requestError } = + useSWR( + '/api/v1/request?filter=all&take=10&sort=modified&skip=0', + { revalidateOnMount: true } + ); return ( <> diff --git a/src/components/Layout/LanguagePicker/index.tsx b/src/components/Layout/LanguagePicker/index.tsx index cd589dde..71a1db36 100644 --- a/src/components/Layout/LanguagePicker/index.tsx +++ b/src/components/Layout/LanguagePicker/index.tsx @@ -65,9 +65,11 @@ const LanguagePicker: React.FC = () => { } defaultValue={locale} > - {(Object.keys( - availableLanguages - ) as (keyof typeof availableLanguages)[]).map((key) => ( + {( + Object.keys( + availableLanguages + ) as (keyof typeof availableLanguages)[] + ).map((key) => ( diff --git a/src/components/MovieDetails/index.tsx b/src/components/MovieDetails/index.tsx index eb7de776..242c3fdf 100644 --- a/src/components/MovieDetails/index.tsx +++ b/src/components/MovieDetails/index.tsx @@ -98,9 +98,10 @@ const MovieDetails: React.FC = ({ movie }) => { `/api/v1/movie/${router.query.movieId}/ratings` ); - const sortedCrew = useMemo(() => sortCrewPriority(data?.credits.crew ?? []), [ - data, - ]); + const sortedCrew = useMemo( + () => sortCrewPriority(data?.credits.crew ?? []), + [data] + ); if (!data && !error) { return ; diff --git a/src/components/PersonDetails/index.tsx b/src/components/PersonDetails/index.tsx index 3ea148c0..82391445 100644 --- a/src/components/PersonDetails/index.tsx +++ b/src/components/PersonDetails/index.tsx @@ -32,12 +32,10 @@ const PersonDetails: React.FC = () => { ); const [showBio, setShowBio] = useState(false); - const { - data: combinedCredits, - error: errorCombinedCredits, - } = useSWR( - `/api/v1/person/${router.query.personId}/combined_credits` - ); + const { data: combinedCredits, error: errorCombinedCredits } = + useSWR( + `/api/v1/person/${router.query.personId}/combined_credits` + ); const sortedCast = useMemo(() => { const grouped = groupBy(combinedCredits?.cast ?? [], 'id'); diff --git a/src/components/RequestList/RequestItem/index.tsx b/src/components/RequestList/RequestItem/index.tsx index 8127eeb2..3c4fbd30 100644 --- a/src/components/RequestList/RequestItem/index.tsx +++ b/src/components/RequestList/RequestItem/index.tsx @@ -106,12 +106,13 @@ const RequestItem: React.FC = ({ const { data: title, error } = useSWR( inView ? `${url}` : null ); - const { data: requestData, revalidate, mutate } = useSWR( - `/api/v1/request/${request.id}`, - { - initialData: request, - } - ); + const { + data: requestData, + revalidate, + mutate, + } = useSWR(`/api/v1/request/${request.id}`, { + initialData: request, + }); const [isRetrying, setRetrying] = useState(false); diff --git a/src/components/RequestModal/AdvancedRequester/index.tsx b/src/components/RequestModal/AdvancedRequester/index.tsx index 614da3a8..20dbbde0 100644 --- a/src/components/RequestModal/AdvancedRequester/index.tsx +++ b/src/components/RequestModal/AdvancedRequester/index.tsx @@ -97,21 +97,19 @@ const AdvancedRequester: React.FC = ({ defaultOverrides?.tags ?? [] ); - const { - data: serverData, - isValidating, - } = useSWR( - selectedServer !== null - ? `/api/v1/service/${ - type === 'movie' ? 'radarr' : 'sonarr' - }/${selectedServer}` - : null, - { - refreshInterval: 0, - refreshWhenHidden: false, - revalidateOnFocus: false, - } - ); + const { data: serverData, isValidating } = + useSWR( + selectedServer !== null + ? `/api/v1/service/${ + type === 'movie' ? 'radarr' : 'sonarr' + }/${selectedServer}` + : null, + { + refreshInterval: 0, + refreshWhenHidden: false, + revalidateOnFocus: false, + } + ); const [selectedUser, setSelectedUser] = useState( requestUser ?? null diff --git a/src/components/RequestModal/MovieRequestModal.tsx b/src/components/RequestModal/MovieRequestModal.tsx index 61fb7c67..ccfa4f1f 100644 --- a/src/components/RequestModal/MovieRequestModal.tsx +++ b/src/components/RequestModal/MovieRequestModal.tsx @@ -51,10 +51,8 @@ const MovieRequestModal: React.FC = ({ is4k = false, }) => { const [isUpdating, setIsUpdating] = useState(false); - const [ - requestOverrides, - setRequestOverrides, - ] = useState(null); + const [requestOverrides, setRequestOverrides] = + useState(null); const { addToast } = useToasts(); const { data, error } = useSWR(`/api/v1/movie/${tmdbId}`, { revalidateOnMount: true, diff --git a/src/components/RequestModal/TvRequestModal.tsx b/src/components/RequestModal/TvRequestModal.tsx index c0ac5f11..64aa1481 100644 --- a/src/components/RequestModal/TvRequestModal.tsx +++ b/src/components/RequestModal/TvRequestModal.tsx @@ -74,10 +74,8 @@ const TvRequestModal: React.FC = ({ (season) => season.seasonNumber ); const { data, error } = useSWR(`/api/v1/tv/${tmdbId}`); - const [ - requestOverrides, - setRequestOverrides, - ] = useState(null); + const [requestOverrides, setRequestOverrides] = + useState(null); const [selectedSeasons, setSelectedSeasons] = useState( editRequest ? editingSeasons : [] ); diff --git a/src/components/Settings/Notifications/NotificationsPushover/index.tsx b/src/components/Settings/Notifications/NotificationsPushover/index.tsx index 058be3e6..922cf64d 100644 --- a/src/components/Settings/Notifications/NotificationsPushover/index.tsx +++ b/src/components/Settings/Notifications/NotificationsPushover/index.tsx @@ -160,20 +160,19 @@ const NotificationsPushover: React.FC = () => { * {intl.formatMessage(messages.accessTokenTip, { - ApplicationRegistrationLink: function ApplicationRegistrationLink( - msg - ) { - return ( - - {msg} - - ); - }, + ApplicationRegistrationLink: + function ApplicationRegistrationLink(msg) { + return ( + + {msg} + + ); + }, })} diff --git a/src/components/Settings/SettingsMain.tsx b/src/components/Settings/SettingsMain.tsx index 1f1ed4c9..be136122 100644 --- a/src/components/Settings/SettingsMain.tsx +++ b/src/components/Settings/SettingsMain.tsx @@ -298,9 +298,11 @@ const SettingsMain: React.FC = () => {
- {(Object.keys( - availableLanguages - ) as (keyof typeof availableLanguages)[]).map((key) => ( + {( + Object.keys( + availableLanguages + ) as (keyof typeof availableLanguages)[] + ).map((key) => ( - {(Object.keys( - availableLanguages - ) as (keyof typeof availableLanguages)[]).map((key) => ( + {( + Object.keys( + availableLanguages + ) as (keyof typeof availableLanguages)[] + ).map((key) => (