From a5a9c62732b152d0f0479260fbf2ff73abdf32a9 Mon Sep 17 00:00:00 2001 From: KamilPawel Date: Thu, 28 Sep 2023 16:58:29 +0100 Subject: [PATCH 01/52] revert --- frontend/package.json | 2 +- frontend/src/app/api/index.ts | 11 ++- frontend/src/app/api/teacher/teach.ts | 74 ++++++++++++++++++- frontend/src/app/router/paths.ts | 1 + frontend/src/app/router/routes/teacher.tsx | 5 ++ .../deleteAccountForm/TeacherDialog.tsx | 1 - .../newStudentsTable/NewStudentsTable.tsx | 28 ++++++- .../student/editStudent/EditStudent.tsx | 74 +++++++++++++++---- .../editStudent/UpdatedStudentCredentials.tsx | 38 ++++++++++ .../teacherOnboarding/ClassCredentials.tsx | 47 +++++++++--- frontend/yarn.lock | 6 +- 11 files changed, 249 insertions(+), 38 deletions(-) create mode 100644 frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/UpdatedStudentCredentials.tsx diff --git a/frontend/package.json b/frontend/package.json index 9ff7c4fd..9a056561 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -28,7 +28,7 @@ "@mui/icons-material": "^5.11.11", "@mui/material": "^5.11.12", "@reduxjs/toolkit": "^1.9.3", - "codeforlife": "github:ocadotechnology/codeforlife-package-javascript#v1.27.3", + "codeforlife": "github:ocadotechnology/codeforlife-package-javascript#disableErrorPageHandling", "country-list": "^2.3.0", "crypto-js": "^4.1.1", "formik": "^2.2.9", diff --git a/frontend/src/app/api/index.ts b/frontend/src/app/api/index.ts index 58c7646b..64d826e8 100644 --- a/frontend/src/app/api/index.ts +++ b/frontend/src/app/api/index.ts @@ -45,7 +45,12 @@ import { useResendInviteMutation, useDeleteInviteMutation } from './teacher/dashboard'; -import { useGetClassQuery, useUpdateClassMutation } from './teacher/teach'; +import { + useGetClassQuery, + useUpdateClassMutation, + useEditStudentNameMutation, + useEditStudentPasswordMutation +} from './teacher/teach'; export default api; export { @@ -89,5 +94,7 @@ export { useDeleteInviteMutation, // teacher/teach useGetClassQuery, - useUpdateClassMutation + useUpdateClassMutation, + useEditStudentNameMutation, + useEditStudentPasswordMutation }; diff --git a/frontend/src/app/api/teacher/teach.ts b/frontend/src/app/api/teacher/teach.ts index 97bdd601..439d7480 100644 --- a/frontend/src/app/api/teacher/teach.ts +++ b/frontend/src/app/api/teacher/teach.ts @@ -1,7 +1,60 @@ import api from '../api'; +interface StudentInfo { + id: number; + name: string; + password: string; + loginUrl: string; +} + +export interface ResetStudentPasswordResponseProps { + class: string; + studentsInfo: StudentInfo[]; + onboardingDone: boolean; + queryData: StudentInfo[]; + classUrl: string; +} + const teachApi = api.injectEndpoints({ endpoints: (build) => ({ + editStudentPassword: build.mutation< + ResetStudentPasswordResponseProps, + { + studentId: string; + password: string; + confirmPassword: string; + } + >({ + query: ({ studentId, password, confirmPassword }) => ({ + url: `teach/student/edit/${studentId}`, + method: 'POST', + body: { + password, + confirmPassword + }, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + } + }) + }), + editStudentName: build.mutation< + null, + { + studentId: string; + name: string; + } + >({ + query: ({ studentId, name }) => ({ + url: `teach/student/edit/${studentId}`, + method: 'POST', + body: { + name + }, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + } + }) + }), getClass: build.query< { // blockly_episodes @@ -48,9 +101,28 @@ const teachApi = api.injectEndpoints({ invalidatesTags: (result, error, { accessCode }) => [ { type: 'class', id: accessCode } ] + }), + getReminderCards: build.mutation({ + query: ({ accessCode, data }) => ({ + url: `teach/onboarding-class/${accessCode}/print-reminder-cards/`, + method: 'POST', + body: data, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + Accept: 'application/pdf' + }, + transformResponse: async (response: Response) => + await response.clone().blob() + }) }) }) }); export default teachApi; -export const { useGetClassQuery, useUpdateClassMutation } = teachApi; +export const { + useGetClassQuery, + useUpdateClassMutation, + useEditStudentNameMutation, + useEditStudentPasswordMutation, + useGetReminderCardsMutation +} = teachApi; diff --git a/frontend/src/app/router/paths.ts b/frontend/src/app/router/paths.ts index 8f2fc7c8..f8802b1a 100644 --- a/frontend/src/app/router/paths.ts +++ b/frontend/src/app/router/paths.ts @@ -24,6 +24,7 @@ const paths = _('', { classes: _('/classes', { editClass: _('/:accessCode', { additional: _('/additional'), + updatedStudentCredentials: _('/updated-student-credentials'), editStudent: _('/edit/?studentIds={studentIds}'), resetStudents: _('/reset/?studentIds={studentIds}'), moveStudents: _('/move/?studentIds={studentIds}'), diff --git a/frontend/src/app/router/routes/teacher.tsx b/frontend/src/app/router/routes/teacher.tsx index b819566b..8cd58098 100644 --- a/frontend/src/app/router/routes/teacher.tsx +++ b/frontend/src/app/router/routes/teacher.tsx @@ -6,6 +6,7 @@ import TeacherOnboarding from '../../../pages/teacherOnboarding/TeacherOnboardin import TeacherDashboard from '../../../pages/teacherDashboard/TeacherDashboard'; import AddExternalStudent from '../../../pages/teacherDashboard/classes/AddExternalStudent'; import AddedExternalStudent from '../../../pages/teacherDashboard/classes/AddedExternalStudent'; +import UpdatedStudentCredentials from '../../../pages/teacherDashboard/classes/editClass/student/editStudent/UpdatedStudentCredentials'; const teacher = <> path={`${paths.teacher.dashboard.student.added._}`} element={} /> + } + /> ; export default teacher; diff --git a/frontend/src/features/deleteAccountForm/TeacherDialog.tsx b/frontend/src/features/deleteAccountForm/TeacherDialog.tsx index 477c7133..498282e0 100644 --- a/frontend/src/features/deleteAccountForm/TeacherDialog.tsx +++ b/frontend/src/features/deleteAccountForm/TeacherDialog.tsx @@ -31,7 +31,6 @@ export const ConfirmPopup: React.FC = ({ const [deleteAccount] = useDeleteAccountMutation(); return ( -

       
         You are about to delete your account
       
diff --git a/frontend/src/features/newStudentsTable/NewStudentsTable.tsx b/frontend/src/features/newStudentsTable/NewStudentsTable.tsx
index 7e7b3eda..b3a320b4 100644
--- a/frontend/src/features/newStudentsTable/NewStudentsTable.tsx
+++ b/frontend/src/features/newStudentsTable/NewStudentsTable.tsx
@@ -21,6 +21,9 @@ import {
 
 import { primary } from 'codeforlife/lib/esm/theme/colors';
 import CopyToClipboardIcon from '../../components/CopyToClipboardIcon';
+import { useLocation } from 'react-router-dom';
+import teachApi from '../../app/api/teacher/teach';
+
 
 const WhiteTableCell: React.FC = ({
   style,
@@ -77,13 +80,16 @@ export interface NewStudentsTableProps {
 }
 
 const NewStudentsTable: React.FC = ({
-  classLink,
   students
 }) => {
   const nameCellWidth = '40%';
   const passwordCellWidth = '60%';
 
+  const location = useLocation();
   const theme = useTheme();
+  const classLink = location.state.updatedStudentCredentials.classLink;
+  const accessCode = location.state.updatedStudentCredentials.accessCode;
+  const [getReminderCards] = teachApi.useGetReminderCardsMutation();
   return (
     
       
@@ -104,6 +110,11 @@ const NewStudentsTable: React.FC = ({
           cards from the button below. Please ensure you share student passwords
           securely.
         
+        
+          
+            {JSON.stringify(location.state, null, 2)}
+          
+        
= ({ Class link: - {classLink} + {classLink} {'lol'} = ({ + + + + + + ; +}; + +export default UpdatedStudentCredentials; diff --git a/frontend/src/pages/teacherOnboarding/ClassCredentials.tsx b/frontend/src/pages/teacherOnboarding/ClassCredentials.tsx index fe57b4e0..7a20c47f 100644 --- a/frontend/src/pages/teacherOnboarding/ClassCredentials.tsx +++ b/frontend/src/pages/teacherOnboarding/ClassCredentials.tsx @@ -1,30 +1,54 @@ import React from 'react'; -import { useNavigate } from 'react-router-dom'; +import { useLocation, useNavigate } from 'react-router-dom'; import { Stack, Button } from '@mui/material'; import { - Check as CheckIcon + Check as CheckIcon, ChevronLeftOutlined } from '@mui/icons-material'; import { paths } from '../../app/router'; import NewStudentsTable from '../../features/newStudentsTable/NewStudentsTable'; - +import { ResetStudentPasswordResponseProps } from '../../app/api/teacher/teach'; const ClassCredentials: React.FC = () => { const navigate = useNavigate(); + const location = useLocation(); + const studentData = location.state as { updatedStudentCredentials: ResetStudentPasswordResponseProps; }; + let buttonText = 'Complete setup'; + let name = 'John'; + let password = 'very_good_password'; + let classLink = 'https://www.codeforlife.education/'; + let directLoginLink = 'https://www.codeforlife.education/'; + let alignItems = 'end'; + let startIcon = <>; + let endIcon = ; + let path = paths.teacher.dashboard.school._; + // TODO: Once the onboarding is implemented, we can remove this if statement. + // as well as re-defined variables above. We can just fetch the data from the useLocation hook. + if (studentData) { + const { studentsInfo } = studentData.updatedStudentCredentials; + name = studentsInfo[0].name; + password = studentsInfo[0].password; + classLink = studentData.updatedStudentCredentials.classUrl; + directLoginLink = studentsInfo[0].loginUrl; + alignItems = 'start'; + startIcon = ; + endIcon = <>; + path = paths.teacher.dashboard.classes._; + buttonText = 'Back to class'; + } // TODO: get from API. - const classLink = 'https://www.codeforlife.education/'; const students: Array<{ name: string; password: string; link: string; }> = ([ { - name: 'John', - password: 'ioykms', - link: 'https://www.codeforlife.education/' + name, + password, + link: directLoginLink } ]); @@ -33,13 +57,14 @@ const ClassCredentials: React.FC = () => { classLink={classLink} students={students} /> - + ; diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 4484049a..e04699a6 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -4208,9 +4208,9 @@ coa@^2.0.2: chalk "^2.4.1" q "^1.1.2" -"codeforlife@github:ocadotechnology/codeforlife-package-javascript#v1.27.3": - version "1.27.3" - resolved "https://codeload.github.com/ocadotechnology/codeforlife-package-javascript/tar.gz/28e7608018a00d2b822f09bc7bf63f50838977b5" +"codeforlife@github:ocadotechnology/codeforlife-package-javascript#disableErrorPageHandling": + version "1.27.2" + resolved "https://codeload.github.com/ocadotechnology/codeforlife-package-javascript/tar.gz/c5887d5bf5e90a93ecee072ebdb93f0f0078b86e" dependencies: "@emotion/react" "^11.10.6" "@emotion/styled" "^11.10.6" From ac2b2acac05f12522946bd6461785238b70ee950 Mon Sep 17 00:00:00 2001 From: KamilPawel Date: Thu, 28 Sep 2023 17:20:42 +0100 Subject: [PATCH 02/52] adapted the pdf view to react --- frontend/package.json | 2 +- frontend/src/app/api/api.ts | 4 +- frontend/yarn.lock | 2177 +++++++++++++++++++---------------- 3 files changed, 1203 insertions(+), 980 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 9a056561..55324ef8 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -28,7 +28,7 @@ "@mui/icons-material": "^5.11.11", "@mui/material": "^5.11.12", "@reduxjs/toolkit": "^1.9.3", - "codeforlife": "github:ocadotechnology/codeforlife-package-javascript#disableErrorPageHandling", + "codeforlife": "github:ocadotechnology/codeforlife-package-javascript#errorHandlingPage", "country-list": "^2.3.0", "crypto-js": "^4.1.1", "formik": "^2.2.9", diff --git a/frontend/src/app/api/api.ts b/frontend/src/app/api/api.ts index ad445c35..9272ec5d 100644 --- a/frontend/src/app/api/api.ts +++ b/frontend/src/app/api/api.ts @@ -1,11 +1,11 @@ import { createApi } from '@reduxjs/toolkit/query/react'; -import { TAG_TYPES, baseQuery } from 'codeforlife/lib/esm/api'; +import { tagTypes, baseQuery } from 'codeforlife/lib/esm/api'; const api = createApi({ reducerPath: 'api', baseQuery, - tagTypes: [...TAG_TYPES, 'studentRequest'], + tagTypes: [...tagTypes, 'studentRequest'], endpoints: () => ({}) }); diff --git a/frontend/yarn.lock b/frontend/yarn.lock index e04699a6..b72d9f74 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -29,54 +29,55 @@ jsonpointer "^5.0.0" leven "^3.1.0" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.22.5", "@babel/code-frame@^7.8.3": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.5.tgz#234d98e1551960604f1246e6475891a570ad5658" - integrity sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.22.13", "@babel/code-frame@^7.8.3": + version "7.22.13" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e" + integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w== dependencies: - "@babel/highlight" "^7.22.5" + "@babel/highlight" "^7.22.13" + chalk "^2.4.2" -"@babel/compat-data@^7.22.5", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.9.tgz#71cdb00a1ce3a329ce4cbec3a44f9fef35669730" - integrity sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ== +"@babel/compat-data@^7.22.20", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.20.tgz#8df6e96661209623f1975d66c35ffca66f3306d0" + integrity sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw== "@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.12.3", "@babel/core@^7.16.0", "@babel/core@^7.4.4", "@babel/core@^7.7.2", "@babel/core@^7.7.5", "@babel/core@^7.8.0": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.9.tgz#bd96492c68822198f33e8a256061da3cf391f58f" - integrity sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w== + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.0.tgz#f8259ae0e52a123eb40f552551e647b506a94d83" + integrity sha512-97z/ju/Jy1rZmDxybphrBuI+jtJjFVoz7Mr9yUQVVVi+DNZE333uFQeMOqcCIy1x3WYBIbWftUSLmbNXNT7qFQ== dependencies: "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.22.5" - "@babel/generator" "^7.22.9" - "@babel/helper-compilation-targets" "^7.22.9" - "@babel/helper-module-transforms" "^7.22.9" - "@babel/helpers" "^7.22.6" - "@babel/parser" "^7.22.7" - "@babel/template" "^7.22.5" - "@babel/traverse" "^7.22.8" - "@babel/types" "^7.22.5" - convert-source-map "^1.7.0" + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.0" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-module-transforms" "^7.23.0" + "@babel/helpers" "^7.23.0" + "@babel/parser" "^7.23.0" + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.0" + "@babel/types" "^7.23.0" + convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" - json5 "^2.2.2" + json5 "^2.2.3" semver "^6.3.1" "@babel/eslint-parser@^7.16.3": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.22.9.tgz#75f8aa978d1e76c87cc6f26c1ea16ae58804d390" - integrity sha512-xdMkt39/nviO/4vpVdrEYPwXCsYIXSSAr6mC7WQsNIlGnuxKyKE7GZjalcnbSWiC4OXGNNN3UQPeHfjSC6sTDA== + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.22.15.tgz#263f059c476e29ca4972481a17b8b660cb025a34" + integrity sha512-yc8OOBIQk1EcRrpizuARSQS0TWAcOMpEJ1aafhNznaeYkeL+OhqnDObGFylB8ka8VFF/sZc+S4RzHyO+3LjQxg== dependencies: "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" eslint-visitor-keys "^2.1.0" semver "^6.3.1" -"@babel/generator@^7.22.7", "@babel/generator@^7.22.9", "@babel/generator@^7.4.4", "@babel/generator@^7.7.2": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.22.9.tgz#572ecfa7a31002fa1de2a9d91621fd895da8493d" - integrity sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw== +"@babel/generator@^7.23.0", "@babel/generator@^7.4.4", "@babel/generator@^7.7.2": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.0.tgz#df5c386e2218be505b34837acbcb874d7a983420" + integrity sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g== dependencies: - "@babel/types" "^7.22.5" + "@babel/types" "^7.23.0" "@jridgewell/gen-mapping" "^0.3.2" "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" @@ -89,32 +90,32 @@ "@babel/types" "^7.22.5" "@babel/helper-builder-binary-assignment-operator-visitor@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.5.tgz#a3f4758efdd0190d8927fcffd261755937c71878" - integrity sha512-m1EP3lVOPptR+2DwD125gziZNcmoNSHGmJROKoy87loWUQyJaVXDgpmruWqDARZSmtYQ+Dl25okU8+qhVzuykw== + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956" + integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== dependencies: - "@babel/types" "^7.22.5" + "@babel/types" "^7.22.15" -"@babel/helper-compilation-targets@^7.22.5", "@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.22.9": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.9.tgz#f9d0a7aaaa7cd32a3f31c9316a69f5a9bcacb892" - integrity sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw== +"@babel/helper-compilation-targets@^7.22.15", "@babel/helper-compilation-targets@^7.22.5", "@babel/helper-compilation-targets@^7.22.6": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz#0698fc44551a26cf29f18d4662d5bf545a6cfc52" + integrity sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw== dependencies: "@babel/compat-data" "^7.22.9" - "@babel/helper-validator-option" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" browserslist "^4.21.9" lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0", "@babel/helper-create-class-features-plugin@^7.22.5", "@babel/helper-create-class-features-plugin@^7.22.6", "@babel/helper-create-class-features-plugin@^7.22.9": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.9.tgz#c36ea240bb3348f942f08b0fbe28d6d979fab236" - integrity sha512-Pwyi89uO4YrGKxL/eNJ8lfEH55DnRloGPOseaA8NFNL6jAUnn+KccaISiFazCj5IolPPDjGSdzQzXVzODVRqUQ== +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0", "@babel/helper-create-class-features-plugin@^7.22.11", "@babel/helper-create-class-features-plugin@^7.22.15", "@babel/helper-create-class-features-plugin@^7.22.5": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz#97a61b385e57fe458496fad19f8e63b63c867de4" + integrity sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" "@babel/helper-environment-visitor" "^7.22.5" "@babel/helper-function-name" "^7.22.5" - "@babel/helper-member-expression-to-functions" "^7.22.5" + "@babel/helper-member-expression-to-functions" "^7.22.15" "@babel/helper-optimise-call-expression" "^7.22.5" "@babel/helper-replace-supers" "^7.22.9" "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" @@ -122,9 +123,9 @@ semver "^6.3.1" "@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.5": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.9.tgz#9d8e61a8d9366fe66198f57c40565663de0825f6" - integrity sha512-+svjVa/tFwsNSG4NEy1h85+HQ5imbT92Q5/bgtS7P0GTQlP8WuFdqsiABmQouhiFGyV66oGxZFpeYHza1rNsKw== + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" + integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" regexpu-core "^5.3.1" @@ -141,18 +142,18 @@ lodash.debounce "^4.0.8" resolve "^1.14.2" -"@babel/helper-environment-visitor@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz#f06dd41b7c1f44e1f8da6c4055b41ab3a09a7e98" - integrity sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q== +"@babel/helper-environment-visitor@^7.22.20", "@babel/helper-environment-visitor@^7.22.5": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== -"@babel/helper-function-name@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz#ede300828905bb15e582c037162f99d5183af1be" - integrity sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ== +"@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== dependencies: - "@babel/template" "^7.22.5" - "@babel/types" "^7.22.5" + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" "@babel/helper-hoist-variables@^7.22.5": version "7.22.5" @@ -161,30 +162,30 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-member-expression-to-functions@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz#0a7c56117cad3372fbf8d2fb4bf8f8d64a1e76b2" - integrity sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ== +"@babel/helper-member-expression-to-functions@^7.22.15": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz#9263e88cc5e41d39ec18c9a3e0eced59a3e7d366" + integrity sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA== dependencies: - "@babel/types" "^7.22.5" + "@babel/types" "^7.23.0" -"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz#1a8f4c9f4027d23f520bd76b364d44434a72660c" - integrity sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg== +"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.22.15", "@babel/helper-module-imports@^7.22.5": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" + integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== dependencies: - "@babel/types" "^7.22.5" + "@babel/types" "^7.22.15" -"@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.22.9": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz#92dfcb1fbbb2bc62529024f72d942a8c97142129" - integrity sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ== +"@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz#3ec246457f6c842c0aee62a01f60739906f7047e" + integrity sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw== dependencies: - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-module-imports" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-module-imports" "^7.22.15" "@babel/helper-simple-access" "^7.22.5" "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/helper-validator-identifier" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" "@babel/helper-optimise-call-expression@^7.22.5": version "7.22.5" @@ -198,22 +199,22 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== -"@babel/helper-remap-async-to-generator@^7.22.5": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.9.tgz#53a25b7484e722d7efb9c350c75c032d4628de82" - integrity sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ== +"@babel/helper-remap-async-to-generator@^7.22.5", "@babel/helper-remap-async-to-generator@^7.22.9": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" + integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-wrap-function" "^7.22.9" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-wrap-function" "^7.22.20" -"@babel/helper-replace-supers@^7.22.5", "@babel/helper-replace-supers@^7.22.9": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz#cbdc27d6d8d18cd22c81ae4293765a5d9afd0779" - integrity sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg== +"@babel/helper-replace-supers@^7.22.20", "@babel/helper-replace-supers@^7.22.5", "@babel/helper-replace-supers@^7.22.9": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz#e37d367123ca98fe455a9887734ed2e16eb7a793" + integrity sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw== dependencies: - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-member-expression-to-functions" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-member-expression-to-functions" "^7.22.15" "@babel/helper-optimise-call-expression" "^7.22.5" "@babel/helper-simple-access@^7.22.5": @@ -242,63 +243,63 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== -"@babel/helper-validator-identifier@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz#9544ef6a33999343c8740fa51350f30eeaaaf193" - integrity sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ== +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== -"@babel/helper-validator-option@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz#de52000a15a177413c8234fa3a8af4ee8102d0ac" - integrity sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw== +"@babel/helper-validator-option@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz#694c30dfa1d09a6534cdfcafbe56789d36aba040" + integrity sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA== -"@babel/helper-wrap-function@^7.22.9": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.9.tgz#189937248c45b0182c1dcf32f3444ca153944cb9" - integrity sha512-sZ+QzfauuUEfxSEjKFmi3qDSHgLsTPK/pEpoD/qonZKOtTPTLbf59oabPQ4rKekt9lFcj/hTZaOhWwFYrgjk+Q== +"@babel/helper-wrap-function@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz#15352b0b9bfb10fc9c76f79f6342c00e3411a569" + integrity sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw== dependencies: "@babel/helper-function-name" "^7.22.5" - "@babel/template" "^7.22.5" - "@babel/types" "^7.22.5" + "@babel/template" "^7.22.15" + "@babel/types" "^7.22.19" -"@babel/helpers@^7.22.6": - version "7.22.6" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.22.6.tgz#8e61d3395a4f0c5a8060f309fb008200969b5ecd" - integrity sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA== +"@babel/helpers@^7.23.0": + version "7.23.1" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.1.tgz#44e981e8ce2b9e99f8f0b703f3326a4636c16d15" + integrity sha512-chNpneuK18yW5Oxsr+t553UZzzAs3aZnFm4bxhebsNTeshrC95yA7l5yl7GBAG+JG1rF0F7zzD2EixK9mWSDoA== dependencies: - "@babel/template" "^7.22.5" - "@babel/traverse" "^7.22.6" - "@babel/types" "^7.22.5" + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.0" + "@babel/types" "^7.23.0" -"@babel/highlight@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.5.tgz#aa6c05c5407a67ebce408162b7ede789b4d22031" - integrity sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw== +"@babel/highlight@^7.22.13": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.20.tgz#4ca92b71d80554b01427815e06f2df965b9c1f54" + integrity sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg== dependencies: - "@babel/helper-validator-identifier" "^7.22.5" - chalk "^2.0.0" + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.5", "@babel/parser@^7.22.7", "@babel/parser@^7.4.4": - version "7.22.7" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.7.tgz#df8cf085ce92ddbdbf668a7f186ce848c9036cae" - integrity sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.15", "@babel/parser@^7.23.0", "@babel/parser@^7.4.4": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719" + integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw== -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz#87245a21cd69a73b0b81bcda98d443d6df08f05e" - integrity sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz#02dc8a03f613ed5fdc29fb2f728397c78146c962" + integrity sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.5.tgz#fef09f9499b1f1c930da8a0c419db42167d792ca" - integrity sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz#2aeb91d337d4e1a1e7ce85b76a37f5301781200f" + integrity sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-transform-optional-chaining" "^7.22.5" + "@babel/plugin-transform-optional-chaining" "^7.22.15" "@babel/plugin-proposal-class-properties@^7.16.0": version "7.18.6" @@ -309,15 +310,15 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-proposal-decorators@^7.16.4": - version "7.22.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.22.7.tgz#9b5b73c2e404f0869ef8a8a53765f8203c5467a7" - integrity sha512-omXqPF7Onq4Bb7wHxXjM3jSMSJvUUbvDvmmds7KI5n9Cq6Ln5I05I1W2nRlRof1rGdiUxJrxwe285WF96XlBXQ== + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.23.0.tgz#66d9014173b3267a9ced3e69935138bc64ffb5c8" + integrity sha512-kYsT+f5ARWF6AdFmqoEEp+hpqxEB8vGmRWfw2aj78M2vTwS2uHW91EF58iFm1Z9U8Y/RrLu2XKJn46P9ca1b0w== dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.6" + "@babel/helper-create-class-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.20" "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/plugin-syntax-decorators" "^7.22.5" + "@babel/plugin-syntax-decorators" "^7.22.10" "@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0": version "7.18.6" @@ -367,14 +368,6 @@ "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz#af613d2cd5e643643b65cded64207b15c85cb78e" - integrity sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" @@ -403,10 +396,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-decorators@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.22.5.tgz#329fe2907c73de184033775637dbbc507f09116a" - integrity sha512-avpUOBS7IU6al8MmF1XpAyj9QYeLPuSDJI5D4pVMSMdL7xQokKqJPYQC67RCT0aCTashUXPiGwMJ0DEXXCEmMA== +"@babel/plugin-syntax-decorators@^7.22.10": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.22.10.tgz#7d83ea04d893c442b78ebf4c3cbac59a7211deff" + integrity sha512-z1KTVemBjnz+kSEilAsI4lbkPOl5TvJH7YDSY1CTIzvLWJ+KHXp+mRe8VPmfnyvqOPqar1V2gid2PleKzRUstQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -544,14 +537,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-async-generator-functions@^7.22.7": - version "7.22.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.7.tgz#053e76c0a903b72b573cb1ab7d6882174d460a1b" - integrity sha512-7HmE7pk/Fmke45TODvxvkxRMV9RazV+ZZzhOL9AG8G29TLrr3jkjwF7uJfxZ30EoXpO+LJkq4oA8NjO2DTnEDg== +"@babel/plugin-transform-async-generator-functions@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.15.tgz#3b153af4a6b779f340d5b80d3f634f55820aefa3" + integrity sha512-jBm1Es25Y+tVoTi5rfd5t1KLmL8ogLKpXszboWOTTtGFGz2RKnQe2yn7HbZ+kb/B8N0FVSGQo874NSlOU1T4+w== dependencies: "@babel/helper-environment-visitor" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-remap-async-to-generator" "^7.22.5" + "@babel/helper-remap-async-to-generator" "^7.22.9" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-transform-async-to-generator@^7.22.5": @@ -570,10 +563,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-block-scoping@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.5.tgz#8bfc793b3a4b2742c0983fadc1480d843ecea31b" - integrity sha512-EcACl1i5fSQ6bt+YGuU/XGCeZKStLmyVGytWkpyhCLeQVA0eu6Wtiw92V+I1T/hnezUv7j74dA/Ro69gWcU+hg== +"@babel/plugin-transform-block-scoping@^7.22.15": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz#8744d02c6c264d82e1a4bc5d2d501fd8aff6f022" + integrity sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -585,27 +578,27 @@ "@babel/helper-create-class-features-plugin" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-class-static-block@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.5.tgz#3e40c46f048403472d6f4183116d5e46b1bff5ba" - integrity sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA== +"@babel/plugin-transform-class-static-block@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz#dc8cc6e498f55692ac6b4b89e56d87cec766c974" + integrity sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g== dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.22.11" "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-transform-classes@^7.22.6": - version "7.22.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.6.tgz#e04d7d804ed5b8501311293d1a0e6d43e94c3363" - integrity sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ== +"@babel/plugin-transform-classes@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz#aaf4753aee262a232bbc95451b4bdf9599c65a0b" + integrity sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-compilation-targets" "^7.22.6" + "@babel/helper-compilation-targets" "^7.22.15" "@babel/helper-environment-visitor" "^7.22.5" "@babel/helper-function-name" "^7.22.5" "@babel/helper-optimise-call-expression" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.9" "@babel/helper-split-export-declaration" "^7.22.6" globals "^11.1.0" @@ -617,14 +610,14 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/template" "^7.22.5" -"@babel/plugin-transform-destructuring@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.5.tgz#d3aca7438f6c26c78cdd0b0ba920a336001b27cc" - integrity sha512-GfqcFuGW8vnEqTUBM7UtPd5A4q797LTvvwKxXTgRsFjoqaJiEg9deBG6kWeQYkVEL569NpnmpC0Pkr/8BLKGnQ== +"@babel/plugin-transform-destructuring@^7.22.15": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz#6447aa686be48b32eaf65a73e0e2c0bd010a266c" + integrity sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-dotall-regex@^7.22.5", "@babel/plugin-transform-dotall-regex@^7.4.4": +"@babel/plugin-transform-dotall-regex@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz#dbb4f0e45766eb544e193fb00e65a1dd3b2a4165" integrity sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw== @@ -639,10 +632,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-dynamic-import@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.5.tgz#d6908a8916a810468c4edff73b5b75bda6ad393e" - integrity sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ== +"@babel/plugin-transform-dynamic-import@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz#2c7722d2a5c01839eaf31518c6ff96d408e447aa" + integrity sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-dynamic-import" "^7.8.3" @@ -655,10 +648,10 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-export-namespace-from@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.5.tgz#57c41cb1d0613d22f548fddd8b288eedb9973a5b" - integrity sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg== +"@babel/plugin-transform-export-namespace-from@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz#b3c84c8f19880b6c7440108f8929caf6056db26c" + integrity sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" @@ -671,10 +664,10 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-flow" "^7.22.5" -"@babel/plugin-transform-for-of@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.5.tgz#ab1b8a200a8f990137aff9a084f8de4099ab173f" - integrity sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A== +"@babel/plugin-transform-for-of@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz#f64b4ccc3a4f131a996388fae7680b472b306b29" + integrity sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -687,10 +680,10 @@ "@babel/helper-function-name" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-json-strings@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.5.tgz#14b64352fdf7e1f737eed68de1a1468bd2a77ec0" - integrity sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A== +"@babel/plugin-transform-json-strings@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz#689a34e1eed1928a40954e37f74509f48af67835" + integrity sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-json-strings" "^7.8.3" @@ -702,10 +695,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-logical-assignment-operators@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.5.tgz#66ae5f068fd5a9a5dc570df16f56c2a8462a9d6c" - integrity sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA== +"@babel/plugin-transform-logical-assignment-operators@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz#24c522a61688bde045b7d9bc3c2597a4d948fc9c" + integrity sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" @@ -718,31 +711,31 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-modules-amd@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz#4e045f55dcf98afd00f85691a68fc0780704f526" - integrity sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ== + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz#05b2bc43373faa6d30ca89214731f76f966f3b88" + integrity sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw== dependencies: - "@babel/helper-module-transforms" "^7.22.5" + "@babel/helper-module-transforms" "^7.23.0" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-modules-commonjs@^7.22.5", "@babel/plugin-transform-modules-commonjs@^7.4.4": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.5.tgz#7d9875908d19b8c0536085af7b053fd5bd651bfa" - integrity sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA== +"@babel/plugin-transform-modules-commonjs@^7.22.15", "@babel/plugin-transform-modules-commonjs@^7.23.0", "@babel/plugin-transform-modules-commonjs@^7.4.4": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz#b3dba4757133b2762c00f4f94590cf6d52602481" + integrity sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ== dependencies: - "@babel/helper-module-transforms" "^7.22.5" + "@babel/helper-module-transforms" "^7.23.0" "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-simple-access" "^7.22.5" -"@babel/plugin-transform-modules-systemjs@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.5.tgz#18c31410b5e579a0092638f95c896c2a98a5d496" - integrity sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ== +"@babel/plugin-transform-modules-systemjs@^7.22.11": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz#77591e126f3ff4132a40595a6cccd00a6b60d160" + integrity sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg== dependencies: "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-module-transforms" "^7.22.5" + "@babel/helper-module-transforms" "^7.23.0" "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-identifier" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" "@babel/plugin-transform-modules-umd@^7.22.5": version "7.22.5" @@ -767,32 +760,32 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-nullish-coalescing-operator@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.5.tgz#f8872c65776e0b552e0849d7596cddd416c3e381" - integrity sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA== +"@babel/plugin-transform-nullish-coalescing-operator@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz#debef6c8ba795f5ac67cd861a81b744c5d38d9fc" + integrity sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-transform-numeric-separator@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.5.tgz#57226a2ed9e512b9b446517ab6fa2d17abb83f58" - integrity sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g== +"@babel/plugin-transform-numeric-separator@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz#498d77dc45a6c6db74bb829c02a01c1d719cbfbd" + integrity sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-transform-object-rest-spread@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.5.tgz#9686dc3447df4753b0b2a2fae7e8bc33cdc1f2e1" - integrity sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ== +"@babel/plugin-transform-object-rest-spread@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz#21a95db166be59b91cde48775310c0df6e1da56f" + integrity sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q== dependencies: - "@babel/compat-data" "^7.22.5" - "@babel/helper-compilation-targets" "^7.22.5" + "@babel/compat-data" "^7.22.9" + "@babel/helper-compilation-targets" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.22.5" + "@babel/plugin-transform-parameters" "^7.22.15" "@babel/plugin-transform-object-super@^7.22.5": version "7.22.5" @@ -802,27 +795,27 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-replace-supers" "^7.22.5" -"@babel/plugin-transform-optional-catch-binding@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.5.tgz#842080be3076703be0eaf32ead6ac8174edee333" - integrity sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg== +"@babel/plugin-transform-optional-catch-binding@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz#461cc4f578a127bb055527b3e77404cad38c08e0" + integrity sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-transform-optional-chaining@^7.22.5", "@babel/plugin-transform-optional-chaining@^7.22.6": - version "7.22.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.6.tgz#4bacfe37001fe1901117672875e931d439811564" - integrity sha512-Vd5HiWml0mDVtcLHIoEU5sw6HOUW/Zk0acLs/SAeuLzkGNOPc9DB4nkUajemhCmTIz3eiaKREZn2hQQqF79YTg== +"@babel/plugin-transform-optional-chaining@^7.22.15": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz#73ff5fc1cf98f542f09f29c0631647d8ad0be158" + integrity sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-transform-parameters@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz#c3542dd3c39b42c8069936e48717a8d179d63a18" - integrity sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg== +"@babel/plugin-transform-parameters@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz#719ca82a01d177af358df64a514d64c2e3edb114" + integrity sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -834,13 +827,13 @@ "@babel/helper-create-class-features-plugin" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-private-property-in-object@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.5.tgz#07a77f28cbb251546a43d175a1dda4cf3ef83e32" - integrity sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ== +"@babel/plugin-transform-private-property-in-object@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz#ad45c4fc440e9cb84c718ed0906d96cf40f9a4e1" + integrity sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.22.11" "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" @@ -872,16 +865,16 @@ dependencies: "@babel/plugin-transform-react-jsx" "^7.22.5" -"@babel/plugin-transform-react-jsx@^7.0.0", "@babel/plugin-transform-react-jsx@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.5.tgz#932c291eb6dd1153359e2a90cb5e557dcf068416" - integrity sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA== +"@babel/plugin-transform-react-jsx@^7.0.0", "@babel/plugin-transform-react-jsx@^7.22.15", "@babel/plugin-transform-react-jsx@^7.22.5": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.15.tgz#7e6266d88705d7c49f11c98db8b9464531289cd6" + integrity sha512-oKckg2eZFa8771O/5vi7XeTvmM6+O9cxZu+kanTU7tD4sin5nO/G8jGJhq8Hvt2Z0kUoEDRayuZLaUlYl8QuGA== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-module-imports" "^7.22.5" + "@babel/helper-module-imports" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-jsx" "^7.22.5" - "@babel/types" "^7.22.5" + "@babel/types" "^7.22.15" "@babel/plugin-transform-react-pure-annotations@^7.22.5": version "7.22.5" @@ -891,13 +884,13 @@ "@babel/helper-annotate-as-pure" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-regenerator@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.5.tgz#cd8a68b228a5f75fa01420e8cc2fc400f0fc32aa" - integrity sha512-rR7KePOE7gfEtNTh9Qw+iO3Q/e4DEsoQ+hdvM6QUDH7JRJ5qxq5AA52ZzBWbI5i9lfNuvySgOGP8ZN7LAmaiPw== +"@babel/plugin-transform-regenerator@^7.22.10": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz#8ceef3bd7375c4db7652878b0241b2be5d0c3cca" + integrity sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" - regenerator-transform "^0.15.1" + regenerator-transform "^0.15.2" "@babel/plugin-transform-reserved-words@^7.22.5": version "7.22.5" @@ -907,15 +900,15 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-runtime@^7.16.4": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.22.9.tgz#a87b11e170cbbfb018e6a2bf91f5c6e533b9e027" - integrity sha512-9KjBH61AGJetCPYp/IEyLEp47SyybZb0nDRpBvmtEkm+rUIwxdlKpyNHI1TmsGkeuLclJdleQHRZ8XLBnnh8CQ== + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.22.15.tgz#3a625c4c05a39e932d7d34f5d4895cdd0172fdc9" + integrity sha512-tEVLhk8NRZSmwQ0DJtxxhTrCht1HVo8VaMzYT4w6lwyKBuHsgoioAUA7/6eT2fRfc5/23fuGdlwIxXhRVgWr4g== dependencies: - "@babel/helper-module-imports" "^7.22.5" + "@babel/helper-module-imports" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" - babel-plugin-polyfill-corejs2 "^0.4.4" - babel-plugin-polyfill-corejs3 "^0.8.2" - babel-plugin-polyfill-regenerator "^0.5.1" + babel-plugin-polyfill-corejs2 "^0.4.5" + babel-plugin-polyfill-corejs3 "^0.8.3" + babel-plugin-polyfill-regenerator "^0.5.2" semver "^6.3.1" "@babel/plugin-transform-shorthand-properties@^7.22.5": @@ -954,20 +947,20 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-typescript@^7.22.5": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.9.tgz#91e08ad1eb1028ecc62662a842e93ecfbf3c7234" - integrity sha512-BnVR1CpKiuD0iobHPaM1iLvcwPYN2uVFAqoLVSpEDKWuOikoCv5HbKLxclhKYUXlWkX86DoZGtqI4XhbOsyrMg== +"@babel/plugin-transform-typescript@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.15.tgz#15adef906451d86349eb4b8764865c960eb54127" + integrity sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.22.9" + "@babel/helper-create-class-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-typescript" "^7.22.5" -"@babel/plugin-transform-unicode-escapes@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.5.tgz#ce0c248522b1cb22c7c992d88301a5ead70e806c" - integrity sha512-biEmVg1IYB/raUO5wT1tgfacCef15Fbzhkx493D3urBI++6hpJ+RFG4SrWMn0NEZLfvilqKf3QDrRVZHo08FYg== +"@babel/plugin-transform-unicode-escapes@^7.22.10": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz#c723f380f40a2b2f57a62df24c9005834c8616d9" + integrity sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -996,16 +989,16 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/preset-env@^7.11.0", "@babel/preset-env@^7.12.1", "@babel/preset-env@^7.16.4", "@babel/preset-env@^7.4.4": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.22.9.tgz#57f17108eb5dfd4c5c25a44c1977eba1df310ac7" - integrity sha512-wNi5H/Emkhll/bqPjsjQorSykrlfY5OWakd6AulLvMEytpKasMVUpVy8RL4qBIBs5Ac6/5i0/Rv0b/Fg6Eag/g== + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.22.20.tgz#de9e9b57e1127ce0a2f580831717f7fb677ceedb" + integrity sha512-11MY04gGC4kSzlPHRfvVkNAZhUxOvm7DCJ37hPDnUENwe06npjIRAfInEMTGSb4LZK5ZgDFkv5hw0lGebHeTyg== dependencies: - "@babel/compat-data" "^7.22.9" - "@babel/helper-compilation-targets" "^7.22.9" + "@babel/compat-data" "^7.22.20" + "@babel/helper-compilation-targets" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-option" "^7.22.5" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.22.5" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.22.15" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.22.15" "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-class-properties" "^7.12.13" @@ -1026,139 +1019,137 @@ "@babel/plugin-syntax-top-level-await" "^7.14.5" "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" "@babel/plugin-transform-arrow-functions" "^7.22.5" - "@babel/plugin-transform-async-generator-functions" "^7.22.7" + "@babel/plugin-transform-async-generator-functions" "^7.22.15" "@babel/plugin-transform-async-to-generator" "^7.22.5" "@babel/plugin-transform-block-scoped-functions" "^7.22.5" - "@babel/plugin-transform-block-scoping" "^7.22.5" + "@babel/plugin-transform-block-scoping" "^7.22.15" "@babel/plugin-transform-class-properties" "^7.22.5" - "@babel/plugin-transform-class-static-block" "^7.22.5" - "@babel/plugin-transform-classes" "^7.22.6" + "@babel/plugin-transform-class-static-block" "^7.22.11" + "@babel/plugin-transform-classes" "^7.22.15" "@babel/plugin-transform-computed-properties" "^7.22.5" - "@babel/plugin-transform-destructuring" "^7.22.5" + "@babel/plugin-transform-destructuring" "^7.22.15" "@babel/plugin-transform-dotall-regex" "^7.22.5" "@babel/plugin-transform-duplicate-keys" "^7.22.5" - "@babel/plugin-transform-dynamic-import" "^7.22.5" + "@babel/plugin-transform-dynamic-import" "^7.22.11" "@babel/plugin-transform-exponentiation-operator" "^7.22.5" - "@babel/plugin-transform-export-namespace-from" "^7.22.5" - "@babel/plugin-transform-for-of" "^7.22.5" + "@babel/plugin-transform-export-namespace-from" "^7.22.11" + "@babel/plugin-transform-for-of" "^7.22.15" "@babel/plugin-transform-function-name" "^7.22.5" - "@babel/plugin-transform-json-strings" "^7.22.5" + "@babel/plugin-transform-json-strings" "^7.22.11" "@babel/plugin-transform-literals" "^7.22.5" - "@babel/plugin-transform-logical-assignment-operators" "^7.22.5" + "@babel/plugin-transform-logical-assignment-operators" "^7.22.11" "@babel/plugin-transform-member-expression-literals" "^7.22.5" "@babel/plugin-transform-modules-amd" "^7.22.5" - "@babel/plugin-transform-modules-commonjs" "^7.22.5" - "@babel/plugin-transform-modules-systemjs" "^7.22.5" + "@babel/plugin-transform-modules-commonjs" "^7.22.15" + "@babel/plugin-transform-modules-systemjs" "^7.22.11" "@babel/plugin-transform-modules-umd" "^7.22.5" "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" "@babel/plugin-transform-new-target" "^7.22.5" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.22.5" - "@babel/plugin-transform-numeric-separator" "^7.22.5" - "@babel/plugin-transform-object-rest-spread" "^7.22.5" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.22.11" + "@babel/plugin-transform-numeric-separator" "^7.22.11" + "@babel/plugin-transform-object-rest-spread" "^7.22.15" "@babel/plugin-transform-object-super" "^7.22.5" - "@babel/plugin-transform-optional-catch-binding" "^7.22.5" - "@babel/plugin-transform-optional-chaining" "^7.22.6" - "@babel/plugin-transform-parameters" "^7.22.5" + "@babel/plugin-transform-optional-catch-binding" "^7.22.11" + "@babel/plugin-transform-optional-chaining" "^7.22.15" + "@babel/plugin-transform-parameters" "^7.22.15" "@babel/plugin-transform-private-methods" "^7.22.5" - "@babel/plugin-transform-private-property-in-object" "^7.22.5" + "@babel/plugin-transform-private-property-in-object" "^7.22.11" "@babel/plugin-transform-property-literals" "^7.22.5" - "@babel/plugin-transform-regenerator" "^7.22.5" + "@babel/plugin-transform-regenerator" "^7.22.10" "@babel/plugin-transform-reserved-words" "^7.22.5" "@babel/plugin-transform-shorthand-properties" "^7.22.5" "@babel/plugin-transform-spread" "^7.22.5" "@babel/plugin-transform-sticky-regex" "^7.22.5" "@babel/plugin-transform-template-literals" "^7.22.5" "@babel/plugin-transform-typeof-symbol" "^7.22.5" - "@babel/plugin-transform-unicode-escapes" "^7.22.5" + "@babel/plugin-transform-unicode-escapes" "^7.22.10" "@babel/plugin-transform-unicode-property-regex" "^7.22.5" "@babel/plugin-transform-unicode-regex" "^7.22.5" "@babel/plugin-transform-unicode-sets-regex" "^7.22.5" - "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.22.5" - babel-plugin-polyfill-corejs2 "^0.4.4" - babel-plugin-polyfill-corejs3 "^0.8.2" - babel-plugin-polyfill-regenerator "^0.5.1" + "@babel/preset-modules" "0.1.6-no-external-plugins" + "@babel/types" "^7.22.19" + babel-plugin-polyfill-corejs2 "^0.4.5" + babel-plugin-polyfill-corejs3 "^0.8.3" + babel-plugin-polyfill-regenerator "^0.5.2" core-js-compat "^3.31.0" semver "^6.3.1" -"@babel/preset-modules@^0.1.5": - version "0.1.6" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6.tgz#31bcdd8f19538437339d17af00d177d854d9d458" - integrity sha512-ID2yj6K/4lKfhuU3+EX4UvNbIt7eACFbHmNUjzA+ep+B5971CknnA/9DEWKbRokfbbtblxxxXFJJrH47UEAMVg== +"@babel/preset-modules@0.1.6-no-external-plugins": + version "0.1.6-no-external-plugins" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" + integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-transform-dotall-regex" "^7.4.4" "@babel/types" "^7.4.4" esutils "^2.0.2" "@babel/preset-react@^7.12.5", "@babel/preset-react@^7.16.0": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.22.5.tgz#c4d6058fbf80bccad02dd8c313a9aaa67e3c3dd6" - integrity sha512-M+Is3WikOpEJHgR385HbuCITPTaPRaNkibTEa9oiofmJvIsrceb4yp9RL9Kb+TE8LznmeyZqpP+Lopwcx59xPQ== + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.22.15.tgz#9a776892b648e13cc8ca2edf5ed1264eea6b6afc" + integrity sha512-Csy1IJ2uEh/PecCBXXoZGAZBeCATTuePzCSB7dLYWS0vOEj6CNpjxIhW4duWwZodBNueH7QO14WbGn8YyeuN9w== dependencies: "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-option" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" "@babel/plugin-transform-react-display-name" "^7.22.5" - "@babel/plugin-transform-react-jsx" "^7.22.5" + "@babel/plugin-transform-react-jsx" "^7.22.15" "@babel/plugin-transform-react-jsx-development" "^7.22.5" "@babel/plugin-transform-react-pure-annotations" "^7.22.5" "@babel/preset-typescript@^7.16.0": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.22.5.tgz#16367d8b01d640e9a507577ed4ee54e0101e51c8" - integrity sha512-YbPaal9LxztSGhmndR46FmAbkJ/1fAsw293tSU+I5E5h+cnJ3d4GTwyUgGYmOXJYdGA+uNePle4qbaRzj2NISQ== + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.23.0.tgz#cc6602d13e7e5b2087c811912b87cf937a9129d9" + integrity sha512-6P6VVa/NM/VlAYj5s2Aq/gdVg8FSENCg3wlZ6Qau9AcPaoF5LbN1nyGlR9DTRIw9PpxI94e+ReydsJHcjwAweg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-option" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" "@babel/plugin-syntax-jsx" "^7.22.5" - "@babel/plugin-transform-modules-commonjs" "^7.22.5" - "@babel/plugin-transform-typescript" "^7.22.5" + "@babel/plugin-transform-modules-commonjs" "^7.23.0" + "@babel/plugin-transform-typescript" "^7.22.15" "@babel/regjsgen@^0.8.0": version "0.8.0" resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime@^7.11.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.7", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.5", "@babel/runtime@^7.22.6", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": - version "7.22.6" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.6.tgz#57d64b9ae3cff1d67eb067ae117dac087f5bd438" - integrity sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ== +"@babel/runtime@^7.11.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.7", "@babel/runtime@^7.22.15", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": + version "7.23.1" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.1.tgz#72741dc4d413338a91dcb044a86f3c0bc402646d" + integrity sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g== dependencies: - regenerator-runtime "^0.13.11" + regenerator-runtime "^0.14.0" -"@babel/template@^7.22.5", "@babel/template@^7.3.3", "@babel/template@^7.4.4": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.5.tgz#0c8c4d944509875849bd0344ff0050756eefc6ec" - integrity sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw== +"@babel/template@^7.22.15", "@babel/template@^7.22.5", "@babel/template@^7.3.3", "@babel/template@^7.4.4": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" + integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== dependencies: - "@babel/code-frame" "^7.22.5" - "@babel/parser" "^7.22.5" - "@babel/types" "^7.22.5" + "@babel/code-frame" "^7.22.13" + "@babel/parser" "^7.22.15" + "@babel/types" "^7.22.15" -"@babel/traverse@^7.22.6", "@babel/traverse@^7.22.8", "@babel/traverse@^7.4.4", "@babel/traverse@^7.7.2": - version "7.22.8" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.22.8.tgz#4d4451d31bc34efeae01eac222b514a77aa4000e" - integrity sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw== +"@babel/traverse@^7.23.0", "@babel/traverse@^7.4.4", "@babel/traverse@^7.7.2": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.0.tgz#18196ddfbcf4ccea324b7f6d3ada00d8c5a99c53" + integrity sha512-t/QaEvyIoIkwzpiZ7aoSKK8kObQYeF7T2v+dazAYCb8SXtp58zEVkWW7zAnju8FNKNdr4ScAOEDmMItbyOmEYw== dependencies: - "@babel/code-frame" "^7.22.5" - "@babel/generator" "^7.22.7" - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-function-name" "^7.22.5" + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.0" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" "@babel/helper-hoist-variables" "^7.22.5" "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.22.7" - "@babel/types" "^7.22.5" + "@babel/parser" "^7.23.0" + "@babel/types" "^7.23.0" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.20.7", "@babel/types@^7.22.5", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.5.tgz#cd93eeaab025880a3a47ec881f4b096a5b786fbe" - integrity sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA== +"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.0.tgz#8c1f020c9df0e737e4e247c0619f58c68458aaeb" + integrity sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg== dependencies: "@babel/helper-string-parser" "^7.22.5" - "@babel/helper-validator-identifier" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" "@bcoe/v8-coverage@^0.2.3": @@ -1283,9 +1274,9 @@ integrity sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw== "@cypress/code-coverage@^3.10.0": - version "3.11.0" - resolved "https://registry.yarnpkg.com/@cypress/code-coverage/-/code-coverage-3.11.0.tgz#f695b53f5e2b89144ca418fd6608a63720e2880f" - integrity sha512-ihSO1s03gmLRE224oIjrbdG1ey63vw/UY+VSqQ5m/TKkAvyz6GIiniq6juk3AV/+0vQC1Eb4UWFu8ndtji4M1g== + version "3.12.1" + resolved "https://registry.yarnpkg.com/@cypress/code-coverage/-/code-coverage-3.12.1.tgz#cdfd155f9e4788d56ba55caff10c70abfbf72fd1" + integrity sha512-4gSVkgcTo8NSWrOwLO0NxyvD2apIZFM/2k9sxdmP3eR3ko8tZVYrWfTdfxSXLDSkNnzVh+oXv7utaOLn+yemUg== dependencies: "@cypress/webpack-preprocessor" "^5.11.0" chalk "4.1.2" @@ -1306,10 +1297,10 @@ debug "4.2.0" find-yarn-workspace-root "^2.0.0" -"@cypress/request@^2.88.11": - version "2.88.11" - resolved "https://registry.yarnpkg.com/@cypress/request/-/request-2.88.11.tgz#5a4c7399bc2d7e7ed56e92ce5acb620c8b187047" - integrity sha512-M83/wfQ1EkspjkE2lNWNV5ui2Cv7UCv1swW1DqljahbzLVWltcsexQh8jYtuS/vzFXP+HySntGM83ZXA9fn17w== +"@cypress/request@2.88.12": + version "2.88.12" + resolved "https://registry.yarnpkg.com/@cypress/request/-/request-2.88.12.tgz#ba4911431738494a85e93fb04498cb38bc55d590" + integrity sha512-tOn+0mDZxASFM+cuAP9szGUGPI1HwWVSvdzm7V4cCsPdFTx6qMj29CwaQmRAMIEhORIUBFBsYROYJcveK4uOjA== dependencies: aws-sign2 "~0.7.0" aws4 "^1.8.0" @@ -1326,7 +1317,7 @@ performance-now "^2.1.0" qs "~6.10.3" safe-buffer "^5.1.2" - tough-cookie "~2.5.0" + tough-cookie "^4.1.3" tunnel-agent "^0.6.0" uuid "^8.3.2" @@ -1473,15 +1464,15 @@ dependencies: eslint-visitor-keys "^3.3.0" -"@eslint-community/regexpp@^4.4.0": - version "4.6.2" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.6.2.tgz#1816b5f6948029c5eaacb0703b850ee0cb37d8f8" - integrity sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw== +"@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": + version "4.9.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.9.0.tgz#7ccb5f58703fa61ffdcbf39e2c604a109e781162" + integrity sha512-zJmuCWj2VLBt4c25CfBIbMZLGLyhkvs7LznyVX5HfpzeocThgIj5XQK4L+g3U36mMcx8bPMhGyPpwCATamC4jQ== -"@eslint/eslintrc@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.0.tgz#82256f164cc9e0b59669efc19d57f8092706841d" - integrity sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A== +"@eslint/eslintrc@^2.1.2": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.2.tgz#c6936b4b328c64496692f76944e755738be62396" + integrity sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g== dependencies: ajv "^6.12.4" debug "^4.3.2" @@ -1493,15 +1484,42 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.44.0": - version "8.44.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.44.0.tgz#961a5903c74139390478bdc808bcde3fc45ab7af" - integrity sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw== +"@eslint/js@8.50.0": + version "8.50.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.50.0.tgz#9e93b850f0f3fa35f5fa59adfd03adae8488e484" + integrity sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ== -"@humanwhocodes/config-array@^0.11.10": - version "0.11.10" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.10.tgz#5a3ffe32cc9306365fb3fd572596cd602d5e12d2" - integrity sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ== +"@floating-ui/core@^1.4.2": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.5.0.tgz#5c05c60d5ae2d05101c3021c1a2a350ddc027f8c" + integrity sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg== + dependencies: + "@floating-ui/utils" "^0.1.3" + +"@floating-ui/dom@^1.5.1": + version "1.5.3" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.5.3.tgz#54e50efcb432c06c23cd33de2b575102005436fa" + integrity sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA== + dependencies: + "@floating-ui/core" "^1.4.2" + "@floating-ui/utils" "^0.1.3" + +"@floating-ui/react-dom@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.0.2.tgz#fab244d64db08e6bed7be4b5fcce65315ef44d20" + integrity sha512-5qhlDvjaLmAst/rKb3VdlCinwTF4EYMiVxuuc/HVUjs46W0zgtbMmAZ1UTsDrRTxRmUEzl92mOtWbeeXL26lSQ== + dependencies: + "@floating-ui/dom" "^1.5.1" + +"@floating-ui/utils@^0.1.3": + version "0.1.4" + resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.1.4.tgz#19654d1026cc410975d46445180e70a5089b3e7d" + integrity sha512-qprfWkn82Iw821mcKofJ5Pk9wgioHicxcQMxx+5zt5GSKoqdWvgG5AxVmpmUUjzTLPVSH5auBrhI93Deayn/DA== + +"@humanwhocodes/config-array@^0.11.11": + version "0.11.11" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.11.tgz#88a04c570dbbc7dd943e4712429c3df09bc32844" + integrity sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA== dependencies: "@humanwhocodes/object-schema" "^1.2.1" debug "^4.1.1" @@ -1757,10 +1775,10 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/resolve-uri@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" - integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== "@jridgewell/set-array@^1.0.1": version "1.1.2" @@ -1775,23 +1793,18 @@ "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/sourcemap-codec@1.4.14": - version "1.4.14" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" - integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== - -"@jridgewell/sourcemap-codec@^1.4.10": +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": version "1.4.15" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.18" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6" - integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA== + version "0.3.19" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz#f8a3249862f91be48d3127c3cfe992f79b4b8811" + integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw== dependencies: - "@jridgewell/resolve-uri" "3.1.0" - "@jridgewell/sourcemap-codec" "1.4.14" + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" "@leichtgewicht/ip-codec@^2.0.1": version "2.0.4" @@ -1806,80 +1819,79 @@ call-me-maybe "^1.0.1" glob-to-regexp "^0.3.0" -"@mui/base@5.0.0-beta.8": - version "5.0.0-beta.8" - resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-beta.8.tgz#a0a9531ae9147be92d17e4f0e3b9accc57916841" - integrity sha512-b4vVjMZx5KzzEMf4arXKoeV5ZegAMOoPwoy1vfUBwhvXc2QtaaAyBp50U7OA2L06Leubc1A+lEp3eqwZoFn87g== +"@mui/base@5.0.0-beta.17": + version "5.0.0-beta.17" + resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-beta.17.tgz#98b7ef6a3176b7aaf59ac8862d3271acb6876bc0" + integrity sha512-xNbk7iOXrglNdIxFBN0k3ySsPIFLWCnFxqsAYl7CIcDkD9low4kJ7IUuy6ctwx/HAy2fenrT3KXHr1sGjAMgpQ== dependencies: - "@babel/runtime" "^7.22.6" - "@emotion/is-prop-valid" "^1.2.1" + "@babel/runtime" "^7.22.15" + "@floating-ui/react-dom" "^2.0.2" "@mui/types" "^7.2.4" - "@mui/utils" "^5.14.1" + "@mui/utils" "^5.14.11" "@popperjs/core" "^2.11.8" - clsx "^1.2.1" + clsx "^2.0.0" prop-types "^15.8.1" - react-is "^18.2.0" -"@mui/core-downloads-tracker@^5.14.2": - version "5.14.2" - resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.2.tgz#d8fcacdb1d37e621fce33ea808180fa5a590f908" - integrity sha512-x+c/MgDL1t/IIy5lDbMlrDouFG5DYZbl3DP4dbbuhlpPFBnE9glYwmJEee/orVHQpOPwLxCAIWQs+2DKSaBVWQ== +"@mui/core-downloads-tracker@^5.14.11": + version "5.14.11" + resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.11.tgz#e829aceb5c0bbfc3383ed90a6a85445344dd65a7" + integrity sha512-uY8FLQURhXe3f3O4dS5OSGML9KDm9+IE226cBu78jarVIzdQGPlXwGIlSI9VJR8MvZDA6C0+6XfWDhWCHruC5Q== "@mui/icons-material@^5.11.11", "@mui/icons-material@^5.4.1": - version "5.14.1" - resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-5.14.1.tgz#2f145c15047a0c7f01353ce620cb88276dadba9e" - integrity sha512-xV/f26muQqtWzerzOIdGPrXoxp/OKaE2G2Wp9gnmG47mHua5Slup/tMc3fA4ZYUreGGrK6+tT81TEvt1Wsng8Q== + version "5.14.11" + resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-5.14.11.tgz#ce563d1b6c7abc76f8a8048c970135601e7b49b5" + integrity sha512-aHReLasBuS/+hhPzbZCgZ0eTcZ2QRnoC2WNK7XvdAf3l+LjC1flzjh6GWw1tZJ5NHnZ+bivdwtLFQ8XTR96JkA== dependencies: - "@babel/runtime" "^7.22.6" + "@babel/runtime" "^7.22.15" "@mui/material@^5.11.12", "@mui/material@^5.4.1": - version "5.14.2" - resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.14.2.tgz#13b113489a61021145d62e0383912ca487a46375" - integrity sha512-TgNR4/YRL11RifsnMWNhITNCkGJYVz20SCvVJBBoU5Y/KhUNSSJxjDpEB8VrnY+sUsV0NigLCkHZJglfsiS3Pw== - dependencies: - "@babel/runtime" "^7.22.6" - "@mui/base" "5.0.0-beta.8" - "@mui/core-downloads-tracker" "^5.14.2" - "@mui/system" "^5.14.1" + version "5.14.11" + resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.14.11.tgz#7537f07c383a6cfa32a00fabc9959593478bc5c4" + integrity sha512-DnSdJzcR7lwG12JA5L2t8JF+RDzMygu5rCNW+logWb/KW2/TRzwLyVWO+CorHTBjBRd38DBxnwOCDiYkDd+N3A== + dependencies: + "@babel/runtime" "^7.22.15" + "@mui/base" "5.0.0-beta.17" + "@mui/core-downloads-tracker" "^5.14.11" + "@mui/system" "^5.14.11" "@mui/types" "^7.2.4" - "@mui/utils" "^5.14.1" + "@mui/utils" "^5.14.11" "@types/react-transition-group" "^4.4.6" - clsx "^1.2.1" + clsx "^2.0.0" csstype "^3.1.2" prop-types "^15.8.1" react-is "^18.2.0" react-transition-group "^4.4.5" -"@mui/private-theming@^5.13.7": - version "5.13.7" - resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.13.7.tgz#2f8ef5da066f3c6c6423bd4260d003a28d10b099" - integrity sha512-qbSr+udcij5F9dKhGX7fEdx2drXchq7htLNr2Qg2Ma+WJ6q0ERlEqGSBiPiVDJkptcjeVL4DGmcf1wl5+vD4EA== +"@mui/private-theming@^5.14.11": + version "5.14.11" + resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.14.11.tgz#1543b4d13d5cb32018c5bd41b516db1c33f70344" + integrity sha512-MSnNNzTu9pfKLCKs1ZAKwOTgE4bz+fQA0fNr8Jm7NDmuWmw0CaN9Vq2/MHsatE7+S0A25IAKby46Uv1u53rKVQ== dependencies: - "@babel/runtime" "^7.22.5" - "@mui/utils" "^5.13.7" + "@babel/runtime" "^7.22.15" + "@mui/utils" "^5.14.11" prop-types "^15.8.1" -"@mui/styled-engine@^5.13.2": - version "5.13.2" - resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.13.2.tgz#c87bd61c0ab8086d34828b6defe97c02bcd642ef" - integrity sha512-VCYCU6xVtXOrIN8lcbuPmoG+u7FYuOERG++fpY74hPpEWkyFQG97F+/XfTQVYzlR2m7nPjnwVUgATcTCMEaMvw== +"@mui/styled-engine@^5.14.11": + version "5.14.11" + resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.14.11.tgz#22cb0047f211be4dbc133a5d1015369293bdff00" + integrity sha512-jdUlqRgTYQ8RMtPX4MbRZqar6W2OiIb6J5KEFbIu4FqvPrk44Each4ppg/LAqp1qNlBYq5i+7Q10MYLMpDxX9A== dependencies: - "@babel/runtime" "^7.21.0" + "@babel/runtime" "^7.22.15" "@emotion/cache" "^11.11.0" csstype "^3.1.2" prop-types "^15.8.1" -"@mui/system@^5.14.1", "@mui/system@^5.4.1": - version "5.14.1" - resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.14.1.tgz#ec8ae69f63963b5916dad4bca2f8a86a001a2392" - integrity sha512-u+xlsU34Jdkgx1CxmBnIC4Y08uPdVX5iEd3S/1dggDFtOGp+Lj8xmKRJAQ8PJOOJLOh8pDwaZx4AwXikL4l1QA== +"@mui/system@^5.14.11", "@mui/system@^5.4.1": + version "5.14.11" + resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.14.11.tgz#4f3aaf3e3d6d039e41a60f939056aa5fd371d291" + integrity sha512-yl8xV+y0k7j6dzBsHabKwoShmjqLa8kTxrhUI3JpqLG358VRVMJRW/ES0HhvfcCi4IVXde+Tc2P3K1akGL8zoA== dependencies: - "@babel/runtime" "^7.22.6" - "@mui/private-theming" "^5.13.7" - "@mui/styled-engine" "^5.13.2" + "@babel/runtime" "^7.22.15" + "@mui/private-theming" "^5.14.11" + "@mui/styled-engine" "^5.14.11" "@mui/types" "^7.2.4" - "@mui/utils" "^5.14.1" - clsx "^1.2.1" + "@mui/utils" "^5.14.11" + clsx "^2.0.0" csstype "^3.1.2" prop-types "^15.8.1" @@ -1888,14 +1900,13 @@ resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.2.4.tgz#b6fade19323b754c5c6de679a38f068fd50b9328" integrity sha512-LBcwa8rN84bKF+f5sDyku42w1NTxaPgPyYKODsh01U1fVstTClbUoSA96oyRBnSNyEiAVjKm6Gwx9vjR+xyqHA== -"@mui/utils@^5.13.7", "@mui/utils@^5.14.1": - version "5.14.1" - resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.14.1.tgz#29696371016552a6eb3af975bc7af429ec88b29a" - integrity sha512-39KHKK2JeqRmuUcLDLwM+c2XfVC136C5/yUyQXmO2PVbOb2Bol4KxtkssEqCbTwg87PSCG3f1Tb0keRsK7cVGw== +"@mui/utils@^5.14.11": + version "5.14.11" + resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.14.11.tgz#d19a1d8725ffd16c6c6817f00b5172931958fb9a" + integrity sha512-fmkIiCPKyDssYrJ5qk+dime1nlO3dmWfCtaPY/uVBqCRMBZ11JhddB9m8sjI2mgqQQwRJG5bq3biaosNdU/s4Q== dependencies: - "@babel/runtime" "^7.22.6" + "@babel/runtime" "^7.22.15" "@types/prop-types" "^15.7.5" - "@types/react-is" "^18.2.1" prop-types "^15.8.1" react-is "^18.2.0" @@ -1974,9 +1985,9 @@ physical-cpu-count "^2.0.0" "@pmmmwh/react-refresh-webpack-plugin@^0.5.3": - version "0.5.10" - resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.10.tgz#2eba163b8e7dbabb4ce3609ab5e32ab63dda3ef8" - integrity sha512-j0Ya0hCFZPd4x40qLzbhGsh9TMtdb+CJQiso+WxLOPNasohq9cc5SNUcwsZaRH6++Xh91Xkm/xHCkuIiIu0LUA== + version "0.5.11" + resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.11.tgz#7c2268cedaa0644d677e8c4f377bc8fb304f714a" + integrity sha512-7j/6vdTym0+qZ6u4XbSAxrWBGYSdCfTzySkj7WAFgDLmSyWlOrWvpyzxlFh5jtw9dn0oL/jtW+06XfFiisN3JQ== dependencies: ansi-html-community "^0.0.8" common-path-prefix "^3.0.0" @@ -1994,19 +2005,19 @@ integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== "@reduxjs/toolkit@^1.9.3": - version "1.9.5" - resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-1.9.5.tgz#d3987849c24189ca483baa7aa59386c8e52077c4" - integrity sha512-Rt97jHmfTeaxL4swLRNPD/zV4OxTes4la07Xc4hetpUW/vc75t5m1ANyxG6ymnEQ2FsLQsoMlYB2vV1sO3m8tQ== + version "1.9.6" + resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-1.9.6.tgz#fc968b45fe5b17ff90932c4556960d9c1078365a" + integrity sha512-Gc4ikl90ORF4viIdAkY06JNUnODjKfGxZRwATM30EdHq8hLSVoSrwXne5dd739yenP5bJxAX7tLuOWK5RPGtrw== dependencies: immer "^9.0.21" redux "^4.2.1" redux-thunk "^2.4.2" reselect "^4.1.8" -"@remix-run/router@1.7.2": - version "1.7.2" - resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.7.2.tgz#cba1cf0a04bc04cb66027c51fa600e9cbc388bc8" - integrity sha512-7Lcn7IqGMV+vizMPoEl5F0XDshcdDYtMI6uJLQdQz5CfZAwy3vvGKYSUk789qndt5dEC4HfSjviSYlSoHGL2+A== +"@remix-run/router@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.9.0.tgz#9033238b41c4cbe1e961eccb3f79e2c588328cf6" + integrity sha512-bV63itrKBC0zdT27qYm6SDZHlkXwFL1xMBuhkn+X7l0+IIhNaH5wuuvZKp6eKhCD4KFhujhfhCT1YxXW6esUIA== "@rollup/plugin-babel@^5.2.0": version "5.3.1" @@ -2046,9 +2057,9 @@ picomatch "^2.2.2" "@rushstack/eslint-patch@^1.1.0": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.3.2.tgz#31b9c510d8cada9683549e1dbb4284cca5001faf" - integrity sha512-V+MvGwaHH03hYhY+k6Ef/xKd6RYlc4q8WBx+2ANmipHJcKuktNcI/NgEsJgdSUF6Lw32njT6OnrRsKYCdgHjYw== + version "1.5.0" + resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.5.0.tgz#5143b0da9c536bfe8beddfeb68bb8b5d647cc7a3" + integrity sha512-EF3948ckf3f5uPgYbQ6GhyA56Dmv8yg0+ir+BroRjwdxyZJsekhZzawOecC2rOTPCz173t7ZcR1HHZu0dZgOCw== "@sinclair/typebox@^0.24.1": version "0.24.51" @@ -2193,9 +2204,9 @@ integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": - version "7.20.1" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.1.tgz#916ecea274b0c776fec721e333e55762d3a9614b" - integrity sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw== + version "7.20.2" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.2.tgz#215db4f4a35d710256579784a548907237728756" + integrity sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA== dependencies: "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" @@ -2204,87 +2215,87 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.6.4" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" - integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== + version "7.6.5" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.5.tgz#281f4764bcbbbc51fdded0f25aa587b4ce14da95" + integrity sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": - version "7.4.1" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" - integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== + version "7.4.2" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.2.tgz#843e9f1f47c957553b0c374481dc4772921d6a6b" + integrity sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.20.1" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.1.tgz#dd6f1d2411ae677dcb2db008c962598be31d6acf" - integrity sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg== + version "7.20.2" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.2.tgz#4ddf99d95cfdd946ff35d2b65c978d9c9bf2645d" + integrity sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw== dependencies: "@babel/types" "^7.20.7" "@types/body-parser@*": - version "1.19.2" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" - integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== + version "1.19.3" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.3.tgz#fb558014374f7d9e56c8f34bab2042a3a07d25cd" + integrity sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ== dependencies: "@types/connect" "*" "@types/node" "*" "@types/bonjour@^3.5.9": - version "3.5.10" - resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.10.tgz#0f6aadfe00ea414edc86f5d106357cda9701e275" - integrity sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw== + version "3.5.11" + resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.11.tgz#fbaa46a1529ea5c5e46cde36e4be6a880db55b84" + integrity sha512-isGhjmBtLIxdHBDl2xGwUzEM8AOyOvWsADWq7rqirdi/ZQoHnLWErHvsThcEzTX8juDRiZtzp2Qkv5bgNh6mAg== dependencies: "@types/node" "*" "@types/connect-history-api-fallback@^1.3.5": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz#9fd20b3974bdc2bcd4ac6567e2e0f6885cb2cf41" - integrity sha512-4x5FkPpLipqwthjPsF7ZRbOv3uoLUFkTA9G9v583qi4pACvq0uTELrB8OLUzPWUI4IJIyvM85vzkV1nyiI2Lig== + version "1.5.1" + resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.1.tgz#6e5e3602d93bda975cebc3449e1a318340af9e20" + integrity sha512-iaQslNbARe8fctL5Lk+DsmgWOM83lM+7FzP0eQUJs1jd3kBE8NWqBTIT2S8SqQOJjxvt2eyIjpOuYeRXq2AdMw== dependencies: "@types/express-serve-static-core" "*" "@types/node" "*" "@types/connect@*": - version "3.4.35" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" - integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== + version "3.4.36" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.36.tgz#e511558c15a39cb29bd5357eebb57bd1459cd1ab" + integrity sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w== dependencies: "@types/node" "*" "@types/country-list@^2.1.1": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@types/country-list/-/country-list-2.1.1.tgz#382f9fb48d9639c11475832740e418aa31db67c7" - integrity sha512-maNkQzgLbyoi5mwwAL0KCb6l5/rn02N9y/CIBf4AYPrJ0pU2AvUTQ5LOw6GA4AAPrtiL44LWiwXzybUAUUYA3Q== + version "2.1.2" + resolved "https://registry.yarnpkg.com/@types/country-list/-/country-list-2.1.2.tgz#c0cb264d5f453cc24b86cfcd53b2bd708e3403f1" + integrity sha512-LhbigLmoDb/Ulfi8PDTZWjnT4nGwDBVVXh07fTIYzF83EKWBzO5zL1snBZ9Vjp1MOoYYJMOlBDvt7Dlk1H78WQ== "@types/crypto-js@^4.1.1": - version "4.1.1" - resolved "https://registry.yarnpkg.com/@types/crypto-js/-/crypto-js-4.1.1.tgz#602859584cecc91894eb23a4892f38cfa927890d" - integrity sha512-BG7fQKZ689HIoc5h+6D2Dgq1fABRa0RbBWKBd9SP/MVRVXROflpm5fhwyATX5duFmbStzyzyycPB8qUYKDH3NA== + version "4.1.2" + resolved "https://registry.yarnpkg.com/@types/crypto-js/-/crypto-js-4.1.2.tgz#fb56b34f397d9ae2335611e416f15e7d65e276e6" + integrity sha512-t33RNmTu5ufG/sorROIafiCVJMx3jz95bXUMoPAZcUD14fxMXnuTzqzXZoxpR0tNx2xpw11Dlmem9vGCsrSOfA== "@types/eslint-scope@^3.7.3": - version "3.7.4" - resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz#37fc1223f0786c39627068a12e94d6e6fc61de16" - integrity sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA== + version "3.7.5" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.5.tgz#e28b09dbb1d9d35fdfa8a884225f00440dfc5a3e" + integrity sha512-JNvhIEyxVW6EoMIFIvj93ZOywYFatlpu9deeH6eSx6PE3WHYvHaQtmHmQeNw7aA81bYGBPPQqdtBm6b1SsQMmA== dependencies: "@types/eslint" "*" "@types/estree" "*" "@types/eslint@*", "@types/eslint@^7.29.0 || ^8.4.1": - version "8.44.1" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.44.1.tgz#d1811559bb6bcd1a76009e3f7883034b78a0415e" - integrity sha512-XpNDc4Z5Tb4x+SW1MriMVeIsMoONHCkWFMkR/aPJbzEsxqHy+4Glu/BqTdPrApfDeMaXbtNh6bseNgl5KaWrSg== + version "8.44.3" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.44.3.tgz#96614fae4875ea6328f56de38666f582d911d962" + integrity sha512-iM/WfkwAhwmPff3wZuPLYiHX18HI24jU8k1ZSH7P8FHwxTjZ2P6CoX2wnF43oprR+YXJM6UUxATkNvyv/JHd+g== dependencies: "@types/estree" "*" "@types/json-schema" "*" "@types/estree@*", "@types/estree@^1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" - integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== + version "1.0.2" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.2.tgz#ff02bc3dc8317cd668dfec247b750ba1f1d62453" + integrity sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA== "@types/estree@0.0.39": version "0.0.39" @@ -2292,9 +2303,9 @@ integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== "@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": - version "4.17.35" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz#c95dd4424f0d32e525d23812aa8ab8e4d3906c4f" - integrity sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg== + version "4.17.37" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.37.tgz#7e4b7b59da9142138a2aaa7621f5abedce8c7320" + integrity sha512-ZohaCYTgGFcOP7u6aJOhY9uIZQgZ2vxC2yWoArY+FeDXlqeH66ZVBjgvg+RLVAS/DWNq4Ap9ZXu1+SUQiiWYMg== dependencies: "@types/node" "*" "@types/qs" "*" @@ -2302,9 +2313,9 @@ "@types/send" "*" "@types/express@*", "@types/express@^4.17.13": - version "4.17.17" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.17.tgz#01d5437f6ef9cfa8668e616e13c2f2ac9a491ae4" - integrity sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q== + version "4.17.18" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.18.tgz#efabf5c4495c1880df1bdffee604b143b29c4a95" + integrity sha512-Sxv8BSLLgsBYmcnGdGjjEjqET2U+AKAdCRODmMiq02FgjwuV75Ut85DRpvFjyw/Mk0vgUOliGRU0UUmuuZHByQ== dependencies: "@types/body-parser" "*" "@types/express-serve-static-core" "^4.17.33" @@ -2312,16 +2323,16 @@ "@types/serve-static" "*" "@types/graceful-fs@^4.1.2": - version "4.1.6" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.6.tgz#e14b2576a1c25026b7f02ede1de3b84c3a1efeae" - integrity sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw== + version "4.1.7" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.7.tgz#30443a2e64fd51113bc3e2ba0914d47109695e2a" + integrity sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw== dependencies: "@types/node" "*" "@types/hoist-non-react-statics@^3.3.1": - version "3.3.1" - resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f" - integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA== + version "3.3.2" + resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#dc1e9ded53375d37603c479cc12c693b0878aa2a" + integrity sha512-YIQtIg4PKr7ZyqNPZObpxfHsHEmuB8dXCxd6qVcGuQVDK2bpsF7bYNnBJ4Nn7giuACZg+WewExgrtAJ3XnA4Xw== dependencies: "@types/react" "*" hoist-non-react-statics "^3.3.0" @@ -2332,14 +2343,14 @@ integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== "@types/http-errors@*": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.1.tgz#20172f9578b225f6c7da63446f56d4ce108d5a65" - integrity sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ== + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.2.tgz#a86e00bbde8950364f8e7846687259ffcd96e8c2" + integrity sha512-lPG6KlZs88gef6aD85z3HNkztpj7w2R7HmR3gygjfXCQmsLloWNARFkMuzKiiY8FGdh1XDpgBdrSf4aKDiA7Kg== "@types/http-proxy@^1.17.8": - version "1.17.11" - resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.11.tgz#0ca21949a5588d55ac2b659b69035c84bd5da293" - integrity sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA== + version "1.17.12" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.12.tgz#86e849e9eeae0362548803c37a0a1afc616bd96b" + integrity sha512-kQtujO08dVtQ2wXAuSFfk9ASy3sug4+ogFR8Kd8UgP8PEuc1/G/8yjYRmp//PcDNJEUKOza/MrQu15bouEUCiw== dependencies: "@types/node" "*" @@ -2349,28 +2360,28 @@ integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== "@types/istanbul-lib-report@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" - integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#412e0725ef41cde73bfa03e0e833eaff41e0fd63" + integrity sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ== dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^3.0.0": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" - integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.2.tgz#edc8e421991a3b4df875036d381fc0a5a982f549" + integrity sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A== dependencies: "@types/istanbul-lib-report" "*" "@types/js-cookie@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/js-cookie/-/js-cookie-3.0.3.tgz#d6bfbbdd0c187354ca555213d1962f6d0691ff4e" - integrity sha512-Xe7IImK09HP1sv2M/aI+48a20VX+TdRJucfq4vfRVy6nWN8PYPOEnlMRSgxJAgYQIXJVL8dZ4/ilAM7dWNaOww== + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/js-cookie/-/js-cookie-3.0.4.tgz#23475b6d3b03acc84192e7c24da88eb38c1039ef" + integrity sha512-vMMnFF+H5KYqdd/myCzq6wLDlPpteJK+jGFgBus3Da7lw+YsDmx2C8feGTzY2M3Fo823yON+HC2CL240j4OV+w== "@types/json-schema@*", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": - version "7.0.12" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.12.tgz#d70faba7039d5fca54c83c7dbab41051d2b6f6cb" - integrity sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA== + version "7.0.13" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.13.tgz#02c24f4363176d2d18fc8b70b9f3c54aba178a85" + integrity sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ== "@types/json5@^0.0.29": version "0.0.29" @@ -2378,24 +2389,24 @@ integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== "@types/mime@*": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" - integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.2.tgz#c1ae807f13d308ee7511a5b81c74f327028e66e8" + integrity sha512-Wj+fqpTLtTbG7c0tH47dkahefpLKEbB+xAZuLq7b4/IDHPl/n6VoXcyUQ2bypFlbSwvCr0y+bD4euTTqTJsPxQ== "@types/mime@^1": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" - integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== + version "1.3.3" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.3.tgz#bbe64987e0eb05de150c305005055c7ad784a9ce" + integrity sha512-Ys+/St+2VF4+xuY6+kDIXGxbNRO0mesVg0bbxEfB97Od1Vjpjx9KD1qxs64Gcb3CWPirk9Xe+PT4YiiHQ9T+eg== "@types/node@*": - version "20.4.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.4.5.tgz#9dc0a5cb1ccce4f7a731660935ab70b9c00a5d69" - integrity sha512-rt40Nk13II9JwQBdeYqmbn2Q6IVTA5uPhvSO+JVqdXw/6/4glI6oR9ezty/A9Hg5u7JH4OmYmuQ+XvjKm0Datg== + version "20.7.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.7.1.tgz#06d732ead0bd5ad978ef0ea9cbdeb24dc8717514" + integrity sha512-LT+OIXpp2kj4E2S/p91BMe+VgGX2+lfO+XTpfXhh+bCk2LkQtHZSub8ewFBMGP5ClysPjTDFa4sMI8Q3n4T0wg== -"@types/node@^14.14.31": - version "14.18.54" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.54.tgz#fc304bd66419030141fa997dc5a9e0e374029ae8" - integrity sha512-uq7O52wvo2Lggsx1x21tKZgqkJpvwCseBBPtX/nKQfpVlEsLOb11zZ1CRsWUKvJF0+lzuA9jwvA7Pr2Wt7i3xw== +"@types/node@^16.18.39": + version "16.18.54" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.54.tgz#4a63bdcea5b714f546aa27406a1c60621236a132" + integrity sha512-oTmGy68gxZZ21FhTJVVvZBYpQHEBZxHKTsGshobMqm9qWpbqdZsA5jvsuPZcHu0KwpmLrOHWPdEfg7XDpNT9UA== "@types/node@^17.0.45": version "17.0.45" @@ -2403,9 +2414,9 @@ integrity sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw== "@types/parcel-bundler@^1.12.5": - version "1.12.5" - resolved "https://registry.yarnpkg.com/@types/parcel-bundler/-/parcel-bundler-1.12.5.tgz#785c5a714c021030da248091b2d3f4d2b80d26e2" - integrity sha512-S/8tN3NMT60NPOtEOh075druSjpj/Qws5rnaQcEANQy2CZljMkkIlxkYScrRfs3cYXdCxDAZMMV1LTT/a3dSOw== + version "1.12.6" + resolved "https://registry.yarnpkg.com/@types/parcel-bundler/-/parcel-bundler-1.12.6.tgz#031ce205c433840d3b5b03dbce8fc74e3529947b" + integrity sha512-kFdL1J49zCXW+xsJTrU/BBdxlJpArtXcmkufsYNhwx7sN4s0570CnBXyQSjdDD3yrOrDQ/5fR8VtFFJBnzx8Ug== dependencies: "@types/express-serve-static-core" "*" @@ -2420,57 +2431,50 @@ integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== "@types/prop-types@*", "@types/prop-types@^15.7.5": - version "15.7.5" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" - integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== + version "15.7.7" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.7.tgz#f9361f7b87fd5d8188b2c998db0a1f47e9fb391a" + integrity sha512-FbtmBWCcSa2J4zL781Zf1p5YUBXQomPEcep9QZCfRfQgTxz3pJWiDFLebohZ9fFntX5ibzOkSsrJ0TEew8cAog== "@types/q@^1.5.1": - version "1.5.5" - resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.5.tgz#75a2a8e7d8ab4b230414505d92335d1dcb53a6df" - integrity sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ== + version "1.5.6" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.6.tgz#a6edffe8283910e46dc7a573621f928e6b47fa56" + integrity sha512-IKjZ8RjTSwD4/YG+2gtj7BPFRB/lNbWKTiSj3M7U/TD2B7HfYCxvp2Zz6xA2WIY7pAuL1QOUPw8gQRbUrrq4fQ== "@types/qs@*": - version "6.9.7" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" - integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== + version "6.9.8" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.8.tgz#f2a7de3c107b89b441e071d5472e6b726b4adf45" + integrity sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg== "@types/range-parser@*": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" - integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== + version "1.2.5" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.5.tgz#38bd1733ae299620771bd414837ade2e57757498" + integrity sha512-xrO9OoVPqFuYyR/loIHjnbvvyRZREYKLjxV4+dY6v3FQR3stQ9ZxIGkaclF7YhI9hfjpuTbu14hZEy94qKLtOA== "@types/react-copy-to-clipboard@^5.0.4": - version "5.0.4" - resolved "https://registry.yarnpkg.com/@types/react-copy-to-clipboard/-/react-copy-to-clipboard-5.0.4.tgz#558f2c38a97f53693e537815f6024f1e41e36a7e" - integrity sha512-otTJsJpofYAeaIeOwV5xBUGpo6exXG2HX7X4nseToCB2VgPEBxGBHCm/FecZ676doNR7HCSTVtmohxfG2b3/yQ== + version "5.0.5" + resolved "https://registry.yarnpkg.com/@types/react-copy-to-clipboard/-/react-copy-to-clipboard-5.0.5.tgz#f61fbb76ad22f50101534ddb9b5d45c8dd5b4b80" + integrity sha512-en3JGqPA4RX4aUlo6q6uUbnqLp31Dhm2E/thiMvFTIvU+dUDG249jBG2MJ0rPMXE/MbKVrpmi/1r1G4QLhIHKQ== dependencies: "@types/react" "*" "@types/react-dom@^18.0.11": - version "18.2.7" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.7.tgz#67222a08c0a6ae0a0da33c3532348277c70abb63" - integrity sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA== - dependencies: - "@types/react" "*" - -"@types/react-is@^18.2.1": - version "18.2.1" - resolved "https://registry.yarnpkg.com/@types/react-is/-/react-is-18.2.1.tgz#61d01c2a6fc089a53520c0b66996d458fdc46863" - integrity sha512-wyUkmaaSZEzFZivD8F2ftSyAfk6L+DfFliVj/mYdOXbVjRcS87fQJLTnhk6dRZPuJjI+9g6RZJO4PNCngUrmyw== + version "18.2.8" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.8.tgz#338f1b0a646c9f10e0a97208c1d26b9f473dffd6" + integrity sha512-bAIvO5lN/U8sPGvs1Xm61rlRHHaq5rp5N3kp9C+NJ/Q41P8iqjkXSu0+/qu8POsjH9pNWb0OYabFez7taP7omw== dependencies: "@types/react" "*" "@types/react-transition-group@^4.4.6": - version "4.4.6" - resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.6.tgz#18187bcda5281f8e10dfc48f0943e2fdf4f75e2e" - integrity sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew== + version "4.4.7" + resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.7.tgz#bf69f269d74aa78b99097673ca6dd6824a68ef1c" + integrity sha512-ICCyBl5mvyqYp8Qeq9B5G/fyBSRC0zx3XM3sCC6KkcMsNeAHqXBKkmat4GqdJET5jtYUpZXrxI5flve5qhi2Eg== dependencies: "@types/react" "*" "@types/react@*", "@types/react@^18.0.28": - version "18.2.17" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.17.tgz#baa565b17ddb649c2dac85b5eaf9e9a1fe0f3b4e" - integrity sha512-u+e7OlgPPh+aryjOm5UJMX32OvB2E3QASOAqVMY6Ahs90djagxwv2ya0IctglNbNTexC12qCSMZG47KPfy1hAA== + version "18.2.23" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.23.tgz#60ad6cf4895e93bed858db0e03bcc4ff97d0410e" + integrity sha512-qHLW6n1q2+7KyBEYnrZpcsAmU/iiCh9WGCKgXvMxx89+TYdJWRjZohVIo9XTcoLhfX3+/hP0Pbulu3bCZQ9PSA== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" @@ -2489,34 +2493,34 @@ integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== "@types/scheduler@*": - version "0.16.3" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.3.tgz#cef09e3ec9af1d63d2a6cc5b383a737e24e6dcf5" - integrity sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ== + version "0.16.4" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.4.tgz#fedc3e5b15c26dc18faae96bf1317487cb3658cf" + integrity sha512-2L9ifAGl7wmXwP4v3pN4p2FLhD0O1qsJpvKmNin5VA8+UvNVb447UDaAEV6UdrkA+m/Xs58U1RFps44x6TFsVQ== "@types/semver@^7.3.12": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.0.tgz#591c1ce3a702c45ee15f47a42ade72c2fd78978a" - integrity sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw== + version "7.5.3" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.3.tgz#9a726e116beb26c24f1ccd6850201e1246122e04" + integrity sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw== "@types/send@*": - version "0.17.1" - resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.1.tgz#ed4932b8a2a805f1fe362a70f4e62d0ac994e301" - integrity sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q== + version "0.17.2" + resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.2.tgz#af78a4495e3c2b79bfbdac3955fdd50e03cc98f2" + integrity sha512-aAG6yRf6r0wQ29bkS+x97BIs64ZLxeE/ARwyS6wrldMm3C1MdKwCcnnEwMC1slI8wuxJOpiUH9MioC0A0i+GJw== dependencies: "@types/mime" "^1" "@types/node" "*" "@types/serve-index@^1.9.1": - version "1.9.1" - resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.1.tgz#1b5e85370a192c01ec6cec4735cf2917337a6278" - integrity sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg== + version "1.9.2" + resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.2.tgz#cb26e775678a8526b73a5d980a147518740aaecd" + integrity sha512-asaEIoc6J+DbBKXtO7p2shWUpKacZOoMBEGBgPG91P8xhO53ohzHWGCs4ScZo5pQMf5ukQzVT9fhX1WzpHihig== dependencies: "@types/express" "*" "@types/serve-static@*", "@types/serve-static@^1.13.10": - version "1.15.2" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.2.tgz#3e5419ecd1e40e7405d34093f10befb43f63381a" - integrity sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw== + version "1.15.3" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.3.tgz#2cfacfd1fd4520bbc3e292cca432d5e8e2e3ee61" + integrity sha512-yVRvFsEMrv7s0lGhzrggJjNOSmZCdgCjw9xWrPr/kNNLp6FaDfMC1KaYl3TSJ0c58bECwNBMoQrZJ8hA8E1eFg== dependencies: "@types/http-errors" "*" "@types/mime" "*" @@ -2528,14 +2532,14 @@ integrity sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g== "@types/sizzle@^2.3.2": - version "2.3.3" - resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.3.tgz#ff5e2f1902969d305225a047c8a0fd5c915cebef" - integrity sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ== + version "2.3.4" + resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.4.tgz#cd6531924f60834fa4a1b8081f9eecf9bb1117f0" + integrity sha512-jA2llq2zNkg8HrALI7DtWzhALcVH0l7i89yhY3iBdOz6cBPeACoFq+fkQrjHA39t1hnSFOboZ7A/AY5MMZSlag== "@types/sockjs@^0.3.33": - version "0.3.33" - resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.33.tgz#570d3a0b99ac995360e3136fd6045113b1bd236f" - integrity sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw== + version "0.3.34" + resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.34.tgz#43e10e549b36d2ba2589278f00f81b5d7ccda167" + integrity sha512-R+n7qBFnm/6jinlteC9DBL5dGiDGjWAvjo4viUanpnc/dG1y7uDoacXPIQ/PQEg1fI912SMHIa014ZjRpvDw4g== dependencies: "@types/node" "*" @@ -2545,9 +2549,9 @@ integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== "@types/trusted-types@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.3.tgz#a136f83b0758698df454e328759dbd3d44555311" - integrity sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g== + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.4.tgz#2b38784cd16957d3782e8e2b31c03bc1d13b4d65" + integrity sha512-IDaobHimLQhjwsQ/NMwRVfa/yL7L/wriQPMhw1ZJall0KX6E1oxk29XMDeilW5qTIg5aoiqf5Udy8U/51aNoQQ== "@types/use-sync-external-store@^0.0.3": version "0.0.3" @@ -2555,35 +2559,35 @@ integrity sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA== "@types/ws@^8.5.5": - version "8.5.5" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.5.tgz#af587964aa06682702ee6dcbc7be41a80e4b28eb" - integrity sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg== + version "8.5.6" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.6.tgz#e9ad51f0ab79b9110c50916c9fcbddc36d373065" + integrity sha512-8B5EO9jLVCy+B58PLHvLDuOD8DRVMgQzq8d55SjLCOn9kqGyqOvy27exVaTio1q1nX5zLu8/6N0n2ThSxOM6tg== dependencies: "@types/node" "*" "@types/yargs-parser@*": - version "21.0.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" - integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== + version "21.0.1" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.1.tgz#07773d7160494d56aa882d7531aac7319ea67c3b" + integrity sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ== "@types/yargs@^16.0.0": - version "16.0.5" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.5.tgz#12cc86393985735a283e387936398c2f9e5f88e3" - integrity sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ== + version "16.0.6" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.6.tgz#cc0c63684d68d23498cf0b5f32aa4c3fb437c638" + integrity sha512-oTP7/Q13GSPrgcwEwdlnkoZSQ1Hg9THe644qq8PG6hhJzjZ3qj1JjEFPIwWV/IXVs5XGIVqtkNOS9kh63WIJ+A== dependencies: "@types/yargs-parser" "*" "@types/yargs@^17.0.8": - version "17.0.24" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.24.tgz#b3ef8d50ad4aa6aecf6ddc97c580a00f5aa11902" - integrity sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw== + version "17.0.25" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.25.tgz#3edd102803c97356fb4c805b2bbaf7dfc9ab6abc" + integrity sha512-gy7iPgwnzNvxgAEi2bXOHWCVOG6f7xsprVJH4MjlAWeBmJ7vh/Y1kwMtUrs64ztf24zVIRCpr3n/z6gm9QIkgg== dependencies: "@types/yargs-parser" "*" "@types/yauzl@^2.9.1": - version "2.10.0" - resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.0.tgz#b3248295276cf8c6f153ebe6a9aba0c988cb2599" - integrity sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw== + version "2.10.1" + resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.1.tgz#4e8f299f0934d60f36c74f59cb5a8483fd786691" + integrity sha512-CHzgNU3qYBnp/O4S3yv2tXPlvMTq0YWSTVg2/JYLqWZGHwwgJGAwd00poay/11asPq8wLFwHzubyInqHIFmmiw== dependencies: "@types/node" "*" @@ -2935,7 +2939,7 @@ ajv@8.11.0: require-from-string "^2.0.2" uri-js "^4.2.2" -ajv@^6.10.0, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: +ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -3141,14 +3145,14 @@ array-flatten@^2.1.2: integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== array-includes@^3.1.6: - version "3.1.6" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f" - integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw== + version "3.1.7" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.7.tgz#8cd2e01b26f7a3086cbc87271593fe921c62abda" + integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - get-intrinsic "^1.1.3" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" is-string "^1.0.7" array-union@^2.1.0: @@ -3161,56 +3165,68 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== +array.prototype.findlastindex@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz#b37598438f97b579166940814e2c0493a4f50207" + integrity sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + get-intrinsic "^1.2.1" + array.prototype.flat@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz#ffc6576a7ca3efc2f46a143b9d1dda9b4b3cf5e2" - integrity sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA== + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" + integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" es-shim-unscopables "^1.0.0" array.prototype.flatmap@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz#1aae7903c2100433cb8261cd4ed310aab5c4a183" - integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ== + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" + integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" es-shim-unscopables "^1.0.0" -array.prototype.reduce@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz#6b20b0daa9d9734dd6bc7ea66b5bbce395471eac" - integrity sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q== +array.prototype.reduce@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.6.tgz#63149931808c5fc1e1354814923d92d45f7d96d5" + integrity sha512-UW+Mz8LG/sPSU8jRDCjVr6J/ZKAGpHfwrZ6kWTG5qCxIEiXdVshqGnu5vEZA8S1y6X4aCSbQZ0/EEsfvEvBiSg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" es-array-method-boxes-properly "^1.0.0" is-string "^1.0.7" array.prototype.tosorted@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz#ccf44738aa2b5ac56578ffda97c03fd3e23dd532" - integrity sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ== + version "1.1.2" + resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz#620eff7442503d66c799d95503f82b475745cefd" + integrity sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" es-shim-unscopables "^1.0.0" - get-intrinsic "^1.1.3" + get-intrinsic "^1.2.1" -arraybuffer.prototype.slice@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz#9b5ea3868a6eebc30273da577eb888381c0044bb" - integrity sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw== +arraybuffer.prototype.slice@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12" + integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== dependencies: array-buffer-byte-length "^1.0.0" call-bind "^1.0.2" define-properties "^1.2.0" + es-abstract "^1.22.1" get-intrinsic "^1.2.1" is-array-buffer "^3.0.2" is-shared-array-buffer "^1.0.2" @@ -3243,12 +3259,12 @@ assert-plus@1.0.0, assert-plus@^1.0.0: integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== assert@^1.1.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" - integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== + version "1.5.1" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.1.tgz#038ab248e4ff078e7bc2485ba6e6388466c78f76" + integrity sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A== dependencies: - object-assign "^4.1.1" - util "0.10.3" + object.assign "^4.1.4" + util "^0.10.4" assign-symbols@^1.0.0: version "1.0.0" @@ -3280,6 +3296,13 @@ async@^3.2.0, async@^3.2.3: resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== +asynciterator.prototype@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz#8c5df0514936cdd133604dfcc9d3fb93f09b2b62" + integrity sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg== + dependencies: + has-symbols "^1.0.3" + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -3296,13 +3319,13 @@ atob@^2.1.2: integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== autoprefixer@^10.4.13: - version "10.4.14" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.14.tgz#e28d49902f8e759dd25b153264e862df2705f79d" - integrity sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ== + version "10.4.16" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.16.tgz#fad1411024d8670880bdece3970aa72e3572feb8" + integrity sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ== dependencies: - browserslist "^4.21.5" - caniuse-lite "^1.0.30001464" - fraction.js "^4.2.0" + browserslist "^4.21.10" + caniuse-lite "^1.0.30001538" + fraction.js "^4.3.6" normalize-range "^0.1.2" picocolors "^1.0.0" postcss-value-parser "^4.2.0" @@ -3323,9 +3346,9 @@ aws4@^1.8.0: integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== axe-core@^4.6.2: - version "4.7.2" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.7.2.tgz#040a7342b20765cb18bb50b628394c21bccc17a0" - integrity sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g== + version "4.8.2" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.8.2.tgz#2f6f3cde40935825cf4465e3c1c9e77b240ff6ae" + integrity sha512-/dlp0fxyM3R8YW7MFzaHWXrf4zzbr0vaYb23VBFCl83R7nWNPg/yaQw2Dc8jzCMmDVLhSdzH8MjrsuIUuvX+6g== axobject-query@^3.1.1: version "3.2.1" @@ -3404,7 +3427,7 @@ babel-plugin-named-asset-import@^0.3.8: resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz#6b7fa43c59229685368683c28bc9734f24524cc2" integrity sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q== -babel-plugin-polyfill-corejs2@^0.4.4: +babel-plugin-polyfill-corejs2@^0.4.5: version "0.4.5" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz#8097b4cb4af5b64a1d11332b6fb72ef5e64a054c" integrity sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg== @@ -3413,15 +3436,15 @@ babel-plugin-polyfill-corejs2@^0.4.4: "@babel/helper-define-polyfill-provider" "^0.4.2" semver "^6.3.1" -babel-plugin-polyfill-corejs3@^0.8.2: - version "0.8.3" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz#b4f719d0ad9bb8e0c23e3e630c0c8ec6dd7a1c52" - integrity sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA== +babel-plugin-polyfill-corejs3@^0.8.3: + version "0.8.4" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.4.tgz#1fac2b1dcef6274e72b3c72977ed8325cb330591" + integrity sha512-9l//BZZsPR+5XjyJMPtZSK4jv0BsTO1zDac2GC6ygx9WLGlcsnRd1Co0B2zT5fF5Ic6BZy+9m3HNZ3QcOeDKfg== dependencies: "@babel/helper-define-polyfill-provider" "^0.4.2" - core-js-compat "^3.31.0" + core-js-compat "^3.32.2" -babel-plugin-polyfill-regenerator@^0.5.1: +babel-plugin-polyfill-regenerator@^0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz#80d0f3e1098c080c8b5a65f41e9427af692dc326" integrity sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA== @@ -3544,13 +3567,14 @@ bcrypt-pbkdf@^1.0.0: tweetnacl "^0.14.3" bfj@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/bfj/-/bfj-7.0.2.tgz#1988ce76f3add9ac2913fd8ba47aad9e651bfbb2" - integrity sha512-+e/UqUzwmzJamNF50tBV6tZPTORow7gQ96iFow+8b562OdMpEK0BcJEq2OSPEDmAbSMBQ7PKZ87ubFkgxpYWgw== + version "7.1.0" + resolved "https://registry.yarnpkg.com/bfj/-/bfj-7.1.0.tgz#c5177d522103f9040e1b12980fe8c38cf41d3f8b" + integrity sha512-I6MMLkn+anzNdCUp9hMRyui1HaNEUCco50lxbvNS4+EyXg8lN3nJ48PjPWtbH8UVS9CuMoaKE9U2V3l29DaRQw== dependencies: - bluebird "^3.5.5" - check-types "^11.1.1" + bluebird "^3.7.2" + check-types "^11.2.3" hoopy "^0.1.4" + jsonpath "^1.1.1" tryer "^1.0.1" big.js@^5.2.2: @@ -3585,7 +3609,7 @@ bluebird@3.7.1: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.1.tgz#df70e302b471d7473489acf26a93d63b53f874de" integrity sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg== -bluebird@^3.5.5, bluebird@^3.7.2: +bluebird@^3.7.2: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== @@ -3766,15 +3790,15 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^4.0.0, browserslist@^4.1.0, browserslist@^4.14.5, browserslist@^4.18.1, browserslist@^4.21.4, browserslist@^4.21.5, browserslist@^4.21.9: - version "4.21.9" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.9.tgz#e11bdd3c313d7e2a9e87e8b4b0c7872b13897635" - integrity sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg== +browserslist@^4.0.0, browserslist@^4.1.0, browserslist@^4.14.5, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.21.9: + version "4.22.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.0.tgz#6adc8116589ccea8a99d0df79c5de2436199abdb" + integrity sha512-v+Jcv64L2LbfTC6OnRcaxtqJNJuQAVhZKSJfR/6hn7lhnChUXl4amwVviqN1k411BB+3rRoKMitELRn1CojeRA== dependencies: - caniuse-lite "^1.0.30001503" - electron-to-chromium "^1.4.431" - node-releases "^2.0.12" - update-browserslist-db "^1.0.11" + caniuse-lite "^1.0.30001539" + electron-to-chromium "^1.4.530" + node-releases "^2.0.13" + update-browserslist-db "^1.0.13" bser@2.1.1: version "2.1.1" @@ -3952,10 +3976,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001464, caniuse-lite@^1.0.30001503: - version "1.0.30001517" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001517.tgz#90fabae294215c3495807eb24fc809e11dc2f0a8" - integrity sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001538, caniuse-lite@^1.0.30001539: + version "1.0.30001541" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001541.tgz#b1aef0fadd87fb72db4dcb55d220eae17b81cdb1" + integrity sha512-bLOsqxDgTqUBkzxbNlSBt8annkDpQB9NdzdTbO2ooJ+eC/IQcvDspDc058g84ejCelF7vHUx57KIOjEecOHXaw== case-sensitive-paths-webpack-plugin@^2.4.0: version "2.4.0" @@ -3998,7 +4022,7 @@ chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.1, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.1, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -4027,10 +4051,10 @@ check-more-types@^2.24.0: resolved "https://registry.yarnpkg.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600" integrity sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA== -check-types@^11.1.1: - version "11.2.2" - resolved "https://registry.yarnpkg.com/check-types/-/check-types-11.2.2.tgz#7afc0b6a860d686885062f2dba888ba5710335b4" - integrity sha512-HBiYvXvn9Z70Z88XKjz3AEKd4HJhBXsa3j7xFnITAzoS8+q6eIGi8qDB8FKPBAjtuxjI/zFpwuiCb8oDtKOYrA== +check-types@^11.2.3: + version "11.2.3" + resolved "https://registry.yarnpkg.com/check-types/-/check-types-11.2.3.tgz#1ffdf68faae4e941fce252840b1787b8edc93b71" + integrity sha512-+67P1GkJRaxQD6PKK0Et9DhwQB+vGg3PM5+aavopCpZT1lj9jeqfvpgTLAWErNj8qApkkmXlu/Ug74kmhagkXg== "chokidar@>=3.0.0 <4.0.0", chokidar@^3.4.2, chokidar@^3.5.3: version "3.5.3" @@ -4189,10 +4213,10 @@ clone@^2.1.1: resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== -clsx@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12" - integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== +clsx@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.0.0.tgz#12658f3fd98fafe62075595a5c30e43d18f3d00b" + integrity sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q== co@^4.6.0: version "4.6.0" @@ -4208,9 +4232,9 @@ coa@^2.0.2: chalk "^2.4.1" q "^1.1.2" -"codeforlife@github:ocadotechnology/codeforlife-package-javascript#disableErrorPageHandling": - version "1.27.2" - resolved "https://codeload.github.com/ocadotechnology/codeforlife-package-javascript/tar.gz/c5887d5bf5e90a93ecee072ebdb93f0f0078b86e" +"codeforlife@github:ocadotechnology/codeforlife-package-javascript#errorHandlingPage": + version "1.27.4" + resolved "https://codeload.github.com/ocadotechnology/codeforlife-package-javascript/tar.gz/29e0901d4815e102b3ed92179a48b5134a452de0" dependencies: "@emotion/react" "^11.10.6" "@emotion/styled" "^11.10.6" @@ -4424,6 +4448,11 @@ convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.5.1, resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" @@ -4446,17 +4475,17 @@ copy-to-clipboard@^3.3.1: dependencies: toggle-selection "^1.0.6" -core-js-compat@^3.31.0: - version "3.31.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.31.1.tgz#5084ad1a46858df50ff89ace152441a63ba7aae0" - integrity sha512-wIDWd2s5/5aJSdpOJHfSibxNODxoGoWOBHt8JSPB41NOE94M7kuTPZCYLOlTtuoXTsBPKobpJ6T+y0SSy5L9SA== +core-js-compat@^3.31.0, core-js-compat@^3.32.2: + version "3.32.2" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.32.2.tgz#8047d1a8b3ac4e639f0d4f66d4431aa3b16e004c" + integrity sha512-+GjlguTDINOijtVRUxrQOv3kfu9rl+qPNdX2LTbJ/ZyVTuxK+ksVSAGX1nHstu4hrv1En/uPTtWgq2gI5wt4AQ== dependencies: - browserslist "^4.21.9" + browserslist "^4.21.10" core-js-pure@^3.23.3: - version "3.31.1" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.31.1.tgz#73d154958881873bc19381df80bddb20c8d0cdb5" - integrity sha512-w+C62kvWti0EPs4KPMCMVv9DriHSXfQOCQ94bGGBiEW5rrbtt/Rz8n5Krhfw9cpFyzXBjf3DB3QnPdEzGDY4Fw== + version "3.32.2" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.32.2.tgz#b7dbdac528625cf87eb0523b532eb61551b9a6d1" + integrity sha512-Y2rxThOuNywTjnX/PgA5vWM6CZ9QB9sz9oGeCixV8MqXZO70z/5SHzf9EeBrEBK0PN36DnEBBu9O/aGWzKuMZQ== core-js@^2.4.0, core-js@^2.6.5: version "2.6.12" @@ -4464,9 +4493,9 @@ core-js@^2.4.0, core-js@^2.6.5: integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== core-js@^3.19.2: - version "3.31.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.31.1.tgz#f2b0eea9be9da0def2c5fece71064a7e5d687653" - integrity sha512-2sKLtfq1eFST7l7v62zaqXacPc7uG8ZAya8ogijLhTtaKNcpzpB4TMoTw2Si+8GYKRwFPMMtUT0263QFWFfqyQ== + version "3.32.2" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.32.2.tgz#172fb5949ef468f93b4be7841af6ab1f21992db7" + integrity sha512-pxXSw1mYZPDGvTQqEc5vgIb83jGQKFGYWY76z4a7weZXUolw3G+OvpZqSRcfYOoOVUQJYEPsWeQK8pKEnUtWxQ== core-util-is@1.0.2: version "1.0.2" @@ -4729,9 +4758,9 @@ css-what@^6.0.1: integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== cssdb@^7.1.0: - version "7.7.0" - resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-7.7.0.tgz#8a62f1c825c019134e7830729f050c29e3eca95e" - integrity sha512-1hN+I3r4VqSNQ+OmMXxYexnumbOONkSil0TWMebVXHtzYW4tRRPovUNHPHj2d4nrgOuYJ8Vs3XwvywsuwwXNNA== + version "7.7.2" + resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-7.7.2.tgz#fbebd90edfc6af129fda4fd986f9dd604a209094" + integrity sha512-pQPYP7/kch4QlkTcLuUNiNL2v/E+O+VIdotT+ug62/+2B2/jkzs5fMM6RHCzGCZ9C82pODEMSIzRRUzJOrl78g== cssesc@^3.0.0: version "3.0.0" @@ -4892,13 +4921,13 @@ csstype@^3.0.2, csstype@^3.1.2: integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== cypress@^12.8.1: - version "12.17.2" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-12.17.2.tgz#040ac55de1e811f6e037d231a2869d5ab8c29c85" - integrity sha512-hxWAaWbqQBzzMuadSGSuQg5PDvIGOovm6xm0hIfpCVcORsCAj/gF2p0EvfnJ4f+jK2PCiDgP6D2eeE9/FK4Mjg== + version "12.17.4" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-12.17.4.tgz#b4dadf41673058493fa0d2362faa3da1f6ae2e6c" + integrity sha512-gAN8Pmns9MA5eCDFSDJXWKUpaL3IDd89N9TtIupjYnzLSmlpVr+ZR+vb4U/qaMp+lB6tBvAmt7504c3Z4RU5KQ== dependencies: - "@cypress/request" "^2.88.11" + "@cypress/request" "2.88.12" "@cypress/xvfb" "^1.2.4" - "@types/node" "^14.14.31" + "@types/node" "^16.18.39" "@types/sinonjs__fake-timers" "8.1.1" "@types/sizzle" "^2.3.2" arch "^2.2.0" @@ -4931,6 +4960,7 @@ cypress@^12.8.1: minimist "^1.2.8" ospath "^1.2.2" pretty-bytes "^5.6.0" + process "^0.11.10" proxy-from-env "1.0.0" request-progress "^3.0.0" semver "^7.5.3" @@ -4969,11 +4999,16 @@ data-urls@^2.0.0: whatwg-mimetype "^2.3.0" whatwg-url "^8.0.0" -dayjs@1.11.9, dayjs@^1.10.4: +dayjs@1.11.9: version "1.11.9" resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.9.tgz#9ca491933fadd0a60a2c19f6c237c03517d71d1a" integrity sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA== +dayjs@^1.10.4: + version "1.11.10" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.10.tgz#68acea85317a6e164457d6d6947564029a6a16a0" + integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ== + deasync@^0.1.14: version "0.1.28" resolved "https://registry.yarnpkg.com/deasync/-/deasync-0.1.28.tgz#9b447b79b3f822432f0ab6a8614c0062808b5ad2" @@ -5071,16 +5106,26 @@ defaults@^1.0.3: dependencies: clone "^1.0.2" +define-data-property@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.0.tgz#0db13540704e1d8d479a0656cf781267531b9451" + integrity sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g== + dependencies: + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + define-lazy-prop@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== -define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5" - integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== +define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0, define-properties@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== dependencies: + define-data-property "^1.0.1" has-property-descriptors "^1.0.0" object-keys "^1.1.1" @@ -5194,9 +5239,9 @@ dns-equal@^1.0.0: integrity sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg== dns-packet@^5.2.2: - version "5.6.0" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.6.0.tgz#2202c947845c7a63c23ece58f2f70ff6ab4c2f7d" - integrity sha512-rza3UH1LwdHh9qyPXp8lkwpjSNk/AMD3dPytUoRoqnypDUhY0xvbdmVhWOfxO68frEfV9BU8V12Ez7ZsHGZpCQ== + version "5.6.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.6.1.tgz#ae888ad425a9d1478a0674256ab866de1012cf2f" + integrity sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw== dependencies: "@leichtgewicht/ip-codec" "^2.0.1" @@ -5373,10 +5418,10 @@ ejs@^3.1.6: dependencies: jake "^10.8.5" -electron-to-chromium@^1.4.431: - version "1.4.473" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.473.tgz#4853de13a335c70fe1f9df8d4029be54068767d1" - integrity sha512-aVfC8+440vGfl06l8HKKn8/PD5jRfSnLkTTD65EFvU46igbpQRri1gxSzW9/+TeUlwYzrXk1sw867T96zlyECA== +electron-to-chromium@^1.4.530: + version "1.4.534" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.534.tgz#2056c1fc41a7157cdd5c634f96e758d727b69201" + integrity sha512-ikY7wAMtMt3jTnHsHG0YLl4MKJiKz2tgidenGSNgwUX2StBLNZ8VCxflD9tZK/ceTs4j8gDC9+6LQQ6iGkK04g== elliptic@^6.5.3: version "6.5.4" @@ -5437,9 +5482,9 @@ enhanced-resolve@^5.15.0: tapable "^2.2.0" enquirer@^2.3.6: - version "2.4.0" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.4.0.tgz#4f36f6c644137cc4fd2891da407ede2b1fea904a" - integrity sha512-ehu97t6FTYK2I3ZYtnp0BZ9vt0mvEL/cnHBds7Ct6jo9VX1VIkiFhOvVRWh6eblQqd7KOoICIQV+syZ3neXO/Q== + version "2.4.1" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.4.1.tgz#93334b3fbd74fc7097b224ab4a8fb7e40bf4ae56" + integrity sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ== dependencies: ansi-colors "^4.1.1" strip-ansi "^6.0.1" @@ -5473,18 +5518,18 @@ error-stack-parser@^2.0.6: dependencies: stackframe "^1.3.4" -es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.20.4, es-abstract@^1.21.2: - version "1.22.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.1.tgz#8b4e5fc5cefd7f1660f0f8e1a52900dfbc9d9ccc" - integrity sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw== +es-abstract@^1.17.2, es-abstract@^1.22.1: + version "1.22.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.2.tgz#90f7282d91d0ad577f505e423e52d4c1d93c1b8a" + integrity sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA== dependencies: array-buffer-byte-length "^1.0.0" - arraybuffer.prototype.slice "^1.0.1" + arraybuffer.prototype.slice "^1.0.2" available-typed-arrays "^1.0.5" call-bind "^1.0.2" es-set-tostringtag "^2.0.1" es-to-primitive "^1.2.1" - function.prototype.name "^1.1.5" + function.prototype.name "^1.1.6" get-intrinsic "^1.2.1" get-symbol-description "^1.0.0" globalthis "^1.0.3" @@ -5500,33 +5545,53 @@ es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.20.4, es-abstract@^1.21 is-regex "^1.1.4" is-shared-array-buffer "^1.0.2" is-string "^1.0.7" - is-typed-array "^1.1.10" + is-typed-array "^1.1.12" is-weakref "^1.0.2" object-inspect "^1.12.3" object-keys "^1.1.1" object.assign "^4.1.4" - regexp.prototype.flags "^1.5.0" - safe-array-concat "^1.0.0" + regexp.prototype.flags "^1.5.1" + safe-array-concat "^1.0.1" safe-regex-test "^1.0.0" - string.prototype.trim "^1.2.7" - string.prototype.trimend "^1.0.6" - string.prototype.trimstart "^1.0.6" + string.prototype.trim "^1.2.8" + string.prototype.trimend "^1.0.7" + string.prototype.trimstart "^1.0.7" typed-array-buffer "^1.0.0" typed-array-byte-length "^1.0.0" typed-array-byte-offset "^1.0.0" typed-array-length "^1.0.4" unbox-primitive "^1.0.2" - which-typed-array "^1.1.10" + which-typed-array "^1.1.11" es-array-method-boxes-properly@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== +es-iterator-helpers@^1.0.12: + version "1.0.15" + resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz#bd81d275ac766431d19305923707c3efd9f1ae40" + integrity sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g== + dependencies: + asynciterator.prototype "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.2.1" + es-abstract "^1.22.1" + es-set-tostringtag "^2.0.1" + function-bind "^1.1.1" + get-intrinsic "^1.2.1" + globalthis "^1.0.3" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.5" + iterator.prototype "^1.1.2" + safe-array-concat "^1.0.1" + es-module-lexer@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.3.0.tgz#6be9c9e0b4543a60cd166ff6f8b4e9dae0b0c16f" - integrity sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA== + version "1.3.1" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.3.1.tgz#c1b0dd5ada807a3b3155315911f364dc4e909db1" + integrity sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q== es-set-tostringtag@^2.0.1: version "2.0.1" @@ -5583,7 +5648,7 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -escodegen@^1.11.0, escodegen@^1.11.1: +escodegen@^1.11.0, escodegen@^1.11.1, escodegen@^1.8.1: version "1.14.3" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== @@ -5652,15 +5717,15 @@ eslint-config-standard@17.0.0: integrity sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg== eslint-import-resolver-node@^0.3.7: - version "0.3.7" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz#83b375187d412324a1963d84fa664377a23eb4d7" - integrity sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA== + version "0.3.9" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" + integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== dependencies: debug "^3.2.7" - is-core-module "^2.11.0" - resolve "^1.22.1" + is-core-module "^2.13.0" + resolve "^1.22.4" -eslint-module-utils@^2.7.4: +eslint-module-utils@^2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz#e439fee65fc33f6bba630ff621efc38ec0375c49" integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== @@ -5684,25 +5749,27 @@ eslint-plugin-flowtype@^8.0.3: string-natural-compare "^3.0.1" eslint-plugin-import@^2.25.3, eslint-plugin-import@^2.27.5: - version "2.27.5" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz#876a6d03f52608a3e5bb439c2550588e51dd6c65" - integrity sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow== + version "2.28.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz#63b8b5b3c409bfc75ebaf8fb206b07ab435482c4" + integrity sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A== dependencies: array-includes "^3.1.6" + array.prototype.findlastindex "^1.2.2" array.prototype.flat "^1.3.1" array.prototype.flatmap "^1.3.1" debug "^3.2.7" doctrine "^2.1.0" eslint-import-resolver-node "^0.3.7" - eslint-module-utils "^2.7.4" + eslint-module-utils "^2.8.0" has "^1.0.3" - is-core-module "^2.11.0" + is-core-module "^2.13.0" is-glob "^4.0.3" minimatch "^3.1.2" + object.fromentries "^2.0.6" + object.groupby "^1.0.0" object.values "^1.1.6" - resolve "^1.22.1" - semver "^6.3.0" - tsconfig-paths "^3.14.1" + semver "^6.3.1" + tsconfig-paths "^3.14.2" eslint-plugin-jest@^25.3.0: version "25.7.0" @@ -5758,14 +5825,15 @@ eslint-plugin-react-hooks@^4.3.0: integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== eslint-plugin-react@^7.27.1, eslint-plugin-react@^7.32.2: - version "7.33.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.33.0.tgz#6c356fb0862fec2cd1b04426c669ea746e9b6eb3" - integrity sha512-qewL/8P34WkY8jAqdQxsiL82pDUeT7nhs8IsuXgfgnsEloKCT4miAV9N9kGtx7/KM9NH/NCGUE7Edt9iGxLXFw== + version "7.33.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz#69ee09443ffc583927eafe86ffebb470ee737608" + integrity sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw== dependencies: array-includes "^3.1.6" array.prototype.flatmap "^1.3.1" array.prototype.tosorted "^1.1.1" doctrine "^2.1.0" + es-iterator-helpers "^1.0.12" estraverse "^5.3.0" jsx-ast-utils "^2.4.1 || ^3.0.0" minimatch "^3.1.2" @@ -5779,9 +5847,9 @@ eslint-plugin-react@^7.27.1, eslint-plugin-react@^7.32.2: string.prototype.matchall "^4.0.8" eslint-plugin-testing-library@^5.0.1: - version "5.11.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.11.0.tgz#0bad7668e216e20dd12f8c3652ca353009163121" - integrity sha512-ELY7Gefo+61OfXKlQeXNIDVVLPcvKTeiQOoMZG9TeuWa7Ln4dUNRv8JdRWBQI9Mbb427XGlVB1aa1QPZxBJM8Q== + version "5.11.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.11.1.tgz#5b46cdae96d4a78918711c0b4792f90088e62d20" + integrity sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw== dependencies: "@typescript-eslint/utils" "^5.58.0" @@ -5793,10 +5861,10 @@ eslint-scope@5.1.1, eslint-scope@^5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-scope@^7.2.0: - version "7.2.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.1.tgz#936821d3462675f25a18ac5fd88a67cc15b393bd" - integrity sha512-CvefSOsDdaYYvxChovdrPo/ZGt8d5lrJWleAc1diXRKhHGiTYEI26cvo8Kle/wGnsizoCJjK73FMg1/IkIwiNA== +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" @@ -5825,10 +5893,10 @@ eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz#c22c48f48942d08ca824cc526211ae400478a994" - integrity sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA== +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== eslint-webpack-plugin@^3.1.1: version "3.2.0" @@ -5842,26 +5910,26 @@ eslint-webpack-plugin@^3.1.1: schema-utils "^4.0.0" eslint@^8.3.0, eslint@^8.35.0: - version "8.45.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.45.0.tgz#bab660f90d18e1364352c0a6b7c6db8edb458b78" - integrity sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw== + version "8.50.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.50.0.tgz#2ae6015fee0240fcd3f83e1e25df0287f487d6b2" + integrity sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg== dependencies: "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.4.0" - "@eslint/eslintrc" "^2.1.0" - "@eslint/js" "8.44.0" - "@humanwhocodes/config-array" "^0.11.10" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.2" + "@eslint/js" "8.50.0" + "@humanwhocodes/config-array" "^0.11.11" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" - ajv "^6.10.0" + ajv "^6.12.4" chalk "^4.0.0" cross-spawn "^7.0.2" debug "^4.3.2" doctrine "^3.0.0" escape-string-regexp "^4.0.0" - eslint-scope "^7.2.0" - eslint-visitor-keys "^3.4.1" - espree "^9.6.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" esquery "^1.4.2" esutils "^2.0.2" fast-deep-equal "^3.1.3" @@ -5884,7 +5952,7 @@ eslint@^8.3.0, eslint@^8.35.0: strip-ansi "^6.0.1" text-table "^0.2.0" -espree@^9.6.0: +espree@^9.6.0, espree@^9.6.1: version "9.6.1" resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== @@ -5893,6 +5961,11 @@ espree@^9.6.0: acorn-jsx "^5.3.2" eslint-visitor-keys "^3.4.1" +esprima@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-1.2.2.tgz#76a0fd66fcfe154fd292667dc264019750b1657b" + integrity sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A== + esprima@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" @@ -6327,22 +6400,23 @@ find-yarn-workspace-root@^2.0.0: micromatch "^4.0.2" flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + version "3.1.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.1.0.tgz#0e54ab4a1a60fe87e2946b6b00657f1c99e1af3f" + integrity sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew== dependencies: - flatted "^3.1.0" + flatted "^3.2.7" + keyv "^4.5.3" rimraf "^3.0.2" -flatted@^3.1.0: - version "3.2.7" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" - integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== +flatted@^3.2.7: + version "3.2.9" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" + integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== follow-redirects@^1.0.0: - version "1.15.2" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" - integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + version "1.15.3" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.3.tgz#fe2f3ef2690afce7e82ed0b44db08165b207123a" + integrity sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q== for-each@^0.3.3: version "0.3.3" @@ -6407,10 +6481,11 @@ form-data@~2.3.2: mime-types "^2.1.12" formik@^2.2.9: - version "2.4.2" - resolved "https://registry.yarnpkg.com/formik/-/formik-2.4.2.tgz#a1115457cfb012a5c782cea3ad4b40b2fe36fa18" - integrity sha512-C6nx0hifW2uENP3M6HpPmnAE6HFWCcd8/sqBZEOHZY6lpHJ5qehsfAy43ktpFLEmkBmhiZDei726utcUB9leqg== + version "2.4.5" + resolved "https://registry.yarnpkg.com/formik/-/formik-2.4.5.tgz#f899b5b7a6f103a8fabb679823e8fafc7e0ee1b4" + integrity sha512-Gxlht0TD3vVdzMDHwkiNZqJ7Mvg77xQNfmBRrNtvzcHZs72TJppSTDKHpImCMJZwcWPBJ8jSQQ95GJzXFf1nAQ== dependencies: + "@types/hoist-non-react-statics" "^3.3.1" deepmerge "^2.1.1" hoist-non-react-statics "^3.3.0" lodash "^4.17.21" @@ -6424,10 +6499,10 @@ forwarded@0.2.0: resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== -fraction.js@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" - integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== +fraction.js@^4.3.6: + version "4.3.6" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.6.tgz#e9e3acec6c9a28cf7bc36cbe35eea4ceb2c5c92d" + integrity sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg== fragment-cache@^0.2.1: version "0.2.1" @@ -6486,9 +6561,9 @@ fs-extra@^9.0.0, fs-extra@^9.0.1, fs-extra@^9.1.0: universalify "^2.0.0" fs-monkey@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.4.tgz#ee8c1b53d3fe8bb7e5d2c5c5dfc0168afdd2f747" - integrity sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ== + version "1.0.5" + resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.5.tgz#fe450175f0db0d7ea758102e1d84096acb925788" + integrity sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew== fs.realpath@^1.0.0: version "1.0.0" @@ -6504,26 +6579,26 @@ fsevents@^1.2.7: nan "^2.12.1" fsevents@^2.3.2, fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== -function.prototype.name@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" - integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== +function.prototype.name@^1.1.5, function.prototype.name@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" + integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.0" - functions-have-names "^1.2.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + functions-have-names "^1.2.3" -functions-have-names@^1.2.2, functions-have-names@^1.2.3: +functions-have-names@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== @@ -6687,9 +6762,9 @@ globals@^11.1.0: integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== globals@^13.19.0: - version "13.20.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82" - integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ== + version "13.22.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.22.0.tgz#0c9fcb9c48a2494fbb5edbfee644285543eba9d8" + integrity sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw== dependencies: type-fest "^0.20.2" @@ -6767,12 +6842,12 @@ handle-thing@^2.0.0: integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== handlebars@^4.7.7: - version "4.7.7" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" - integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== + version "4.7.8" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.8.tgz#41c42c18b1be2365439188c77c6afae71c0cd9e9" + integrity sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ== dependencies: minimist "^1.2.5" - neo-async "^2.6.0" + neo-async "^2.6.2" source-map "^0.6.1" wordwrap "^1.0.0" optionalDependencies: @@ -7209,9 +7284,9 @@ immer@^9.0.21, immer@^9.0.7: integrity sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA== immutable@^4.0.0: - version "4.3.1" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.1.tgz#17988b356097ab0719e2f741d56f3ec6c317f9dc" - integrity sha512-lj9cnmB/kVS0QHsJnYKD1uo3o39nrbKxszjnqS9Fr6NB7bZzW45U6WSGBPKXDL/CvDKqDNPA4r3DoDQ8GTxo2A== + version "4.3.4" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.4.tgz#2e07b33837b4bb7662f288c244d1ced1ef65a78f" + integrity sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA== import-fresh@^2.0.0: version "2.0.0" @@ -7265,11 +7340,6 @@ inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, i resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - integrity sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA== - inherits@2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" @@ -7285,7 +7355,7 @@ ini@^1.3.5, ini@~1.3.0: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== -internal-slot@^1.0.3, internal-slot@^1.0.5: +internal-slot@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== @@ -7347,6 +7417,13 @@ is-arrayish@^0.3.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== +is-async-function@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.0.0.tgz#8e4418efd3e5d3a6ebb0164c05ef5afb69aa9646" + integrity sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA== + dependencies: + has-tostringtag "^1.0.0" + is-bigint@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" @@ -7405,10 +7482,10 @@ is-color-stop@^1.0.0: rgb-regex "^1.0.1" rgba-regex "^1.0.0" -is-core-module@^2.11.0, is-core-module@^2.9.0: - version "2.12.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.1.tgz#0c0b6885b6f80011c71541ce15c8d66cf5a4f9fd" - integrity sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg== +is-core-module@^2.11.0, is-core-module@^2.13.0, is-core-module@^2.9.0: + version "2.13.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db" + integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ== dependencies: has "^1.0.3" @@ -7426,7 +7503,7 @@ is-data-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" -is-date-object@^1.0.1: +is-date-object@^1.0.1, is-date-object@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== @@ -7478,6 +7555,13 @@ is-extglob@^2.1.0, is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== +is-finalizationregistry@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz#c8749b65f17c133313e661b1289b95ad3dbd62e6" + integrity sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw== + dependencies: + call-bind "^1.0.2" + is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" @@ -7488,6 +7572,13 @@ is-generator-fn@^2.0.0: resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== +is-generator-function@^1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.0" + is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" @@ -7517,6 +7608,11 @@ is-installed-globally@~0.4.0: global-dirs "^3.0.0" is-path-inside "^3.0.2" +is-map@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" + integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== + is-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" @@ -7606,6 +7702,11 @@ is-root@^2.1.0: resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== +is-set@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" + integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== + is-shared-array-buffer@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" @@ -7632,7 +7733,7 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" -is-typed-array@^1.1.10, is-typed-array@^1.1.9: +is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.9: version "1.1.12" resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== @@ -7654,6 +7755,11 @@ is-url@^1.2.2: resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== +is-weakmap@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" + integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== + is-weakref@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" @@ -7661,6 +7767,14 @@ is-weakref@^1.0.2: dependencies: call-bind "^1.0.2" +is-weakset@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.2.tgz#4569d67a747a1ce5a994dfd4ef6dcea76e7c0a1d" + integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" @@ -7786,6 +7900,17 @@ istanbul-reports@^3.0.2, istanbul-reports@^3.1.3: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" +iterator.prototype@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.2.tgz#5e29c8924f01916cb9335f1ff80619dcff22b0c0" + integrity sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w== + dependencies: + define-properties "^1.2.1" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + reflect.getprototypeof "^1.0.4" + set-function-name "^2.0.1" + jake@^10.8.5: version "10.8.7" resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.7.tgz#63a32821177940c33f356e0ba44ff9d34e1c7d8f" @@ -8279,9 +8404,9 @@ jest@^27.4.3: jest-cli "^27.5.1" jiti@^1.18.2: - version "1.19.1" - resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.19.1.tgz#fa99e4b76a23053e0e7cde098efe1704a14c16f1" - integrity sha512-oVhqoRDaBXf7sjkll95LHVS6Myyyb1zaunVwk4Z0+WPSW4gjS0pl01zYKHScTuyEhQsFxV5L4DR5r+YqSyqyyg== + version "1.20.0" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.20.0.tgz#2d823b5852ee8963585c8dd8b7992ffc1ae83b42" + integrity sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA== js-cookie@^3.0.5: version "3.0.5" @@ -8388,6 +8513,11 @@ jsesc@~0.5.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + json-parse-better-errors@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" @@ -8430,7 +8560,7 @@ json5@^1.0.1, json5@^1.0.2: dependencies: minimist "^1.2.0" -json5@^2.1.2, json5@^2.2.0, json5@^2.2.2: +json5@^2.1.2, json5@^2.2.0, json5@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== @@ -8444,6 +8574,15 @@ jsonfile@^6.0.1: optionalDependencies: graceful-fs "^4.1.6" +jsonpath@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/jsonpath/-/jsonpath-1.1.1.tgz#0ca1ed8fb65bb3309248cc9d5466d12d5b0b9901" + integrity sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w== + dependencies: + esprima "1.2.2" + static-eval "2.0.2" + underscore "1.12.1" + jsonpointer@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559" @@ -8470,15 +8609,22 @@ jsprim@^2.0.2: verror "1.10.0" "jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.3: - version "3.3.4" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.4.tgz#b896535fed5b867650acce5a9bd4135ffc7b3bf9" - integrity sha512-fX2TVdCViod6HwKEtSWGHs57oFhVfCMwieb9PuRDgjDPh5XeqJiHFFFJCHxU5cnTc3Bu/GRL+kPiFmw8XWOfKw== + version "3.3.5" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a" + integrity sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ== dependencies: array-includes "^3.1.6" array.prototype.flat "^1.3.1" object.assign "^4.1.4" object.values "^1.1.6" +keyv@^4.5.3: + version "4.5.3" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.3.tgz#00873d2b046df737963157bd04f294ca818c9c25" + integrity sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug== + dependencies: + json-buffer "3.0.1" + kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -8990,9 +9136,9 @@ mz@^2.7.0: thenify-all "^1.0.0" nan@^2.12.1: - version "2.17.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" - integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== + version "2.18.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.18.0.tgz#26a6faae7ffbeb293a39660e88a76b82e30b7554" + integrity sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w== nanoid@^3.3.6: version "3.3.6" @@ -9031,7 +9177,7 @@ negotiator@0.6.3: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== -neo-async@^2.6.0, neo-async@^2.6.2: +neo-async@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== @@ -9105,7 +9251,7 @@ node-preload@^0.2.1: dependencies: process-on-spawn "^1.0.0" -node-releases@^2.0.12: +node-releases@^2.0.13: version "2.0.13" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== @@ -9253,41 +9399,51 @@ object.assign@^4.1.4: object-keys "^1.1.1" object.entries@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.6.tgz#9737d0e5b8291edd340a3e3264bb8a3b00d5fa23" - integrity sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w== + version "1.1.7" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.7.tgz#2b47760e2a2e3a752f39dd874655c61a7f03c131" + integrity sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" object.fromentries@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.6.tgz#cdb04da08c539cffa912dcd368b886e0904bfa73" - integrity sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg== + version "2.0.7" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.7.tgz#71e95f441e9a0ea6baf682ecaaf37fa2a8d7e616" + integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" object.getownpropertydescriptors@^2.1.0: - version "2.1.6" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.6.tgz#5e5c384dd209fa4efffead39e3a0512770ccc312" - integrity sha512-lq+61g26E/BgHv0ZTFgRvi7NMEPuAxLkFU7rukXjc/AlwH4Am5xXVnIXy3un1bg/JPbXHrixRkK1itUzzPiIjQ== + version "2.1.7" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.7.tgz#7a466a356cd7da4ba8b9e94ff6d35c3eeab5d56a" + integrity sha512-PrJz0C2xJ58FNn11XV2lr4Jt5Gzl94qpy9Lu0JlfEj14z88sqbSBJCBEzdlNUCzY2gburhbrwOZ5BHCmuNUy0g== dependencies: - array.prototype.reduce "^1.0.5" + array.prototype.reduce "^1.0.6" call-bind "^1.0.2" define-properties "^1.2.0" - es-abstract "^1.21.2" + es-abstract "^1.22.1" safe-array-concat "^1.0.0" +object.groupby@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.1.tgz#d41d9f3c8d6c778d9cbac86b4ee9f5af103152ee" + integrity sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + object.hasown@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.2.tgz#f919e21fad4eb38a57bc6345b3afd496515c3f92" - integrity sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw== + version "1.1.3" + resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.3.tgz#6a5f2897bb4d3668b8e79364f98ccf971bda55ae" + integrity sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA== dependencies: - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" object.pick@^1.3.0: version "1.3.0" @@ -9297,13 +9453,13 @@ object.pick@^1.3.0: isobject "^3.0.1" object.values@^1.1.0, object.values@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d" - integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw== + version "1.1.7" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a" + integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" obuf@^1.0.0, obuf@^1.1.2: version "1.1.2" @@ -10640,9 +10796,9 @@ postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.11, postcss@^7.0.17, postcss@^7.0.2 source-map "^0.6.1" postcss@^8.3.5, postcss@^8.4.21, postcss@^8.4.23, postcss@^8.4.4: - version "8.4.27" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.27.tgz#234d7e4b72e34ba5a92c29636734349e0d9c3057" - integrity sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ== + version "8.4.30" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.30.tgz#0e0648d551a606ef2192a26da4cabafcc09c1aa7" + integrity sha512-7ZEao1g4kd68l97aWG/etQKPKq07us0ieSZ2TnFDk11i0ZfDW2AwKHYU8qv4MZKqN2fdBfg+7q0ES06UA73C1g== dependencies: nanoid "^3.3.6" picocolors "^1.0.0" @@ -10841,7 +10997,7 @@ qs@6.11.0: dependencies: side-channel "^1.0.4" -qs@^6.11.0, qs@^6.11.2: +qs@^6.11.2: version "6.11.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.2.tgz#64bea51f12c1f5da1bc01496f48ffcff7c69d7d9" integrity sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA== @@ -11032,9 +11188,9 @@ react-material-ui-carousel@^3.4.2: framer-motion "^4.1.17" react-redux@^8.0.5: - version "8.1.1" - resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-8.1.1.tgz#8e740f3fd864a4cd0de5ba9cdc8ad39cc9e7c81a" - integrity sha512-5W0QaKtEhj+3bC0Nj0NkqkhIv8gLADH/2kYFMTHxCVqQILiWzLv6MaLuV5wJU3BQEdHKzTfcvPN0WMS6SC1oyA== + version "8.1.2" + resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-8.1.2.tgz#9076bbc6b60f746659ad6d51cb05de9c5e1e9188" + integrity sha512-xJKYI189VwfsFc4CJvHqHlDrzyFTY/3vZACbE+rr/zQ34Xx1wQfB4OTOSeOSNrF6BDVe8OOdxIrAnMGXA3ggfw== dependencies: "@babel/runtime" "^7.12.1" "@types/hoist-non-react-statics" "^3.3.1" @@ -11049,19 +11205,19 @@ react-refresh@^0.11.0: integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A== react-router-dom@^6.8.2: - version "6.14.2" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.14.2.tgz#88f520118b91aa60233bd08dbd3fdcaea3a68488" - integrity sha512-5pWX0jdKR48XFZBuJqHosX3AAHjRAzygouMTyimnBPOLdY3WjzUSKhus2FVMihUFWzeLebDgr4r8UeQFAct7Bg== + version "6.16.0" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.16.0.tgz#86f24658da35eb66727e75ecbb1a029e33ee39d9" + integrity sha512-aTfBLv3mk/gaKLxgRDUPbPw+s4Y/O+ma3rEN1u8EgEpLpPe6gNjIsWt9rxushMHHMb7mSwxRGdGlGdvmFsyPIg== dependencies: - "@remix-run/router" "1.7.2" - react-router "6.14.2" + "@remix-run/router" "1.9.0" + react-router "6.16.0" -react-router@6.14.2: - version "6.14.2" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.14.2.tgz#1f60994d8c369de7b8ba7a78d8f7ec23df76b300" - integrity sha512-09Zss2dE2z+T1D03IheqAFtK4UzQyX8nFPWx6jkwdYzGLXd5ie06A6ezS2fO6zJfEb/SpG6UocN2O1hfD+2urQ== +react-router@6.16.0: + version "6.16.0" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.16.0.tgz#abbf3d5bdc9c108c9b822a18be10ee004096fb81" + integrity sha512-VT4Mmc4jj5YyjpOi5jOf0I+TYzGpvzERy4ckNSvSh2RArv8LLoCxlsZ2D+tc7zgjxcY34oTz2hZaeX5RVprKqA== dependencies: - "@remix-run/router" "1.7.2" + "@remix-run/router" "1.9.0" react-scripts@^5.0.1: version "5.0.1" @@ -11199,10 +11355,22 @@ redux@^4.2.1: dependencies: "@babel/runtime" "^7.9.2" +reflect.getprototypeof@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz#aaccbf41aca3821b87bb71d9dcbc7ad0ba50a3f3" + integrity sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + globalthis "^1.0.3" + which-builtin-type "^1.1.3" + regenerate-unicode-properties@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c" - integrity sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ== + version "10.1.1" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" + integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== dependencies: regenerate "^1.4.2" @@ -11216,15 +11384,20 @@ regenerator-runtime@^0.11.0: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== -regenerator-runtime@^0.13.11, regenerator-runtime@^0.13.9: +regenerator-runtime@^0.13.9: version "0.13.11" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== -regenerator-transform@^0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.1.tgz#f6c4e99fc1b4591f780db2586328e4d9a9d8dc56" - integrity sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg== +regenerator-runtime@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" + integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== + +regenerator-transform@^0.15.2: + version "0.15.2" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" + integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== dependencies: "@babel/runtime" "^7.8.4" @@ -11241,14 +11414,14 @@ regex-parser@^2.2.11: resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.11.tgz#3b37ec9049e19479806e878cabe7c1ca83ccfe58" integrity sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q== -regexp.prototype.flags@^1.4.3, regexp.prototype.flags@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz#fe7ce25e7e4cca8db37b6634c8a2c7009199b9cb" - integrity sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA== +regexp.prototype.flags@^1.5.0, regexp.prototype.flags@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" + integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== dependencies: call-bind "^1.0.2" define-properties "^1.2.0" - functions-have-names "^1.2.3" + set-function-name "^2.0.0" regexpp@^3.0.0: version "3.2.0" @@ -11444,12 +11617,12 @@ resolve.exports@^1.1.0: resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.1.tgz#05cfd5b3edf641571fd46fa608b610dda9ead999" integrity sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ== -resolve@^1.1.5, resolve@^1.1.7, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.22.2, resolve@^1.4.0: - version "1.22.2" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" - integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== +resolve@^1.1.5, resolve@^1.1.7, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.22.2, resolve@^1.22.4, resolve@^1.4.0: + version "1.22.6" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.6.tgz#dd209739eca3aef739c626fea1b4f3c506195362" + integrity sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw== dependencies: - is-core-module "^2.11.0" + is-core-module "^2.13.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" @@ -11561,13 +11734,13 @@ rxjs@^7.5.1: dependencies: tslib "^2.1.0" -safe-array-concat@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.0.tgz#2064223cba3c08d2ee05148eedbc563cd6d84060" - integrity sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ== +safe-array-concat@^1.0.0, safe-array-concat@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.1.tgz#91686a63ce3adbea14d61b14c99572a8ff84754c" + integrity sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q== dependencies: call-bind "^1.0.2" - get-intrinsic "^1.2.0" + get-intrinsic "^1.2.1" has-symbols "^1.0.3" isarray "^2.0.5" @@ -11616,9 +11789,9 @@ sass-loader@^12.3.0: neo-async "^2.6.2" sass@^1.58.3: - version "1.64.1" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.64.1.tgz#6a46f6d68e0fa5ad90aa59ce025673ddaa8441cf" - integrity sha512-16rRACSOFEE8VN7SCgBu1MpYCyN7urj9At898tyzdXFhC+a+yOX5dXwAR7L8/IdPJ1NB8OYoXmD55DM30B2kEQ== + version "1.68.0" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.68.0.tgz#0034b0cc9a50248b7d1702ac166fd25990023669" + integrity sha512-Lmj9lM/fef0nQswm1J2HJcEsBUba4wgNx2fea6yJHODREoMFnwRpZydBnX/RjyXw2REIwdkbqE4hrTo4qfDBUA== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" @@ -11792,9 +11965,9 @@ serve-static@1.15.0, serve-static@^1.12.4: send "0.18.0" serve@^14.2.0: - version "14.2.0" - resolved "https://registry.yarnpkg.com/serve/-/serve-14.2.0.tgz#3d768e88fa13ad8644f2393599189707176e66b8" - integrity sha512-+HOw/XK1bW8tw5iBilBz/mJLWRzM8XM6MPxL4J/dKzdxq1vfdEWSwhaR7/yS8EJp5wzvP92p1qirysJvnEtjXg== + version "14.2.1" + resolved "https://registry.yarnpkg.com/serve/-/serve-14.2.1.tgz#3f078d292ed5e7b2c5a64f957af2765b0459798b" + integrity sha512-48er5fzHh7GCShLnNyPBRPEjs2I6QBozeGr02gaacROiyS/8ARADlj595j39iZXAqBbJHH/ivJJyPRWY9sQWZA== dependencies: "@zeit/schemas" "2.29.0" ajv "8.11.0" @@ -11813,6 +11986,15 @@ set-blocking@^2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== +set-function-name@^2.0.0, set-function-name@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" + integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== + dependencies: + define-data-property "^1.0.1" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.0" + set-value@^2.0.0, set-value@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" @@ -12127,6 +12309,13 @@ stackframe@^1.3.4: resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310" integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== +static-eval@2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/static-eval/-/static-eval-2.0.2.tgz#2d1759306b1befa688938454c546b7871f806a42" + integrity sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg== + dependencies: + escodegen "^1.8.1" + static-eval@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/static-eval/-/static-eval-2.1.0.tgz#a16dbe54522d7fa5ef1389129d813fd47b148014" @@ -12236,45 +12425,46 @@ string-width@^5.0.1, string-width@^5.1.2: strip-ansi "^7.0.1" string.prototype.matchall@^4.0.6, string.prototype.matchall@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz#3bf85722021816dcd1bf38bb714915887ca79fd3" - integrity sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg== + version "4.0.10" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz#a1553eb532221d4180c51581d6072cd65d1ee100" + integrity sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - get-intrinsic "^1.1.3" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" has-symbols "^1.0.3" - internal-slot "^1.0.3" - regexp.prototype.flags "^1.4.3" + internal-slot "^1.0.5" + regexp.prototype.flags "^1.5.0" + set-function-name "^2.0.0" side-channel "^1.0.4" -string.prototype.trim@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533" - integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg== +string.prototype.trim@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz#f9ac6f8af4bd55ddfa8895e6aea92a96395393bd" + integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" -string.prototype.trimend@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" - integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== +string.prototype.trimend@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz#1bb3afc5008661d73e2dc015cd4853732d6c471e" + integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" -string.prototype.trimstart@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" - integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== +string.prototype.trimstart@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298" + integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" string_decoder@^1.0.0, string_decoder@^1.1.1: version "1.3.0" @@ -12582,9 +12772,9 @@ terser@^3.7.3: source-map-support "~0.5.10" terser@^5.0.0, terser@^5.10.0, terser@^5.16.8, terser@^5.6.1: - version "5.19.2" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.19.2.tgz#bdb8017a9a4a8de4663a7983f45c506534f9234e" - integrity sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA== + version "5.20.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.20.0.tgz#ea42aea62578703e33def47d5c5b93c49772423e" + integrity sha512-e56ETryaQDyebBwJIWYB2TT6f2EZ0fL0sW/JRXNMN26zZdKi2u/E/5my5lG6jNxym6qsrVXfFRmOdV42zlAgLQ== dependencies: "@jridgewell/source-map" "^0.3.3" acorn "^8.8.2" @@ -12756,7 +12946,7 @@ tough-cookie@^2.3.3, tough-cookie@^2.5.0, tough-cookie@~2.5.0: psl "^1.1.28" punycode "^2.1.1" -tough-cookie@^4.0.0: +tough-cookie@^4.0.0, tough-cookie@^4.1.3: version "4.1.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf" integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw== @@ -12790,7 +12980,7 @@ ts-interface-checker@^0.1.9: resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== -tsconfig-paths@^3.14.1: +tsconfig-paths@^3.14.2: version "3.14.2" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz#6e32f1f79412decd261f92d633a9dc1cfa99f088" integrity sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g== @@ -12806,9 +12996,9 @@ tslib@^1.8.1: integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.1.tgz#fd8c9a0ff42590b25703c0acb3de3d3f4ede0410" - integrity sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig== + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== tsutils@^3.21.0: version "3.21.0" @@ -12972,6 +13162,11 @@ uncss@^0.17.3: postcss-selector-parser "6.0.2" request "^2.88.0" +underscore@1.12.1: + version "1.12.1" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.12.1.tgz#7bb8cc9b3d397e201cf8553336d262544ead829e" + integrity sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw== + unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" @@ -13068,10 +13263,10 @@ upath@^1.1.1, upath@^1.2.0: resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== -update-browserslist-db@^1.0.11: - version "1.0.11" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940" - integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA== +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" + integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== dependencies: escalade "^3.1.1" picocolors "^1.0.0" @@ -13105,12 +13300,12 @@ url-parse@^1.5.3: requires-port "^1.0.0" url@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.1.tgz#26f90f615427eca1b9f4d6a28288c147e2302a32" - integrity sha512-rWS3H04/+mzzJkv0eZ7vEDGiQbgquI1fGfOad6zKvgYQi1SzMmhl7c/DdRGxhaWrVH6z0qWITo8rpnxK/RfEhA== + version "0.11.3" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.3.tgz#6f495f4b935de40ce4a0a52faee8954244f3d3ad" + integrity sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw== dependencies: punycode "^1.4.1" - qs "^6.11.0" + qs "^6.11.2" use-sync-external-store@^1.0.0: version "1.2.0" @@ -13137,12 +13332,12 @@ util.promisify@~1.0.0: has-symbols "^1.0.1" object.getownpropertydescriptors "^2.1.0" -util@0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - integrity sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ== +util@^0.10.4: + version "0.10.4" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" + integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A== dependencies: - inherits "2.0.1" + inherits "2.0.3" util@^0.11.0: version "0.11.1" @@ -13172,9 +13367,9 @@ uuid@^8.3.2: integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== v8-compile-cache@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" - integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== + version "2.4.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz#cdada8bec61e15865f05d097c5f4fd30e94dc128" + integrity sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw== v8-to-istanbul@^8.1.0: version "8.1.1" @@ -13414,9 +13609,9 @@ whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.5: iconv-lite "0.4.24" whatwg-fetch@^3.6.2: - version "3.6.17" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.17.tgz#009bbbfc122b227b74ba1ff31536b3a1a0e0e212" - integrity sha512-c4ghIvG6th0eudYwKZY5keb81wtFz9/WeAHAoy8+r18kcWlitUIrmGFQ2rWEl4UCKUilD3zCLHOIPheHx5ypRQ== + version "3.6.19" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.19.tgz#caefd92ae630b91c07345537e67f8354db470973" + integrity sha512-d67JP4dHSbm2TrpFj8AbO8DnL1JXL5J9u0Kq2xW6d0TFDbCA3Muhdt8orXC22utleTVj7Prqt82baN6RBvnEgw== whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0: version "2.3.0" @@ -13452,12 +13647,40 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" +which-builtin-type@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.1.3.tgz#b1b8443707cc58b6e9bf98d32110ff0c2cbd029b" + integrity sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw== + dependencies: + function.prototype.name "^1.1.5" + has-tostringtag "^1.0.0" + is-async-function "^2.0.0" + is-date-object "^1.0.5" + is-finalizationregistry "^1.0.2" + is-generator-function "^1.0.10" + is-regex "^1.1.4" + is-weakref "^1.0.2" + isarray "^2.0.5" + which-boxed-primitive "^1.0.2" + which-collection "^1.0.1" + which-typed-array "^1.1.9" + +which-collection@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" + integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== + dependencies: + is-map "^2.0.1" + is-set "^2.0.1" + is-weakmap "^2.0.1" + is-weakset "^2.0.1" + which-module@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== -which-typed-array@^1.1.10, which-typed-array@^1.1.11: +which-typed-array@^1.1.11, which-typed-array@^1.1.9: version "1.1.11" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== @@ -13730,9 +13953,9 @@ ws@^7.4.6: integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== ws@^8.13.0: - version "8.13.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" - integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== + version "8.14.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.14.2.tgz#6c249a806eb2db7a20d26d51e7709eab7b2e6c7f" + integrity sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g== xml-name-validator@^3.0.0: version "3.0.0" @@ -13775,9 +13998,9 @@ yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2: integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== yaml@^2.1.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.1.tgz#02fe0975d23cd441242aa7204e09fc28ac2ac33b" - integrity sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ== + version "2.3.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.2.tgz#f522db4313c671a0ca963a75670f1c12ea909144" + integrity sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg== yargs-parser@^18.1.2: version "18.1.3" @@ -13836,9 +14059,9 @@ yocto-queue@^0.1.0: integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== yup@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/yup/-/yup-1.2.0.tgz#9e51af0c63bdfc9be0fdc6c10aa0710899d8aff6" - integrity sha512-PPqYKSAXjpRCgLgLKVGPA33v5c/WgEx3wi6NFjIiegz90zSwyMpvTFp/uGcVnnbx6to28pgnzp/q8ih3QRjLMQ== + version "1.3.1" + resolved "https://registry.yarnpkg.com/yup/-/yup-1.3.1.tgz#4ab52d00555f0f18af09fe1356fdae35f804e421" + integrity sha512-2stNyEF96SnPUxzRL99kt1bEHWytnvC2stwmTTqjoFXZRf63JtYK2pQt2AJvWcQvkrAzr/pcXvc6c5vrqsBzDg== dependencies: property-expr "^2.0.5" tiny-case "^1.0.3" From 0a8c2609a728fb9d9502bbfc1596a177dc185556 Mon Sep 17 00:00:00 2001 From: KamilPawel Date: Thu, 28 Sep 2023 17:20:55 +0100 Subject: [PATCH 03/52] adapted the pdf view to react --- backend/portal/helpers/domain.py | 1 - backend/portal/urls/teacher/teach.py | 22 +++- backend/portal/views/teacher/teach.py | 145 ++++++++++++++++---------- backend/service/settings.py | 2 +- backend/service/urls.py | 10 +- 5 files changed, 118 insertions(+), 62 deletions(-) diff --git a/backend/portal/helpers/domain.py b/backend/portal/helpers/domain.py index a845f56c..24ba51ac 100644 --- a/backend/portal/helpers/domain.py +++ b/backend/portal/helpers/domain.py @@ -5,7 +5,6 @@ def get_domain(request): """ Returns the domain of the request """ - return ( "http://localhost:3000" if os.environ.get("DJANGO_DEBUG") == "True" diff --git a/backend/portal/urls/teacher/teach.py b/backend/portal/urls/teacher/teach.py index 6a3bfeba..63f93e4d 100644 --- a/backend/portal/urls/teacher/teach.py +++ b/backend/portal/urls/teacher/teach.py @@ -1,8 +1,12 @@ -from django.urls import re_path +from django.urls import re_path, path from ...helpers.regexes import ACCESS_CODE_REGEX from ...views.teacher.teach import ( teacher_edit_class, + teacher_edit_student, + teacher_download_csv, + teacher_print_reminder_cards, + pdf_url, ) @@ -12,4 +16,20 @@ teacher_edit_class, name="teacher_edit_class", ), + path( + "student/edit/", + teacher_edit_student, + name="teacher_edit_student", + ), + re_path( + rf"onboarding-class/(?P{ACCESS_CODE_REGEX})/download-csv/", + teacher_download_csv, + name="teacher_download_csv", + ), + re_path( + rf"onboarding-class/(?P{ACCESS_CODE_REGEX})/print-reminder-cards/", + teacher_print_reminder_cards, + name="teacher_print_reminder_cards", + ), + path("help/", pdf_url, name="teacher_print_reminder_cards"), ] diff --git a/backend/portal/views/teacher/teach.py b/backend/portal/views/teacher/teach.py index da29540e..70462bb2 100644 --- a/backend/portal/views/teacher/teach.py +++ b/backend/portal/views/teacher/teach.py @@ -59,6 +59,8 @@ from reportlab.lib.utils import ImageReader from reportlab.pdfgen import canvas +from django.conf import settings + STUDENT_PASSWORD_LENGTH = 6 REMINDER_CARDS_PDF_ROWS = 8 REMINDER_CARDS_PDF_COLUMNS = 1 @@ -308,6 +310,7 @@ def teacher_edit_class(request, access_code): - Locking or unlocking specific Rapid Router levels - Transferring the class to another teacher """ + access_code = access_code.upper() klass = get_object_or_404(Class, access_code=access_code) old_teacher = klass.teacher other_teachers = Teacher.objects.filter(school=old_teacher.school).exclude( @@ -525,7 +528,7 @@ def teacher_edit_student(request, pk): set_password_mode = False if request.method == "POST": - if "update_details" in request.POST: + if "name" in request.POST: name_form = TeacherEditStudentForm(student, request.POST) if name_form.is_valid(): name = name_form.cleaned_data["name"] @@ -533,37 +536,27 @@ def teacher_edit_student(request, pk): student.new_user.save() student.save() - messages.success( - request, - "The student's details have been changed successfully.", - ) - - return HttpResponseRedirect( - reverse_lazy( - "view_class", - kwargs={"access_code": student.class_field.access_code}, - ) + return JsonResponse( + { + "message": "The student's details have been changed successfully.", + } ) - else: + elif "confirm_password" in request.POST: password_form = TeacherSetStudentPass(request.POST) if password_form.is_valid(): return process_reset_password_form( request, student, password_form ) - set_password_mode = True - return render( - request, - "portal/teach/teacher_edit_student.html", - { - "name_form": name_form, - "password_form": password_form, - "student": student, - "class": student.class_field, - "set_password_mode": set_password_mode, - }, - ) + return JsonResponse( + { + "message": "Your details were not updated due to incorrect details" + }, + status=400, + ) + else: + return HttpResponse(status=405) def process_reset_password_form(request, student, password_form): @@ -598,22 +591,26 @@ def process_reset_password_form(request, student, password_form): ) student.blocked_time = datetime.now(tz=pytz.utc) - timedelta(days=1) student.save() - - return render( - request, - "portal/teach/onboarding_print.html", + access_code = student.class_field.access_code + frontend_link = request.headers.get("referer", "") + student_login_link = "".join([frontend_link, "login/student"]) + class_login_link = "/".join([student_login_link, access_code]) + return JsonResponse( { - "class": student.class_field, + "student_login_link": student_login_link, + "class_link": class_login_link, + "access_code": access_code, + "class": student.class_field.name, "students_info": students_info, "onboarding_done": True, - "query_data": json.dumps(students_info), + "query_data": students_info, # this field could be redundant "class_url": request.build_absolute_uri( reverse( "student_login", kwargs={"access_code": student.class_field.access_code}, ) ), - }, + } ) @@ -927,8 +924,47 @@ class DownloadType(Enum): PYTHON_PACK = 4 -@login_required(login_url=reverse_lazy("teacher_login")) -@user_passes_test(logged_in_as_teacher, login_url=reverse_lazy("teacher_login")) +# This method was added due to weird behavior of +# dictionaries keys and list indexes when passing +# data from frontend to backend. If you know a method +# to fix the dictionary issue, feel free to use it and +# delete this method +def expand_key(dictionary): + expanded = {} + + for key, value in dictionary.items(): + keys = key.split("[") + keys = [k.replace("]", "") for k in keys] + + temp = expanded + for i, k in enumerate(keys[:-1]): + if k.isdigit(): + k = int(k) + if not isinstance(temp, list): + temp = [] + while len(temp) <= k: + temp.append({}) + if keys[i - 1] in expanded: + expanded[keys[i - 1]] = temp + else: + temp[keys[i - 1]] = temp + temp = temp[k] + else: + if k not in temp: + temp[k] = {} + temp = temp[k] + + temp[keys[-1]] = value[0] if len(value) == 1 else value + + return expanded + + +# @login_required(login_url=reverse_lazy("teacher_login")) +# @user_passes_test(logged_in_as_teacher, login_url=reverse_lazy("teacher_login")) +from django.views.decorators.csrf import csrf_exempt + + +@csrf_exempt def teacher_print_reminder_cards(request, access_code): response = HttpResponse(content_type="application/pdf") response["Content-Disposition"] = 'filename="student_reminder_cards.pdf"' @@ -950,29 +986,26 @@ def teacher_print_reminder_cards(request, access_code): CARD_INNER_HEIGHT = CARD_HEIGHT - CARD_PADDING * 2 - logo_image = ImageReader( - staticfiles_storage.path("portal/img/logo_cfl_reminder_cards.jpg") - ) + # logo_image = ImageReader( + # staticfiles_storage.path("portal/img/logo_cfl_reminder_cards.jpg") + # ) klass = get_object_or_404(Class, access_code=access_code) # Check auth check_teacher_authorised(request, klass.teacher) # Use data from the query string if given - student_data = get_student_data(request) - student_login_link = request.build_absolute_uri( - reverse("student_login_access_code") - ) - class_login_link = request.build_absolute_uri( - reverse("student_login", kwargs={"access_code": access_code}) - ) + frontend_link = request.headers.get("referer", "") + student_login_link = "/".join([frontend_link, "login/student"]) + class_login_link = "/".join([student_login_link, access_code]) + current_student_reminder_data = expand_key(dict(request.POST)) # Now draw everything x = 0 y = 0 current_student_count = 0 - for student in student_data: + for student in current_student_reminder_data["students_info"]: # warning text for every new page if current_student_count % (NUM_X * NUM_Y) == 0: p.setFillColor(red) @@ -996,15 +1029,15 @@ def teacher_print_reminder_cards(request, access_code): p.rect(left, bottom, CARD_WIDTH, CARD_HEIGHT) # logo - p.drawImage( - logo_image, - left, - bottom + INTER_CARD_MARGIN, - height=CARD_HEIGHT - INTER_CARD_MARGIN * 2, - preserveAspectRatio=True, - ) + # p.drawImage( + # logo_image, + # left, + # bottom + INTER_CARD_MARGIN, + # height=CARD_HEIGHT - INTER_CARD_MARGIN * 2, + # preserveAspectRatio=True, + # ) - text_left = left + logo_image.getSize()[0] + text_left = left # + logo_image.getSize()[0] # student details p.setFillColor(black) @@ -1040,12 +1073,16 @@ def teacher_print_reminder_cards(request, access_code): p.save() count_student_details_click(DownloadType.LOGIN_CARDS) + return response + +def pdf_url(request, id): + response = request.session.get(f"{id}_downloaded_cards", None) return response -@login_required(login_url=reverse_lazy("teacher_login")) -@user_passes_test(logged_in_as_teacher, login_url=reverse_lazy("teacher_login")) +# @login_required(login_url=reverse_lazy("teacher_login")) +# @user_passes_test(logged_in_as_teacher, login_url=reverse_lazy("teacher_login")) def teacher_download_csv(request, access_code): response = HttpResponse(content_type="text/csv") response[ diff --git a/backend/service/settings.py b/backend/service/settings.py index 2f11a74c..ff5545e2 100644 --- a/backend/service/settings.py +++ b/backend/service/settings.py @@ -71,7 +71,7 @@ "django.middleware.locale.LocaleMiddleware", "corsheaders.middleware.CorsMiddleware", "django.middleware.common.CommonMiddleware", - "django.middleware.csrf.CsrfViewMiddleware", + # "django.middleware.csrf.CsrfViewMiddleware", "deploy.middleware.security.CustomSecurityMiddleware", "whitenoise.middleware.WhiteNoiseMiddleware", "django.contrib.messages.middleware.MessageMiddleware", diff --git a/backend/service/urls.py b/backend/service/urls.py index 464b7e46..caeef04f 100644 --- a/backend/service/urls.py +++ b/backend/service/urls.py @@ -20,9 +20,9 @@ urlpatterns = [ path("admin/", admin.site.urls), path("api/", include("portal.urls")), - re_path( - r".*", - lambda request: render(request, "portal.html"), - name="react_app", - ), + # re_path( + # r".*", + # lambda request: render(request, "portal.html"), + # name="react_app", + # ), ] From a9999963ca5af672bd06c4922a6409ecb81af1b8 Mon Sep 17 00:00:00 2001 From: KamilPawel Date: Mon, 2 Oct 2023 10:51:57 +0100 Subject: [PATCH 04/52] removing reverse --- backend/portal/views/teacher/teach.py | 241 ++++++++++++++------------ frontend/src/app/api/teacher/teach.ts | 3 +- 2 files changed, 133 insertions(+), 111 deletions(-) diff --git a/backend/portal/views/teacher/teach.py b/backend/portal/views/teacher/teach.py index 70462bb2..d2c8318a 100644 --- a/backend/portal/views/teacher/teach.py +++ b/backend/portal/views/teacher/teach.py @@ -59,7 +59,7 @@ from reportlab.lib.utils import ImageReader from reportlab.pdfgen import canvas -from django.conf import settings +from codeforlife import settings STUDENT_PASSWORD_LENGTH = 6 REMINDER_CARDS_PDF_ROWS = 8 @@ -566,12 +566,9 @@ def process_reset_password_form(request, student, password_form): # generate uuid for url and store the hashed uuidstr = uuid4().hex login_id = get_hashed_login_id(uuidstr) - login_url = request.build_absolute_uri( - reverse( - "student_direct_login", - kwargs={"user_id": student.new_user.id, "login_id": uuidstr}, - ) - ) + protocol = settings.SERVICE_PROTOCOL + domain = settings.SERVICE_DOMAIN + login_url = f"{protocol}://{domain}/u/{student.new_user.id}/{uuidstr}/" students_info = [ { @@ -604,12 +601,12 @@ def process_reset_password_form(request, student, password_form): "students_info": students_info, "onboarding_done": True, "query_data": students_info, # this field could be redundant - "class_url": request.build_absolute_uri( - reverse( - "student_login", - kwargs={"access_code": student.class_field.access_code}, - ) - ), + # "class_url": request.build_absolute_uri( + # reverse( + # "student_login", + # kwargs={"access_code": student.class_field.access_code}, + # ) + # ), } ) @@ -964,116 +961,142 @@ def expand_key(dictionary): from django.views.decorators.csrf import csrf_exempt -@csrf_exempt -def teacher_print_reminder_cards(request, access_code): - response = HttpResponse(content_type="application/pdf") - response["Content-Disposition"] = 'filename="student_reminder_cards.pdf"' - - p = canvas.Canvas(response, pagesize=A4) - - # Define constants that determine the look of the cards - PAGE_WIDTH, PAGE_HEIGHT = A4 - PAGE_MARGIN = PAGE_WIDTH // 16 - INTER_CARD_MARGIN = PAGE_WIDTH // 64 - CARD_PADDING = PAGE_WIDTH // 48 +# @csrf_exempt +# def teacher_print_reminder_cards(request, access_code): +# response = HttpResponse(content_type="application/pdf") +# response["Content-Disposition"] = 'filename="student_reminder_cards.pdf"' + +# p = canvas.Canvas(response, pagesize=A4) + +# # Define constants that determine the look of the cards +# PAGE_WIDTH, PAGE_HEIGHT = A4 +# PAGE_MARGIN = PAGE_WIDTH // 16 +# INTER_CARD_MARGIN = PAGE_WIDTH // 64 +# CARD_PADDING = PAGE_WIDTH // 48 + +# # rows and columns on page +# NUM_X = REMINDER_CARDS_PDF_COLUMNS +# NUM_Y = REMINDER_CARDS_PDF_ROWS + +# CARD_WIDTH = (PAGE_WIDTH - PAGE_MARGIN * 2) // NUM_X +# CARD_HEIGHT = (PAGE_HEIGHT - PAGE_MARGIN * 4) // NUM_Y + +# CARD_INNER_HEIGHT = CARD_HEIGHT - CARD_PADDING * 2 + +# # logo_image = ImageReader( +# # staticfiles_storage.path("portal/img/logo_cfl_reminder_cards.jpg") +# # ) + +# klass = get_object_or_404(Class, access_code=access_code) +# # Check auth +# check_teacher_authorised(request, klass.teacher) + +# # Use data from the query string if given +# frontend_link = request.headers.get("referer", "") +# student_login_link = "/".join([frontend_link, "login/student"]) +# class_login_link = "/".join([student_login_link, access_code]) +# current_student_reminder_data = expand_key(dict(request.POST)) + +# # Now draw everything +# x = 0 +# y = 0 + +# current_student_count = 0 +# for student in current_student_reminder_data["students_info"]: +# # warning text for every new page +# if current_student_count % (NUM_X * NUM_Y) == 0: +# p.setFillColor(red) +# p.setFont("Helvetica-Bold", 10) +# p.drawString( +# PAGE_MARGIN, PAGE_MARGIN / 2, REMINDER_CARDS_PDF_WARNING_TEXT +# ) + +# left = PAGE_MARGIN + x * CARD_WIDTH + x * INTER_CARD_MARGIN * 2 +# bottom = ( +# PAGE_HEIGHT +# - PAGE_MARGIN +# - (y + 1) * CARD_HEIGHT +# - y * INTER_CARD_MARGIN +# ) + +# inner_bottom = bottom + CARD_PADDING + +# # card border +# p.setStrokeColor(black) +# p.rect(left, bottom, CARD_WIDTH, CARD_HEIGHT) + +# # logo +# # p.drawImage( +# # logo_image, +# # left, +# # bottom + INTER_CARD_MARGIN, +# # height=CARD_HEIGHT - INTER_CARD_MARGIN * 2, +# # preserveAspectRatio=True, +# # ) + +# text_left = left # + logo_image.getSize()[0] + +# # student details +# p.setFillColor(black) +# p.setFont("Helvetica", 12) +# p.drawString( +# text_left, +# inner_bottom + CARD_INNER_HEIGHT * 0.9, +# f"Class code: {klass.access_code} at {student_login_link}", +# ) +# p.setFont("Helvetica-BoldOblique", 12) +# p.drawString(text_left, inner_bottom + CARD_INNER_HEIGHT * 0.6, "OR") +# p.setFont("Helvetica", 12) +# p.drawString( +# text_left + 22, +# inner_bottom + CARD_INNER_HEIGHT * 0.6, +# f"class link: {class_login_link}", +# ) +# p.drawString( +# text_left, +# inner_bottom + CARD_INNER_HEIGHT * 0.3, +# f"Name: {student['name']}", +# ) +# p.drawString( +# text_left, inner_bottom, f"Password: {student['password']}" +# ) + +# x = (x + 1) % NUM_X +# y = compute_show_page_character(p, x, y, NUM_Y) +# current_student_count += 1 + +# compute_show_page_end(p, x, y) + +# p.save() + +# count_student_details_click(DownloadType.LOGIN_CARDS) +# return response - # rows and columns on page - NUM_X = REMINDER_CARDS_PDF_COLUMNS - NUM_Y = REMINDER_CARDS_PDF_ROWS - - CARD_WIDTH = (PAGE_WIDTH - PAGE_MARGIN * 2) // NUM_X - CARD_HEIGHT = (PAGE_HEIGHT - PAGE_MARGIN * 4) // NUM_Y - - CARD_INNER_HEIGHT = CARD_HEIGHT - CARD_PADDING * 2 - - # logo_image = ImageReader( - # staticfiles_storage.path("portal/img/logo_cfl_reminder_cards.jpg") - # ) +@csrf_exempt +def teacher_print_reminder_cards(request, access_code): klass = get_object_or_404(Class, access_code=access_code) - # Check auth check_teacher_authorised(request, klass.teacher) - # Use data from the query string if given frontend_link = request.headers.get("referer", "") student_login_link = "/".join([frontend_link, "login/student"]) class_login_link = "/".join([student_login_link, access_code]) current_student_reminder_data = expand_key(dict(request.POST)) - # Now draw everything - x = 0 - y = 0 + students_data = [] - current_student_count = 0 for student in current_student_reminder_data["students_info"]: - # warning text for every new page - if current_student_count % (NUM_X * NUM_Y) == 0: - p.setFillColor(red) - p.setFont("Helvetica-Bold", 10) - p.drawString( - PAGE_MARGIN, PAGE_MARGIN / 2, REMINDER_CARDS_PDF_WARNING_TEXT - ) - - left = PAGE_MARGIN + x * CARD_WIDTH + x * INTER_CARD_MARGIN * 2 - bottom = ( - PAGE_HEIGHT - - PAGE_MARGIN - - (y + 1) * CARD_HEIGHT - - y * INTER_CARD_MARGIN - ) - - inner_bottom = bottom + CARD_PADDING - - # card border - p.setStrokeColor(black) - p.rect(left, bottom, CARD_WIDTH, CARD_HEIGHT) - - # logo - # p.drawImage( - # logo_image, - # left, - # bottom + INTER_CARD_MARGIN, - # height=CARD_HEIGHT - INTER_CARD_MARGIN * 2, - # preserveAspectRatio=True, - # ) - - text_left = left # + logo_image.getSize()[0] - - # student details - p.setFillColor(black) - p.setFont("Helvetica", 12) - p.drawString( - text_left, - inner_bottom + CARD_INNER_HEIGHT * 0.9, - f"Class code: {klass.access_code} at {student_login_link}", - ) - p.setFont("Helvetica-BoldOblique", 12) - p.drawString(text_left, inner_bottom + CARD_INNER_HEIGHT * 0.6, "OR") - p.setFont("Helvetica", 12) - p.drawString( - text_left + 22, - inner_bottom + CARD_INNER_HEIGHT * 0.6, - f"class link: {class_login_link}", - ) - p.drawString( - text_left, - inner_bottom + CARD_INNER_HEIGHT * 0.3, - f"Name: {student['name']}", - ) - p.drawString( - text_left, inner_bottom, f"Password: {student['password']}" - ) - - x = (x + 1) % NUM_X - y = compute_show_page_character(p, x, y, NUM_Y) - current_student_count += 1 - - compute_show_page_end(p, x, y) - - p.save() + student_data = { + "class_code": klass.access_code, + "student_login_link": student_login_link, + "class_login_link": class_login_link, + "name": student["name"], + "password": student["password"], + } + students_data.append(student_data) count_student_details_click(DownloadType.LOGIN_CARDS) - return response + return JsonResponse({"students": students_data}) def pdf_url(request, id): diff --git a/frontend/src/app/api/teacher/teach.ts b/frontend/src/app/api/teacher/teach.ts index 439d7480..3010f99a 100644 --- a/frontend/src/app/api/teacher/teach.ts +++ b/frontend/src/app/api/teacher/teach.ts @@ -111,8 +111,7 @@ const teachApi = api.injectEndpoints({ 'Content-Type': 'application/x-www-form-urlencoded', Accept: 'application/pdf' }, - transformResponse: async (response: Response) => - await response.clone().blob() + responseType: 'blob' }) }) }) From e8729b788cc8e112619b89622c888ec0fc637dac Mon Sep 17 00:00:00 2001 From: KamilPawel Date: Mon, 2 Oct 2023 17:34:25 +0100 Subject: [PATCH 05/52] resolving conflicts --- .../teacherDashboard/classes/Classes.tsx | 6 ++ .../classes/editClass/EditClass.tsx | 28 +++++- .../student/editStudent/EditStudent.tsx | 93 +++++++++++++------ 3 files changed, 94 insertions(+), 33 deletions(-) diff --git a/frontend/src/pages/teacherDashboard/classes/Classes.tsx b/frontend/src/pages/teacherDashboard/classes/Classes.tsx index 9f513ce8..7515c0b7 100644 --- a/frontend/src/pages/teacherDashboard/classes/Classes.tsx +++ b/frontend/src/pages/teacherDashboard/classes/Classes.tsx @@ -37,6 +37,12 @@ const _YourClasses: React.FC = () => { can also accept or deny requests from independent students wanting to join one of your classes. + + +
+          {JSON.stringify(location, null, 2)}
+        
+
); }; diff --git a/frontend/src/pages/teacherDashboard/classes/editClass/EditClass.tsx b/frontend/src/pages/teacherDashboard/classes/editClass/EditClass.tsx index 5c9539e2..6c31800f 100644 --- a/frontend/src/pages/teacherDashboard/classes/editClass/EditClass.tsx +++ b/frontend/src/pages/teacherDashboard/classes/editClass/EditClass.tsx @@ -38,6 +38,7 @@ import EditStudent from './student/editStudent/EditStudent'; import ReleaseStudent from './student/releaseStudent/ReleaseStudent'; import MoveStudent from './student/moveStudent/MoveStudent'; import ResetStudent from './student/resetStudent/ResetStudent'; +import teachApi from '../../../../app/api/teacher/teach'; const StudentsTable: React.FC<{ accessCode: string; @@ -81,6 +82,7 @@ const StudentsTable: React.FC<{ selectedStudentsIds.push(idx); }; + const { data, error, isLoading } = teachApi.useGetStudentsByAccessCodeQuery({ accessCode }); return (
@@ -104,10 +106,10 @@ const StudentsTable: React.FC<{ - {randomStudentNames.map((studentName, idx) => ( - + {data?.studentsPerAccessCode.map((_student, idx) => ( + - {studentName} + {_student.newUser.firstName} }>Edit details @@ -200,6 +202,22 @@ const StudentsTable: React.FC<{ ); }; +const DebugComponent: React.FC = ({ accessCode }) => { + const { data, isLoading, error } = teachApi.useGetStudentsByAccessCodeQuery({ accessCode }); + return ( +
+ + { + !isLoading + ? (error ? JSON.stringify(error, null, 2) : JSON.stringify(data)) + : null + } + + +
+ ); +}; + const EditClass: React.FC<{ accessCode: string; }> = ({ accessCode }) => { @@ -296,7 +314,6 @@ const EditClass: React.FC<{ } } } - return <> {location.state?.message && @@ -318,6 +335,7 @@ const EditClass: React.FC<{ your classes or to another teacher within your school or club, or remove students altogether. + diff --git a/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx b/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx index a4760b27..684bc4b3 100644 --- a/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx +++ b/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx @@ -1,39 +1,65 @@ +import React from 'react'; import { SubmitButton } from 'codeforlife/lib/esm/components/form'; import Page from 'codeforlife/lib/esm/components/page'; -import React from 'react'; - import { Link, Typography, useTheme } from '@mui/material'; import * as yup from 'yup'; - import { CflHorizontalForm } from '../../../../../../components/form/CflForm'; import StudentNameField from '../../../../../../components/form/StudentNameField'; import CflPasswordFields from '../../../../../../features/cflPasswordFields/CflPasswordFields'; import { fromSearchParams } from 'codeforlife/lib/esm/hooks'; -import { useEditStudentNameMutation, useEditStudentPasswordMutation } from '../../../../../../app/api'; -import { tryValidateSync } from 'codeforlife/lib/esm/helpers/yup'; +import { + useEditStudentNameMutation, + useEditStudentPasswordMutation, +} from '../../../../../../app/api'; import { generatePath, useLocation, useNavigate } from 'react-router-dom'; import { paths } from '../../../../../../app/router'; +import teachApi from '../../../../../../app/api/teacher/teach'; -const UpdateNameForm: React.FC = () => { +const DebugComponent: React.FC = ({ accessCode, search }) => { + const { data, isLoading, error } = teachApi.useGetStudentsByAccessCodeQuery({ accessCode }); + return ( +
+ + { + !isLoading + ? (error ? JSON.stringify(error, null, 2) : JSON.stringify(data)) + : null + } + {JSON.stringify(search, null, 2)} + +
+ ); +}; + +const UpdateNameForm: React.FC<{ accessCode: string; }> = ({ accessCode }) => { interface Values { name: string; studentId: string; } + const searchParams = tryValidateSync( + fromSearchParams(), + yup.object({ + studentIds: yup.number().required(), + }) + ); + const { data, isLoading, error } = teachApi.useGetStudentsByAccessCodeQuery({ accessCode }); + // TODO: Initial value should be student name const studentId = tryValidateSync( fromSearchParams(), yup.object({ - studentIds: yup.string().required() + studentIds: yup.string().required(), }) ); const studentEditId = studentId?.studentIds ?? '0'; const initialValues: Values = { name: 'Florian', - studentId: studentEditId + studentId: studentEditId, }; const [editStudentName] = useEditStudentNameMutation(); + return ( { initialValues={initialValues} onSubmit={(values) => { editStudentName({ name: values.name, studentId: studentEditId }) - .unwrap().then((response) => { + .unwrap() + .then((response) => { console.log(response); }) .catch((error) => { console.error(error); }); }} - - // TODO: Disable button by default - submitButton={< SubmitButton > Update} + submitButton={Update} > - + + ); }; -const UpdatePasswordForm: React.FC<{ accessCode: string; }> = (accessCode) => { +const UpdatePasswordForm: React.FC<{ accessCode: string; }> = ({ accessCode }) => { const [editStudentPassword] = useEditStudentPasswordMutation(); interface Values { password: string; @@ -66,24 +92,33 @@ const UpdatePasswordForm: React.FC<{ accessCode: string; }> = (accessCode) => { const initialValues: Values = { password: '', - confirmPassword: '' + confirmPassword: '', }; const navigate = useNavigate(); const studentId = tryValidateSync( fromSearchParams(), yup.object({ - studentIds: yup.string().required() + studentIds: yup.string().required(), }) ); const studentEditId = studentId?.studentIds ?? '0'; const handleSubmit: (values: Values) => void = (values) => { - editStudentPassword({ password: values.password, studentId: studentEditId, confirmPassword: values.confirmPassword }).unwrap().then((response) => { - console.log(response); - navigate(generatePath(paths.teacher.dashboard.classes.editClass.updatedStudentCredentials._, accessCode), { state: { updatedStudentCredentials: response } }); - }).catch((error) => { - console.error(error); - } - ); + editStudentPassword({ + password: values.password, + studentId: studentEditId, + confirmPassword: values.confirmPassword, + }) + .unwrap() + .then((response) => { + console.log(response); + navigate( + generatePath(paths.teacher.dashboard.classes.editClass.updatedStudentCredentials._, accessCode), + { state: { updatedStudentCredentials: response } } + ); + }) + .catch((error) => { + console.error(error); + }); }; return ( @@ -91,7 +126,9 @@ const UpdatePasswordForm: React.FC<{ accessCode: string; }> = (accessCode) => { header="Update password" subheader="You can set this student's password. Setting the password will also regenerate their direct access link.\nEnter and confirm the password in the boxes below. Try to prevent others from being able to guess the new password when making this decision." initialValues={initialValues} - onSubmit={(values) => { handleSubmit(values); }} + onSubmit={(values) => { + handleSubmit(values); + }} submitButton={Update} >
@@ -99,7 +136,7 @@ const UpdatePasswordForm: React.FC<{ accessCode: string; }> = (accessCode) => {
           {JSON.stringify(location, null, 2)}
         
       
- + ); }; @@ -113,6 +150,7 @@ const EditStudent: React.FC<{ const theme = useTheme(); const location = useLocation(); const resettingPassword = location.state?.updatedStudentCredentials; + return ( <> @@ -127,12 +165,11 @@ const EditStudent: React.FC<{ Class - Edit this student's name and manage their password and direct - access link. + Edit this student's name and manage their password and direct access link. - + From d1d061587a2a88c17ed494e319235a8e4cd29746 Mon Sep 17 00:00:00 2001 From: KamilPawel Date: Mon, 2 Oct 2023 23:34:55 +0100 Subject: [PATCH 06/52] added the pdf download button --- backend/portal/urls/teacher/dashboard.py | 6 + backend/portal/views/teacher/dashboard.py | 39 ++- backend/portal/views/teacher/teach.py | 4 +- frontend/package.json | 3 +- frontend/src/app/api/teacher/teach.ts | 25 +- .../src/components/form/StudentNameField.tsx | 2 +- .../newStudentsTable/NewStudentsTable.tsx | 47 ++- frontend/src/pages/login/MyDocument.tsx | 58 ++++ .../student/editStudent/EditStudent.tsx | 72 ++-- frontend/yarn.lock | 324 +++++++++++++++++- 10 files changed, 497 insertions(+), 83 deletions(-) create mode 100644 frontend/src/pages/login/MyDocument.tsx diff --git a/backend/portal/urls/teacher/dashboard.py b/backend/portal/urls/teacher/dashboard.py index cb3ba44a..6eabb642 100644 --- a/backend/portal/urls/teacher/dashboard.py +++ b/backend/portal/urls/teacher/dashboard.py @@ -16,6 +16,7 @@ create_new_class, get_student_request_data, get_students_from_access_code, + get_student_details, ) from ...helpers.regexes import ACCESS_CODE_REGEX @@ -80,4 +81,9 @@ get_students_from_access_code, name="get_students_from_acccess_code", ), + re_path( + r"^class/student/(?P[0-9]+)/$", + get_student_details, + name="get_student_details", + ), ] diff --git a/backend/portal/views/teacher/dashboard.py b/backend/portal/views/teacher/dashboard.py index 2c449ddf..c20b07a7 100644 --- a/backend/portal/views/teacher/dashboard.py +++ b/backend/portal/views/teacher/dashboard.py @@ -64,10 +64,12 @@ @login_required(login_url=reverse_lazy("teacher_login")) def get_students_from_access_code(request, access_code): - check_teacher_authorised(request, request.user.new_teacher) + student_class = Class.objects.get(access_code=access_code) + check_teacher_authorised(request, student_class.teacher) students_query = Student.objects.filter( class_field__access_code=access_code ) + # TODO: make this into a method for the student so we can reuse it students = [ { "id": student.id, @@ -90,6 +92,41 @@ def get_students_from_access_code(request, access_code): return JsonResponse({"students_per_access_code": students}) +from django.core.exceptions import ObjectDoesNotExist + + +def get_student_details(request, student_id): + student = get_object_or_404(Student, id=student_id) + try: + student_class = Class.objects.get( + access_code=student.class_field.access_code + ) + check_teacher_authorised(request, student_class.teacher) + except (ObjectDoesNotExist, AttributeError) as error: + return JsonResponse({"error": str(error)}) + return JsonResponse( + { + "student": { + "id": student.id, + "class_field": getattr(student.class_field, "id", 0), + "new_user": { + "id": getattr(student.new_user, "id", 0), + "first_name": getattr(student.new_user, "first_name", ""), + "last_name": getattr(student.new_user, "last_name", ""), + }, + "pending_class_request": getattr( + student.pending_class_request, "id", 0 + ), + "blocked_time": student.blocked_time.strftime( + "%Y-%m-%d %H:%M:%S" + ) + if student.blocked_time + else "", + } + } + ) + + def _get_update_account_rate(group, request): """ Custom rate which checks in a POST request is performed on the update diff --git a/backend/portal/views/teacher/teach.py b/backend/portal/views/teacher/teach.py index d2c8318a..c1c62e4b 100644 --- a/backend/portal/views/teacher/teach.py +++ b/backend/portal/views/teacher/teach.py @@ -568,7 +568,9 @@ def process_reset_password_form(request, student, password_form): login_id = get_hashed_login_id(uuidstr) protocol = settings.SERVICE_PROTOCOL domain = settings.SERVICE_DOMAIN - login_url = f"{protocol}://{domain}/u/{student.new_user.id}/{uuidstr}/" + login_url = ( + f"{protocol}://{domain}/api/u/{student.new_user.id}/{uuidstr}/" + ) students_info = [ { diff --git a/frontend/package.json b/frontend/package.json index 1190423f..a89e8bb3 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -27,6 +27,7 @@ "@emotion/styled": "^11.10.6", "@mui/icons-material": "^5.11.11", "@mui/material": "^5.11.12", + "@react-pdf/renderer": "^3.1.12", "@reduxjs/toolkit": "^1.9.3", "codeforlife": "github:ocadotechnology/codeforlife-package-javascript#errorHandlingPage", "country-list": "^2.3.0", @@ -74,4 +75,4 @@ "nyc": { "exclude": [] } -} \ No newline at end of file +} diff --git a/frontend/src/app/api/teacher/teach.ts b/frontend/src/app/api/teacher/teach.ts index 84386864..8ad765fc 100644 --- a/frontend/src/app/api/teacher/teach.ts +++ b/frontend/src/app/api/teacher/teach.ts @@ -13,6 +13,7 @@ export interface ResetStudentPasswordResponseProps { onboardingDone: boolean; queryData: StudentInfo[]; classUrl: string; + accessCode: string; } const teachApi = api.injectEndpoints({ @@ -102,6 +103,27 @@ const teachApi = api.injectEndpoints({ { type: 'student', id: accessCode } ] }), + getStudent: build.query< + { + student: { + id: number; + classField: number; + newUser: { + id: number; + firstName: string; + lastName: string; + }; + pendingClassRequest: number; + blockedTime: string | null; + }; + }, + { studentId: string } // Specify the input type + >({ + query: ({ studentId }) => ({ + url: `class/student/${studentId}/`, + method: 'GET' + }) + }), updateClass: build.mutation< null, { @@ -148,5 +170,6 @@ export const { useEditStudentNameMutation, useEditStudentPasswordMutation, useGetReminderCardsMutation, - useGetStudentsByAccessCodeQuery + useGetStudentsByAccessCodeQuery, + useGetStudentQuery } = teachApi; diff --git a/frontend/src/components/form/StudentNameField.tsx b/frontend/src/components/form/StudentNameField.tsx index be65097d..9697f7f2 100644 --- a/frontend/src/components/form/StudentNameField.tsx +++ b/frontend/src/components/form/StudentNameField.tsx @@ -12,7 +12,7 @@ const StudentNameField: React.FC & { name = 'name', helperText = 'Choose a name', disabled = false, - style + style, }) => { return ( { + const location = useLocation(); + const { studentsInfo } = location.state.updatedStudentCredentials; + const { classLink } = location.state.updatedStudentCredentials; + console.log(studentsInfo, classLink); + const downloadPdf = async () => { + const blob = await pdf().toBlob(); + const url = URL.createObjectURL(blob); + const link = document.createElement('a'); + link.href = url; + link.download = 'document.pdf'; + link.click(); + URL.revokeObjectURL(url); + }; + return ( + + ); +}; const WhiteTableCell: React.FC = ({ @@ -219,25 +246,7 @@ const NewStudentsTable: React.FC = ({
{/* TODO: fix margin bottom */} - + + ); +}; + + const DownloadButtonPDF: React.FC = () => { const location = useLocation(); const { studentsInfo } = location.state.updatedStudentCredentials; const { classLink } = location.state.updatedStudentCredentials; - console.log(studentsInfo, classLink); const downloadPdf = async () => { - const blob = await pdf().toBlob(); + const blob = await pdf().toBlob(); const url = URL.createObjectURL(blob); const link = document.createElement('a'); link.href = url; @@ -247,14 +287,7 @@ const NewStudentsTable: React.FC = ({ {/* TODO: fix margin bottom */} - +
); From 26d4c27ef5d300758642fc01c31721e8f5d9ef44 Mon Sep 17 00:00:00 2001 From: KamilPawel Date: Wed, 4 Oct 2023 09:20:36 +0100 Subject: [PATCH 08/52] fixing message --- .../student/editStudent/EditStudent.tsx | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx b/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx index efb135b6..58a9d276 100644 --- a/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx +++ b/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx @@ -11,7 +11,7 @@ import { useEditStudentNameMutation, useEditStudentPasswordMutation, } from '../../../../../../app/api'; -import { generatePath, useLocation, useNavigate } from 'react-router-dom'; +import { generatePath, redirect, useLocation, useNavigate } from 'react-router-dom'; import { paths } from '../../../../../../app/router'; import teachApi from '../../../../../../app/api/teacher/teach'; import { tryValidateSync } from 'codeforlife/lib/esm/helpers/yup'; @@ -31,6 +31,7 @@ const UpdateNameForm: React.FC<{ accessCode: string; }> = ({ accessCode }) => { }; const [editStudentName] = teachApi.useEditStudentNameMutation(); + const navigate = useNavigate(); return ( = ({ accessCode }) => { onSubmit={(values) => { editStudentName({ name: values.name, studentId: studentId }) .unwrap() - .then((response) => { + .then((response: any) => { console.log(response); - }) + navigate('/', + { + // pathname: location.pathname, + // search: location.search, + state: { + notifications: [ + { index: 0, props: { children: 'You successfully updated your student details' } } + ] + } + } + ); + } + ) .catch((error) => { console.error(error); }); }} - submitButton={Update} + submitButton={ Update} > {JSON.stringify(data, null, 2)} - + ); }; From 4092155adda1084d371d5db23cb9a46bcc12db4a Mon Sep 17 00:00:00 2001 From: KamilPawel Date: Wed, 4 Oct 2023 18:14:21 +0100 Subject: [PATCH 09/52] added redirect --- backend/portal/views/teacher/teach.py | 10 +++++ frontend/src/app/api/api.ts | 3 +- .../newStudentsTable/NewStudentsTable.tsx | 43 ++++++++++--------- frontend/src/pages/login/MyDocument.tsx | 10 ++--- .../student/editStudent/EditStudent.tsx | 27 ++++++++---- .../editStudent/UpdatedStudentCredentials.tsx | 8 +++- 6 files changed, 64 insertions(+), 37 deletions(-) diff --git a/backend/portal/views/teacher/teach.py b/backend/portal/views/teacher/teach.py index c1c62e4b..e3986a4a 100644 --- a/backend/portal/views/teacher/teach.py +++ b/backend/portal/views/teacher/teach.py @@ -529,6 +529,16 @@ def teacher_edit_student(request, pk): if request.method == "POST": if "name" in request.POST: + student_name = request.POST.get("name") + if Student.objects.filter( + new_user__first_name=student_name + ).exists(): + return JsonResponse( + { + "message": f"There is already a student called {student_name} in this class" + }, + status=400, + ) name_form = TeacherEditStudentForm(student, request.POST) if name_form.is_valid(): name = name_form.cleaned_data["name"] diff --git a/frontend/src/app/api/api.ts b/frontend/src/app/api/api.ts index b38a2627..b5021378 100644 --- a/frontend/src/app/api/api.ts +++ b/frontend/src/app/api/api.ts @@ -1,5 +1,6 @@ import { fetchBaseQuery } from '@reduxjs/toolkit/query'; import { createApi } from '@reduxjs/toolkit/query/react'; + import { endpoints, tagTypes } from 'codeforlife/lib/esm/api'; import { FetchBaseQuery, @@ -36,7 +37,7 @@ const baseQuery: FetchBaseQuery = async (args, api, extraOptions) => { extraOptions ); - handleResponseError(result); + // handleResponseError(result); parseResponseBody(result); diff --git a/frontend/src/features/newStudentsTable/NewStudentsTable.tsx b/frontend/src/features/newStudentsTable/NewStudentsTable.tsx index f598e8f3..954fa091 100644 --- a/frontend/src/features/newStudentsTable/NewStudentsTable.tsx +++ b/frontend/src/features/newStudentsTable/NewStudentsTable.tsx @@ -69,25 +69,33 @@ const DownloadButtonCSV: React.FC = () => { const DownloadButtonPDF: React.FC = () => { const location = useLocation(); - const { studentsInfo } = location.state.updatedStudentCredentials; - const { classLink } = location.state.updatedStudentCredentials; - const downloadPdf = async () => { + const { studentsInfo, classLink } = location.state.updatedStudentCredentials; + const linkRef = React.useRef(null); + + const downloadPdf = async (): Promise => { const blob = await pdf().toBlob(); const url = URL.createObjectURL(blob); - const link = document.createElement('a'); - link.href = url; - link.download = 'document.pdf'; - link.click(); - URL.revokeObjectURL(url); + + if (linkRef.current) { + linkRef.current.href = url; + linkRef.current.download = 'document.pdf'; + linkRef.current.click(); + URL.revokeObjectURL(url); + } }; + return ( - + <> + + {/* Invisible anchor tag to trigger the download */} + + ); }; @@ -177,11 +185,6 @@ const NewStudentsTable: React.FC = ({ cards from the button below. Please ensure you share student passwords securely. -
-          
-            {JSON.stringify(location.state, null, 2)}
-          
-        
= ({ accessCode }) => { .unwrap() .then((response: any) => { console.log(response); - navigate('/', + const path = location.pathname + location.search; + console.log(path); + navigate(path, { // pathname: location.pathname, // search: location.search, @@ -57,13 +59,25 @@ const UpdateNameForm: React.FC<{ accessCode: string; }> = ({ accessCode }) => { ) .catch((error) => { console.error(error); + const path = location.pathname + location.search; + console.log(path); + navigate(path, + { + // pathname: location.pathname, + // search: location.search, + state: { + notifications: [ + { index: 0, props: { children: error.data.message } } + ] + } + } + ); + }).finally(() => { + scrollTo(0, 0); }); }} submitButton={ Update} > - - {JSON.stringify(data, null, 2)} - ); @@ -116,11 +130,6 @@ const UpdatePasswordForm: React.FC = () => { }} submitButton={Update} > -
-        
-          {JSON.stringify(location, null, 2)}
-        
-      
); diff --git a/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/UpdatedStudentCredentials.tsx b/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/UpdatedStudentCredentials.tsx index 77ba838e..7c90c1fa 100644 --- a/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/UpdatedStudentCredentials.tsx +++ b/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/UpdatedStudentCredentials.tsx @@ -11,6 +11,7 @@ const UpdatedStudentCredentials: React.FC = () => { return { This is the only time you will be able to view this page. You can print reminder cards or download as a CSV file. - + From 30426973173f2f5d2c9c0dec95964de6922fb809 Mon Sep 17 00:00:00 2001 From: KamilPawel Date: Wed, 4 Oct 2023 18:22:27 +0100 Subject: [PATCH 10/52] cleaning up --- backend/portal/urls/teacher/teach.py | 2 - backend/portal/views/teacher/teach.py | 50 +++++++++---------- .../student/editStudent/EditStudent.tsx | 10 +--- 3 files changed, 25 insertions(+), 37 deletions(-) diff --git a/backend/portal/urls/teacher/teach.py b/backend/portal/urls/teacher/teach.py index 63f93e4d..aae05b2c 100644 --- a/backend/portal/urls/teacher/teach.py +++ b/backend/portal/urls/teacher/teach.py @@ -6,7 +6,6 @@ teacher_edit_student, teacher_download_csv, teacher_print_reminder_cards, - pdf_url, ) @@ -31,5 +30,4 @@ teacher_print_reminder_cards, name="teacher_print_reminder_cards", ), - path("help/", pdf_url, name="teacher_print_reminder_cards"), ] diff --git a/backend/portal/views/teacher/teach.py b/backend/portal/views/teacher/teach.py index e3986a4a..c9a681b8 100644 --- a/backend/portal/views/teacher/teach.py +++ b/backend/portal/views/teacher/teach.py @@ -1111,40 +1111,36 @@ def teacher_print_reminder_cards(request, access_code): return JsonResponse({"students": students_data}) -def pdf_url(request, id): - response = request.session.get(f"{id}_downloaded_cards", None) - return response - - +# TODO: before deploying make sure the count_student_details_click is implemented # @login_required(login_url=reverse_lazy("teacher_login")) # @user_passes_test(logged_in_as_teacher, login_url=reverse_lazy("teacher_login")) -def teacher_download_csv(request, access_code): - response = HttpResponse(content_type="text/csv") - response[ - "Content-Disposition" - ] = 'attachment; filename="student_login_urls.csv"' +# def teacher_download_csv(request, access_code): +# response = HttpResponse(content_type="text/csv") +# response[ +# "Content-Disposition" +# ] = 'attachment; filename="student_login_urls.csv"' - klass = get_object_or_404(Class, access_code=access_code) - # Check auth - check_teacher_authorised(request, klass.teacher) +# klass = get_object_or_404(Class, access_code=access_code) +# # Check auth +# check_teacher_authorised(request, klass.teacher) - class_url = request.build_absolute_uri( - reverse("student_login", kwargs={"access_code": access_code}) - ) +# class_url = request.build_absolute_uri( +# reverse("student_login", kwargs={"access_code": access_code}) +# ) - # Use data from the query string if given - student_data = get_student_data(request) - if student_data: - writer = csv.writer(response) - writer.writerow([access_code, class_url]) - for student in student_data: - writer.writerow( - [student["name"], student["password"], student["login_url"]] - ) +# # Use data from the query string if given +# student_data = get_student_data(request) +# if student_data: +# writer = csv.writer(response) +# writer.writerow([access_code, class_url]) +# for student in student_data: +# writer.writerow( +# [student["name"], student["password"], student["login_url"]] +# ) - count_student_details_click(DownloadType.CSV) +# count_student_details_click(DownloadType.CSV) <-- implement this - return response +# return response def get_student_data(request): diff --git a/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx b/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx index 236f99a6..e7077411 100644 --- a/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx +++ b/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx @@ -2,20 +2,15 @@ import React from 'react'; import { SubmitButton } from 'codeforlife/lib/esm/components/form'; import Page from 'codeforlife/lib/esm/components/page'; import { Link, Typography, useTheme } from '@mui/material'; -import * as yup from 'yup'; import { CflHorizontalForm } from '../../../../../../components/form/CflForm'; import StudentNameField from '../../../../../../components/form/StudentNameField'; import CflPasswordFields from '../../../../../../features/cflPasswordFields/CflPasswordFields'; -import { fromSearchParams } from 'codeforlife/lib/esm/hooks'; import { - useEditStudentNameMutation, useEditStudentPasswordMutation, } from '../../../../../../app/api'; -import { generatePath, redirect, useLocation, useNavigate } from 'react-router-dom'; +import { useLocation, useNavigate } from 'react-router-dom'; import { paths } from '../../../../../../app/router'; import teachApi from '../../../../../../app/api/teacher/teach'; -import { tryValidateSync } from 'codeforlife/lib/esm/helpers/yup'; -import { useSearchParams } from 'react-router-dom'; const UpdateNameForm: React.FC<{ accessCode: string; }> = ({ accessCode }) => { @@ -24,7 +19,6 @@ const UpdateNameForm: React.FC<{ accessCode: string; }> = ({ accessCode }) => { interface Values { name: string; } - const { data, isLoading, error } = teachApi.useGetStudentQuery({ studentId }); const initialValues: Values = { name: '' @@ -101,7 +95,7 @@ const UpdatePasswordForm: React.FC = () => { const handleSubmit: (values: Values) => void = (values) => { editStudentPassword({ password: values.password, - studentId: studentId, + studentId, confirmPassword: values.confirmPassword, }) .unwrap() From 4378cda569546d62cd8efb61793cfd19df9b1192 Mon Sep 17 00:00:00 2001 From: KamilPawel Date: Wed, 4 Oct 2023 18:37:01 +0100 Subject: [PATCH 11/52] cleaning up --- backend/portal/views/teacher/dashboard.py | 1 + backend/service/settings.py | 2 +- frontend/package.json | 2 +- frontend/src/app/api/api.ts | 2 +- .../newStudentsTable/NewStudentsTable.tsx | 61 ++++++++++--------- .../classes/editClass/EditClass.tsx | 6 +- .../student/editStudent/EditStudent.tsx | 5 +- 7 files changed, 42 insertions(+), 37 deletions(-) diff --git a/backend/portal/views/teacher/dashboard.py b/backend/portal/views/teacher/dashboard.py index c20b07a7..f39488bd 100644 --- a/backend/portal/views/teacher/dashboard.py +++ b/backend/portal/views/teacher/dashboard.py @@ -104,6 +104,7 @@ def get_student_details(request, student_id): check_teacher_authorised(request, student_class.teacher) except (ObjectDoesNotExist, AttributeError) as error: return JsonResponse({"error": str(error)}) + # TODO: make this into a method for the student so we can reuse it return JsonResponse( { "student": { diff --git a/backend/service/settings.py b/backend/service/settings.py index b4a9b0a8..3867c233 100644 --- a/backend/service/settings.py +++ b/backend/service/settings.py @@ -58,7 +58,7 @@ "django.middleware.locale.LocaleMiddleware", "corsheaders.middleware.CorsMiddleware", "django.middleware.common.CommonMiddleware", - # "django.middleware.csrf.CsrfViewMiddleware", + "django.middleware.csrf.CsrfViewMiddleware", "deploy.middleware.security.CustomSecurityMiddleware", "whitenoise.middleware.WhiteNoiseMiddleware", "django.contrib.messages.middleware.MessageMiddleware", diff --git a/frontend/package.json b/frontend/package.json index a89e8bb3..6e29bfe5 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -29,7 +29,7 @@ "@mui/material": "^5.11.12", "@react-pdf/renderer": "^3.1.12", "@reduxjs/toolkit": "^1.9.3", - "codeforlife": "github:ocadotechnology/codeforlife-package-javascript#errorHandlingPage", + "codeforlife": "github:ocadotechnology/codeforlife-package-javascript#v1.27.4", "country-list": "^2.3.0", "crypto-js": "^4.1.1", "formik": "^2.2.9", diff --git a/frontend/src/app/api/api.ts b/frontend/src/app/api/api.ts index b5021378..60d656f4 100644 --- a/frontend/src/app/api/api.ts +++ b/frontend/src/app/api/api.ts @@ -37,7 +37,7 @@ const baseQuery: FetchBaseQuery = async (args, api, extraOptions) => { extraOptions ); - // handleResponseError(result); + handleResponseError(result); parseResponseBody(result); diff --git a/frontend/src/features/newStudentsTable/NewStudentsTable.tsx b/frontend/src/features/newStudentsTable/NewStudentsTable.tsx index 954fa091..23db5126 100644 --- a/frontend/src/features/newStudentsTable/NewStudentsTable.tsx +++ b/frontend/src/features/newStudentsTable/NewStudentsTable.tsx @@ -22,7 +22,6 @@ import { import { primary } from 'codeforlife/lib/esm/theme/colors'; import CopyToClipboardIcon from '../../components/CopyToClipboardIcon'; import { useLocation } from 'react-router-dom'; -import teachApi from '../../app/api/teacher/teach'; import { pdf } from '@react-pdf/renderer'; import MyDocument from '../../pages/login/MyDocument'; @@ -34,9 +33,12 @@ interface StudentInfo { } const DownloadButtonCSV: React.FC = () => { - const generateCSV: (studentsInfo: StudentInfo[], classLink: string) => string = (studentsInfo, classLink) => { + const generateCSV: ( + studentsInfo: StudentInfo[], + classLink: string + ) => string = (studentsInfo, classLink) => { let csvContent = 'Name,Password,Class Link,Login URL\n'; - studentsInfo.forEach(student => { + studentsInfo.forEach((student) => { csvContent += `${student.name},${student.password},${classLink},${student.loginUrl}\n`; }); return csvContent; @@ -45,42 +47,46 @@ const DownloadButtonCSV: React.FC = () => { const { studentsInfo } = location.state.updatedStudentCredentials; const { classLink } = location.state.updatedStudentCredentials; - const downloadCSV = () => { + const downloadCSV: () => void = () => { const csvContent = generateCSV(studentsInfo, classLink); const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' }); const url = URL.createObjectURL(blob); - const link = document.createElement('a'); - link.href = url; - link.download = 'data.csv'; - link.click(); + const linkRef = React.useRef(null); + if (linkRef.current) { + linkRef.current.href = url; + linkRef.current.download = 'data.csv'; + linkRef.current.click(); + } URL.revokeObjectURL(url); }; return ( - ); }; - const DownloadButtonPDF: React.FC = () => { const location = useLocation(); const { studentsInfo, classLink } = location.state.updatedStudentCredentials; const linkRef = React.useRef(null); const downloadPdf = async (): Promise => { - const blob = await pdf().toBlob(); - const url = URL.createObjectURL(blob); + try { + const blob = await pdf( + + ).toBlob(); + const url = URL.createObjectURL(blob); - if (linkRef.current) { - linkRef.current.href = url; - linkRef.current.download = 'document.pdf'; - linkRef.current.click(); - URL.revokeObjectURL(url); + if (linkRef.current) { + linkRef.current.href = url; + linkRef.current.download = 'document.pdf'; + linkRef.current.click(); + URL.revokeObjectURL(url); + } + } catch (error) { + console.error(error); } }; @@ -88,7 +94,9 @@ const DownloadButtonPDF: React.FC = () => { <>
@@ -203,7 +203,7 @@ const StudentsTable: React.FC<{ }; const DebugComponent: React.FC = ({ accessCode }) => { - const { data, isLoading, error } = teachApi.useGetStudentsByAccessCodeQuery({ accessCode }); + const { data, isLoading, error } = useGetStudentsByAccessCodeQuery({ accessCode }); return (
diff --git a/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx b/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx index e7077411..41bf771d 100644 --- a/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx +++ b/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx @@ -6,11 +6,10 @@ import { CflHorizontalForm } from '../../../../../../components/form/CflForm'; import StudentNameField from '../../../../../../components/form/StudentNameField'; import CflPasswordFields from '../../../../../../features/cflPasswordFields/CflPasswordFields'; import { - useEditStudentPasswordMutation, + useEditStudentPasswordMutation } from '../../../../../../app/api'; import { useLocation, useNavigate } from 'react-router-dom'; import { paths } from '../../../../../../app/router'; -import teachApi from '../../../../../../app/api/teacher/teach'; const UpdateNameForm: React.FC<{ accessCode: string; }> = ({ accessCode }) => { @@ -24,7 +23,7 @@ const UpdateNameForm: React.FC<{ accessCode: string; }> = ({ accessCode }) => { name: '' }; - const [editStudentName] = teachApi.useEditStudentNameMutation(); + const [editStudentName] = useEditStudentPasswordMutation(); const navigate = useNavigate(); return ( Date: Wed, 4 Oct 2023 18:37:32 +0100 Subject: [PATCH 12/52] cleaning up --- .../pages/teacherDashboard/classes/Classes.tsx | 6 ------ .../classes/editClass/EditClass.tsx | 16 ---------------- 2 files changed, 22 deletions(-) diff --git a/frontend/src/pages/teacherDashboard/classes/Classes.tsx b/frontend/src/pages/teacherDashboard/classes/Classes.tsx index 7515c0b7..9f513ce8 100644 --- a/frontend/src/pages/teacherDashboard/classes/Classes.tsx +++ b/frontend/src/pages/teacherDashboard/classes/Classes.tsx @@ -37,12 +37,6 @@ const _YourClasses: React.FC = () => { can also accept or deny requests from independent students wanting to join one of your classes. - - -
-          {JSON.stringify(location, null, 2)}
-        
-
); }; diff --git a/frontend/src/pages/teacherDashboard/classes/editClass/EditClass.tsx b/frontend/src/pages/teacherDashboard/classes/editClass/EditClass.tsx index e3dd579e..b397b704 100644 --- a/frontend/src/pages/teacherDashboard/classes/editClass/EditClass.tsx +++ b/frontend/src/pages/teacherDashboard/classes/editClass/EditClass.tsx @@ -202,21 +202,6 @@ const StudentsTable: React.FC<{ ); }; -const DebugComponent: React.FC = ({ accessCode }) => { - const { data, isLoading, error } = useGetStudentsByAccessCodeQuery({ accessCode }); - return ( -
- - { - !isLoading - ? (error ? JSON.stringify(error, null, 2) : JSON.stringify(data)) - : null - } - - -
- ); -}; const EditClass: React.FC<{ accessCode: string; @@ -335,7 +320,6 @@ const EditClass: React.FC<{ your classes or to another teacher within your school or club, or remove students altogether. - From 90c0a09085abbf7ccacc9005df31c573434da900 Mon Sep 17 00:00:00 2001 From: KamilPawel Date: Wed, 4 Oct 2023 18:38:19 +0100 Subject: [PATCH 13/52] cleaning up --- .../classes/editClass/student/editStudent/EditStudent.tsx | 7 ------- 1 file changed, 7 deletions(-) diff --git a/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx b/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx index 41bf771d..eb209191 100644 --- a/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx +++ b/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx @@ -34,13 +34,9 @@ const UpdateNameForm: React.FC<{ accessCode: string; }> = ({ accessCode }) => { editStudentName({ name: values.name, studentId: studentId }) .unwrap() .then((response: any) => { - console.log(response); const path = location.pathname + location.search; - console.log(path); navigate(path, { - // pathname: location.pathname, - // search: location.search, state: { notifications: [ { index: 0, props: { children: 'You successfully updated your student details' } } @@ -53,11 +49,8 @@ const UpdateNameForm: React.FC<{ accessCode: string; }> = ({ accessCode }) => { .catch((error) => { console.error(error); const path = location.pathname + location.search; - console.log(path); navigate(path, { - // pathname: location.pathname, - // search: location.search, state: { notifications: [ { index: 0, props: { children: error.data.message } } From 8476f03ef97b3015b55731b71df4aa9ea74c8551 Mon Sep 17 00:00:00 2001 From: KamilPawel Date: Wed, 4 Oct 2023 18:40:25 +0100 Subject: [PATCH 14/52] cleaning up --- .../editClass/student/editStudent/EditStudent.tsx | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx b/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx index eb209191..1d72639c 100644 --- a/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx +++ b/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx @@ -6,13 +6,14 @@ import { CflHorizontalForm } from '../../../../../../components/form/CflForm'; import StudentNameField from '../../../../../../components/form/StudentNameField'; import CflPasswordFields from '../../../../../../features/cflPasswordFields/CflPasswordFields'; import { + useEditStudentNameMutation, useEditStudentPasswordMutation } from '../../../../../../app/api'; import { useLocation, useNavigate } from 'react-router-dom'; import { paths } from '../../../../../../app/router'; -const UpdateNameForm: React.FC<{ accessCode: string; }> = ({ accessCode }) => { +const UpdateNameForm: React.FC = () => { const location = useLocation(); const studentId = new URLSearchParams(location.search).get('studentIds') ?? ''; interface Values { @@ -23,7 +24,7 @@ const UpdateNameForm: React.FC<{ accessCode: string; }> = ({ accessCode }) => { name: '' }; - const [editStudentName] = useEditStudentPasswordMutation(); + const [editStudentName] = useEditStudentNameMutation(); const navigate = useNavigate(); return ( = ({ accessCode }) => { subheader="Remember this is the name they use to log in with, so you should tell them what you've changed it to." initialValues={initialValues} onSubmit={(values) => { - editStudentName({ name: values.name, studentId: studentId }) + editStudentName({ name: values.name, studentId }) .unwrap() .then((response: any) => { const path = location.pathname + location.search; @@ -128,8 +129,6 @@ const EditStudent: React.FC<{ goBack: () => void; }> = ({ accessCode, studentId, goBack }) => { const theme = useTheme(); - const location = useLocation(); - const resettingPassword = location.state?.updatedStudentCredentials; return ( <> @@ -149,7 +148,7 @@ const EditStudent: React.FC<{ - + From 07eb112ae012dc7ed99463f7f701eb31437c3399 Mon Sep 17 00:00:00 2001 From: KamilPawel Date: Wed, 4 Oct 2023 19:13:28 +0100 Subject: [PATCH 15/52] cleaning up --- backend/portal/urls/teacher/teach.py | 6 ------ backend/portal/views/teacher/teach.py | 2 +- .../newStudentsTable/NewStudentsTable.tsx | 19 +++++++++++++++---- .../editStudent/UpdatedStudentCredentials.tsx | 8 ++------ .../teacherOnboarding/ClassCredentials.tsx | 2 ++ 5 files changed, 20 insertions(+), 17 deletions(-) diff --git a/backend/portal/urls/teacher/teach.py b/backend/portal/urls/teacher/teach.py index aae05b2c..3dbc1a09 100644 --- a/backend/portal/urls/teacher/teach.py +++ b/backend/portal/urls/teacher/teach.py @@ -4,7 +4,6 @@ from ...views.teacher.teach import ( teacher_edit_class, teacher_edit_student, - teacher_download_csv, teacher_print_reminder_cards, ) @@ -20,11 +19,6 @@ teacher_edit_student, name="teacher_edit_student", ), - re_path( - rf"onboarding-class/(?P{ACCESS_CODE_REGEX})/download-csv/", - teacher_download_csv, - name="teacher_download_csv", - ), re_path( rf"onboarding-class/(?P{ACCESS_CODE_REGEX})/print-reminder-cards/", teacher_print_reminder_cards, diff --git a/backend/portal/views/teacher/teach.py b/backend/portal/views/teacher/teach.py index c9a681b8..29845350 100644 --- a/backend/portal/views/teacher/teach.py +++ b/backend/portal/views/teacher/teach.py @@ -1138,7 +1138,7 @@ def teacher_print_reminder_cards(request, access_code): # [student["name"], student["password"], student["login_url"]] # ) -# count_student_details_click(DownloadType.CSV) <-- implement this +# count_student_details_click(DownloadType.CSV) # <-- implement this # return response diff --git a/frontend/src/features/newStudentsTable/NewStudentsTable.tsx b/frontend/src/features/newStudentsTable/NewStudentsTable.tsx index 23db5126..df27f231 100644 --- a/frontend/src/features/newStudentsTable/NewStudentsTable.tsx +++ b/frontend/src/features/newStudentsTable/NewStudentsTable.tsx @@ -67,7 +67,11 @@ const DownloadButtonCSV: React.FC = () => { ); }; -const DownloadButtonPDF: React.FC = () => { +interface DownloadButtonPDFProps { + isButtonBanner?: boolean; +} + +export const DownloadButtonPDF: React.FC = ({ isButtonBanner }) => { const location = useLocation(); const { studentsInfo, classLink } = location.state.updatedStudentCredentials; const linkRef = React.useRef(null); @@ -89,15 +93,22 @@ const DownloadButtonPDF: React.FC = () => { console.error(error); } }; + const buttonStyles = isButtonBanner ? { + sx: { + border: '2px solid black', + '&:hover': { + border: '2px solid black', + }, + } + } : {}; return ( <> diff --git a/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/UpdatedStudentCredentials.tsx b/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/UpdatedStudentCredentials.tsx index 7c90c1fa..df848809 100644 --- a/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/UpdatedStudentCredentials.tsx +++ b/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/UpdatedStudentCredentials.tsx @@ -4,6 +4,7 @@ import Page from 'codeforlife/lib/esm/components/page'; import { Print } from '@mui/icons-material'; import { useLocation } from 'react-router-dom'; import { Box, Button, Typography } from '@mui/material'; +import { DownloadButtonPDF } from '../../../../../../features/newStudentsTable/NewStudentsTable'; const UpdatedStudentCredentials: React.FC = () => { const location = useLocation(); const accessCode: string = location.state?.updatedStudentCredentials.accessCode; @@ -27,12 +28,7 @@ const UpdatedStudentCredentials: React.FC = () => { This is the only time you will be able to view this page. You can print reminder cards or download as a CSV file. - + diff --git a/frontend/src/pages/teacherOnboarding/ClassCredentials.tsx b/frontend/src/pages/teacherOnboarding/ClassCredentials.tsx index 7a20c47f..4b15d985 100644 --- a/frontend/src/pages/teacherOnboarding/ClassCredentials.tsx +++ b/frontend/src/pages/teacherOnboarding/ClassCredentials.tsx @@ -11,6 +11,8 @@ import { import { paths } from '../../app/router'; import NewStudentsTable from '../../features/newStudentsTable/NewStudentsTable'; import { ResetStudentPasswordResponseProps } from '../../app/api/teacher/teach'; +// TODO: These variables are defined while we don't have the onboarding implemented. +// Once we have the onboarding implemented, we can remove these variables and fetch the data const ClassCredentials: React.FC = () => { const navigate = useNavigate(); const location = useLocation(); From 4d827986659197bd29daa3dc8c41b0671026bbb1 Mon Sep 17 00:00:00 2001 From: KamilPawel Date: Thu, 5 Oct 2023 16:44:52 +0100 Subject: [PATCH 16/52] comments #1 --- backend/portal/views/teacher/dashboard.py | 7 +- backend/portal/views/teacher/teach.py | 15 +- backend/service/settings.py | 2 +- frontend/.eslintrc.json | 19 +- frontend/src/app/api/teacher/teach.ts | 182 ++++-------------- frontend/src/app/schemas.ts | 4 +- .../src/components/form/StudentNameField.tsx | 2 +- .../newStudentsTable/NewStudentsTable.tsx | 18 +- frontend/src/pages/login/MyDocument.tsx | 10 +- .../classes/editClass/EditClass.tsx | 2 - .../student/editStudent/EditStudent.tsx | 24 ++- .../teacherOnboarding/ClassCredentials.tsx | 48 ++--- 12 files changed, 100 insertions(+), 233 deletions(-) diff --git a/backend/portal/views/teacher/dashboard.py b/backend/portal/views/teacher/dashboard.py index 9d1f99a0..b695979d 100644 --- a/backend/portal/views/teacher/dashboard.py +++ b/backend/portal/views/teacher/dashboard.py @@ -5,8 +5,8 @@ from django.contrib.auth import logout from django.contrib.auth.decorators import login_required, user_passes_test from django.contrib.auth.models import User -from django.core import serializers -from django.db.models import F, Value +from django.core.exceptions import ObjectDoesNotExist +from django.db.models import F from django.http import ( Http404, HttpResponse, @@ -96,9 +96,6 @@ def get_students_from_access_code(request, access_code): return JsonResponse({"students_per_access_code": students}) -from django.core.exceptions import ObjectDoesNotExist - - def get_student_details(request, student_id): student = get_object_or_404(Student, id=student_id) try: diff --git a/backend/portal/views/teacher/teach.py b/backend/portal/views/teacher/teach.py index c6c66cc8..52569294 100644 --- a/backend/portal/views/teacher/teach.py +++ b/backend/portal/views/teacher/teach.py @@ -617,12 +617,6 @@ def process_reset_password_form(request, student, password_form): "students_info": students_info, "onboarding_done": True, "query_data": students_info, # this field could be redundant - # "class_url": request.build_absolute_uri( - # reverse( - # "student_login", - # kwargs={"access_code": student.class_field.access_code}, - # ) - # ), } ) @@ -972,12 +966,10 @@ def expand_key(dictionary): return expanded +# TODO: this function had a method that adds the download PDF analytic, we should +# add it back in somewhere else at some point # @login_required(login_url=reverse_lazy("teacher_login")) # @user_passes_test(logged_in_as_teacher, login_url=reverse_lazy("teacher_login")) -from django.views.decorators.csrf import csrf_exempt - - -# @csrf_exempt # def teacher_print_reminder_cards(request, access_code): # response = HttpResponse(content_type="application/pdf") # response["Content-Disposition"] = 'filename="student_reminder_cards.pdf"' @@ -1085,11 +1077,10 @@ def expand_key(dictionary): # p.save() -# count_student_details_click(DownloadType.LOGIN_CARDS) +# count_student_details_click(DownloadType.LOGIN_CARDS) TODO: <--- this had to be implemented before deploying for data # return response -@csrf_exempt def teacher_print_reminder_cards(request, access_code): klass = get_object_or_404(Class, access_code=access_code) check_teacher_authorised(request, klass.teacher) diff --git a/backend/service/settings.py b/backend/service/settings.py index 3867c233..b4a9b0a8 100644 --- a/backend/service/settings.py +++ b/backend/service/settings.py @@ -58,7 +58,7 @@ "django.middleware.locale.LocaleMiddleware", "corsheaders.middleware.CorsMiddleware", "django.middleware.common.CommonMiddleware", - "django.middleware.csrf.CsrfViewMiddleware", + # "django.middleware.csrf.CsrfViewMiddleware", "deploy.middleware.security.CustomSecurityMiddleware", "whitenoise.middleware.WhiteNoiseMiddleware", "django.contrib.messages.middleware.MessageMiddleware", diff --git a/frontend/.eslintrc.json b/frontend/.eslintrc.json index 415a6bf2..af3eb103 100644 --- a/frontend/.eslintrc.json +++ b/frontend/.eslintrc.json @@ -3,27 +3,20 @@ "browser": false, // disable new browser session on yarn start "es2021": true }, - "extends": [ - "plugin:react/recommended", - "standard-with-typescript" - ], + "extends": ["plugin:react/recommended", "standard-with-typescript"], "overrides": [], "parserOptions": { "ecmaVersion": "latest", "sourceType": "module", "project": [ + "tsconfig.json", "frontend/tsconfig.json", "frontend/cypress/tsconfig.json" ] }, - "plugins": [ - "react" - ], + "plugins": ["react"], "rules": { - "@typescript-eslint/semi": [ - 2, - "always" - ], + "@typescript-eslint/semi": [2, "always"], "@typescript-eslint/member-delimiter-style": "off", "@typescript-eslint/space-before-function-paren": "off", "@typescript-eslint/no-invalid-void-type": "off", @@ -31,7 +24,5 @@ "@typescript-eslint/strict-boolean-expressions": "off", "@typescript-eslint/indent": "off" }, - "ignorePatterns": [ - "src/scripts/*.js" - ] + "ignorePatterns": ["src/scripts/*.js"] } diff --git a/frontend/src/app/api/teacher/teach.ts b/frontend/src/app/api/teacher/teach.ts index 61656a91..5d9ce9d8 100644 --- a/frontend/src/app/api/teacher/teach.ts +++ b/frontend/src/app/api/teacher/teach.ts @@ -12,10 +12,6 @@ export interface studentPerAccessCode { blockedTime: string; } -interface getStudentsByAccessCodeProps { - studentsPerAccessCode: studentPerAccessCode[]; -} - const teachApi = api.injectEndpoints({ endpoints: (build) => ({ teacherHas2fa: build.query<{ has2fa: boolean }, null>({ @@ -32,9 +28,6 @@ const teachApi = api.injectEndpoints({ }), getClass: build.query< { - // blockly_episodes - // python_episodes - // locked_levels class: { name: string; classmateProgress: boolean; @@ -54,7 +47,9 @@ const teachApi = api.injectEndpoints({ ] }), getStudentsByAccessCode: build.query< - getStudentsByAccessCodeProps, + { + studentsPerAccessCode: studentPerAccessCode[]; + }, { accessCode: string } >({ query: ({ accessCode }) => ({ @@ -65,6 +60,17 @@ const teachApi = api.injectEndpoints({ { type: 'student', id: accessCode } ] }), + getStudent: build.query< + { + student: studentPerAccessCode; + }, + { studentId: string } + >({ + query: ({ studentId }) => ({ + url: `class/student/${studentId}/`, + method: 'GET' + }) + }), updateClass: build.mutation< null, { @@ -89,69 +95,10 @@ const teachApi = api.injectEndpoints({ { type: 'class', id: accessCode } ] }), - deleteClass: build.mutation({ - query: ({ accessCode, ...body }) => ({ - url: `teach/class/delete/${accessCode}`, - method: 'POST', - body, - headers: { - 'Content-Type': 'application/x-www-form-urlencoded' - } - }), - invalidatesTags: ['teacher'] - }), - moveClass: build.mutation< - void, + editStudentPassword: build.mutation< { accessCode: string; - teacherId: string; - } - >({ - query: (body) => ({ - url: 'teach/move_class/', - method: 'POST', - body, - headers: { - 'Content-Type': 'application/x-www-form-urlencoded' - } - }), - invalidatesTags: ['teacher'] - }) - }) -}); - -export default teachApi; -export const { - useGetClassQuery, - useGetStudentsByAccessCodeQuery, - useUpdateClassMutation, - useDeleteClassMutation, - useMoveClassMutation, - useTeacherHas2faQuery, - useDisable2faMutation -} = teachApi; -import api from '../api'; - -interface StudentInfo { - id: number; - name: string; - password: string; - loginUrl: string; -} - -export interface ResetStudentPasswordResponseProps { - class: string; - studentsInfo: StudentInfo[]; - onboardingDone: boolean; - queryData: StudentInfo[]; - classUrl: string; - accessCode: string; -} - -const teachApi = api.injectEndpoints({ - endpoints: (build) => ({ - editStudentPassword: build.mutation< - ResetStudentPasswordResponseProps, + }, { studentId: string; password: string; @@ -188,97 +135,32 @@ const teachApi = api.injectEndpoints({ } }) }), - getClass: build.query< - { - // blockly_episodes - // python_episodes - // locked_levels - class: { - name: string; - classmateProgress: boolean; - }; - externalRequestsMessage: string; - }, - { - accessCode: string; - } - >({ - query: ({ accessCode }) => ({ - url: `teach/class/edit/${accessCode}`, - method: 'GET' - }), - providesTags: (result, error, { accessCode }) => [ - { type: 'class', id: accessCode } - ] - }), - getStudentsByAccessCode: build.query< - { - studentsPerAccessCode: Array<{ - id: number; - classField: number; - newUser: { - id: number; - firstName: string; - lastName: string; - }; - pendingClassRequest: number; - blockedTime: string; - }>; - }, - { accessCode: string } // Specify the input type - >({ + deleteClass: build.mutation({ query: ({ accessCode }) => ({ - url: `class/students/${accessCode}/`, - method: 'GET' + url: `teach/class/delete/${accessCode}`, + method: 'POST', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + } }), - providesTags: (result, error, { accessCode }) => [ - { type: 'student', id: accessCode } - ] - }), - getStudent: build.query< - { - student: { - id: number; - classField: number; - newUser: { - id: number; - firstName: string; - lastName: string; - }; - pendingClassRequest: number; - blockedTime: string | null; - }; - }, - { studentId: string } // Specify the input type - >({ - query: ({ studentId }) => ({ - url: `class/student/${studentId}/`, - method: 'GET' - }) + invalidatesTags: ['teacher'] }), - updateClass: build.mutation< - null, + moveClass: build.mutation< + void, { accessCode: string; - classEditSubmit?: boolean; - levelControlSubmit?: boolean; - classMoveSubmit?: boolean; - name: string; - classmateProgress: boolean; - externalRequests: string; + teacherId: string; } >({ - query: ({ accessCode, ...body }) => ({ - url: `teach/class/edit/${accessCode}`, + query: (body) => ({ + url: 'teach/move_class/', method: 'POST', body, headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }), - invalidatesTags: (result, error, { accessCode }) => [ - { type: 'class', id: accessCode } - ] + invalidatesTags: ['teacher'] }), getReminderCards: build.mutation({ query: ({ accessCode, data }) => ({ @@ -303,5 +185,9 @@ export const { useEditStudentPasswordMutation, useGetReminderCardsMutation, useGetStudentsByAccessCodeQuery, - useGetStudentQuery + useGetStudentQuery, + useTeacherHas2faQuery, + useDeleteClassMutation, + useMoveClassMutation, + useDisable2faMutation } = teachApi; diff --git a/frontend/src/app/schemas.ts b/frontend/src/app/schemas.ts index 4daa47f4..72f274bd 100644 --- a/frontend/src/app/schemas.ts +++ b/frontend/src/app/schemas.ts @@ -1,4 +1,6 @@ import * as yup from 'yup'; -export const accessCodeSchema = yup.string() +export const accessCodeSchema = yup + .string() + .required() .matches(/^[A-Z0-9]{5}$/, 'Invalid access code'); diff --git a/frontend/src/components/form/StudentNameField.tsx b/frontend/src/components/form/StudentNameField.tsx index 9697f7f2..be65097d 100644 --- a/frontend/src/components/form/StudentNameField.tsx +++ b/frontend/src/components/form/StudentNameField.tsx @@ -12,7 +12,7 @@ const StudentNameField: React.FC & { name = 'name', helperText = 'Choose a name', disabled = false, - style, + style }) => { return ( = ({ isButtonBa console.error(error); } }; - const buttonStyles = isButtonBanner ? { - sx: { - border: '2px solid black', - '&:hover': { + const buttonStyles = !isButtonBanner + ? {} + : { + sx: { border: '2px solid black', - }, - } - } : {}; + '&:hover': { + border: '2px solid black' + } + } + }; return ( <> @@ -227,7 +229,7 @@ const NewStudentsTable: React.FC = ({ students }) => { Class link: - {classLink} {'lol'} + {classLink}
@@ -240,7 +239,6 @@ const StudentsTable: React.FC<{ ); }; - const EditClass: React.FC<{ accessCode: string; }> = ({ accessCode }) => { diff --git a/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx b/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx index 1d72639c..8613dfa4 100644 --- a/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx +++ b/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx @@ -7,12 +7,12 @@ import StudentNameField from '../../../../../../components/form/StudentNameField import CflPasswordFields from '../../../../../../features/cflPasswordFields/CflPasswordFields'; import { useEditStudentNameMutation, - useEditStudentPasswordMutation + useEditStudentPasswordMutation, + useGetStudentsByAccessCodeQuery } from '../../../../../../app/api'; import { useLocation, useNavigate } from 'react-router-dom'; import { paths } from '../../../../../../app/router'; - const UpdateNameForm: React.FC = () => { const location = useLocation(); const studentId = new URLSearchParams(location.search).get('studentIds') ?? ''; @@ -70,9 +70,14 @@ const UpdateNameForm: React.FC = () => { ); }; + +interface ResponseData { + access_code: string; +} const UpdatePasswordForm: React.FC = () => { const [editStudentPassword] = useEditStudentPasswordMutation(); const location = useLocation(); + console.log(location); const studentId = new URLSearchParams(location.search).get('studentIds') ?? ''; interface Values { password: string; @@ -81,15 +86,14 @@ const UpdatePasswordForm: React.FC = () => { const initialValues: Values = { password: '', - confirmPassword: '', + confirmPassword: '' }; const navigate = useNavigate(); - const handleSubmit: (values: Values) => void = (values) => { editStudentPassword({ password: values.password, studentId, - confirmPassword: values.confirmPassword, + confirmPassword: values.confirmPassword }) .unwrap() .then((response) => { @@ -129,6 +133,14 @@ const EditStudent: React.FC<{ goBack: () => void; }> = ({ accessCode, studentId, goBack }) => { const theme = useTheme(); + // use cache to get student name + const { students } = useGetStudentsByAccessCodeQuery({ accessCode: '' }, { + selectFromResult: ({ data }) => ({ + students: data?.studentsPerAccessCode + }) + }); + const findCurrentStudent = students?.find((student) => student.id === studentId); + const studentName = findCurrentStudent?.newUser.firstName; return ( <> @@ -138,7 +150,7 @@ const EditStudent: React.FC<{ variant="h4" marginBottom={theme.spacing(11.5)} > - Edit student details for Florian from class Class 1 ({accessCode}) + Edit student details for {studentName} from class Class 1 ({accessCode}) Class diff --git a/frontend/src/pages/teacherOnboarding/ClassCredentials.tsx b/frontend/src/pages/teacherOnboarding/ClassCredentials.tsx index 4b15d985..245bd173 100644 --- a/frontend/src/pages/teacherOnboarding/ClassCredentials.tsx +++ b/frontend/src/pages/teacherOnboarding/ClassCredentials.tsx @@ -7,41 +7,31 @@ import { import { Check as CheckIcon, ChevronLeftOutlined } from '@mui/icons-material'; - -import { paths } from '../../app/router'; -import NewStudentsTable from '../../features/newStudentsTable/NewStudentsTable'; -import { ResetStudentPasswordResponseProps } from '../../app/api/teacher/teach'; // TODO: These variables are defined while we don't have the onboarding implemented. // Once we have the onboarding implemented, we can remove these variables and fetch the data +// TODO: Once the onboarding is implemented, we can remove this if statement. +// as well as re-defined variables above. We can just fetch the data from the useLocation hook. +import { paths } from '../../app/router'; +import NewStudentsTable from '../../features/newStudentsTable/NewStudentsTable'; + const ClassCredentials: React.FC = () => { const navigate = useNavigate(); const location = useLocation(); - const studentData = location.state as { updatedStudentCredentials: ResetStudentPasswordResponseProps; }; - let buttonText = 'Complete setup'; - let name = 'John'; - let password = 'very_good_password'; - let classLink = 'https://www.codeforlife.education/'; - let directLoginLink = 'https://www.codeforlife.education/'; - let alignItems = 'end'; - let startIcon = <>; - let endIcon = ; - let path = paths.teacher.dashboard.school._; - // TODO: Once the onboarding is implemented, we can remove this if statement. - // as well as re-defined variables above. We can just fetch the data from the useLocation hook. - if (studentData) { - const { studentsInfo } = studentData.updatedStudentCredentials; - name = studentsInfo[0].name; - password = studentsInfo[0].password; - classLink = studentData.updatedStudentCredentials.classUrl; - directLoginLink = studentsInfo[0].loginUrl; - alignItems = 'start'; - startIcon = ; - endIcon = <>; - path = paths.teacher.dashboard.classes._; - buttonText = 'Back to class'; - } + const studentData = location?.state; + + const isStudentDataPresent = Boolean(studentData); + const { studentsInfo } = studentData?.updatedStudentCredentials || {}; + + const name = isStudentDataPresent ? studentsInfo[0].name : 'John'; + const password = isStudentDataPresent ? studentsInfo[0].password : 'very_good_password'; + const classLink = isStudentDataPresent ? studentData.updatedStudentCredentials.classUrl : 'https://www.codeforlife.education/'; + const directLoginLink = isStudentDataPresent ? studentsInfo[0].loginUrl : 'https://www.codeforlife.education/'; + const alignItems = isStudentDataPresent ? 'start' : 'end'; + const startIcon = isStudentDataPresent ? : <>; + const endIcon = isStudentDataPresent ? <> : ; + const path = isStudentDataPresent ? paths.teacher.dashboard.classes._ : paths.teacher.dashboard.school._; + const buttonText = isStudentDataPresent ? 'Back to class' : 'Complete setup'; - // TODO: get from API. const students: Array<{ name: string; password: string; From ba5ad1b7d6009519b2e10a803bf14f0a8c1033b0 Mon Sep 17 00:00:00 2001 From: KamilPawel Date: Thu, 5 Oct 2023 16:57:14 +0100 Subject: [PATCH 17/52] comments #2 --- .../classes/editClass/student/editStudent/EditStudent.tsx | 3 --- 1 file changed, 3 deletions(-) diff --git a/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx b/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx index 8613dfa4..a40ca4bd 100644 --- a/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx +++ b/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx @@ -71,9 +71,6 @@ const UpdateNameForm: React.FC = () => { }; -interface ResponseData { - access_code: string; -} const UpdatePasswordForm: React.FC = () => { const [editStudentPassword] = useEditStudentPasswordMutation(); const location = useLocation(); From 6e2644fe5be2e7345e2383fbd8699be59079bbdb Mon Sep 17 00:00:00 2001 From: KamilPawel Date: Thu, 5 Oct 2023 17:01:39 +0100 Subject: [PATCH 18/52] comments #2 --- frontend/.eslintrc.json | 6 +----- frontend/src/components/TableOfContents.tsx | 5 ++--- frontend/src/pages/privacyNotice/ForAdults/HowWeUseInfo.tsx | 3 +-- .../classes/editClass/student/editStudent/EditStudent.tsx | 1 - .../student/editStudent/UpdatedStudentCredentials.tsx | 3 +-- 5 files changed, 5 insertions(+), 13 deletions(-) diff --git a/frontend/.eslintrc.json b/frontend/.eslintrc.json index af3eb103..dab46480 100644 --- a/frontend/.eslintrc.json +++ b/frontend/.eslintrc.json @@ -8,11 +8,7 @@ "parserOptions": { "ecmaVersion": "latest", "sourceType": "module", - "project": [ - "tsconfig.json", - "frontend/tsconfig.json", - "frontend/cypress/tsconfig.json" - ] + "project": ["frontend/tsconfig.json", "frontend/cypress/tsconfig.json"] }, "plugins": ["react"], "rules": { diff --git a/frontend/src/components/TableOfContents.tsx b/frontend/src/components/TableOfContents.tsx index ba4ca599..34b13807 100644 --- a/frontend/src/components/TableOfContents.tsx +++ b/frontend/src/components/TableOfContents.tsx @@ -4,12 +4,11 @@ import { Typography, Stack, Divider, - Link, - Box + Link } from '@mui/material'; export interface TableOfContentsProps { - contents: Array<{ header: string, element: React.ReactElement }>; + contents: Array<{ header: string, element: React.ReactElement; }>; } export const ids = { diff --git a/frontend/src/pages/privacyNotice/ForAdults/HowWeUseInfo.tsx b/frontend/src/pages/privacyNotice/ForAdults/HowWeUseInfo.tsx index 711211d7..fe1106b9 100644 --- a/frontend/src/pages/privacyNotice/ForAdults/HowWeUseInfo.tsx +++ b/frontend/src/pages/privacyNotice/ForAdults/HowWeUseInfo.tsx @@ -6,7 +6,6 @@ import { TableBody, TableRow, TableCell, - tableCellClasses, ListItemText } from '@mui/material'; @@ -14,7 +13,7 @@ import { ItemizedList } from 'codeforlife/lib/esm/components'; const CustomTableRow: React.FC<{ left: string, - right: any + right: any; }> = ({ left, right }) => ( diff --git a/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx b/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx index a40ca4bd..e7111eb6 100644 --- a/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx +++ b/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx @@ -70,7 +70,6 @@ const UpdateNameForm: React.FC = () => { ); }; - const UpdatePasswordForm: React.FC = () => { const [editStudentPassword] = useEditStudentPasswordMutation(); const location = useLocation(); diff --git a/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/UpdatedStudentCredentials.tsx b/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/UpdatedStudentCredentials.tsx index df848809..e1ac66b0 100644 --- a/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/UpdatedStudentCredentials.tsx +++ b/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/UpdatedStudentCredentials.tsx @@ -1,9 +1,8 @@ import React from 'react'; import ClassCredentials from '../../../../../teacherOnboarding/ClassCredentials'; import Page from 'codeforlife/lib/esm/components/page'; -import { Print } from '@mui/icons-material'; import { useLocation } from 'react-router-dom'; -import { Box, Button, Typography } from '@mui/material'; +import { Box, Typography } from '@mui/material'; import { DownloadButtonPDF } from '../../../../../../features/newStudentsTable/NewStudentsTable'; const UpdatedStudentCredentials: React.FC = () => { const location = useLocation(); From fbf68dc7a179a4f366643ec2b86877a18da23117 Mon Sep 17 00:00:00 2001 From: KamilPawel Date: Thu, 5 Oct 2023 17:02:31 +0100 Subject: [PATCH 19/52] comments #2 --- .../student/editStudent/UpdatedStudentCredentials.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/UpdatedStudentCredentials.tsx b/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/UpdatedStudentCredentials.tsx index e1ac66b0..37c0412b 100644 --- a/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/UpdatedStudentCredentials.tsx +++ b/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/UpdatedStudentCredentials.tsx @@ -10,9 +10,9 @@ const UpdatedStudentCredentials: React.FC = () => { const className: string = location.state?.updatedStudentCredentials.class; return + header='Class and class access code:' /> Date: Thu, 5 Oct 2023 17:18:23 +0100 Subject: [PATCH 20/52] comments #3 --- frontend/src/app/api/api.ts | 2 +- .../classes/editClass/EditClass.tsx | 1 + .../student/editStudent/EditStudent.tsx | 2 +- frontend/yarn.lock | 270 +++++++++--------- 4 files changed, 137 insertions(+), 138 deletions(-) diff --git a/frontend/src/app/api/api.ts b/frontend/src/app/api/api.ts index 60d656f4..b5021378 100644 --- a/frontend/src/app/api/api.ts +++ b/frontend/src/app/api/api.ts @@ -37,7 +37,7 @@ const baseQuery: FetchBaseQuery = async (args, api, extraOptions) => { extraOptions ); - handleResponseError(result); + // handleResponseError(result); parseResponseBody(result); diff --git a/frontend/src/pages/teacherDashboard/classes/editClass/EditClass.tsx b/frontend/src/pages/teacherDashboard/classes/editClass/EditClass.tsx index 46423f17..99eb11da 100644 --- a/frontend/src/pages/teacherDashboard/classes/editClass/EditClass.tsx +++ b/frontend/src/pages/teacherDashboard/classes/editClass/EditClass.tsx @@ -249,6 +249,7 @@ const EditClass: React.FC<{ const { data } = useGetStudentsByAccessCodeQuery({ accessCode }); const studentData = data?.studentsPerAccessCode; + const params = tryValidateSync( useParams(), yup.object({ diff --git a/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx b/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx index e7111eb6..35e4ef91 100644 --- a/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx +++ b/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx @@ -130,7 +130,7 @@ const EditStudent: React.FC<{ }> = ({ accessCode, studentId, goBack }) => { const theme = useTheme(); // use cache to get student name - const { students } = useGetStudentsByAccessCodeQuery({ accessCode: '' }, { + const { students } = useGetStudentsByAccessCodeQuery({ accessCode }, { selectFromResult: ({ data }) => ({ students: data?.studentsPerAccessCode }) diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 73c0178a..03c87633 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -1111,7 +1111,7 @@ resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime@^7.11.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.13", "@babel/runtime@^7.20.7", "@babel/runtime@^7.22.15", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.11.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.13", "@babel/runtime@^7.20.7", "@babel/runtime@^7.23.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": version "7.23.1" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.1.tgz#72741dc4d413338a91dcb044a86f3c0bc402646d" integrity sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g== @@ -1465,9 +1465,9 @@ eslint-visitor-keys "^3.3.0" "@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": - version "4.9.0" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.9.0.tgz#7ccb5f58703fa61ffdcbf39e2c604a109e781162" - integrity sha512-zJmuCWj2VLBt4c25CfBIbMZLGLyhkvs7LznyVX5HfpzeocThgIj5XQK4L+g3U36mMcx8bPMhGyPpwCATamC4jQ== + version "4.9.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.9.1.tgz#449dfa81a57a1d755b09aa58d826c1262e4283b4" + integrity sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA== "@eslint/eslintrc@^2.1.2": version "2.1.2" @@ -1512,9 +1512,9 @@ "@floating-ui/dom" "^1.5.1" "@floating-ui/utils@^0.1.3": - version "0.1.4" - resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.1.4.tgz#19654d1026cc410975d46445180e70a5089b3e7d" - integrity sha512-qprfWkn82Iw821mcKofJ5Pk9wgioHicxcQMxx+5zt5GSKoqdWvgG5AxVmpmUUjzTLPVSH5auBrhI93Deayn/DA== + version "0.1.6" + resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.1.6.tgz#22958c042e10b67463997bd6ea7115fe28cbcaf9" + integrity sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A== "@humanwhocodes/config-array@^0.11.11": version "0.11.11" @@ -1819,42 +1819,42 @@ call-me-maybe "^1.0.1" glob-to-regexp "^0.3.0" -"@mui/base@5.0.0-beta.17": - version "5.0.0-beta.17" - resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-beta.17.tgz#98b7ef6a3176b7aaf59ac8862d3271acb6876bc0" - integrity sha512-xNbk7iOXrglNdIxFBN0k3ySsPIFLWCnFxqsAYl7CIcDkD9low4kJ7IUuy6ctwx/HAy2fenrT3KXHr1sGjAMgpQ== +"@mui/base@5.0.0-beta.18": + version "5.0.0-beta.18" + resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-beta.18.tgz#f95d393cf80974e77c0823170cc15c854d5af84b" + integrity sha512-e9ZCy/ndhyt5MTshAS3qAUy/40UiO0jX+kAo6a+XirrPJE+rrQW+mKPSI0uyp+5z4Vh+z0pvNoJ2S2gSrNz3BQ== dependencies: - "@babel/runtime" "^7.22.15" + "@babel/runtime" "^7.23.1" "@floating-ui/react-dom" "^2.0.2" - "@mui/types" "^7.2.4" - "@mui/utils" "^5.14.11" + "@mui/types" "^7.2.5" + "@mui/utils" "^5.14.12" "@popperjs/core" "^2.11.8" clsx "^2.0.0" prop-types "^15.8.1" -"@mui/core-downloads-tracker@^5.14.11": - version "5.14.11" - resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.11.tgz#e829aceb5c0bbfc3383ed90a6a85445344dd65a7" - integrity sha512-uY8FLQURhXe3f3O4dS5OSGML9KDm9+IE226cBu78jarVIzdQGPlXwGIlSI9VJR8MvZDA6C0+6XfWDhWCHruC5Q== +"@mui/core-downloads-tracker@^5.14.12": + version "5.14.12" + resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.12.tgz#7be13094ef0c2fc7c3854da2b90a7eae456ebefd" + integrity sha512-WZhCkKqhrXaSVBzoC6LNcVkIawS000OOt7gmnp4g9HhyvN0PSclRXc/JrkC7EwfzUAZJh+hiK2LaVsbtOpNuOg== "@mui/icons-material@^5.11.11", "@mui/icons-material@^5.4.1": - version "5.14.11" - resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-5.14.11.tgz#ce563d1b6c7abc76f8a8048c970135601e7b49b5" - integrity sha512-aHReLasBuS/+hhPzbZCgZ0eTcZ2QRnoC2WNK7XvdAf3l+LjC1flzjh6GWw1tZJ5NHnZ+bivdwtLFQ8XTR96JkA== + version "5.14.12" + resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-5.14.12.tgz#6634cdc3198bc438e8d38ce591c96d63d5df99a0" + integrity sha512-aFm6g/AIB3RQN9h/4MKoBoBybLZXeR3aDHWNx6KzemEpIlElUxv5uXRX5Qk1VC6v/YPkhbaPsiLLjsRSTiZF3w== dependencies: - "@babel/runtime" "^7.22.15" + "@babel/runtime" "^7.23.1" "@mui/material@^5.11.12", "@mui/material@^5.4.1": - version "5.14.11" - resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.14.11.tgz#7537f07c383a6cfa32a00fabc9959593478bc5c4" - integrity sha512-DnSdJzcR7lwG12JA5L2t8JF+RDzMygu5rCNW+logWb/KW2/TRzwLyVWO+CorHTBjBRd38DBxnwOCDiYkDd+N3A== - dependencies: - "@babel/runtime" "^7.22.15" - "@mui/base" "5.0.0-beta.17" - "@mui/core-downloads-tracker" "^5.14.11" - "@mui/system" "^5.14.11" - "@mui/types" "^7.2.4" - "@mui/utils" "^5.14.11" + version "5.14.12" + resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.14.12.tgz#8fa5bebd1a096796a288b548f1ba867e068601c8" + integrity sha512-EelF2L46VcVqhg3KjzIGBBpOtcBgRh0MMy9Efuk6Do81QdcZsFC9RebCVAflo5jIdbHiBmxBs5/l5Q9NjONozg== + dependencies: + "@babel/runtime" "^7.23.1" + "@mui/base" "5.0.0-beta.18" + "@mui/core-downloads-tracker" "^5.14.12" + "@mui/system" "^5.14.12" + "@mui/types" "^7.2.5" + "@mui/utils" "^5.14.12" "@types/react-transition-group" "^4.4.6" clsx "^2.0.0" csstype "^3.1.2" @@ -1862,51 +1862,51 @@ react-is "^18.2.0" react-transition-group "^4.4.5" -"@mui/private-theming@^5.14.11": - version "5.14.11" - resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.14.11.tgz#1543b4d13d5cb32018c5bd41b516db1c33f70344" - integrity sha512-MSnNNzTu9pfKLCKs1ZAKwOTgE4bz+fQA0fNr8Jm7NDmuWmw0CaN9Vq2/MHsatE7+S0A25IAKby46Uv1u53rKVQ== +"@mui/private-theming@^5.14.12": + version "5.14.12" + resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.14.12.tgz#b07f710b9794c928052ee4c91bf67fc3e0a442ea" + integrity sha512-TWwm+9+BgHFpoR3w04FG+IqID4ALa74A27RuKq2CEaWgxliBZB24EVeI6djfjFt5t4FYmIb8BMw2ZJEir7YjLQ== dependencies: - "@babel/runtime" "^7.22.15" - "@mui/utils" "^5.14.11" + "@babel/runtime" "^7.23.1" + "@mui/utils" "^5.14.12" prop-types "^15.8.1" -"@mui/styled-engine@^5.14.11": - version "5.14.11" - resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.14.11.tgz#22cb0047f211be4dbc133a5d1015369293bdff00" - integrity sha512-jdUlqRgTYQ8RMtPX4MbRZqar6W2OiIb6J5KEFbIu4FqvPrk44Each4ppg/LAqp1qNlBYq5i+7Q10MYLMpDxX9A== +"@mui/styled-engine@^5.14.12": + version "5.14.12" + resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.14.12.tgz#bfacc045f14f8f8bef735c76ecfd90bc99427c43" + integrity sha512-bocxt1nDmXfB3gpLfCCmFCyJ7sVmscFs+PuheO210QagZwHVp47UIRT1AiswLDYSQo1ZqmVGn7KLEJEYK0d4Xw== dependencies: - "@babel/runtime" "^7.22.15" + "@babel/runtime" "^7.23.1" "@emotion/cache" "^11.11.0" csstype "^3.1.2" prop-types "^15.8.1" -"@mui/system@^5.14.11", "@mui/system@^5.4.1": - version "5.14.11" - resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.14.11.tgz#4f3aaf3e3d6d039e41a60f939056aa5fd371d291" - integrity sha512-yl8xV+y0k7j6dzBsHabKwoShmjqLa8kTxrhUI3JpqLG358VRVMJRW/ES0HhvfcCi4IVXde+Tc2P3K1akGL8zoA== +"@mui/system@^5.14.12", "@mui/system@^5.4.1": + version "5.14.12" + resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.14.12.tgz#da5b32c2a10bbe58f8b4839c5d5de449dc35e425" + integrity sha512-6DXfjjLhW0/ia5qU3Crke7j+MnfDbMBOHlLIrqbrEqNs0AuSBv8pXniEGb+kqO0H804NJreRTEJRjCngwOX5CA== dependencies: - "@babel/runtime" "^7.22.15" - "@mui/private-theming" "^5.14.11" - "@mui/styled-engine" "^5.14.11" - "@mui/types" "^7.2.4" - "@mui/utils" "^5.14.11" + "@babel/runtime" "^7.23.1" + "@mui/private-theming" "^5.14.12" + "@mui/styled-engine" "^5.14.12" + "@mui/types" "^7.2.5" + "@mui/utils" "^5.14.12" clsx "^2.0.0" csstype "^3.1.2" prop-types "^15.8.1" -"@mui/types@^7.2.4": - version "7.2.4" - resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.2.4.tgz#b6fade19323b754c5c6de679a38f068fd50b9328" - integrity sha512-LBcwa8rN84bKF+f5sDyku42w1NTxaPgPyYKODsh01U1fVstTClbUoSA96oyRBnSNyEiAVjKm6Gwx9vjR+xyqHA== +"@mui/types@^7.2.5": + version "7.2.5" + resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.2.5.tgz#cd62a1fc5eb1044137ccab2053b431dd7cfc3cb8" + integrity sha512-S2BwfNczr7VwS6ki8GoAXJyARoeSJDLuxOEPs3vEMyTALlf9PrdHv+sluX7kk3iKrCg/ML2mIWwapZvWbkMCQA== -"@mui/utils@^5.14.11": - version "5.14.11" - resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.14.11.tgz#d19a1d8725ffd16c6c6817f00b5172931958fb9a" - integrity sha512-fmkIiCPKyDssYrJ5qk+dime1nlO3dmWfCtaPY/uVBqCRMBZ11JhddB9m8sjI2mgqQQwRJG5bq3biaosNdU/s4Q== +"@mui/utils@^5.14.12": + version "5.14.12" + resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.14.12.tgz#58b570839e22e0fba71e17d37d9c083fe233704d" + integrity sha512-RFNXnhKQlzIkIUig6mmv0r5VbtjPdWoaBPYicq25LETdZux59HAqoRdWw15T7lp3c7gXOoE8y67+hTB8C64m2g== dependencies: - "@babel/runtime" "^7.22.15" - "@types/prop-types" "^15.7.5" + "@babel/runtime" "^7.23.1" + "@types/prop-types" "^15.7.7" prop-types "^15.8.1" react-is "^18.2.0" @@ -2143,9 +2143,9 @@ "@babel/runtime" "^7.20.13" "@reduxjs/toolkit@^1.9.3": - version "1.9.6" - resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-1.9.6.tgz#fc968b45fe5b17ff90932c4556960d9c1078365a" - integrity sha512-Gc4ikl90ORF4viIdAkY06JNUnODjKfGxZRwATM30EdHq8hLSVoSrwXne5dd739yenP5bJxAX7tLuOWK5RPGtrw== + version "1.9.7" + resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-1.9.7.tgz#7fc07c0b0ebec52043f8cb43510cf346405f78a6" + integrity sha512-t7v8ZPxhhKgOKtU+uyJT13lu4vL7az5aFi4IdoDs/eS548edn2M8Ik9h8fxgvMjGoAUVFSt6ZC1P5cWmQ014QQ== dependencies: immer "^9.0.21" redux "^4.2.1" @@ -2195,9 +2195,9 @@ picomatch "^2.2.2" "@rushstack/eslint-patch@^1.1.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.5.0.tgz#5143b0da9c536bfe8beddfeb68bb8b5d647cc7a3" - integrity sha512-EF3948ckf3f5uPgYbQ6GhyA56Dmv8yg0+ir+BroRjwdxyZJsekhZzawOecC2rOTPCz173t7ZcR1HHZu0dZgOCw== + version "1.5.1" + resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.5.1.tgz#5f1b518ec5fa54437c0b7c4a821546c64fed6922" + integrity sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA== "@sinclair/typebox@^0.24.1": version "0.24.51" @@ -2545,14 +2545,14 @@ integrity sha512-Ys+/St+2VF4+xuY6+kDIXGxbNRO0mesVg0bbxEfB97Od1Vjpjx9KD1qxs64Gcb3CWPirk9Xe+PT4YiiHQ9T+eg== "@types/node@*": - version "20.7.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.7.1.tgz#06d732ead0bd5ad978ef0ea9cbdeb24dc8717514" - integrity sha512-LT+OIXpp2kj4E2S/p91BMe+VgGX2+lfO+XTpfXhh+bCk2LkQtHZSub8ewFBMGP5ClysPjTDFa4sMI8Q3n4T0wg== + version "20.8.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.2.tgz#d76fb80d87d0d8abfe334fc6d292e83e5524efc4" + integrity sha512-Vvycsc9FQdwhxE3y3DzeIxuEJbWGDsnrxvMADzTDF/lcdR9/K+AQIeAghTQsHtotg/q0j3WEOYS/jQgSdWue3w== "@types/node@^16.18.39": - version "16.18.54" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.54.tgz#4a63bdcea5b714f546aa27406a1c60621236a132" - integrity sha512-oTmGy68gxZZ21FhTJVVvZBYpQHEBZxHKTsGshobMqm9qWpbqdZsA5jvsuPZcHu0KwpmLrOHWPdEfg7XDpNT9UA== + version "16.18.57" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.57.tgz#1ba31c0e5c403aab90a3b7826576e6782ded779b" + integrity sha512-piPoDozdPaX1hNWFJQzzgWqE40gh986VvVx/QO9RU4qYRE55ld7iepDVgZ3ccGUw0R4wge0Oy1dd+3xOQNkkUQ== "@types/node@^17.0.45": version "17.0.45" @@ -2576,10 +2576,10 @@ resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== -"@types/prop-types@*", "@types/prop-types@^15.7.5": - version "15.7.7" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.7.tgz#f9361f7b87fd5d8188b2c998db0a1f47e9fb391a" - integrity sha512-FbtmBWCcSa2J4zL781Zf1p5YUBXQomPEcep9QZCfRfQgTxz3pJWiDFLebohZ9fFntX5ibzOkSsrJ0TEew8cAog== +"@types/prop-types@*", "@types/prop-types@^15.7.7": + version "15.7.8" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.8.tgz#805eae6e8f41bd19e88917d2ea200dc992f405d3" + integrity sha512-kMpQpfZKSCBqltAJwskgePRaYRFukDkm1oItcAbC3gNELR20XIBcN9VRgg4+m8DKsTfkWeA4m4Imp4DDuWy7FQ== "@types/q@^1.5.1": version "1.5.6" @@ -2604,9 +2604,9 @@ "@types/react" "*" "@types/react-dom@^18.0.11": - version "18.2.8" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.8.tgz#338f1b0a646c9f10e0a97208c1d26b9f473dffd6" - integrity sha512-bAIvO5lN/U8sPGvs1Xm61rlRHHaq5rp5N3kp9C+NJ/Q41P8iqjkXSu0+/qu8POsjH9pNWb0OYabFez7taP7omw== + version "18.2.10" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.10.tgz#06247cb600e39b63a0a385f6a5014c44bab296f2" + integrity sha512-5VEC5RgXIk1HHdyN1pHlg0cOqnxHzvPGpMMyGAP5qSaDRmyZNDaQ0kkVAkK6NYlDhP6YBID3llaXlmAS/mdgCA== dependencies: "@types/react" "*" @@ -2618,9 +2618,9 @@ "@types/react" "*" "@types/react@*", "@types/react@^18.0.28": - version "18.2.23" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.23.tgz#60ad6cf4895e93bed858db0e03bcc4ff97d0410e" - integrity sha512-qHLW6n1q2+7KyBEYnrZpcsAmU/iiCh9WGCKgXvMxx89+TYdJWRjZohVIo9XTcoLhfX3+/hP0Pbulu3bCZQ9PSA== + version "18.2.25" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.25.tgz#99fa44154132979e870ff409dc5b6e67f06f0199" + integrity sha512-24xqse6+VByVLIr+xWaQ9muX1B4bXJKXBbjszbld/UEDslGLY53+ZucF44HCmLbMPejTzGG9XgR+3m2/Wqu1kw== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" @@ -2724,9 +2724,9 @@ "@types/yargs-parser" "*" "@types/yargs@^17.0.8": - version "17.0.25" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.25.tgz#3edd102803c97356fb4c805b2bbaf7dfc9ab6abc" - integrity sha512-gy7iPgwnzNvxgAEi2bXOHWCVOG6f7xsprVJH4MjlAWeBmJ7vh/Y1kwMtUrs64ztf24zVIRCpr3n/z6gm9QIkgg== + version "17.0.26" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.26.tgz#388e5002a8b284ad7b4599ba89920a6d74d8d79a" + integrity sha512-Y3vDy2X6zw/ZCumcwLpdhM5L7jmyGpmBCTYMHDLqT2IKVMYRRLdv6ZakA+wxhra6Z/3bwhNbNl9bDGXaFU+6rw== dependencies: "@types/yargs-parser" "*" @@ -3948,13 +3948,13 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^4.0.0, browserslist@^4.1.0, browserslist@^4.14.5, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.21.9: - version "4.22.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.0.tgz#6adc8116589ccea8a99d0df79c5de2436199abdb" - integrity sha512-v+Jcv64L2LbfTC6OnRcaxtqJNJuQAVhZKSJfR/6hn7lhnChUXl4amwVviqN1k411BB+3rRoKMitELRn1CojeRA== +browserslist@^4.0.0, browserslist@^4.1.0, browserslist@^4.14.5, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.21.9, browserslist@^4.22.1: + version "4.22.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619" + integrity sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ== dependencies: - caniuse-lite "^1.0.30001539" - electron-to-chromium "^1.4.530" + caniuse-lite "^1.0.30001541" + electron-to-chromium "^1.4.535" node-releases "^2.0.13" update-browserslist-db "^1.0.13" @@ -4134,10 +4134,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001538, caniuse-lite@^1.0.30001539: - version "1.0.30001541" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001541.tgz#b1aef0fadd87fb72db4dcb55d220eae17b81cdb1" - integrity sha512-bLOsqxDgTqUBkzxbNlSBt8annkDpQB9NdzdTbO2ooJ+eC/IQcvDspDc058g84ejCelF7vHUx57KIOjEecOHXaw== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001538, caniuse-lite@^1.0.30001541: + version "1.0.30001546" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001546.tgz#10fdad03436cfe3cc632d3af7a99a0fb497407f0" + integrity sha512-zvtSJwuQFpewSyRrI3AsftF6rM0X80mZkChIt1spBGEvRglCrjTniXvinc8JKRoqTwXAgvqTImaN9igfSMtUBw== case-sensitive-paths-webpack-plugin@^2.4.0: version "2.4.0" @@ -4254,9 +4254,9 @@ chrome-trace-event@^1.0.2: integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== ci-info@^3.2.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" - integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== + version "3.9.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" + integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" @@ -4390,9 +4390,9 @@ coa@^2.0.2: chalk "^2.4.1" q "^1.1.2" -"codeforlife@github:ocadotechnology/codeforlife-package-javascript#errorHandlingPage": +"codeforlife@github:ocadotechnology/codeforlife-package-javascript#v1.27.4": version "1.27.4" - resolved "https://codeload.github.com/ocadotechnology/codeforlife-package-javascript/tar.gz/29e0901d4815e102b3ed92179a48b5134a452de0" + resolved "https://codeload.github.com/ocadotechnology/codeforlife-package-javascript/tar.gz/38e81b1c24863927bed31c3fd7157b5c4fd64a03" dependencies: "@emotion/react" "^11.10.6" "@emotion/styled" "^11.10.6" @@ -4634,16 +4634,16 @@ copy-to-clipboard@^3.3.1: toggle-selection "^1.0.6" core-js-compat@^3.31.0, core-js-compat@^3.32.2: - version "3.32.2" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.32.2.tgz#8047d1a8b3ac4e639f0d4f66d4431aa3b16e004c" - integrity sha512-+GjlguTDINOijtVRUxrQOv3kfu9rl+qPNdX2LTbJ/ZyVTuxK+ksVSAGX1nHstu4hrv1En/uPTtWgq2gI5wt4AQ== + version "3.33.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.0.tgz#24aa230b228406450b2277b7c8bfebae932df966" + integrity sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw== dependencies: - browserslist "^4.21.10" + browserslist "^4.22.1" core-js-pure@^3.23.3: - version "3.32.2" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.32.2.tgz#b7dbdac528625cf87eb0523b532eb61551b9a6d1" - integrity sha512-Y2rxThOuNywTjnX/PgA5vWM6CZ9QB9sz9oGeCixV8MqXZO70z/5SHzf9EeBrEBK0PN36DnEBBu9O/aGWzKuMZQ== + version "3.33.0" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.33.0.tgz#938a28754b4d82017a7a8cbd2727b1abecc63591" + integrity sha512-FKSIDtJnds/YFIEaZ4HszRX7hkxGpNKM7FC9aJ9WLJbSd3lD4vOltFuVIBLR8asSx9frkTSqL0dw90SKQxgKrg== core-js@^2.4.0, core-js@^2.6.5: version "2.6.12" @@ -4651,9 +4651,9 @@ core-js@^2.4.0, core-js@^2.6.5: integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== core-js@^3.19.2: - version "3.32.2" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.32.2.tgz#172fb5949ef468f93b4be7841af6ab1f21992db7" - integrity sha512-pxXSw1mYZPDGvTQqEc5vgIb83jGQKFGYWY76z4a7weZXUolw3G+OvpZqSRcfYOoOVUQJYEPsWeQK8pKEnUtWxQ== + version "3.33.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.33.0.tgz#70366dbf737134761edb017990cf5ce6c6369c40" + integrity sha512-HoZr92+ZjFEKar5HS6MC776gYslNOKHt75mEBKWKnPeFDpZ6nH5OeF3S6HFT1mUAUZKrzkez05VboaX8myjSuw== core-util-is@1.0.2: version "1.0.2" @@ -5588,10 +5588,10 @@ ejs@^3.1.6: dependencies: jake "^10.8.5" -electron-to-chromium@^1.4.530: - version "1.4.534" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.534.tgz#2056c1fc41a7157cdd5c634f96e758d727b69201" - integrity sha512-ikY7wAMtMt3jTnHsHG0YLl4MKJiKz2tgidenGSNgwUX2StBLNZ8VCxflD9tZK/ceTs4j8gDC9+6LQQ6iGkK04g== +electron-to-chromium@^1.4.535: + version "1.4.542" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.542.tgz#9bfe19d8ddafc2591e4a17d04e60a5f5acc54965" + integrity sha512-6+cpa00G09N3sfh2joln4VUXHquWrOFx3FLZqiVQvl45+zS9DskDBTPvob+BhvFRmTBkyDSk0vvLMMRo/qc6mQ== elliptic@^6.5.3: version "6.5.4" @@ -6952,9 +6952,9 @@ globals@^11.1.0: integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== globals@^13.19.0: - version "13.22.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.22.0.tgz#0c9fcb9c48a2494fbb5edbfee644285543eba9d8" - integrity sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw== + version "13.23.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.23.0.tgz#ef31673c926a0976e1f61dab4dca57e0c0a8af02" + integrity sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA== dependencies: type-fest "^0.20.2" @@ -7144,11 +7144,9 @@ has-values@^1.0.0: kind-of "^4.0.0" has@^1.0.0, has@^1.0.1, has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" + version "1.0.4" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.4.tgz#2eb2860e000011dae4f1406a86fe80e530fb2ec6" + integrity sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ== hash-base@^3.0.0: version "3.1.0" @@ -11034,9 +11032,9 @@ postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.11, postcss@^7.0.17, postcss@^7.0.2 source-map "^0.6.1" postcss@^8.3.5, postcss@^8.4.21, postcss@^8.4.23, postcss@^8.4.4: - version "8.4.30" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.30.tgz#0e0648d551a606ef2192a26da4cabafcc09c1aa7" - integrity sha512-7ZEao1g4kd68l97aWG/etQKPKq07us0ieSZ2TnFDk11i0ZfDW2AwKHYU8qv4MZKqN2fdBfg+7q0ES06UA73C1g== + version "8.4.31" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" + integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== dependencies: nanoid "^3.3.6" picocolors "^1.0.0" @@ -11433,9 +11431,9 @@ react-material-ui-carousel@^3.4.2: framer-motion "^4.1.17" react-redux@^8.0.5: - version "8.1.2" - resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-8.1.2.tgz#9076bbc6b60f746659ad6d51cb05de9c5e1e9188" - integrity sha512-xJKYI189VwfsFc4CJvHqHlDrzyFTY/3vZACbE+rr/zQ34Xx1wQfB4OTOSeOSNrF6BDVe8OOdxIrAnMGXA3ggfw== + version "8.1.3" + resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-8.1.3.tgz#4fdc0462d0acb59af29a13c27ffef6f49ab4df46" + integrity sha512-n0ZrutD7DaX/j9VscF+uTALI3oUPa/pO4Z3soOBIjuRn/FzVu6aehhysxZCLi6y7duMf52WNZGMl7CtuK5EnRw== dependencies: "@babel/runtime" "^7.12.1" "@types/hoist-non-react-statics" "^3.3.1" @@ -13035,9 +13033,9 @@ terser@^3.7.3: source-map-support "~0.5.10" terser@^5.0.0, terser@^5.10.0, terser@^5.16.8, terser@^5.6.1: - version "5.20.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.20.0.tgz#ea42aea62578703e33def47d5c5b93c49772423e" - integrity sha512-e56ETryaQDyebBwJIWYB2TT6f2EZ0fL0sW/JRXNMN26zZdKi2u/E/5my5lG6jNxym6qsrVXfFRmOdV42zlAgLQ== + version "5.21.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.21.0.tgz#d2b27e92b5e56650bc83b6defa00a110f0b124b2" + integrity sha512-WtnFKrxu9kaoXuiZFSGrcAvvBqAdmKx0SFNmVNYdJamMu9yyN3I/QF0FbH4QcqJQ+y1CJnzxGIKH0cSj+FGYRw== dependencies: "@jridgewell/source-map" "^0.3.3" acorn "^8.8.2" @@ -14365,9 +14363,9 @@ yocto-queue@^0.1.0: integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== yup@^1.1.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/yup/-/yup-1.3.1.tgz#4ab52d00555f0f18af09fe1356fdae35f804e421" - integrity sha512-2stNyEF96SnPUxzRL99kt1bEHWytnvC2stwmTTqjoFXZRf63JtYK2pQt2AJvWcQvkrAzr/pcXvc6c5vrqsBzDg== + version "1.3.2" + resolved "https://registry.yarnpkg.com/yup/-/yup-1.3.2.tgz#afffc458f1513ed386e6aaf4bcaa4e67a9e270dc" + integrity sha512-6KCM971iQtJ+/KUaHdrhVr2LDkfhBtFPRnsG1P8F4q3uUVQ2RfEM9xekpha9aA4GXWJevjM10eDcPQ1FfWlmaQ== dependencies: property-expr "^2.0.5" tiny-case "^1.0.3" From 4439423061f193bf9139c9270f60d38549d99dc0 Mon Sep 17 00:00:00 2001 From: KamilPawel Date: Thu, 5 Oct 2023 17:19:00 +0100 Subject: [PATCH 21/52] comments #3 --- backend/service/settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/service/settings.py b/backend/service/settings.py index b4a9b0a8..3867c233 100644 --- a/backend/service/settings.py +++ b/backend/service/settings.py @@ -58,7 +58,7 @@ "django.middleware.locale.LocaleMiddleware", "corsheaders.middleware.CorsMiddleware", "django.middleware.common.CommonMiddleware", - # "django.middleware.csrf.CsrfViewMiddleware", + "django.middleware.csrf.CsrfViewMiddleware", "deploy.middleware.security.CustomSecurityMiddleware", "whitenoise.middleware.WhiteNoiseMiddleware", "django.contrib.messages.middleware.MessageMiddleware", From 183352e4eb1390c7957f69e6411fac40d6f1c44f Mon Sep 17 00:00:00 2001 From: KamilPawel Date: Thu, 5 Oct 2023 17:53:05 +0100 Subject: [PATCH 22/52] comments #4 --- backend/portal/views/teacher/teach.py | 2 +- .../classes/editClass/EditClass.tsx | 16 ++++------------ .../student/editStudent/EditStudent.tsx | 8 ++------ 3 files changed, 7 insertions(+), 19 deletions(-) diff --git a/backend/portal/views/teacher/teach.py b/backend/portal/views/teacher/teach.py index 52569294..fb685dc5 100644 --- a/backend/portal/views/teacher/teach.py +++ b/backend/portal/views/teacher/teach.py @@ -581,7 +581,7 @@ def process_reset_password_form(request, student, password_form): uuidstr = uuid4().hex login_id = get_hashed_login_id(uuidstr) protocol = settings.SERVICE_PROTOCOL - domain = settings.SERVICE_DOMAIN + domain = request.headers.get("host", "") login_url = ( f"{protocol}://{domain}/api/u/{student.new_user.id}/{uuidstr}/" ) diff --git a/frontend/src/pages/teacherDashboard/classes/editClass/EditClass.tsx b/frontend/src/pages/teacherDashboard/classes/editClass/EditClass.tsx index 99eb11da..7e229b6e 100644 --- a/frontend/src/pages/teacherDashboard/classes/editClass/EditClass.tsx +++ b/frontend/src/pages/teacherDashboard/classes/editClass/EditClass.tsx @@ -159,17 +159,10 @@ const StudentsTable: React.FC<{ /> - @@ -249,7 +242,6 @@ const EditClass: React.FC<{ const { data } = useGetStudentsByAccessCodeQuery({ accessCode }); const studentData = data?.studentsPerAccessCode; - const params = tryValidateSync( useParams(), yup.object({ diff --git a/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx b/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx index 35e4ef91..1936aba9 100644 --- a/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx +++ b/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx @@ -130,12 +130,8 @@ const EditStudent: React.FC<{ }> = ({ accessCode, studentId, goBack }) => { const theme = useTheme(); // use cache to get student name - const { students } = useGetStudentsByAccessCodeQuery({ accessCode }, { - selectFromResult: ({ data }) => ({ - students: data?.studentsPerAccessCode - }) - }); - const findCurrentStudent = students?.find((student) => student.id === studentId); + const { data } = useGetStudentsByAccessCodeQuery({ accessCode }); + const findCurrentStudent = data?.studentsPerAccessCode.find((student) => student.id === studentId); const studentName = findCurrentStudent?.newUser.firstName; return ( From 2a7df24e04a7c57bce839abec3aab098b0c31fb1 Mon Sep 17 00:00:00 2001 From: KamilPawel Date: Fri, 6 Oct 2023 11:05:48 +0100 Subject: [PATCH 23/52] comments #5 --- backend/portal/views/teacher/teach.py | 12 +++++++----- .../pages/privacyNotice/ForAdults/HowWeUseInfo.tsx | 2 +- .../editClass/student/editStudent/EditStudent.tsx | 4 ---- 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/backend/portal/views/teacher/teach.py b/backend/portal/views/teacher/teach.py index fb685dc5..e1a969b8 100644 --- a/backend/portal/views/teacher/teach.py +++ b/backend/portal/views/teacher/teach.py @@ -1081,6 +1081,8 @@ def expand_key(dictionary): # return response +@login_required +@user_passes_test(logged_in_as_teacher, login_url=reverse_lazy("teacher_login")) def teacher_print_reminder_cards(request, access_code): klass = get_object_or_404(Class, access_code=access_code) check_teacher_authorised(request, klass.teacher) @@ -1138,11 +1140,11 @@ def teacher_print_reminder_cards(request, access_code): # return response -def get_student_data(request): - if request.method == "POST": - data = request.POST.get("data", "[]") - return json.loads(data) - return [] +# def get_student_data(request): +# if request.method == "POST": +# data = request.POST.get("data", "[]") +# return json.loads(data) +# return [] def compute_show_page_character(p, x, y, NUM_Y): diff --git a/frontend/src/pages/privacyNotice/ForAdults/HowWeUseInfo.tsx b/frontend/src/pages/privacyNotice/ForAdults/HowWeUseInfo.tsx index fe1106b9..22e49f34 100644 --- a/frontend/src/pages/privacyNotice/ForAdults/HowWeUseInfo.tsx +++ b/frontend/src/pages/privacyNotice/ForAdults/HowWeUseInfo.tsx @@ -13,7 +13,7 @@ import { ItemizedList } from 'codeforlife/lib/esm/components'; const CustomTableRow: React.FC<{ left: string, - right: any; + right: any }> = ({ left, right }) => ( diff --git a/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx b/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx index 1936aba9..e409401a 100644 --- a/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx +++ b/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx @@ -73,13 +73,11 @@ const UpdateNameForm: React.FC = () => { const UpdatePasswordForm: React.FC = () => { const [editStudentPassword] = useEditStudentPasswordMutation(); const location = useLocation(); - console.log(location); const studentId = new URLSearchParams(location.search).get('studentIds') ?? ''; interface Values { password: string; confirmPassword: string; } - const initialValues: Values = { password: '', confirmPassword: '' @@ -95,8 +93,6 @@ const UpdatePasswordForm: React.FC = () => { .then((response) => { const path = paths.teacher.dashboard.classes.editClass.updatedStudentCredentials._; const { accessCode } = response; - console.log(response, path, accessCode); - navigate( path.replace(':accessCode', accessCode), // tried using generatePath but it says it is missing :accessCode 02/10/2023 22:32 { state: { updatedStudentCredentials: response } } From 9c33f1f3904d9c3272ec70d82327fba21eca1608 Mon Sep 17 00:00:00 2001 From: KamilPawel Date: Fri, 6 Oct 2023 11:19:03 +0100 Subject: [PATCH 24/52] comments #5 --- backend/portal/views/teacher/teach.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/backend/portal/views/teacher/teach.py b/backend/portal/views/teacher/teach.py index e1a969b8..57e51af8 100644 --- a/backend/portal/views/teacher/teach.py +++ b/backend/portal/views/teacher/teach.py @@ -1081,8 +1081,10 @@ def expand_key(dictionary): # return response -@login_required -@user_passes_test(logged_in_as_teacher, login_url=reverse_lazy("teacher_login")) +@login_required(login_url=reverse_lazy("session-expired")) +@user_passes_test( + logged_in_as_teacher, login_url=reverse_lazy("session-expired") +) def teacher_print_reminder_cards(request, access_code): klass = get_object_or_404(Class, access_code=access_code) check_teacher_authorised(request, klass.teacher) From 532be31ba46c65a6a85c0a5c6ffb8bc0937f582b Mon Sep 17 00:00:00 2001 From: SKairinos Date: Mon, 16 Oct 2023 09:28:03 +0100 Subject: [PATCH 25/52] use latest cfl package --- backend/Pipfile | 8 +- backend/Pipfile.lock | 838 +++++++++++++++++++----------------- backend/service/settings.py | 57 ++- 3 files changed, 479 insertions(+), 424 deletions(-) diff --git a/backend/Pipfile b/backend/Pipfile index a2b92d6d..a9cfd381 100644 --- a/backend/Pipfile +++ b/backend/Pipfile @@ -25,16 +25,16 @@ django-preventconcurrentlogins = "==0.8.2" django-csp = "==3.7" django-import-export = "*" google-cloud-logging = "==1.*" -google-auth = "==1.*" +google-auth = "==2.*" google-cloud-container = "==2.3.0" "django-anymail[amazon_ses]" = "==7.0.*" -codeforlife = {ref = "v0.7.14", git = "https://github.com/ocadotechnology/codeforlife-package-python.git"} +codeforlife = {ref = "158-teacher-teach-edit-student-details", git = "https://github.com/ocadotechnology/codeforlife-package-python.git"} django = "==3.2.20" djangorestframework = "==3.13.1" django-cors-headers = "==4.1.0" # https://pypi.org/user/codeforlife/ -cfl-common = "==6.36.2" # TODO: remove -codeforlife-portal = "==6.36.2" # TODO: remove +cfl-common = "==6.37.1" # TODO: remove +codeforlife-portal = "==6.37.1" # TODO: remove aimmo = "==2.10.6" # TODO: remove rapid-router = "==5.11.3" # TODO: remove phonenumbers = "==8.12.12" # TODO: remove diff --git a/backend/Pipfile.lock b/backend/Pipfile.lock index 2444ff67..2b587102 100644 --- a/backend/Pipfile.lock +++ b/backend/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "c1cab27661cb2acfd947d3ff4ce160b19adb5ff90fc606cc44c421d3edffb344" + "sha256": "c0c10f93d5cfde0e3e1735dcb78d7f801b5e78f5c6816a125909d9ec9a449853" }, "pipfile-spec": 6, "requires": { @@ -42,11 +42,11 @@ }, "cachetools": { "hashes": [ - "sha256:89ea6f1b638d5a73a4f9226be57ac5e4f399d22770b92355f92dcb0f7f001693", - "sha256:92971d3cb7d2a97efff7c7bb1657f21a8f5fb309a37530537c71b1774189f2d1" + "sha256:95ef631eeaea14ba2e36f06437f36463aac3a096799e876ee55e5cdccb102590", + "sha256:dce83f2d9b4e1f732a8cd44af8e8fab2dbe46201467fc98b3ef8f269092bf62b" ], - "markers": "python_version ~= '3.5'", - "version": "==4.2.4" + "markers": "python_version >= '3.7'", + "version": "==5.3.1" }, "certifi": { "hashes": [ @@ -58,92 +58,107 @@ }, "cfl-common": { "hashes": [ - "sha256:171e5607e7704e7f979d947226c681c1672c1f038116c0ed69b1fe57c2eb1eac", - "sha256:8fd9b61f1f6b70a1f8957ed65c5ff42fa6c6b6fedbf1b34cdeae0df563844d9f" + "sha256:24045d5550c741249a1d466cfb90149883454833accb48bbdb1aceec51e885c1", + "sha256:e28553af70dc4388fc73a6dfb4ece08e8518f21531d63213b448d24a5c0abef3" ], "index": "pypi", - "version": "==6.36.2" + "version": "==6.37.1" }, "charset-normalizer": { "hashes": [ - "sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96", - "sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c", - "sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710", - "sha256:1000fba1057b92a65daec275aec30586c3de2401ccdcd41f8a5c1e2c87078706", - "sha256:1249cbbf3d3b04902ff081ffbb33ce3377fa6e4c7356f759f3cd076cc138d020", - "sha256:1920d4ff15ce893210c1f0c0e9d19bfbecb7983c76b33f046c13a8ffbd570252", - "sha256:193cbc708ea3aca45e7221ae58f0fd63f933753a9bfb498a3b474878f12caaad", - "sha256:1a100c6d595a7f316f1b6f01d20815d916e75ff98c27a01ae817439ea7726329", - "sha256:1f30b48dd7fa1474554b0b0f3fdfdd4c13b5c737a3c6284d3cdc424ec0ffff3a", - "sha256:203f0c8871d5a7987be20c72442488a0b8cfd0f43b7973771640fc593f56321f", - "sha256:246de67b99b6851627d945db38147d1b209a899311b1305dd84916f2b88526c6", - "sha256:2dee8e57f052ef5353cf608e0b4c871aee320dd1b87d351c28764fc0ca55f9f4", - "sha256:2efb1bd13885392adfda4614c33d3b68dee4921fd0ac1d3988f8cbb7d589e72a", - "sha256:2f4ac36d8e2b4cc1aa71df3dd84ff8efbe3bfb97ac41242fbcfc053c67434f46", - "sha256:3170c9399da12c9dc66366e9d14da8bf7147e1e9d9ea566067bbce7bb74bd9c2", - "sha256:3b1613dd5aee995ec6d4c69f00378bbd07614702a315a2cf6c1d21461fe17c23", - "sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace", - "sha256:3bb7fda7260735efe66d5107fb7e6af6a7c04c7fce9b2514e04b7a74b06bf5dd", - "sha256:41b25eaa7d15909cf3ac4c96088c1f266a9a93ec44f87f1d13d4a0e86c81b982", - "sha256:45de3f87179c1823e6d9e32156fb14c1927fcc9aba21433f088fdfb555b77c10", - "sha256:46fb8c61d794b78ec7134a715a3e564aafc8f6b5e338417cb19fe9f57a5a9bf2", - "sha256:48021783bdf96e3d6de03a6e39a1171ed5bd7e8bb93fc84cc649d11490f87cea", - "sha256:4957669ef390f0e6719db3613ab3a7631e68424604a7b448f079bee145da6e09", - "sha256:5e86d77b090dbddbe78867a0275cb4df08ea195e660f1f7f13435a4649e954e5", - "sha256:6339d047dab2780cc6220f46306628e04d9750f02f983ddb37439ca47ced7149", - "sha256:681eb3d7e02e3c3655d1b16059fbfb605ac464c834a0c629048a30fad2b27489", - "sha256:6c409c0deba34f147f77efaa67b8e4bb83d2f11c8806405f76397ae5b8c0d1c9", - "sha256:7095f6fbfaa55defb6b733cfeb14efaae7a29f0b59d8cf213be4e7ca0b857b80", - "sha256:70c610f6cbe4b9fce272c407dd9d07e33e6bf7b4aa1b7ffb6f6ded8e634e3592", - "sha256:72814c01533f51d68702802d74f77ea026b5ec52793c791e2da806a3844a46c3", - "sha256:7a4826ad2bd6b07ca615c74ab91f32f6c96d08f6fcc3902ceeedaec8cdc3bcd6", - "sha256:7c70087bfee18a42b4040bb9ec1ca15a08242cf5867c58726530bdf3945672ed", - "sha256:855eafa5d5a2034b4621c74925d89c5efef61418570e5ef9b37717d9c796419c", - "sha256:8700f06d0ce6f128de3ccdbc1acaea1ee264d2caa9ca05daaf492fde7c2a7200", - "sha256:89f1b185a01fe560bc8ae5f619e924407efca2191b56ce749ec84982fc59a32a", - "sha256:8b2c760cfc7042b27ebdb4a43a4453bd829a5742503599144d54a032c5dc7e9e", - "sha256:8c2f5e83493748286002f9369f3e6607c565a6a90425a3a1fef5ae32a36d749d", - "sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6", - "sha256:94aea8eff76ee6d1cdacb07dd2123a68283cb5569e0250feab1240058f53b623", - "sha256:95eb302ff792e12aba9a8b8f8474ab229a83c103d74a750ec0bd1c1eea32e669", - "sha256:9bd9b3b31adcb054116447ea22caa61a285d92e94d710aa5ec97992ff5eb7cf3", - "sha256:9e608aafdb55eb9f255034709e20d5a83b6d60c054df0802fa9c9883d0a937aa", - "sha256:a103b3a7069b62f5d4890ae1b8f0597618f628b286b03d4bc9195230b154bfa9", - "sha256:a386ebe437176aab38c041de1260cd3ea459c6ce5263594399880bbc398225b2", - "sha256:a38856a971c602f98472050165cea2cdc97709240373041b69030be15047691f", - "sha256:a401b4598e5d3f4a9a811f3daf42ee2291790c7f9d74b18d75d6e21dda98a1a1", - "sha256:a7647ebdfb9682b7bb97e2a5e7cb6ae735b1c25008a70b906aecca294ee96cf4", - "sha256:aaf63899c94de41fe3cf934601b0f7ccb6b428c6e4eeb80da72c58eab077b19a", - "sha256:b0dac0ff919ba34d4df1b6131f59ce95b08b9065233446be7e459f95554c0dc8", - "sha256:baacc6aee0b2ef6f3d308e197b5d7a81c0e70b06beae1f1fcacffdbd124fe0e3", - "sha256:bf420121d4c8dce6b889f0e8e4ec0ca34b7f40186203f06a946fa0276ba54029", - "sha256:c04a46716adde8d927adb9457bbe39cf473e1e2c2f5d0a16ceb837e5d841ad4f", - "sha256:c0b21078a4b56965e2b12f247467b234734491897e99c1d51cee628da9786959", - "sha256:c1c76a1743432b4b60ab3358c937a3fe1341c828ae6194108a94c69028247f22", - "sha256:c4983bf937209c57240cff65906b18bb35e64ae872da6a0db937d7b4af845dd7", - "sha256:c4fb39a81950ec280984b3a44f5bd12819953dc5fa3a7e6fa7a80db5ee853952", - "sha256:c57921cda3a80d0f2b8aec7e25c8aa14479ea92b5b51b6876d975d925a2ea346", - "sha256:c8063cf17b19661471ecbdb3df1c84f24ad2e389e326ccaf89e3fb2484d8dd7e", - "sha256:ccd16eb18a849fd8dcb23e23380e2f0a354e8daa0c984b8a732d9cfaba3a776d", - "sha256:cd6dbe0238f7743d0efe563ab46294f54f9bc8f4b9bcf57c3c666cc5bc9d1299", - "sha256:d62e51710986674142526ab9f78663ca2b0726066ae26b78b22e0f5e571238dd", - "sha256:db901e2ac34c931d73054d9797383d0f8009991e723dab15109740a63e7f902a", - "sha256:e03b8895a6990c9ab2cdcd0f2fe44088ca1c65ae592b8f795c3294af00a461c3", - "sha256:e1c8a2f4c69e08e89632defbfabec2feb8a8d99edc9f89ce33c4b9e36ab63037", - "sha256:e4b749b9cc6ee664a3300bb3a273c1ca8068c46be705b6c31cf5d276f8628a94", - "sha256:e6a5bf2cba5ae1bb80b154ed68a3cfa2fa00fde979a7f50d6598d3e17d9ac20c", - "sha256:e857a2232ba53ae940d3456f7533ce6ca98b81917d47adc3c7fd55dad8fab858", - "sha256:ee4006268ed33370957f55bf2e6f4d263eaf4dc3cfc473d1d90baff6ed36ce4a", - "sha256:eef9df1eefada2c09a5e7a40991b9fc6ac6ef20b1372abd48d2794a316dc0449", - "sha256:f058f6963fd82eb143c692cecdc89e075fa0828db2e5b291070485390b2f1c9c", - "sha256:f25c229a6ba38a35ae6e25ca1264621cc25d4d38dca2942a7fce0b67a4efe918", - "sha256:f2a1d0fd4242bd8643ce6f98927cf9c04540af6efa92323e9d3124f57727bfc1", - "sha256:f7560358a6811e52e9c4d142d497f1a6e10103d3a6881f18d04dbce3729c0e2c", - "sha256:f779d3ad205f108d14e99bb3859aa7dd8e9c68874617c72354d7ecaec2a054ac", - "sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa" + "sha256:02673e456dc5ab13659f85196c534dc596d4ef260e4d86e856c3b2773ce09843", + "sha256:02af06682e3590ab952599fbadac535ede5d60d78848e555aa58d0c0abbde786", + "sha256:03680bb39035fbcffe828eae9c3f8afc0428c91d38e7d61aa992ef7a59fb120e", + "sha256:0570d21da019941634a531444364f2482e8db0b3425fcd5ac0c36565a64142c8", + "sha256:09c77f964f351a7369cc343911e0df63e762e42bac24cd7d18525961c81754f4", + "sha256:0d3d5b7db9ed8a2b11a774db2bbea7ba1884430a205dbd54a32d61d7c2a190fa", + "sha256:1063da2c85b95f2d1a430f1c33b55c9c17ffaf5e612e10aeaad641c55a9e2b9d", + "sha256:12ebea541c44fdc88ccb794a13fe861cc5e35d64ed689513a5c03d05b53b7c82", + "sha256:153e7b6e724761741e0974fc4dcd406d35ba70b92bfe3fedcb497226c93b9da7", + "sha256:15b26ddf78d57f1d143bdf32e820fd8935d36abe8a25eb9ec0b5a71c82eb3895", + "sha256:1872d01ac8c618a8da634e232f24793883d6e456a66593135aeafe3784b0848d", + "sha256:187d18082694a29005ba2944c882344b6748d5be69e3a89bf3cc9d878e548d5a", + "sha256:1b2919306936ac6efb3aed1fbf81039f7087ddadb3160882a57ee2ff74fd2382", + "sha256:232ac332403e37e4a03d209a3f92ed9071f7d3dbda70e2a5e9cff1c4ba9f0678", + "sha256:23e8565ab7ff33218530bc817922fae827420f143479b753104ab801145b1d5b", + "sha256:24817cb02cbef7cd499f7c9a2735286b4782bd47a5b3516a0e84c50eab44b98e", + "sha256:249c6470a2b60935bafd1d1d13cd613f8cd8388d53461c67397ee6a0f5dce741", + "sha256:24a91a981f185721542a0b7c92e9054b7ab4fea0508a795846bc5b0abf8118d4", + "sha256:2502dd2a736c879c0f0d3e2161e74d9907231e25d35794584b1ca5284e43f596", + "sha256:250c9eb0f4600361dd80d46112213dff2286231d92d3e52af1e5a6083d10cad9", + "sha256:278c296c6f96fa686d74eb449ea1697f3c03dc28b75f873b65b5201806346a69", + "sha256:2935ffc78db9645cb2086c2f8f4cfd23d9b73cc0dc80334bc30aac6f03f68f8c", + "sha256:2f4a0033ce9a76e391542c182f0d48d084855b5fcba5010f707c8e8c34663d77", + "sha256:30a85aed0b864ac88309b7d94be09f6046c834ef60762a8833b660139cfbad13", + "sha256:380c4bde80bce25c6e4f77b19386f5ec9db230df9f2f2ac1e5ad7af2caa70459", + "sha256:3ae38d325b512f63f8da31f826e6cb6c367336f95e418137286ba362925c877e", + "sha256:3b447982ad46348c02cb90d230b75ac34e9886273df3a93eec0539308a6296d7", + "sha256:3debd1150027933210c2fc321527c2299118aa929c2f5a0a80ab6953e3bd1908", + "sha256:4162918ef3098851fcd8a628bf9b6a98d10c380725df9e04caf5ca6dd48c847a", + "sha256:468d2a840567b13a590e67dd276c570f8de00ed767ecc611994c301d0f8c014f", + "sha256:4cc152c5dd831641e995764f9f0b6589519f6f5123258ccaca8c6d34572fefa8", + "sha256:542da1178c1c6af8873e143910e2269add130a299c9106eef2594e15dae5e482", + "sha256:557b21a44ceac6c6b9773bc65aa1b4cc3e248a5ad2f5b914b91579a32e22204d", + "sha256:5707a746c6083a3a74b46b3a631d78d129edab06195a92a8ece755aac25a3f3d", + "sha256:588245972aca710b5b68802c8cad9edaa98589b1b42ad2b53accd6910dad3545", + "sha256:5adf257bd58c1b8632046bbe43ee38c04e1038e9d37de9c57a94d6bd6ce5da34", + "sha256:619d1c96099be5823db34fe89e2582b336b5b074a7f47f819d6b3a57ff7bdb86", + "sha256:63563193aec44bce707e0c5ca64ff69fa72ed7cf34ce6e11d5127555756fd2f6", + "sha256:67b8cc9574bb518ec76dc8e705d4c39ae78bb96237cb533edac149352c1f39fe", + "sha256:6a685067d05e46641d5d1623d7c7fdf15a357546cbb2f71b0ebde91b175ffc3e", + "sha256:70f1d09c0d7748b73290b29219e854b3207aea922f839437870d8cc2168e31cc", + "sha256:750b446b2ffce1739e8578576092179160f6d26bd5e23eb1789c4d64d5af7dc7", + "sha256:7966951325782121e67c81299a031f4c115615e68046f79b85856b86ebffc4cd", + "sha256:7b8b8bf1189b3ba9b8de5c8db4d541b406611a71a955bbbd7385bbc45fcb786c", + "sha256:7f5d10bae5d78e4551b7be7a9b29643a95aded9d0f602aa2ba584f0388e7a557", + "sha256:805dfea4ca10411a5296bcc75638017215a93ffb584c9e344731eef0dcfb026a", + "sha256:81bf654678e575403736b85ba3a7867e31c2c30a69bc57fe88e3ace52fb17b89", + "sha256:82eb849f085624f6a607538ee7b83a6d8126df6d2f7d3b319cb837b289123078", + "sha256:85a32721ddde63c9df9ebb0d2045b9691d9750cb139c161c80e500d210f5e26e", + "sha256:86d1f65ac145e2c9ed71d8ffb1905e9bba3a91ae29ba55b4c46ae6fc31d7c0d4", + "sha256:86f63face3a527284f7bb8a9d4f78988e3c06823f7bea2bd6f0e0e9298ca0403", + "sha256:8eaf82f0eccd1505cf39a45a6bd0a8cf1c70dcfc30dba338207a969d91b965c0", + "sha256:93aa7eef6ee71c629b51ef873991d6911b906d7312c6e8e99790c0f33c576f89", + "sha256:96c2b49eb6a72c0e4991d62406e365d87067ca14c1a729a870d22354e6f68115", + "sha256:9cf3126b85822c4e53aa28c7ec9869b924d6fcfb76e77a45c44b83d91afd74f9", + "sha256:9fe359b2e3a7729010060fbca442ca225280c16e923b37db0e955ac2a2b72a05", + "sha256:a0ac5e7015a5920cfce654c06618ec40c33e12801711da6b4258af59a8eff00a", + "sha256:a3f93dab657839dfa61025056606600a11d0b696d79386f974e459a3fbc568ec", + "sha256:a4b71f4d1765639372a3b32d2638197f5cd5221b19531f9245fcc9ee62d38f56", + "sha256:aae32c93e0f64469f74ccc730a7cb21c7610af3a775157e50bbd38f816536b38", + "sha256:aaf7b34c5bc56b38c931a54f7952f1ff0ae77a2e82496583b247f7c969eb1479", + "sha256:abecce40dfebbfa6abf8e324e1860092eeca6f7375c8c4e655a8afb61af58f2c", + "sha256:abf0d9f45ea5fb95051c8bfe43cb40cda383772f7e5023a83cc481ca2604d74e", + "sha256:ac71b2977fb90c35d41c9453116e283fac47bb9096ad917b8819ca8b943abecd", + "sha256:ada214c6fa40f8d800e575de6b91a40d0548139e5dc457d2ebb61470abf50186", + "sha256:b09719a17a2301178fac4470d54b1680b18a5048b481cb8890e1ef820cb80455", + "sha256:b1121de0e9d6e6ca08289583d7491e7fcb18a439305b34a30b20d8215922d43c", + "sha256:b3b2316b25644b23b54a6f6401074cebcecd1244c0b8e80111c9a3f1c8e83d65", + "sha256:b3d9b48ee6e3967b7901c052b670c7dda6deb812c309439adaffdec55c6d7b78", + "sha256:b5bcf60a228acae568e9911f410f9d9e0d43197d030ae5799e20dca8df588287", + "sha256:b8f3307af845803fb0b060ab76cf6dd3a13adc15b6b451f54281d25911eb92df", + "sha256:c2af80fb58f0f24b3f3adcb9148e6203fa67dd3f61c4af146ecad033024dde43", + "sha256:c350354efb159b8767a6244c166f66e67506e06c8924ed74669b2c70bc8735b1", + "sha256:c5a74c359b2d47d26cdbbc7845e9662d6b08a1e915eb015d044729e92e7050b7", + "sha256:c71f16da1ed8949774ef79f4a0260d28b83b3a50c6576f8f4f0288d109777989", + "sha256:d47ecf253780c90ee181d4d871cd655a789da937454045b17b5798da9393901a", + "sha256:d7eff0f27edc5afa9e405f7165f85a6d782d308f3b6b9d96016c010597958e63", + "sha256:d97d85fa63f315a8bdaba2af9a6a686e0eceab77b3089af45133252618e70884", + "sha256:db756e48f9c5c607b5e33dd36b1d5872d0422e960145b08ab0ec7fd420e9d649", + "sha256:dc45229747b67ffc441b3de2f3ae5e62877a282ea828a5bdb67883c4ee4a8810", + "sha256:e0fc42822278451bc13a2e8626cf2218ba570f27856b536e00cfa53099724828", + "sha256:e39c7eb31e3f5b1f88caff88bcff1b7f8334975b46f6ac6e9fc725d829bc35d4", + "sha256:e46cd37076971c1040fc8c41273a8b3e2c624ce4f2be3f5dfcb7a430c1d3acc2", + "sha256:e5c1502d4ace69a179305abb3f0bb6141cbe4714bc9b31d427329a95acfc8bdd", + "sha256:edfe077ab09442d4ef3c52cb1f9dab89bff02f4524afc0acf2d46be17dc479f5", + "sha256:effe5406c9bd748a871dbcaf3ac69167c38d72db8c9baf3ff954c344f31c4cbe", + "sha256:f0d1e3732768fecb052d90d62b220af62ead5748ac51ef61e7b32c266cac9293", + "sha256:f5969baeaea61c97efa706b9b107dcba02784b1601c74ac84f2a532ea079403e", + "sha256:f8888e31e3a85943743f8fc15e71536bda1c81d5aa36d014a3c0c44481d7db6e", + "sha256:fc52b79d83a3fe3a360902d3f5d79073a993597d48114c29485e9431092905d8" ], "markers": "python_full_version >= '3.7.0'", - "version": "==3.2.0" + "version": "==3.3.0" }, "click": { "hashes": [ @@ -155,15 +170,15 @@ }, "codeforlife": { "git": "https://github.com/ocadotechnology/codeforlife-package-python.git", - "ref": "d8a3f6963507996d862011604786b2e0c3d63d70" + "ref": "5b2ca201eae791047032eba944adc460c55bc8ff" }, "codeforlife-portal": { "hashes": [ - "sha256:be6a245d3a7156d6ae019874f31e57a6a73666c7f44bef5ae84bfe4f43279876", - "sha256:cb54c8373997d73af8fe548ee84a363427d865206614452c55d2fb0b146d7caf" + "sha256:3c31ac0135af0cd78ec39e1b3e32ba98e514c05d944447e504002c000ce6b334", + "sha256:63a234390da9728139de7fbe8a4da9f4ca4b4b24d37c4bed248e5d49af563e53" ], "index": "pypi", - "version": "==6.36.2" + "version": "==6.37.1" }, "defusedxml": { "hashes": [ @@ -232,6 +247,14 @@ "index": "pypi", "version": "==3.7" }, + "django-filter": { + "hashes": [ + "sha256:2fe15f78108475eda525692813205fa6f9e8c1caf1ae65daa5862d403c6dbf00", + "sha256:d12d8e0fc6d3eb26641e553e5d53b191eb8cec611427d4bdce0becb1f7c172b5" + ], + "markers": "python_version >= '3.7'", + "version": "==23.2" + }, "django-formtools": { "hashes": [ "sha256:304fa777b8ef9e0693ce7833f885cb89ba46b0e46fc23b01176900a93f46742f", @@ -375,11 +398,11 @@ }, "google-auth": { "hashes": [ - "sha256:997516b42ecb5b63e8d80f5632c1a61dddf41d2a4c2748057837e06e00014258", - "sha256:b7033be9028c188ee30200b204ea00ed82ea1162e8ac1df4aa6ded19a191d88e" + "sha256:6864247895eea5d13b9c57c9e03abb49cb94ce2dc7c58e91cba3248c7477c9e3", + "sha256:a8f4608e65c244ead9e0538f181a96c6e11199ec114d41f1d7b1bffa96937bda" ], "index": "pypi", - "version": "==1.35.0" + "version": "==2.23.3" }, "google-cloud-container": { "hashes": [ @@ -407,81 +430,79 @@ }, "googleapis-common-protos": { "hashes": [ - "sha256:69f9bbcc6acde92cab2db95ce30a70bd2b81d20b12eff3f1aabaffcbe8a93918", - "sha256:e73ebb404098db405ba95d1e1ae0aa91c3e15a71da031a2eeb6b2e23e7bc3708" + "sha256:22f1915393bb3245343f6efe87f6fe868532efc12aa26b391b15132e1279f1c0", + "sha256:8a64866a97f6304a7179873a465d6eee97b7a24ec6cfd78e0f575e96b821240b" ], "markers": "python_version >= '3.7'", - "version": "==1.60.0" + "version": "==1.61.0" }, "greenlet": { "hashes": [ - "sha256:03a8f4f3430c3b3ff8d10a2a86028c660355ab637cee9333d63d66b56f09d52a", - "sha256:0bf60faf0bc2468089bdc5edd10555bab6e85152191df713e2ab1fcc86382b5a", - "sha256:1087300cf9700bbf455b1b97e24db18f2f77b55302a68272c56209d5587c12d1", - "sha256:18a7f18b82b52ee85322d7a7874e676f34ab319b9f8cce5de06067384aa8ff43", - "sha256:18e98fb3de7dba1c0a852731c3070cf022d14f0d68b4c87a19cc1016f3bb8b33", - "sha256:1a819eef4b0e0b96bb0d98d797bef17dc1b4a10e8d7446be32d1da33e095dbb8", - "sha256:26fbfce90728d82bc9e6c38ea4d038cba20b7faf8a0ca53a9c07b67318d46088", - "sha256:2780572ec463d44c1d3ae850239508dbeb9fed38e294c68d19a24d925d9223ca", - "sha256:283737e0da3f08bd637b5ad058507e578dd462db259f7f6e4c5c365ba4ee9343", - "sha256:2d4686f195e32d36b4d7cf2d166857dbd0ee9f3d20ae349b6bf8afc8485b3645", - "sha256:2dd11f291565a81d71dab10b7033395b7a3a5456e637cf997a6f33ebdf06f8db", - "sha256:30bcf80dda7f15ac77ba5af2b961bdd9dbc77fd4ac6105cee85b0d0a5fcf74df", - "sha256:32e5b64b148966d9cccc2c8d35a671409e45f195864560829f395a54226408d3", - "sha256:36abbf031e1c0f79dd5d596bfaf8e921c41df2bdf54ee1eed921ce1f52999a86", - "sha256:3a06ad5312349fec0ab944664b01d26f8d1f05009566339ac6f63f56589bc1a2", - "sha256:3a51c9751078733d88e013587b108f1b7a1fb106d402fb390740f002b6f6551a", - "sha256:3c9b12575734155d0c09d6c3e10dbd81665d5c18e1a7c6597df72fd05990c8cf", - "sha256:3f6ea9bd35eb450837a3d80e77b517ea5bc56b4647f5502cd28de13675ee12f7", - "sha256:4b58adb399c4d61d912c4c331984d60eb66565175cdf4a34792cd9600f21b394", - "sha256:4d2e11331fc0c02b6e84b0d28ece3a36e0548ee1a1ce9ddde03752d9b79bba40", - "sha256:5454276c07d27a740c5892f4907c86327b632127dd9abec42ee62e12427ff7e3", - "sha256:561091a7be172ab497a3527602d467e2b3fbe75f9e783d8b8ce403fa414f71a6", - "sha256:6c3acb79b0bfd4fe733dff8bc62695283b57949ebcca05ae5c129eb606ff2d74", - "sha256:703f18f3fda276b9a916f0934d2fb6d989bf0b4fb5a64825260eb9bfd52d78f0", - "sha256:7492e2b7bd7c9b9916388d9df23fa49d9b88ac0640db0a5b4ecc2b653bf451e3", - "sha256:76ae285c8104046b3a7f06b42f29c7b73f77683df18c49ab5af7983994c2dd91", - "sha256:7cafd1208fdbe93b67c7086876f061f660cfddc44f404279c1585bbf3cdc64c5", - "sha256:7efde645ca1cc441d6dc4b48c0f7101e8d86b54c8530141b09fd31cef5149ec9", - "sha256:8512a0c38cfd4e66a858ddd1b17705587900dd760c6003998e9472b77b56d417", - "sha256:88d9ab96491d38a5ab7c56dd7a3cc37d83336ecc564e4e8816dbed12e5aaefc8", - "sha256:8eab883b3b2a38cc1e050819ef06a7e6344d4a990d24d45bc6f2cf959045a45b", - "sha256:910841381caba4f744a44bf81bfd573c94e10b3045ee00de0cbf436fe50673a6", - "sha256:9190f09060ea4debddd24665d6804b995a9c122ef5917ab26e1566dcc712ceeb", - "sha256:937e9020b514ceedb9c830c55d5c9872abc90f4b5862f89c0887033ae33c6f73", - "sha256:94c817e84245513926588caf1152e3b559ff794d505555211ca041f032abbb6b", - "sha256:971ce5e14dc5e73715755d0ca2975ac88cfdaefcaab078a284fea6cfabf866df", - "sha256:9d14b83fab60d5e8abe587d51c75b252bcc21683f24699ada8fb275d7712f5a9", - "sha256:9f35ec95538f50292f6d8f2c9c9f8a3c6540bbfec21c9e5b4b751e0a7c20864f", - "sha256:a1846f1b999e78e13837c93c778dcfc3365902cfb8d1bdb7dd73ead37059f0d0", - "sha256:acd2162a36d3de67ee896c43effcd5ee3de247eb00354db411feb025aa319857", - "sha256:b0ef99cdbe2b682b9ccbb964743a6aca37905fda5e0452e5ee239b1654d37f2a", - "sha256:b80f600eddddce72320dbbc8e3784d16bd3fb7b517e82476d8da921f27d4b249", - "sha256:b864ba53912b6c3ab6bcb2beb19f19edd01a6bfcbdfe1f37ddd1778abfe75a30", - "sha256:b9ec052b06a0524f0e35bd8790686a1da006bd911dd1ef7d50b77bfbad74e292", - "sha256:ba2956617f1c42598a308a84c6cf021a90ff3862eddafd20c3333d50f0edb45b", - "sha256:bdfea8c661e80d3c1c99ad7c3ff74e6e87184895bbaca6ee8cc61209f8b9b85d", - "sha256:be4ed120b52ae4d974aa40215fcdfde9194d63541c7ded40ee12eb4dda57b76b", - "sha256:c4302695ad8027363e96311df24ee28978162cdcdd2006476c43970b384a244c", - "sha256:c48f54ef8e05f04d6eff74b8233f6063cb1ed960243eacc474ee73a2ea8573ca", - "sha256:c9c59a2120b55788e800d82dfa99b9e156ff8f2227f07c5e3012a45a399620b7", - "sha256:cd021c754b162c0fb55ad5d6b9d960db667faad0fa2ff25bb6e1301b0b6e6a75", - "sha256:d27ec7509b9c18b6d73f2f5ede2622441de812e7b1a80bbd446cb0633bd3d5ae", - "sha256:d4606a527e30548153be1a9f155f4e283d109ffba663a15856089fb55f933e47", - "sha256:d5508f0b173e6aa47273bdc0a0b5ba055b59662ba7c7ee5119528f466585526b", - "sha256:d75209eed723105f9596807495d58d10b3470fa6732dd6756595e89925ce2470", - "sha256:d967650d3f56af314b72df7089d96cda1083a7fc2da05b375d2bc48c82ab3f3c", - "sha256:db1a39669102a1d8d12b57de2bb7e2ec9066a6f2b3da35ae511ff93b01b5d564", - "sha256:dbfcfc0218093a19c252ca8eb9aee3d29cfdcb586df21049b9d777fd32c14fd9", - "sha256:e0f72c9ddb8cd28532185f54cc1453f2c16fb417a08b53a855c4e6a418edd099", - "sha256:e7c8dc13af7db097bed64a051d2dd49e9f0af495c26995c00a9ee842690d34c0", - "sha256:ea9872c80c132f4663822dd2a08d404073a5a9b5ba6155bea72fb2a79d1093b5", - "sha256:eff4eb9b7eb3e4d0cae3d28c283dc16d9bed6b193c2e1ace3ed86ce48ea8df19", - "sha256:f82d4d717d8ef19188687aa32b8363e96062911e63ba22a0cff7802a8e58e5f1", - "sha256:fc3a569657468b6f3fb60587e48356fe512c1754ca05a564f11366ac9e306526" + "sha256:02a807b2a58d5cdebb07050efe3d7deaf915468d112dfcf5e426d0564aa3aa4a", + "sha256:0b72b802496cccbd9b31acea72b6f87e7771ccfd7f7927437d592e5c92ed703c", + "sha256:0d3f83ffb18dc57243e0151331e3c383b05e5b6c5029ac29f754745c800f8ed9", + "sha256:10b5582744abd9858947d163843d323d0b67be9432db50f8bf83031032bc218d", + "sha256:123910c58234a8d40eaab595bc56a5ae49bdd90122dde5bdc012c20595a94c14", + "sha256:1482fba7fbed96ea7842b5a7fc11d61727e8be75a077e603e8ab49d24e234383", + "sha256:19834e3f91f485442adc1ee440171ec5d9a4840a1f7bd5ed97833544719ce10b", + "sha256:1d363666acc21d2c204dd8705c0e0457d7b2ee7a76cb16ffc099d6799744ac99", + "sha256:211ef8d174601b80e01436f4e6905aca341b15a566f35a10dd8d1e93f5dbb3b7", + "sha256:269d06fa0f9624455ce08ae0179430eea61085e3cf6457f05982b37fd2cefe17", + "sha256:2e7dcdfad252f2ca83c685b0fa9fba00e4d8f243b73839229d56ee3d9d219314", + "sha256:334ef6ed8337bd0b58bb0ae4f7f2dcc84c9f116e474bb4ec250a8bb9bd797a66", + "sha256:343675e0da2f3c69d3fb1e894ba0a1acf58f481f3b9372ce1eb465ef93cf6fed", + "sha256:37f60b3a42d8b5499be910d1267b24355c495064f271cfe74bf28b17b099133c", + "sha256:38ad562a104cd41e9d4644f46ea37167b93190c6d5e4048fcc4b80d34ecb278f", + "sha256:3c0d36f5adc6e6100aedbc976d7428a9f7194ea79911aa4bf471f44ee13a9464", + "sha256:3fd2b18432e7298fcbec3d39e1a0aa91ae9ea1c93356ec089421fabc3651572b", + "sha256:4a1a6244ff96343e9994e37e5b4839f09a0207d35ef6134dce5c20d260d0302c", + "sha256:4cd83fb8d8e17633ad534d9ac93719ef8937568d730ef07ac3a98cb520fd93e4", + "sha256:527cd90ba3d8d7ae7dceb06fda619895768a46a1b4e423bdb24c1969823b8362", + "sha256:56867a3b3cf26dc8a0beecdb4459c59f4c47cdd5424618c08515f682e1d46692", + "sha256:621fcb346141ae08cb95424ebfc5b014361621b8132c48e538e34c3c93ac7365", + "sha256:63acdc34c9cde42a6534518e32ce55c30f932b473c62c235a466469a710bfbf9", + "sha256:6512592cc49b2c6d9b19fbaa0312124cd4c4c8a90d28473f86f92685cc5fef8e", + "sha256:6672fdde0fd1a60b44fb1751a7779c6db487e42b0cc65e7caa6aa686874e79fb", + "sha256:6a5b2d4cdaf1c71057ff823a19d850ed5c6c2d3686cb71f73ae4d6382aaa7a06", + "sha256:6a68d670c8f89ff65c82b936275369e532772eebc027c3be68c6b87ad05ca695", + "sha256:6bb36985f606a7c49916eff74ab99399cdfd09241c375d5a820bb855dfb4af9f", + "sha256:73b2f1922a39d5d59cc0e597987300df3396b148a9bd10b76a058a2f2772fc04", + "sha256:7709fd7bb02b31908dc8fd35bfd0a29fc24681d5cc9ac1d64ad07f8d2b7db62f", + "sha256:8060b32d8586e912a7b7dac2d15b28dbbd63a174ab32f5bc6d107a1c4143f40b", + "sha256:80dcd3c938cbcac986c5c92779db8e8ce51a89a849c135172c88ecbdc8c056b7", + "sha256:813720bd57e193391dfe26f4871186cf460848b83df7e23e6bef698a7624b4c9", + "sha256:831d6f35037cf18ca5e80a737a27d822d87cd922521d18ed3dbc8a6967be50ce", + "sha256:871b0a8835f9e9d461b7fdaa1b57e3492dd45398e87324c047469ce2fc9f516c", + "sha256:952256c2bc5b4ee8df8dfc54fc4de330970bf5d79253c863fb5e6761f00dda35", + "sha256:96d9ea57292f636ec851a9bb961a5cc0f9976900e16e5d5647f19aa36ba6366b", + "sha256:9a812224a5fb17a538207e8cf8e86f517df2080c8ee0f8c1ed2bdaccd18f38f4", + "sha256:9adbd8ecf097e34ada8efde9b6fec4dd2a903b1e98037adf72d12993a1c80b51", + "sha256:9de687479faec7db5b198cc365bc34addd256b0028956501f4d4d5e9ca2e240a", + "sha256:a048293392d4e058298710a54dfaefcefdf49d287cd33fb1f7d63d55426e4355", + "sha256:aa15a2ec737cb609ed48902b45c5e4ff6044feb5dcdfcf6fa8482379190330d7", + "sha256:abe1ef3d780de56defd0c77c5ba95e152f4e4c4e12d7e11dd8447d338b85a625", + "sha256:ad6fb737e46b8bd63156b8f59ba6cdef46fe2b7db0c5804388a2d0519b8ddb99", + "sha256:b1660a15a446206c8545edc292ab5c48b91ff732f91b3d3b30d9a915d5ec4779", + "sha256:b505fcfc26f4148551826a96f7317e02c400665fa0883fe505d4fcaab1dabfdd", + "sha256:b822fab253ac0f330ee807e7485769e3ac85d5eef827ca224feaaefa462dc0d0", + "sha256:bdd696947cd695924aecb3870660b7545a19851f93b9d327ef8236bfc49be705", + "sha256:bdfaeecf8cc705d35d8e6de324bf58427d7eafb55f67050d8f28053a3d57118c", + "sha256:be557119bf467d37a8099d91fbf11b2de5eb1fd5fc5b91598407574848dc910f", + "sha256:c6b5ce7f40f0e2f8b88c28e6691ca6806814157ff05e794cdd161be928550f4c", + "sha256:c94e4e924d09b5a3e37b853fe5924a95eac058cb6f6fb437ebb588b7eda79870", + "sha256:cc3e2679ea13b4de79bdc44b25a0c4fcd5e94e21b8f290791744ac42d34a0353", + "sha256:d1e22c22f7826096ad503e9bb681b05b8c1f5a8138469b255eb91f26a76634f2", + "sha256:d5539f6da3418c3dc002739cb2bb8d169056aa66e0c83f6bacae0cd3ac26b423", + "sha256:d55db1db455c59b46f794346efce896e754b8942817f46a1bada2d29446e305a", + "sha256:e09dea87cc91aea5500262993cbd484b41edf8af74f976719dd83fe724644cd6", + "sha256:e52a712c38e5fb4fd68e00dc3caf00b60cb65634d50e32281a9d6431b33b4af1", + "sha256:e693e759e172fa1c2c90d35dea4acbdd1d609b6936115d3739148d5e4cd11947", + "sha256:ecf94aa539e97a8411b5ea52fc6ccd8371be9550c4041011a091eb8b3ca1d810", + "sha256:f351479a6914fd81a55c8e68963609f792d9b067fb8a60a042c585a621e0de4f", + "sha256:f47932c434a3c8d3c86d865443fadc1fbf574e9b11d6650b656e602b1797908a" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==2.0.2" + "markers": "python_version >= '3.7'", + "version": "==3.0.0" }, "grpc-google-iam-v1": { "hashes": [ @@ -493,53 +514,62 @@ }, "grpcio": { "hashes": [ - "sha256:002f228d197fea12797a14e152447044e14fb4fdb2eb5d6cfa496f29ddbf79ef", - "sha256:039003a5e0ae7d41c86c768ef8b3ee2c558aa0a23cf04bf3c23567f37befa092", - "sha256:09206106848462763f7f273ca93d2d2d4d26cab475089e0de830bb76be04e9e8", - "sha256:128eb1f8e70676d05b1b0c8e6600320fc222b3f8c985a92224248b1367122188", - "sha256:1c1c5238c6072470c7f1614bf7c774ffde6b346a100521de9ce791d1e4453afe", - "sha256:1ed979b273a81de36fc9c6716d9fb09dd3443efa18dcc8652501df11da9583e9", - "sha256:201e550b7e2ede113b63e718e7ece93cef5b0fbf3c45e8fe4541a5a4305acd15", - "sha256:212f38c6a156862098f6bdc9a79bf850760a751d259d8f8f249fc6d645105855", - "sha256:24765a627eb4d9288ace32d5104161c3654128fe27f2808ecd6e9b0cfa7fc8b9", - "sha256:24edec346e69e672daf12b2c88e95c6f737f3792d08866101d8c5f34370c54fd", - "sha256:2ef8d4a76d2c7d8065aba829f8d0bc0055495c998dce1964ca5b302d02514fb3", - "sha256:2f85f87e2f087d9f632c085b37440a3169fda9cdde80cb84057c2fc292f8cbdf", - "sha256:3886b4d56bd4afeac518dbc05933926198aa967a7d1d237a318e6fbc47141577", - "sha256:3e6bebf1dfdbeb22afd95650e4f019219fef3ab86d3fca8ebade52e4bc39389a", - "sha256:458899d2ebd55d5ca2350fd3826dfd8fcb11fe0f79828ae75e2b1e6051d50a29", - "sha256:4891bbb4bba58acd1d620759b3be11245bfe715eb67a4864c8937b855b7ed7fa", - "sha256:4b12754af201bb993e6e2efd7812085ddaaef21d0a6f0ff128b97de1ef55aa4a", - "sha256:532410c51ccd851b706d1fbc00a87be0f5312bd6f8e5dbf89d4e99c7f79d7499", - "sha256:5b23d75e5173faa3d1296a7bedffb25afd2fddb607ef292dfc651490c7b53c3d", - "sha256:62831d5e251dd7561d9d9e83a0b8655084b2a1f8ea91e4bd6b3cedfefd32c9d2", - "sha256:652978551af02373a5a313e07bfef368f406b5929cf2d50fa7e4027f913dbdb4", - "sha256:6801ff6652ecd2aae08ef994a3e49ff53de29e69e9cd0fd604a79ae4e545a95c", - "sha256:6cba491c638c76d3dc6c191d9c75041ca5b8f5c6de4b8327ecdcab527f130bb4", - "sha256:7e473a7abad9af48e3ab5f3b5d237d18208024d28ead65a459bd720401bd2f8f", - "sha256:8774219e21b05f750eef8adc416e9431cf31b98f6ce9def288e4cea1548cbd22", - "sha256:8f061722cad3f9aabb3fbb27f3484ec9d4667b7328d1a7800c3c691a98f16bb0", - "sha256:92ae871a902cf19833328bd6498ec007b265aabf2fda845ab5bd10abcaf4c8c6", - "sha256:9f13a171281ebb4d7b1ba9f06574bce2455dcd3f2f6d1fbe0fd0d84615c74045", - "sha256:a2d67ff99e70e86b2be46c1017ae40b4840d09467d5455b2708de6d4c127e143", - "sha256:b5e8db0aff0a4819946215f156bd722b6f6c8320eb8419567ffc74850c9fd205", - "sha256:ba0af11938acf8cd4cf815c46156bcde36fa5850518120920d52620cc3ec1830", - "sha256:bc325fed4d074367bebd465a20763586e5e1ed5b943e9d8bc7c162b1f44fd602", - "sha256:bc7ffef430b80345729ff0a6825e9d96ac87efe39216e87ac58c6c4ef400de93", - "sha256:cde11577d5b6fd73a00e6bfa3cf5f428f3f33c2d2878982369b5372bbc4acc60", - "sha256:d4cef77ad2fed42b1ba9143465856d7e737279854e444925d5ba45fc1f3ba727", - "sha256:d79b660681eb9bc66cc7cbf78d1b1b9e335ee56f6ea1755d34a31108b80bd3c8", - "sha256:d81c2b2b24c32139dd2536972f1060678c6b9fbd106842a9fcdecf07b233eccd", - "sha256:dc72e04620d49d3007771c0e0348deb23ca341c0245d610605dddb4ac65a37cb", - "sha256:dcfba7befe3a55dab6fe1eb7fc9359dc0c7f7272b30a70ae0af5d5b063842f28", - "sha256:e9f995a8a421405958ff30599b4d0eec244f28edc760de82f0412c71c61763d2", - "sha256:eb6b92036ff312d5b4182fa72e8735d17aceca74d0d908a7f08e375456f03e07", - "sha256:f0241f7eb0d2303a545136c59bc565a35c4fc3b924ccbd69cb482f4828d6f31c", - "sha256:fad9295fe02455d4f158ad72c90ef8b4bcaadfdb5efb5795f7ab0786ad67dd58", - "sha256:fbcecb6aedd5c1891db1d70efbfbdc126c986645b5dd616a045c07d6bd2dfa86", - "sha256:fe643af248442221db027da43ed43e53b73e11f40c9043738de9a2b4b6ca7697" - ], - "version": "==1.58.0" + "sha256:0ae444221b2c16d8211b55326f8ba173ba8f8c76349bfc1768198ba592b58f74", + "sha256:0b84445fa94d59e6806c10266b977f92fa997db3585f125d6b751af02ff8b9fe", + "sha256:14890da86a0c0e9dc1ea8e90101d7a3e0e7b1e71f4487fab36e2bfd2ecadd13c", + "sha256:15f03bd714f987d48ae57fe092cf81960ae36da4e520e729392a59a75cda4f29", + "sha256:1a839ba86764cc48226f50b924216000c79779c563a301586a107bda9cbe9dcf", + "sha256:225e5fa61c35eeaebb4e7491cd2d768cd8eb6ed00f2664fa83a58f29418b39fd", + "sha256:228b91ce454876d7eed74041aff24a8f04c0306b7250a2da99d35dd25e2a1211", + "sha256:2ea95cd6abbe20138b8df965b4a8674ec312aaef3147c0f46a0bac661f09e8d0", + "sha256:2f120d27051e4c59db2f267b71b833796770d3ea36ca712befa8c5fff5da6ebd", + "sha256:34341d9e81a4b669a5f5dca3b2a760b6798e95cdda2b173e65d29d0b16692857", + "sha256:3859917de234a0a2a52132489c4425a73669de9c458b01c9a83687f1f31b5b10", + "sha256:38823bd088c69f59966f594d087d3a929d1ef310506bee9e3648317660d65b81", + "sha256:38da5310ef84e16d638ad89550b5b9424df508fd5c7b968b90eb9629ca9be4b9", + "sha256:3b8ff795d35a93d1df6531f31c1502673d1cebeeba93d0f9bd74617381507e3f", + "sha256:50eff97397e29eeee5df106ea1afce3ee134d567aa2c8e04fabab05c79d791a7", + "sha256:5711c51e204dc52065f4a3327dca46e69636a0b76d3e98c2c28c4ccef9b04c52", + "sha256:598f3530231cf10ae03f4ab92d48c3be1fee0c52213a1d5958df1a90957e6a88", + "sha256:611d9aa0017fa386809bddcb76653a5ab18c264faf4d9ff35cb904d44745f575", + "sha256:61bc72a00ecc2b79d9695220b4d02e8ba53b702b42411397e831c9b0589f08a3", + "sha256:63982150a7d598281fa1d7ffead6096e543ff8be189d3235dd2b5604f2c553e5", + "sha256:6c4b1cc3a9dc1924d2eb26eec8792fedd4b3fcd10111e26c1d551f2e4eda79ce", + "sha256:81d86a096ccd24a57fa5772a544c9e566218bc4de49e8c909882dae9d73392df", + "sha256:849c47ef42424c86af069a9c5e691a765e304079755d5c29eff511263fad9c2a", + "sha256:871371ce0c0055d3db2a86fdebd1e1d647cf21a8912acc30052660297a5a6901", + "sha256:8cd2d38c2d52f607d75a74143113174c36d8a416d9472415eab834f837580cf7", + "sha256:936b2e04663660c600d5173bc2cc84e15adbad9c8f71946eb833b0afc205b996", + "sha256:93e9cb546e610829e462147ce724a9cb108e61647a3454500438a6deef610be1", + "sha256:956f0b7cb465a65de1bd90d5a7475b4dc55089b25042fe0f6c870707e9aabb1d", + "sha256:986de4aa75646e963466b386a8c5055c8b23a26a36a6c99052385d6fe8aaf180", + "sha256:aca8a24fef80bef73f83eb8153f5f5a0134d9539b4c436a716256b311dda90a6", + "sha256:acf70a63cf09dd494000007b798aff88a436e1c03b394995ce450be437b8e54f", + "sha256:b34c7a4c31841a2ea27246a05eed8a80c319bfc0d3e644412ec9ce437105ff6c", + "sha256:b95ec8ecc4f703f5caaa8d96e93e40c7f589bad299a2617bdb8becbcce525539", + "sha256:ba0ca727a173ee093f49ead932c051af463258b4b493b956a2c099696f38aa66", + "sha256:c041a91712bf23b2a910f61e16565a05869e505dc5a5c025d429ca6de5de842c", + "sha256:c0488c2b0528e6072010182075615620071371701733c63ab5be49140ed8f7f0", + "sha256:c173a87d622ea074ce79be33b952f0b424fa92182063c3bda8625c11d3585d09", + "sha256:c251d22de8f9f5cca9ee47e4bade7c5c853e6e40743f47f5cc02288ee7a87252", + "sha256:c4dfdb49f4997dc664f30116af2d34751b91aa031f8c8ee251ce4dcfc11277b0", + "sha256:ca87ee6183421b7cea3544190061f6c1c3dfc959e0b57a5286b108511fd34ff4", + "sha256:ceb1e68135788c3fce2211de86a7597591f0b9a0d2bb80e8401fd1d915991bac", + "sha256:d09bd2a4e9f5a44d36bb8684f284835c14d30c22d8ec92ce796655af12163588", + "sha256:d0fcf53df684fcc0154b1e61f6b4a8c4cf5f49d98a63511e3f30966feff39cd0", + "sha256:d74f7d2d7c242a6af9d4d069552ec3669965b74fed6b92946e0e13b4168374f9", + "sha256:de2599985b7c1b4ce7526e15c969d66b93687571aa008ca749d6235d056b7205", + "sha256:e5378785dce2b91eb2e5b857ec7602305a3b5cf78311767146464bfa365fc897", + "sha256:ec78aebb9b6771d6a1de7b6ca2f779a2f6113b9108d486e904bde323d51f5589", + "sha256:f1feb034321ae2f718172d86b8276c03599846dc7bb1792ae370af02718f91c5", + "sha256:f21917aa50b40842b51aff2de6ebf9e2f6af3fe0971c31960ad6a3a2b24988f4", + "sha256:f367e4b524cb319e50acbdea57bb63c3b717c5d561974ace0b065a648bb3bad3", + "sha256:f6cfe44a5d7c7d5f1017a7da1c8160304091ca5dc64a0f85bca0d63008c3137a", + "sha256:fa66cac32861500f280bb60fe7d5b3e22d68c51e18e65367e38f8669b78cea3b", + "sha256:fc8bf2e7bc725e76c0c11e474634a08c8f24bcf7426c0c6d60c8f9c6e70e4d4a", + "sha256:fe976910de34d21057bcb53b2c5e667843588b48bf11339da2a75f5c4c5b4055" + ], + "version": "==1.59.0" }, "grpcio-status": { "hashes": [ @@ -598,39 +628,40 @@ }, "libcst": { "hashes": [ - "sha256:0138068baf09561268c7f079373bda45f0e2b606d2d19df1307ca8a5134fc465", - "sha256:119ba709f1dcb785a4458cf36cedb51d6f9cb2eec0acd7bb171f730eac7cb6ce", - "sha256:1adcfa7cafb6a0d39a1a0bec541355608038b45815e0c5019c95f91921d42884", - "sha256:37187337f979ba426d8bfefc08008c3c1b09b9e9f9387050804ed2da88107570", - "sha256:414350df5e334ddf0db1732d63da44e81b734d45abe1c597b5e5c0dd46aa4156", - "sha256:440887e5f82efb299f2e98d4bfa5663851a878cfc0efed652ab8c50205191436", - "sha256:47dba43855e9c7b06d8b256ee81f0ebec6a4f43605456519577e09dfe4b4288c", - "sha256:4840a3de701778f0a19582bb3085c61591329153f801dc25da84689a3733960b", - "sha256:4b4e336f6d68456017671cdda8ddebf9caebce8052cc21a3f494b03d7bd28386", - "sha256:5599166d5fec40e18601fb8868519dde99f77b6e4ad6074958018f9545da7abd", - "sha256:5e3293e77657ba62533553bb9f0c5fb173780e164c65db1ea2a3e0d03944a284", - "sha256:600c4d3a9a2f75d5a055fed713a5a4d812709947909610aa6527abe08a31896f", - "sha256:6caa33430c0c7a0fcad921b0deeec61ddb96796b6f88dca94966f6db62065f4f", - "sha256:80423311f09fc5fc3270ede44d30d9d8d3c2d3dd50dbf703a581ca7346949fa6", - "sha256:8420926791b0b6206cb831a7ec73d26ae820e65bdf07ce9813c7754c7722c07a", - "sha256:8c50541c3fd6b1d5a3765c4bb5ee8ecbba9d0e798e48f79fd5adf3b6752de4d0", - "sha256:8d31ce2790eab59c1bd8e33fe72d09cfc78635c145bdc3f08296b360abb5f443", - "sha256:967c66fabd52102954207bf1541312b467afc210fdf7033f32da992fb6c2372c", - "sha256:9a4931feceab171e6fce73de94e13880424367247dad6ff2b49cabfec733e144", - "sha256:9d6dec2a3c443792e6af7c36fadc256e4ea586214c76b52f0d18118811dbe351", - "sha256:a6b5aea04c35e13109edad3cf83bc6dcd74309b150a781d2189eecb288b73a87", - "sha256:ae49dcbfadefb82e830d41d9f0a1db0af3b771224768f431f1b7b3a9803ed7e3", - "sha256:ae7f4e71d714f256b5f2ff98b5a9effba0f9dff4d779d8f35d7eb157bef78f59", - "sha256:b0533de4e35396c61aeb3a6266ac30369a855910c2385aaa902ff4aabd60d409", - "sha256:b666a605f4205c8357696f3b6571a38f6a8537cdcbb8f357587d35168298af34", - "sha256:b97f652b15c50e91df411a9c8d5e6f75882b30743a49b387dcedd3f68ed94d75", - "sha256:c90c74a8a314f0774f045122323fb60bacba79cbf5f71883c0848ecd67179541", - "sha256:d237e9164a43caa7d6765ee560412264484e7620c546a2ee10a8d01bd56884e0", - "sha256:ddd4e0eeec499d1c824ab545e62e957dbbd69a16bc4273208817638eb7d6b3c6", - "sha256:f2cb687e1514625e91024e50a5d2e485c0ad3be24f199874ebf32b5de0346150" + "sha256:003e5e83a12eed23542c4ea20fdc8de830887cc03662432bb36f84f8c4841b81", + "sha256:0acbacb9a170455701845b7e940e2d7b9519db35a86768d86330a0b0deae1086", + "sha256:0bf69cbbab5016d938aac4d3ae70ba9ccb3f90363c588b3b97be434e6ba95403", + "sha256:2d37326bd6f379c64190a28947a586b949de3a76be00176b0732c8ee87d67ebe", + "sha256:3a07ecfabbbb8b93209f952a365549e65e658831e9231649f4f4e4263cad24b1", + "sha256:3ebbb9732ae3cc4ae7a0e97890bed0a57c11d6df28790c2b9c869f7da653c7c7", + "sha256:4bc745d0c06420fe2644c28d6ddccea9474fb68a2135904043676deb4fa1e6bc", + "sha256:5297a16e575be8173185e936b7765c89a3ca69d4ae217a4af161814a0f9745a7", + "sha256:5f1cd308a4c2f71d5e4eec6ee693819933a03b78edb2e4cc5e3ad1afd5fb3f07", + "sha256:63f75656fd733dc20354c46253fde3cf155613e37643c3eaf6f8818e95b7a3d1", + "sha256:73c086705ed34dbad16c62c9adca4249a556c1b022993d511da70ea85feaf669", + "sha256:75816647736f7e09c6120bdbf408456f99b248d6272277eed9a58cf50fb8bc7d", + "sha256:78b7a38ec4c1c009ac39027d51558b52851fb9234669ba5ba62283185963a31c", + "sha256:7ccaf53925f81118aeaadb068a911fac8abaff608817d7343da280616a5ca9c1", + "sha256:82d1271403509b0a4ee6ff7917c2d33b5a015f44d1e208abb1da06ba93b2a378", + "sha256:8ae11eb1ea55a16dc0cdc61b41b29ac347da70fec14cc4381248e141ee2fbe6c", + "sha256:8afb6101b8b3c86c5f9cec6b90ab4da16c3c236fe7396f88e8b93542bb341f7c", + "sha256:8c1f2da45f1c45634090fd8672c15e0159fdc46853336686959b2d093b6e10fa", + "sha256:97fbc73c87e9040e148881041fd5ffa2a6ebf11f64b4ccb5b52e574b95df1a15", + "sha256:99fdc1929703fd9e7408aed2e03f58701c5280b05c8911753a8d8619f7dfdda5", + "sha256:9dffa1795c2804d183efb01c0f1efd20a7831db6a21a0311edf90b4100d67436", + "sha256:bca1841693941fdd18371824bb19a9702d5784cd347cb8231317dbdc7062c5bc", + "sha256:c653d9121d6572d8b7f8abf20f88b0a41aab77ff5a6a36e5a0ec0f19af0072e8", + "sha256:c8f26250f87ca849a7303ed7a4fd6b2c7ac4dec16b7d7e68ca6a476d7c9bfcdb", + "sha256:cc9b6ac36d7ec9db2f053014ea488086ca2ed9c322be104fbe2c71ca759da4bb", + "sha256:d22d1abfe49aa60fc61fa867e10875a9b3024ba5a801112f4d7ba42d8d53242e", + "sha256:d68c34e3038d3d1d6324eb47744cbf13f2c65e1214cf49db6ff2a6603c1cd838", + "sha256:e3d8cf974cfa2487b28f23f56c4bff90d550ef16505e58b0dca0493d5293784b", + "sha256:f36f592e035ef84f312a12b75989dde6a5f6767fe99146cdae6a9ee9aff40dd0", + "sha256:f561c9a84eca18be92f4ad90aa9bd873111efbea995449301719a1a7805dbc5c", + "sha256:fe41b33aa73635b1651f64633f429f7aa21f86d2db5748659a99d9b7b1ed2a90" ], - "markers": "python_version >= '3.7'", - "version": "==1.0.1" + "markers": "python_version >= '3.8'", + "version": "==1.1.0" }, "libsass": { "hashes": [ @@ -785,6 +816,7 @@ "sha256:a6f5977418eff3b2d5500d54d9db50c8277a368436f4e4f8ddb1be3422870184", "sha256:f91456ead12ab3c6c2e9491cf33ba6d08357d802192379bb482f1033ade496f5" ], + "markers": "python_version >= '3.6'", "version": "==3.1.2" }, "pandas": { @@ -1004,6 +1036,14 @@ "markers": "python_version >= '3.7'", "version": "==2.6.0" }, + "pyotp": { + "hashes": [ + "sha256:346b6642e0dbdde3b4ff5a930b664ca82abfa116356ed48cc42c7d6590d36f63", + "sha256:81c2e5865b8ac55e825b0358e496e1d9387c811e85bb40e71a3b29b288963612" + ], + "markers": "python_version >= '3.7'", + "version": "==2.9.0" + }, "pypng": { "hashes": [ "sha256:4a43e969b8f5aaafb2a415536c1a8ec7e341cd6a3f957fd5b5f32a4cfeed902c", @@ -1016,7 +1056,7 @@ "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86", "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", "version": "==2.8.2" }, "pytz": { @@ -1149,7 +1189,7 @@ "sha256:90260d9058e514786967344d0ef75fa8727eed8a7d2e43ce9f4bcf1b536174f7", "sha256:e38464a49c6c85d7f1351b0126661487a7e0a14a50f1675ec50eb34d4f20ef21" ], - "markers": "python_version >= '3.6'", + "markers": "python_version >= '3.6' and python_version < '4'", "version": "==4.9" }, "setuptools": { @@ -1165,7 +1205,7 @@ "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", "version": "==1.16.0" }, "sortedcontainers": { @@ -1223,27 +1263,27 @@ }, "urllib3": { "hashes": [ - "sha256:8d22f86aae8ef5e410d4f539fde9ce6b2113a001bb4d189e0aed70642d602b11", - "sha256:de7df1803967d2c2a98e4b11bb7d6bd9210474c46e8a0401514e3a42a75ebde4" + "sha256:7a7c7003b000adf9e7ca2a377c9688bbc54ed41b985789ed576570342a375cd2", + "sha256:b19e1a85d206b56d7df1d5e683df4a7725252a964e3993648dd0fb5a1c157564" ], "markers": "python_version >= '3.7'", - "version": "==2.0.4" + "version": "==2.0.6" }, "websocket-client": { "hashes": [ - "sha256:3aad25d31284266bcfcfd1fd8a743f63282305a364b8d0948a43bd606acc652f", - "sha256:6cfc30d051ebabb73a5fa246efdcc14c8fbebbd0330f8984ac3bb6d9edd2ad03" + "sha256:084072e0a7f5f347ef2ac3d8698a5e0b4ffbfcab607628cadabc650fc9a83a24", + "sha256:b3324019b3c28572086c4a319f91d1dcd44e6e11cd340232978c684a7650d0df" ], "markers": "python_version >= '3.8'", - "version": "==1.6.3" + "version": "==1.6.4" }, "werkzeug": { "hashes": [ - "sha256:2b8c0e447b4b9dbcc85dd97b6eeb4dcbaf6c8b6c3be0bd654e25553e0a2157d8", - "sha256:effc12dba7f3bd72e605ce49807bbe692bd729c3bb122a3b91747a6ae77df528" + "sha256:3ffff4dcc32db52ef3cc94dff3000a3c2846890f3a5a51800a27b909c5e770f0", + "sha256:cbb2600f7eabe51dbc0502f58be0b3e1b96b893b05695ea2b35b43d4de2d9962" ], "markers": "python_version >= '3.8'", - "version": "==2.3.7" + "version": "==3.0.0" }, "whitenoise": { "hashes": [ @@ -1258,6 +1298,7 @@ "sha256:6a33ee89877bd9abc1158129f6e94be74e2679636b8a205b43b85206c3f0bbdd", "sha256:f72f148f54442c6b056bf931dbc34f986fd0c3b0b6b5a58d013c9aef274d0c88" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", "version": "==2.0.1" }, "xlwt": { @@ -1323,84 +1364,99 @@ }, "charset-normalizer": { "hashes": [ - "sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96", - "sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c", - "sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710", - "sha256:1000fba1057b92a65daec275aec30586c3de2401ccdcd41f8a5c1e2c87078706", - "sha256:1249cbbf3d3b04902ff081ffbb33ce3377fa6e4c7356f759f3cd076cc138d020", - "sha256:1920d4ff15ce893210c1f0c0e9d19bfbecb7983c76b33f046c13a8ffbd570252", - "sha256:193cbc708ea3aca45e7221ae58f0fd63f933753a9bfb498a3b474878f12caaad", - "sha256:1a100c6d595a7f316f1b6f01d20815d916e75ff98c27a01ae817439ea7726329", - "sha256:1f30b48dd7fa1474554b0b0f3fdfdd4c13b5c737a3c6284d3cdc424ec0ffff3a", - "sha256:203f0c8871d5a7987be20c72442488a0b8cfd0f43b7973771640fc593f56321f", - "sha256:246de67b99b6851627d945db38147d1b209a899311b1305dd84916f2b88526c6", - "sha256:2dee8e57f052ef5353cf608e0b4c871aee320dd1b87d351c28764fc0ca55f9f4", - "sha256:2efb1bd13885392adfda4614c33d3b68dee4921fd0ac1d3988f8cbb7d589e72a", - "sha256:2f4ac36d8e2b4cc1aa71df3dd84ff8efbe3bfb97ac41242fbcfc053c67434f46", - "sha256:3170c9399da12c9dc66366e9d14da8bf7147e1e9d9ea566067bbce7bb74bd9c2", - "sha256:3b1613dd5aee995ec6d4c69f00378bbd07614702a315a2cf6c1d21461fe17c23", - "sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace", - "sha256:3bb7fda7260735efe66d5107fb7e6af6a7c04c7fce9b2514e04b7a74b06bf5dd", - "sha256:41b25eaa7d15909cf3ac4c96088c1f266a9a93ec44f87f1d13d4a0e86c81b982", - "sha256:45de3f87179c1823e6d9e32156fb14c1927fcc9aba21433f088fdfb555b77c10", - "sha256:46fb8c61d794b78ec7134a715a3e564aafc8f6b5e338417cb19fe9f57a5a9bf2", - "sha256:48021783bdf96e3d6de03a6e39a1171ed5bd7e8bb93fc84cc649d11490f87cea", - "sha256:4957669ef390f0e6719db3613ab3a7631e68424604a7b448f079bee145da6e09", - "sha256:5e86d77b090dbddbe78867a0275cb4df08ea195e660f1f7f13435a4649e954e5", - "sha256:6339d047dab2780cc6220f46306628e04d9750f02f983ddb37439ca47ced7149", - "sha256:681eb3d7e02e3c3655d1b16059fbfb605ac464c834a0c629048a30fad2b27489", - "sha256:6c409c0deba34f147f77efaa67b8e4bb83d2f11c8806405f76397ae5b8c0d1c9", - "sha256:7095f6fbfaa55defb6b733cfeb14efaae7a29f0b59d8cf213be4e7ca0b857b80", - "sha256:70c610f6cbe4b9fce272c407dd9d07e33e6bf7b4aa1b7ffb6f6ded8e634e3592", - "sha256:72814c01533f51d68702802d74f77ea026b5ec52793c791e2da806a3844a46c3", - "sha256:7a4826ad2bd6b07ca615c74ab91f32f6c96d08f6fcc3902ceeedaec8cdc3bcd6", - "sha256:7c70087bfee18a42b4040bb9ec1ca15a08242cf5867c58726530bdf3945672ed", - "sha256:855eafa5d5a2034b4621c74925d89c5efef61418570e5ef9b37717d9c796419c", - "sha256:8700f06d0ce6f128de3ccdbc1acaea1ee264d2caa9ca05daaf492fde7c2a7200", - "sha256:89f1b185a01fe560bc8ae5f619e924407efca2191b56ce749ec84982fc59a32a", - "sha256:8b2c760cfc7042b27ebdb4a43a4453bd829a5742503599144d54a032c5dc7e9e", - "sha256:8c2f5e83493748286002f9369f3e6607c565a6a90425a3a1fef5ae32a36d749d", - "sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6", - "sha256:94aea8eff76ee6d1cdacb07dd2123a68283cb5569e0250feab1240058f53b623", - "sha256:95eb302ff792e12aba9a8b8f8474ab229a83c103d74a750ec0bd1c1eea32e669", - "sha256:9bd9b3b31adcb054116447ea22caa61a285d92e94d710aa5ec97992ff5eb7cf3", - "sha256:9e608aafdb55eb9f255034709e20d5a83b6d60c054df0802fa9c9883d0a937aa", - "sha256:a103b3a7069b62f5d4890ae1b8f0597618f628b286b03d4bc9195230b154bfa9", - "sha256:a386ebe437176aab38c041de1260cd3ea459c6ce5263594399880bbc398225b2", - "sha256:a38856a971c602f98472050165cea2cdc97709240373041b69030be15047691f", - "sha256:a401b4598e5d3f4a9a811f3daf42ee2291790c7f9d74b18d75d6e21dda98a1a1", - "sha256:a7647ebdfb9682b7bb97e2a5e7cb6ae735b1c25008a70b906aecca294ee96cf4", - "sha256:aaf63899c94de41fe3cf934601b0f7ccb6b428c6e4eeb80da72c58eab077b19a", - "sha256:b0dac0ff919ba34d4df1b6131f59ce95b08b9065233446be7e459f95554c0dc8", - "sha256:baacc6aee0b2ef6f3d308e197b5d7a81c0e70b06beae1f1fcacffdbd124fe0e3", - "sha256:bf420121d4c8dce6b889f0e8e4ec0ca34b7f40186203f06a946fa0276ba54029", - "sha256:c04a46716adde8d927adb9457bbe39cf473e1e2c2f5d0a16ceb837e5d841ad4f", - "sha256:c0b21078a4b56965e2b12f247467b234734491897e99c1d51cee628da9786959", - "sha256:c1c76a1743432b4b60ab3358c937a3fe1341c828ae6194108a94c69028247f22", - "sha256:c4983bf937209c57240cff65906b18bb35e64ae872da6a0db937d7b4af845dd7", - "sha256:c4fb39a81950ec280984b3a44f5bd12819953dc5fa3a7e6fa7a80db5ee853952", - "sha256:c57921cda3a80d0f2b8aec7e25c8aa14479ea92b5b51b6876d975d925a2ea346", - "sha256:c8063cf17b19661471ecbdb3df1c84f24ad2e389e326ccaf89e3fb2484d8dd7e", - "sha256:ccd16eb18a849fd8dcb23e23380e2f0a354e8daa0c984b8a732d9cfaba3a776d", - "sha256:cd6dbe0238f7743d0efe563ab46294f54f9bc8f4b9bcf57c3c666cc5bc9d1299", - "sha256:d62e51710986674142526ab9f78663ca2b0726066ae26b78b22e0f5e571238dd", - "sha256:db901e2ac34c931d73054d9797383d0f8009991e723dab15109740a63e7f902a", - "sha256:e03b8895a6990c9ab2cdcd0f2fe44088ca1c65ae592b8f795c3294af00a461c3", - "sha256:e1c8a2f4c69e08e89632defbfabec2feb8a8d99edc9f89ce33c4b9e36ab63037", - "sha256:e4b749b9cc6ee664a3300bb3a273c1ca8068c46be705b6c31cf5d276f8628a94", - "sha256:e6a5bf2cba5ae1bb80b154ed68a3cfa2fa00fde979a7f50d6598d3e17d9ac20c", - "sha256:e857a2232ba53ae940d3456f7533ce6ca98b81917d47adc3c7fd55dad8fab858", - "sha256:ee4006268ed33370957f55bf2e6f4d263eaf4dc3cfc473d1d90baff6ed36ce4a", - "sha256:eef9df1eefada2c09a5e7a40991b9fc6ac6ef20b1372abd48d2794a316dc0449", - "sha256:f058f6963fd82eb143c692cecdc89e075fa0828db2e5b291070485390b2f1c9c", - "sha256:f25c229a6ba38a35ae6e25ca1264621cc25d4d38dca2942a7fce0b67a4efe918", - "sha256:f2a1d0fd4242bd8643ce6f98927cf9c04540af6efa92323e9d3124f57727bfc1", - "sha256:f7560358a6811e52e9c4d142d497f1a6e10103d3a6881f18d04dbce3729c0e2c", - "sha256:f779d3ad205f108d14e99bb3859aa7dd8e9c68874617c72354d7ecaec2a054ac", - "sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa" + "sha256:02673e456dc5ab13659f85196c534dc596d4ef260e4d86e856c3b2773ce09843", + "sha256:02af06682e3590ab952599fbadac535ede5d60d78848e555aa58d0c0abbde786", + "sha256:03680bb39035fbcffe828eae9c3f8afc0428c91d38e7d61aa992ef7a59fb120e", + "sha256:0570d21da019941634a531444364f2482e8db0b3425fcd5ac0c36565a64142c8", + "sha256:09c77f964f351a7369cc343911e0df63e762e42bac24cd7d18525961c81754f4", + "sha256:0d3d5b7db9ed8a2b11a774db2bbea7ba1884430a205dbd54a32d61d7c2a190fa", + "sha256:1063da2c85b95f2d1a430f1c33b55c9c17ffaf5e612e10aeaad641c55a9e2b9d", + "sha256:12ebea541c44fdc88ccb794a13fe861cc5e35d64ed689513a5c03d05b53b7c82", + "sha256:153e7b6e724761741e0974fc4dcd406d35ba70b92bfe3fedcb497226c93b9da7", + "sha256:15b26ddf78d57f1d143bdf32e820fd8935d36abe8a25eb9ec0b5a71c82eb3895", + "sha256:1872d01ac8c618a8da634e232f24793883d6e456a66593135aeafe3784b0848d", + "sha256:187d18082694a29005ba2944c882344b6748d5be69e3a89bf3cc9d878e548d5a", + "sha256:1b2919306936ac6efb3aed1fbf81039f7087ddadb3160882a57ee2ff74fd2382", + "sha256:232ac332403e37e4a03d209a3f92ed9071f7d3dbda70e2a5e9cff1c4ba9f0678", + "sha256:23e8565ab7ff33218530bc817922fae827420f143479b753104ab801145b1d5b", + "sha256:24817cb02cbef7cd499f7c9a2735286b4782bd47a5b3516a0e84c50eab44b98e", + "sha256:249c6470a2b60935bafd1d1d13cd613f8cd8388d53461c67397ee6a0f5dce741", + "sha256:24a91a981f185721542a0b7c92e9054b7ab4fea0508a795846bc5b0abf8118d4", + "sha256:2502dd2a736c879c0f0d3e2161e74d9907231e25d35794584b1ca5284e43f596", + "sha256:250c9eb0f4600361dd80d46112213dff2286231d92d3e52af1e5a6083d10cad9", + "sha256:278c296c6f96fa686d74eb449ea1697f3c03dc28b75f873b65b5201806346a69", + "sha256:2935ffc78db9645cb2086c2f8f4cfd23d9b73cc0dc80334bc30aac6f03f68f8c", + "sha256:2f4a0033ce9a76e391542c182f0d48d084855b5fcba5010f707c8e8c34663d77", + "sha256:30a85aed0b864ac88309b7d94be09f6046c834ef60762a8833b660139cfbad13", + "sha256:380c4bde80bce25c6e4f77b19386f5ec9db230df9f2f2ac1e5ad7af2caa70459", + "sha256:3ae38d325b512f63f8da31f826e6cb6c367336f95e418137286ba362925c877e", + "sha256:3b447982ad46348c02cb90d230b75ac34e9886273df3a93eec0539308a6296d7", + "sha256:3debd1150027933210c2fc321527c2299118aa929c2f5a0a80ab6953e3bd1908", + "sha256:4162918ef3098851fcd8a628bf9b6a98d10c380725df9e04caf5ca6dd48c847a", + "sha256:468d2a840567b13a590e67dd276c570f8de00ed767ecc611994c301d0f8c014f", + "sha256:4cc152c5dd831641e995764f9f0b6589519f6f5123258ccaca8c6d34572fefa8", + "sha256:542da1178c1c6af8873e143910e2269add130a299c9106eef2594e15dae5e482", + "sha256:557b21a44ceac6c6b9773bc65aa1b4cc3e248a5ad2f5b914b91579a32e22204d", + "sha256:5707a746c6083a3a74b46b3a631d78d129edab06195a92a8ece755aac25a3f3d", + "sha256:588245972aca710b5b68802c8cad9edaa98589b1b42ad2b53accd6910dad3545", + "sha256:5adf257bd58c1b8632046bbe43ee38c04e1038e9d37de9c57a94d6bd6ce5da34", + "sha256:619d1c96099be5823db34fe89e2582b336b5b074a7f47f819d6b3a57ff7bdb86", + "sha256:63563193aec44bce707e0c5ca64ff69fa72ed7cf34ce6e11d5127555756fd2f6", + "sha256:67b8cc9574bb518ec76dc8e705d4c39ae78bb96237cb533edac149352c1f39fe", + "sha256:6a685067d05e46641d5d1623d7c7fdf15a357546cbb2f71b0ebde91b175ffc3e", + "sha256:70f1d09c0d7748b73290b29219e854b3207aea922f839437870d8cc2168e31cc", + "sha256:750b446b2ffce1739e8578576092179160f6d26bd5e23eb1789c4d64d5af7dc7", + "sha256:7966951325782121e67c81299a031f4c115615e68046f79b85856b86ebffc4cd", + "sha256:7b8b8bf1189b3ba9b8de5c8db4d541b406611a71a955bbbd7385bbc45fcb786c", + "sha256:7f5d10bae5d78e4551b7be7a9b29643a95aded9d0f602aa2ba584f0388e7a557", + "sha256:805dfea4ca10411a5296bcc75638017215a93ffb584c9e344731eef0dcfb026a", + "sha256:81bf654678e575403736b85ba3a7867e31c2c30a69bc57fe88e3ace52fb17b89", + "sha256:82eb849f085624f6a607538ee7b83a6d8126df6d2f7d3b319cb837b289123078", + "sha256:85a32721ddde63c9df9ebb0d2045b9691d9750cb139c161c80e500d210f5e26e", + "sha256:86d1f65ac145e2c9ed71d8ffb1905e9bba3a91ae29ba55b4c46ae6fc31d7c0d4", + "sha256:86f63face3a527284f7bb8a9d4f78988e3c06823f7bea2bd6f0e0e9298ca0403", + "sha256:8eaf82f0eccd1505cf39a45a6bd0a8cf1c70dcfc30dba338207a969d91b965c0", + "sha256:93aa7eef6ee71c629b51ef873991d6911b906d7312c6e8e99790c0f33c576f89", + "sha256:96c2b49eb6a72c0e4991d62406e365d87067ca14c1a729a870d22354e6f68115", + "sha256:9cf3126b85822c4e53aa28c7ec9869b924d6fcfb76e77a45c44b83d91afd74f9", + "sha256:9fe359b2e3a7729010060fbca442ca225280c16e923b37db0e955ac2a2b72a05", + "sha256:a0ac5e7015a5920cfce654c06618ec40c33e12801711da6b4258af59a8eff00a", + "sha256:a3f93dab657839dfa61025056606600a11d0b696d79386f974e459a3fbc568ec", + "sha256:a4b71f4d1765639372a3b32d2638197f5cd5221b19531f9245fcc9ee62d38f56", + "sha256:aae32c93e0f64469f74ccc730a7cb21c7610af3a775157e50bbd38f816536b38", + "sha256:aaf7b34c5bc56b38c931a54f7952f1ff0ae77a2e82496583b247f7c969eb1479", + "sha256:abecce40dfebbfa6abf8e324e1860092eeca6f7375c8c4e655a8afb61af58f2c", + "sha256:abf0d9f45ea5fb95051c8bfe43cb40cda383772f7e5023a83cc481ca2604d74e", + "sha256:ac71b2977fb90c35d41c9453116e283fac47bb9096ad917b8819ca8b943abecd", + "sha256:ada214c6fa40f8d800e575de6b91a40d0548139e5dc457d2ebb61470abf50186", + "sha256:b09719a17a2301178fac4470d54b1680b18a5048b481cb8890e1ef820cb80455", + "sha256:b1121de0e9d6e6ca08289583d7491e7fcb18a439305b34a30b20d8215922d43c", + "sha256:b3b2316b25644b23b54a6f6401074cebcecd1244c0b8e80111c9a3f1c8e83d65", + "sha256:b3d9b48ee6e3967b7901c052b670c7dda6deb812c309439adaffdec55c6d7b78", + "sha256:b5bcf60a228acae568e9911f410f9d9e0d43197d030ae5799e20dca8df588287", + "sha256:b8f3307af845803fb0b060ab76cf6dd3a13adc15b6b451f54281d25911eb92df", + "sha256:c2af80fb58f0f24b3f3adcb9148e6203fa67dd3f61c4af146ecad033024dde43", + "sha256:c350354efb159b8767a6244c166f66e67506e06c8924ed74669b2c70bc8735b1", + "sha256:c5a74c359b2d47d26cdbbc7845e9662d6b08a1e915eb015d044729e92e7050b7", + "sha256:c71f16da1ed8949774ef79f4a0260d28b83b3a50c6576f8f4f0288d109777989", + "sha256:d47ecf253780c90ee181d4d871cd655a789da937454045b17b5798da9393901a", + "sha256:d7eff0f27edc5afa9e405f7165f85a6d782d308f3b6b9d96016c010597958e63", + "sha256:d97d85fa63f315a8bdaba2af9a6a686e0eceab77b3089af45133252618e70884", + "sha256:db756e48f9c5c607b5e33dd36b1d5872d0422e960145b08ab0ec7fd420e9d649", + "sha256:dc45229747b67ffc441b3de2f3ae5e62877a282ea828a5bdb67883c4ee4a8810", + "sha256:e0fc42822278451bc13a2e8626cf2218ba570f27856b536e00cfa53099724828", + "sha256:e39c7eb31e3f5b1f88caff88bcff1b7f8334975b46f6ac6e9fc725d829bc35d4", + "sha256:e46cd37076971c1040fc8c41273a8b3e2c624ce4f2be3f5dfcb7a430c1d3acc2", + "sha256:e5c1502d4ace69a179305abb3f0bb6141cbe4714bc9b31d427329a95acfc8bdd", + "sha256:edfe077ab09442d4ef3c52cb1f9dab89bff02f4524afc0acf2d46be17dc479f5", + "sha256:effe5406c9bd748a871dbcaf3ac69167c38d72db8c9baf3ff954c344f31c4cbe", + "sha256:f0d1e3732768fecb052d90d62b220af62ead5748ac51ef61e7b32c266cac9293", + "sha256:f5969baeaea61c97efa706b9b107dcba02784b1601c74ac84f2a532ea079403e", + "sha256:f8888e31e3a85943743f8fc15e71536bda1c81d5aa36d014a3c0c44481d7db6e", + "sha256:fc52b79d83a3fe3a360902d3f5d79073a993597d48114c29485e9431092905d8" ], "markers": "python_full_version >= '3.7.0'", - "version": "==3.2.0" + "version": "==3.3.0" }, "click": { "hashes": [ @@ -1415,61 +1471,61 @@ "toml" ], "hashes": [ - "sha256:025ded371f1ca280c035d91b43252adbb04d2aea4c7105252d3cbc227f03b375", - "sha256:04312b036580ec505f2b77cbbdfb15137d5efdfade09156961f5277149f5e344", - "sha256:0575c37e207bb9b98b6cf72fdaaa18ac909fb3d153083400c2d48e2e6d28bd8e", - "sha256:07d156269718670d00a3b06db2288b48527fc5f36859425ff7cec07c6b367745", - "sha256:1f111a7d85658ea52ffad7084088277135ec5f368457275fc57f11cebb15607f", - "sha256:220eb51f5fb38dfdb7e5d54284ca4d0cd70ddac047d750111a68ab1798945194", - "sha256:229c0dd2ccf956bf5aeede7e3131ca48b65beacde2029f0361b54bf93d36f45a", - "sha256:245c5a99254e83875c7fed8b8b2536f040997a9b76ac4c1da5bff398c06e860f", - "sha256:2829c65c8faaf55b868ed7af3c7477b76b1c6ebeee99a28f59a2cb5907a45760", - "sha256:4aba512a15a3e1e4fdbfed2f5392ec221434a614cc68100ca99dcad7af29f3f8", - "sha256:4c96dd7798d83b960afc6c1feb9e5af537fc4908852ef025600374ff1a017392", - "sha256:50dd1e2dd13dbbd856ffef69196781edff26c800a74f070d3b3e3389cab2600d", - "sha256:5289490dd1c3bb86de4730a92261ae66ea8d44b79ed3cc26464f4c2cde581fbc", - "sha256:53669b79f3d599da95a0afbef039ac0fadbb236532feb042c534fbb81b1a4e40", - "sha256:553d7094cb27db58ea91332e8b5681bac107e7242c23f7629ab1316ee73c4981", - "sha256:586649ada7cf139445da386ab6f8ef00e6172f11a939fc3b2b7e7c9082052fa0", - "sha256:5ae4c6da8b3d123500f9525b50bf0168023313963e0e2e814badf9000dd6ef92", - "sha256:5b4ee7080878077af0afa7238df1b967f00dc10763f6e1b66f5cced4abebb0a3", - "sha256:5d991e13ad2ed3aced177f524e4d670f304c8233edad3210e02c465351f785a0", - "sha256:614f1f98b84eb256e4f35e726bfe5ca82349f8dfa576faabf8a49ca09e630086", - "sha256:636a8ac0b044cfeccae76a36f3b18264edcc810a76a49884b96dd744613ec0b7", - "sha256:6407424621f40205bbe6325686417e5e552f6b2dba3535dd1f90afc88a61d465", - "sha256:6bc6f3f4692d806831c136c5acad5ccedd0262aa44c087c46b7101c77e139140", - "sha256:6cb7fe1581deb67b782c153136541e20901aa312ceedaf1467dcb35255787952", - "sha256:74bb470399dc1989b535cb41f5ca7ab2af561e40def22d7e188e0a445e7639e3", - "sha256:75c8f0df9dfd8ff745bccff75867d63ef336e57cc22b2908ee725cc552689ec8", - "sha256:770f143980cc16eb601ccfd571846e89a5fe4c03b4193f2e485268f224ab602f", - "sha256:7eb0b188f30e41ddd659a529e385470aa6782f3b412f860ce22b2491c89b8593", - "sha256:7eb3cd48d54b9bd0e73026dedce44773214064be93611deab0b6a43158c3d5a0", - "sha256:87d38444efffd5b056fcc026c1e8d862191881143c3aa80bb11fcf9dca9ae204", - "sha256:8a07b692129b8a14ad7a37941a3029c291254feb7a4237f245cfae2de78de037", - "sha256:966f10df9b2b2115da87f50f6a248e313c72a668248be1b9060ce935c871f276", - "sha256:a6191b3a6ad3e09b6cfd75b45c6aeeffe7e3b0ad46b268345d159b8df8d835f9", - "sha256:aab8e9464c00da5cb9c536150b7fbcd8850d376d1151741dd0d16dfe1ba4fd26", - "sha256:ac3c5b7e75acac31e490b7851595212ed951889918d398b7afa12736c85e13ce", - "sha256:ac9ad38204887349853d7c313f53a7b1c210ce138c73859e925bc4e5d8fc18e7", - "sha256:b9c0c19f70d30219113b18fe07e372b244fb2a773d4afde29d5a2f7930765136", - "sha256:c397c70cd20f6df7d2a52283857af622d5f23300c4ca8e5bd8c7a543825baa5a", - "sha256:c6601a60318f9c3945be6ea0f2a80571f4299b6801716f8a6e4846892737ebe4", - "sha256:c6f55d38818ca9596dc9019eae19a47410d5322408140d9a0076001a3dcb938c", - "sha256:ca70466ca3a17460e8fc9cea7123c8cbef5ada4be3140a1ef8f7b63f2f37108f", - "sha256:ca833941ec701fda15414be400c3259479bfde7ae6d806b69e63b3dc423b1832", - "sha256:cd0f7429ecfd1ff597389907045ff209c8fdb5b013d38cfa7c60728cb484b6e3", - "sha256:cd694e19c031733e446c8024dedd12a00cda87e1c10bd7b8539a87963685e969", - "sha256:cdd088c00c39a27cfa5329349cc763a48761fdc785879220d54eb785c8a38520", - "sha256:de30c1aa80f30af0f6b2058a91505ea6e36d6535d437520067f525f7df123887", - "sha256:defbbb51121189722420a208957e26e49809feafca6afeef325df66c39c4fdb3", - "sha256:f09195dda68d94a53123883de75bb97b0e35f5f6f9f3aa5bf6e496da718f0cb6", - "sha256:f12d8b11a54f32688b165fd1a788c408f927b0960984b899be7e4c190ae758f1", - "sha256:f1a317fdf5c122ad642db8a97964733ab7c3cf6009e1a8ae8821089993f175ff", - "sha256:f2781fd3cabc28278dc982a352f50c81c09a1a500cc2086dc4249853ea96b981", - "sha256:f4f456590eefb6e1b3c9ea6328c1e9fa0f1006e7481179d749b3376fc793478e" + "sha256:0cbf38419fb1a347aaf63481c00f0bdc86889d9fbf3f25109cf96c26b403fda1", + "sha256:12d15ab5833a997716d76f2ac1e4b4d536814fc213c85ca72756c19e5a6b3d63", + "sha256:149de1d2401ae4655c436a3dced6dd153f4c3309f599c3d4bd97ab172eaf02d9", + "sha256:1981f785239e4e39e6444c63a98da3a1db8e971cb9ceb50a945ba6296b43f312", + "sha256:2443cbda35df0d35dcfb9bf8f3c02c57c1d6111169e3c85fc1fcc05e0c9f39a3", + "sha256:289fe43bf45a575e3ab10b26d7b6f2ddb9ee2dba447499f5401cfb5ecb8196bb", + "sha256:2f11cc3c967a09d3695d2a6f03fb3e6236622b93be7a4b5dc09166a861be6d25", + "sha256:307adb8bd3abe389a471e649038a71b4eb13bfd6b7dd9a129fa856f5c695cf92", + "sha256:310b3bb9c91ea66d59c53fa4989f57d2436e08f18fb2f421a1b0b6b8cc7fffda", + "sha256:315a989e861031334d7bee1f9113c8770472db2ac484e5b8c3173428360a9148", + "sha256:3a4006916aa6fee7cd38db3bfc95aa9c54ebb4ffbfc47c677c8bba949ceba0a6", + "sha256:3c7bba973ebee5e56fe9251300c00f1579652587a9f4a5ed8404b15a0471f216", + "sha256:4175e10cc8dda0265653e8714b3174430b07c1dca8957f4966cbd6c2b1b8065a", + "sha256:43668cabd5ca8258f5954f27a3aaf78757e6acf13c17604d89648ecc0cc66640", + "sha256:4cbae1051ab791debecc4a5dcc4a1ff45fc27b91b9aee165c8a27514dd160836", + "sha256:5c913b556a116b8d5f6ef834038ba983834d887d82187c8f73dec21049abd65c", + "sha256:5f7363d3b6a1119ef05015959ca24a9afc0ea8a02c687fe7e2d557705375c01f", + "sha256:630b13e3036e13c7adc480ca42fa7afc2a5d938081d28e20903cf7fd687872e2", + "sha256:72c0cfa5250f483181e677ebc97133ea1ab3eb68645e494775deb6a7f6f83901", + "sha256:7dbc3ed60e8659bc59b6b304b43ff9c3ed858da2839c78b804973f613d3e92ed", + "sha256:88ed2c30a49ea81ea3b7f172e0269c182a44c236eb394718f976239892c0a27a", + "sha256:89a937174104339e3a3ffcf9f446c00e3a806c28b1841c63edb2b369310fd074", + "sha256:9028a3871280110d6e1aa2df1afd5ef003bab5fb1ef421d6dc748ae1c8ef2ebc", + "sha256:99b89d9f76070237975b315b3d5f4d6956ae354a4c92ac2388a5695516e47c84", + "sha256:9f805d62aec8eb92bab5b61c0f07329275b6f41c97d80e847b03eb894f38d083", + "sha256:a889ae02f43aa45032afe364c8ae84ad3c54828c2faa44f3bfcafecb5c96b02f", + "sha256:aa72dbaf2c2068404b9870d93436e6d23addd8bbe9295f49cbca83f6e278179c", + "sha256:ac8c802fa29843a72d32ec56d0ca792ad15a302b28ca6203389afe21f8fa062c", + "sha256:ae97af89f0fbf373400970c0a21eef5aa941ffeed90aee43650b81f7d7f47637", + "sha256:af3d828d2c1cbae52d34bdbb22fcd94d1ce715d95f1a012354a75e5913f1bda2", + "sha256:b4275802d16882cf9c8b3d057a0839acb07ee9379fa2749eca54efbce1535b82", + "sha256:b4767da59464bb593c07afceaddea61b154136300881844768037fd5e859353f", + "sha256:b631c92dfe601adf8f5ebc7fc13ced6bb6e9609b19d9a8cd59fa47c4186ad1ce", + "sha256:be32ad29341b0170e795ca590e1c07e81fc061cb5b10c74ce7203491484404ef", + "sha256:beaa5c1b4777f03fc63dfd2a6bd820f73f036bfb10e925fce067b00a340d0f3f", + "sha256:c0ba320de3fb8c6ec16e0be17ee1d3d69adcda99406c43c0409cb5c41788a611", + "sha256:c9eacf273e885b02a0273bb3a2170f30e2d53a6d53b72dbe02d6701b5296101c", + "sha256:cb536f0dcd14149425996821a168f6e269d7dcd2c273a8bff8201e79f5104e76", + "sha256:d1bc430677773397f64a5c88cb522ea43175ff16f8bfcc89d467d974cb2274f9", + "sha256:d1c88ec1a7ff4ebca0219f5b1ef863451d828cccf889c173e1253aa84b1e07ce", + "sha256:d3d9df4051c4a7d13036524b66ecf7a7537d14c18a384043f30a303b146164e9", + "sha256:d51ac2a26f71da1b57f2dc81d0e108b6ab177e7d30e774db90675467c847bbdf", + "sha256:d872145f3a3231a5f20fd48500274d7df222e291d90baa2026cc5152b7ce86bf", + "sha256:d8f17966e861ff97305e0801134e69db33b143bbfb36436efb9cfff6ec7b2fd9", + "sha256:dbc1b46b92186cc8074fee9d9fbb97a9dd06c6cbbef391c2f59d80eabdf0faa6", + "sha256:e10c39c0452bf6e694511c901426d6b5ac005acc0f78ff265dbe36bf81f808a2", + "sha256:e267e9e2b574a176ddb983399dec325a80dbe161f1a32715c780b5d14b5f583a", + "sha256:f47d39359e2c3779c5331fc740cf4bce6d9d680a7b4b4ead97056a0ae07cb49a", + "sha256:f6e9589bd04d0461a417562649522575d8752904d35c12907d8c9dfeba588faf", + "sha256:f94b734214ea6a36fe16e96a70d941af80ff3bfd716c141300d95ebc85339738", + "sha256:fa28e909776dc69efb6ed975a63691bc8172b64ff357e663a1bb06ff3c9b589a", + "sha256:fe494faa90ce6381770746077243231e0b83ff3f17069d748f645617cefe19d4" ], "markers": "python_version >= '3.8'", - "version": "==7.3.1" + "version": "==7.3.2" }, "defusedxml": { "hashes": [ @@ -1592,15 +1648,16 @@ "sha256:a6f5977418eff3b2d5500d54d9db50c8277a368436f4e4f8ddb1be3422870184", "sha256:f91456ead12ab3c6c2e9491cf33ba6d08357d802192379bb482f1033ade496f5" ], + "markers": "python_version >= '3.6'", "version": "==3.1.2" }, "packaging": { "hashes": [ - "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61", - "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f" + "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5", + "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7" ], "markers": "python_version >= '3.7'", - "version": "==23.1" + "version": "==23.2" }, "pathspec": { "hashes": [ @@ -1612,11 +1669,11 @@ }, "platformdirs": { "hashes": [ - "sha256:b45696dab2d7cc691a3226759c0d3b00c47c8b6e293d96f6436f733303f77f6d", - "sha256:d7c24979f292f916dc9cbf8648319032f551ea8c49a4c9bf2fb556a02070ec1d" + "sha256:cf8ee52a3afdb965072dcc652433e0c7e3e40cf5ea1477cd4b3b1d2eb75495b3", + "sha256:e9d171d00af68be50e9202731309c4e658fd8bc76f55c11c7dd760d023bda68e" ], "markers": "python_version >= '3.7'", - "version": "==3.10.0" + "version": "==3.11.0" }, "pluggy": { "hashes": [ @@ -1769,7 +1826,7 @@ "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'", "version": "==1.16.0" }, "snapshottest": { @@ -1829,11 +1886,11 @@ }, "urllib3": { "hashes": [ - "sha256:8d22f86aae8ef5e410d4f539fde9ce6b2113a001bb4d189e0aed70642d602b11", - "sha256:de7df1803967d2c2a98e4b11bb7d6bd9210474c46e8a0401514e3a42a75ebde4" + "sha256:7a7c7003b000adf9e7ca2a377c9688bbc54ed41b985789ed576570342a375cd2", + "sha256:b19e1a85d206b56d7df1d5e683df4a7725252a964e3993648dd0fb5a1c157564" ], "markers": "python_version >= '3.7'", - "version": "==2.0.4" + "version": "==2.0.6" }, "wasmer": { "hashes": [ @@ -1878,6 +1935,7 @@ "sha256:6a33ee89877bd9abc1158129f6e94be74e2679636b8a205b43b85206c3f0bbdd", "sha256:f72f148f54442c6b056bf931dbc34f986fd0c3b0b6b5a58d013c9aef274d0c88" ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", "version": "==2.0.1" }, "xlwt": { diff --git a/backend/service/settings.py b/backend/service/settings.py index 3867c233..9c7dc1fd 100644 --- a/backend/service/settings.py +++ b/backend/service/settings.py @@ -10,7 +10,6 @@ https://docs.djangoproject.com/en/3.2/ref/settings/ """ import os - from pathlib import Path # Build paths inside the project like this: BASE_DIR / 'subdir'. @@ -23,35 +22,6 @@ # Application definition -INSTALLED_APPS = [ - "aimmo", - "game", - "pipeline", - "portal", - "captcha", - "common", - "django.contrib.admin", - "django.contrib.admindocs", - "django.contrib.auth", - "django.contrib.contenttypes", - "django.contrib.sessions", - "django.contrib.messages", - "django.contrib.sites", - "django.contrib.staticfiles", - "rest_framework", - "import_export", - "django_js_reverse", - "django_otp", - "django_otp.plugins.otp_static", - "django_otp.plugins.otp_totp", - "sekizai", # for javascript and css management - "treebeard", - "two_factor", - "preventconcurrentlogins", - "codeforlife", - "corsheaders", -] - MIDDLEWARE = [ "deploy.middleware.admin_access.AdminAccessMiddleware", "django.contrib.sessions.middleware.SessionMiddleware", @@ -266,3 +236,30 @@ def domain(): from codeforlife.settings import * + +INSTALLED_APPS = [ + "aimmo", + "game", + "pipeline", + "portal", + "captcha", + "common", + "django.contrib.admin", + "django.contrib.admindocs", + "django.contrib.auth", + "django.contrib.contenttypes", + "django.contrib.sessions", + "django.contrib.messages", + "django.contrib.sites", + "django.contrib.staticfiles", + "import_export", + "django_js_reverse", + "django_otp", + "django_otp.plugins.otp_static", + "django_otp.plugins.otp_totp", + "sekizai", # for javascript and css management + "treebeard", + "two_factor", + "preventconcurrentlogins", + *INSTALLED_APPS, +] From f7977714695ed7926d0f9b24457fdf5f53ac60e4 Mon Sep 17 00:00:00 2001 From: SKairinos Date: Mon, 16 Oct 2023 13:52:24 +0100 Subject: [PATCH 26/52] quick save --- frontend/src/app/api/user.ts | 172 +++++++++++++++++++++++++++++++++++ 1 file changed, 172 insertions(+) create mode 100644 frontend/src/app/api/user.ts diff --git a/frontend/src/app/api/user.ts b/frontend/src/app/api/user.ts new file mode 100644 index 00000000..978a5ab7 --- /dev/null +++ b/frontend/src/app/api/user.ts @@ -0,0 +1,172 @@ +import api from './api'; + +export type Fields = Record; + +export type Model< + ID, + ReadAndWrite extends Fields = Fields, + ReadOnly extends Fields = Fields, + WriteOnly extends Fields = Fields +> = ReadAndWrite & { + _readOnly: ReadOnly & { id: ID; }; + _writeOnly: WriteOnly; +}; + +export type ID> = M['_readOnly']['id']; + +export type TagArray< + Type extends string, + M extends Model +> = Array<{ + type: Type; + id: ID; +}>; + +// Create + +export type CreateArg> = + Omit & M['_writeOnly']; + +// Read + +export type ReadResult> = + Omit & M['_readOnly']; + +export interface ReadArg> { + id: ID; +} + +export interface ReadManyResult> { + count: number; + offset: number; + limit: number; + maxLimit: number; + data: Array>; +} + +export type ReadManyArg = + null | Partial; + +// Update + +export interface UpdateArg< + M extends Model, + Required extends Fields = Fields +> { + id: ID; + body: Partial> & Required; +} + +// Delete + +export type DeleteArg> = ReadArg; + +export type User = Model< + number, + { + firstName: string; + lastName: string; + email: string; + }, + { + username: string; + isActive: boolean; + isStaff: boolean; + dateJoined: Date; + lastLogin: null | Date; + student: null | { + classField: null | number; + loginId: null | string; + user: number; + newUser: null | number; + pendingClassRequest: null | number; + blockedTime: null | Date; + }; + teacher: null | { + user: number; + newUser: null | number; + school: null | number; + isAdmin: boolean; + blockedTime: null | Date; + invitedBy: null | number; + }; + }, + { + password: string; + } +>; + +export function searchParamsToString(searchParams: ReadManyArg): string { + if (searchParams !== null) { + const _searchParams = Object.entries(searchParams) + .filter(([key, value]) => value !== undefined) + .map(([key, value]) => [key, String(value)]); + + if (_searchParams.length !== 0) { + return `?${new URLSearchParams(_searchParams).toString()}`; + } + } + + return ''; +} + +export function mapIdsToTag< + Type extends string, + M extends Model +>( + result: ReadManyResult, + type: Type +): TagArray { + return result.data.map(({ id }) => ({ type, id })) as TagArray; +} + +const userApi = api.injectEndpoints({ + endpoints: (build) => ({ + getUser: build.query, ReadArg>({ + query: ({ id }) => ({ + url: `users/${id}/`, + method: 'GET' + }), + providesTags: (result, error, { id }) => [ + 'private', + { type: 'user', id } + ] + }), + getUsers: build.query, ReadManyArg<{ + studentClass: string; + }>>({ + query: (arg) => ({ + url: `users/${searchParamsToString(arg)}`, + method: 'GET' + }), + providesTags: (result, error, arg) => result + ? [ + 'private', + ...mapIdsToTag(result, 'user') + ] + : [] + }), + updateUser: build.mutation>({ + query: ({ id, body }) => ({ + url: `users/${id}/`, + method: 'PATCH', + body, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + } + }), + invalidatesTags: (result, error, { id }) => error + ? [] + : [{ type: 'user', id }] + }) + }) +}); + +export default userApi; +export const { + useGetUserQuery, + useGetUsersQuery, + useUpdateUserMutation +} = userApi; From d7eafb3695b0d3a8a07fa68f76ed7f5cadb02f14 Mon Sep 17 00:00:00 2001 From: SKairinos Date: Mon, 16 Oct 2023 16:46:58 +0100 Subject: [PATCH 27/52] update user api --- frontend/src/app/api/index.ts | 121 +++++++++++++++++----------------- frontend/src/app/api/user.ts | 107 +++++------------------------- 2 files changed, 78 insertions(+), 150 deletions(-) diff --git a/frontend/src/app/api/index.ts b/frontend/src/app/api/index.ts index e77dc884..709650d0 100644 --- a/frontend/src/app/api/index.ts +++ b/frontend/src/app/api/index.ts @@ -1,105 +1,106 @@ import api, { useLogoutMutation } from './api'; import { - useSubscribeToNewsletterMutation, - useConsentFormMutation + useConsentFormMutation, + useSubscribeToNewsletterMutation } from './dotmailer'; import { - useRegisterUserMutation, - useDownloadStudentPackMutation + useDownloadStudentPackMutation, + useRegisterUserMutation } from './home'; -import { useLoginMutation } from './login'; +import { + useLoginMutation +} from './login'; import { useCreateOrganisationMutation, useLeaveOrganisationMutation } from './organisation'; import { + useDeleteAccountMutation, useRequestIndependentStudentPasswordResetMutation, useRequestTeacherPasswordResetMutation, useResetPasswordMutation, - useVerifyPasswordMutation, - useDeleteAccountMutation + useVerifyPasswordMutation } from './registration'; - import { - useGetStudentScoreQuery, useGetStudentKuronoGameDataQuery, - useUpdateSchoolStudentDetailsMutation, - useUpdateStudentDetailsMutation, + useGetStudentScoreQuery, + useIsRequestingToJoinSchoolQuery, useJoinSchoolRequestMutation, useRevokeSchoolRequestMutation, - useIsRequestingToJoinSchoolQuery + useUpdateSchoolStudentDetailsMutation, + useUpdateStudentDetailsMutation } from './student'; import { + useUpdateTeacherAccountDetailsMutation +} from './teacher/account'; +import { + useDeleteInviteMutation, useGetTeacherDataQuery, useInviteTeacherMutation, - useUpdateSchoolMutation, - useToggleAdminMutation, - useOrganisationKickMutation, useInviteToggleAdminMutation, + useOrganisationKickMutation, useResendInviteMutation, - useDeleteInviteMutation + useToggleAdminMutation, + useUpdateSchoolMutation } from './teacher/dashboard'; import { - useGetClassQuery, - useGetStudentsByAccessCodeQuery, - useUpdateClassMutation, + useDeleteClassMutation, + useDisable2faMutation, useEditStudentNameMutation, useEditStudentPasswordMutation, - useDeleteClassMutation, + useGetClassQuery, + useGetStudentsByAccessCodeQuery, useMoveClassMutation, useTeacherHas2faQuery, - useDisable2faMutation + useUpdateClassMutation } from './teacher/teach'; -import { useUpdateTeacherAccountDetailsMutation } from './teacher/account'; +import { + useReadUserQuery, + useReadUsersQuery, + useUpdateUserMutation +} from './user'; export default api; export { - // api - useLogoutMutation, - // dotmailer - useSubscribeToNewsletterMutation, useConsentFormMutation, - // home - useRegisterUserMutation, - useDownloadStudentPackMutation, - // login - useLoginMutation, - // organisation useCreateOrganisationMutation, - useLeaveOrganisationMutation, - // registration - useRequestIndependentStudentPasswordResetMutation, - useRequestTeacherPasswordResetMutation, - useResetPasswordMutation, - useVerifyPasswordMutation, useDeleteAccountMutation, - // student - useGetStudentScoreQuery, + useDeleteClassMutation, + useDeleteInviteMutation, + useDisable2faMutation, + useDownloadStudentPackMutation, + useEditStudentNameMutation, + useEditStudentPasswordMutation, + useGetClassQuery, useGetStudentKuronoGameDataQuery, - useUpdateStudentDetailsMutation, - useUpdateSchoolStudentDetailsMutation, - useJoinSchoolRequestMutation, - useRevokeSchoolRequestMutation, - useIsRequestingToJoinSchoolQuery, - // teacher dashboard + useGetStudentScoreQuery, + useGetStudentsByAccessCodeQuery, useGetTeacherDataQuery, useInviteTeacherMutation, - useUpdateSchoolMutation, - useToggleAdminMutation, - useOrganisationKickMutation, useInviteToggleAdminMutation, + useIsRequestingToJoinSchoolQuery, + useJoinSchoolRequestMutation, + useLeaveOrganisationMutation, + useLoginMutation, + useLogoutMutation, + useMoveClassMutation, + useOrganisationKickMutation, + useReadUserQuery, + useReadUsersQuery, + useRegisterUserMutation, + useRequestIndependentStudentPasswordResetMutation, + useRequestTeacherPasswordResetMutation, useResendInviteMutation, - useDeleteInviteMutation, - // teacher/teach - useGetClassQuery, - useGetStudentsByAccessCodeQuery, + useResetPasswordMutation, + useRevokeSchoolRequestMutation, + useSubscribeToNewsletterMutation, + useTeacherHas2faQuery, + useToggleAdminMutation, useUpdateClassMutation, - useEditStudentNameMutation, - useEditStudentPasswordMutation, - useDeleteClassMutation, - useMoveClassMutation, - // teacher/account + useUpdateSchoolMutation, + useUpdateSchoolStudentDetailsMutation, + useUpdateStudentDetailsMutation, useUpdateTeacherAccountDetailsMutation, - useTeacherHas2faQuery, - useDisable2faMutation + useUpdateUserMutation, + useVerifyPasswordMutation }; diff --git a/frontend/src/app/api/user.ts b/frontend/src/app/api/user.ts index 978a5ab7..11ab1ba6 100644 --- a/frontend/src/app/api/user.ts +++ b/frontend/src/app/api/user.ts @@ -1,65 +1,16 @@ -import api from './api'; - -export type Fields = Record; - -export type Model< - ID, - ReadAndWrite extends Fields = Fields, - ReadOnly extends Fields = Fields, - WriteOnly extends Fields = Fields -> = ReadAndWrite & { - _readOnly: ReadOnly & { id: ID; }; - _writeOnly: WriteOnly; -}; - -export type ID> = M['_readOnly']['id']; - -export type TagArray< - Type extends string, - M extends Model -> = Array<{ - type: Type; - id: ID; -}>; - -// Create - -export type CreateArg> = - Omit & M['_writeOnly']; - -// Read - -export type ReadResult> = - Omit & M['_readOnly']; - -export interface ReadArg> { - id: ID; -} - -export interface ReadManyResult> { - count: number; - offset: number; - limit: number; - maxLimit: number; - data: Array>; -} +import { + Model, + ReadArg, + ReadManyArg, + ReadManyResult, + ReadResult, + UpdateArg, + UpdateResult, + mapIdsToTag, + searchParamsToString +} from 'codeforlife/lib/esm/helpers/rtkQuery'; -export type ReadManyArg = - null | Partial; - -// Update - -export interface UpdateArg< - M extends Model, - Required extends Fields = Fields -> { - id: ID; - body: Partial> & Required; -} - -// Delete - -export type DeleteArg> = ReadArg; +import api from './api'; export type User = Model< number, @@ -96,33 +47,9 @@ export type User = Model< } >; -export function searchParamsToString(searchParams: ReadManyArg): string { - if (searchParams !== null) { - const _searchParams = Object.entries(searchParams) - .filter(([key, value]) => value !== undefined) - .map(([key, value]) => [key, String(value)]); - - if (_searchParams.length !== 0) { - return `?${new URLSearchParams(_searchParams).toString()}`; - } - } - - return ''; -} - -export function mapIdsToTag< - Type extends string, - M extends Model ->( - result: ReadManyResult, - type: Type -): TagArray { - return result.data.map(({ id }) => ({ type, id })) as TagArray; -} - const userApi = api.injectEndpoints({ endpoints: (build) => ({ - getUser: build.query, ReadArg>({ + readUser: build.query, ReadArg>({ query: ({ id }) => ({ url: `users/${id}/`, method: 'GET' @@ -132,7 +59,7 @@ const userApi = api.injectEndpoints({ { type: 'user', id } ] }), - getUsers: build.query, ReadManyArg<{ + readUsers: build.query, ReadManyArg<{ studentClass: string; }>>({ query: (arg) => ({ @@ -146,7 +73,7 @@ const userApi = api.injectEndpoints({ ] : [] }), - updateUser: build.mutation, UpdateArg>({ query: ({ id, body }) => ({ @@ -166,7 +93,7 @@ const userApi = api.injectEndpoints({ export default userApi; export const { - useGetUserQuery, - useGetUsersQuery, + useReadUserQuery, + useReadUsersQuery, useUpdateUserMutation } = userApi; From 09755e654f0008bd13d4ada0fd47e87d3dead7f0 Mon Sep 17 00:00:00 2001 From: SKairinos Date: Tue, 17 Oct 2023 12:12:51 +0100 Subject: [PATCH 28/52] new user endpoints --- frontend/package.json | 4 +- frontend/src/app/api/index.ts | 8 +- frontend/yarn.lock | 524 +++++++++++++++++----------------- 3 files changed, 269 insertions(+), 267 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 6e29bfe5..d7f2623b 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -29,7 +29,7 @@ "@mui/material": "^5.11.12", "@react-pdf/renderer": "^3.1.12", "@reduxjs/toolkit": "^1.9.3", - "codeforlife": "github:ocadotechnology/codeforlife-package-javascript#v1.27.4", + "codeforlife": "github:ocadotechnology/codeforlife-package-javascript#158-teacher-teach-edit-student-details", "country-list": "^2.3.0", "crypto-js": "^4.1.1", "formik": "^2.2.9", @@ -75,4 +75,4 @@ "nyc": { "exclude": [] } -} +} \ No newline at end of file diff --git a/frontend/src/app/api/index.ts b/frontend/src/app/api/index.ts index 709650d0..f943cac3 100644 --- a/frontend/src/app/api/index.ts +++ b/frontend/src/app/api/index.ts @@ -55,8 +55,8 @@ import { useUpdateClassMutation } from './teacher/teach'; import { - useReadUserQuery, - useReadUsersQuery, + useListUsersQuery, + useRetrieveUserQuery, useUpdateUserMutation } from './user'; @@ -81,17 +81,17 @@ export { useIsRequestingToJoinSchoolQuery, useJoinSchoolRequestMutation, useLeaveOrganisationMutation, + useListUsersQuery, useLoginMutation, useLogoutMutation, useMoveClassMutation, useOrganisationKickMutation, - useReadUserQuery, - useReadUsersQuery, useRegisterUserMutation, useRequestIndependentStudentPasswordResetMutation, useRequestTeacherPasswordResetMutation, useResendInviteMutation, useResetPasswordMutation, + useRetrieveUserQuery, useRevokeSchoolRequestMutation, useSubscribeToNewsletterMutation, useTeacherHas2faQuery, diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 03c87633..2a31d26e 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -37,25 +37,25 @@ "@babel/highlight" "^7.22.13" chalk "^2.4.2" -"@babel/compat-data@^7.22.20", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.20.tgz#8df6e96661209623f1975d66c35ffca66f3306d0" - integrity sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw== +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9", "@babel/compat-data@^7.23.2": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.2.tgz#6a12ced93455827037bfb5ed8492820d60fc32cc" + integrity sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ== "@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.12.3", "@babel/core@^7.16.0", "@babel/core@^7.4.4", "@babel/core@^7.7.2", "@babel/core@^7.7.5", "@babel/core@^7.8.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.0.tgz#f8259ae0e52a123eb40f552551e647b506a94d83" - integrity sha512-97z/ju/Jy1rZmDxybphrBuI+jtJjFVoz7Mr9yUQVVVi+DNZE333uFQeMOqcCIy1x3WYBIbWftUSLmbNXNT7qFQ== + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.2.tgz#ed10df0d580fff67c5f3ee70fd22e2e4c90a9f94" + integrity sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ== dependencies: "@ampproject/remapping" "^2.2.0" "@babel/code-frame" "^7.22.13" "@babel/generator" "^7.23.0" "@babel/helper-compilation-targets" "^7.22.15" "@babel/helper-module-transforms" "^7.23.0" - "@babel/helpers" "^7.23.0" + "@babel/helpers" "^7.23.2" "@babel/parser" "^7.23.0" "@babel/template" "^7.22.15" - "@babel/traverse" "^7.23.0" + "@babel/traverse" "^7.23.2" "@babel/types" "^7.23.0" convert-source-map "^2.0.0" debug "^4.1.0" @@ -131,10 +131,10 @@ regexpu-core "^5.3.1" semver "^6.3.1" -"@babel/helper-define-polyfill-provider@^0.4.2": - version "0.4.2" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz#82c825cadeeeee7aad237618ebbe8fa1710015d7" - integrity sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw== +"@babel/helper-define-polyfill-provider@^0.4.3": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz#a71c10f7146d809f4a256c373f462d9bba8cf6ba" + integrity sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug== dependencies: "@babel/helper-compilation-targets" "^7.22.6" "@babel/helper-plugin-utils" "^7.22.5" @@ -199,7 +199,7 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== -"@babel/helper-remap-async-to-generator@^7.22.5", "@babel/helper-remap-async-to-generator@^7.22.9": +"@babel/helper-remap-async-to-generator@^7.22.20", "@babel/helper-remap-async-to-generator@^7.22.5": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== @@ -262,13 +262,13 @@ "@babel/template" "^7.22.15" "@babel/types" "^7.22.19" -"@babel/helpers@^7.23.0": - version "7.23.1" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.1.tgz#44e981e8ce2b9e99f8f0b703f3326a4636c16d15" - integrity sha512-chNpneuK18yW5Oxsr+t553UZzzAs3aZnFm4bxhebsNTeshrC95yA7l5yl7GBAG+JG1rF0F7zzD2EixK9mWSDoA== +"@babel/helpers@^7.23.2": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.2.tgz#2832549a6e37d484286e15ba36a5330483cac767" + integrity sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ== dependencies: "@babel/template" "^7.22.15" - "@babel/traverse" "^7.23.0" + "@babel/traverse" "^7.23.2" "@babel/types" "^7.23.0" "@babel/highlight@^7.22.13": @@ -310,9 +310,9 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-proposal-decorators@^7.16.4": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.23.0.tgz#66d9014173b3267a9ced3e69935138bc64ffb5c8" - integrity sha512-kYsT+f5ARWF6AdFmqoEEp+hpqxEB8vGmRWfw2aj78M2vTwS2uHW91EF58iFm1Z9U8Y/RrLu2XKJn46P9ca1b0w== + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.23.2.tgz#0b345a5754f48309fa50b7cd99075ef0295b12c8" + integrity sha512-eR0gJQc830fJVGz37oKLvt9W9uUIQSAovUl0e9sJ3YeO09dlcoBVYD3CLrjCj4qHdXmfiyTyFt8yeQYSN5fxLg== dependencies: "@babel/helper-create-class-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" @@ -537,14 +537,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-async-generator-functions@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.15.tgz#3b153af4a6b779f340d5b80d3f634f55820aefa3" - integrity sha512-jBm1Es25Y+tVoTi5rfd5t1KLmL8ogLKpXszboWOTTtGFGz2RKnQe2yn7HbZ+kb/B8N0FVSGQo874NSlOU1T4+w== +"@babel/plugin-transform-async-generator-functions@^7.23.2": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.2.tgz#054afe290d64c6f576f371ccc321772c8ea87ebb" + integrity sha512-BBYVGxbDVHfoeXbOwcagAkOQAm9NxoTdMGfTqghu1GrvadSaw6iW3Je6IcL5PNOw8VwjxqBECXy50/iCQSY/lQ== dependencies: - "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-remap-async-to-generator" "^7.22.9" + "@babel/helper-remap-async-to-generator" "^7.22.20" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-transform-async-to-generator@^7.22.5": @@ -563,7 +563,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-block-scoping@^7.22.15": +"@babel/plugin-transform-block-scoping@^7.23.0": version "7.23.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz#8744d02c6c264d82e1a4bc5d2d501fd8aff6f022" integrity sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g== @@ -610,7 +610,7 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/template" "^7.22.5" -"@babel/plugin-transform-destructuring@^7.22.15": +"@babel/plugin-transform-destructuring@^7.23.0": version "7.23.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz#6447aa686be48b32eaf65a73e0e2c0bd010a266c" integrity sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg== @@ -710,7 +710,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-modules-amd@^7.22.5": +"@babel/plugin-transform-modules-amd@^7.23.0": version "7.23.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz#05b2bc43373faa6d30ca89214731f76f966f3b88" integrity sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw== @@ -718,7 +718,7 @@ "@babel/helper-module-transforms" "^7.23.0" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-modules-commonjs@^7.22.15", "@babel/plugin-transform-modules-commonjs@^7.23.0", "@babel/plugin-transform-modules-commonjs@^7.4.4": +"@babel/plugin-transform-modules-commonjs@^7.23.0", "@babel/plugin-transform-modules-commonjs@^7.4.4": version "7.23.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz#b3dba4757133b2762c00f4f94590cf6d52602481" integrity sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ== @@ -727,7 +727,7 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-simple-access" "^7.22.5" -"@babel/plugin-transform-modules-systemjs@^7.22.11": +"@babel/plugin-transform-modules-systemjs@^7.23.0": version "7.23.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz#77591e126f3ff4132a40595a6cccd00a6b60d160" integrity sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg== @@ -803,7 +803,7 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-transform-optional-chaining@^7.22.15": +"@babel/plugin-transform-optional-chaining@^7.22.15", "@babel/plugin-transform-optional-chaining@^7.23.0": version "7.23.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz#73ff5fc1cf98f542f09f29c0631647d8ad0be158" integrity sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g== @@ -900,15 +900,15 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-runtime@^7.16.4": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.22.15.tgz#3a625c4c05a39e932d7d34f5d4895cdd0172fdc9" - integrity sha512-tEVLhk8NRZSmwQ0DJtxxhTrCht1HVo8VaMzYT4w6lwyKBuHsgoioAUA7/6eT2fRfc5/23fuGdlwIxXhRVgWr4g== + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.2.tgz#c956a3f8d1aa50816ff6c30c6288d66635c12990" + integrity sha512-XOntj6icgzMS58jPVtQpiuF6ZFWxQiJavISGx5KGjRj+3gqZr8+N6Kx+N9BApWzgS+DOjIZfXXj0ZesenOWDyA== dependencies: "@babel/helper-module-imports" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" - babel-plugin-polyfill-corejs2 "^0.4.5" - babel-plugin-polyfill-corejs3 "^0.8.3" - babel-plugin-polyfill-regenerator "^0.5.2" + babel-plugin-polyfill-corejs2 "^0.4.6" + babel-plugin-polyfill-corejs3 "^0.8.5" + babel-plugin-polyfill-regenerator "^0.5.3" semver "^6.3.1" "@babel/plugin-transform-shorthand-properties@^7.22.5": @@ -989,11 +989,11 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/preset-env@^7.11.0", "@babel/preset-env@^7.12.1", "@babel/preset-env@^7.16.4", "@babel/preset-env@^7.4.4": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.22.20.tgz#de9e9b57e1127ce0a2f580831717f7fb677ceedb" - integrity sha512-11MY04gGC4kSzlPHRfvVkNAZhUxOvm7DCJ37hPDnUENwe06npjIRAfInEMTGSb4LZK5ZgDFkv5hw0lGebHeTyg== + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.23.2.tgz#1f22be0ff0e121113260337dbc3e58fafce8d059" + integrity sha512-BW3gsuDD+rvHL2VO2SjAUNTBe5YrjsTiDyqamPDWY723na3/yPQ65X5oQkFVJZ0o50/2d+svm1rkPoJeR1KxVQ== dependencies: - "@babel/compat-data" "^7.22.20" + "@babel/compat-data" "^7.23.2" "@babel/helper-compilation-targets" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-validator-option" "^7.22.15" @@ -1019,15 +1019,15 @@ "@babel/plugin-syntax-top-level-await" "^7.14.5" "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" "@babel/plugin-transform-arrow-functions" "^7.22.5" - "@babel/plugin-transform-async-generator-functions" "^7.22.15" + "@babel/plugin-transform-async-generator-functions" "^7.23.2" "@babel/plugin-transform-async-to-generator" "^7.22.5" "@babel/plugin-transform-block-scoped-functions" "^7.22.5" - "@babel/plugin-transform-block-scoping" "^7.22.15" + "@babel/plugin-transform-block-scoping" "^7.23.0" "@babel/plugin-transform-class-properties" "^7.22.5" "@babel/plugin-transform-class-static-block" "^7.22.11" "@babel/plugin-transform-classes" "^7.22.15" "@babel/plugin-transform-computed-properties" "^7.22.5" - "@babel/plugin-transform-destructuring" "^7.22.15" + "@babel/plugin-transform-destructuring" "^7.23.0" "@babel/plugin-transform-dotall-regex" "^7.22.5" "@babel/plugin-transform-duplicate-keys" "^7.22.5" "@babel/plugin-transform-dynamic-import" "^7.22.11" @@ -1039,9 +1039,9 @@ "@babel/plugin-transform-literals" "^7.22.5" "@babel/plugin-transform-logical-assignment-operators" "^7.22.11" "@babel/plugin-transform-member-expression-literals" "^7.22.5" - "@babel/plugin-transform-modules-amd" "^7.22.5" - "@babel/plugin-transform-modules-commonjs" "^7.22.15" - "@babel/plugin-transform-modules-systemjs" "^7.22.11" + "@babel/plugin-transform-modules-amd" "^7.23.0" + "@babel/plugin-transform-modules-commonjs" "^7.23.0" + "@babel/plugin-transform-modules-systemjs" "^7.23.0" "@babel/plugin-transform-modules-umd" "^7.22.5" "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" "@babel/plugin-transform-new-target" "^7.22.5" @@ -1050,7 +1050,7 @@ "@babel/plugin-transform-object-rest-spread" "^7.22.15" "@babel/plugin-transform-object-super" "^7.22.5" "@babel/plugin-transform-optional-catch-binding" "^7.22.11" - "@babel/plugin-transform-optional-chaining" "^7.22.15" + "@babel/plugin-transform-optional-chaining" "^7.23.0" "@babel/plugin-transform-parameters" "^7.22.15" "@babel/plugin-transform-private-methods" "^7.22.5" "@babel/plugin-transform-private-property-in-object" "^7.22.11" @@ -1067,10 +1067,10 @@ "@babel/plugin-transform-unicode-regex" "^7.22.5" "@babel/plugin-transform-unicode-sets-regex" "^7.22.5" "@babel/preset-modules" "0.1.6-no-external-plugins" - "@babel/types" "^7.22.19" - babel-plugin-polyfill-corejs2 "^0.4.5" - babel-plugin-polyfill-corejs3 "^0.8.3" - babel-plugin-polyfill-regenerator "^0.5.2" + "@babel/types" "^7.23.0" + babel-plugin-polyfill-corejs2 "^0.4.6" + babel-plugin-polyfill-corejs3 "^0.8.5" + babel-plugin-polyfill-regenerator "^0.5.3" core-js-compat "^3.31.0" semver "^6.3.1" @@ -1096,9 +1096,9 @@ "@babel/plugin-transform-react-pure-annotations" "^7.22.5" "@babel/preset-typescript@^7.16.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.23.0.tgz#cc6602d13e7e5b2087c811912b87cf937a9129d9" - integrity sha512-6P6VVa/NM/VlAYj5s2Aq/gdVg8FSENCg3wlZ6Qau9AcPaoF5LbN1nyGlR9DTRIw9PpxI94e+ReydsJHcjwAweg== + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.23.2.tgz#c8de488130b7081f7e1482936ad3de5b018beef4" + integrity sha512-u4UJc1XsS1GhIGteM8rnGiIvf9rJpiVgMEeCnwlLA7WJPC+jcXWJAGxYmeqs5hOZD8BbAfnV5ezBOxQbb4OUxA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-validator-option" "^7.22.15" @@ -1112,9 +1112,9 @@ integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.13", "@babel/runtime@^7.20.7", "@babel/runtime@^7.23.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": - version "7.23.1" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.1.tgz#72741dc4d413338a91dcb044a86f3c0bc402646d" - integrity sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g== + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.2.tgz#062b0ac103261d68a966c4c7baf2ae3e62ec3885" + integrity sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg== dependencies: regenerator-runtime "^0.14.0" @@ -1127,10 +1127,10 @@ "@babel/parser" "^7.22.15" "@babel/types" "^7.22.15" -"@babel/traverse@^7.23.0", "@babel/traverse@^7.4.4", "@babel/traverse@^7.7.2": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.0.tgz#18196ddfbcf4ccea324b7f6d3ada00d8c5a99c53" - integrity sha512-t/QaEvyIoIkwzpiZ7aoSKK8kObQYeF7T2v+dazAYCb8SXtp58zEVkWW7zAnju8FNKNdr4ScAOEDmMItbyOmEYw== +"@babel/traverse@^7.23.2", "@babel/traverse@^7.4.4", "@babel/traverse@^7.7.2": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.2.tgz#329c7a06735e144a506bdb2cad0268b7f46f4ad8" + integrity sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw== dependencies: "@babel/code-frame" "^7.22.13" "@babel/generator" "^7.23.0" @@ -1274,13 +1274,13 @@ integrity sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw== "@cypress/code-coverage@^3.10.0": - version "3.12.1" - resolved "https://registry.yarnpkg.com/@cypress/code-coverage/-/code-coverage-3.12.1.tgz#cdfd155f9e4788d56ba55caff10c70abfbf72fd1" - integrity sha512-4gSVkgcTo8NSWrOwLO0NxyvD2apIZFM/2k9sxdmP3eR3ko8tZVYrWfTdfxSXLDSkNnzVh+oXv7utaOLn+yemUg== + version "3.12.4" + resolved "https://registry.yarnpkg.com/@cypress/code-coverage/-/code-coverage-3.12.4.tgz#f4824be6827bc27626eaa2c7375609654834b05f" + integrity sha512-5uwsZpUd4iMCHESZLHZmnWhLFws3LKhto1VsdfXTiI8NPlDxpXF93k2ixehG9uQr7SSYEUJmdKipHSQmn4CidQ== dependencies: - "@cypress/webpack-preprocessor" "^5.11.0" + "@cypress/webpack-preprocessor" "^6.0.0" chalk "4.1.2" - dayjs "1.11.9" + dayjs "1.11.10" debug "4.3.4" execa "4.1.0" globby "11.0.4" @@ -1321,10 +1321,10 @@ tunnel-agent "^0.6.0" uuid "^8.3.2" -"@cypress/webpack-preprocessor@^5.11.0": - version "5.17.1" - resolved "https://registry.yarnpkg.com/@cypress/webpack-preprocessor/-/webpack-preprocessor-5.17.1.tgz#19c3f6ceb89e156824917b4ec31717ade34592ec" - integrity sha512-FE/e8ikPc8z4EVopJCaior3RGy0jd2q9Xcp5NtiwNG4XnLfEnUFTZlAGwXe75sEh4fNMPrBJW1KIz77PX5vGAw== +"@cypress/webpack-preprocessor@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@cypress/webpack-preprocessor/-/webpack-preprocessor-6.0.0.tgz#e4779978c76b1efbfd2173c65960d2ef73b0b3b7" + integrity sha512-1AS1Et5CNPJii0+DdBZBS8e0hlM2BkBNmYRdZO4/16A3KS3em1sjPZtFw7jJF00m6DYAdB9iy6QW/lLZ2bN0gg== dependencies: bluebird "3.7.1" debug "^4.3.4" @@ -1484,10 +1484,10 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.50.0": - version "8.50.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.50.0.tgz#9e93b850f0f3fa35f5fa59adfd03adae8488e484" - integrity sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ== +"@eslint/js@8.51.0": + version "8.51.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.51.0.tgz#6d419c240cfb2b66da37df230f7e7eef801c32fa" + integrity sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg== "@floating-ui/core@^1.4.2": version "1.5.0" @@ -1819,91 +1819,91 @@ call-me-maybe "^1.0.1" glob-to-regexp "^0.3.0" -"@mui/base@5.0.0-beta.18": - version "5.0.0-beta.18" - resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-beta.18.tgz#f95d393cf80974e77c0823170cc15c854d5af84b" - integrity sha512-e9ZCy/ndhyt5MTshAS3qAUy/40UiO0jX+kAo6a+XirrPJE+rrQW+mKPSI0uyp+5z4Vh+z0pvNoJ2S2gSrNz3BQ== +"@mui/base@5.0.0-beta.20": + version "5.0.0-beta.20" + resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-beta.20.tgz#14fcdfe0350f2aad06ab6c37c4c91dacaab8f600" + integrity sha512-CS2pUuqxST7ch9VNDCklRYDbJ3rru20Tx7na92QvVVKfu3RL4z/QLuVIc8jYGsdCnauMaeUSlFNLAJNb0yXe6w== dependencies: "@babel/runtime" "^7.23.1" "@floating-ui/react-dom" "^2.0.2" - "@mui/types" "^7.2.5" - "@mui/utils" "^5.14.12" + "@mui/types" "^7.2.6" + "@mui/utils" "^5.14.13" "@popperjs/core" "^2.11.8" clsx "^2.0.0" prop-types "^15.8.1" -"@mui/core-downloads-tracker@^5.14.12": - version "5.14.12" - resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.12.tgz#7be13094ef0c2fc7c3854da2b90a7eae456ebefd" - integrity sha512-WZhCkKqhrXaSVBzoC6LNcVkIawS000OOt7gmnp4g9HhyvN0PSclRXc/JrkC7EwfzUAZJh+hiK2LaVsbtOpNuOg== +"@mui/core-downloads-tracker@^5.14.14": + version "5.14.14" + resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.14.tgz#a54894e9b4dc908ab2d59eac543219d9018448e6" + integrity sha512-Rw/xKiTOUgXD8hdKqj60aC6QcGprMipG7ne2giK6Mz7b4PlhL/xog9xLeclY3BxsRLkZQ05egFnIEY1CSibTbw== "@mui/icons-material@^5.11.11", "@mui/icons-material@^5.4.1": - version "5.14.12" - resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-5.14.12.tgz#6634cdc3198bc438e8d38ce591c96d63d5df99a0" - integrity sha512-aFm6g/AIB3RQN9h/4MKoBoBybLZXeR3aDHWNx6KzemEpIlElUxv5uXRX5Qk1VC6v/YPkhbaPsiLLjsRSTiZF3w== + version "5.14.14" + resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-5.14.14.tgz#02d33f51f0b9de238d5c47b0a31ff330144393c4" + integrity sha512-vwuaMsKvI7AWTeYqR8wYbpXijuU8PzMAJWRAq2DDIuOZPxjKyHlr8WQ25+azZYkIXtJ7AqnVb1ZmHdEyB4/kug== dependencies: "@babel/runtime" "^7.23.1" "@mui/material@^5.11.12", "@mui/material@^5.4.1": - version "5.14.12" - resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.14.12.tgz#8fa5bebd1a096796a288b548f1ba867e068601c8" - integrity sha512-EelF2L46VcVqhg3KjzIGBBpOtcBgRh0MMy9Efuk6Do81QdcZsFC9RebCVAflo5jIdbHiBmxBs5/l5Q9NjONozg== + version "5.14.14" + resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.14.14.tgz#e47f3992b609002cd57a71f70e829dc2d286028c" + integrity sha512-cAmCwAHFQXxb44kWbVFkhKATN8tACgMsFwrXo8ro6WzYW73U/qsR5AcCiJIhCyYYg+gcftfkmNcpRaV3JjhHCg== dependencies: "@babel/runtime" "^7.23.1" - "@mui/base" "5.0.0-beta.18" - "@mui/core-downloads-tracker" "^5.14.12" - "@mui/system" "^5.14.12" - "@mui/types" "^7.2.5" - "@mui/utils" "^5.14.12" - "@types/react-transition-group" "^4.4.6" + "@mui/base" "5.0.0-beta.20" + "@mui/core-downloads-tracker" "^5.14.14" + "@mui/system" "^5.14.14" + "@mui/types" "^7.2.6" + "@mui/utils" "^5.14.13" + "@types/react-transition-group" "^4.4.7" clsx "^2.0.0" csstype "^3.1.2" prop-types "^15.8.1" react-is "^18.2.0" react-transition-group "^4.4.5" -"@mui/private-theming@^5.14.12": - version "5.14.12" - resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.14.12.tgz#b07f710b9794c928052ee4c91bf67fc3e0a442ea" - integrity sha512-TWwm+9+BgHFpoR3w04FG+IqID4ALa74A27RuKq2CEaWgxliBZB24EVeI6djfjFt5t4FYmIb8BMw2ZJEir7YjLQ== +"@mui/private-theming@^5.14.14": + version "5.14.14" + resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.14.14.tgz#035dde1eb30c896c69a12b7dee1dce3a323c66e9" + integrity sha512-n77au3CQj9uu16hak2Y+rvbGSBaJKxziG/gEbOLVGrAuqZ+ycVSkorCfN6Y/4XgYOpG/xvmuiY3JwhAEOzY3iA== dependencies: "@babel/runtime" "^7.23.1" - "@mui/utils" "^5.14.12" + "@mui/utils" "^5.14.13" prop-types "^15.8.1" -"@mui/styled-engine@^5.14.12": - version "5.14.12" - resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.14.12.tgz#bfacc045f14f8f8bef735c76ecfd90bc99427c43" - integrity sha512-bocxt1nDmXfB3gpLfCCmFCyJ7sVmscFs+PuheO210QagZwHVp47UIRT1AiswLDYSQo1ZqmVGn7KLEJEYK0d4Xw== +"@mui/styled-engine@^5.14.13": + version "5.14.13" + resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.14.13.tgz#4ab4ef7d86ffe8709bdce4b8b2e3dba9090da199" + integrity sha512-1ff/egFQl26hiwcUtCMKAkp4Sgqpm3qIewmXq+GN27fb44lDIACquehMFBuadOjceOFmbIXbayzbA46ZyqFYzA== dependencies: "@babel/runtime" "^7.23.1" "@emotion/cache" "^11.11.0" csstype "^3.1.2" prop-types "^15.8.1" -"@mui/system@^5.14.12", "@mui/system@^5.4.1": - version "5.14.12" - resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.14.12.tgz#da5b32c2a10bbe58f8b4839c5d5de449dc35e425" - integrity sha512-6DXfjjLhW0/ia5qU3Crke7j+MnfDbMBOHlLIrqbrEqNs0AuSBv8pXniEGb+kqO0H804NJreRTEJRjCngwOX5CA== +"@mui/system@^5.14.14", "@mui/system@^5.4.1": + version "5.14.14" + resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.14.14.tgz#f33327e74230523169107ace960e8bb51cbdbab7" + integrity sha512-y4InFmCgGGWXnz+iK4jRTWVikY0HgYnABjz4wgiUgEa2W1H8M4ow+27BegExUWPkj4TWthQ2qG9FOGSMtI+PKA== dependencies: "@babel/runtime" "^7.23.1" - "@mui/private-theming" "^5.14.12" - "@mui/styled-engine" "^5.14.12" - "@mui/types" "^7.2.5" - "@mui/utils" "^5.14.12" + "@mui/private-theming" "^5.14.14" + "@mui/styled-engine" "^5.14.13" + "@mui/types" "^7.2.6" + "@mui/utils" "^5.14.13" clsx "^2.0.0" csstype "^3.1.2" prop-types "^15.8.1" -"@mui/types@^7.2.5": - version "7.2.5" - resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.2.5.tgz#cd62a1fc5eb1044137ccab2053b431dd7cfc3cb8" - integrity sha512-S2BwfNczr7VwS6ki8GoAXJyARoeSJDLuxOEPs3vEMyTALlf9PrdHv+sluX7kk3iKrCg/ML2mIWwapZvWbkMCQA== +"@mui/types@^7.2.6": + version "7.2.6" + resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.2.6.tgz#d72b9e9eb0032e107e76033932d65c3f731d2608" + integrity sha512-7sjLQrUmBwufm/M7jw/quNiPK/oor2+pGUQP2CULRcFCArYTq78oJ3D5esTaL0UMkXKJvDqXn6Ike69yAOBQng== -"@mui/utils@^5.14.12": - version "5.14.12" - resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.14.12.tgz#58b570839e22e0fba71e17d37d9c083fe233704d" - integrity sha512-RFNXnhKQlzIkIUig6mmv0r5VbtjPdWoaBPYicq25LETdZux59HAqoRdWw15T7lp3c7gXOoE8y67+hTB8C64m2g== +"@mui/utils@^5.14.13": + version "5.14.13" + resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.14.13.tgz#42c352b342da90b44a29a83d3dbda6ee1e56a0f8" + integrity sha512-2AFpyXWw7uDCIqRu7eU2i/EplZtks5LAMzQvIhC79sPV9IhOZU2qwOWVnPtdctRXiQJOAaXulg+A37pfhEueQw== dependencies: "@babel/runtime" "^7.23.1" "@types/prop-types" "^15.7.7" @@ -2090,9 +2090,9 @@ svg-arc-to-cubic-bezier "^3.2.0" "@react-pdf/renderer@^3.1.12": - version "3.1.12" - resolved "https://registry.yarnpkg.com/@react-pdf/renderer/-/renderer-3.1.12.tgz#3c208a35662c561712acad1e06ccd0b753b2472a" - integrity sha512-y4H2ELH0okJP7+ig+uNjFAfuAanWiF3mxsKsE7ZBuhF4tabbMt9fX+pQ7qn4xrzEWX0vlso6s6ebkkeGdSGWzA== + version "3.1.13" + resolved "https://registry.yarnpkg.com/@react-pdf/renderer/-/renderer-3.1.13.tgz#0f5eda2cc509ce76f4b2d7379e2f3c667579893c" + integrity sha512-vsQauiy63A2ORWmoYwG3qoBbs3IKlSEM6XxipesZUEohn9WH9LXiU+VN8k+W75KRwRNJnqGOVhSxAiBVUxc61Q== dependencies: "@babel/runtime" "^7.20.13" "@react-pdf/font" "^2.3.6" @@ -2152,10 +2152,10 @@ redux-thunk "^2.4.2" reselect "^4.1.8" -"@remix-run/router@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.9.0.tgz#9033238b41c4cbe1e961eccb3f79e2c588328cf6" - integrity sha512-bV63itrKBC0zdT27qYm6SDZHlkXwFL1xMBuhkn+X7l0+IIhNaH5wuuvZKp6eKhCD4KFhujhfhCT1YxXW6esUIA== +"@remix-run/router@1.10.0": + version "1.10.0" + resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.10.0.tgz#e2170dc2049b06e65bbe883adad0e8ddf8291278" + integrity sha512-Lm+fYpMfZoEucJ7cMxgt4dYt8jLfbpwRCzAjm9UgSLOkmlqo9gupxt6YX3DY0Fk155NT9l17d/ydi+964uS9Lw== "@rollup/plugin-babel@^5.2.0": version "5.3.1" @@ -2431,9 +2431,9 @@ "@types/estree" "*" "@types/eslint@*", "@types/eslint@^7.29.0 || ^8.4.1": - version "8.44.3" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.44.3.tgz#96614fae4875ea6328f56de38666f582d911d962" - integrity sha512-iM/WfkwAhwmPff3wZuPLYiHX18HI24jU8k1ZSH7P8FHwxTjZ2P6CoX2wnF43oprR+YXJM6UUxATkNvyv/JHd+g== + version "8.44.4" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.44.4.tgz#28eaff82e1ca0a96554ec5bb0188f10ae1a74c2f" + integrity sha512-lOzjyfY/D9QR4hY9oblZ76B90MYTB3RrQ4z2vBIJKj9ROCRqdkYl2gSUx1x1a4IWPjKJZLL4Aw1Zfay7eMnmnA== dependencies: "@types/estree" "*" "@types/json-schema" "*" @@ -2459,9 +2459,9 @@ "@types/send" "*" "@types/express@*", "@types/express@^4.17.13": - version "4.17.18" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.18.tgz#efabf5c4495c1880df1bdffee604b143b29c4a95" - integrity sha512-Sxv8BSLLgsBYmcnGdGjjEjqET2U+AKAdCRODmMiq02FgjwuV75Ut85DRpvFjyw/Mk0vgUOliGRU0UUmuuZHByQ== + version "4.17.19" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.19.tgz#6ff9b4851fda132c5d3dcd2f89fdb6a7a0031ced" + integrity sha512-UtOfBtzN9OvpZPPbnnYunfjM7XCI4jyk1NvnFhTVz5krYAnW4o5DCoIekvms+8ApqhB4+9wSge1kBijdfTSmfg== dependencies: "@types/body-parser" "*" "@types/express-serve-static-core" "^4.17.33" @@ -2476,9 +2476,9 @@ "@types/node" "*" "@types/hoist-non-react-statics@^3.3.1": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#dc1e9ded53375d37603c479cc12c693b0878aa2a" - integrity sha512-YIQtIg4PKr7ZyqNPZObpxfHsHEmuB8dXCxd6qVcGuQVDK2bpsF7bYNnBJ4Nn7giuACZg+WewExgrtAJ3XnA4Xw== + version "3.3.3" + resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.3.tgz#8bb41d9a88164f82dd2745ff05e637e655f34d19" + integrity sha512-Wny3a2UXn5FEA1l7gc6BbpoV5mD1XijZqgkp4TRgDCDL5r3B5ieOFGUX5h3n78Tr1MEG7BfvoM8qeztdvNU0fw== dependencies: "@types/react" "*" hoist-non-react-statics "^3.3.0" @@ -2545,14 +2545,16 @@ integrity sha512-Ys+/St+2VF4+xuY6+kDIXGxbNRO0mesVg0bbxEfB97Od1Vjpjx9KD1qxs64Gcb3CWPirk9Xe+PT4YiiHQ9T+eg== "@types/node@*": - version "20.8.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.2.tgz#d76fb80d87d0d8abfe334fc6d292e83e5524efc4" - integrity sha512-Vvycsc9FQdwhxE3y3DzeIxuEJbWGDsnrxvMADzTDF/lcdR9/K+AQIeAghTQsHtotg/q0j3WEOYS/jQgSdWue3w== + version "20.8.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.6.tgz#0dbd4ebcc82ad0128df05d0e6f57e05359ee47fa" + integrity sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ== + dependencies: + undici-types "~5.25.1" "@types/node@^16.18.39": - version "16.18.57" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.57.tgz#1ba31c0e5c403aab90a3b7826576e6782ded779b" - integrity sha512-piPoDozdPaX1hNWFJQzzgWqE40gh986VvVx/QO9RU4qYRE55ld7iepDVgZ3ccGUw0R4wge0Oy1dd+3xOQNkkUQ== + version "16.18.58" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.58.tgz#bf66f63983104ed57c754f4e84ccaf16f8235adb" + integrity sha512-YGncyA25/MaVtQkjWW9r0EFBukZ+JulsLcVZBlGUfIb96OBMjkoRWwQo5IEWJ8Fj06Go3GHw+bjYDitv6BaGsA== "@types/node@^17.0.45": version "17.0.45" @@ -2604,13 +2606,13 @@ "@types/react" "*" "@types/react-dom@^18.0.11": - version "18.2.10" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.10.tgz#06247cb600e39b63a0a385f6a5014c44bab296f2" - integrity sha512-5VEC5RgXIk1HHdyN1pHlg0cOqnxHzvPGpMMyGAP5qSaDRmyZNDaQ0kkVAkK6NYlDhP6YBID3llaXlmAS/mdgCA== + version "18.2.13" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.13.tgz#89cd7f9ec8b28c8b6f0392b9591671fb4a9e96b7" + integrity sha512-eJIUv7rPP+EC45uNYp/ThhSpE16k22VJUknt5OLoH9tbXoi8bMhwLf5xRuWMywamNbWzhrSmU7IBJfPup1+3fw== dependencies: "@types/react" "*" -"@types/react-transition-group@^4.4.6": +"@types/react-transition-group@^4.4.7": version "4.4.7" resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.7.tgz#bf69f269d74aa78b99097673ca6dd6824a68ef1c" integrity sha512-ICCyBl5mvyqYp8Qeq9B5G/fyBSRC0zx3XM3sCC6KkcMsNeAHqXBKkmat4GqdJET5jtYUpZXrxI5flve5qhi2Eg== @@ -2618,9 +2620,9 @@ "@types/react" "*" "@types/react@*", "@types/react@^18.0.28": - version "18.2.25" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.25.tgz#99fa44154132979e870ff409dc5b6e67f06f0199" - integrity sha512-24xqse6+VByVLIr+xWaQ9muX1B4bXJKXBbjszbld/UEDslGLY53+ZucF44HCmLbMPejTzGG9XgR+3m2/Wqu1kw== + version "18.2.28" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.28.tgz#86877465c0fcf751659a36c769ecedfcfacee332" + integrity sha512-ad4aa/RaaJS3hyGz0BGegdnSRXQBkd1CCYDCdNjBPg90UUpLgo+WlJqb9fMYUxtehmzF3PJaTWqRZjko6BRzBg== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" @@ -2705,9 +2707,9 @@ integrity sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA== "@types/ws@^8.5.5": - version "8.5.6" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.6.tgz#e9ad51f0ab79b9110c50916c9fcbddc36d373065" - integrity sha512-8B5EO9jLVCy+B58PLHvLDuOD8DRVMgQzq8d55SjLCOn9kqGyqOvy27exVaTio1q1nX5zLu8/6N0n2ThSxOM6tg== + version "8.5.7" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.7.tgz#1ca585074fe5d2c81dec7a3d451f244a2a6d83cb" + integrity sha512-6UrLjiDUvn40CMrAubXuIVtj2PEfKDffJS7ychvnPU44j+KVeXmdHHTgqcM/dxLUTHxlXHiFM8Skmb8ozGdTnQ== dependencies: "@types/node" "*" @@ -2724,9 +2726,9 @@ "@types/yargs-parser" "*" "@types/yargs@^17.0.8": - version "17.0.26" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.26.tgz#388e5002a8b284ad7b4599ba89920a6d74d8d79a" - integrity sha512-Y3vDy2X6zw/ZCumcwLpdhM5L7jmyGpmBCTYMHDLqT2IKVMYRRLdv6ZakA+wxhra6Z/3bwhNbNl9bDGXaFU+6rw== + version "17.0.28" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.28.tgz#d106e4301fbacde3d1796ab27374dd16588ec851" + integrity sha512-N3e3fkS86hNhtk6BEnc0rj3zcehaxx8QWhCROJkqpl5Zaoi7nAic3jH8q94jVD3zu5LGk+PUB6KAiDmimYOEQw== dependencies: "@types/yargs-parser" "*" @@ -3578,29 +3580,29 @@ babel-plugin-named-asset-import@^0.3.8: resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz#6b7fa43c59229685368683c28bc9734f24524cc2" integrity sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q== -babel-plugin-polyfill-corejs2@^0.4.5: - version "0.4.5" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz#8097b4cb4af5b64a1d11332b6fb72ef5e64a054c" - integrity sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg== +babel-plugin-polyfill-corejs2@^0.4.6: + version "0.4.6" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz#b2df0251d8e99f229a8e60fc4efa9a68b41c8313" + integrity sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q== dependencies: "@babel/compat-data" "^7.22.6" - "@babel/helper-define-polyfill-provider" "^0.4.2" + "@babel/helper-define-polyfill-provider" "^0.4.3" semver "^6.3.1" -babel-plugin-polyfill-corejs3@^0.8.3: - version "0.8.4" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.4.tgz#1fac2b1dcef6274e72b3c72977ed8325cb330591" - integrity sha512-9l//BZZsPR+5XjyJMPtZSK4jv0BsTO1zDac2GC6ygx9WLGlcsnRd1Co0B2zT5fF5Ic6BZy+9m3HNZ3QcOeDKfg== +babel-plugin-polyfill-corejs3@^0.8.5: + version "0.8.5" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.5.tgz#a75fa1b0c3fc5bd6837f9ec465c0f48031b8cab1" + integrity sha512-Q6CdATeAvbScWPNLB8lzSO7fgUVBkQt6zLgNlfyeCr/EQaEQR+bWiBYYPYAFyE528BMjRhL+1QBMOI4jc/c5TA== dependencies: - "@babel/helper-define-polyfill-provider" "^0.4.2" + "@babel/helper-define-polyfill-provider" "^0.4.3" core-js-compat "^3.32.2" -babel-plugin-polyfill-regenerator@^0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz#80d0f3e1098c080c8b5a65f41e9427af692dc326" - integrity sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA== +babel-plugin-polyfill-regenerator@^0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz#d4c49e4b44614607c13fb769bcd85c72bb26a4a5" + integrity sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw== dependencies: - "@babel/helper-define-polyfill-provider" "^0.4.2" + "@babel/helper-define-polyfill-provider" "^0.4.3" babel-plugin-transform-react-remove-prop-types@^0.4.24: version "0.4.24" @@ -4135,9 +4137,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001538, caniuse-lite@^1.0.30001541: - version "1.0.30001546" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001546.tgz#10fdad03436cfe3cc632d3af7a99a0fb497407f0" - integrity sha512-zvtSJwuQFpewSyRrI3AsftF6rM0X80mZkChIt1spBGEvRglCrjTniXvinc8JKRoqTwXAgvqTImaN9igfSMtUBw== + version "1.0.30001549" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001549.tgz#7d1a3dce7ea78c06ed72c32c2743ea364b3615aa" + integrity sha512-qRp48dPYSCYaP+KurZLhDYdVE+yEyht/3NlmcJgVQ2VMGt6JL36ndQ/7rgspdZsJuxDPFIo/OzBT2+GmIJ53BA== case-sensitive-paths-webpack-plugin@^2.4.0: version "2.4.0" @@ -4390,9 +4392,9 @@ coa@^2.0.2: chalk "^2.4.1" q "^1.1.2" -"codeforlife@github:ocadotechnology/codeforlife-package-javascript#v1.27.4": - version "1.27.4" - resolved "https://codeload.github.com/ocadotechnology/codeforlife-package-javascript/tar.gz/38e81b1c24863927bed31c3fd7157b5c4fd64a03" +"codeforlife@github:ocadotechnology/codeforlife-package-javascript#158-teacher-teach-edit-student-details": + version "1.27.7" + resolved "https://codeload.github.com/ocadotechnology/codeforlife-package-javascript/tar.gz/d5be94233f67b506ddf93a2e1eaec29f70b2504f" dependencies: "@emotion/react" "^11.10.6" "@emotion/styled" "^11.10.6" @@ -4923,9 +4925,9 @@ css-what@^6.0.1: integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== cssdb@^7.1.0: - version "7.7.2" - resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-7.7.2.tgz#fbebd90edfc6af129fda4fd986f9dd604a209094" - integrity sha512-pQPYP7/kch4QlkTcLuUNiNL2v/E+O+VIdotT+ug62/+2B2/jkzs5fMM6RHCzGCZ9C82pODEMSIzRRUzJOrl78g== + version "7.8.0" + resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-7.8.0.tgz#ac41fa025371b74eb2ccfe3d41f5c4dbd444fbe3" + integrity sha512-SkeezZOQr5AHt9MgJgSFNyiuJwg1p8AwoVln6JwaQJsyxduRW9QJ+HP/gAQzbsz8SIqINtYvpJKjxTRI67zxLg== cssesc@^3.0.0: version "3.0.0" @@ -5164,12 +5166,7 @@ data-urls@^2.0.0: whatwg-mimetype "^2.3.0" whatwg-url "^8.0.0" -dayjs@1.11.9: - version "1.11.9" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.9.tgz#9ca491933fadd0a60a2c19f6c237c03517d71d1a" - integrity sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA== - -dayjs@^1.10.4: +dayjs@1.11.10, dayjs@^1.10.4: version "1.11.10" resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.10.tgz#68acea85317a6e164457d6d6947564029a6a16a0" integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ== @@ -5272,9 +5269,9 @@ defaults@^1.0.3: clone "^1.0.2" define-data-property@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.0.tgz#0db13540704e1d8d479a0656cf781267531b9451" - integrity sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g== + version "1.1.1" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" + integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== dependencies: get-intrinsic "^1.2.1" gopd "^1.0.1" @@ -5589,9 +5586,9 @@ ejs@^3.1.6: jake "^10.8.5" electron-to-chromium@^1.4.535: - version "1.4.542" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.542.tgz#9bfe19d8ddafc2591e4a17d04e60a5f5acc54965" - integrity sha512-6+cpa00G09N3sfh2joln4VUXHquWrOFx3FLZqiVQvl45+zS9DskDBTPvob+BhvFRmTBkyDSk0vvLMMRo/qc6mQ== + version "1.4.556" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.556.tgz#97385917eb6ea3ac6a3378cf87bb39ee1db96e76" + integrity sha512-6RPN0hHfzDU8D56E72YkDvnLw5Cj2NMXZGg3UkgyoHxjVhG99KZpsKgBWMmTy0Ei89xwan+rbRsVB9yzATmYzQ== elliptic@^6.5.3: version "6.5.4" @@ -5617,9 +5614,9 @@ emittery@^0.8.1: integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== emoji-regex@^10.2.1: - version "10.2.1" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.2.1.tgz#a41c330d957191efd3d9dfe6e1e8e1e9ab048b3f" - integrity sha512-97g6QgOk8zlDRdgq1WxwgTMgEWGVAQvB5Fdpgc1MkNy56la5SKP9GsMXKDOdqwn90/41a8yPwIGk1Y6WVbeMQA== + version "10.3.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.3.0.tgz#76998b9268409eb3dae3de989254d456e70cfe23" + integrity sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw== emoji-regex@^8.0.0: version "8.0.0" @@ -6085,14 +6082,14 @@ eslint-webpack-plugin@^3.1.1: schema-utils "^4.0.0" eslint@^8.3.0, eslint@^8.35.0: - version "8.50.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.50.0.tgz#2ae6015fee0240fcd3f83e1e25df0287f487d6b2" - integrity sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg== + version "8.51.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.51.0.tgz#4a82dae60d209ac89a5cff1604fea978ba4950f3" + integrity sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.6.1" "@eslint/eslintrc" "^2.1.2" - "@eslint/js" "8.50.0" + "@eslint/js" "8.51.0" "@humanwhocodes/config-array" "^0.11.11" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" @@ -6575,15 +6572,15 @@ find-yarn-workspace-root@^2.0.0: micromatch "^4.0.2" flat-cache@^3.0.4: - version "3.1.0" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.1.0.tgz#0e54ab4a1a60fe87e2946b6b00657f1c99e1af3f" - integrity sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew== + version "3.1.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.1.1.tgz#a02a15fdec25a8f844ff7cc658f03dd99eb4609b" + integrity sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q== dependencies: - flatted "^3.2.7" + flatted "^3.2.9" keyv "^4.5.3" rimraf "^3.0.2" -flatted@^3.2.7: +flatted@^3.2.9: version "3.2.9" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== @@ -6690,9 +6687,9 @@ forwarded@0.2.0: integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== fraction.js@^4.3.6: - version "4.3.6" - resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.6.tgz#e9e3acec6c9a28cf7bc36cbe35eea4ceb2c5c92d" - integrity sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg== + version "4.3.7" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" + integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== fragment-cache@^0.2.1: version "0.2.1" @@ -6774,9 +6771,9 @@ fsevents@^2.3.2, fsevents@~2.3.2: integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== function.prototype.name@^1.1.5, function.prototype.name@^1.1.6: version "1.1.6" @@ -7433,9 +7430,9 @@ human-signals@^2.1.0: integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== hyphen@^1.6.4: - version "1.6.6" - resolved "https://registry.yarnpkg.com/hyphen/-/hyphen-1.6.6.tgz#970678bb5182e9ee957f1a76ba109849d16dcc04" - integrity sha512-XtqmnT+b9n5MX+MsqluFAVTIenbtC25iskW0Z+jLd+awfhA+ZbWKWQMIvLJccGoa2bM1R6juWJ27cZxIFOmkWw== + version "1.7.0" + resolved "https://registry.yarnpkg.com/hyphen/-/hyphen-1.7.0.tgz#a01c09ff8599f4c08a61f971e27125a5dd14ebde" + integrity sha512-U5GRiJeEpXyDw1MqgZkig+TBzfWhXhwpE2aHmKuZAh/mzedvtPCXhaSDztJWhIhHUMe//D5nyGMGm5Jcb8tRdw== iconv-lite@0.4.24: version "0.4.24" @@ -7687,7 +7684,7 @@ is-color-stop@^1.0.0: rgb-regex "^1.0.1" rgba-regex "^1.0.0" -is-core-module@^2.11.0, is-core-module@^2.13.0, is-core-module@^2.9.0: +is-core-module@^2.11.0, is-core-module@^2.13.0: version "2.13.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db" integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ== @@ -8824,9 +8821,9 @@ jsprim@^2.0.2: object.values "^1.1.6" keyv@^4.5.3: - version "4.5.3" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.3.tgz#00873d2b046df737963157bd04f294ca818c9c25" - integrity sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug== + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== dependencies: json-buffer "3.0.1" @@ -8877,12 +8874,12 @@ language-tags@=1.0.5: language-subtag-registry "~0.3.2" launch-editor@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.6.0.tgz#4c0c1a6ac126c572bd9ff9a30da1d2cae66defd7" - integrity sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ== + version "2.6.1" + resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.6.1.tgz#f259c9ef95cbc9425620bbbd14b468fcdb4ffe3c" + integrity sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw== dependencies: picocolors "^1.0.0" - shell-quote "^1.7.3" + shell-quote "^1.8.1" lazy-ass@^1.6.0: version "1.6.0" @@ -9598,9 +9595,9 @@ object-hash@^3.0.0: integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== object-inspect@^1.12.3, object-inspect@^1.9.0: - version "1.12.3" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" - integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== + version "1.13.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.0.tgz#42695d3879e1cd5bda6df5062164d80c996e23e2" + integrity sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g== object-inspect@~1.4.0: version "1.4.1" @@ -11159,9 +11156,9 @@ prop-types@^15.6.2, prop-types@^15.8.1: react-is "^16.13.1" property-expr@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/property-expr/-/property-expr-2.0.5.tgz#278bdb15308ae16af3e3b9640024524f4dc02cb4" - integrity sha512-IJUkICM5dP5znhCckHSv30Q4b5/JA5enCtkRHYaOVOAocnH/1BQEYTC5NMfT3AVl/iXKdr3aqQbQn9DxyWknwA== + version "2.0.6" + resolved "https://registry.yarnpkg.com/property-expr/-/property-expr-2.0.6.tgz#f77bc00d5928a6c748414ad12882e83f24aec1e8" + integrity sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA== proxy-addr@~2.0.7: version "2.0.7" @@ -11448,19 +11445,19 @@ react-refresh@^0.11.0: integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A== react-router-dom@^6.8.2: - version "6.16.0" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.16.0.tgz#86f24658da35eb66727e75ecbb1a029e33ee39d9" - integrity sha512-aTfBLv3mk/gaKLxgRDUPbPw+s4Y/O+ma3rEN1u8EgEpLpPe6gNjIsWt9rxushMHHMb7mSwxRGdGlGdvmFsyPIg== + version "6.17.0" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.17.0.tgz#ea73f89186546c1cf72b10fcb7356d874321b2ad" + integrity sha512-qWHkkbXQX+6li0COUUPKAUkxjNNqPJuiBd27dVwQGDNsuFBdMbrS6UZ0CLYc4CsbdLYTckn4oB4tGDuPZpPhaQ== dependencies: - "@remix-run/router" "1.9.0" - react-router "6.16.0" + "@remix-run/router" "1.10.0" + react-router "6.17.0" -react-router@6.16.0: - version "6.16.0" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.16.0.tgz#abbf3d5bdc9c108c9b822a18be10ee004096fb81" - integrity sha512-VT4Mmc4jj5YyjpOi5jOf0I+TYzGpvzERy4ckNSvSh2RArv8LLoCxlsZ2D+tc7zgjxcY34oTz2hZaeX5RVprKqA== +react-router@6.17.0: + version "6.17.0" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.17.0.tgz#7b680c4cefbc425b57537eb9c73bedecbdc67c1e" + integrity sha512-YJR3OTJzi3zhqeJYADHANCGPUu9J+6fT5GLv82UWRGSxu6oJYCKVmxUcaBQuGm9udpWmPsvpme/CdHumqgsoaA== dependencies: - "@remix-run/router" "1.9.0" + "@remix-run/router" "1.10.0" react-scripts@^5.0.1: version "5.0.1" @@ -11861,20 +11858,20 @@ resolve.exports@^1.1.0: integrity sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ== resolve@^1.1.5, resolve@^1.1.7, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.22.2, resolve@^1.22.4, resolve@^1.4.0: - version "1.22.6" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.6.tgz#dd209739eca3aef739c626fea1b4f3c506195362" - integrity sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw== + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== dependencies: is-core-module "^2.13.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" resolve@^2.0.0-next.4: - version "2.0.0-next.4" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660" - integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ== + version "2.0.0-next.5" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c" + integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA== dependencies: - is-core-module "^2.9.0" + is-core-module "^2.13.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" @@ -12037,9 +12034,9 @@ sass-loader@^12.3.0: neo-async "^2.6.2" sass@^1.58.3: - version "1.68.0" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.68.0.tgz#0034b0cc9a50248b7d1702ac166fd25990023669" - integrity sha512-Lmj9lM/fef0nQswm1J2HJcEsBUba4wgNx2fea6yJHODREoMFnwRpZydBnX/RjyXw2REIwdkbqE4hrTo4qfDBUA== + version "1.69.3" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.69.3.tgz#f8a0c488697e6419519834a13335e7b65a609c11" + integrity sha512-X99+a2iGdXkdWn1akFPs0ZmelUzyAQfvqYc2P/MPTrJRuIRoTffGzT9W9nFqG00S+c8hXzVmgxhUuHFdrwxkhQ== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" @@ -12313,7 +12310,7 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shell-quote@^1.7.3: +shell-quote@^1.7.3, shell-quote@^1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== @@ -13033,9 +13030,9 @@ terser@^3.7.3: source-map-support "~0.5.10" terser@^5.0.0, terser@^5.10.0, terser@^5.16.8, terser@^5.6.1: - version "5.21.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.21.0.tgz#d2b27e92b5e56650bc83b6defa00a110f0b124b2" - integrity sha512-WtnFKrxu9kaoXuiZFSGrcAvvBqAdmKx0SFNmVNYdJamMu9yyN3I/QF0FbH4QcqJQ+y1CJnzxGIKH0cSj+FGYRw== + version "5.22.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.22.0.tgz#4f18103f84c5c9437aafb7a14918273310a8a49d" + integrity sha512-hHZVLgRA2z4NWcN6aS5rQDc+7Dcy58HOf2zbYwmFcQ+ua3h6eEFf5lIDKTzbWwlazPyOZsFQO8V80/IjVNExEw== dependencies: "@jridgewell/source-map" "^0.3.3" acorn "^8.8.2" @@ -13433,6 +13430,11 @@ underscore@1.12.1: resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.12.1.tgz#7bb8cc9b3d397e201cf8553336d262544ead829e" integrity sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw== +undici-types@~5.25.1: + version "5.25.3" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.25.3.tgz#e044115914c85f0bcbb229f346ab739f064998c3" + integrity sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA== + unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" @@ -13854,9 +13856,9 @@ webpack-sources@^3.2.3: integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== webpack@^5.64.4: - version "5.88.2" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.88.2.tgz#f62b4b842f1c6ff580f3fcb2ed4f0b579f4c210e" - integrity sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ== + version "5.89.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.89.0.tgz#56b8bf9a34356e93a6625770006490bf3a7f32dc" + integrity sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw== dependencies: "@types/eslint-scope" "^3.7.3" "@types/estree" "^1.0.0" @@ -14302,9 +14304,9 @@ yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2: integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== yaml@^2.1.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.2.tgz#f522db4313c671a0ca963a75670f1c12ea909144" - integrity sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg== + version "2.3.3" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.3.tgz#01f6d18ef036446340007db8e016810e5d64aad9" + integrity sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ== yargs-parser@^18.1.2: version "18.1.3" From 86eed3b33e1d90e0573f196ba818d1cd6c3479a9 Mon Sep 17 00:00:00 2001 From: SKairinos Date: Tue, 17 Oct 2023 12:17:44 +0100 Subject: [PATCH 29/52] new user endpoints pt.2 --- frontend/src/app/api/user.ts | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/frontend/src/app/api/user.ts b/frontend/src/app/api/user.ts index 11ab1ba6..51592c17 100644 --- a/frontend/src/app/api/user.ts +++ b/frontend/src/app/api/user.ts @@ -1,9 +1,9 @@ import { + ListArg, + ListResult, Model, - ReadArg, - ReadManyArg, - ReadManyResult, - ReadResult, + RetrieveArg, + RetrieveResult, UpdateArg, UpdateResult, mapIdsToTag, @@ -49,7 +49,7 @@ export type User = Model< const userApi = api.injectEndpoints({ endpoints: (build) => ({ - readUser: build.query, ReadArg>({ + retrieveUser: build.query, RetrieveArg>({ query: ({ id }) => ({ url: `users/${id}/`, method: 'GET' @@ -59,7 +59,7 @@ const userApi = api.injectEndpoints({ { type: 'user', id } ] }), - readUsers: build.query, ReadManyArg<{ + listUsers: build.query, ListArg<{ studentClass: string; }>>({ query: (arg) => ({ @@ -93,7 +93,7 @@ const userApi = api.injectEndpoints({ export default userApi; export const { - useReadUserQuery, - useReadUsersQuery, + useRetrieveUserQuery, + useListUsersQuery, useUpdateUserMutation } = userApi; From 26943e161ce8cbe4b9b2e103916f0419872caffe Mon Sep 17 00:00:00 2001 From: SKairinos Date: Thu, 19 Oct 2023 18:55:09 +0100 Subject: [PATCH 30/52] new cfl package --- backend/Pipfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/Pipfile.lock b/backend/Pipfile.lock index 2b587102..b36f3ba1 100644 --- a/backend/Pipfile.lock +++ b/backend/Pipfile.lock @@ -170,7 +170,7 @@ }, "codeforlife": { "git": "https://github.com/ocadotechnology/codeforlife-package-python.git", - "ref": "5b2ca201eae791047032eba944adc460c55bc8ff" + "ref": "455a40ab8f918d178717c021b4afadd172c4db67" }, "codeforlife-portal": { "hashes": [ From 455eb6f517a2d5134f514712307db62639cfe34a Mon Sep 17 00:00:00 2001 From: SKairinos Date: Thu, 19 Oct 2023 18:55:21 +0100 Subject: [PATCH 31/52] new cfl package --- frontend/yarn.lock | 366 ++++++++++++++++++++++----------------------- 1 file changed, 183 insertions(+), 183 deletions(-) diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 2a31d26e..46bfb97f 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -1517,11 +1517,11 @@ integrity sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A== "@humanwhocodes/config-array@^0.11.11": - version "0.11.11" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.11.tgz#88a04c570dbbc7dd943e4712429c3df09bc32844" - integrity sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA== + version "0.11.12" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.12.tgz#549afec9bfce5232ac6325db12765f407e70e3a0" + integrity sha512-NlGesA1usRNn6ctHCZ21M4/dKPgW9Nn1FypRdIKKgZOKzkVV4T1FlK5mBiLhHBCDmEbdQG0idrcXlbZfksJ+RA== dependencies: - "@humanwhocodes/object-schema" "^1.2.1" + "@humanwhocodes/object-schema" "^2.0.0" debug "^4.1.1" minimatch "^3.0.5" @@ -1530,10 +1530,10 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@humanwhocodes/object-schema@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== +"@humanwhocodes/object-schema@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.0.tgz#04ad39d82176c7da1591c81e78b993cffd8348d8" + integrity sha512-9S9QrXY2K0L4AGDcSgTi9vgiCcG8VcBv4Mp7/1hDPYoswIy6Z6KO5blYto82BT8M0MZNRWmCFLpCs3HlpYGGdw== "@iarna/toml@^2.2.0": version "2.2.5" @@ -1799,9 +1799,9 @@ integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.19" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz#f8a3249862f91be48d3127c3cfe992f79b4b8811" - integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw== + version "0.3.20" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" + integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== dependencies: "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" @@ -1872,9 +1872,9 @@ prop-types "^15.8.1" "@mui/styled-engine@^5.14.13": - version "5.14.13" - resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.14.13.tgz#4ab4ef7d86ffe8709bdce4b8b2e3dba9090da199" - integrity sha512-1ff/egFQl26hiwcUtCMKAkp4Sgqpm3qIewmXq+GN27fb44lDIACquehMFBuadOjceOFmbIXbayzbA46ZyqFYzA== + version "5.14.14" + resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.14.14.tgz#b0ededf531fff1ef110f7b263c2d3d95a0b8ec9a" + integrity sha512-sF3DS2PVG+cFWvkVHQQaGFpL1h6gSwOW3L91pdxPLQDHDZ5mZ/X0SlXU5XA+WjypoysG4urdAQC7CH/BRvUiqg== dependencies: "@babel/runtime" "^7.23.1" "@emotion/cache" "^11.11.0" @@ -1901,9 +1901,9 @@ integrity sha512-7sjLQrUmBwufm/M7jw/quNiPK/oor2+pGUQP2CULRcFCArYTq78oJ3D5esTaL0UMkXKJvDqXn6Ike69yAOBQng== "@mui/utils@^5.14.13": - version "5.14.13" - resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.14.13.tgz#42c352b342da90b44a29a83d3dbda6ee1e56a0f8" - integrity sha512-2AFpyXWw7uDCIqRu7eU2i/EplZtks5LAMzQvIhC79sPV9IhOZU2qwOWVnPtdctRXiQJOAaXulg+A37pfhEueQw== + version "5.14.14" + resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.14.14.tgz#7b2a0bcfb44c3376fc81f85500f9bd01706682ac" + integrity sha512-3AKp8uksje5sRfVrtgG9Q/2TBsHWVBUtA0NaXliZqGcXo8J+A+Agp0qUW2rJ+ivgPWTCCubz9FZVT2IQZ3bGsw== dependencies: "@babel/runtime" "^7.23.1" "@types/prop-types" "^15.7.7" @@ -2350,9 +2350,9 @@ integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.2.tgz#215db4f4a35d710256579784a548907237728756" - integrity sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA== + version "7.20.3" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.3.tgz#d5625a50b6f18244425a1359a858c73d70340778" + integrity sha512-54fjTSeSHwfan8AyHWrKbfBWiEUrNTZsUwPTDSNaaP1QDQIZbeNUg3a59E9D+375MzUw/x1vx2/0F5LBz+AeYA== dependencies: "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" @@ -2361,87 +2361,87 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.6.5" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.5.tgz#281f4764bcbbbc51fdded0f25aa587b4ce14da95" - integrity sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w== + version "7.6.6" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.6.tgz#676f89f67dc8ddaae923f70ebc5f1fa800c031a8" + integrity sha512-66BXMKb/sUWbMdBNdMvajU7i/44RkrA3z/Yt1c7R5xejt8qh84iU54yUWCtm0QwGJlDcf/gg4zd/x4mpLAlb/w== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": - version "7.4.2" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.2.tgz#843e9f1f47c957553b0c374481dc4772921d6a6b" - integrity sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ== + version "7.4.3" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.3.tgz#db9ac539a2fe05cfe9e168b24f360701bde41f5f" + integrity sha512-ciwyCLeuRfxboZ4isgdNZi/tkt06m8Tw6uGbBSBgWrnnZGNXiEyM27xc/PjXGQLqlZ6ylbgHMnm7ccF9tCkOeQ== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.2.tgz#4ddf99d95cfdd946ff35d2b65c978d9c9bf2645d" - integrity sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw== + version "7.20.3" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.3.tgz#a971aa47441b28ef17884ff945d0551265a2d058" + integrity sha512-Lsh766rGEFbaxMIDH7Qa+Yha8cMVI3qAK6CHt3OR0YfxOIn5Z54iHiyDRycHrBqeIiqGa20Kpsv1cavfBKkRSw== dependencies: "@babel/types" "^7.20.7" "@types/body-parser@*": - version "1.19.3" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.3.tgz#fb558014374f7d9e56c8f34bab2042a3a07d25cd" - integrity sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ== + version "1.19.4" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.4.tgz#78ad68f1f79eb851aa3634db0c7f57f6f601b462" + integrity sha512-N7UDG0/xiPQa2D/XrVJXjkWbpqHCd2sBaB32ggRF2l83RhPfamgKGF8gwwqyksS95qUS5ZYF9aF+lLPRlwI2UA== dependencies: "@types/connect" "*" "@types/node" "*" "@types/bonjour@^3.5.9": - version "3.5.11" - resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.11.tgz#fbaa46a1529ea5c5e46cde36e4be6a880db55b84" - integrity sha512-isGhjmBtLIxdHBDl2xGwUzEM8AOyOvWsADWq7rqirdi/ZQoHnLWErHvsThcEzTX8juDRiZtzp2Qkv5bgNh6mAg== + version "3.5.12" + resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.12.tgz#49badafb988e6c433ca675a5fd769b93b7649fc8" + integrity sha512-ky0kWSqXVxSqgqJvPIkgFkcn4C8MnRog308Ou8xBBIVo39OmUFy+jqNe0nPwLCDFxUpmT9EvT91YzOJgkDRcFg== dependencies: "@types/node" "*" "@types/connect-history-api-fallback@^1.3.5": - version "1.5.1" - resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.1.tgz#6e5e3602d93bda975cebc3449e1a318340af9e20" - integrity sha512-iaQslNbARe8fctL5Lk+DsmgWOM83lM+7FzP0eQUJs1jd3kBE8NWqBTIT2S8SqQOJjxvt2eyIjpOuYeRXq2AdMw== + version "1.5.2" + resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.2.tgz#acf51e088b3bb6507f7b093bd2b0de20940179cc" + integrity sha512-gX2j9x+NzSh4zOhnRPSdPPmTepS4DfxES0AvIFv3jGv5QyeAJf6u6dY5/BAoAJU9Qq1uTvwOku8SSC2GnCRl6Q== dependencies: "@types/express-serve-static-core" "*" "@types/node" "*" "@types/connect@*": - version "3.4.36" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.36.tgz#e511558c15a39cb29bd5357eebb57bd1459cd1ab" - integrity sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w== + version "3.4.37" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.37.tgz#c66a96689fd3127c8772eb3e9e5c6028ec1a9af5" + integrity sha512-zBUSRqkfZ59OcwXon4HVxhx5oWCJmc0OtBTK05M+p0dYjgN6iTwIL2T/WbsQZrEsdnwaF9cWQ+azOnpPvIqY3Q== dependencies: "@types/node" "*" "@types/country-list@^2.1.1": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@types/country-list/-/country-list-2.1.2.tgz#c0cb264d5f453cc24b86cfcd53b2bd708e3403f1" - integrity sha512-LhbigLmoDb/Ulfi8PDTZWjnT4nGwDBVVXh07fTIYzF83EKWBzO5zL1snBZ9Vjp1MOoYYJMOlBDvt7Dlk1H78WQ== + version "2.1.3" + resolved "https://registry.yarnpkg.com/@types/country-list/-/country-list-2.1.3.tgz#2bbbead0f77e66ba5eff84283837170bcca07dfc" + integrity sha512-xYfQz7i6GGmmBuyiV6cTX0UFSzDrfGHuCnXRIQs4Ko8zN0QIcd7XgawbGOXxfgSUE/+8vXQxCE0sHmnKnONxBA== "@types/crypto-js@^4.1.1": - version "4.1.2" - resolved "https://registry.yarnpkg.com/@types/crypto-js/-/crypto-js-4.1.2.tgz#fb56b34f397d9ae2335611e416f15e7d65e276e6" - integrity sha512-t33RNmTu5ufG/sorROIafiCVJMx3jz95bXUMoPAZcUD14fxMXnuTzqzXZoxpR0tNx2xpw11Dlmem9vGCsrSOfA== + version "4.1.3" + resolved "https://registry.yarnpkg.com/@types/crypto-js/-/crypto-js-4.1.3.tgz#7f2fa22857ae2b5d3221edcba9644f67f8ea984c" + integrity sha512-YP1sYYayLe7Eg5oXyLLvOLfxBfZ5Fgpz6sVWkpB18wDMywCLPWmqzRz+9gyuOoLF0fzDTTFwlyNbx7koONUwqA== "@types/eslint-scope@^3.7.3": - version "3.7.5" - resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.5.tgz#e28b09dbb1d9d35fdfa8a884225f00440dfc5a3e" - integrity sha512-JNvhIEyxVW6EoMIFIvj93ZOywYFatlpu9deeH6eSx6PE3WHYvHaQtmHmQeNw7aA81bYGBPPQqdtBm6b1SsQMmA== + version "3.7.6" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.6.tgz#585578b368ed170e67de8aae7b93f54a1b2fdc26" + integrity sha512-zfM4ipmxVKWdxtDaJ3MP3pBurDXOCoyjvlpE3u6Qzrmw4BPbfm4/ambIeTk/r/J0iq/+2/xp0Fmt+gFvXJY2PQ== dependencies: "@types/eslint" "*" "@types/estree" "*" "@types/eslint@*", "@types/eslint@^7.29.0 || ^8.4.1": - version "8.44.4" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.44.4.tgz#28eaff82e1ca0a96554ec5bb0188f10ae1a74c2f" - integrity sha512-lOzjyfY/D9QR4hY9oblZ76B90MYTB3RrQ4z2vBIJKj9ROCRqdkYl2gSUx1x1a4IWPjKJZLL4Aw1Zfay7eMnmnA== + version "8.44.6" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.44.6.tgz#60e564551966dd255f4c01c459f0b4fb87068603" + integrity sha512-P6bY56TVmX8y9J87jHNgQh43h6VVU+6H7oN7hgvivV81K2XY8qJZ5vqPy/HdUoVIelii2kChYVzQanlswPWVFw== dependencies: "@types/estree" "*" "@types/json-schema" "*" "@types/estree@*", "@types/estree@^1.0.0": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.2.tgz#ff02bc3dc8317cd668dfec247b750ba1f1d62453" - integrity sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA== + version "1.0.3" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.3.tgz#2be19e759a3dd18c79f9f436bd7363556c1a73dd" + integrity sha512-CS2rOaoQ/eAgAfcTfq6amKG7bsN+EMcgGY4FAFQdvSj2y1ixvOZTUA9mOtCai7E1SYu283XNw7urKK30nP3wkQ== "@types/estree@0.0.39": version "0.0.39" @@ -2449,9 +2449,9 @@ integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== "@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": - version "4.17.37" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.37.tgz#7e4b7b59da9142138a2aaa7621f5abedce8c7320" - integrity sha512-ZohaCYTgGFcOP7u6aJOhY9uIZQgZ2vxC2yWoArY+FeDXlqeH66ZVBjgvg+RLVAS/DWNq4Ap9ZXu1+SUQiiWYMg== + version "4.17.38" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.38.tgz#d9c1d3a134a1226d84ec8e40c182f960f969d5a4" + integrity sha512-hXOtc0tuDHZPFwwhuBJXPbjemWtXnJjbvuuyNH2Y5Z6in+iXc63c4eXYDc7GGGqHy+iwYqAJMdaItqdnbcBKmg== dependencies: "@types/node" "*" "@types/qs" "*" @@ -2459,9 +2459,9 @@ "@types/send" "*" "@types/express@*", "@types/express@^4.17.13": - version "4.17.19" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.19.tgz#6ff9b4851fda132c5d3dcd2f89fdb6a7a0031ced" - integrity sha512-UtOfBtzN9OvpZPPbnnYunfjM7XCI4jyk1NvnFhTVz5krYAnW4o5DCoIekvms+8ApqhB4+9wSge1kBijdfTSmfg== + version "4.17.20" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.20.tgz#e7c9b40276d29e38a4e3564d7a3d65911e2aa433" + integrity sha512-rOaqlkgEvOW495xErXMsmyX3WKBInbhG5eqojXYi3cGUaLoRDlXa5d52fkfWZT963AZ3v2eZ4MbKE6WpDAGVsw== dependencies: "@types/body-parser" "*" "@types/express-serve-static-core" "^4.17.33" @@ -2469,16 +2469,16 @@ "@types/serve-static" "*" "@types/graceful-fs@^4.1.2": - version "4.1.7" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.7.tgz#30443a2e64fd51113bc3e2ba0914d47109695e2a" - integrity sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw== + version "4.1.8" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.8.tgz#417e461e4dc79d957dc3107f45fe4973b09c2915" + integrity sha512-NhRH7YzWq8WiNKVavKPBmtLYZHxNY19Hh+az28O/phfp68CF45pMFud+ZzJ8ewnxnC5smIdF3dqFeiSUQ5I+pw== dependencies: "@types/node" "*" "@types/hoist-non-react-statics@^3.3.1": - version "3.3.3" - resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.3.tgz#8bb41d9a88164f82dd2745ff05e637e655f34d19" - integrity sha512-Wny3a2UXn5FEA1l7gc6BbpoV5mD1XijZqgkp4TRgDCDL5r3B5ieOFGUX5h3n78Tr1MEG7BfvoM8qeztdvNU0fw== + version "3.3.4" + resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.4.tgz#cc477ce0283bb9d19ea0cbfa2941fe2c8493a1be" + integrity sha512-ZchYkbieA+7tnxwX/SCBySx9WwvWR8TaP5tb2jRAzwvLb/rWchGw3v0w3pqUbUvj0GCwW2Xz/AVPSk6kUGctXQ== dependencies: "@types/react" "*" hoist-non-react-statics "^3.3.0" @@ -2489,45 +2489,45 @@ integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== "@types/http-errors@*": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.2.tgz#a86e00bbde8950364f8e7846687259ffcd96e8c2" - integrity sha512-lPG6KlZs88gef6aD85z3HNkztpj7w2R7HmR3gygjfXCQmsLloWNARFkMuzKiiY8FGdh1XDpgBdrSf4aKDiA7Kg== + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.3.tgz#c54e61f79b3947d040f150abd58f71efb422ff62" + integrity sha512-pP0P/9BnCj1OVvQR2lF41EkDG/lWWnDyA203b/4Fmi2eTyORnBtcDoKDwjWQthELrBvWkMOrvSOnZ8OVlW6tXA== "@types/http-proxy@^1.17.8": - version "1.17.12" - resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.12.tgz#86e849e9eeae0362548803c37a0a1afc616bd96b" - integrity sha512-kQtujO08dVtQ2wXAuSFfk9ASy3sug4+ogFR8Kd8UgP8PEuc1/G/8yjYRmp//PcDNJEUKOza/MrQu15bouEUCiw== + version "1.17.13" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.13.tgz#dd3a4da550580eb0557d4c7128a2ff1d1a38d465" + integrity sha512-GkhdWcMNiR5QSQRYnJ+/oXzu0+7JJEPC8vkWXK351BkhjraZF+1W13CUYARUvX9+NqIU2n6YHA4iwywsc/M6Sw== dependencies: "@types/node" "*" "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" - integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + version "2.0.5" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#fdfdd69fa16d530047d9963635bd77c71a08c068" + integrity sha512-zONci81DZYCZjiLe0r6equvZut0b+dBRPBN5kBDjsONnutYNtJMoWQ9uR2RkL1gLG9NMTzvf+29e5RFfPbeKhQ== "@types/istanbul-lib-report@*": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#412e0725ef41cde73bfa03e0e833eaff41e0fd63" - integrity sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ== + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.2.tgz#394798d5f727402eb5ec99eb9618ffcd2b7645a1" + integrity sha512-8toY6FgdltSdONav1XtUHl4LN1yTmLza+EuDazb/fEmRNCwjyqNVIQWs2IfC74IqjHkREs/nQ2FWq5kZU9IC0w== dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^3.0.0": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.2.tgz#edc8e421991a3b4df875036d381fc0a5a982f549" - integrity sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A== + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.3.tgz#0313e2608e6d6955d195f55361ddeebd4b74c6e7" + integrity sha512-1nESsePMBlf0RPRffLZi5ujYh7IH1BWL4y9pr+Bn3cJBdxz+RTP8bUFljLz9HvzhhOSWKdyBZ4DIivdL6rvgZg== dependencies: "@types/istanbul-lib-report" "*" "@types/js-cookie@^3.0.3": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/js-cookie/-/js-cookie-3.0.4.tgz#23475b6d3b03acc84192e7c24da88eb38c1039ef" - integrity sha512-vMMnFF+H5KYqdd/myCzq6wLDlPpteJK+jGFgBus3Da7lw+YsDmx2C8feGTzY2M3Fo823yON+HC2CL240j4OV+w== + version "3.0.5" + resolved "https://registry.yarnpkg.com/@types/js-cookie/-/js-cookie-3.0.5.tgz#5eba4033a4f17fb2b29d975892694315194eca33" + integrity sha512-dtLshqoiGRDHbHueIT9sjkd2F4tW1qPSX2xKAQK8p1e6pM+Z913GM1shv7dOqqasEMYbC5zEaClJomQe8OtQLA== "@types/json-schema@*", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": - version "7.0.13" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.13.tgz#02c24f4363176d2d18fc8b70b9f3c54aba178a85" - integrity sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ== + version "7.0.14" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.14.tgz#74a97a5573980802f32c8e47b663530ab3b6b7d1" + integrity sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw== "@types/json5@^0.0.29": version "0.0.29" @@ -2535,26 +2535,26 @@ integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== "@types/mime@*": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.2.tgz#c1ae807f13d308ee7511a5b81c74f327028e66e8" - integrity sha512-Wj+fqpTLtTbG7c0tH47dkahefpLKEbB+xAZuLq7b4/IDHPl/n6VoXcyUQ2bypFlbSwvCr0y+bD4euTTqTJsPxQ== + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.3.tgz#886674659ce55fe7c6c06ec5ca7c0eb276a08f91" + integrity sha512-i8MBln35l856k5iOhKk2XJ4SeAWg75mLIpZB4v6imOagKL6twsukBZGDMNhdOVk7yRFTMPpfILocMos59Q1otQ== "@types/mime@^1": - version "1.3.3" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.3.tgz#bbe64987e0eb05de150c305005055c7ad784a9ce" - integrity sha512-Ys+/St+2VF4+xuY6+kDIXGxbNRO0mesVg0bbxEfB97Od1Vjpjx9KD1qxs64Gcb3CWPirk9Xe+PT4YiiHQ9T+eg== + version "1.3.4" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.4.tgz#a4ed836e069491414bab92c31fdea9e557aca0d9" + integrity sha512-1Gjee59G25MrQGk8bsNvC6fxNiRgUlGn2wlhGf95a59DrprnnHk80FIMMFG9XHMdrfsuA119ht06QPDXA1Z7tw== "@types/node@*": - version "20.8.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.6.tgz#0dbd4ebcc82ad0128df05d0e6f57e05359ee47fa" - integrity sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ== + version "20.8.7" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.7.tgz#ad23827850843de973096edfc5abc9e922492a25" + integrity sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ== dependencies: undici-types "~5.25.1" "@types/node@^16.18.39": - version "16.18.58" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.58.tgz#bf66f63983104ed57c754f4e84ccaf16f8235adb" - integrity sha512-YGncyA25/MaVtQkjWW9r0EFBukZ+JulsLcVZBlGUfIb96OBMjkoRWwQo5IEWJ8Fj06Go3GHw+bjYDitv6BaGsA== + version "16.18.59" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.59.tgz#4cdbd631be6d9be266a96fb17b5d0d7ad6bbe26c" + integrity sha512-PJ1w2cNeKUEdey4LiPra0ZuxZFOGvetswE8qHRriV/sUkL5Al4tTmPV9D2+Y/TPIxTHHgxTfRjZVKWhPw/ORhQ== "@types/node@^17.0.45": version "17.0.45" @@ -2562,16 +2562,16 @@ integrity sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw== "@types/parcel-bundler@^1.12.5": - version "1.12.6" - resolved "https://registry.yarnpkg.com/@types/parcel-bundler/-/parcel-bundler-1.12.6.tgz#031ce205c433840d3b5b03dbce8fc74e3529947b" - integrity sha512-kFdL1J49zCXW+xsJTrU/BBdxlJpArtXcmkufsYNhwx7sN4s0570CnBXyQSjdDD3yrOrDQ/5fR8VtFFJBnzx8Ug== + version "1.12.7" + resolved "https://registry.yarnpkg.com/@types/parcel-bundler/-/parcel-bundler-1.12.7.tgz#0114b97bb5bfeb48dff1633517bb1abde0280be3" + integrity sha512-yCXjEAcvXuz2DzwCDgzSgrLjMs+j58DZu/3aYzJ448EGITYv4Ei83RQF18paqt9dcJ8hvpL5xIT7cxovDbWTjg== dependencies: "@types/express-serve-static-core" "*" "@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + version "4.0.1" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.1.tgz#27f7559836ad796cea31acb63163b203756a5b4e" + integrity sha512-3YmXzzPAdOTVljVMkTMBdBEvlOLg2cDQaDhnnhT3nT9uDbnJzjWhKlzb+desT12Y7tGqaN6d+AbozcKzyL36Ng== "@types/prettier@^2.1.5": version "2.7.3" @@ -2579,50 +2579,50 @@ integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== "@types/prop-types@*", "@types/prop-types@^15.7.7": - version "15.7.8" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.8.tgz#805eae6e8f41bd19e88917d2ea200dc992f405d3" - integrity sha512-kMpQpfZKSCBqltAJwskgePRaYRFukDkm1oItcAbC3gNELR20XIBcN9VRgg4+m8DKsTfkWeA4m4Imp4DDuWy7FQ== + version "15.7.9" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.9.tgz#b6f785caa7ea1fe4414d9df42ee0ab67f23d8a6d" + integrity sha512-n1yyPsugYNSmHgxDFjicaI2+gCNjsBck8UX9kuofAKlc0h1bL+20oSF72KeNaW2DUlesbEVCFgyV2dPGTiY42g== "@types/q@^1.5.1": - version "1.5.6" - resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.6.tgz#a6edffe8283910e46dc7a573621f928e6b47fa56" - integrity sha512-IKjZ8RjTSwD4/YG+2gtj7BPFRB/lNbWKTiSj3M7U/TD2B7HfYCxvp2Zz6xA2WIY7pAuL1QOUPw8gQRbUrrq4fQ== + version "1.5.7" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.7.tgz#5fe8cf91556bfb310d17f2e2b4263a7c12c2c2ca" + integrity sha512-HBPgtzp44867rkL+IzQ3560/E/BlobwCjeXsuKqogrcE99SKgZR4tvBBCuNJZMhUFMz26M7cjKWZg785lllwpA== "@types/qs@*": - version "6.9.8" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.8.tgz#f2a7de3c107b89b441e071d5472e6b726b4adf45" - integrity sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg== + version "6.9.9" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.9.tgz#66f7b26288f6799d279edf13da7ccd40d2fa9197" + integrity sha512-wYLxw35euwqGvTDx6zfY1vokBFnsK0HNrzc6xNHchxfO2hpuRg74GbkEW7e3sSmPvj0TjCDT1VCa6OtHXnubsg== "@types/range-parser@*": - version "1.2.5" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.5.tgz#38bd1733ae299620771bd414837ade2e57757498" - integrity sha512-xrO9OoVPqFuYyR/loIHjnbvvyRZREYKLjxV4+dY6v3FQR3stQ9ZxIGkaclF7YhI9hfjpuTbu14hZEy94qKLtOA== + version "1.2.6" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.6.tgz#7cb33992049fd7340d5b10c0098e104184dfcd2a" + integrity sha512-+0autS93xyXizIYiyL02FCY8N+KkKPhILhcUSA276HxzreZ16kl+cmwvV2qAM/PuCCwPXzOXOWhiPcw20uSFcA== "@types/react-copy-to-clipboard@^5.0.4": - version "5.0.5" - resolved "https://registry.yarnpkg.com/@types/react-copy-to-clipboard/-/react-copy-to-clipboard-5.0.5.tgz#f61fbb76ad22f50101534ddb9b5d45c8dd5b4b80" - integrity sha512-en3JGqPA4RX4aUlo6q6uUbnqLp31Dhm2E/thiMvFTIvU+dUDG249jBG2MJ0rPMXE/MbKVrpmi/1r1G4QLhIHKQ== + version "5.0.6" + resolved "https://registry.yarnpkg.com/@types/react-copy-to-clipboard/-/react-copy-to-clipboard-5.0.6.tgz#cf44e5879e4a5fc29814740497534875dd6f717f" + integrity sha512-x347Gy+ZG2dCMiWEHRwiIJ4uMlTmxW7yheRMSQbNf0mFkmXhnYE5nvRdt6SbnT6Z2dp7KPIr3CSvBgSiTIr9zw== dependencies: "@types/react" "*" "@types/react-dom@^18.0.11": - version "18.2.13" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.13.tgz#89cd7f9ec8b28c8b6f0392b9591671fb4a9e96b7" - integrity sha512-eJIUv7rPP+EC45uNYp/ThhSpE16k22VJUknt5OLoH9tbXoi8bMhwLf5xRuWMywamNbWzhrSmU7IBJfPup1+3fw== + version "18.2.14" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.14.tgz#c01ba40e5bb57fc1dc41569bb3ccdb19eab1c539" + integrity sha512-V835xgdSVmyQmI1KLV2BEIUgqEuinxp9O4G6g3FqO/SqLac049E53aysv0oEFD2kHfejeKU+ZqL2bcFWj9gLAQ== dependencies: "@types/react" "*" "@types/react-transition-group@^4.4.7": - version "4.4.7" - resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.7.tgz#bf69f269d74aa78b99097673ca6dd6824a68ef1c" - integrity sha512-ICCyBl5mvyqYp8Qeq9B5G/fyBSRC0zx3XM3sCC6KkcMsNeAHqXBKkmat4GqdJET5jtYUpZXrxI5flve5qhi2Eg== + version "4.4.8" + resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.8.tgz#46f87d80512959cac793ecc610a93d80ef241ccf" + integrity sha512-QmQ22q+Pb+HQSn04NL3HtrqHwYMf4h3QKArOy5F8U5nEVMaihBs3SR10WiOM1iwPz5jIo8x/u11al+iEGZZrvg== dependencies: "@types/react" "*" "@types/react@*", "@types/react@^18.0.28": - version "18.2.28" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.28.tgz#86877465c0fcf751659a36c769ecedfcfacee332" - integrity sha512-ad4aa/RaaJS3hyGz0BGegdnSRXQBkd1CCYDCdNjBPg90UUpLgo+WlJqb9fMYUxtehmzF3PJaTWqRZjko6BRzBg== + version "18.2.29" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.29.tgz#88b48a287e00f6fdcd6f95662878fb701ae18b27" + integrity sha512-Z+ZrIRocWtdD70j45izShRwDuiB4JZqDegqMFW/I8aG5DxxLKOzVNoq62UIO82v9bdgi+DO1jvsb9sTEZUSm+Q== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" @@ -2641,34 +2641,34 @@ integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== "@types/scheduler@*": - version "0.16.4" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.4.tgz#fedc3e5b15c26dc18faae96bf1317487cb3658cf" - integrity sha512-2L9ifAGl7wmXwP4v3pN4p2FLhD0O1qsJpvKmNin5VA8+UvNVb447UDaAEV6UdrkA+m/Xs58U1RFps44x6TFsVQ== + version "0.16.5" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.5.tgz#4751153abbf8d6199babb345a52e1eb4167d64af" + integrity sha512-s/FPdYRmZR8SjLWGMCuax7r3qCWQw9QKHzXVukAuuIJkXkDRwp+Pu5LMIVFi0Fxbav35WURicYr8u1QsoybnQw== "@types/semver@^7.3.12": - version "7.5.3" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.3.tgz#9a726e116beb26c24f1ccd6850201e1246122e04" - integrity sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw== + version "7.5.4" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.4.tgz#0a41252ad431c473158b22f9bfb9a63df7541cff" + integrity sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ== "@types/send@*": - version "0.17.2" - resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.2.tgz#af78a4495e3c2b79bfbdac3955fdd50e03cc98f2" - integrity sha512-aAG6yRf6r0wQ29bkS+x97BIs64ZLxeE/ARwyS6wrldMm3C1MdKwCcnnEwMC1slI8wuxJOpiUH9MioC0A0i+GJw== + version "0.17.3" + resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.3.tgz#81b2ea5a3a18aad357405af2d643ccbe5a09020b" + integrity sha512-/7fKxvKUoETxjFUsuFlPB9YndePpxxRAOfGC/yJdc9kTjTeP5kRCTzfnE8kPUKCeyiyIZu0YQ76s50hCedI1ug== dependencies: "@types/mime" "^1" "@types/node" "*" "@types/serve-index@^1.9.1": - version "1.9.2" - resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.2.tgz#cb26e775678a8526b73a5d980a147518740aaecd" - integrity sha512-asaEIoc6J+DbBKXtO7p2shWUpKacZOoMBEGBgPG91P8xhO53ohzHWGCs4ScZo5pQMf5ukQzVT9fhX1WzpHihig== + version "1.9.3" + resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.3.tgz#af9403916eb6fbf7d6ec6f47b2a4c46eb3222cc9" + integrity sha512-4KG+yMEuvDPRrYq5fyVm/I2uqAJSAwZK9VSa+Zf+zUq9/oxSSvy3kkIqyL+jjStv6UCVi8/Aho0NHtB1Fwosrg== dependencies: "@types/express" "*" "@types/serve-static@*", "@types/serve-static@^1.13.10": - version "1.15.3" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.3.tgz#2cfacfd1fd4520bbc3e292cca432d5e8e2e3ee61" - integrity sha512-yVRvFsEMrv7s0lGhzrggJjNOSmZCdgCjw9xWrPr/kNNLp6FaDfMC1KaYl3TSJ0c58bECwNBMoQrZJ8hA8E1eFg== + version "1.15.4" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.4.tgz#44b5895a68ca637f06c229119e1c774ca88f81b2" + integrity sha512-aqqNfs1XTF0HDrFdlY//+SGUxmdSUbjeRXb5iaZc3x0/vMbYmdw9qvOgHWOyyLFxSSRnUuP5+724zBgfw8/WAw== dependencies: "@types/http-errors" "*" "@types/mime" "*" @@ -2680,26 +2680,26 @@ integrity sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g== "@types/sizzle@^2.3.2": - version "2.3.4" - resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.4.tgz#cd6531924f60834fa4a1b8081f9eecf9bb1117f0" - integrity sha512-jA2llq2zNkg8HrALI7DtWzhALcVH0l7i89yhY3iBdOz6cBPeACoFq+fkQrjHA39t1hnSFOboZ7A/AY5MMZSlag== + version "2.3.5" + resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.5.tgz#d93dd29cdcd5801d90be968073b09a6b370780e4" + integrity sha512-tAe4Q+OLFOA/AMD+0lq8ovp8t3ysxAOeaScnfNdZpUxaGl51ZMDEITxkvFl1STudQ58mz6gzVGl9VhMKhwRnZQ== "@types/sockjs@^0.3.33": - version "0.3.34" - resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.34.tgz#43e10e549b36d2ba2589278f00f81b5d7ccda167" - integrity sha512-R+n7qBFnm/6jinlteC9DBL5dGiDGjWAvjo4viUanpnc/dG1y7uDoacXPIQ/PQEg1fI912SMHIa014ZjRpvDw4g== + version "0.3.35" + resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.35.tgz#f4a568c73d2a8071944bd6ffdca0d4e66810cd21" + integrity sha512-tIF57KB+ZvOBpAQwSaACfEu7htponHXaFzP7RfKYgsOS0NoYnn+9+jzp7bbq4fWerizI3dTB4NfAZoyeQKWJLw== dependencies: "@types/node" "*" "@types/stack-utils@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" - integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.2.tgz#01284dde9ef4e6d8cef6422798d9a3ad18a66f8b" + integrity sha512-g7CK9nHdwjK2n0ymT2CW698FuWJRIx+RP6embAzZ2Qi8/ilIrA1Imt2LVSeHUzKvpoi7BhmmQcXz95eS0f2JXw== "@types/trusted-types@^2.0.2": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.4.tgz#2b38784cd16957d3782e8e2b31c03bc1d13b4d65" - integrity sha512-IDaobHimLQhjwsQ/NMwRVfa/yL7L/wriQPMhw1ZJall0KX6E1oxk29XMDeilW5qTIg5aoiqf5Udy8U/51aNoQQ== + version "2.0.5" + resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.5.tgz#5cac7e7df3275bb95f79594f192d97da3b4fd5fe" + integrity sha512-I3pkr8j/6tmQtKV/ZzHtuaqYSQvyjGRKH4go60Rr0IDLlFxuRT5V32uvB1mecM5G1EVAUyF/4r4QZ1GHgz+mxA== "@types/use-sync-external-store@^0.0.3": version "0.0.3" @@ -2707,35 +2707,35 @@ integrity sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA== "@types/ws@^8.5.5": - version "8.5.7" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.7.tgz#1ca585074fe5d2c81dec7a3d451f244a2a6d83cb" - integrity sha512-6UrLjiDUvn40CMrAubXuIVtj2PEfKDffJS7ychvnPU44j+KVeXmdHHTgqcM/dxLUTHxlXHiFM8Skmb8ozGdTnQ== + version "8.5.8" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.8.tgz#13efec7bd439d0bdf2af93030804a94f163b1430" + integrity sha512-flUksGIQCnJd6sZ1l5dqCEG/ksaoAg/eUwiLAGTJQcfgvZJKF++Ta4bJA6A5aPSJmsr+xlseHn4KLgVlNnvPTg== dependencies: "@types/node" "*" "@types/yargs-parser@*": - version "21.0.1" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.1.tgz#07773d7160494d56aa882d7531aac7319ea67c3b" - integrity sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ== + version "21.0.2" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.2.tgz#7bd04c5da378496ef1695a1008bf8f71847a8b8b" + integrity sha512-5qcvofLPbfjmBfKaLfj/+f+Sbd6pN4zl7w7VSVI5uz7m9QZTuB2aZAa2uo1wHFBNN2x6g/SoTkXmd8mQnQF2Cw== "@types/yargs@^16.0.0": - version "16.0.6" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.6.tgz#cc0c63684d68d23498cf0b5f32aa4c3fb437c638" - integrity sha512-oTP7/Q13GSPrgcwEwdlnkoZSQ1Hg9THe644qq8PG6hhJzjZ3qj1JjEFPIwWV/IXVs5XGIVqtkNOS9kh63WIJ+A== + version "16.0.7" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.7.tgz#b0d0502cb5f6c17994df72a600049f10bbf17203" + integrity sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg== dependencies: "@types/yargs-parser" "*" "@types/yargs@^17.0.8": - version "17.0.28" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.28.tgz#d106e4301fbacde3d1796ab27374dd16588ec851" - integrity sha512-N3e3fkS86hNhtk6BEnc0rj3zcehaxx8QWhCROJkqpl5Zaoi7nAic3jH8q94jVD3zu5LGk+PUB6KAiDmimYOEQw== + version "17.0.29" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.29.tgz#06aabc72497b798c643c812a8b561537fea760cf" + integrity sha512-nacjqA3ee9zRF/++a3FUY1suHTFKZeHba2n8WeDw9cCVdmzmHpIxyzOJBcpHvvEmS8E9KqWlSnWHUkOrkhWcvA== dependencies: "@types/yargs-parser" "*" "@types/yauzl@^2.9.1": - version "2.10.1" - resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.1.tgz#4e8f299f0934d60f36c74f59cb5a8483fd786691" - integrity sha512-CHzgNU3qYBnp/O4S3yv2tXPlvMTq0YWSTVg2/JYLqWZGHwwgJGAwd00poay/11asPq8wLFwHzubyInqHIFmmiw== + version "2.10.2" + resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.2.tgz#dab926ef9b41a898bc943f11bca6b0bad6d4b729" + integrity sha512-Km7XAtUIduROw7QPgvcft0lIupeG8a8rdKL8RiSyKvlE7dYY31fEn41HVuQsRFDuROA8tA4K2UVL+WdfFmErBA== dependencies: "@types/node" "*" @@ -4137,9 +4137,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001538, caniuse-lite@^1.0.30001541: - version "1.0.30001549" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001549.tgz#7d1a3dce7ea78c06ed72c32c2743ea364b3615aa" - integrity sha512-qRp48dPYSCYaP+KurZLhDYdVE+yEyht/3NlmcJgVQ2VMGt6JL36ndQ/7rgspdZsJuxDPFIo/OzBT2+GmIJ53BA== + version "1.0.30001551" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001551.tgz#1f2cfa8820bd97c971a57349d7fd8f6e08664a3e" + integrity sha512-vtBAez47BoGMMzlbYhfXrMV1kvRF2WP/lqiMuDu1Sb4EE4LKEgjopFDSRtZfdVnslNRpOqV/woE+Xgrwj6VQlg== case-sensitive-paths-webpack-plugin@^2.4.0: version "2.4.0" @@ -4394,7 +4394,7 @@ coa@^2.0.2: "codeforlife@github:ocadotechnology/codeforlife-package-javascript#158-teacher-teach-edit-student-details": version "1.27.7" - resolved "https://codeload.github.com/ocadotechnology/codeforlife-package-javascript/tar.gz/d5be94233f67b506ddf93a2e1eaec29f70b2504f" + resolved "https://codeload.github.com/ocadotechnology/codeforlife-package-javascript/tar.gz/cf738cea69ecb54d070818cc8e6604247402bb80" dependencies: "@emotion/react" "^11.10.6" "@emotion/styled" "^11.10.6" @@ -5586,9 +5586,9 @@ ejs@^3.1.6: jake "^10.8.5" electron-to-chromium@^1.4.535: - version "1.4.556" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.556.tgz#97385917eb6ea3ac6a3378cf87bb39ee1db96e76" - integrity sha512-6RPN0hHfzDU8D56E72YkDvnLw5Cj2NMXZGg3UkgyoHxjVhG99KZpsKgBWMmTy0Ei89xwan+rbRsVB9yzATmYzQ== + version "1.4.559" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.559.tgz#050483c22c5eb2345017a8976a67b060559a33f4" + integrity sha512-iS7KhLYCSJbdo3rUSkhDTVuFNCV34RKs2UaB9Ecr7VlqzjjWW//0nfsFF5dtDmyXlZQaDYYtID5fjtC/6lpRug== elliptic@^6.5.3: version "6.5.4" @@ -12034,9 +12034,9 @@ sass-loader@^12.3.0: neo-async "^2.6.2" sass@^1.58.3: - version "1.69.3" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.69.3.tgz#f8a0c488697e6419519834a13335e7b65a609c11" - integrity sha512-X99+a2iGdXkdWn1akFPs0ZmelUzyAQfvqYc2P/MPTrJRuIRoTffGzT9W9nFqG00S+c8hXzVmgxhUuHFdrwxkhQ== + version "1.69.4" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.69.4.tgz#10c735f55e3ea0b7742c6efa940bce30e07fbca2" + integrity sha512-+qEreVhqAy8o++aQfCJwp0sklr2xyEzkm9Pp/Igu9wNPoe7EZEQ8X/MBvvXggI2ql607cxKg/RKOwDj6pp2XDA== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" From 236139cd496b68161d9399de8a2e2eb9ec17c9ff Mon Sep 17 00:00:00 2001 From: SKairinos Date: Thu, 19 Oct 2023 18:55:33 +0100 Subject: [PATCH 32/52] fix formatting --- frontend/.eslintrc.json | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/frontend/.eslintrc.json b/frontend/.eslintrc.json index dab46480..72168c64 100644 --- a/frontend/.eslintrc.json +++ b/frontend/.eslintrc.json @@ -3,22 +3,37 @@ "browser": false, // disable new browser session on yarn start "es2021": true }, - "extends": ["plugin:react/recommended", "standard-with-typescript"], + "extends": [ + "plugin:react/recommended", + "standard-with-typescript" + ], "overrides": [], "parserOptions": { "ecmaVersion": "latest", "sourceType": "module", - "project": ["frontend/tsconfig.json", "frontend/cypress/tsconfig.json"] + "project": [ + "frontend/tsconfig.json", + "frontend/cypress/tsconfig.json" + ] }, - "plugins": ["react"], + "plugins": [ + "react" + ], "rules": { - "@typescript-eslint/semi": [2, "always"], + "@typescript-eslint/semi": [ + 2, + "always" + ], "@typescript-eslint/member-delimiter-style": "off", "@typescript-eslint/space-before-function-paren": "off", "@typescript-eslint/no-invalid-void-type": "off", "@typescript-eslint/consistent-type-imports": "off", "@typescript-eslint/strict-boolean-expressions": "off", - "@typescript-eslint/indent": "off" + "@typescript-eslint/indent": "off", + "react/jsx-uses-react": 0, + "react/react-in-jsx-scope": 0 }, - "ignorePatterns": ["src/scripts/*.js"] -} + "ignorePatterns": [ + "src/scripts/*.js" + ] +} \ No newline at end of file From 0cb5246dcd2ea7ed991e9c30e3d88d86b8301a50 Mon Sep 17 00:00:00 2001 From: SKairinos Date: Thu, 19 Oct 2023 18:55:50 +0100 Subject: [PATCH 33/52] remove required --- frontend/src/app/schemas.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/frontend/src/app/schemas.ts b/frontend/src/app/schemas.ts index 72f274bd..16dae7d3 100644 --- a/frontend/src/app/schemas.ts +++ b/frontend/src/app/schemas.ts @@ -2,5 +2,4 @@ import * as yup from 'yup'; export const accessCodeSchema = yup .string() - .required() .matches(/^[A-Z0-9]{5}$/, 'Invalid access code'); From 3c0c90c3005d7bd45777c8ccbf7dc4b2445eedce Mon Sep 17 00:00:00 2001 From: SKairinos Date: Thu, 19 Oct 2023 18:56:20 +0100 Subject: [PATCH 34/52] handle response errors --- frontend/src/app/api/api.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/frontend/src/app/api/api.ts b/frontend/src/app/api/api.ts index b5021378..adc5f79c 100644 --- a/frontend/src/app/api/api.ts +++ b/frontend/src/app/api/api.ts @@ -37,7 +37,7 @@ const baseQuery: FetchBaseQuery = async (args, api, extraOptions) => { extraOptions ); - // handleResponseError(result); + handleResponseError(result); parseResponseBody(result); @@ -54,4 +54,6 @@ const api = createApi({ }); export default api; -export const { useLogoutMutation } = api; +export const { + useLogoutMutation +} = api; From 4f0b3e576375ab11cdcbc2382d189ccc21c8368e Mon Sep 17 00:00:00 2001 From: SKairinos Date: Thu, 19 Oct 2023 19:05:57 +0100 Subject: [PATCH 35/52] classes endpoints --- frontend/src/app/api/index.ts | 6 +++ frontend/src/app/api/klass.ts | 84 +++++++++++++++++++++++++++++++++++ 2 files changed, 90 insertions(+) create mode 100644 frontend/src/app/api/klass.ts diff --git a/frontend/src/app/api/index.ts b/frontend/src/app/api/index.ts index f943cac3..a71fa12f 100644 --- a/frontend/src/app/api/index.ts +++ b/frontend/src/app/api/index.ts @@ -7,6 +7,10 @@ import { useDownloadStudentPackMutation, useRegisterUserMutation } from './home'; +import { + useListClassesQuery, + useRetrieveClassQuery +} from './klass'; import { useLoginMutation } from './login'; @@ -81,6 +85,7 @@ export { useIsRequestingToJoinSchoolQuery, useJoinSchoolRequestMutation, useLeaveOrganisationMutation, + useListClassesQuery, useListUsersQuery, useLoginMutation, useLogoutMutation, @@ -91,6 +96,7 @@ export { useRequestTeacherPasswordResetMutation, useResendInviteMutation, useResetPasswordMutation, + useRetrieveClassQuery, useRetrieveUserQuery, useRevokeSchoolRequestMutation, useSubscribeToNewsletterMutation, diff --git a/frontend/src/app/api/klass.ts b/frontend/src/app/api/klass.ts new file mode 100644 index 00000000..9b74ba96 --- /dev/null +++ b/frontend/src/app/api/klass.ts @@ -0,0 +1,84 @@ +import { + ListArg, + ListResult, + Model, + RetrieveArg, + RetrieveResult, + UpdateArg, + UpdateResult, + mapIdsToTag +} from 'codeforlife/lib/esm/helpers/rtkQuery'; + +import api from './api'; + +export type Class = Model< + number, + { + name: string; + teacher: number; + classmatesDataViewable: boolean; + alwaysAcceptRequests: boolean; + acceptRequestsUntil: null | Date; + isActive: boolean; + }, + { + accessCode: string; + creationTime: null | Date; + createdBy: number; + } +>; + +const classApi = api.injectEndpoints({ + endpoints: (build) => ({ + retrieveClass: build.query< + RetrieveResult, + RetrieveArg + >({ + query: ({ accessCode }) => ({ + url: `classes/${accessCode}/`, + method: 'GET' + }), + providesTags: (result, error, arg) => result + ? [ + 'private', + { type: 'class', id: result.id } + ] + : [] + }), + listClasses: build.query, ListArg>({ + query: () => ({ + url: 'classes/', + method: 'GET' + }), + providesTags: (result, error, arg) => result + ? [ + 'private', + ...mapIdsToTag(result, 'class') + ] + : [] + }), + updateClass: build.mutation< + UpdateResult, + UpdateArg + >({ + query: ({ accessCode, ...body }) => ({ + url: `classes/${accessCode}/`, + method: 'PATCH', + body, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + } + }), + invalidatesTags: (result, error, arg) => result + ? [{ type: 'class', id: result.id }] + : [] + }) + }) +}); + +export default classApi; +export const { + useRetrieveClassQuery, + useListClassesQuery, + useUpdateClassMutation +} = classApi; From 809ba04ccfe04bce42a1de31404dc3f56d86ecb0 Mon Sep 17 00:00:00 2001 From: SKairinos Date: Thu, 19 Oct 2023 19:06:19 +0100 Subject: [PATCH 36/52] fix type --- frontend/src/app/api/login.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/app/api/login.ts b/frontend/src/app/api/login.ts index cae1f343..19c90fbc 100644 --- a/frontend/src/app/api/login.ts +++ b/frontend/src/app/api/login.ts @@ -11,7 +11,7 @@ const loginApi = api.injectEndpoints({ password: string; classId: string; } | { - userId: string; + userId: number; loginId: string; } | { otp: string; From 1f011274fd94a4c631c3b1e9ec64b8d94e17f527 Mon Sep 17 00:00:00 2001 From: SKairinos Date: Thu, 19 Oct 2023 19:08:04 +0100 Subject: [PATCH 37/52] update userId type pt. 2 --- frontend/src/pages/login/StudentForm.tsx | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/frontend/src/pages/login/StudentForm.tsx b/frontend/src/pages/login/StudentForm.tsx index 65aec2f3..e713fee4 100644 --- a/frontend/src/pages/login/StudentForm.tsx +++ b/frontend/src/pages/login/StudentForm.tsx @@ -1,11 +1,11 @@ +import { ChevronRight as ChevronRightIcon } from '@mui/icons-material'; +import { Typography } from '@mui/material'; import React from 'react'; import { + generatePath, useNavigate, - useParams, - generatePath + useParams } from 'react-router-dom'; -import { Typography } from '@mui/material'; -import { ChevronRight as ChevronRightIcon } from '@mui/icons-material'; import * as Yup from 'yup'; import { tryValidateSync } from 'codeforlife/lib/esm/helpers/yup'; @@ -14,12 +14,12 @@ import { accessCodeSchema } from '../../app/schemas'; import BaseForm from './BaseForm'; import { + PasswordField, SubmitButton, - TextField, - PasswordField + TextField } from 'codeforlife/lib/esm/components/form'; -import { fromSearchParams } from 'codeforlife/lib/esm/hooks'; import { submitForm } from 'codeforlife/lib/esm/helpers/formik'; +import { fromSearchParams } from 'codeforlife/lib/esm/hooks'; import { useLoginMutation } from '../../app/api'; import { paths } from '../../app/router'; @@ -108,7 +108,7 @@ const StudentForm: React.FC = () => { const searchParams = tryValidateSync( fromSearchParams(), Yup.object({ - userId: Yup.string().required(), + userId: Yup.number().required(), loginId: Yup.string().required() }) ); From d89122c3bbaa0b2ec238ce07dfa350558c99bfe1 Mon Sep 17 00:00:00 2001 From: SKairinos Date: Thu, 19 Oct 2023 19:12:55 +0100 Subject: [PATCH 38/52] can read and write password --- frontend/src/app/api/user.ts | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/frontend/src/app/api/user.ts b/frontend/src/app/api/user.ts index 51592c17..de88a168 100644 --- a/frontend/src/app/api/user.ts +++ b/frontend/src/app/api/user.ts @@ -18,6 +18,7 @@ export type User = Model< firstName: string; lastName: string; email: string; + password: null | string; }, { username: string; @@ -41,9 +42,6 @@ export type User = Model< blockedTime: null | Date; invitedBy: null | number; }; - }, - { - password: string; } >; @@ -73,10 +71,10 @@ const userApi = api.injectEndpoints({ ] : [] }), - updateUser: build.mutation, UpdateArg>({ - query: ({ id, body }) => ({ + updateUser: build.mutation, UpdateArg & { + currentPassword?: string; + }>({ + query: ({ id, ...body }) => ({ url: `users/${id}/`, method: 'PATCH', body, From c630c372e4d0552a94c5960bc2127d8248469c28 Mon Sep 17 00:00:00 2001 From: SKairinos Date: Thu, 19 Oct 2023 19:13:23 +0100 Subject: [PATCH 39/52] fix formatting --- frontend/src/app/api/teacher/teach.ts | 91 ++++++++++++--------------- 1 file changed, 41 insertions(+), 50 deletions(-) diff --git a/frontend/src/app/api/teacher/teach.ts b/frontend/src/app/api/teacher/teach.ts index 5d9ce9d8..beb8e94f 100644 --- a/frontend/src/app/api/teacher/teach.ts +++ b/frontend/src/app/api/teacher/teach.ts @@ -46,12 +46,11 @@ const teachApi = api.injectEndpoints({ { type: 'class', id: accessCode } ] }), - getStudentsByAccessCode: build.query< - { - studentsPerAccessCode: studentPerAccessCode[]; - }, - { accessCode: string } - >({ + getStudentsByAccessCode: build.query<{ + studentsPerAccessCode: studentPerAccessCode[]; + }, { + accessCode: string + }>({ query: ({ accessCode }) => ({ url: `class/students/${accessCode}/`, method: 'GET' @@ -60,29 +59,25 @@ const teachApi = api.injectEndpoints({ { type: 'student', id: accessCode } ] }), - getStudent: build.query< - { - student: studentPerAccessCode; - }, - { studentId: string } - >({ + getStudent: build.query<{ + student: studentPerAccessCode; + }, { + studentId: string + }>({ query: ({ studentId }) => ({ url: `class/student/${studentId}/`, method: 'GET' }) }), - updateClass: build.mutation< - null, - { - accessCode: string; - classEditSubmit?: boolean; - levelControlSubmit?: boolean; - classMoveSubmit?: boolean; - name: string; - classmateProgress: boolean; - externalRequests: string; - } - >({ + updateClass: build.mutation({ query: ({ accessCode, ...body }) => ({ url: `teach/class/edit/${accessCode}`, method: 'POST', @@ -95,16 +90,13 @@ const teachApi = api.injectEndpoints({ { type: 'class', id: accessCode } ] }), - editStudentPassword: build.mutation< - { - accessCode: string; - }, - { - studentId: string; - password: string; - confirmPassword: string; - } - >({ + editStudentPassword: build.mutation<{ + accessCode: string; + }, { + studentId: string; + password: string; + confirmPassword: string; + }>({ query: ({ studentId, password, confirmPassword }) => ({ url: `teach/student/edit/${studentId}`, method: 'POST', @@ -117,13 +109,10 @@ const teachApi = api.injectEndpoints({ } }) }), - editStudentName: build.mutation< - null, - { - studentId: string; - name: string; - } - >({ + editStudentName: build.mutation({ query: ({ studentId, name }) => ({ url: `teach/student/edit/${studentId}`, method: 'POST', @@ -135,7 +124,9 @@ const teachApi = api.injectEndpoints({ } }) }), - deleteClass: build.mutation({ + deleteClass: build.mutation({ query: ({ accessCode }) => ({ url: `teach/class/delete/${accessCode}`, method: 'POST', @@ -145,13 +136,10 @@ const teachApi = api.injectEndpoints({ }), invalidatesTags: ['teacher'] }), - moveClass: build.mutation< - void, - { - accessCode: string; - teacherId: string; - } - >({ + moveClass: build.mutation({ query: (body) => ({ url: 'teach/move_class/', method: 'POST', @@ -162,7 +150,10 @@ const teachApi = api.injectEndpoints({ }), invalidatesTags: ['teacher'] }), - getReminderCards: build.mutation({ + getReminderCards: build.mutation({ query: ({ accessCode, data }) => ({ url: `teach/onboarding-class/${accessCode}/print-reminder-cards/`, method: 'POST', From 55566097d2b3973a6f321db48ab410fd620d02ab Mon Sep 17 00:00:00 2001 From: SKairinos Date: Thu, 19 Oct 2023 19:14:27 +0100 Subject: [PATCH 40/52] page to student credentials --- frontend/src/app/router/paths.ts | 2 +- frontend/src/app/router/routes/teacher.tsx | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/frontend/src/app/router/paths.ts b/frontend/src/app/router/paths.ts index f8802b1a..555578cf 100644 --- a/frontend/src/app/router/paths.ts +++ b/frontend/src/app/router/paths.ts @@ -24,7 +24,7 @@ const paths = _('', { classes: _('/classes', { editClass: _('/:accessCode', { additional: _('/additional'), - updatedStudentCredentials: _('/updated-student-credentials'), + studentCredentials: _('/student-credentials'), editStudent: _('/edit/?studentIds={studentIds}'), resetStudents: _('/reset/?studentIds={studentIds}'), moveStudents: _('/move/?studentIds={studentIds}'), diff --git a/frontend/src/app/router/routes/teacher.tsx b/frontend/src/app/router/routes/teacher.tsx index cf1c656b..91a88008 100644 --- a/frontend/src/app/router/routes/teacher.tsx +++ b/frontend/src/app/router/routes/teacher.tsx @@ -1,12 +1,12 @@ -import React from 'react'; import { Route } from 'react-router-dom'; -import paths from '../paths'; + import Teacher from '../../../pages/teacher/Teacher'; -import TeacherOnboarding from '../../../pages/teacherOnboarding/TeacherOnboarding'; import TeacherDashboard from '../../../pages/teacherDashboard/TeacherDashboard'; import AddExternalStudent from '../../../pages/teacherDashboard/classes/AddExternalStudent'; import AddedExternalStudent from '../../../pages/teacherDashboard/classes/AddedExternalStudent'; -import UpdatedStudentCredentials from '../../../pages/teacherDashboard/classes/editClass/student/editStudent/UpdatedStudentCredentials'; +import StudentCredentials from '../../../pages/teacherDashboard/classes/editClass/student/editStudent/StudentCredentials'; +import TeacherOnboarding from '../../../pages/teacherOnboarding/TeacherOnboarding'; +import paths from '../paths'; const teacher = <> path={`${paths.teacher.dashboard.classes._}/:accessCode?/:view?`} element={} /> + } + /> } @@ -41,10 +45,6 @@ const teacher = <> path={paths.teacher.dashboard.student.added._} element={} /> - } - /> ; export default teacher; From b1aacfcab72dfc491fefe0a339c15de308e2b6df Mon Sep 17 00:00:00 2001 From: SKairinos Date: Thu, 19 Oct 2023 19:14:56 +0100 Subject: [PATCH 41/52] name defaults to firstName --- frontend/src/components/form/StudentNameField.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/src/components/form/StudentNameField.tsx b/frontend/src/components/form/StudentNameField.tsx index be65097d..c4e1054c 100644 --- a/frontend/src/components/form/StudentNameField.tsx +++ b/frontend/src/components/form/StudentNameField.tsx @@ -1,7 +1,7 @@ -import React, { CSSProperties } from 'react'; -import { InputAdornment } from '@mui/material'; import { PersonOutlined } from '@mui/icons-material'; +import { InputAdornment } from '@mui/material'; import { TextField, TextFieldProps } from 'codeforlife/lib/esm/components/form'; +import React, { CSSProperties } from 'react'; import * as Yup from 'yup'; const StudentNameField: React.FC & { @@ -9,7 +9,7 @@ const StudentNameField: React.FC & { disabled?: boolean; style?: CSSProperties; }> = ({ - name = 'name', + name = 'firstName', helperText = 'Choose a name', disabled = false, style From 82486aa5d9cd0bb315a12f669c81ebb256732b12 Mon Sep 17 00:00:00 2001 From: SKairinos Date: Fri, 20 Oct 2023 15:28:17 +0100 Subject: [PATCH 42/52] fix: update api endpoints --- frontend/src/app/api/index.ts | 38 +++++- frontend/src/app/api/klass.ts | 58 +++++++-- frontend/src/app/api/school.ts | 121 ++++++++++++++++++ frontend/src/app/api/teacher/dashboard.ts | 4 +- frontend/src/app/api/user.ts | 82 +++++++++--- .../src/pages/teacherDashboard/YourSchool.tsx | 52 ++++---- frontend/yarn.lock | 85 ++++++------ 7 files changed, 341 insertions(+), 99 deletions(-) create mode 100644 frontend/src/app/api/school.ts diff --git a/frontend/src/app/api/index.ts b/frontend/src/app/api/index.ts index a71fa12f..7f7577d6 100644 --- a/frontend/src/app/api/index.ts +++ b/frontend/src/app/api/index.ts @@ -8,8 +8,12 @@ import { useRegisterUserMutation } from './home'; import { + Class, + useCreateClassQuery, + useDestroyClassMutation, useListClassesQuery, - useRetrieveClassQuery + useRetrieveClassQuery, + useUpdateClassMutation } from './klass'; import { useLoginMutation @@ -25,6 +29,14 @@ import { useResetPasswordMutation, useVerifyPasswordMutation } from './registration'; +import { + School, + useCreateSchoolQuery, + useDestroySchoolMutation, + useListSchoolsQuery, + useRetrieveSchoolQuery, + useUpdateSchoolMutation +} from './school'; import { useGetStudentKuronoGameDataQuery, useGetStudentScoreQuery, @@ -42,10 +54,10 @@ import { useGetTeacherDataQuery, useInviteTeacherMutation, useInviteToggleAdminMutation, + useOldUpdateSchoolMutation, useOrganisationKickMutation, useResendInviteMutation, - useToggleAdminMutation, - useUpdateSchoolMutation + useToggleAdminMutation } from './teacher/dashboard'; import { useDeleteClassMutation, @@ -55,10 +67,12 @@ import { useGetClassQuery, useGetStudentsByAccessCodeQuery, useMoveClassMutation, - useTeacherHas2faQuery, - useUpdateClassMutation + useTeacherHas2faQuery } from './teacher/teach'; import { + User, + useCreateUserQuery, + useDestroyUserMutation, useListUsersQuery, useRetrieveUserQuery, useUpdateUserMutation @@ -67,10 +81,16 @@ import { export default api; export { useConsentFormMutation, + useCreateClassQuery, useCreateOrganisationMutation, + useCreateSchoolQuery, + useCreateUserQuery, useDeleteAccountMutation, useDeleteClassMutation, useDeleteInviteMutation, + useDestroyClassMutation, + useDestroySchoolMutation, + useDestroyUserMutation, useDisable2faMutation, useDownloadStudentPackMutation, useEditStudentNameMutation, @@ -86,10 +106,12 @@ export { useJoinSchoolRequestMutation, useLeaveOrganisationMutation, useListClassesQuery, + useListSchoolsQuery, useListUsersQuery, useLoginMutation, useLogoutMutation, useMoveClassMutation, + useOldUpdateSchoolMutation, useOrganisationKickMutation, useRegisterUserMutation, useRequestIndependentStudentPasswordResetMutation, @@ -97,6 +119,7 @@ export { useResendInviteMutation, useResetPasswordMutation, useRetrieveClassQuery, + useRetrieveSchoolQuery, useRetrieveUserQuery, useRevokeSchoolRequestMutation, useSubscribeToNewsletterMutation, @@ -108,5 +131,8 @@ export { useUpdateStudentDetailsMutation, useUpdateTeacherAccountDetailsMutation, useUpdateUserMutation, - useVerifyPasswordMutation + useVerifyPasswordMutation, + type Class, + type School, + type User }; diff --git a/frontend/src/app/api/klass.ts b/frontend/src/app/api/klass.ts index 9b74ba96..f4d81162 100644 --- a/frontend/src/app/api/klass.ts +++ b/frontend/src/app/api/klass.ts @@ -1,4 +1,8 @@ import { + CreateArg, + CreateResult, + DestroyArg, + DestroyResult, ListArg, ListResult, Model, @@ -6,7 +10,7 @@ import { RetrieveResult, UpdateArg, UpdateResult, - mapIdsToTag + tagModels } from 'codeforlife/lib/esm/helpers/rtkQuery'; import api from './api'; @@ -30,6 +34,25 @@ export type Class = Model< const classApi = api.injectEndpoints({ endpoints: (build) => ({ + createClass: build.query< + CreateResult, + CreateArg + >({ + query: (body) => ({ + url: 'classes/', + method: 'POST', + body, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + } + }), + providesTags: (result, error, data) => result && !error + ? [ + 'private', + { type: 'class', id: result.accessCode } + ] + : [] + }), retrieveClass: build.query< RetrieveResult, RetrieveArg @@ -38,22 +61,25 @@ const classApi = api.injectEndpoints({ url: `classes/${accessCode}/`, method: 'GET' }), - providesTags: (result, error, arg) => result + providesTags: (result, error, { accessCode }) => result && !error ? [ 'private', - { type: 'class', id: result.id } + { type: 'class', id: accessCode } ] : [] }), - listClasses: build.query, ListArg>({ + listClasses: build.query< + ListResult, + ListArg + >({ query: () => ({ url: 'classes/', method: 'GET' }), - providesTags: (result, error, arg) => result + providesTags: (result, error, arg) => result && !error ? [ 'private', - ...mapIdsToTag(result, 'class') + ...tagModels(result, 'class', 'accessCode') ] : [] }), @@ -69,8 +95,20 @@ const classApi = api.injectEndpoints({ 'Content-Type': 'application/x-www-form-urlencoded' } }), - invalidatesTags: (result, error, arg) => result - ? [{ type: 'class', id: result.id }] + invalidatesTags: (result, error, { accessCode }) => !error + ? [{ type: 'class', id: accessCode }] + : [] + }), + destroyClass: build.mutation< + DestroyResult, + DestroyArg + >({ + query: ({ accessCode }) => ({ + url: `classes/${accessCode}/`, + method: 'DELETE' + }), + invalidatesTags: (result, error, { accessCode }) => !error + ? [{ type: 'school', id: accessCode }] : [] }) }) @@ -78,7 +116,9 @@ const classApi = api.injectEndpoints({ export default classApi; export const { + useCreateClassQuery, useRetrieveClassQuery, useListClassesQuery, - useUpdateClassMutation + useUpdateClassMutation, + useDestroyClassMutation } = classApi; diff --git a/frontend/src/app/api/school.ts b/frontend/src/app/api/school.ts new file mode 100644 index 00000000..f1c7eaeb --- /dev/null +++ b/frontend/src/app/api/school.ts @@ -0,0 +1,121 @@ +import { + CreateArg, + CreateResult, + DestroyArg, + DestroyResult, + ListArg, + ListResult, + Model, + RetrieveArg, + RetrieveResult, + UpdateArg, + UpdateResult, + tagModels +} from 'codeforlife/lib/esm/helpers/rtkQuery'; + +import api from './api'; + +export type School = Model< + number, + { + name: string; + postcode: null | string; + country: string; + county: null | string; + isActive: boolean; + }, + { + creationTime: null | Date; + } +>; + +const schoolApi = api.injectEndpoints({ + endpoints: (build) => ({ + createSchool: build.query< + CreateResult, + CreateArg + >({ + query: (body) => ({ + url: 'schools/', + method: 'POST', + body, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + } + }), + providesTags: (result, error, data) => result && !error + ? [ + 'private', + { type: 'school', id: result.id } + ] + : [] + }), + retrieveSchool: build.query< + RetrieveResult, + RetrieveArg + >({ + query: ({ id }) => ({ + url: `schools/${id}/`, + method: 'GET' + }), + providesTags: (result, error, { id }) => result && !error + ? [ + 'private', + { type: 'school', id } + ] + : [] + }), + listSchools: build.query< + ListResult, + ListArg + >({ + query: () => ({ + url: 'schools/', + method: 'GET' + }), + providesTags: (result, error, arg) => result && !error + ? [ + 'private', + ...tagModels(result, 'school') + ] + : [] + }), + updateSchool: build.mutation< + UpdateResult, + UpdateArg + >({ + query: ({ id, ...body }) => ({ + url: `schools/${id}/`, + method: 'PATCH', + body, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + } + }), + invalidatesTags: (result, error, { id }) => !error + ? [{ type: 'school', id }] + : [] + }), + destroySchool: build.mutation< + DestroyResult, + DestroyArg + >({ + query: ({ id }) => ({ + url: `schools/${id}/`, + method: 'DELETE' + }), + invalidatesTags: (result, error, { id }) => !error + ? [{ type: 'school', id }] + : [] + }) + }) +}); + +export default schoolApi; +export const { + useCreateSchoolQuery, + useRetrieveSchoolQuery, + useListSchoolsQuery, + useUpdateSchoolMutation, + useDestroySchoolMutation +} = schoolApi; diff --git a/frontend/src/app/api/teacher/dashboard.ts b/frontend/src/app/api/teacher/dashboard.ts index 3757c07c..55d19ad1 100644 --- a/frontend/src/app/api/teacher/dashboard.ts +++ b/frontend/src/app/api/teacher/dashboard.ts @@ -113,7 +113,7 @@ const teacherDashboardApi = api.injectEndpoints({ }), invalidatesTags: ['teacher'] }), - updateSchool: build.mutation ({ - retrieveUser: build.query, RetrieveArg>({ + createUser: build.query< + CreateResult, + CreateArg + >({ + query: (body) => ({ + url: 'users/', + method: 'POST', + body, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + } + }), + providesTags: (result, error, data) => result && !error + ? [ + 'private', + { type: 'user', id: result.id } + ] + : [] + }), + retrieveUser: build.query< + RetrieveResult, + RetrieveArg + >({ query: ({ id }) => ({ url: `users/${id}/`, method: 'GET' }), - providesTags: (result, error, { id }) => [ - 'private', - { type: 'user', id } - ] + providesTags: (result, error, { id }) => result && !error + ? [ + 'private', + { type: 'user', id } + ] + : [] }), - listUsers: build.query, ListArg<{ - studentClass: string; - }>>({ + listUsers: build.query< + ListResult, + ListArg<{ studentClass: string; }> + >({ query: (arg) => ({ url: `users/${searchParamsToString(arg)}`, method: 'GET' }), - providesTags: (result, error, arg) => result + providesTags: (result, error, arg) => result && !error ? [ 'private', - ...mapIdsToTag(result, 'user') + ...tagModels(result, 'user') ] : [] }), - updateUser: build.mutation, UpdateArg & { - currentPassword?: string; - }>({ + updateUser: build.mutation< + UpdateResult, + UpdateArg & { currentPassword?: string; } + >({ query: ({ id, ...body }) => ({ url: `users/${id}/`, method: 'PATCH', @@ -82,16 +112,30 @@ const userApi = api.injectEndpoints({ 'Content-Type': 'application/x-www-form-urlencoded' } }), - invalidatesTags: (result, error, { id }) => error - ? [] - : [{ type: 'user', id }] + invalidatesTags: (result, error, { id }) => !error + ? [{ type: 'user', id }] + : [] + }), + destroyUser: build.mutation< + DestroyResult, + DestroyArg + >({ + query: ({ id }) => ({ + url: `users/${id}/`, + method: 'DELETE' + }), + invalidatesTags: (result, error, { id }) => !error + ? [{ type: 'user', id }] + : [] }) }) }); export default userApi; export const { + useCreateUserQuery, useRetrieveUserQuery, useListUsersQuery, - useUpdateUserMutation + useUpdateUserMutation, + useDestroyUserMutation } = userApi; diff --git a/frontend/src/pages/teacherDashboard/YourSchool.tsx b/frontend/src/pages/teacherDashboard/YourSchool.tsx index 281b1c19..0f67f531 100644 --- a/frontend/src/pages/teacherDashboard/YourSchool.tsx +++ b/frontend/src/pages/teacherDashboard/YourSchool.tsx @@ -1,13 +1,3 @@ -import { - Grid, - Typography, - Button, - useTheme, - InputAdornment, - Stack, - Dialog -} from '@mui/material'; -import React from 'react'; import { Add, Create, @@ -17,35 +7,45 @@ import { EmailOutlined, PersonOutlined } from '@mui/icons-material'; -import { INVITE_TEACHER_SCHEMA, SCHOOL_DETAILS_UPDATE_SCHEMA } from './schemas'; -import { INVITE_TEACHER_INITIAL_VALUES } from './constants'; -import CflTable, { - CflTableBody, - CflTableCellElement -} from '../../components/CflTable'; import { - TextField, + Button, + Dialog, + Grid, + InputAdornment, + Stack, + Typography, + useTheme +} from '@mui/material'; +import { CheckboxField, - SubmitButton + SubmitButton, + TextField } from 'codeforlife/lib/esm/components/form'; -import { CflHorizontalForm } from '../../components/form/CflForm'; import Page from 'codeforlife/lib/esm/components/page'; -import SchoolNameField from '../../components/form/SchoolNameField'; -import SchoolPostcodeField from '../../components/form/SchoolPostcodeField'; -import SchoolCountryField from '../../components/form/SchoolCountryField'; +import React from 'react'; import { useLocation, useNavigate } from 'react-router-dom'; import { useLeaveOrganisationMutation } from '../../app/api'; -import { paths } from '../../app/router'; import { TeacherDashboardProps, useDeleteInviteMutation, useInviteTeacherMutation, useInviteToggleAdminMutation, + useOldUpdateSchoolMutation, useOrganisationKickMutation, useResendInviteMutation, - useToggleAdminMutation, - useUpdateSchoolMutation + useToggleAdminMutation } from '../../app/api/teacher/dashboard'; +import { paths } from '../../app/router'; +import CflTable, { + CflTableBody, + CflTableCellElement +} from '../../components/CflTable'; +import { CflHorizontalForm } from '../../components/form/CflForm'; +import SchoolCountryField from '../../components/form/SchoolCountryField'; +import SchoolNameField from '../../components/form/SchoolNameField'; +import SchoolPostcodeField from '../../components/form/SchoolPostcodeField'; +import { INVITE_TEACHER_INITIAL_VALUES } from './constants'; +import { INVITE_TEACHER_SCHEMA, SCHOOL_DETAILS_UPDATE_SCHEMA } from './schemas'; interface DialogProps { open: boolean; @@ -198,7 +198,7 @@ const UpdateSchoolDetailsForm: React.FC<{ const schoolName = schoolData.name; const schoolPostcode = schoolData.postcode; const schoolCountry = schoolData.country; - const [updateSchool] = useUpdateSchoolMutation(); + const [updateSchool] = useOldUpdateSchoolMutation(); return ( Date: Sun, 22 Oct 2023 12:45:13 +0100 Subject: [PATCH 43/52] override user urls --- backend/Pipfile.lock | 50 ++++++++++++-------------- backend/portal/serializers/__init__.py | 3 ++ backend/portal/serializers/klass.py | 6 ++++ backend/portal/serializers/school.py | 6 ++++ backend/portal/serializers/user.py | 16 +++++++++ backend/portal/urls/__init__.py | 10 +++++- backend/portal/views/__init__.py | 3 ++ backend/portal/views/klass.py | 8 +++++ backend/portal/views/school.py | 8 +++++ backend/portal/views/user.py | 8 +++++ backend/service/urls.py | 1 + 11 files changed, 91 insertions(+), 28 deletions(-) create mode 100644 backend/portal/serializers/__init__.py create mode 100644 backend/portal/serializers/klass.py create mode 100644 backend/portal/serializers/school.py create mode 100644 backend/portal/serializers/user.py create mode 100644 backend/portal/views/klass.py create mode 100644 backend/portal/views/school.py create mode 100644 backend/portal/views/user.py diff --git a/backend/Pipfile.lock b/backend/Pipfile.lock index b36f3ba1..55649e40 100644 --- a/backend/Pipfile.lock +++ b/backend/Pipfile.lock @@ -170,7 +170,7 @@ }, "codeforlife": { "git": "https://github.com/ocadotechnology/codeforlife-package-python.git", - "ref": "455a40ab8f918d178717c021b4afadd172c4db67" + "ref": "b9ae46daa840c1e49f0a379b208a3d7a066a8fa9" }, "codeforlife-portal": { "hashes": [ @@ -1328,31 +1328,27 @@ }, "black": { "hashes": [ - "sha256:031e8c69f3d3b09e1aa471a926a1eeb0b9071f80b17689a655f7885ac9325a6f", - "sha256:13a2e4a93bb8ca74a749b6974925c27219bb3df4d42fc45e948a5d9feb5122b7", - "sha256:13ef033794029b85dfea8032c9d3b92b42b526f1ff4bf13b2182ce4e917f5100", - "sha256:14f04c990259576acd093871e7e9b14918eb28f1866f91968ff5524293f9c573", - "sha256:24b6b3ff5c6d9ea08a8888f6977eae858e1f340d7260cf56d70a49823236b62d", - "sha256:403397c033adbc45c2bd41747da1f7fc7eaa44efbee256b53842470d4ac5a70f", - "sha256:50254ebfa56aa46a9fdd5d651f9637485068a1adf42270148cd101cdf56e0ad9", - "sha256:538efb451cd50f43aba394e9ec7ad55a37598faae3348d723b59ea8e91616300", - "sha256:638619a559280de0c2aa4d76f504891c9860bb8fa214267358f0a20f27c12948", - "sha256:6a3b50e4b93f43b34a9d3ef00d9b6728b4a722c997c99ab09102fd5efdb88325", - "sha256:6ccd59584cc834b6d127628713e4b6b968e5f79572da66284532525a042549f9", - "sha256:75a2dc41b183d4872d3a500d2b9c9016e67ed95738a3624f4751a0cb4818fe71", - "sha256:7d30ec46de88091e4316b17ae58bbbfc12b2de05e069030f6b747dfc649ad186", - "sha256:8431445bf62d2a914b541da7ab3e2b4f3bc052d2ccbf157ebad18ea126efb91f", - "sha256:8fc1ddcf83f996247505db6b715294eba56ea9372e107fd54963c7553f2b6dfe", - "sha256:a732b82747235e0542c03bf352c126052c0fbc458d8a239a94701175b17d4855", - "sha256:adc3e4442eef57f99b5590b245a328aad19c99552e0bdc7f0b04db6656debd80", - "sha256:c46767e8df1b7beefb0899c4a95fb43058fa8500b6db144f4ff3ca38eb2f6393", - "sha256:c619f063c2d68f19b2d7270f4cf3192cb81c9ec5bc5ba02df91471d0b88c4c5c", - "sha256:cf3a4d00e4cdb6734b64bf23cd4341421e8953615cba6b3670453737a72ec204", - "sha256:cf99f3de8b3273a8317681d8194ea222f10e0133a24a7548c73ce44ea1679377", - "sha256:d6bc09188020c9ac2555a498949401ab35bb6bf76d4e0f8ee251694664df6301" + "sha256:0e232f24a337fed7a82c1185ae46c56c4a6167fb0fe37411b43e876892c76699", + "sha256:30b78ac9b54cf87bcb9910ee3d499d2bc893afd52495066c49d9ee6b21eee06e", + "sha256:31946ec6f9c54ed7ba431c38bc81d758970dd734b96b8e8c2b17a367d7908171", + "sha256:31b9f87b277a68d0e99d2905edae08807c007973eaa609da5f0c62def6b7c0bd", + "sha256:47c4510f70ec2e8f9135ba490811c071419c115e46f143e4dce2ac45afdcf4c9", + "sha256:481167c60cd3e6b1cb8ef2aac0f76165843a374346aeeaa9d86765fe0dd0318b", + "sha256:6901631b937acbee93c75537e74f69463adaf34379a04eef32425b88aca88a23", + "sha256:76baba9281e5e5b230c9b7f83a96daf67a95e919c2dfc240d9e6295eab7b9204", + "sha256:7fb5fc36bb65160df21498d5a3dd330af8b6401be3f25af60c6ebfe23753f747", + "sha256:960c21555be135c4b37b7018d63d6248bdae8514e5c55b71e994ad37407f45b8", + "sha256:a3c2ddb35f71976a4cfeca558848c2f2f89abc86b06e8dd89b5a65c1e6c0f22a", + "sha256:c870bee76ad5f7a5ea7bd01dc646028d05568d33b0b09b7ecfc8ec0da3f3f39c", + "sha256:d3d9129ce05b0829730323bdcb00f928a448a124af5acf90aa94d9aba6969604", + "sha256:db451a3363b1e765c172c3fd86213a4ce63fb8524c938ebd82919bf2a6e28c6a", + "sha256:e223b731a0e025f8ef427dd79d8cd69c167da807f5710add30cdf131f13dd62e", + "sha256:f20ff03f3fdd2fd4460b4f631663813e57dc277e37fb216463f3b907aa5a9bdd", + "sha256:f74892b4b836e5162aa0452393112a574dac85e13902c57dfbaaf388e4eda37c", + "sha256:f8dc7d50d94063cdfd13c82368afd8588bac4ce360e4224ac399e769d6704e98" ], "index": "pypi", - "version": "==23.9.1" + "version": "==23.10.0" }, "certifi": { "hashes": [ @@ -1725,11 +1721,11 @@ }, "pytest-mock": { "hashes": [ - "sha256:21c279fff83d70763b05f8874cc9cfb3fcacd6d354247a976f9529d19f9acf39", - "sha256:7f6b125602ac6d743e523ae0bfa71e1a697a2f5534064528c6ff84c2f7c2fc7f" + "sha256:0972719a7263072da3a21c7f4773069bcc7486027d7e8e1f81d98a47e701bc4f", + "sha256:31a40f038c22cad32287bb43932054451ff5583ff094bca6f675df2f8bc1a6e9" ], "index": "pypi", - "version": "==3.11.1" + "version": "==3.12.0" }, "pytest-order": { "hashes": [ diff --git a/backend/portal/serializers/__init__.py b/backend/portal/serializers/__init__.py new file mode 100644 index 00000000..d577449b --- /dev/null +++ b/backend/portal/serializers/__init__.py @@ -0,0 +1,3 @@ +from .klass import ClassSerializer +from .school import SchoolSerializer +from .user import UserSerializer diff --git a/backend/portal/serializers/klass.py b/backend/portal/serializers/klass.py new file mode 100644 index 00000000..209ff3b9 --- /dev/null +++ b/backend/portal/serializers/klass.py @@ -0,0 +1,6 @@ +from codeforlife.user.serializers import ClassSerializer as _ClassSerializer + + +class ClassSerializer(_ClassSerializer): + class Meta(_ClassSerializer.Meta): + pass diff --git a/backend/portal/serializers/school.py b/backend/portal/serializers/school.py new file mode 100644 index 00000000..6047a143 --- /dev/null +++ b/backend/portal/serializers/school.py @@ -0,0 +1,6 @@ +from codeforlife.user.serializers import SchoolSerializer as _SchoolSerializer + + +class SchoolSerializer(_SchoolSerializer): + class Meta(_SchoolSerializer.Meta): + pass diff --git a/backend/portal/serializers/user.py b/backend/portal/serializers/user.py new file mode 100644 index 00000000..2f476ce9 --- /dev/null +++ b/backend/portal/serializers/user.py @@ -0,0 +1,16 @@ +from codeforlife.user.serializers import UserSerializer as _UserSerializer +from rest_framework import serializers + + +class UserSerializer(_UserSerializer): + current_password = serializers.CharField(write_only=True) + + class Meta(_UserSerializer.Meta): + extra_kwargs = { + **_UserSerializer.Meta.extra_kwargs, + "username": {"read_only": True}, + "isActive": {"read_only": True}, + "isStaff": {"read_only": True}, + "dateJoined": {"read_only": True}, + "lastLogin": {"read_only": True}, + } diff --git a/backend/portal/urls/__init__.py b/backend/portal/urls/__init__.py index 9df33bbe..ce3c4881 100644 --- a/backend/portal/urls/__init__.py +++ b/backend/portal/urls/__init__.py @@ -1,18 +1,26 @@ from django.urls import include, path +from rest_framework.routers import DefaultRouter +from ..views import ClassViewSet, SchoolViewSet, UserViewSet from .admin import urlpatterns as admin_urlpatterns from .cron import urlpatterns as cron_urlpatterns from .dotmailer import urlpatterns as dotmailer_urlpatterns from .email import urlpatterns as email_urlpatterns from .home import urlpatterns as home_urlpatterns from .organisation import urlpatterns as organisation_urlpatterns -from .teacher.dashboard import urlpatterns as teach_dashboard_urlpatterns from .registration import urlpatterns as registration_urlpatterns from .student import urlpatterns as student_urlpatterns from .teacher import urlpatterns as teacher_urlpatterns +from .teacher.dashboard import urlpatterns as teach_dashboard_urlpatterns + +router = DefaultRouter() +router.register("classes", ClassViewSet, basename="class") +router.register("users", UserViewSet, basename="user") +router.register("schools", SchoolViewSet, basename="school") urlpatterns = [ path("cron/", include(cron_urlpatterns)), + path("", include(router.urls)), *dotmailer_urlpatterns, *email_urlpatterns, *home_urlpatterns, diff --git a/backend/portal/views/__init__.py b/backend/portal/views/__init__.py index e69de29b..ffcd7b4e 100644 --- a/backend/portal/views/__init__.py +++ b/backend/portal/views/__init__.py @@ -0,0 +1,3 @@ +from .klass import ClassViewSet +from .school import SchoolViewSet +from .user import UserViewSet diff --git a/backend/portal/views/klass.py b/backend/portal/views/klass.py new file mode 100644 index 00000000..15f28510 --- /dev/null +++ b/backend/portal/views/klass.py @@ -0,0 +1,8 @@ +from codeforlife.user.views import ClassViewSet as _ClassViewSet + +from ..serializers import ClassSerializer + + +class ClassViewSet(_ClassViewSet): + http_method_names = ["get", "post", "patch", "delete"] + serializer_class = ClassSerializer diff --git a/backend/portal/views/school.py b/backend/portal/views/school.py new file mode 100644 index 00000000..6a667b54 --- /dev/null +++ b/backend/portal/views/school.py @@ -0,0 +1,8 @@ +from codeforlife.user.views import SchoolViewSet as _SchoolViewSet + +from ..serializers import SchoolSerializer + + +class SchoolViewSet(_SchoolViewSet): + http_method_names = ["get", "post", "patch", "delete"] + serializer_class = SchoolSerializer diff --git a/backend/portal/views/user.py b/backend/portal/views/user.py new file mode 100644 index 00000000..d3cb3727 --- /dev/null +++ b/backend/portal/views/user.py @@ -0,0 +1,8 @@ +from codeforlife.user.views import UserViewSet as _UserViewSet + +from ..serializers import UserSerializer + + +class UserViewSet(_UserViewSet): + http_method_names = ["get", "post", "patch", "delete"] + serializer_class = UserSerializer diff --git a/backend/service/urls.py b/backend/service/urls.py index 28b62605..416b4544 100644 --- a/backend/service/urls.py +++ b/backend/service/urls.py @@ -19,4 +19,5 @@ urlpatterns = service_urlpatterns( api_urls_path="portal.urls", # TODO: standardize path frontend_template_name="portal.html", # TODO: standardize name + include_user_urls=False, ) From 4af2989b5dc98abb78b28ab0fbd6702b2e607592 Mon Sep 17 00:00:00 2001 From: SKairinos Date: Sun, 22 Oct 2023 13:21:16 +0100 Subject: [PATCH 44/52] make teacher and student fields editable --- frontend/src/app/api/user.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/frontend/src/app/api/user.ts b/frontend/src/app/api/user.ts index 5e706217..1fa746f4 100644 --- a/frontend/src/app/api/user.ts +++ b/frontend/src/app/api/user.ts @@ -23,13 +23,6 @@ export type User = Model< lastName: string; email: string; password: null | string; - }, - { - username: string; - isActive: boolean; - isStaff: boolean; - dateJoined: Date; - lastLogin: null | Date; student: null | { classField: null | number; loginId: null | string; @@ -46,6 +39,13 @@ export type User = Model< blockedTime: null | Date; invitedBy: null | number; }; + }, + { + username: string; + isActive: boolean; + isStaff: boolean; + dateJoined: Date; + lastLogin: null | Date; } >; From 7726ddb8862b7a387127890aad212d73f6714d9f Mon Sep 17 00:00:00 2001 From: SKairinos Date: Mon, 23 Oct 2023 09:12:28 +0100 Subject: [PATCH 45/52] fix onboarding --- .../addStudentsForm/AddStudentsForm.tsx | 151 +++++++++-------- .../teacherOnboarding/ClassCredentials.tsx | 68 +++----- .../src/pages/teacherOnboarding/ClassForm.tsx | 71 ++++---- .../pages/teacherOnboarding/SchoolForm.tsx | 79 ++++----- .../teacherOnboarding/TeacherOnboarding.tsx | 159 ++++++++++-------- 5 files changed, 253 insertions(+), 275 deletions(-) diff --git a/frontend/src/features/addStudentsForm/AddStudentsForm.tsx b/frontend/src/features/addStudentsForm/AddStudentsForm.tsx index 75f1e243..584db24d 100644 --- a/frontend/src/features/addStudentsForm/AddStudentsForm.tsx +++ b/frontend/src/features/addStudentsForm/AddStudentsForm.tsx @@ -1,88 +1,91 @@ -import React from 'react'; import { - Typography, + Add as AddIcon, + Upload as UploadIcon +} from '@mui/icons-material'; +import { Button, - FormHelperText + FormHelperText, + Typography } from '@mui/material'; -import { - Upload as UploadIcon, - Add as AddIcon -} from '@mui/icons-material'; +import React from 'react'; import * as Yup from 'yup'; import { Form, - TextField, - SubmitButton + SubmitButton, + TextField } from 'codeforlife/lib/esm/components/form'; +import { setFormErrors } from 'codeforlife/lib/esm/helpers/formik'; +import { + BulkCreateResult +} from 'codeforlife/lib/esm/helpers/rtkQuery'; + +import { useLazyBulkCreateUsersQuery, User } from '../../app/api'; -const AddStudentsForm: React.FC<{ - onSubmit: () => void -}> = ({ +export interface AddStudentsFormProps { + onSubmit: (users: BulkCreateResult) => void; +} + +const AddStudentsForm: React.FC = ({ onSubmit }) => { - interface Values { - students: string[] - } - - const initialValues: Values = { - students: [] - }; + const [bulkCreateUsers] = useLazyBulkCreateUsersQuery(); - return <> - - Add the student names to the box with one name per line or separated by a comma. - - - Student names and the class access code are required to sign in. - - {/* TODO: call API */} - - - Please note: if using the import option, student names must be under a heading labelled 'name'. - -
{ - // TODO: call backend - console.log(values); - setSubmitting(false); - onSubmit(); - }} - stackProps={{ - gap: 3, - alignItems: 'end', - direction: { xs: 'column', md: 'row' }, - width: { xs: '100%', md: '75%' } - }} - > - - }> - Add students - - - ; - }; + return <> + + Add the student names to the box with one name per line or separated by a comma. + + + Student names and the class access code are required to sign in. + + {/* TODO: call API */} + + + Please note: if using the import option, student names must be under a heading labelled 'name'. + +
{ + // TODO: convert students to data. + bulkCreateUsers({ data: [] }) + .unwrap() + .then(onSubmit) + .catch((error) => { setFormErrors(error, setErrors); }); + }} + stackProps={{ + gap: 3, + alignItems: 'end', + direction: { xs: 'column', md: 'row' }, + width: { xs: '100%', md: '75%' } + }} + > + + }> + Add students + + + ; +}; export default AddStudentsForm; diff --git a/frontend/src/pages/teacherOnboarding/ClassCredentials.tsx b/frontend/src/pages/teacherOnboarding/ClassCredentials.tsx index 245bd173..34b3fe5e 100644 --- a/frontend/src/pages/teacherOnboarding/ClassCredentials.tsx +++ b/frontend/src/pages/teacherOnboarding/ClassCredentials.tsx @@ -1,62 +1,32 @@ -import React from 'react'; -import { useLocation, useNavigate } from 'react-router-dom'; -import { - Stack, - Button -} from '@mui/material'; import { - Check as CheckIcon, ChevronLeftOutlined + Check as CheckIcon } from '@mui/icons-material'; -// TODO: These variables are defined while we don't have the onboarding implemented. -// Once we have the onboarding implemented, we can remove these variables and fetch the data -// TODO: Once the onboarding is implemented, we can remove this if statement. -// as well as re-defined variables above. We can just fetch the data from the useLocation hook. -import { paths } from '../../app/router'; -import NewStudentsTable from '../../features/newStudentsTable/NewStudentsTable'; - -const ClassCredentials: React.FC = () => { - const navigate = useNavigate(); - const location = useLocation(); - const studentData = location?.state; +import { + Button, + Stack +} from '@mui/material'; +import React from 'react'; +import { useNavigate } from 'react-router-dom'; - const isStudentDataPresent = Boolean(studentData); - const { studentsInfo } = studentData?.updatedStudentCredentials || {}; +import { paths } from '../../app/router'; +import NewStudentsTable, { NewStudentsTableProps } from '../../features/newStudentsTable/NewStudentsTable'; - const name = isStudentDataPresent ? studentsInfo[0].name : 'John'; - const password = isStudentDataPresent ? studentsInfo[0].password : 'very_good_password'; - const classLink = isStudentDataPresent ? studentData.updatedStudentCredentials.classUrl : 'https://www.codeforlife.education/'; - const directLoginLink = isStudentDataPresent ? studentsInfo[0].loginUrl : 'https://www.codeforlife.education/'; - const alignItems = isStudentDataPresent ? 'start' : 'end'; - const startIcon = isStudentDataPresent ? : <>; - const endIcon = isStudentDataPresent ? <> : ; - const path = isStudentDataPresent ? paths.teacher.dashboard.classes._ : paths.teacher.dashboard.school._; - const buttonText = isStudentDataPresent ? 'Back to class' : 'Complete setup'; +export interface ClassCredentialsProps extends NewStudentsTableProps { } - const students: Array<{ - name: string; - password: string; - link: string; - }> = ([ - { - name, - password, - link: directLoginLink - } - ]); +const ClassCredentials: React.FC = ({ + ...newStudentsTableProps +}) => { + const navigate = useNavigate(); return <> - - + + ; diff --git a/frontend/src/pages/teacherOnboarding/ClassForm.tsx b/frontend/src/pages/teacherOnboarding/ClassForm.tsx index ab22aa10..c9ddef51 100644 --- a/frontend/src/pages/teacherOnboarding/ClassForm.tsx +++ b/frontend/src/pages/teacherOnboarding/ClassForm.tsx @@ -1,54 +1,49 @@ -import React from 'react'; import { Typography } from '@mui/material'; +import React from 'react'; import { Form, SubmitButton } from 'codeforlife/lib/esm/components/form'; +import { submitForm } from 'codeforlife/lib/esm/helpers/formik'; +import { CreateResult } from 'codeforlife/lib/esm/helpers/rtkQuery'; +import { Class, useLazyCreateClassQuery } from '../../app/api'; import ClassNameField from '../../components/form/ClassNameField'; import SeeClassmatesProgressField from '../../components/form/SeeClassmatesProgressField'; const ClassForm: React.FC<{ - onSubmit: () => void -}> = ({ - onSubmit -}) => { - interface Values { - class: string; - seeClassmates: boolean; - } - - const initialValues: Values = { - class: '', - seeClassmates: false - }; + teacherId: number; + schoolId: number; + onSubmit: (klass: CreateResult) => void; +}> = ({ teacherId, schoolId, onSubmit }) => { + const [createClass] = useLazyCreateClassQuery(); - return <> - - When you set up a new class, a unique class access code will automatically be generated, with you being identified as the teacher for that class. - -
{ - // TODO: call backend - console.log(values); - setSubmitting(false); - onSubmit(); - }} - stackProps={{ - width: { xs: '100%', md: '50%' } - }} - > - - - - Create class - - - ; - }; + return <> + + When you set up a new class, a unique class access code will automatically be generated, with you being identified as the teacher for that class. + +
+ + + + Create class + + + ; +}; export default ClassForm; diff --git a/frontend/src/pages/teacherOnboarding/SchoolForm.tsx b/frontend/src/pages/teacherOnboarding/SchoolForm.tsx index c69ba575..1db3ed9f 100644 --- a/frontend/src/pages/teacherOnboarding/SchoolForm.tsx +++ b/frontend/src/pages/teacherOnboarding/SchoolForm.tsx @@ -1,62 +1,49 @@ -import React from 'react'; import { Typography } from '@mui/material'; +import React from 'react'; import { Form, SubmitButton } from 'codeforlife/lib/esm/components/form'; +import { submitForm } from 'codeforlife/lib/esm/helpers/formik'; +import { CreateResult } from 'codeforlife/lib/esm/helpers/rtkQuery'; +import { School, useLazyCreateSchoolQuery } from '../../app/api'; +import SchoolCountryField from '../../components/form/SchoolCountryField'; import SchoolNameField from '../../components/form/SchoolNameField'; import SchoolPostcodeField from '../../components/form/SchoolPostcodeField'; -import SchoolCountryField from '../../components/form/SchoolCountryField'; -import { useCreateOrganisationMutation } from '../../app/api'; const SchoolForm: React.FC<{ - onSubmit: () => void -}> = ({ - onSubmit -}) => { - interface Values { - name: string; - postcode: string; - country: string; - } - - const initialValues: Values = { - name: '', - postcode: '', - country: '' - }; - - const [createOrganisation] = useCreateOrganisationMutation(); + onSubmit: (school: CreateResult) => void; +}> = ({ onSubmit }) => { + const [createSchool] = useLazyCreateSchoolQuery(); - return <> - - As the first person from your school or club to register for Code for Life, by default, you become the organisation's administrator. - -
{ - createOrganisation(values).unwrap() - .then(() => { - onSubmit(); - }) - .catch((err) => { console.error('CreateOrganisation submit error: ', err); }); - }} - stackProps={{ - width: { xs: '100%', md: '50%' } - }} - > - - - - - Create school or club - - - ; - }; + return <> + + As the first person from your school or club to register for Code for Life, by default, you become the organisation's administrator. + +
+ + + + + Create school or club + + + ; +}; export default SchoolForm; diff --git a/frontend/src/pages/teacherOnboarding/TeacherOnboarding.tsx b/frontend/src/pages/teacherOnboarding/TeacherOnboarding.tsx index 118b827b..df2a558b 100644 --- a/frontend/src/pages/teacherOnboarding/TeacherOnboarding.tsx +++ b/frontend/src/pages/teacherOnboarding/TeacherOnboarding.tsx @@ -1,94 +1,117 @@ -import React from 'react'; import { - Stack, MobileStepper, - mobileStepperClasses, - Typography + Stack, + Typography, + mobileStepperClasses } from '@mui/material'; +import React from 'react'; +import { useLocation } from 'react-router-dom'; import Page from 'codeforlife/lib/esm/components/page'; +import { getSession } from 'codeforlife/lib/esm/helpers/jsCookie'; +import { BulkCreateResult } from 'codeforlife/lib/esm/helpers/rtkQuery'; +import { User, useRetrieveUserQuery } from '../../app/api'; import AddStudentsForm from '../../features/addStudentsForm/AddStudentsForm'; -import SchoolForm from './SchoolForm'; -import ClassForm from './ClassForm'; import ClassCredentials from './ClassCredentials'; -import { useLocation } from 'react-router-dom'; +import ClassForm from './ClassForm'; +import SchoolForm from './SchoolForm'; const TeacherOnboarding: React.FC = () => { - const [activeStep, setActiveStep] = React.useState(0); + const [activeStep, setActiveStep] = React.useState<{ + index: number; + schoolId?: number; + classAccessCode?: string; + users?: BulkCreateResult; + }>({ index: 0 }); const location = useLocation(); - // TODO: check if user has completed onboarding. - const userName = 'Stefan Kairinos'; + + const session = getSession(); + const user = session === undefined + ? undefined + : useRetrieveUserQuery({ id: session?.userId }); function generateKey(step: number): string { return `teacher-onboarding-step-${step}`; } - function onSubmit(): void { - setActiveStep(activeStep + 1); + function onSubmit(state: Omit): void { + setActiveStep((previousState) => ({ + index: previousState.index + 1, + ...state + })); } const steps = 4; return ( - - {location.state?.leftOrganisation && - - You have successfully left the school or club. - - } - - - - {[ - 'Create a school or club', - 'Create a class', - 'Add students to class', - 'Student login details' - ][activeStep]} - - - Progress < {activeStep + 1} of {steps} > - - - {[ - , - , - , - + + {location.state?.leftOrganisation && + + You have successfully left the school or club. + + } + + + + {[ + 'Create a school or club', + 'Create a class', + 'Add students to class', + 'Student login details' + ][activeStep.index]} + + + Progress < {activeStep.index + 1} of {steps} > + + - ][activeStep]} - - + {[ + { onSubmit({ schoolId: id }); }} + />, + { + onSubmit({ classAccessCode: accessCode }); + }} + />, + { onSubmit({ users }); }} + />, + } + /> + ][activeStep.index]} + + + } ); }; From 380980c6c272c20792dcc4134fff0e85a3866e22 Mon Sep 17 00:00:00 2001 From: SKairinos Date: Mon, 23 Oct 2023 09:16:59 +0100 Subject: [PATCH 46/52] update api endpoints --- frontend/src/app/api/index.ts | 14 ++- frontend/src/app/api/klass.ts | 12 +- frontend/src/app/api/school.ts | 8 +- frontend/src/app/api/user.ts | 28 ++++- frontend/yarn.lock | 197 ++++++++++++++++++--------------- 5 files changed, 148 insertions(+), 111 deletions(-) diff --git a/frontend/src/app/api/index.ts b/frontend/src/app/api/index.ts index 7f7577d6..e9a1e27f 100644 --- a/frontend/src/app/api/index.ts +++ b/frontend/src/app/api/index.ts @@ -9,8 +9,8 @@ import { } from './home'; import { Class, - useCreateClassQuery, useDestroyClassMutation, + useLazyCreateClassQuery, useListClassesQuery, useRetrieveClassQuery, useUpdateClassMutation @@ -31,8 +31,8 @@ import { } from './registration'; import { School, - useCreateSchoolQuery, useDestroySchoolMutation, + useLazyCreateSchoolQuery, useListSchoolsQuery, useRetrieveSchoolQuery, useUpdateSchoolMutation @@ -71,8 +71,9 @@ import { } from './teacher/teach'; import { User, - useCreateUserQuery, useDestroyUserMutation, + useLazyBulkCreateUsersQuery, + useLazyCreateUserQuery, useListUsersQuery, useRetrieveUserQuery, useUpdateUserMutation @@ -81,10 +82,7 @@ import { export default api; export { useConsentFormMutation, - useCreateClassQuery, useCreateOrganisationMutation, - useCreateSchoolQuery, - useCreateUserQuery, useDeleteAccountMutation, useDeleteClassMutation, useDeleteInviteMutation, @@ -104,6 +102,10 @@ export { useInviteToggleAdminMutation, useIsRequestingToJoinSchoolQuery, useJoinSchoolRequestMutation, + useLazyBulkCreateUsersQuery, + useLazyCreateClassQuery, + useLazyCreateSchoolQuery, + useLazyCreateUserQuery, useLeaveOrganisationMutation, useListClassesQuery, useListSchoolsQuery, diff --git a/frontend/src/app/api/klass.ts b/frontend/src/app/api/klass.ts index f4d81162..76b6b99d 100644 --- a/frontend/src/app/api/klass.ts +++ b/frontend/src/app/api/klass.ts @@ -10,7 +10,7 @@ import { RetrieveResult, UpdateArg, UpdateResult, - tagModels + tagData } from 'codeforlife/lib/esm/helpers/rtkQuery'; import api from './api'; @@ -20,10 +20,10 @@ export type Class = Model< { name: string; teacher: number; - classmatesDataViewable: boolean; - alwaysAcceptRequests: boolean; + classmatesDataViewable?: boolean; + alwaysAcceptRequests?: boolean; acceptRequestsUntil: null | Date; - isActive: boolean; + isActive?: boolean; }, { accessCode: string; @@ -79,7 +79,7 @@ const classApi = api.injectEndpoints({ providesTags: (result, error, arg) => result && !error ? [ 'private', - ...tagModels(result, 'class', 'accessCode') + ...tagData(result, 'class', 'accessCode') ] : [] }), @@ -116,7 +116,7 @@ const classApi = api.injectEndpoints({ export default classApi; export const { - useCreateClassQuery, + useLazyCreateClassQuery, useRetrieveClassQuery, useListClassesQuery, useUpdateClassMutation, diff --git a/frontend/src/app/api/school.ts b/frontend/src/app/api/school.ts index f1c7eaeb..7a224b35 100644 --- a/frontend/src/app/api/school.ts +++ b/frontend/src/app/api/school.ts @@ -10,7 +10,7 @@ import { RetrieveResult, UpdateArg, UpdateResult, - tagModels + tagData } from 'codeforlife/lib/esm/helpers/rtkQuery'; import api from './api'; @@ -22,7 +22,7 @@ export type School = Model< postcode: null | string; country: string; county: null | string; - isActive: boolean; + isActive?: boolean; }, { creationTime: null | Date; @@ -76,7 +76,7 @@ const schoolApi = api.injectEndpoints({ providesTags: (result, error, arg) => result && !error ? [ 'private', - ...tagModels(result, 'school') + ...tagData(result, 'school') ] : [] }), @@ -113,7 +113,7 @@ const schoolApi = api.injectEndpoints({ export default schoolApi; export const { - useCreateSchoolQuery, + useLazyCreateSchoolQuery, useRetrieveSchoolQuery, useListSchoolsQuery, useUpdateSchoolMutation, diff --git a/frontend/src/app/api/user.ts b/frontend/src/app/api/user.ts index 1fa746f4..7ac75b59 100644 --- a/frontend/src/app/api/user.ts +++ b/frontend/src/app/api/user.ts @@ -1,4 +1,6 @@ import { + BulkCreateArg, + BulkCreateResult, CreateArg, CreateResult, DestroyArg, @@ -11,7 +13,7 @@ import { UpdateArg, UpdateResult, searchParamsToString, - tagModels + tagData } from 'codeforlife/lib/esm/helpers/rtkQuery'; import api from './api'; @@ -70,6 +72,25 @@ const userApi = api.injectEndpoints({ ] : [] }), + bulkCreateUsers: build.query< + BulkCreateResult, + BulkCreateArg + >({ + query: (body) => ({ + url: 'users/', + method: 'POST', + body, + headers: { + 'Content-Type': 'application/json' + } + }), + providesTags: (result, error, arg) => result && !error + ? [ + 'private', + ...tagData(result, 'user') + ] + : [] + }), retrieveUser: build.query< RetrieveResult, RetrieveArg @@ -96,7 +117,7 @@ const userApi = api.injectEndpoints({ providesTags: (result, error, arg) => result && !error ? [ 'private', - ...tagModels(result, 'user') + ...tagData(result, 'user') ] : [] }), @@ -133,7 +154,8 @@ const userApi = api.injectEndpoints({ export default userApi; export const { - useCreateUserQuery, + useLazyCreateUserQuery, + useLazyBulkCreateUsersQuery, useRetrieveUserQuery, useListUsersQuery, useUpdateUserMutation, diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 278d2fee..5e55008c 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -1484,10 +1484,10 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.51.0": - version "8.51.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.51.0.tgz#6d419c240cfb2b66da37df230f7e7eef801c32fa" - integrity sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg== +"@eslint/js@8.52.0": + version "8.52.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.52.0.tgz#78fe5f117840f69dc4a353adf9b9cd926353378c" + integrity sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA== "@floating-ui/core@^1.4.2": version "1.5.0" @@ -1516,12 +1516,12 @@ resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.1.6.tgz#22958c042e10b67463997bd6ea7115fe28cbcaf9" integrity sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A== -"@humanwhocodes/config-array@^0.11.11": - version "0.11.12" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.12.tgz#549afec9bfce5232ac6325db12765f407e70e3a0" - integrity sha512-NlGesA1usRNn6ctHCZ21M4/dKPgW9Nn1FypRdIKKgZOKzkVV4T1FlK5mBiLhHBCDmEbdQG0idrcXlbZfksJ+RA== +"@humanwhocodes/config-array@^0.11.13": + version "0.11.13" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.13.tgz#075dc9684f40a531d9b26b0822153c1e832ee297" + integrity sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ== dependencies: - "@humanwhocodes/object-schema" "^2.0.0" + "@humanwhocodes/object-schema" "^2.0.1" debug "^4.1.1" minimatch "^3.0.5" @@ -1530,10 +1530,10 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@humanwhocodes/object-schema@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.0.tgz#04ad39d82176c7da1591c81e78b993cffd8348d8" - integrity sha512-9S9QrXY2K0L4AGDcSgTi9vgiCcG8VcBv4Mp7/1hDPYoswIy6Z6KO5blYto82BT8M0MZNRWmCFLpCs3HlpYGGdw== +"@humanwhocodes/object-schema@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz#e5211452df060fa8522b55c7b3c0c4d1981cb044" + integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw== "@iarna/toml@^2.2.0": version "2.2.5" @@ -2620,9 +2620,9 @@ "@types/react" "*" "@types/react@*", "@types/react@^18.0.28": - version "18.2.30" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.30.tgz#b84f786864fc46f18545364a54d5e1316308e59b" - integrity sha512-OfqdJnDsSo4UNw0bqAjFCuBpLYQM7wvZidz0hVxHRjrEkzRlvZL1pJVyOSY55HMiKvRNEo9DUBRuEl7FNlJ/Vg== + version "18.2.31" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.31.tgz#74ae2630e4aa9af599584157abd3b95d96fb9b40" + integrity sha512-c2UnPv548q+5DFh03y8lEDeMfDwBn9G3dRwfkrxQMo/dOtRHUUO57k6pHvBIfH/VF4Nh+98mZ5aaSe+2echD5g== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" @@ -2830,6 +2830,11 @@ "@typescript-eslint/types" "5.62.0" eslint-visitor-keys "^3.3.0" +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + "@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5": version "1.11.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.6.tgz#db046555d3c413f8966ca50a95176a0e2c642e24" @@ -3297,7 +3302,7 @@ array-flatten@^2.1.2: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== -array-includes@^3.1.6: +array-includes@^3.1.6, array-includes@^3.1.7: version "3.1.7" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.7.tgz#8cd2e01b26f7a3086cbc87271593fe921c62abda" integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== @@ -3318,7 +3323,7 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== -array.prototype.findlastindex@^1.2.2: +array.prototype.findlastindex@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz#b37598438f97b579166940814e2c0493a4f50207" integrity sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA== @@ -3329,7 +3334,7 @@ array.prototype.findlastindex@^1.2.2: es-shim-unscopables "^1.0.0" get-intrinsic "^1.2.1" -array.prototype.flat@^1.3.1: +array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== @@ -3339,7 +3344,7 @@ array.prototype.flat@^1.3.1: es-abstract "^1.22.1" es-shim-unscopables "^1.0.0" -array.prototype.flatmap@^1.3.1: +array.prototype.flatmap@^1.3.1, array.prototype.flatmap@^1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== @@ -4061,7 +4066,7 @@ caching-transform@^4.0.0: package-hash "^4.0.0" write-file-atomic "^3.0.0" -call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4: +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4, call-bind@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== @@ -4138,9 +4143,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001538, caniuse-lite@^1.0.30001541: - version "1.0.30001551" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001551.tgz#1f2cfa8820bd97c971a57349d7fd8f6e08664a3e" - integrity sha512-vtBAez47BoGMMzlbYhfXrMV1kvRF2WP/lqiMuDu1Sb4EE4LKEgjopFDSRtZfdVnslNRpOqV/woE+Xgrwj6VQlg== + version "1.0.30001553" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001553.tgz#e64e7dc8fd4885cd246bb476471420beb5e474b5" + integrity sha512-N0ttd6TrFfuqKNi+pMgWJTb9qrdJu4JSpgPFLe/lrD19ugC6fZgF0pUewRowDwzdDnb9V41mFcdlYgl/PyKf4A== case-sensitive-paths-webpack-plugin@^2.4.0: version "2.4.0" @@ -4395,7 +4400,7 @@ coa@^2.0.2: "codeforlife@github:ocadotechnology/codeforlife-package-javascript#158-teacher-teach-edit-student-details": version "1.27.7" - resolved "https://codeload.github.com/ocadotechnology/codeforlife-package-javascript/tar.gz/a362dcad43d476bda6b725ee199ccd2c1ede0b4f" + resolved "https://codeload.github.com/ocadotechnology/codeforlife-package-javascript/tar.gz/f3c89b582b783a240baa2ebf6e47e4bd3022a68e" dependencies: "@emotion/react" "^11.10.6" "@emotion/styled" "^11.10.6" @@ -5173,9 +5178,9 @@ dayjs@1.11.10, dayjs@^1.10.4: integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ== deasync@^0.1.14: - version "0.1.28" - resolved "https://registry.yarnpkg.com/deasync/-/deasync-0.1.28.tgz#9b447b79b3f822432f0ab6a8614c0062808b5ad2" - integrity sha512-QqLF6inIDwiATrfROIyQtwOQxjZuek13WRYZ7donU5wJPLoP67MnYxA6QtqdvdBy2mMqv5m3UefBVdJjvevOYg== + version "0.1.29" + resolved "https://registry.yarnpkg.com/deasync/-/deasync-0.1.29.tgz#8bbbf9d0b235c561b36edd440b6272f1de6c572c" + integrity sha512-EBtfUhVX23CE9GR6m+F8WPeImEE4hR/FW9RkK0PMl9V1t283s0elqsTD8EZjaKX28SY1BW2rYfCgNsAYdpamUw== dependencies: bindings "^1.5.0" node-addon-api "^1.7.1" @@ -5587,9 +5592,9 @@ ejs@^3.1.6: jake "^10.8.5" electron-to-chromium@^1.4.535: - version "1.4.561" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.561.tgz#816f31d9ae01fe58abbf469fca7e125b16befd85" - integrity sha512-eS5t4ulWOBfVHdq9SW2dxEaFarj1lPjvJ8PaYMOjY0DecBaj/t4ARziL2IPpDr4atyWwjLFGQ2vo/VCgQFezVQ== + version "1.4.563" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.563.tgz#dabb424202754c1fed2d2938ff564b23d3bbf0d3" + integrity sha512-dg5gj5qOgfZNkPNeyKBZQAQitIQ/xwfIDmEQJHCbXaD9ebTZxwJXUsDYcBlAvZGZLi+/354l35J1wkmP6CqYaw== elliptic@^6.5.3: version "6.5.4" @@ -5692,25 +5697,25 @@ error-stack-parser@^2.0.6: stackframe "^1.3.4" es-abstract@^1.17.2, es-abstract@^1.22.1: - version "1.22.2" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.2.tgz#90f7282d91d0ad577f505e423e52d4c1d93c1b8a" - integrity sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA== + version "1.22.3" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.3.tgz#48e79f5573198de6dee3589195727f4f74bc4f32" + integrity sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA== dependencies: array-buffer-byte-length "^1.0.0" arraybuffer.prototype.slice "^1.0.2" available-typed-arrays "^1.0.5" - call-bind "^1.0.2" + call-bind "^1.0.5" es-set-tostringtag "^2.0.1" es-to-primitive "^1.2.1" function.prototype.name "^1.1.6" - get-intrinsic "^1.2.1" + get-intrinsic "^1.2.2" get-symbol-description "^1.0.0" globalthis "^1.0.3" gopd "^1.0.1" - has "^1.0.3" has-property-descriptors "^1.0.0" has-proto "^1.0.1" has-symbols "^1.0.3" + hasown "^2.0.0" internal-slot "^1.0.5" is-array-buffer "^3.0.2" is-callable "^1.2.7" @@ -5720,7 +5725,7 @@ es-abstract@^1.17.2, es-abstract@^1.22.1: is-string "^1.0.7" is-typed-array "^1.1.12" is-weakref "^1.0.2" - object-inspect "^1.12.3" + object-inspect "^1.13.1" object-keys "^1.1.1" object.assign "^4.1.4" regexp.prototype.flags "^1.5.1" @@ -5734,7 +5739,7 @@ es-abstract@^1.17.2, es-abstract@^1.22.1: typed-array-byte-offset "^1.0.0" typed-array-length "^1.0.4" unbox-primitive "^1.0.2" - which-typed-array "^1.1.11" + which-typed-array "^1.1.13" es-array-method-boxes-properly@^1.0.0: version "1.0.0" @@ -5767,20 +5772,20 @@ es-module-lexer@^1.2.1: integrity sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q== es-set-tostringtag@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" - integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== + version "2.0.2" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz#11f7cc9f63376930a5f20be4915834f4bc74f9c9" + integrity sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q== dependencies: - get-intrinsic "^1.1.3" - has "^1.0.3" + get-intrinsic "^1.2.2" has-tostringtag "^1.0.0" + hasown "^2.0.0" es-shim-unscopables@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" - integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== + version "1.0.2" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" + integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== dependencies: - has "^1.0.3" + hasown "^2.0.0" es-to-primitive@^1.2.1: version "1.2.1" @@ -5889,7 +5894,7 @@ eslint-config-standard@17.0.0: resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-17.0.0.tgz#fd5b6cf1dcf6ba8d29f200c461de2e19069888cf" integrity sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg== -eslint-import-resolver-node@^0.3.7: +eslint-import-resolver-node@^0.3.9: version "0.3.9" resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== @@ -5922,25 +5927,25 @@ eslint-plugin-flowtype@^8.0.3: string-natural-compare "^3.0.1" eslint-plugin-import@^2.25.3, eslint-plugin-import@^2.27.5: - version "2.28.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz#63b8b5b3c409bfc75ebaf8fb206b07ab435482c4" - integrity sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A== + version "2.29.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.0.tgz#8133232e4329ee344f2f612885ac3073b0b7e155" + integrity sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg== dependencies: - array-includes "^3.1.6" - array.prototype.findlastindex "^1.2.2" - array.prototype.flat "^1.3.1" - array.prototype.flatmap "^1.3.1" + array-includes "^3.1.7" + array.prototype.findlastindex "^1.2.3" + array.prototype.flat "^1.3.2" + array.prototype.flatmap "^1.3.2" debug "^3.2.7" doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.7" + eslint-import-resolver-node "^0.3.9" eslint-module-utils "^2.8.0" - has "^1.0.3" - is-core-module "^2.13.0" + hasown "^2.0.0" + is-core-module "^2.13.1" is-glob "^4.0.3" minimatch "^3.1.2" - object.fromentries "^2.0.6" - object.groupby "^1.0.0" - object.values "^1.1.6" + object.fromentries "^2.0.7" + object.groupby "^1.0.1" + object.values "^1.1.7" semver "^6.3.1" tsconfig-paths "^3.14.2" @@ -6083,17 +6088,18 @@ eslint-webpack-plugin@^3.1.1: schema-utils "^4.0.0" eslint@^8.3.0, eslint@^8.35.0: - version "8.51.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.51.0.tgz#4a82dae60d209ac89a5cff1604fea978ba4950f3" - integrity sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA== + version "8.52.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.52.0.tgz#d0cd4a1fac06427a61ef9242b9353f36ea7062fc" + integrity sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.6.1" "@eslint/eslintrc" "^2.1.2" - "@eslint/js" "8.51.0" - "@humanwhocodes/config-array" "^0.11.11" + "@eslint/js" "8.52.0" + "@humanwhocodes/config-array" "^0.11.13" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" ajv "^6.12.4" chalk "^4.0.0" cross-spawn "^7.0.2" @@ -6801,15 +6807,15 @@ get-caller-file@^2.0.1, get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" - integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b" + integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== dependencies: - function-bind "^1.1.1" - has "^1.0.3" + function-bind "^1.1.2" has-proto "^1.0.1" has-symbols "^1.0.3" + hasown "^2.0.0" get-own-enumerable-property-symbols@^3.0.0: version "3.0.2" @@ -7087,11 +7093,11 @@ has-flag@^4.0.0: integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== has-property-descriptors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" - integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340" + integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== dependencies: - get-intrinsic "^1.1.1" + get-intrinsic "^1.2.2" has-proto@^1.0.1: version "1.0.1" @@ -7171,6 +7177,13 @@ hasha@^5.0.0: is-stream "^2.0.0" type-fest "^0.8.0" +hasown@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" + integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== + dependencies: + function-bind "^1.1.2" + he@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" @@ -7559,12 +7572,12 @@ ini@^1.3.5, ini@~1.3.0: integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== internal-slot@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" - integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== + version "1.0.6" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.6.tgz#37e756098c4911c5e912b8edbf71ed3aa116f930" + integrity sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg== dependencies: - get-intrinsic "^1.2.0" - has "^1.0.3" + get-intrinsic "^1.2.2" + hasown "^2.0.0" side-channel "^1.0.4" ipaddr.js@1.9.1: @@ -7685,12 +7698,12 @@ is-color-stop@^1.0.0: rgb-regex "^1.0.1" rgba-regex "^1.0.0" -is-core-module@^2.11.0, is-core-module@^2.13.0: - version "2.13.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db" - integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ== +is-core-module@^2.11.0, is-core-module@^2.13.0, is-core-module@^2.13.1: + version "2.13.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== dependencies: - has "^1.0.3" + hasown "^2.0.0" is-data-descriptor@^0.1.4: version "0.1.4" @@ -9595,7 +9608,7 @@ object-hash@^3.0.0: resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== -object-inspect@^1.12.3, object-inspect@^1.9.0: +object-inspect@^1.13.1, object-inspect@^1.9.0: version "1.13.1" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== @@ -9636,7 +9649,7 @@ object.entries@^1.1.6: define-properties "^1.2.0" es-abstract "^1.22.1" -object.fromentries@^2.0.6: +object.fromentries@^2.0.6, object.fromentries@^2.0.7: version "2.0.7" resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.7.tgz#71e95f441e9a0ea6baf682ecaaf37fa2a8d7e616" integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== @@ -9656,7 +9669,7 @@ object.getownpropertydescriptors@^2.1.0: es-abstract "^1.22.1" safe-array-concat "^1.0.0" -object.groupby@^1.0.0: +object.groupby@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.1.tgz#d41d9f3c8d6c778d9cbac86b4ee9f5af103152ee" integrity sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ== @@ -9681,7 +9694,7 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" -object.values@^1.1.0, object.values@^1.1.6: +object.values@^1.1.0, object.values@^1.1.6, object.values@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a" integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== @@ -13997,7 +14010,7 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== -which-typed-array@^1.1.11, which-typed-array@^1.1.9: +which-typed-array@^1.1.11, which-typed-array@^1.1.13, which-typed-array@^1.1.9: version "1.1.13" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== From 84c9588064f316b03662fb27f4e9bcf0d3f5e6f9 Mon Sep 17 00:00:00 2001 From: SKairinos Date: Mon, 23 Oct 2023 09:25:19 +0100 Subject: [PATCH 47/52] simplify edit student pages --- .../src/components/form/ClassNameField.tsx | 2 +- .../form/SeeClassmatesProgressField.tsx | 2 +- .../newStudentsTable/NewStudentsTable.tsx | 116 ++++---- .../classes/editClass/EditClass.tsx | 24 +- .../student/editStudent/EditStudent.tsx | 260 ++++++++---------- .../editStudent/StudentCredentials.tsx | 87 ++++++ .../editStudent/UpdatedStudentCredentials.tsx | 39 --- 7 files changed, 284 insertions(+), 246 deletions(-) create mode 100644 frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/StudentCredentials.tsx delete mode 100644 frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/UpdatedStudentCredentials.tsx diff --git a/frontend/src/components/form/ClassNameField.tsx b/frontend/src/components/form/ClassNameField.tsx index 1ea2b24f..37c776fd 100644 --- a/frontend/src/components/form/ClassNameField.tsx +++ b/frontend/src/components/form/ClassNameField.tsx @@ -15,7 +15,7 @@ export interface ClassNameFieldProps { } const ClassNameField: React.FC = ({ - name = 'class' + name = 'name' }) => { return ( { return ( = (props) => ( ); export interface NewStudentsTableProps { - classLink: string; - students: Array<{ - name: string; - password: string; - link: string; - }>; + accessCode: string; + users: BulkCreateResult; } -const NewStudentsTable: React.FC = ({ students }) => { +const NewStudentsTable: React.FC = ({ + accessCode, + users +}) => { + const theme = useTheme(); + + const classLink = generatePath(paths.login.student.class._, { accessCode }); + const nameCellWidth = '40%'; const passwordCellWidth = '60%'; - const location = useLocation(); - const theme = useTheme(); - const classLink = location.state.updatedStudentCredentials.classLink; return ( @@ -275,34 +279,42 @@ const NewStudentsTable: React.FC = ({ students }) => {
- {students.map((student) => ( - - - - {student.name} - - - {student.password} - - - - - - - - {student.link} - - - - - - - ))} + {users.map((user) => { + if (!user.student?.loginId) throw new Error(); + + const link = classLink + + // eslint-disable-next-line @typescript-eslint/restrict-template-expressions + `?userId=${user.id}&loginId=${user.student.loginId}`; + + return ( + + + + {user.firstName} + + + {user.password} + + + + + + + + {link} + + + + + + + ); + })}
{/* TODO: fix margin bottom */} diff --git a/frontend/src/pages/teacherDashboard/classes/editClass/EditClass.tsx b/frontend/src/pages/teacherDashboard/classes/editClass/EditClass.tsx index 7e229b6e..5f7f1799 100644 --- a/frontend/src/pages/teacherDashboard/classes/editClass/EditClass.tsx +++ b/frontend/src/pages/teacherDashboard/classes/editClass/EditClass.tsx @@ -1,13 +1,6 @@ -import React from 'react'; -import { - useNavigate, - useParams, - generatePath, - useLocation -} from 'react-router-dom'; import { - DeleteOutlined, DeleteOutlineOutlined, + DeleteOutlined, Edit, SecurityOutlined } from '@mui/icons-material'; @@ -26,21 +19,28 @@ import { Typography, useTheme } from '@mui/material'; +import React from 'react'; +import { + generatePath, + useLocation, + useNavigate, + useParams +} from 'react-router-dom'; import * as yup from 'yup'; import Page from 'codeforlife/lib/esm/components/page'; import { tryValidateSync } from 'codeforlife/lib/esm/helpers/yup'; import { fromSearchParams } from 'codeforlife/lib/esm/hooks'; +import { useDeleteClassMutation, useGetStudentsByAccessCodeQuery } from '../../../../app/api'; +import { studentPerAccessCode } from '../../../../app/api/teacher/teach'; import { paths } from '../../../../app/router'; import AddStudentsForm from '../../../../features/addStudentsForm/AddStudentsForm'; import AdditionalSettings from './additionalSettings/AdditionalSettings'; import EditStudent from './student/editStudent/EditStudent'; -import ReleaseStudent from './student/releaseStudent/ReleaseStudent'; import MoveStudent from './student/moveStudent/MoveStudent'; +import ReleaseStudent from './student/releaseStudent/ReleaseStudent'; import ResetStudent from './student/resetStudent/ResetStudent'; -import { useDeleteClassMutation, useGetStudentsByAccessCodeQuery } from '../../../../app/api'; -import { studentPerAccessCode } from '../../../../app/api/teacher/teach'; const DeleteClassConfirmDialog: React.FC<{ open: boolean; @@ -306,7 +306,7 @@ const EditClass: React.FC<{ case 'edit': return ; case 'release': diff --git a/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx b/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx index e409401a..dc1ea525 100644 --- a/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx +++ b/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx @@ -1,160 +1,138 @@ +import { Link, Typography, useTheme } from '@mui/material'; import React from 'react'; -import { SubmitButton } from 'codeforlife/lib/esm/components/form'; + +import { + Form, + SubmitButton +} from 'codeforlife/lib/esm/components/form'; import Page from 'codeforlife/lib/esm/components/page'; -import { Link, Typography, useTheme } from '@mui/material'; -import { CflHorizontalForm } from '../../../../../../components/form/CflForm'; -import StudentNameField from '../../../../../../components/form/StudentNameField'; -import CflPasswordFields from '../../../../../../features/cflPasswordFields/CflPasswordFields'; +import { submitForm } from 'codeforlife/lib/esm/helpers/formik'; +import { useNavigate } from 'codeforlife/lib/esm/hooks'; + import { - useEditStudentNameMutation, - useEditStudentPasswordMutation, - useGetStudentsByAccessCodeQuery + useRetrieveClassQuery, + useRetrieveUserQuery, + useUpdateUserMutation } from '../../../../../../app/api'; -import { useLocation, useNavigate } from 'react-router-dom'; import { paths } from '../../../../../../app/router'; +import StudentNameField from '../../../../../../components/form/StudentNameField'; +import CflPasswordFields from '../../../../../../features/cflPasswordFields/CflPasswordFields'; +import { StudentCredentialsState } from './StudentCredentials'; -const UpdateNameForm: React.FC = () => { - const location = useLocation(); - const studentId = new URLSearchParams(location.search).get('studentIds') ?? ''; - interface Values { - name: string; - } - - const initialValues: Values = { - name: '' - }; +interface EditStudentProps { + id: number; + accessCode: string; + goBack: () => void; +} - const [editStudentName] = useEditStudentNameMutation(); +const EditStudent: React.FC = ({ + id, + accessCode, + goBack +}) => { + const theme = useTheme(); const navigate = useNavigate(); - return ( - { - editStudentName({ name: values.name, studentId }) - .unwrap() - .then((response: any) => { - const path = location.pathname + location.search; - navigate(path, - { - state: { - notifications: [ - { index: 0, props: { children: 'You successfully updated your student details' } } - ] - } + const [updateUser] = useUpdateUserMutation(); + const user = useRetrieveUserQuery({ id }); + const klass = useRetrieveClassQuery({ accessCode }); + + return user.data !== undefined && klass.data !== undefined && <> + + + Edit student details + for {user.data.firstName} + from class {klass.data.name} ({klass.data.accessCode}) + + + Class + + + Edit this student's name and manage their password and direct + access link. + + + + {/* TODO: create global fix for margin bottom */} + + Update name + + + Remember this is the name they use to log in with, so you should tell + them what you've changed it to. + +
{ + navigate(paths.teacher.dashboard.classes._, { + state: { + notifications: [ + { + index: 1, + props: { + children: 'Student\'s details successfully updated.' + } + } + ] } - ); + }); } - ) - .catch((error) => { - console.error(error); - const path = location.pathname + location.search; - navigate(path, + })} + > + + + Update + + +
+ + {/* TODO: create global fix for margin bottom */} + + Update password + + + You can set this student's password. Setting the password will also + regenerate their direct access link. Enter and confirm the password in + the boxes below. Try to prevent others from being able to guess the new + password when making this decision. + +
{ + navigate( + paths.teacher.dashboard.classes.editClass.studentCredentials._, { state: { notifications: [ - { index: 0, props: { children: error.data.message } } - ] + { + index: 1, + props: { + children: 'Student\'s details successfully updated.' + } + } + ], + users: [user] } } ); - }).finally(() => { - scrollTo(0, 0); - }); - }} - submitButton={ Update} - > - - - ); -}; - -const UpdatePasswordForm: React.FC = () => { - const [editStudentPassword] = useEditStudentPasswordMutation(); - const location = useLocation(); - const studentId = new URLSearchParams(location.search).get('studentIds') ?? ''; - interface Values { - password: string; - confirmPassword: string; - } - const initialValues: Values = { - password: '', - confirmPassword: '' - }; - const navigate = useNavigate(); - const handleSubmit: (values: Values) => void = (values) => { - editStudentPassword({ - password: values.password, - studentId, - confirmPassword: values.confirmPassword - }) - .unwrap() - .then((response) => { - const path = paths.teacher.dashboard.classes.editClass.updatedStudentCredentials._; - const { accessCode } = response; - navigate( - path.replace(':accessCode', accessCode), // tried using generatePath but it says it is missing :accessCode 02/10/2023 22:32 - { state: { updatedStudentCredentials: response } } - ); - }) - .catch((error) => { - console.error(error); - }); - }; - - return ( - { - handleSubmit(values); - }} - submitButton={Update} - > - - - ); -}; - -const EditStudent: React.FC<{ - accessCode: string; - // TODO: Get actual ID from backend in previous page and use it to populate page data - studentId: number; - goBack: () => void; -}> = ({ accessCode, studentId, goBack }) => { - const theme = useTheme(); - // use cache to get student name - const { data } = useGetStudentsByAccessCodeQuery({ accessCode }); - const findCurrentStudent = data?.studentsPerAccessCode.find((student) => student.id === studentId); - const studentName = findCurrentStudent?.newUser.firstName; - - return ( - <> - - - Edit student details for {studentName} from class Class 1 ({accessCode}) - - - Class - - - Edit this student's name and manage their password and direct access link. - - - - - - - - - - ); + } + })} + > + + + Update + + +
+ ; }; export default EditStudent; diff --git a/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/StudentCredentials.tsx b/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/StudentCredentials.tsx new file mode 100644 index 00000000..ec6c8057 --- /dev/null +++ b/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/StudentCredentials.tsx @@ -0,0 +1,87 @@ +import { Stack, Typography } from '@mui/material'; +import { useLocation, useParams } from 'react-router-dom'; +import * as Yup from 'yup'; + +import Page from 'codeforlife/lib/esm/components/page'; +import { tryValidateSync } from 'codeforlife/lib/esm/helpers/yup'; +import { useNavigate } from 'codeforlife/lib/esm/hooks'; + +import { useRetrieveClassQuery } from '../../../../../../app/api'; +import paths from '../../../../../../app/router/paths'; +import { accessCodeSchema } from '../../../../../../app/schemas'; +import NewStudentsTable, { + DownloadButtonPDF, + NewStudentsTableProps +} from '../../../../../../features/newStudentsTable/NewStudentsTable'; + +export interface StudentCredentialsState { + users: NewStudentsTableProps['users']; +} + +const StudentCredentials: React.FC = () => { + const navigate = useNavigate(); + const { state }: { state: StudentCredentialsState } = useLocation(); + + const accessCode = tryValidateSync( + useParams(), + Yup.object({ accessCode: accessCodeSchema.required() }) + )?.accessCode; + + if (accessCode === undefined || + typeof state !== 'object' || + state === null || + !('users' in state) || + !Array.isArray(state.users) || + state.users.length === 0 + ) { + navigate(paths.teacher.dashboard.classes._, { + replace: true, + state: { + notifications: [ + { + index: 1, + props: { + error: true, + children: accessCode === undefined + ? 'Invalid class access code.' + : 'Missing student details.' + } + } + ] + } + }); + return <>; + } + + const klass = useRetrieveClassQuery({ accessCode }); + + return (klass.data !== undefined && + + + + + + This is the only time you will be able to view this page. You can + print reminder cards or download as a CSV file. + + + + + + + + + ); +}; + +export default StudentCredentials; diff --git a/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/UpdatedStudentCredentials.tsx b/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/UpdatedStudentCredentials.tsx deleted file mode 100644 index 37c0412b..00000000 --- a/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/UpdatedStudentCredentials.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import React from 'react'; -import ClassCredentials from '../../../../../teacherOnboarding/ClassCredentials'; -import Page from 'codeforlife/lib/esm/components/page'; -import { useLocation } from 'react-router-dom'; -import { Box, Typography } from '@mui/material'; -import { DownloadButtonPDF } from '../../../../../../features/newStudentsTable/NewStudentsTable'; -const UpdatedStudentCredentials: React.FC = () => { - const location = useLocation(); - const accessCode: string = location.state?.updatedStudentCredentials.accessCode; - const className: string = location.state?.updatedStudentCredentials.class; - return - - - - {/* TODO: Update the Page.Notification component to handle buttons - and style it using the production style properties */} - {/* TODO: Add a way to format the icon in front of the notification message */} - - This is the only time you will be able to view this page. You can print reminder cards or download as a CSV file. - - - - - - - - ; -}; - -export default UpdatedStudentCredentials; From 548e50811dec2f8effc020ec6cee1fad023b2433 Mon Sep 17 00:00:00 2001 From: SKairinos Date: Mon, 23 Oct 2023 09:31:22 +0100 Subject: [PATCH 48/52] fix type errors --- .../student/editStudent/EditStudent.tsx | 4 +- .../editStudent/StudentCredentials.tsx | 48 ++++++++++--------- .../student/resetStudent/ResetStudent.tsx | 25 ++++------ 3 files changed, 35 insertions(+), 42 deletions(-) diff --git a/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx b/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx index dc1ea525..069ff72a 100644 --- a/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx +++ b/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/EditStudent.tsx @@ -36,7 +36,7 @@ const EditStudent: React.FC = ({ const user = useRetrieveUserQuery({ id }); const klass = useRetrieveClassQuery({ accessCode }); - return user.data !== undefined && klass.data !== undefined && <> + return <>{user.data !== undefined && klass.data !== undefined && <> = ({ - ; + }; }; export default EditStudent; diff --git a/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/StudentCredentials.tsx b/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/StudentCredentials.tsx index ec6c8057..81bd8c14 100644 --- a/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/StudentCredentials.tsx +++ b/frontend/src/pages/teacherDashboard/classes/editClass/student/editStudent/StudentCredentials.tsx @@ -55,31 +55,33 @@ const StudentCredentials: React.FC = () => { const klass = useRetrieveClassQuery({ accessCode }); - return (klass.data !== undefined && + return ( - - - - - This is the only time you will be able to view this page. You can - print reminder cards or download as a CSV file. - - - - - - + - + + + + This is the only time you will be able to view this page. You can + print reminder cards or download as a CSV file. + + + + + + + + } ); }; diff --git a/frontend/src/pages/teacherDashboard/classes/editClass/student/resetStudent/ResetStudent.tsx b/frontend/src/pages/teacherDashboard/classes/editClass/student/resetStudent/ResetStudent.tsx index f492820a..755f3af7 100644 --- a/frontend/src/pages/teacherDashboard/classes/editClass/student/resetStudent/ResetStudent.tsx +++ b/frontend/src/pages/teacherDashboard/classes/editClass/student/resetStudent/ResetStudent.tsx @@ -1,35 +1,26 @@ -import React from 'react'; -import Page from 'codeforlife/lib/esm/components/page'; +import { ChevronLeft } from '@mui/icons-material'; import { Button, Stack, Typography, useTheme } from '@mui/material'; +import Page from 'codeforlife/lib/esm/components/page'; +import React from 'react'; import NewStudentsTable from '../../../../../../features/newStudentsTable/NewStudentsTable'; -import { ChevronLeft } from '@mui/icons-material'; const ResetStudent: React.FC<{ accessCode: string; studentIds: number[]; goBack: () => void; }> = ({ accessCode, studentIds, goBack }) => { - // TODO: get from API and use params - const classLink = 'https://www.codeforlife.education/'; - const students: Array<{ - name: string; - password: string; - link: string; - }> = [ - { - name: 'John', - password: 'ioykms', - link: 'https://www.codeforlife.education/' - } - ]; const theme = useTheme(); + return ( <> Students' passwords reset for class Class 1 ({accessCode}) - +