timetable-app

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit 061e875e85f02c0f4f76a5248531aefb47799d00
parent cd39c5974529f711c654733291a02a28a6fb5285
Author: Yuukin256 <52195426+Yuukin256@users.noreply.github.com>
Date:   Sat, 23 Mar 2024 16:40:15 +0900

時間割データ形式の変更&保存方法をハードコードに変更 (#25)

* パッケージのアップデート等

* データ入力・更新機能を削除

* prisma関係を削除

* クラス標準時間割データの型を設計し、データ枠を作成

* 曜日時限時間割データの型を設計し、データ枠を作成・サンプルデータ挿入

* date-fns ライブラリを更新

* 時間割データ取得を実装

* クラス時間割ページのデータ取得を新verに対応、型定義を見直す

* クラス時間割表示内でのデータ更新日時表示機能を削除

* クラス時間割表示ページの各要素を新データ形式に対応

* パッケージアップデート、型修正等

* マイ時間割機能を新しいデータ形式に対応

* 未使用のClassPickerコンポーネントを削除

* Prisma関係で発生していた型エラーを修正
Diffstat:
M.devcontainer/devcontainer.json | 2+-
M.vscode/extensions.json | 3+--
M.vscode/settings.json | 3+--
MREADME.md | 5+----
Adata/classStandard.ts | 871+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Adata/dayPeriodSchedule.ts | 19+++++++++++++++++++
Mnext-env.d.ts | 1-
Mpackage.json | 51++++++++++++++++++++++++---------------------------
Mpnpm-lock.yaml | 2624++++++++++++++++++++++++++++++++++++++++++-------------------------------------
Dprisma/migrations/20230316173058_first_migration/migration.sql | 77-----------------------------------------------------------------------------
Dprisma/migrations/20230318180950_fix_typo/migration.sql | 9---------
Dprisma/migrations/20230324181509_cascade/migration.sql | 5-----
Dprisma/migrations/20230408160935_temporary_group_optional/migration.sql | 2--
Dprisma/migrations/20230408165310_add_event_table/migration.sql | 11-----------
Dprisma/migrations/migration_lock.toml | 4----
Dprisma/reset.ts | 46----------------------------------------------
Mprisma/schema.prisma | 110+------------------------------------------------------------------------------
Dprisma/seed.ts | 31-------------------------------
Dsrc/client/components/ClassPicker/index.tsx | 48------------------------------------------------
Msrc/client/components/DatePickerLocalizationProvider/index.tsx | 3++-
Dsrc/client/features/console/classStandard/components/InputForm.tsx | 42------------------------------------------
Dsrc/client/features/console/classStandard/components/InputTable.tsx | 243-------------------------------------------------------------------------------
Dsrc/client/features/console/classStandard/components/LessonCell.tsx | 25-------------------------
Dsrc/client/features/console/classStandard/hooks/useStandardTimetable.ts | 83-------------------------------------------------------------------------------
Dsrc/client/features/console/classStandard/index.tsx | 29-----------------------------
Dsrc/client/features/console/classTemporarySchedule/components/CreateForm.tsx | 146-------------------------------------------------------------------------------
Dsrc/client/features/console/classTemporarySchedule/components/EditTable/DeleteCell.tsx | 103-------------------------------------------------------------------------------
Dsrc/client/features/console/classTemporarySchedule/components/EditTable/Row.tsx | 35-----------------------------------
Dsrc/client/features/console/classTemporarySchedule/components/EditTable/UpdateCell.tsx | 182-------------------------------------------------------------------------------
Dsrc/client/features/console/classTemporarySchedule/components/EditTable/index.tsx | 49-------------------------------------------------
Dsrc/client/features/console/classTemporarySchedule/components/InputView.tsx | 23-----------------------
Dsrc/client/features/console/classTemporarySchedule/hooks/useGetAllQuery.ts | 37-------------------------------------
Dsrc/client/features/console/classTemporarySchedule/index.tsx | 36------------------------------------
Dsrc/client/features/console/event/components/CreateForm.tsx | 85-------------------------------------------------------------------------------
Dsrc/client/features/console/event/components/EditTable/DeleteCell.tsx | 72------------------------------------------------------------------------
Dsrc/client/features/console/event/components/EditTable/GradeSelector.tsx | 38--------------------------------------
Dsrc/client/features/console/event/components/EditTable/UpdateCell.tsx | 122-------------------------------------------------------------------------------
Dsrc/client/features/console/event/components/EditTable/index.tsx | 86-------------------------------------------------------------------------------
Dsrc/client/features/console/event/hooks/useCreateForm.ts | 65-----------------------------------------------------------------
Dsrc/client/features/console/event/hooks/useDeleteMutation.ts | 27---------------------------
Dsrc/client/features/console/event/hooks/useFilteredEvents.ts | 34----------------------------------
Dsrc/client/features/console/event/hooks/useUpdateForm.ts | 75---------------------------------------------------------------------------
Dsrc/client/features/console/event/index.tsx | 13-------------
Dsrc/client/features/console/gradeSchedule/components/DatePicker.tsx | 42------------------------------------------
Dsrc/client/features/console/gradeSchedule/components/InputForm.tsx | 105-------------------------------------------------------------------------------
Dsrc/client/features/console/gradeSchedule/hooks/useGradeSchedule.ts | 193-------------------------------------------------------------------------------
Dsrc/client/features/console/gradeSchedule/index.tsx | 85-------------------------------------------------------------------------------
Msrc/client/features/daily/components/Lessons/BasisChip.tsx | 6+++---
Msrc/client/features/daily/components/Lessons/Events.tsx | 37+++++++++----------------------------
Msrc/client/features/daily/components/Lessons/Lesson.tsx | 20+++++++++++---------
Dsrc/client/features/daily/components/Lessons/UpdateDateChip.tsx | 97-------------------------------------------------------------------------------
Msrc/client/features/daily/components/Lessons/index.tsx | 8+++-----
Msrc/client/features/daily/types.ts | 21+++++----------------
Msrc/client/features/setting/components/MySubjectForm.tsx | 17++++++-----------
Msrc/client/hooks/useMySubject.ts | 7+++----
Msrc/common/constant/index.ts | 153++++++++++++++++++++++++++++++++++++++++---------------------------------------
Msrc/common/types/index.ts | 21+++++++++++++++++++--
Msrc/common/utils/formatDate.ts | 11+++++++----
Msrc/pages/[class]/index.tsx | 168+++++++++++++++++++++++++------------------------------------------------------
Dsrc/pages/console/class-standard.tsx | 63---------------------------------------------------------------
Dsrc/pages/console/class-temporary-schedule.tsx | 63---------------------------------------------------------------
Dsrc/pages/console/event.tsx | 35-----------------------------------
Dsrc/pages/console/grade-schedule.tsx | 36------------------------------------
Dsrc/pages/console/index.tsx | 49-------------------------------------------------
Msrc/server/context.ts | 4++--
Msrc/server/routers/_app.ts | 21+++++++--------------
Dsrc/server/routers/class.ts | 52----------------------------------------------------
Msrc/server/routers/classStandard.ts | 176+++++++++++++++++--------------------------------------------------------------
Dsrc/server/routers/classTemporarySchedule.ts | 101-------------------------------------------------------------------------------
Dsrc/server/routers/classTemporaryScheduleGroup.ts | 67-------------------------------------------------------------------
Asrc/server/routers/dayPeriodSchedule.ts | 35+++++++++++++++++++++++++++++++++++
Dsrc/server/routers/event.ts | 79-------------------------------------------------------------------------------
Dsrc/server/routers/gradeSchedule.ts | 126-------------------------------------------------------------------------------
Msrc/server/trpc.ts | 1+
Msrc/server/utils/prisma.ts | 14+++++++-------
Dtools/emigrateDB.ts | 123-------------------------------------------------------------------------------
Mvercel.json | 6+-----
77 files changed, 2596 insertions(+), 5021 deletions(-)

diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json @@ -1,6 +1,6 @@ { "name": "Node.js & TypeScript", - "image": "mcr.microsoft.com/devcontainers/typescript-node:18-bullseye", + "image": "mcr.microsoft.com/devcontainers/typescript-node:20-bullseye", // Use 'forwardPorts' to make a list of ports inside the container available locally. // "forwardPorts": [], diff --git a/.vscode/extensions.json b/.vscode/extensions.json @@ -3,7 +3,6 @@ "dbaeumer.vscode-eslint", "esbenp.prettier-vscode", "editorconfig.editorconfig", - "styled-components.vscode-styled-components", - "prisma.prisma" + "styled-components.vscode-styled-components" ] } diff --git a/.vscode/settings.json b/.vscode/settings.json @@ -1,11 +1,10 @@ { "npm.packageManager": "pnpm", - "eslint.packageManager": "pnpm", "editor.defaultFormatter": "esbenp.prettier-vscode", "editor.formatOnPaste": true, "editor.formatOnSave": true, "editor.codeActionsOnSave": { - "source.fixAll.eslint": true + "source.fixAll.eslint": "explicit" }, "[prisma]": { "editor.defaultFormatter": "Prisma.prisma" diff --git a/README.md b/README.md @@ -2,7 +2,7 @@ ## 開発方法 -- Node.js LTS をインストール +- Node.js v20 LTS をインストール - git リポジトリ を clone @@ -10,9 +10,6 @@ # パッケージインストール(初回のみ) pnpm install -# Prisma client 生成 -pnpm prisma generate - # 開発サーバー起動 pnpm dev ``` diff --git a/data/classStandard.ts b/data/classStandard.ts @@ -0,0 +1,871 @@ +import type { ClassStandardTimetable, GradeClass } from 'common/types'; + +export const allClassesStandardTimetable: Record< + GradeClass, + ClassStandardTimetable +> = { + '1-1': { + 月1: [], + 月2: [], + 月3: [], + 月4: [], + 月5: [], + 月6: [], + 月7: [], + 火1: [], + 火2: [], + 火3: [], + 火4: [], + 火5: [], + 火6: [], + 火7: [], + 水1: [], + 水2: [], + 水3: [], + 水4: [], + 水5: [], + 水6: [], + 水7: [], + 木1: [], + 木2: [], + 木3: [], + 木4: [], + 木5: [], + 木6: [], + 金1: [], + 金2: [], + 金3: [], + 金4: [], + 金5: [], + 金6: [], + 金7: [], + }, + '1-2': { + 月1: [], + 月2: [], + 月3: [], + 月4: [], + 月5: [], + 月6: [], + 月7: [], + 火1: [], + 火2: [], + 火3: [], + 火4: [], + 火5: [], + 火6: [], + 火7: [], + 水1: [], + 水2: [], + 水3: [], + 水4: [], + 水5: [], + 水6: [], + 水7: [], + 木1: [], + 木2: [], + 木3: [], + 木4: [], + 木5: [], + 木6: [], + 金1: [], + 金2: [], + 金3: [], + 金4: [], + 金5: [], + 金6: [], + 金7: [], + }, + '1-3': { + 月1: [], + 月2: [], + 月3: [], + 月4: [], + 月5: [], + 月6: [], + 月7: [], + 火1: [], + 火2: [], + 火3: [], + 火4: [], + 火5: [], + 火6: [], + 火7: [], + 水1: [], + 水2: [], + 水3: [], + 水4: [], + 水5: [], + 水6: [], + 水7: [], + 木1: [], + 木2: [], + 木3: [], + 木4: [], + 木5: [], + 木6: [], + 金1: [], + 金2: [], + 金3: [], + 金4: [], + 金5: [], + 金6: [], + 金7: [], + }, + '1-4': { + 月1: [], + 月2: [], + 月3: [], + 月4: [], + 月5: [], + 月6: [], + 月7: [], + 火1: [], + 火2: [], + 火3: [], + 火4: [], + 火5: [], + 火6: [], + 火7: [], + 水1: [], + 水2: [], + 水3: [], + 水4: [], + 水5: [], + 水6: [], + 水7: [], + 木1: [], + 木2: [], + 木3: [], + 木4: [], + 木5: [], + 木6: [], + 金1: [], + 金2: [], + 金3: [], + 金4: [], + 金5: [], + 金6: [], + 金7: [], + }, + '1-5': { + 月1: [], + 月2: [], + 月3: [], + 月4: [], + 月5: [], + 月6: [], + 月7: [], + 火1: [], + 火2: [], + 火3: [], + 火4: [], + 火5: [], + 火6: [], + 火7: [], + 水1: [], + 水2: [], + 水3: [], + 水4: [], + 水5: [], + 水6: [], + 水7: [], + 木1: [], + 木2: [], + 木3: [], + 木4: [], + 木5: [], + 木6: [], + 金1: [], + 金2: [], + 金3: [], + 金4: [], + 金5: [], + 金6: [], + 金7: [], + }, + '1-6': { + 月1: [], + 月2: [], + 月3: [], + 月4: [], + 月5: [], + 月6: [], + 月7: [], + 火1: [], + 火2: [], + 火3: [], + 火4: [], + 火5: [], + 火6: [], + 火7: [], + 水1: [], + 水2: [], + 水3: [], + 水4: [], + 水5: [], + 水6: [], + 水7: [], + 木1: [], + 木2: [], + 木3: [], + 木4: [], + 木5: [], + 木6: [], + 金1: [], + 金2: [], + 金3: [], + 金4: [], + 金5: [], + 金6: [], + 金7: [], + }, + '1-7': { + 月1: [], + 月2: [], + 月3: [], + 月4: [], + 月5: [], + 月6: [], + 月7: [], + 火1: [], + 火2: [], + 火3: [], + 火4: [], + 火5: [], + 火6: [], + 火7: [], + 水1: [], + 水2: [], + 水3: [], + 水4: [], + 水5: [], + 水6: [], + 水7: [], + 木1: [], + 木2: [], + 木3: [], + 木4: [], + 木5: [], + 木6: [], + 金1: [], + 金2: [], + 金3: [], + 金4: [], + 金5: [], + 金6: [], + 金7: [], + }, + '1-8': { + 月1: [], + 月2: [], + 月3: [], + 月4: [], + 月5: [], + 月6: [], + 月7: [], + 火1: [], + 火2: [], + 火3: [], + 火4: [], + 火5: [], + 火6: [], + 火7: [], + 水1: [], + 水2: [], + 水3: [], + 水4: [], + 水5: [], + 水6: [], + 水7: [], + 木1: [], + 木2: [], + 木3: [], + 木4: [], + 木5: [], + 木6: [], + 金1: [], + 金2: [], + 金3: [], + 金4: [], + 金5: [], + 金6: [], + 金7: [], + }, + '2-1': { + 月1: [], + 月2: [], + 月3: [], + 月4: [], + 月5: [], + 月6: [], + 月7: [], + 火1: [], + 火2: [], + 火3: [], + 火4: [], + 火5: [], + 火6: [], + 火7: [], + 水1: [], + 水2: [], + 水3: [], + 水4: [], + 水5: [], + 水6: [], + 水7: [], + 木1: [], + 木2: [], + 木3: [], + 木4: [], + 木5: [], + 木6: [], + 金1: [], + 金2: [], + 金3: [], + 金4: [], + 金5: [], + 金6: [], + 金7: [], + }, + '2-2': { + 月1: [], + 月2: [], + 月3: [], + 月4: [], + 月5: [], + 月6: [], + 月7: [], + 火1: [], + 火2: [], + 火3: [], + 火4: [], + 火5: [], + 火6: [], + 火7: [], + 水1: [], + 水2: [], + 水3: [], + 水4: [], + 水5: [], + 水6: [], + 水7: [], + 木1: [], + 木2: [], + 木3: [], + 木4: [], + 木5: [], + 木6: [], + 金1: [], + 金2: [], + 金3: [], + 金4: [], + 金5: [], + 金6: [], + 金7: [], + }, + '2-3': { + 月1: [], + 月2: [], + 月3: [], + 月4: [], + 月5: [], + 月6: [], + 月7: [], + 火1: [], + 火2: [], + 火3: [], + 火4: [], + 火5: [], + 火6: [], + 火7: [], + 水1: [], + 水2: [], + 水3: [], + 水4: [], + 水5: [], + 水6: [], + 水7: [], + 木1: [], + 木2: [], + 木3: [], + 木4: [], + 木5: [], + 木6: [], + 金1: [], + 金2: [], + 金3: [], + 金4: [], + 金5: [], + 金6: [], + 金7: [], + }, + '2-4': { + 月1: [], + 月2: [], + 月3: [], + 月4: [], + 月5: [], + 月6: [], + 月7: [], + 火1: [], + 火2: [], + 火3: [], + 火4: [], + 火5: [], + 火6: [], + 火7: [], + 水1: [], + 水2: [], + 水3: [], + 水4: [], + 水5: [], + 水6: [], + 水7: [], + 木1: [], + 木2: [], + 木3: [], + 木4: [], + 木5: [], + 木6: [], + 金1: [], + 金2: [], + 金3: [], + 金4: [], + 金5: [], + 金6: [], + 金7: [], + }, + '2-5': { + 月1: [], + 月2: [], + 月3: [], + 月4: [], + 月5: [], + 月6: [], + 月7: [], + 火1: [], + 火2: [], + 火3: [], + 火4: [], + 火5: [], + 火6: [], + 火7: [], + 水1: [], + 水2: [], + 水3: [], + 水4: [], + 水5: [], + 水6: [], + 水7: [], + 木1: [], + 木2: [], + 木3: [], + 木4: [], + 木5: [], + 木6: [], + 金1: [], + 金2: [], + 金3: [], + 金4: [], + 金5: [], + 金6: [], + 金7: [], + }, + '2-6': { + 月1: [], + 月2: [], + 月3: [], + 月4: [], + 月5: [], + 月6: [], + 月7: [], + 火1: [], + 火2: [], + 火3: [], + 火4: [], + 火5: [], + 火6: [], + 火7: [], + 水1: [], + 水2: [], + 水3: [], + 水4: [], + 水5: [], + 水6: [], + 水7: [], + 木1: [], + 木2: [], + 木3: [], + 木4: [], + 木5: [], + 木6: [], + 金1: [], + 金2: [], + 金3: [], + 金4: [], + 金5: [], + 金6: [], + 金7: [], + }, + '2-7': { + 月1: [], + 月2: [], + 月3: [], + 月4: [], + 月5: [], + 月6: [], + 月7: [], + 火1: [], + 火2: [], + 火3: [], + 火4: [], + 火5: [], + 火6: [], + 火7: [], + 水1: [], + 水2: [], + 水3: [], + 水4: [], + 水5: [], + 水6: [], + 水7: [], + 木1: [], + 木2: [], + 木3: [], + 木4: [], + 木5: [], + 木6: [], + 金1: [], + 金2: [], + 金3: [], + 金4: [], + 金5: [], + 金6: [], + 金7: [], + }, + '2-8': { + 月1: [], + 月2: [], + 月3: [], + 月4: [], + 月5: [], + 月6: [], + 月7: [], + 火1: [], + 火2: [], + 火3: [], + 火4: [], + 火5: [], + 火6: [], + 火7: [], + 水1: [], + 水2: [], + 水3: [], + 水4: [], + 水5: [], + 水6: [], + 水7: [], + 木1: [], + 木2: [], + 木3: [], + 木4: [], + 木5: [], + 木6: [], + 金1: [], + 金2: [], + 金3: [], + 金4: [], + 金5: [], + 金6: [], + 金7: [], + }, + '3-1': { + 月1: [], + 月2: [], + 月3: [], + 月4: [], + 月5: [], + 月6: [], + 月7: [], + 火1: [], + 火2: [], + 火3: [], + 火4: [], + 火5: [], + 火6: [], + 火7: [], + 水1: [], + 水2: [], + 水3: [], + 水4: [], + 水5: [], + 水6: [], + 水7: [], + 木1: [], + 木2: [], + 木3: [], + 木4: [], + 木5: [], + 木6: [], + 金1: [], + 金2: [], + 金3: [], + 金4: [], + 金5: [], + 金6: [], + 金7: [], + }, + '3-2': { + 月1: [], + 月2: [], + 月3: [], + 月4: [], + 月5: [], + 月6: [], + 月7: [], + 火1: [], + 火2: [], + 火3: [], + 火4: [], + 火5: [], + 火6: [], + 火7: [], + 水1: [], + 水2: [], + 水3: [], + 水4: [], + 水5: [], + 水6: [], + 水7: [], + 木1: [], + 木2: [], + 木3: [], + 木4: [], + 木5: [], + 木6: [], + 金1: [], + 金2: [], + 金3: [], + 金4: [], + 金5: [], + 金6: [], + 金7: [], + }, + '3-3': { + 月1: [], + 月2: [], + 月3: [], + 月4: [], + 月5: [], + 月6: [], + 月7: [], + 火1: [], + 火2: [], + 火3: [], + 火4: [], + 火5: [], + 火6: [], + 火7: [], + 水1: [], + 水2: [], + 水3: [], + 水4: [], + 水5: [], + 水6: [], + 水7: [], + 木1: [], + 木2: [], + 木3: [], + 木4: [], + 木5: [], + 木6: [], + 金1: [], + 金2: [], + 金3: [], + 金4: [], + 金5: [], + 金6: [], + 金7: [], + }, + '3-4': { + 月1: [], + 月2: [], + 月3: [], + 月4: [], + 月5: [], + 月6: [], + 月7: [], + 火1: [], + 火2: [], + 火3: [], + 火4: [], + 火5: [], + 火6: [], + 火7: [], + 水1: [], + 水2: [], + 水3: [], + 水4: [], + 水5: [], + 水6: [], + 水7: [], + 木1: [], + 木2: [], + 木3: [], + 木4: [], + 木5: [], + 木6: [], + 金1: [], + 金2: [], + 金3: [], + 金4: [], + 金5: [], + 金6: [], + 金7: [], + }, + '3-5': { + 月1: [], + 月2: [], + 月3: [], + 月4: [], + 月5: [], + 月6: [], + 月7: [], + 火1: [], + 火2: [], + 火3: [], + 火4: [], + 火5: [], + 火6: [], + 火7: [], + 水1: [], + 水2: [], + 水3: [], + 水4: [], + 水5: [], + 水6: [], + 水7: [], + 木1: [], + 木2: [], + 木3: [], + 木4: [], + 木5: [], + 木6: [], + 金1: [], + 金2: [], + 金3: [], + 金4: [], + 金5: [], + 金6: [], + 金7: [], + }, + '3-6': { + 月1: [], + 月2: [], + 月3: [], + 月4: [], + 月5: [], + 月6: [], + 月7: [], + 火1: [], + 火2: [], + 火3: [], + 火4: [], + 火5: [], + 火6: [], + 火7: [], + 水1: [], + 水2: [], + 水3: [], + 水4: [], + 水5: [], + 水6: [], + 水7: [], + 木1: [], + 木2: [], + 木3: [], + 木4: [], + 木5: [], + 木6: [], + 金1: [], + 金2: [], + 金3: [], + 金4: [], + 金5: [], + 金6: [], + 金7: [], + }, + '3-7': { + 月1: [], + 月2: [], + 月3: [], + 月4: [], + 月5: [], + 月6: [], + 月7: [], + 火1: [], + 火2: [], + 火3: [], + 火4: [], + 火5: [], + 火6: [], + 火7: [], + 水1: [], + 水2: [], + 水3: [], + 水4: [], + 水5: [], + 水6: [], + 水7: [], + 木1: [], + 木2: [], + 木3: [], + 木4: [], + 木5: [], + 木6: [], + 金1: [], + 金2: [], + 金3: [], + 金4: [], + 金5: [], + 金6: [], + 金7: [], + }, + '3-8': { + 月1: [], + 月2: [], + 月3: [], + 月4: [], + 月5: [], + 月6: [], + 月7: [], + 火1: [], + 火2: [], + 火3: [], + 火4: [], + 火5: [], + 火6: [], + 火7: [], + 水1: [], + 水2: [], + 水3: [], + 水4: [], + 水5: [], + 水6: [], + 水7: [], + 木1: [], + 木2: [], + 木3: [], + 木4: [], + 木5: [], + 木6: [], + 金1: [], + 金2: [], + 金3: [], + 金4: [], + 金5: [], + 金6: [], + 金7: [], + }, +}; diff --git a/data/dayPeriodSchedule.ts b/data/dayPeriodSchedule.ts @@ -0,0 +1,19 @@ +import type { DaySchedulesByGrade } from 'common/types'; + +// 日付順に並べて入力すること +export const dayPeriodSchedules: Record<string, DaySchedulesByGrade> = { + // '2024-03-22': { + // grade1: { + // period1: '月1', + // period2: '月2', + // period3: '月3', + // period4: '月4', + // period5: '月5', + // period6: '月6', + // period7: '月7', + // event: '終業式', + // }, + // grade2: { period1: '火1', event: '終業式' }, + // grade3: { period1: '火1', event: '終業式' }, + // }, +}; diff --git a/next-env.d.ts b/next-env.d.ts @@ -1,6 +1,5 @@ /// <reference types="next" /> /// <reference types="next/image-types/global" /> -/// <reference types="next/navigation-types/compat/navigation" /> // NOTE: This file should not be edited // see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/package.json b/package.json @@ -12,31 +12,28 @@ "type-check": "tsc --noEmit", "format": "prettier --write ." }, - "prisma": { - "seed": "tsx prisma/seed.ts" - }, "dependencies": { - "@babel/core": "^7.23.7", + "@babel/core": "^7.24.3", "@emotion/cache": "^11.11.0", - "@emotion/react": "^11.11.3", + "@emotion/react": "^11.11.4", "@emotion/styled": "^11.11.0", "@hookform/resolvers": "^3.3.4", "@mantine/hooks": "^6.0.21", - "@mui/icons-material": "^5.15.4", + "@mui/icons-material": "^5.15.14", "@mui/lab": "5.0.0-alpha.130", - "@mui/material": "^5.15.4", - "@mui/system": "^5.15.4", - "@mui/x-date-pickers": "^6.19.0", - "@prisma/client": "^5.8.1", + "@mui/material": "^5.15.14", + "@mui/system": "^5.15.14", + "@mui/x-date-pickers": "^6.19.8", + "@prisma/client": "^5.11.0", "@tanstack/react-query": "^4.36.1", - "@trpc/client": "^10.45.0", - "@trpc/next": "^10.45.0", - "@trpc/react-query": "^10.45.0", - "@trpc/server": "^10.45.0", + "@trpc/client": "^10.45.2", + "@trpc/next": "^10.45.2", + "@trpc/react-query": "^10.45.2", + "@trpc/server": "^10.45.2", "clsx": "^1.2.1", "csstype": "^3.1.3", - "date-fns": "^2.30.0", - "jotai": "^2.6.2", + "date-fns": "^3.6.0", + "jotai": "^2.7.1", "lodash": "^4.17.21", "next": "13.4.1", "next-pwa": "^5.6.0", @@ -45,23 +42,23 @@ "react": "^18.2.0", "react-cookie": "^4.1.1", "react-dom": "^18.2.0", - "react-hook-form": "^7.49.3", + "react-hook-form": "^7.51.1", "react-hook-form-mui": "^6.8.0", "superjson": "^1.13.3", "swiper": "^8.4.7", - "usehooks-ts": "^2.9.4", - "webpack": "^5.89.0", + "usehooks-ts": "^2.16.0", + "webpack": "^5.90.3", "zod": "^3.22.4" }, "devDependencies": { "@next/eslint-plugin-next": "^13.5.6", - "@types/lodash": "^4.14.202", - "@types/node": "^20.11.4", - "@types/react": "^18.2.48", - "@types/react-dom": "^18.2.18", + "@types/lodash": "^4.17.0", + "@types/node": "^20.11.30", + "@types/react": "^18.2.67", + "@types/react-dom": "^18.2.22", "@typescript-eslint/eslint-plugin": "^5.62.0", "@typescript-eslint/parser": "^5.62.0", - "eslint": "^8.56.0", + "eslint": "^8.57.0", "eslint-config-next": "^13.5.6", "eslint-config-prettier": "^8.10.0", "eslint-import-resolver-typescript": "^3.6.1", @@ -71,9 +68,9 @@ "husky": "^8.0.3", "lint-staged": "^13.3.0", "prettier": "^2.8.8", - "prisma": "^5.8.1", + "prisma": "^5.11.0", "tsx": "^3.14.0", - "typescript": "^5.3.3" + "typescript": "^5.4.2" }, - "packageManager": "pnpm@8.5.1" + "packageManager": "pnpm@8.15.5" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml @@ -1,57 +1,61 @@ lockfileVersion: '6.0' +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + dependencies: '@babel/core': - specifier: ^7.23.7 - version: 7.23.7 + specifier: ^7.24.3 + version: 7.24.3 '@emotion/cache': specifier: ^11.11.0 version: 11.11.0 '@emotion/react': - specifier: ^11.11.3 - version: 11.11.3(@types/react@18.2.48)(react@18.2.0) + specifier: ^11.11.4 + version: 11.11.4(@types/react@18.2.67)(react@18.2.0) '@emotion/styled': specifier: ^11.11.0 - version: 11.11.0(@emotion/react@11.11.3)(@types/react@18.2.48)(react@18.2.0) + version: 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.67)(react@18.2.0) '@hookform/resolvers': specifier: ^3.3.4 - version: 3.3.4(react-hook-form@7.49.3) + version: 3.3.4(react-hook-form@7.51.1) '@mantine/hooks': specifier: ^6.0.21 version: 6.0.21(react@18.2.0) '@mui/icons-material': - specifier: ^5.15.4 - version: 5.15.4(@mui/material@5.15.4)(@types/react@18.2.48)(react@18.2.0) + specifier: ^5.15.14 + version: 5.15.14(@mui/material@5.15.14)(@types/react@18.2.67)(react@18.2.0) '@mui/lab': specifier: 5.0.0-alpha.130 - version: 5.0.0-alpha.130(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@mui/material@5.15.4)(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0) + version: 5.0.0-alpha.130(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@mui/material@5.15.14)(@types/react@18.2.67)(react-dom@18.2.0)(react@18.2.0) '@mui/material': - specifier: ^5.15.4 - version: 5.15.4(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0) + specifier: ^5.15.14 + version: 5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.67)(react-dom@18.2.0)(react@18.2.0) '@mui/system': - specifier: ^5.15.4 - version: 5.15.4(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.2.48)(react@18.2.0) + specifier: ^5.15.14 + version: 5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.67)(react@18.2.0) '@mui/x-date-pickers': - specifier: ^6.19.0 - version: 6.19.0(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@mui/material@5.15.4)(@mui/system@5.15.4)(@types/react@18.2.48)(date-fns@2.30.0)(react-dom@18.2.0)(react@18.2.0) + specifier: ^6.19.8 + version: 6.19.8(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@mui/material@5.15.14)(@mui/system@5.15.14)(@types/react@18.2.67)(date-fns@3.6.0)(react-dom@18.2.0)(react@18.2.0) '@prisma/client': - specifier: ^5.8.1 - version: 5.8.1(prisma@5.8.1) + specifier: ^5.11.0 + version: 5.11.0(prisma@5.11.0) '@tanstack/react-query': specifier: ^4.36.1 version: 4.36.1(react-dom@18.2.0)(react@18.2.0) '@trpc/client': - specifier: ^10.45.0 - version: 10.45.0(@trpc/server@10.45.0) + specifier: ^10.45.2 + version: 10.45.2(@trpc/server@10.45.2) '@trpc/next': - specifier: ^10.45.0 - version: 10.45.0(@tanstack/react-query@4.36.1)(@trpc/client@10.45.0)(@trpc/react-query@10.45.0)(@trpc/server@10.45.0)(next@13.4.1)(react-dom@18.2.0)(react@18.2.0) + specifier: ^10.45.2 + version: 10.45.2(@tanstack/react-query@4.36.1)(@trpc/client@10.45.2)(@trpc/react-query@10.45.2)(@trpc/server@10.45.2)(next@13.4.1)(react-dom@18.2.0)(react@18.2.0) '@trpc/react-query': - specifier: ^10.45.0 - version: 10.45.0(@tanstack/react-query@4.36.1)(@trpc/client@10.45.0)(@trpc/server@10.45.0)(react-dom@18.2.0)(react@18.2.0) + specifier: ^10.45.2 + version: 10.45.2(@tanstack/react-query@4.36.1)(@trpc/client@10.45.2)(@trpc/server@10.45.2)(react-dom@18.2.0)(react@18.2.0) '@trpc/server': - specifier: ^10.45.0 - version: 10.45.0 + specifier: ^10.45.2 + version: 10.45.2 clsx: specifier: ^1.2.1 version: 1.2.1 @@ -59,20 +63,20 @@ dependencies: specifier: ^3.1.3 version: 3.1.3 date-fns: - specifier: ^2.30.0 - version: 2.30.0 + specifier: ^3.6.0 + version: 3.6.0 jotai: - specifier: ^2.6.2 - version: 2.6.2(@types/react@18.2.48)(react@18.2.0) + specifier: ^2.7.1 + version: 2.7.1(@types/react@18.2.67)(react@18.2.0) lodash: specifier: ^4.17.21 version: 4.17.21 next: specifier: 13.4.1 - version: 13.4.1(@babel/core@7.23.7)(react-dom@18.2.0)(react@18.2.0) + version: 13.4.1(@babel/core@7.24.3)(react-dom@18.2.0)(react@18.2.0) next-pwa: specifier: ^5.6.0 - version: 5.6.0(@babel/core@7.23.7)(next@13.4.1)(webpack@5.89.0) + version: 5.6.0(@babel/core@7.24.3)(next@13.4.1)(webpack@5.90.3) next-superjson-plugin: specifier: 0.5.7 version: 0.5.7(next@13.4.1)(superjson@1.13.3) @@ -89,11 +93,11 @@ dependencies: specifier: ^18.2.0 version: 18.2.0(react@18.2.0) react-hook-form: - specifier: ^7.49.3 - version: 7.49.3(react@18.2.0) + specifier: ^7.51.1 + version: 7.51.1(react@18.2.0) react-hook-form-mui: specifier: ^6.8.0 - version: 6.8.0(@mui/icons-material@5.15.4)(@mui/material@5.15.4)(@mui/x-date-pickers@6.19.0)(react-hook-form@7.49.3)(react@18.2.0) + version: 6.8.0(@mui/icons-material@5.15.14)(@mui/material@5.15.14)(@mui/x-date-pickers@6.19.8)(react-hook-form@7.51.1)(react@18.2.0) superjson: specifier: ^1.13.3 version: 1.13.3 @@ -101,11 +105,11 @@ dependencies: specifier: ^8.4.7 version: 8.4.7 usehooks-ts: - specifier: ^2.9.4 - version: 2.9.4(react-dom@18.2.0)(react@18.2.0) + specifier: ^2.16.0 + version: 2.16.0(react@18.2.0) webpack: - specifier: ^5.89.0 - version: 5.89.0 + specifier: ^5.90.3 + version: 5.90.3 zod: specifier: ^3.22.4 version: 3.22.4 @@ -115,44 +119,44 @@ devDependencies: specifier: ^13.5.6 version: 13.5.6 '@types/lodash': - specifier: ^4.14.202 - version: 4.14.202 + specifier: ^4.17.0 + version: 4.17.0 '@types/node': - specifier: ^20.11.4 - version: 20.11.4 + specifier: ^20.11.30 + version: 20.11.30 '@types/react': - specifier: ^18.2.48 - version: 18.2.48 + specifier: ^18.2.67 + version: 18.2.67 '@types/react-dom': - specifier: ^18.2.18 - version: 18.2.18 + specifier: ^18.2.22 + version: 18.2.22 '@typescript-eslint/eslint-plugin': specifier: ^5.62.0 - version: 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.56.0)(typescript@5.3.3) + version: 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.0)(typescript@5.4.2) '@typescript-eslint/parser': specifier: ^5.62.0 - version: 5.62.0(eslint@8.56.0)(typescript@5.3.3) + version: 5.62.0(eslint@8.57.0)(typescript@5.4.2) eslint: - specifier: ^8.56.0 - version: 8.56.0 + specifier: ^8.57.0 + version: 8.57.0 eslint-config-next: specifier: ^13.5.6 - version: 13.5.6(eslint@8.56.0)(typescript@5.3.3) + version: 13.5.6(eslint@8.57.0)(typescript@5.4.2) eslint-config-prettier: specifier: ^8.10.0 - version: 8.10.0(eslint@8.56.0) + version: 8.10.0(eslint@8.57.0) eslint-import-resolver-typescript: specifier: ^3.6.1 - version: 3.6.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.56.0) + version: 3.6.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) eslint-plugin-css-import-order: specifier: ^1.1.0 - version: 1.1.0(eslint@8.56.0) + version: 1.1.0(eslint@8.57.0) eslint-plugin-import: specifier: ^2.29.1 - version: 2.29.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + version: 2.29.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) eslint-plugin-unused-imports: specifier: ^2.0.0 - version: 2.0.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.56.0) + version: 2.0.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.57.0) husky: specifier: ^8.0.3 version: 8.0.3 @@ -163,14 +167,14 @@ devDependencies: specifier: ^2.8.8 version: 2.8.8 prisma: - specifier: ^5.8.1 - version: 5.8.1 + specifier: ^5.11.0 + version: 5.11.0 tsx: specifier: ^3.14.0 version: 3.14.0 typescript: - specifier: ^5.3.3 - version: 5.3.3 + specifier: ^5.4.2 + version: 5.4.2 packages: @@ -179,12 +183,12 @@ packages: engines: {node: '>=0.10.0'} dev: true - /@ampproject/remapping@2.2.1: - resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + /@ampproject/remapping@2.3.0: + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} dependencies: - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.21 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 dev: false /@apideck/better-ajv-errors@0.3.6(ajv@8.12.0): @@ -199,33 +203,33 @@ packages: leven: 3.1.0 dev: false - /@babel/code-frame@7.23.5: - resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} + /@babel/code-frame@7.24.2: + resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/highlight': 7.23.4 - chalk: 2.4.2 + '@babel/highlight': 7.24.2 + picocolors: 1.0.0 dev: false - /@babel/compat-data@7.23.5: - resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} + /@babel/compat-data@7.24.1: + resolution: {integrity: sha512-Pc65opHDliVpRHuKfzI+gSA4zcgr65O4cl64fFJIWEEh8JoHIHh0Oez1Eo8Arz8zq/JhgKodQaxEwUPRtZylVA==} engines: {node: '>=6.9.0'} dev: false - /@babel/core@7.23.7: - resolution: {integrity: sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw==} + /@babel/core@7.24.3: + resolution: {integrity: sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ==} engines: {node: '>=6.9.0'} dependencies: - '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.2 + '@babel/generator': 7.24.1 '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7) - '@babel/helpers': 7.23.8 - '@babel/parser': 7.23.6 - '@babel/template': 7.22.15 - '@babel/traverse': 7.23.7 - '@babel/types': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.3) + '@babel/helpers': 7.24.1 + '@babel/parser': 7.24.1 + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.1 + '@babel/types': 7.24.0 convert-source-map: 2.0.0 debug: 4.3.4 gensync: 1.0.0-beta.2 @@ -235,13 +239,13 @@ packages: - supports-color dev: false - /@babel/generator@7.23.6: - resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} + /@babel/generator@7.24.1: + resolution: {integrity: sha512-DfCRfZsBcrPEHUfuBMgbJ1Ut01Y/itOs+hY2nFLgqsqXd52/iSiVq5TITtUasIUgm+IIKdY2/1I7auiQOEeC9A==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.21 + '@babel/types': 7.24.0 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 dev: false @@ -249,65 +253,65 @@ packages: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.24.0 dev: false /@babel/helper-builder-binary-assignment-operator-visitor@7.22.15: resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.24.0 dev: false /@babel/helper-compilation-targets@7.23.6: resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/compat-data': 7.23.5 + '@babel/compat-data': 7.24.1 '@babel/helper-validator-option': 7.23.5 - browserslist: 4.22.2 + browserslist: 4.23.0 lru-cache: 5.1.1 semver: 6.3.1 dev: false - /@babel/helper-create-class-features-plugin@7.23.7(@babel/core@7.23.7): - resolution: {integrity: sha512-xCoqR/8+BoNnXOY7RVSgv6X+o7pmT5q1d+gGcRlXYkI+9B31glE4jeejhKVpA04O1AtzOt7OSQ6VYKP5FcRl9g==} + /@babel/helper-create-class-features-plugin@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-1yJa9dX9g//V6fDebXoEfEsxkZHk3Hcbm+zLhyu6qVgYFLvmTALTeV+jNU9e5RnYtioBrGEOdoI2joMSNQ/+aA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.24.3 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.7) + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.3) '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 semver: 6.3.1 dev: false - /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.7): + /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.24.3): resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.24.3 '@babel/helper-annotate-as-pure': 7.22.5 regexpu-core: 5.3.2 semver: 6.3.1 dev: false - /@babel/helper-define-polyfill-provider@0.4.4(@babel/core@7.23.7): - resolution: {integrity: sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA==} + /@babel/helper-define-polyfill-provider@0.6.1(@babel/core@7.24.3): + resolution: {integrity: sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.24.3 '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 debug: 4.3.4 lodash.debounce: 4.0.8 resolve: 1.22.8 @@ -324,40 +328,40 @@ packages: resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.22.15 - '@babel/types': 7.23.6 + '@babel/template': 7.24.0 + '@babel/types': 7.24.0 dev: false /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.24.0 dev: false /@babel/helper-member-expression-to-functions@7.23.0: resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.24.0 dev: false - /@babel/helper-module-imports@7.22.15: - resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} + /@babel/helper-module-imports@7.24.3: + resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.24.0 dev: false - /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.7): + /@babel/helper-module-transforms@7.23.3(@babel/core@7.24.3): resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.24.3 '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.22.15 + '@babel/helper-module-imports': 7.24.3 '@babel/helper-simple-access': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-validator-identifier': 7.22.20 @@ -367,33 +371,33 @@ packages: resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.24.0 dev: false - /@babel/helper-plugin-utils@7.22.5: - resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} + /@babel/helper-plugin-utils@7.24.0: + resolution: {integrity: sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==} engines: {node: '>=6.9.0'} dev: false - /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.7): + /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.24.3): resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.24.3 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-wrap-function': 7.22.20 dev: false - /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.7): - resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} + /@babel/helper-replace-supers@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.24.3 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 @@ -403,25 +407,25 @@ packages: resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.24.0 dev: false /@babel/helper-skip-transparent-expression-wrappers@7.22.5: resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.24.0 dev: false /@babel/helper-split-export-declaration@7.22.6: resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.24.0 dev: false - /@babel/helper-string-parser@7.23.4: - resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} + /@babel/helper-string-parser@7.24.1: + resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} engines: {node: '>=6.9.0'} dev: false @@ -440,880 +444,880 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/helper-function-name': 7.23.0 - '@babel/template': 7.22.15 - '@babel/types': 7.23.6 + '@babel/template': 7.24.0 + '@babel/types': 7.24.0 dev: false - /@babel/helpers@7.23.8: - resolution: {integrity: sha512-KDqYz4PiOWvDFrdHLPhKtCThtIcKVy6avWD2oG4GEvyQ+XDZwHD4YQd+H2vNMnq2rkdxsDkU82T+Vk8U/WXHRQ==} + /@babel/helpers@7.24.1: + resolution: {integrity: sha512-BpU09QqEe6ZCHuIHFphEFgvNSrubve1FtyMton26ekZ85gRGi6LrTF7zArARp2YvyFxloeiRmtSCq5sjh1WqIg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.22.15 - '@babel/traverse': 7.23.7 - '@babel/types': 7.23.6 + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.1 + '@babel/types': 7.24.0 transitivePeerDependencies: - supports-color dev: false - /@babel/highlight@7.23.4: - resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} + /@babel/highlight@7.24.2: + resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-validator-identifier': 7.22.20 chalk: 2.4.2 js-tokens: 4.0.0 + picocolors: 1.0.0 dev: false - /@babel/parser@7.23.6: - resolution: {integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==} + /@babel/parser@7.24.1: + resolution: {integrity: sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.24.0 dev: false - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.23.7): - resolution: {integrity: sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==} + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 dev: false - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.23.7): - resolution: {integrity: sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==} + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.7) + '@babel/plugin-transform-optional-chaining': 7.24.1(@babel/core@7.24.3) dev: false - /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.7(@babel/core@7.23.7): - resolution: {integrity: sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==} + /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.24.3 '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 dev: false - /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.7): + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.3): resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.24.3 dev: false - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.7): + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.3): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 dev: false - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.7): + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.3): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 dev: false - /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.7): + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.3): resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 dev: false - /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.7): + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.3): resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 dev: false - /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.7): + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.3): resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 dev: false - /@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.23.7): - resolution: {integrity: sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==} + /@babel/plugin-syntax-import-assertions@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 dev: false - /@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.23.7): - resolution: {integrity: sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==} + /@babel/plugin-syntax-import-attributes@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 dev: false - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.7): + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.3): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 dev: false - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.7): + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.3): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 dev: false - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.7): + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.3): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 dev: false - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.7): + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.3): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 dev: false - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.7): + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.3): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 dev: false - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.7): + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.3): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 dev: false - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.7): + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.3): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 dev: false - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.7): + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.3): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 dev: false - /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.7): + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.3): resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 dev: false - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.7): + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.3): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 dev: false - /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.7): + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.3): resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.3) + '@babel/helper-plugin-utils': 7.24.0 dev: false - /@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.23.7): - resolution: {integrity: sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==} + /@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 dev: false - /@babel/plugin-transform-async-generator-functions@7.23.7(@babel/core@7.23.7): - resolution: {integrity: sha512-PdxEpL71bJp1byMG0va5gwQcXHxuEYC/BgI/e88mGTtohbZN28O5Yit0Plkkm/dBzCF/BxmbNcses1RH1T+urA==} + /@babel/plugin-transform-async-generator-functions@7.24.3(@babel/core@7.24.3): + resolution: {integrity: sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.24.3 '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.7) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.7) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.3) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.3) dev: false - /@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.23.7): - resolution: {integrity: sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==} + /@babel/plugin-transform-async-to-generator@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.7) + '@babel/core': 7.24.3 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.3) dev: false - /@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.23.7): - resolution: {integrity: sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==} + /@babel/plugin-transform-block-scoped-functions@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 dev: false - /@babel/plugin-transform-block-scoping@7.23.4(@babel/core@7.23.7): - resolution: {integrity: sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==} + /@babel/plugin-transform-block-scoping@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-h71T2QQvDgM2SmT29UYU6ozjMlAt7s7CSs5Hvy8f8cf/GM/Z4a2zMfN+fjVGaieeCrXR3EdQl6C4gQG+OgmbKw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 dev: false - /@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.23.7): - resolution: {integrity: sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==} + /@babel/plugin-transform-class-properties@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-create-class-features-plugin': 7.23.7(@babel/core@7.23.7) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.3) + '@babel/helper-plugin-utils': 7.24.0 dev: false - /@babel/plugin-transform-class-static-block@7.23.4(@babel/core@7.23.7): - resolution: {integrity: sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==} + /@babel/plugin-transform-class-static-block@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-FUHlKCn6J3ERiu8Dv+4eoz7w8+kFLSyeVG4vDAikwADGjUCoHw/JHokyGtr8OR4UjpwPVivyF+h8Q5iv/JmrtA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-create-class-features-plugin': 7.23.7(@babel/core@7.23.7) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.7) + '@babel/core': 7.24.3 + '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.3) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.3) dev: false - /@babel/plugin-transform-classes@7.23.8(@babel/core@7.23.7): - resolution: {integrity: sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==} + /@babel/plugin-transform-classes@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.24.3 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.7) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.3) '@babel/helper-split-export-declaration': 7.22.6 globals: 11.12.0 dev: false - /@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.23.7): - resolution: {integrity: sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==} + /@babel/plugin-transform-computed-properties@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/template': 7.22.15 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/template': 7.24.0 dev: false - /@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.23.7): - resolution: {integrity: sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==} + /@babel/plugin-transform-destructuring@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 dev: false - /@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.23.7): - resolution: {integrity: sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==} + /@babel/plugin-transform-dotall-regex@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.3) + '@babel/helper-plugin-utils': 7.24.0 dev: false - /@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.23.7): - resolution: {integrity: sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==} + /@babel/plugin-transform-duplicate-keys@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 dev: false - /@babel/plugin-transform-dynamic-import@7.23.4(@babel/core@7.23.7): - resolution: {integrity: sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==} + /@babel/plugin-transform-dynamic-import@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.7) + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.3) dev: false - /@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.23.7): - resolution: {integrity: sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==} + /@babel/plugin-transform-exponentiation-operator@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.24.3 '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 dev: false - /@babel/plugin-transform-export-namespace-from@7.23.4(@babel/core@7.23.7): - resolution: {integrity: sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==} + /@babel/plugin-transform-export-namespace-from@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.7) + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.3) dev: false - /@babel/plugin-transform-for-of@7.23.6(@babel/core@7.23.7): - resolution: {integrity: sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==} + /@babel/plugin-transform-for-of@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 dev: false - /@babel/plugin-transform-function-name@7.23.3(@babel/core@7.23.7): - resolution: {integrity: sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==} + /@babel/plugin-transform-function-name@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.24.3 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-function-name': 7.23.0 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 dev: false - /@babel/plugin-transform-json-strings@7.23.4(@babel/core@7.23.7): - resolution: {integrity: sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==} + /@babel/plugin-transform-json-strings@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.7) + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.3) dev: false - /@babel/plugin-transform-literals@7.23.3(@babel/core@7.23.7): - resolution: {integrity: sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==} + /@babel/plugin-transform-literals@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 dev: false - /@babel/plugin-transform-logical-assignment-operators@7.23.4(@babel/core@7.23.7): - resolution: {integrity: sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==} + /@babel/plugin-transform-logical-assignment-operators@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.7) + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.3) dev: false - /@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.23.7): - resolution: {integrity: sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==} + /@babel/plugin-transform-member-expression-literals@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 dev: false - /@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.23.7): - resolution: {integrity: sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==} + /@babel/plugin-transform-modules-amd@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.3) + '@babel/helper-plugin-utils': 7.24.0 dev: false - /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.7): - resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==} + /@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.3) + '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-simple-access': 7.22.5 dev: false - /@babel/plugin-transform-modules-systemjs@7.23.3(@babel/core@7.23.7): - resolution: {integrity: sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==} + /@babel/plugin-transform-modules-systemjs@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.24.3 '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.3) + '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-validator-identifier': 7.22.20 dev: false - /@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.23.7): - resolution: {integrity: sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==} + /@babel/plugin-transform-modules-umd@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.3) + '@babel/helper-plugin-utils': 7.24.0 dev: false - /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.7): + /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.24.3): resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.3) + '@babel/helper-plugin-utils': 7.24.0 dev: false - /@babel/plugin-transform-new-target@7.23.3(@babel/core@7.23.7): - resolution: {integrity: sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==} + /@babel/plugin-transform-new-target@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 dev: false - /@babel/plugin-transform-nullish-coalescing-operator@7.23.4(@babel/core@7.23.7): - resolution: {integrity: sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==} + /@babel/plugin-transform-nullish-coalescing-operator@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.7) + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.3) dev: false - /@babel/plugin-transform-numeric-separator@7.23.4(@babel/core@7.23.7): - resolution: {integrity: sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==} + /@babel/plugin-transform-numeric-separator@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.7) + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.3) dev: false - /@babel/plugin-transform-object-rest-spread@7.23.4(@babel/core@7.23.7): - resolution: {integrity: sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==} + /@babel/plugin-transform-object-rest-spread@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.23.5 - '@babel/core': 7.23.7 + '@babel/core': 7.24.3 '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.7) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.7) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.24.3) dev: false - /@babel/plugin-transform-object-super@7.23.3(@babel/core@7.23.7): - resolution: {integrity: sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==} + /@babel/plugin-transform-object-super@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.7) + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.3) dev: false - /@babel/plugin-transform-optional-catch-binding@7.23.4(@babel/core@7.23.7): - resolution: {integrity: sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==} + /@babel/plugin-transform-optional-catch-binding@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.7) + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.3) dev: false - /@babel/plugin-transform-optional-chaining@7.23.4(@babel/core@7.23.7): - resolution: {integrity: sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==} + /@babel/plugin-transform-optional-chaining@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.3) dev: false - /@babel/plugin-transform-parameters@7.23.3(@babel/core@7.23.7): - resolution: {integrity: sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==} + /@babel/plugin-transform-parameters@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 dev: false - /@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.23.7): - resolution: {integrity: sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==} + /@babel/plugin-transform-private-methods@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-create-class-features-plugin': 7.23.7(@babel/core@7.23.7) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.3) + '@babel/helper-plugin-utils': 7.24.0 dev: false - /@babel/plugin-transform-private-property-in-object@7.23.4(@babel/core@7.23.7): - resolution: {integrity: sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==} + /@babel/plugin-transform-private-property-in-object@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.24.3 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.23.7(@babel/core@7.23.7) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.7) + '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.3) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.3) dev: false - /@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.23.7): - resolution: {integrity: sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==} + /@babel/plugin-transform-property-literals@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 dev: false - /@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.23.7): - resolution: {integrity: sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==} + /@babel/plugin-transform-regenerator@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 regenerator-transform: 0.15.2 dev: false - /@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.23.7): - resolution: {integrity: sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==} + /@babel/plugin-transform-reserved-words@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 dev: false - /@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.23.7): - resolution: {integrity: sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==} + /@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 dev: false - /@babel/plugin-transform-spread@7.23.3(@babel/core@7.23.7): - resolution: {integrity: sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==} + /@babel/plugin-transform-spread@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 dev: false - /@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.23.7): - resolution: {integrity: sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==} + /@babel/plugin-transform-sticky-regex@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 dev: false - /@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.23.7): - resolution: {integrity: sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==} + /@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 dev: false - /@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.23.7): - resolution: {integrity: sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==} + /@babel/plugin-transform-typeof-symbol@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 dev: false - /@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.23.7): - resolution: {integrity: sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==} + /@babel/plugin-transform-unicode-escapes@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 dev: false - /@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.23.7): - resolution: {integrity: sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==} + /@babel/plugin-transform-unicode-property-regex@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.3) + '@babel/helper-plugin-utils': 7.24.0 dev: false - /@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.23.7): - resolution: {integrity: sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==} + /@babel/plugin-transform-unicode-regex@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.3) + '@babel/helper-plugin-utils': 7.24.0 dev: false - /@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.23.7): - resolution: {integrity: sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==} + /@babel/plugin-transform-unicode-sets-regex@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) - '@babel/helper-plugin-utils': 7.22.5 + '@babel/core': 7.24.3 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.3) + '@babel/helper-plugin-utils': 7.24.0 dev: false - /@babel/preset-env@7.23.8(@babel/core@7.23.7): - resolution: {integrity: sha512-lFlpmkApLkEP6woIKprO6DO60RImpatTQKtz4sUcDjVcK8M8mQ4sZsuxaTMNOZf0sqAq/ReYW1ZBHnOQwKpLWA==} + /@babel/preset-env@7.24.3(@babel/core@7.24.3): + resolution: {integrity: sha512-fSk430k5c2ff8536JcPvPWK4tZDwehWLGlBp0wrsBUjZVdeQV6lePbwKWZaZfK2vnh/1kQX1PzAJWsnBmVgGJA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.23.5 - '@babel/core': 7.23.7 + '@babel/compat-data': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.23.7(@babel/core@7.23.7) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.7) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.7) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.7) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.7) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.7) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.7) - '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-syntax-import-attributes': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.7) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.7) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.7) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.7) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.7) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.7) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.7) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.7) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.7) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.7) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.23.7) - '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-async-generator-functions': 7.23.7(@babel/core@7.23.7) - '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.23.7) - '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-class-static-block': 7.23.4(@babel/core@7.23.7) - '@babel/plugin-transform-classes': 7.23.8(@babel/core@7.23.7) - '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-duplicate-keys': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-dynamic-import': 7.23.4(@babel/core@7.23.7) - '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-export-namespace-from': 7.23.4(@babel/core@7.23.7) - '@babel/plugin-transform-for-of': 7.23.6(@babel/core@7.23.7) - '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-json-strings': 7.23.4(@babel/core@7.23.7) - '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-logical-assignment-operators': 7.23.4(@babel/core@7.23.7) - '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-modules-amd': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-modules-systemjs': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-modules-umd': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.7) - '@babel/plugin-transform-new-target': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-nullish-coalescing-operator': 7.23.4(@babel/core@7.23.7) - '@babel/plugin-transform-numeric-separator': 7.23.4(@babel/core@7.23.7) - '@babel/plugin-transform-object-rest-spread': 7.23.4(@babel/core@7.23.7) - '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-optional-catch-binding': 7.23.4(@babel/core@7.23.7) - '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.7) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-private-property-in-object': 7.23.4(@babel/core@7.23.7) - '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-regenerator': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-reserved-words': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-typeof-symbol': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-unicode-escapes': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-unicode-property-regex': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-unicode-sets-regex': 7.23.3(@babel/core@7.23.7) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.23.7) - babel-plugin-polyfill-corejs2: 0.4.7(@babel/core@7.23.7) - babel-plugin-polyfill-corejs3: 0.8.7(@babel/core@7.23.7) - babel-plugin-polyfill-regenerator: 0.5.4(@babel/core@7.23.7) - core-js-compat: 3.35.0 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.3) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.3) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.3) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.3) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-import-assertions': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-syntax-import-attributes': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.3) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.3) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.3) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.3) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.3) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.3) + '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-async-generator-functions': 7.24.3(@babel/core@7.24.3) + '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-block-scoped-functions': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-block-scoping': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-class-static-block': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-classes': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-destructuring': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-dotall-regex': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-duplicate-keys': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-dynamic-import': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-exponentiation-operator': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-export-namespace-from': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-for-of': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-json-strings': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-logical-assignment-operators': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-member-expression-literals': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-modules-amd': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-modules-systemjs': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-modules-umd': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.24.3) + '@babel/plugin-transform-new-target': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-nullish-coalescing-operator': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-numeric-separator': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-object-rest-spread': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-object-super': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-optional-catch-binding': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-optional-chaining': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-private-property-in-object': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-property-literals': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-regenerator': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-reserved-words': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-template-literals': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-typeof-symbol': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-unicode-escapes': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-unicode-property-regex': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-unicode-sets-regex': 7.24.1(@babel/core@7.24.3) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.3) + babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.24.3) + babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.3) + babel-plugin-polyfill-regenerator: 0.6.1(@babel/core@7.24.3) + core-js-compat: 3.36.1 semver: 6.3.1 transitivePeerDependencies: - supports-color dev: false - /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.7): + /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.3): resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} peerDependencies: '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/types': 7.23.6 + '@babel/core': 7.24.3 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/types': 7.24.0 esutils: 2.0.3 dev: false @@ -1321,44 +1325,44 @@ packages: resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} dev: false - /@babel/runtime@7.23.8: - resolution: {integrity: sha512-Y7KbAP984rn1VGMbGqKmBLio9V7y5Je9GvU4rQPCPinCyNfUcToxIXl06d59URp/F3LwinvODxab5N/G6qggkw==} + /@babel/runtime@7.24.1: + resolution: {integrity: sha512-+BIznRzyqBf+2wCTxcKE3wDjfGeCoVE61KSHGpkzqrLi8qxqFwBeUFyId2cxkTmm55fzDGnm0+yCxaxygrLUnQ==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.14.1 - /@babel/template@7.22.15: - resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} + /@babel/template@7.24.0: + resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.23.5 - '@babel/parser': 7.23.6 - '@babel/types': 7.23.6 + '@babel/code-frame': 7.24.2 + '@babel/parser': 7.24.1 + '@babel/types': 7.24.0 dev: false - /@babel/traverse@7.23.7: - resolution: {integrity: sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==} + /@babel/traverse@7.24.1: + resolution: {integrity: sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 + '@babel/code-frame': 7.24.2 + '@babel/generator': 7.24.1 '@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.23.6 - '@babel/types': 7.23.6 + '@babel/parser': 7.24.1 + '@babel/types': 7.24.0 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color dev: false - /@babel/types@7.23.6: - resolution: {integrity: sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==} + /@babel/types@7.24.0: + resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-string-parser': 7.23.4 + '@babel/helper-string-parser': 7.24.1 '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 dev: false @@ -1366,8 +1370,8 @@ packages: /@emotion/babel-plugin@11.11.0: resolution: {integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==} dependencies: - '@babel/helper-module-imports': 7.22.15 - '@babel/runtime': 7.23.8 + '@babel/helper-module-imports': 7.24.3 + '@babel/runtime': 7.24.1 '@emotion/hash': 0.9.1 '@emotion/memoize': 0.8.1 '@emotion/serialize': 1.1.3 @@ -1393,8 +1397,8 @@ packages: resolution: {integrity: sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==} dev: false - /@emotion/is-prop-valid@1.2.1: - resolution: {integrity: sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==} + /@emotion/is-prop-valid@1.2.2: + resolution: {integrity: sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==} dependencies: '@emotion/memoize': 0.8.1 dev: false @@ -1403,8 +1407,8 @@ packages: resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} dev: false - /@emotion/react@11.11.3(@types/react@18.2.48)(react@18.2.0): - resolution: {integrity: sha512-Cnn0kuq4DoONOMcnoVsTOR8E+AdnKFf//6kUWc4LCdnxj31pZWn7rIULd6Y7/Js1PiPHzn7SKCM9vB/jBni8eA==} + /@emotion/react@11.11.4(@types/react@18.2.67)(react@18.2.0): + resolution: {integrity: sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw==} peerDependencies: '@types/react': '*' react: '>=16.8.0' @@ -1412,14 +1416,14 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.24.1 '@emotion/babel-plugin': 11.11.0 '@emotion/cache': 11.11.0 '@emotion/serialize': 1.1.3 '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) '@emotion/utils': 1.2.1 '@emotion/weak-memoize': 0.3.1 - '@types/react': 18.2.48 + '@types/react': 18.2.67 hoist-non-react-statics: 3.3.2 react: 18.2.0 dev: false @@ -1438,7 +1442,7 @@ packages: resolution: {integrity: sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==} dev: false - /@emotion/styled@11.11.0(@emotion/react@11.11.3)(@types/react@18.2.48)(react@18.2.0): + /@emotion/styled@11.11.0(@emotion/react@11.11.4)(@types/react@18.2.67)(react@18.2.0): resolution: {integrity: sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==} peerDependencies: '@emotion/react': ^11.0.0-rc.0 @@ -1448,14 +1452,14 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.24.1 '@emotion/babel-plugin': 11.11.0 - '@emotion/is-prop-valid': 1.2.1 - '@emotion/react': 11.11.3(@types/react@18.2.48)(react@18.2.0) + '@emotion/is-prop-valid': 1.2.2 + '@emotion/react': 11.11.4(@types/react@18.2.67)(react@18.2.0) '@emotion/serialize': 1.1.3 '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) '@emotion/utils': 1.2.1 - '@types/react': 18.2.48 + '@types/react': 18.2.67 react: 18.2.0 dev: false @@ -1677,13 +1681,13 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.56.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.56.0 + eslint: 8.57.0 eslint-visitor-keys: 3.4.3 dev: true @@ -1700,7 +1704,7 @@ packages: debug: 4.3.4 espree: 9.6.1 globals: 13.24.0 - ignore: 5.3.0 + ignore: 5.3.1 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 @@ -1709,31 +1713,31 @@ packages: - supports-color dev: true - /@eslint/js@8.56.0: - resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==} + /@eslint/js@8.57.0: + resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@floating-ui/core@1.5.3: - resolution: {integrity: sha512-O0WKDOo0yhJuugCx6trZQj5jVJ9yR0ystG2JaNAemYUWce+pmM6WUEFIibnWyEJKdrDxhm75NoSRME35FNaM/Q==} + /@floating-ui/core@1.6.0: + resolution: {integrity: sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==} dependencies: '@floating-ui/utils': 0.2.1 dev: false - /@floating-ui/dom@1.5.4: - resolution: {integrity: sha512-jByEsHIY+eEdCjnTVu+E3ephzTOzkQ8hgUfGwos+bg7NlH33Zc5uO+QHz1mrQUOgIKKDD1RtS201P9NvAfq3XQ==} + /@floating-ui/dom@1.6.3: + resolution: {integrity: sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==} dependencies: - '@floating-ui/core': 1.5.3 + '@floating-ui/core': 1.6.0 '@floating-ui/utils': 0.2.1 dev: false - /@floating-ui/react-dom@2.0.6(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-IB8aCRFxr8nFkdYZgH+Otd9EVQPJoynxeFRGTB8voPoZMRWo8XjYuCRgpI1btvuKY69XMiLnW+ym7zoBHM90Rw==} + /@floating-ui/react-dom@2.0.8(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' dependencies: - '@floating-ui/dom': 1.5.4 + '@floating-ui/dom': 1.6.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false @@ -1742,12 +1746,12 @@ packages: resolution: {integrity: sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==} dev: false - /@hookform/resolvers@3.3.4(react-hook-form@7.49.3): + /@hookform/resolvers@3.3.4(react-hook-form@7.51.1): resolution: {integrity: sha512-o5cgpGOuJYrd+iMKvkttOclgwRW86EsWJZZRC23prf0uU2i48Htq4PuT73AVb9ionFyZrwYEITuOFGF+BydEtQ==} peerDependencies: react-hook-form: ^7.0.0 dependencies: - react-hook-form: 7.49.3(react@18.2.0) + react-hook-form: 7.51.1(react@18.2.0) dev: false /@humanwhocodes/config-array@0.11.14: @@ -1770,40 +1774,40 @@ packages: resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} dev: true - /@jridgewell/gen-mapping@0.3.3: - resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + /@jridgewell/gen-mapping@0.3.5: + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} dependencies: - '@jridgewell/set-array': 1.1.2 + '@jridgewell/set-array': 1.2.1 '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.21 + '@jridgewell/trace-mapping': 0.3.25 dev: false - /@jridgewell/resolve-uri@3.1.1: - resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + /@jridgewell/resolve-uri@3.1.2: + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} dev: false - /@jridgewell/set-array@1.1.2: - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + /@jridgewell/set-array@1.2.1: + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} engines: {node: '>=6.0.0'} dev: false - /@jridgewell/source-map@0.3.5: - resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} + /@jridgewell/source-map@0.3.6: + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} dependencies: - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.21 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 dev: false /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} dev: false - /@jridgewell/trace-mapping@0.3.21: - resolution: {integrity: sha512-SRfKmRe1KvYnxjEMtxEr+J4HIeMX5YBg/qhRHpxEIGjhX1rshcHlnFUE9K0GazhVKWM7B+nARSkV8LuvJdJ5/g==} + /@jridgewell/trace-mapping@0.3.25: + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} dependencies: - '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.4.15 dev: false @@ -1815,7 +1819,7 @@ packages: react: 18.2.0 dev: false - /@mui/base@5.0.0-beta.1(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0): + /@mui/base@5.0.0-beta.1(@types/react@18.2.67)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-xrkDCeu3JQE+JjJUnJnOrdQJMXwKhbV4AW+FRjMIj5i9cHK3BAuatG/iqbf1M+jklVWLk0KdbgioKwK+03aYbA==} engines: {node: '>=12.0.0'} peerDependencies: @@ -1826,12 +1830,12 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.23.8 - '@emotion/is-prop-valid': 1.2.1 - '@mui/types': 7.2.13(@types/react@18.2.48) - '@mui/utils': 5.15.4(@types/react@18.2.48)(react@18.2.0) + '@babel/runtime': 7.24.1 + '@emotion/is-prop-valid': 1.2.2 + '@mui/types': 7.2.14(@types/react@18.2.67) + '@mui/utils': 5.15.14(@types/react@18.2.67)(react@18.2.0) '@popperjs/core': 2.11.8 - '@types/react': 18.2.48 + '@types/react': 18.2.67 clsx: 1.2.1 prop-types: 15.8.1 react: 18.2.0 @@ -1839,8 +1843,8 @@ packages: react-is: 18.2.0 dev: false - /@mui/base@5.0.0-beta.31(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-+uNbP3OHJuZVI00WyMg7xfLZotaEY7LgvYXDfONVJbrS+K9wyjCIPNfjy8r9XJn4fbHo/5ibiZqjWnU9LMNv+A==} + /@mui/base@5.0.0-beta.40(@types/react@18.2.67)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-I/lGHztkCzvwlXpjD2+SNmvNQvB4227xBXhISPjEaJUXGImOQ9f3D2Yj/T3KasSI/h0MLWy74X0J6clhPmsRbQ==} engines: {node: '>=12.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 @@ -1850,24 +1854,24 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.23.8 - '@floating-ui/react-dom': 2.0.6(react-dom@18.2.0)(react@18.2.0) - '@mui/types': 7.2.13(@types/react@18.2.48) - '@mui/utils': 5.15.4(@types/react@18.2.48)(react@18.2.0) + '@babel/runtime': 7.24.1 + '@floating-ui/react-dom': 2.0.8(react-dom@18.2.0)(react@18.2.0) + '@mui/types': 7.2.14(@types/react@18.2.67) + '@mui/utils': 5.15.14(@types/react@18.2.67)(react@18.2.0) '@popperjs/core': 2.11.8 - '@types/react': 18.2.48 + '@types/react': 18.2.67 clsx: 2.1.0 prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@mui/core-downloads-tracker@5.15.4: - resolution: {integrity: sha512-0OZN9O6hAtBpx70mMNFOPaAIol/ytwZYPY+z7Rf9dK3+1Xlzwvj5/IeShJKvtp76S1qJyhPuvZg0+BGqQaUnUw==} + /@mui/core-downloads-tracker@5.15.14: + resolution: {integrity: sha512-on75VMd0XqZfaQW+9pGjSNiqW+ghc5E2ZSLRBXwcXl/C4YzjfyjrLPhrEpKnR9Uym9KXBvxrhoHfPcczYHweyA==} dev: false - /@mui/icons-material@5.15.4(@mui/material@5.15.4)(@types/react@18.2.48)(react@18.2.0): - resolution: {integrity: sha512-q/Yk7aokN8qGMpR7bwoDpBSeaNe6Bv7vaY9yHYodP37c64TM6ime05ueb/wgksOVszrKkNXC67E/XYbRWOoUFA==} + /@mui/icons-material@5.15.14(@mui/material@5.15.14)(@types/react@18.2.67)(react@18.2.0): + resolution: {integrity: sha512-vj/51k7MdFmt+XVw94sl30SCvGx6+wJLsNYjZRgxhS6y3UtnWnypMOsm3Kmg8TN+P0dqwsjy4/fX7B1HufJIhw==} engines: {node: '>=12.0.0'} peerDependencies: '@mui/material': ^5.0.0 @@ -1877,13 +1881,13 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.23.8 - '@mui/material': 5.15.4(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.48 + '@babel/runtime': 7.24.1 + '@mui/material': 5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.67)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.67 react: 18.2.0 dev: false - /@mui/lab@5.0.0-alpha.130(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@mui/material@5.15.4)(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0): + /@mui/lab@5.0.0-alpha.130(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@mui/material@5.15.14)(@types/react@18.2.67)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-pBZGIVXCzafvu7nwjfuKA3MhFyXnB4CIexfr8X4qS0GOY0UcDkO5LemWeeBKGXK2IanbQN4toO5mv8kzQIbp9Q==} engines: {node: '>=12.0.0'} peerDependencies: @@ -1901,15 +1905,15 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.23.8 - '@emotion/react': 11.11.3(@types/react@18.2.48)(react@18.2.0) - '@emotion/styled': 11.11.0(@emotion/react@11.11.3)(@types/react@18.2.48)(react@18.2.0) - '@mui/base': 5.0.0-beta.1(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0) - '@mui/material': 5.15.4(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0) - '@mui/system': 5.15.4(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.2.48)(react@18.2.0) - '@mui/types': 7.2.13(@types/react@18.2.48) - '@mui/utils': 5.15.4(@types/react@18.2.48)(react@18.2.0) - '@types/react': 18.2.48 + '@babel/runtime': 7.24.1 + '@emotion/react': 11.11.4(@types/react@18.2.67)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.67)(react@18.2.0) + '@mui/base': 5.0.0-beta.1(@types/react@18.2.67)(react-dom@18.2.0)(react@18.2.0) + '@mui/material': 5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.67)(react-dom@18.2.0)(react@18.2.0) + '@mui/system': 5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.67)(react@18.2.0) + '@mui/types': 7.2.14(@types/react@18.2.67) + '@mui/utils': 5.15.14(@types/react@18.2.67)(react@18.2.0) + '@types/react': 18.2.67 clsx: 1.2.1 prop-types: 15.8.1 react: 18.2.0 @@ -1917,8 +1921,8 @@ packages: react-is: 18.2.0 dev: false - /@mui/material@5.15.4(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-T/LGRAC+M0c+D3+y67eHwIN5bSje0TxbcJCWR0esNvU11T0QwrX3jedXItPNBwMupF2F5VWCDHBVLlFnN3+ABA==} + /@mui/material@5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.67)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-kEbRw6fASdQ1SQ7LVdWR5OlWV3y7Y54ZxkLzd6LV5tmz+NpO3MJKZXSfgR0LHMP7meKsPiMm4AuzV0pXDpk/BQ==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -1934,15 +1938,15 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.23.8 - '@emotion/react': 11.11.3(@types/react@18.2.48)(react@18.2.0) - '@emotion/styled': 11.11.0(@emotion/react@11.11.3)(@types/react@18.2.48)(react@18.2.0) - '@mui/base': 5.0.0-beta.31(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0) - '@mui/core-downloads-tracker': 5.15.4 - '@mui/system': 5.15.4(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.2.48)(react@18.2.0) - '@mui/types': 7.2.13(@types/react@18.2.48) - '@mui/utils': 5.15.4(@types/react@18.2.48)(react@18.2.0) - '@types/react': 18.2.48 + '@babel/runtime': 7.24.1 + '@emotion/react': 11.11.4(@types/react@18.2.67)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.67)(react@18.2.0) + '@mui/base': 5.0.0-beta.40(@types/react@18.2.67)(react-dom@18.2.0)(react@18.2.0) + '@mui/core-downloads-tracker': 5.15.14 + '@mui/system': 5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.67)(react@18.2.0) + '@mui/types': 7.2.14(@types/react@18.2.67) + '@mui/utils': 5.15.14(@types/react@18.2.67)(react@18.2.0) + '@types/react': 18.2.67 '@types/react-transition-group': 4.4.10 clsx: 2.1.0 csstype: 3.1.3 @@ -1953,8 +1957,8 @@ packages: react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0) dev: false - /@mui/private-theming@5.15.4(@types/react@18.2.48)(react@18.2.0): - resolution: {integrity: sha512-9N5myIMEEQTM5WYWPGvvYADzjFo12LgJ7S+2iTZkBNOcJpUxQYM1tvYjkHCDV+t1ocMOEgjR2EfJ9Dus30dBlg==} + /@mui/private-theming@5.15.14(@types/react@18.2.67)(react@18.2.0): + resolution: {integrity: sha512-UH0EiZckOWcxiXLX3Jbb0K7rC8mxTr9L9l6QhOZxYc4r8FHUkefltV9VDGLrzCaWh30SQiJvAEd7djX3XXY6Xw==} engines: {node: '>=12.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 @@ -1963,15 +1967,15 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.23.8 - '@mui/utils': 5.15.4(@types/react@18.2.48)(react@18.2.0) - '@types/react': 18.2.48 + '@babel/runtime': 7.24.1 + '@mui/utils': 5.15.14(@types/react@18.2.67)(react@18.2.0) + '@types/react': 18.2.67 prop-types: 15.8.1 react: 18.2.0 dev: false - /@mui/styled-engine@5.15.4(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(react@18.2.0): - resolution: {integrity: sha512-vtrZUXG5XI8CNiNLcxjIirW4dEbOloR+ikfm6ePBo7jXpJdpXjVzBWetrfE+5eI0cHkKWlTptnJ2voKV8pBRfw==} + /@mui/styled-engine@5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0): + resolution: {integrity: sha512-RILkuVD8gY6PvjZjqnWhz8fu68dVkqhM5+jYWfB5yhlSQKg+2rHkmEwm75XIeAqI3qwOndK6zELK5H6Zxn4NHw==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.4.1 @@ -1983,17 +1987,17 @@ packages: '@emotion/styled': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.24.1 '@emotion/cache': 11.11.0 - '@emotion/react': 11.11.3(@types/react@18.2.48)(react@18.2.0) - '@emotion/styled': 11.11.0(@emotion/react@11.11.3)(@types/react@18.2.48)(react@18.2.0) + '@emotion/react': 11.11.4(@types/react@18.2.67)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.67)(react@18.2.0) csstype: 3.1.3 prop-types: 15.8.1 react: 18.2.0 dev: false - /@mui/system@5.15.4(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.2.48)(react@18.2.0): - resolution: {integrity: sha512-KCwkHajGBXPs2TK1HJjIyab4NDk0cZoBDYN/TTlXVo1qBAmCjY0vjqrlsjeoG+wrwwcezXMLs/e6OGP66fPCog==} + /@mui/system@5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.67)(react@18.2.0): + resolution: {integrity: sha512-auXLXzUaCSSOLqJXmsAaq7P96VPRXg2Rrz6OHNV7lr+kB8lobUF+/N84Vd9C4G/wvCXYPs5TYuuGBRhcGbiBGg==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -2008,33 +2012,33 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.23.8 - '@emotion/react': 11.11.3(@types/react@18.2.48)(react@18.2.0) - '@emotion/styled': 11.11.0(@emotion/react@11.11.3)(@types/react@18.2.48)(react@18.2.0) - '@mui/private-theming': 5.15.4(@types/react@18.2.48)(react@18.2.0) - '@mui/styled-engine': 5.15.4(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(react@18.2.0) - '@mui/types': 7.2.13(@types/react@18.2.48) - '@mui/utils': 5.15.4(@types/react@18.2.48)(react@18.2.0) - '@types/react': 18.2.48 + '@babel/runtime': 7.24.1 + '@emotion/react': 11.11.4(@types/react@18.2.67)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.67)(react@18.2.0) + '@mui/private-theming': 5.15.14(@types/react@18.2.67)(react@18.2.0) + '@mui/styled-engine': 5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(react@18.2.0) + '@mui/types': 7.2.14(@types/react@18.2.67) + '@mui/utils': 5.15.14(@types/react@18.2.67)(react@18.2.0) + '@types/react': 18.2.67 clsx: 2.1.0 csstype: 3.1.3 prop-types: 15.8.1 react: 18.2.0 dev: false - /@mui/types@7.2.13(@types/react@18.2.48): - resolution: {integrity: sha512-qP9OgacN62s+l8rdDhSFRe05HWtLLJ5TGclC9I1+tQngbssu0m2dmFZs+Px53AcOs9fD7TbYd4gc9AXzVqO/+g==} + /@mui/types@7.2.14(@types/react@18.2.67): + resolution: {integrity: sha512-MZsBZ4q4HfzBsywtXgM1Ksj6HDThtiwmOKUXH1pKYISI9gAVXCNHNpo7TlGoGrBaYWZTdNoirIN7JsQcQUjmQQ==} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 peerDependenciesMeta: '@types/react': optional: true dependencies: - '@types/react': 18.2.48 + '@types/react': 18.2.67 dev: false - /@mui/utils@5.15.4(@types/react@18.2.48)(react@18.2.0): - resolution: {integrity: sha512-E2wLQGBcs3VR52CpMRjk46cGscC4cbf3Q2uyHNaAeL36yTTm+aVNbtsTCazXtjOP4BDd8lu6VtlTpVC8Rtl4mg==} + /@mui/utils@5.15.14(@types/react@18.2.67)(react@18.2.0): + resolution: {integrity: sha512-0lF/7Hh/ezDv5X7Pry6enMsbYyGKjADzvHyo3Qrc/SSlTsQ1VkbDMbH0m2t3OR5iIVLwMoxwM7yGd+6FCMtTFA==} engines: {node: '>=12.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 @@ -2043,16 +2047,16 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.24.1 '@types/prop-types': 15.7.11 - '@types/react': 18.2.48 + '@types/react': 18.2.67 prop-types: 15.8.1 react: 18.2.0 react-is: 18.2.0 dev: false - /@mui/x-date-pickers@6.19.0(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@mui/material@5.15.4)(@mui/system@5.15.4)(@types/react@18.2.48)(date-fns@2.30.0)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-/GccT+iFJTKjI6b9b0MWojyRKnizL/VYYAfPnR1q0wSVVXjYv7a1NK0uQlan4JbnovqoQCNVeTOCy/0bUJyD2Q==} + /@mui/x-date-pickers@6.19.8(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@mui/material@5.15.14)(@mui/system@5.15.14)(@types/react@18.2.67)(date-fns@3.6.0)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-6wgc2DoRTR9/mKesku4CVCKr9yYkY3FI2Oy/wshLTs2rFkw2Z10uxXFHBR9ugEtNPNCQv0qqwldElenYI97wsA==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.9.0 @@ -2088,16 +2092,16 @@ packages: moment-jalaali: optional: true dependencies: - '@babel/runtime': 7.23.8 - '@emotion/react': 11.11.3(@types/react@18.2.48)(react@18.2.0) - '@emotion/styled': 11.11.0(@emotion/react@11.11.3)(@types/react@18.2.48)(react@18.2.0) - '@mui/base': 5.0.0-beta.31(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0) - '@mui/material': 5.15.4(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0) - '@mui/system': 5.15.4(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.2.48)(react@18.2.0) - '@mui/utils': 5.15.4(@types/react@18.2.48)(react@18.2.0) + '@babel/runtime': 7.24.1 + '@emotion/react': 11.11.4(@types/react@18.2.67)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.4)(@types/react@18.2.67)(react@18.2.0) + '@mui/base': 5.0.0-beta.40(@types/react@18.2.67)(react-dom@18.2.0)(react@18.2.0) + '@mui/material': 5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.67)(react-dom@18.2.0)(react@18.2.0) + '@mui/system': 5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.67)(react@18.2.0) + '@mui/utils': 5.15.14(@types/react@18.2.67)(react@18.2.0) '@types/react-transition-group': 4.4.10 clsx: 2.1.0 - date-fns: 2.30.0 + date-fns: 3.6.0 prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -2213,14 +2217,14 @@ packages: engines: {node: '>= 8'} dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.16.0 + fastq: 1.17.1 /@popperjs/core@2.11.8: resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} dev: false - /@prisma/client@5.8.1(prisma@5.8.1): - resolution: {integrity: sha512-xQtMPfbIwLlbm0VVIVQY2yqQVOxPwRQhvIp7Z3m2900g1bu/zRHKhYZJQWELqmjl6d8YwBy0K2NvMqh47v1ubw==} + /@prisma/client@5.11.0(prisma@5.11.0): + resolution: {integrity: sha512-SWshvS5FDXvgJKM/a0y9nDC1rqd7KG0Q6ZVzd+U7ZXK5soe73DJxJJgbNBt2GNXOa+ysWB4suTpdK5zfFPhwiw==} engines: {node: '>=16.13'} requiresBuild: true peerDependencies: @@ -2229,37 +2233,37 @@ packages: prisma: optional: true dependencies: - prisma: 5.8.1 + prisma: 5.11.0 dev: false - /@prisma/debug@5.8.1: - resolution: {integrity: sha512-tjuw7eA0Us3T42jx9AmAgL58rzwzpFGYc3R7Y4Ip75EBYrKMBA1YihuWMcBC92ILmjlQ/u3p8VxcIE0hr+fZfg==} + /@prisma/debug@5.11.0: + resolution: {integrity: sha512-N6yYr3AbQqaiUg+OgjkdPp3KPW1vMTAgtKX6+BiB/qB2i1TjLYCrweKcUjzOoRM5BriA4idrkTej9A9QqTfl3A==} - /@prisma/engines-version@5.8.1-1.78caf6feeaed953168c64e15a249c3e9a033ebe2: - resolution: {integrity: sha512-f5C3JM3l9yhGr3cr4FMqWloFaSCpNpMi58Om22rjD2DOz3owci2mFdFXMgnAGazFPKrCbbEhcxdsRfspEYRoFQ==} + /@prisma/engines-version@5.11.0-15.efd2449663b3d73d637ea1fd226bafbcf45b3102: + resolution: {integrity: sha512-WXCuyoymvrS4zLz4wQagSsc3/nE6CHy8znyiMv8RKazKymOMd5o9FP5RGwGHAtgoxd+aB/BWqxuP/Ckfu7/3MA==} - /@prisma/engines@5.8.1: - resolution: {integrity: sha512-TJgYLRrZr56uhqcXO4GmP5be+zjCIHtLDK20Cnfg+o9d905hsN065QOL+3Z0zQAy6YD31Ol4u2kzSfRmbJv/uA==} + /@prisma/engines@5.11.0: + resolution: {integrity: sha512-gbrpQoBTYWXDRqD+iTYMirDlF9MMlQdxskQXbhARhG6A/uFQjB7DZMYocMQLoiZXO/IskfDOZpPoZE8TBQKtEw==} requiresBuild: true dependencies: - '@prisma/debug': 5.8.1 - '@prisma/engines-version': 5.8.1-1.78caf6feeaed953168c64e15a249c3e9a033ebe2 - '@prisma/fetch-engine': 5.8.1 - '@prisma/get-platform': 5.8.1 + '@prisma/debug': 5.11.0 + '@prisma/engines-version': 5.11.0-15.efd2449663b3d73d637ea1fd226bafbcf45b3102 + '@prisma/fetch-engine': 5.11.0 + '@prisma/get-platform': 5.11.0 - /@prisma/fetch-engine@5.8.1: - resolution: {integrity: sha512-+bgjjoSFa6uYEbAPlklfoVSStOEfcpheOjoBoNsNNSQdSzcwE2nM4Q0prun0+P8/0sCHo18JZ9xqa8gObvgOUw==} + /@prisma/fetch-engine@5.11.0: + resolution: {integrity: sha512-994viazmHTJ1ymzvWugXod7dZ42T2ROeFuH6zHPcUfp/69+6cl5r9u3NFb6bW8lLdNjwLYEVPeu3hWzxpZeC0w==} dependencies: - '@prisma/debug': 5.8.1 - '@prisma/engines-version': 5.8.1-1.78caf6feeaed953168c64e15a249c3e9a033ebe2 - '@prisma/get-platform': 5.8.1 + '@prisma/debug': 5.11.0 + '@prisma/engines-version': 5.11.0-15.efd2449663b3d73d637ea1fd226bafbcf45b3102 + '@prisma/get-platform': 5.11.0 - /@prisma/get-platform@5.8.1: - resolution: {integrity: sha512-wnA+6HTFcY+tkykMokix9GiAkaauPC5W/gg0O5JB0J8tCTNWrqpnQ7AsaGRfkYUbeOIioh6woDjQrGTTRf1Zag==} + /@prisma/get-platform@5.11.0: + resolution: {integrity: sha512-rxtHpMLxNTHxqWuGOLzR2QOyQi79rK1u1XYAVLZxDGTLz/A+uoDnjz9veBFlicrpWjwuieM4N6jcnjj/DDoidw==} dependencies: - '@prisma/debug': 5.8.1 + '@prisma/debug': 5.11.0 - /@rollup/plugin-babel@5.3.1(@babel/core@7.23.7)(rollup@2.79.1): + /@rollup/plugin-babel@5.3.1(@babel/core@7.24.3)(rollup@2.79.1): resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} engines: {node: '>= 10.0.0'} peerDependencies: @@ -2270,8 +2274,8 @@ packages: '@types/babel__core': optional: true dependencies: - '@babel/core': 7.23.7 - '@babel/helper-module-imports': 7.22.15 + '@babel/core': 7.24.3 + '@babel/helper-module-imports': 7.24.3 '@rollup/pluginutils': 3.1.0(rollup@2.79.1) rollup: 2.79.1 dev: false @@ -2313,8 +2317,8 @@ packages: rollup: 2.79.1 dev: false - /@rushstack/eslint-patch@1.6.1: - resolution: {integrity: sha512-UY+FGM/2jjMkzQLn8pxcHGMaVLh9aEitG3zY2CiY7XHdLiz3bZOwa6oDxNqEMv7zZkV+cj5DOdz0cQ1BP5Hjgw==} + /@rushstack/eslint-patch@1.8.0: + resolution: {integrity: sha512-0HejFckBN2W+ucM6cUOlwsByTKt9/+0tWhqUffNIcHqCXkthY/mZ7AuYPK/2IIaGWhdl0h+tICDO0ssLMd6XMQ==} dev: true /@surma/rollup-plugin-off-main-thread@2.2.3: @@ -2323,7 +2327,7 @@ packages: ejs: 3.1.9 json5: 2.2.3 magic-string: 0.25.9 - string.prototype.matchall: 4.0.10 + string.prototype.matchall: 4.0.11 dev: false /@swc/helpers@0.5.1: @@ -2354,52 +2358,52 @@ packages: use-sync-external-store: 1.2.0(react@18.2.0) dev: false - /@trpc/client@10.45.0(@trpc/server@10.45.0): - resolution: {integrity: sha512-m091R1qte9rvkvL8N1e/mzrbb8S4gb+Q4ZNJnEGDgd7kic/6a8DFgSciBTiCoSp0YwOTVhyQzSrrA/sZI6PhBg==} + /@trpc/client@10.45.2(@trpc/server@10.45.2): + resolution: {integrity: sha512-ykALM5kYWTLn1zYuUOZ2cPWlVfrXhc18HzBDyRhoPYN0jey4iQHEFSEowfnhg1RvYnrAVjNBgHNeSAXjrDbGwg==} peerDependencies: - '@trpc/server': 10.45.0 + '@trpc/server': 10.45.2 dependencies: - '@trpc/server': 10.45.0 + '@trpc/server': 10.45.2 dev: false - /@trpc/next@10.45.0(@tanstack/react-query@4.36.1)(@trpc/client@10.45.0)(@trpc/react-query@10.45.0)(@trpc/server@10.45.0)(next@13.4.1)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-saXajAb5GBpos9BNEtq/BeTOxmM4oCP3kyuGlMopNtHoacr71xHCItFnLsPWffM4DVW88uOXCFWaOtpOs5ThBw==} + /@trpc/next@10.45.2(@tanstack/react-query@4.36.1)(@trpc/client@10.45.2)(@trpc/react-query@10.45.2)(@trpc/server@10.45.2)(next@13.4.1)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-RSORmfC+/nXdmRY1pQ0AalsVgSzwNAFbZLYHiTvPM5QQ8wmMEHilseCYMXpu0se/TbPt9zVR6Ka2d7O6zxKkXg==} peerDependencies: '@tanstack/react-query': ^4.18.0 - '@trpc/client': 10.45.0 - '@trpc/react-query': 10.45.0 - '@trpc/server': 10.45.0 + '@trpc/client': 10.45.2 + '@trpc/react-query': 10.45.2 + '@trpc/server': 10.45.2 next: '*' react: '>=16.8.0' react-dom: '>=16.8.0' dependencies: '@tanstack/react-query': 4.36.1(react-dom@18.2.0)(react@18.2.0) - '@trpc/client': 10.45.0(@trpc/server@10.45.0) - '@trpc/react-query': 10.45.0(@tanstack/react-query@4.36.1)(@trpc/client@10.45.0)(@trpc/server@10.45.0)(react-dom@18.2.0)(react@18.2.0) - '@trpc/server': 10.45.0 - next: 13.4.1(@babel/core@7.23.7)(react-dom@18.2.0)(react@18.2.0) + '@trpc/client': 10.45.2(@trpc/server@10.45.2) + '@trpc/react-query': 10.45.2(@tanstack/react-query@4.36.1)(@trpc/client@10.45.2)(@trpc/server@10.45.2)(react-dom@18.2.0)(react@18.2.0) + '@trpc/server': 10.45.2 + next: 13.4.1(@babel/core@7.24.3)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@trpc/react-query@10.45.0(@tanstack/react-query@4.36.1)(@trpc/client@10.45.0)(@trpc/server@10.45.0)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-MMc2pLwoaLZVwvLQyzJv3uEmdG3lORhifhVzR/drtavwDYwt+OEvH0w3s1zC7RaDdFpc6Nj2kkpHmdoU7BlAAw==} + /@trpc/react-query@10.45.2(@tanstack/react-query@4.36.1)(@trpc/client@10.45.2)(@trpc/server@10.45.2)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-BAqb9bGZIscroradlNx+Cc9522R+idY3BOSf5z0jHUtkxdMbjeGKxSSMxxu7JzoLqSIEC+LVzL3VvF8sdDWaZQ==} peerDependencies: '@tanstack/react-query': ^4.18.0 - '@trpc/client': 10.45.0 - '@trpc/server': 10.45.0 + '@trpc/client': 10.45.2 + '@trpc/server': 10.45.2 react: '>=16.8.0' react-dom: '>=16.8.0' dependencies: '@tanstack/react-query': 4.36.1(react-dom@18.2.0)(react@18.2.0) - '@trpc/client': 10.45.0(@trpc/server@10.45.0) - '@trpc/server': 10.45.0 + '@trpc/client': 10.45.2(@trpc/server@10.45.2) + '@trpc/server': 10.45.2 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@trpc/server@10.45.0: - resolution: {integrity: sha512-2Fwzv6nqpE0Ie/G7PeS0EVR89zLm+c1Mw7T+RAGtU807j4oaUx0zGkBXTu5u9AI+j+BYNN2GZxJcuDTAecbr1A==} + /@trpc/server@10.45.2: + resolution: {integrity: sha512-wOrSThNNE4HUnuhJG6PfDRp4L2009KDVxsd+2VYH8ro6o/7/jwYZ8Uu5j+VaW+mOmc8EHerHzGcdbGNQSAUPgg==} dev: false /@types/cookie@0.3.3: @@ -2409,12 +2413,12 @@ packages: /@types/eslint-scope@3.7.7: resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} dependencies: - '@types/eslint': 8.56.2 + '@types/eslint': 8.56.6 '@types/estree': 1.0.5 dev: false - /@types/eslint@8.56.2: - resolution: {integrity: sha512-uQDwm1wFHmbBbCZCqAlq6Do9LYwByNZHWzXppSnay9SuwJ+VRbjkbLABer54kcPnMSlG6Fdiy2yaFXm/z9Z5gw==} + /@types/eslint@8.56.6: + resolution: {integrity: sha512-ymwc+qb1XkjT/gfoQwxIeHZ6ixH23A+tCT2ADSA/DPVKzAjwYkTXBMCQ/f6fe4wEa85Lhp26VPeUxI7wMhAi7A==} dependencies: '@types/estree': 1.0.5 '@types/json-schema': 7.0.15 @@ -2432,13 +2436,13 @@ packages: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.11.4 + '@types/node': 20.11.30 dev: false /@types/hoist-non-react-statics@3.3.5: resolution: {integrity: sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==} dependencies: - '@types/react': 18.2.48 + '@types/react': 18.2.67 hoist-non-react-statics: 3.3.2 dev: false @@ -2449,16 +2453,16 @@ packages: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true - /@types/lodash@4.14.202: - resolution: {integrity: sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==} + /@types/lodash@4.17.0: + resolution: {integrity: sha512-t7dhREVv6dbNj0q17X12j7yDG4bD/DHYX7o5/DbDxobP0HnGPgpRz2Ej77aL7TZT3DSw13fqUTj8J4mMnqa7WA==} dev: true /@types/minimatch@5.1.2: resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} dev: false - /@types/node@20.11.4: - resolution: {integrity: sha512-6I0fMH8Aoy2lOejL3s4LhyIYX34DPwY8bl5xlNjBvUEk8OHrcuzsFt+Ied4LvJihbtXPM+8zUqdydfIti86v9g==} + /@types/node@20.11.30: + resolution: {integrity: sha512-dHM6ZxwlmuZaRmUPfv1p+KrdD1Dci04FbdEm/9wEMouFqxYoFl5aMkt0VMAUtYRQDyYvD41WJLukhq/ha3YuTw==} dependencies: undici-types: 5.26.5 @@ -2469,20 +2473,20 @@ packages: /@types/prop-types@15.7.11: resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} - /@types/react-dom@18.2.18: - resolution: {integrity: sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==} + /@types/react-dom@18.2.22: + resolution: {integrity: sha512-fHkBXPeNtfvri6gdsMYyW+dW7RXFo6Ad09nLFK0VQWR7yGLai/Cyvyj696gbwYvBnhGtevUG9cET0pmUbMtoPQ==} dependencies: - '@types/react': 18.2.48 + '@types/react': 18.2.67 dev: true /@types/react-transition-group@4.4.10: resolution: {integrity: sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==} dependencies: - '@types/react': 18.2.48 + '@types/react': 18.2.67 dev: false - /@types/react@18.2.48: - resolution: {integrity: sha512-qboRCl6Ie70DQQG9hhNREz81jqC1cs9EVNcjQ1AU+jH6NFfSAhVVbrrY/+nSF+Bsk4AOwm9Qa61InvMCyV+H3w==} + /@types/react@18.2.67: + resolution: {integrity: sha512-vkIE2vTIMHQ/xL0rgmuoECBCkZFZeHr49HeWSc24AptMbNRo7pwSBvj73rlJJs9fGKj0koS+V7kQB1jHS0uCgw==} dependencies: '@types/prop-types': 15.7.11 '@types/scheduler': 0.16.8 @@ -2491,21 +2495,21 @@ packages: /@types/resolve@1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} dependencies: - '@types/node': 20.11.4 + '@types/node': 20.11.30 dev: false /@types/scheduler@0.16.8: resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==} - /@types/semver@7.5.6: - resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==} + /@types/semver@7.5.8: + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} dev: true /@types/trusted-types@2.0.7: resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} dev: false - /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.56.0)(typescript@5.3.3): + /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.0)(typescript@5.4.2): resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -2517,23 +2521,23 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 5.62.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.4.2) '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/type-utils': 5.62.0(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/utils': 5.62.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.0)(typescript@5.4.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.4.2) debug: 4.3.4 - eslint: 8.56.0 + eslint: 8.57.0 graphemer: 1.4.0 - ignore: 5.3.0 + ignore: 5.3.1 natural-compare-lite: 1.4.0 - semver: 7.5.4 - tsutils: 3.21.0(typescript@5.3.3) - typescript: 5.3.3 + semver: 7.6.0 + tsutils: 3.21.0(typescript@5.4.2) + typescript: 5.4.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@5.3.3): + /@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.2): resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -2545,10 +2549,10 @@ packages: dependencies: '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.3) + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.2) debug: 4.3.4 - eslint: 8.56.0 - typescript: 5.3.3 + eslint: 8.57.0 + typescript: 5.4.2 transitivePeerDependencies: - supports-color dev: true @@ -2561,7 +2565,7 @@ packages: '@typescript-eslint/visitor-keys': 5.62.0 dev: true - /@typescript-eslint/type-utils@5.62.0(eslint@8.56.0)(typescript@5.3.3): + /@typescript-eslint/type-utils@5.62.0(eslint@8.57.0)(typescript@5.4.2): resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -2571,12 +2575,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.3) - '@typescript-eslint/utils': 5.62.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.4.2) debug: 4.3.4 - eslint: 8.56.0 - tsutils: 3.21.0(typescript@5.3.3) - typescript: 5.3.3 + eslint: 8.57.0 + tsutils: 3.21.0(typescript@5.4.2) + typescript: 5.4.2 transitivePeerDependencies: - supports-color dev: true @@ -2586,7 +2590,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree@5.62.0(typescript@5.3.3): + /@typescript-eslint/typescript-estree@5.62.0(typescript@5.4.2): resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -2600,28 +2604,28 @@ packages: debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.5.4 - tsutils: 3.21.0(typescript@5.3.3) - typescript: 5.3.3 + semver: 7.6.0 + tsutils: 3.21.0(typescript@5.4.2) + typescript: 5.4.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@5.62.0(eslint@8.56.0)(typescript@5.3.3): + /@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@5.4.2): resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@types/json-schema': 7.0.15 - '@types/semver': 7.5.6 + '@types/semver': 7.5.8 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.3) - eslint: 8.56.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.2) + eslint: 8.57.0 eslint-scope: 5.1.1 - semver: 7.5.4 + semver: 7.6.0 transitivePeerDependencies: - supports-color - typescript @@ -2639,8 +2643,8 @@ packages: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} dev: true - /@webassemblyjs/ast@1.11.6: - resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} + /@webassemblyjs/ast@1.12.1: + resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==} dependencies: '@webassemblyjs/helper-numbers': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 @@ -2654,8 +2658,8 @@ packages: resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} dev: false - /@webassemblyjs/helper-buffer@1.11.6: - resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} + /@webassemblyjs/helper-buffer@1.12.1: + resolution: {integrity: sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==} dev: false /@webassemblyjs/helper-numbers@1.11.6: @@ -2670,13 +2674,13 @@ packages: resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} dev: false - /@webassemblyjs/helper-wasm-section@1.11.6: - resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} + /@webassemblyjs/helper-wasm-section@1.12.1: + resolution: {integrity: sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==} dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/wasm-gen': 1.11.6 + '@webassemblyjs/wasm-gen': 1.12.1 dev: false /@webassemblyjs/ieee754@1.11.6: @@ -2695,42 +2699,42 @@ packages: resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} dev: false - /@webassemblyjs/wasm-edit@1.11.6: - resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} + /@webassemblyjs/wasm-edit@1.12.1: + resolution: {integrity: sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==} dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/helper-wasm-section': 1.11.6 - '@webassemblyjs/wasm-gen': 1.11.6 - '@webassemblyjs/wasm-opt': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 - '@webassemblyjs/wast-printer': 1.11.6 + '@webassemblyjs/helper-wasm-section': 1.12.1 + '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/wasm-opt': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + '@webassemblyjs/wast-printer': 1.12.1 dev: false - /@webassemblyjs/wasm-gen@1.11.6: - resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} + /@webassemblyjs/wasm-gen@1.12.1: + resolution: {integrity: sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==} dependencies: - '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/ast': 1.12.1 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 '@webassemblyjs/ieee754': 1.11.6 '@webassemblyjs/leb128': 1.11.6 '@webassemblyjs/utf8': 1.11.6 dev: false - /@webassemblyjs/wasm-opt@1.11.6: - resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} + /@webassemblyjs/wasm-opt@1.12.1: + resolution: {integrity: sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==} dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-buffer': 1.11.6 - '@webassemblyjs/wasm-gen': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 dev: false - /@webassemblyjs/wasm-parser@1.11.6: - resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} + /@webassemblyjs/wasm-parser@1.12.1: + resolution: {integrity: sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==} dependencies: - '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/ast': 1.12.1 '@webassemblyjs/helper-api-error': 1.11.6 '@webassemblyjs/helper-wasm-bytecode': 1.11.6 '@webassemblyjs/ieee754': 1.11.6 @@ -2738,10 +2742,10 @@ packages: '@webassemblyjs/utf8': 1.11.6 dev: false - /@webassemblyjs/wast-printer@1.11.6: - resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} + /@webassemblyjs/wast-printer@1.12.1: + resolution: {integrity: sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==} dependencies: - '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/ast': 1.12.1 '@xtuc/long': 4.2.2 dev: false @@ -2844,20 +2848,21 @@ packages: dequal: 2.0.3 dev: true - /array-buffer-byte-length@1.0.0: - resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + /array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - is-array-buffer: 3.0.2 + call-bind: 1.0.7 + is-array-buffer: 3.0.4 /array-includes@3.1.7: resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.2 + es-abstract: 1.22.5 + get-intrinsic: 1.2.4 is-string: 1.0.7 dev: true @@ -2877,24 +2882,37 @@ packages: engines: {node: '>=0.10.0'} dev: false - /array.prototype.findlastindex@1.2.3: - resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} + /array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.2 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-shim-unscopables: 1.0.2 + dev: true + + /array.prototype.findlastindex@1.2.5: + resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.2 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 es-shim-unscopables: 1.0.2 - get-intrinsic: 1.2.2 dev: true /array.prototype.flat@1.3.2: resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.22.5 es-shim-unscopables: 1.0.2 dev: true @@ -2902,33 +2920,43 @@ packages: resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.22.5 + es-shim-unscopables: 1.0.2 + dev: true + + /array.prototype.toreversed@1.1.2: + resolution: {integrity: sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==} + dependencies: + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.22.5 es-shim-unscopables: 1.0.2 dev: true - /array.prototype.tosorted@1.1.2: - resolution: {integrity: sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==} + /array.prototype.tosorted@1.1.3: + resolution: {integrity: sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.22.5 + es-errors: 1.3.0 es-shim-unscopables: 1.0.2 - get-intrinsic: 1.2.2 dev: true - /arraybuffer.prototype.slice@1.0.2: - resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} + /arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} engines: {node: '>= 0.4'} dependencies: - array-buffer-byte-length: 1.0.0 - call-bind: 1.0.5 + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.2 - is-array-buffer: 3.0.2 - is-shared-array-buffer: 1.0.2 + es-abstract: 1.22.5 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + is-array-buffer: 3.0.4 + is-shared-array-buffer: 1.0.3 /ast-types-flow@0.0.8: resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} @@ -2938,20 +2966,16 @@ packages: resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} dev: false - /asynciterator.prototype@1.0.0: - resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} - dependencies: - has-symbols: 1.0.3 - dev: true - /at-least-node@1.0.0: resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} engines: {node: '>= 4.0.0'} dev: false - /available-typed-arrays@1.0.5: - resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + /available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} + dependencies: + possible-typed-array-names: 1.0.0 /axe-core@4.7.0: resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} @@ -2964,62 +2988,62 @@ packages: dequal: 2.0.3 dev: true - /babel-loader@8.3.0(@babel/core@7.23.7)(webpack@5.89.0): + /babel-loader@8.3.0(@babel/core@7.24.3)(webpack@5.90.3): resolution: {integrity: sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==} engines: {node: '>= 8.9'} peerDependencies: '@babel/core': ^7.0.0 webpack: '>=2' dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.24.3 find-cache-dir: 3.3.2 loader-utils: 2.0.4 make-dir: 3.1.0 schema-utils: 2.7.1 - webpack: 5.89.0 + webpack: 5.90.3 dev: false /babel-plugin-macros@3.1.0: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} engines: {node: '>=10', npm: '>=6'} dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.24.1 cosmiconfig: 7.1.0 resolve: 1.22.8 dev: false - /babel-plugin-polyfill-corejs2@0.4.7(@babel/core@7.23.7): - resolution: {integrity: sha512-LidDk/tEGDfuHW2DWh/Hgo4rmnw3cduK6ZkOI1NPFceSK3n/yAGeOsNT7FLnSGHkXj3RHGSEVkN3FsCTY6w2CQ==} + /babel-plugin-polyfill-corejs2@0.4.10(@babel/core@7.24.3): + resolution: {integrity: sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/compat-data': 7.23.5 - '@babel/core': 7.23.7 - '@babel/helper-define-polyfill-provider': 0.4.4(@babel/core@7.23.7) + '@babel/compat-data': 7.24.1 + '@babel/core': 7.24.3 + '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.3) semver: 6.3.1 transitivePeerDependencies: - supports-color dev: false - /babel-plugin-polyfill-corejs3@0.8.7(@babel/core@7.23.7): - resolution: {integrity: sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA==} + /babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.24.3): + resolution: {integrity: sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-define-polyfill-provider': 0.4.4(@babel/core@7.23.7) - core-js-compat: 3.35.0 + '@babel/core': 7.24.3 + '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.3) + core-js-compat: 3.36.1 transitivePeerDependencies: - supports-color dev: false - /babel-plugin-polyfill-regenerator@0.5.4(@babel/core@7.23.7): - resolution: {integrity: sha512-S/x2iOCvDaCASLYsOOgWOq4bCfKYVqvO/uxjkaYyZ3rVsVE3CeAI/c84NpyuBBymEgNvHgjEot3a9/Z/kXvqsg==} + /babel-plugin-polyfill-regenerator@0.6.1(@babel/core@7.24.3): + resolution: {integrity: sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.7 - '@babel/helper-define-polyfill-provider': 0.4.4(@babel/core@7.23.7) + '@babel/core': 7.24.3 + '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.3) transitivePeerDependencies: - supports-color dev: false @@ -3049,15 +3073,15 @@ packages: dependencies: fill-range: 7.0.1 - /browserslist@4.22.2: - resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} + /browserslist@4.23.0: + resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001577 - electron-to-chromium: 1.4.632 + caniuse-lite: 1.0.30001599 + electron-to-chromium: 1.4.711 node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.22.2) + update-browserslist-db: 1.0.13(browserslist@4.23.0) dev: false /buffer-from@1.1.2: @@ -3075,19 +3099,22 @@ packages: streamsearch: 1.1.0 dev: false - /call-bind@1.0.5: - resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} + /call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.2 - set-function-length: 1.2.0 + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - /caniuse-lite@1.0.30001577: - resolution: {integrity: sha512-rs2ZygrG1PNXMfmncM0B5H1hndY5ZCC9b5TkFaVNfZ+AUlyqcMyVIQtc3fsezi0NUCk5XZfDf9WS6WxMxnfdrg==} + /caniuse-lite@1.0.30001599: + resolution: {integrity: sha512-LRAQHZ4yT1+f9LemSMeqdMpMxZcc4RMWdj4tiFe3G8tNkWK+E58g+/tzotb5cU6TbcVJLr4fySiAW7XmxQvZQA==} dev: false /chalk@2.4.2: @@ -3116,14 +3143,14 @@ packages: engines: {node: '>=6.0'} dev: false - /clean-webpack-plugin@4.0.0(webpack@5.89.0): + /clean-webpack-plugin@4.0.0(webpack@5.90.3): resolution: {integrity: sha512-WuWE1nyTNAyW5T7oNyys2EN0cfP2fdRxhxnIQWiAp0bMabPdHhoGxM8A6YL2GhqwgrPnnaemVE7nv5XJ2Fhh2w==} engines: {node: '>=10.0.0'} peerDependencies: webpack: '>=4.0.0 <6.0.0' dependencies: del: 4.1.1 - webpack: 5.89.0 + webpack: 5.90.3 dev: false /cli-cursor@4.0.0: @@ -3219,10 +3246,10 @@ packages: is-what: 4.1.16 dev: false - /core-js-compat@3.35.0: - resolution: {integrity: sha512-5blwFAddknKeNgsjBzilkdQ0+YK8L1PfqPYq40NOYMYFSS38qj+hpTcLLWwpIwA2A5bje/x5jmVn2tzUMg9IVw==} + /core-js-compat@3.36.1: + resolution: {integrity: sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA==} dependencies: - browserslist: 4.22.2 + browserslist: 4.23.0 dev: false /cosmiconfig@7.1.0: @@ -3257,11 +3284,32 @@ packages: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} dev: true - /date-fns@2.30.0: - resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} - engines: {node: '>=0.11'} + /data-view-buffer@1.0.1: + resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + /data-view-byte-length@1.0.1: + resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + engines: {node: '>= 0.4'} dependencies: - '@babel/runtime': 7.23.8 + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + /data-view-byte-offset@1.0.0: + resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + /date-fns@3.6.0: + resolution: {integrity: sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==} dev: false /debug@3.2.7: @@ -3295,20 +3343,20 @@ packages: engines: {node: '>=0.10.0'} dev: false - /define-data-property@1.1.1: - resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} + /define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.2 + es-define-property: 1.0.0 + es-errors: 1.3.0 gopd: 1.0.1 - has-property-descriptors: 1.0.1 /define-properties@1.2.1: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} dependencies: - define-data-property: 1.1.1 - has-property-descriptors: 1.0.1 + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 object-keys: 1.1.1 /del@4.1.1: @@ -3352,7 +3400,7 @@ packages: /dom-helpers@5.2.1: resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.24.1 csstype: 3.1.3 dev: false @@ -3374,8 +3422,8 @@ packages: jake: 10.8.7 dev: false - /electron-to-chromium@1.4.632: - resolution: {integrity: sha512-JGmudTwg7yxMYvR/gWbalqqQiyu7WTFv2Xu3vw4cJHXPFxNgAk0oy8UHaer8nLF4lZJa+rNoj6GsrKIVJTV6Tw==} + /electron-to-chromium@1.4.711: + resolution: {integrity: sha512-hRg81qzvUEibX2lDxnFlVCHACa+LtrCPIsWAxo161LDYIB3jauf57RGsMZV9mvGwE98yGH06icj3zBEoOkxd/w==} dev: false /emoji-regex@9.2.2: @@ -3387,8 +3435,8 @@ packages: engines: {node: '>= 4'} dev: false - /enhanced-resolve@5.15.0: - resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} + /enhanced-resolve@5.16.0: + resolution: {integrity: sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==} engines: {node: '>=10.13.0'} dependencies: graceful-fs: 4.2.11 @@ -3400,85 +3448,155 @@ packages: is-arrayish: 0.2.1 dev: false - /es-abstract@1.22.3: - resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} + /es-abstract@1.22.5: + resolution: {integrity: sha512-oW69R+4q2wG+Hc3KZePPZxOiisRIqfKBVo/HLx94QcJeWGU/8sZhCvc829rd1kS366vlJbzBfXf9yWwf0+Ko7w==} engines: {node: '>= 0.4'} dependencies: - array-buffer-byte-length: 1.0.0 - arraybuffer.prototype.slice: 1.0.2 - available-typed-arrays: 1.0.5 - call-bind: 1.0.5 - es-set-tostringtag: 2.0.2 + array-buffer-byte-length: 1.0.1 + arraybuffer.prototype.slice: 1.0.3 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + es-define-property: 1.0.0 + es-errors: 1.3.0 + es-set-tostringtag: 2.0.3 es-to-primitive: 1.2.1 function.prototype.name: 1.1.6 - get-intrinsic: 1.2.2 - get-symbol-description: 1.0.0 + get-intrinsic: 1.2.4 + get-symbol-description: 1.0.2 globalthis: 1.0.3 gopd: 1.0.1 - has-property-descriptors: 1.0.1 - has-proto: 1.0.1 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 has-symbols: 1.0.3 - hasown: 2.0.0 - internal-slot: 1.0.6 - is-array-buffer: 3.0.2 + hasown: 2.0.2 + internal-slot: 1.0.7 + is-array-buffer: 3.0.4 is-callable: 1.2.7 - is-negative-zero: 2.0.2 + is-negative-zero: 2.0.3 is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 + is-shared-array-buffer: 1.0.3 is-string: 1.0.7 - is-typed-array: 1.1.12 + is-typed-array: 1.1.13 is-weakref: 1.0.2 object-inspect: 1.13.1 object-keys: 1.1.1 object.assign: 4.1.5 - regexp.prototype.flags: 1.5.1 - safe-array-concat: 1.1.0 - safe-regex-test: 1.0.2 - string.prototype.trim: 1.2.8 - string.prototype.trimend: 1.0.7 + regexp.prototype.flags: 1.5.2 + safe-array-concat: 1.1.2 + safe-regex-test: 1.0.3 + string.prototype.trim: 1.2.9 + string.prototype.trimend: 1.0.8 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 + typed-array-buffer: 1.0.2 + typed-array-byte-length: 1.0.1 + typed-array-byte-offset: 1.0.2 + typed-array-length: 1.0.5 unbox-primitive: 1.0.2 - which-typed-array: 1.1.13 + which-typed-array: 1.1.15 - /es-iterator-helpers@1.0.15: - resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} + /es-abstract@1.23.2: + resolution: {integrity: sha512-60s3Xv2T2p1ICykc7c+DNDPLDMm9t4QxCOUU0K9JxiLjM3C1zB9YVdN7tjxrFd4+AkZ8CdX1ovUga4P2+1e+/w==} + engines: {node: '>= 0.4'} dependencies: - asynciterator.prototype: 1.0.0 - call-bind: 1.0.5 + array-buffer-byte-length: 1.0.1 + arraybuffer.prototype.slice: 1.0.3 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + data-view-buffer: 1.0.1 + data-view-byte-length: 1.0.1 + data-view-byte-offset: 1.0.0 + es-define-property: 1.0.0 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-set-tostringtag: 2.0.3 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.4 + get-symbol-description: 1.0.2 + globalthis: 1.0.3 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + internal-slot: 1.0.7 + is-array-buffer: 3.0.4 + is-callable: 1.2.7 + is-data-view: 1.0.1 + is-negative-zero: 2.0.3 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.3 + is-string: 1.0.7 + is-typed-array: 1.1.13 + is-weakref: 1.0.2 + object-inspect: 1.13.1 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.2 + safe-array-concat: 1.1.2 + safe-regex-test: 1.0.3 + string.prototype.trim: 1.2.9 + string.prototype.trimend: 1.0.8 + string.prototype.trimstart: 1.0.7 + typed-array-buffer: 1.0.2 + typed-array-byte-length: 1.0.1 + typed-array-byte-offset: 1.0.2 + typed-array-length: 1.0.5 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.15 + + /es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 + + /es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + /es-iterator-helpers@1.0.18: + resolution: {integrity: sha512-scxAJaewsahbqTYrGKJihhViaM6DDZDDoucfvzNbK0pOren1g/daDQ3IAhzn+1G14rBG7w+i5N+qul60++zlKA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 - es-set-tostringtag: 2.0.2 + es-abstract: 1.23.2 + es-errors: 1.3.0 + es-set-tostringtag: 2.0.3 function-bind: 1.1.2 - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 globalthis: 1.0.3 - has-property-descriptors: 1.0.1 - has-proto: 1.0.1 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 has-symbols: 1.0.3 - internal-slot: 1.0.6 + internal-slot: 1.0.7 iterator.prototype: 1.1.2 - safe-array-concat: 1.1.0 + safe-array-concat: 1.1.2 dev: true - /es-module-lexer@1.4.1: - resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} + /es-module-lexer@1.4.2: + resolution: {integrity: sha512-7nOqkomXZEaxUDJw21XZNtRk739QvrPSoZoRtbsEfcii00vdzZUh6zh1CQwHhrib8MdEtJfv5rJiGeb4KuV/vw==} dev: false - /es-set-tostringtag@2.0.2: - resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} + /es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + + /es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.2 - has-tostringtag: 1.0.0 - hasown: 2.0.0 + get-intrinsic: 1.2.4 + has-tostringtag: 1.0.2 + hasown: 2.0.2 /es-shim-unscopables@1.0.2: resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} dependencies: - hasown: 2.0.0 + hasown: 2.0.2 dev: true /es-to-primitive@1.2.1: @@ -3519,8 +3637,8 @@ packages: '@esbuild/win32-x64': 0.18.20 dev: true - /escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + /escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} dev: false @@ -3533,7 +3651,7 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - /eslint-config-next@13.5.6(eslint@8.56.0)(typescript@5.3.3): + /eslint-config-next@13.5.6(eslint@8.57.0)(typescript@5.4.2): resolution: {integrity: sha512-o8pQsUHTo9aHqJ2YiZDym5gQAMRf7O2HndHo/JZeY7TDD+W4hk6Ma8Vw54RHiBeb7OWWO5dPirQB+Is/aVQ7Kg==} peerDependencies: eslint: ^7.23.0 || ^8.0.0 @@ -3543,28 +3661,28 @@ packages: optional: true dependencies: '@next/eslint-plugin-next': 13.5.6 - '@rushstack/eslint-patch': 1.6.1 - '@typescript-eslint/parser': 5.62.0(eslint@8.56.0)(typescript@5.3.3) - eslint: 8.56.0 + '@rushstack/eslint-patch': 1.8.0 + '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.4.2) + eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.56.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) - eslint-plugin-jsx-a11y: 6.8.0(eslint@8.56.0) - eslint-plugin-react: 7.33.2(eslint@8.56.0) - eslint-plugin-react-hooks: 4.6.0(eslint@8.56.0) - typescript: 5.3.3 + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.0) + eslint-plugin-react: 7.34.1(eslint@8.57.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.57.0) + typescript: 5.4.2 transitivePeerDependencies: - eslint-import-resolver-webpack - supports-color dev: true - /eslint-config-prettier@8.10.0(eslint@8.56.0): + /eslint-config-prettier@8.10.0(eslint@8.57.0): resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.56.0 + eslint: 8.57.0 dev: true /eslint-import-resolver-node@0.3.9: @@ -3577,7 +3695,7 @@ packages: - supports-color dev: true - /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.56.0): + /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0): resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -3585,12 +3703,12 @@ packages: eslint-plugin-import: '*' dependencies: debug: 4.3.4 - enhanced-resolve: 5.15.0 - eslint: 8.56.0 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + enhanced-resolve: 5.16.0 + eslint: 8.57.0 + eslint-module-utils: 2.8.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) fast-glob: 3.3.2 - get-tsconfig: 4.7.2 + get-tsconfig: 4.7.3 is-core-module: 2.13.1 is-glob: 4.0.3 transitivePeerDependencies: @@ -3600,8 +3718,8 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0): - resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + /eslint-module-utils@2.8.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): + resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -3621,24 +3739,24 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.62.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.4.2) debug: 3.2.7 - eslint: 8.56.0 + eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.56.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-css-import-order@1.1.0(eslint@8.56.0): + /eslint-plugin-css-import-order@1.1.0(eslint@8.57.0): resolution: {integrity: sha512-43ODxP1sXpmgI4c+NCtXqmhkLsYGe8El1ewOlvsXKchLjWLxJw5zfp4eEg31Eni+is3jGkBL2TrNyUOOnbOMDg==} peerDependencies: eslint: '>= 6.0.0 < 9.0.0' dependencies: - eslint: 8.56.0 + eslint: 8.57.0 dev: true - /eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0): + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} engines: {node: '>=4'} peerDependencies: @@ -3648,23 +3766,23 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.62.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.4.2) array-includes: 3.1.7 - array.prototype.findlastindex: 1.2.3 + array.prototype.findlastindex: 1.2.5 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.56.0 + eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) - hasown: 2.0.0 + eslint-module-utils: 2.8.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + hasown: 2.0.2 is-core-module: 2.13.1 is-glob: 4.0.3 minimatch: 3.1.2 - object.fromentries: 2.0.7 - object.groupby: 1.0.1 - object.values: 1.1.7 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.0 semver: 6.3.1 tsconfig-paths: 3.15.0 transitivePeerDependencies: @@ -3673,13 +3791,13 @@ packages: - supports-color dev: true - /eslint-plugin-jsx-a11y@6.8.0(eslint@8.56.0): + /eslint-plugin-jsx-a11y@6.8.0(eslint@8.57.0): resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} engines: {node: '>=4.0'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.24.1 aria-query: 5.3.0 array-includes: 3.1.7 array.prototype.flatmap: 1.3.2 @@ -3688,51 +3806,53 @@ packages: axobject-query: 3.2.1 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - es-iterator-helpers: 1.0.15 - eslint: 8.56.0 - hasown: 2.0.0 + es-iterator-helpers: 1.0.18 + eslint: 8.57.0 + hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 minimatch: 3.1.2 - object.entries: 1.1.7 - object.fromentries: 2.0.7 + object.entries: 1.1.8 + object.fromentries: 2.0.8 dev: true - /eslint-plugin-react-hooks@4.6.0(eslint@8.56.0): + /eslint-plugin-react-hooks@4.6.0(eslint@8.57.0): resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - eslint: 8.56.0 + eslint: 8.57.0 dev: true - /eslint-plugin-react@7.33.2(eslint@8.56.0): - resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} + /eslint-plugin-react@7.34.1(eslint@8.57.0): + resolution: {integrity: sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: array-includes: 3.1.7 + array.prototype.findlast: 1.2.5 array.prototype.flatmap: 1.3.2 - array.prototype.tosorted: 1.1.2 + array.prototype.toreversed: 1.1.2 + array.prototype.tosorted: 1.1.3 doctrine: 2.1.0 - es-iterator-helpers: 1.0.15 - eslint: 8.56.0 + es-iterator-helpers: 1.0.18 + eslint: 8.57.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.5 minimatch: 3.1.2 - object.entries: 1.1.7 - object.fromentries: 2.0.7 + object.entries: 1.1.8 + object.fromentries: 2.0.8 object.hasown: 1.1.3 - object.values: 1.1.7 + object.values: 1.2.0 prop-types: 15.8.1 resolve: 2.0.0-next.5 semver: 6.3.1 - string.prototype.matchall: 4.0.10 + string.prototype.matchall: 4.0.11 dev: true - /eslint-plugin-unused-imports@2.0.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.56.0): + /eslint-plugin-unused-imports@2.0.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.57.0): resolution: {integrity: sha512-3APeS/tQlTrFa167ThtP0Zm0vctjr4M44HMpeg1P4bK6wItarumq0Ma82xorMKdFsWpphQBlRPzw/pxiVELX1A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -3742,8 +3862,8 @@ packages: '@typescript-eslint/eslint-plugin': optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.56.0)(typescript@5.3.3) - eslint: 8.56.0 + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.0)(typescript@5.4.2) + eslint: 8.57.0 eslint-rule-composer: 0.3.0 dev: true @@ -3772,15 +3892,15 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.56.0: - resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==} + /eslint@8.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@eslint-community/regexpp': 4.10.0 '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.56.0 + '@eslint/js': 8.57.0 '@humanwhocodes/config-array': 0.11.14 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -3802,7 +3922,7 @@ packages: glob-parent: 6.0.2 globals: 13.24.0 graphemer: 1.4.0 - ignore: 5.3.0 + ignore: 5.3.1 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 @@ -3875,7 +3995,7 @@ packages: human-signals: 4.3.1 is-stream: 3.0.0 merge-stream: 2.0.0 - npm-run-path: 5.2.0 + npm-run-path: 5.3.0 onetime: 6.0.0 signal-exit: 3.0.7 strip-final-newline: 3.0.0 @@ -3901,8 +4021,8 @@ packages: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true - /fastq@1.16.0: - resolution: {integrity: sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==} + /fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} dependencies: reusify: 1.0.4 @@ -3958,13 +4078,13 @@ packages: resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: - flatted: 3.2.9 + flatted: 3.3.1 keyv: 4.5.4 rimraf: 3.0.2 dev: true - /flatted@3.2.9: - resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} + /flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} dev: true /for-each@0.3.3: @@ -3999,9 +4119,9 @@ packages: resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.22.5 functions-have-names: 1.2.3 /functions-have-names@1.2.3: @@ -4012,13 +4132,15 @@ packages: engines: {node: '>=6.9.0'} dev: false - /get-intrinsic@1.2.2: - resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} + /get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} dependencies: + es-errors: 1.3.0 function-bind: 1.1.2 - has-proto: 1.0.1 + has-proto: 1.0.3 has-symbols: 1.0.3 - hasown: 2.0.0 + hasown: 2.0.2 /get-own-enumerable-property-symbols@3.0.2: resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} @@ -4029,15 +4151,16 @@ packages: engines: {node: '>=10'} dev: true - /get-symbol-description@1.0.0: - resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + /get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 - /get-tsconfig@4.7.2: - resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} + /get-tsconfig@4.7.3: + resolution: {integrity: sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==} dependencies: resolve-pkg-maps: 1.0.0 dev: true @@ -4105,7 +4228,7 @@ packages: array-union: 2.1.0 dir-glob: 3.0.1 fast-glob: 3.3.2 - ignore: 5.3.0 + ignore: 5.3.1 merge2: 1.4.1 slash: 3.0.0 @@ -4131,7 +4254,7 @@ packages: /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -4152,27 +4275,27 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - /has-property-descriptors@1.0.1: - resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} + /has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} dependencies: - get-intrinsic: 1.2.2 + es-define-property: 1.0.0 - /has-proto@1.0.1: - resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + /has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} engines: {node: '>= 0.4'} /has-symbols@1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} - /has-tostringtag@1.0.0: - resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + /has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 - /hasown@2.0.0: - resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} + /hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} dependencies: function-bind: 1.1.2 @@ -4198,8 +4321,8 @@ packages: resolution: {integrity: sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==} dev: false - /ignore@5.3.0: - resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} + /ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} engines: {node: '>= 4'} /import-fresh@3.3.0: @@ -4223,20 +4346,20 @@ packages: /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - /internal-slot@1.0.6: - resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} + /internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.2 - hasown: 2.0.0 - side-channel: 1.0.4 + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.0.6 - /is-array-buffer@3.0.2: - resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + /is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - is-typed-array: 1.1.12 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} @@ -4246,7 +4369,7 @@ packages: resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 dev: true /is-bigint@1.0.4: @@ -4258,8 +4381,8 @@ packages: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - has-tostringtag: 1.0.0 + call-bind: 1.0.7 + has-tostringtag: 1.0.2 /is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} @@ -4268,13 +4391,19 @@ packages: /is-core-module@2.13.1: resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} dependencies: - hasown: 2.0.0 + hasown: 2.0.2 + + /is-data-view@1.0.1: + resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + engines: {node: '>= 0.4'} + dependencies: + is-typed-array: 1.1.13 /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} @@ -4283,7 +4412,7 @@ packages: /is-finalizationregistry@1.0.2: resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 dev: true /is-fullwidth-code-point@4.0.0: @@ -4295,7 +4424,7 @@ packages: resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 dev: true /is-glob@4.0.3: @@ -4304,23 +4433,24 @@ packages: dependencies: is-extglob: 2.1.1 - /is-map@2.0.2: - resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} + /is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} dev: true /is-module@1.0.0: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} dev: false - /is-negative-zero@2.0.2: - resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + /is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} engines: {node: '>= 0.4'} /is-number-object@1.0.7: resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} @@ -4359,22 +4489,24 @@ packages: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - has-tostringtag: 1.0.0 + call-bind: 1.0.7 + has-tostringtag: 1.0.2 /is-regexp@1.0.0: resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} engines: {node: '>=0.10.0'} dev: false - /is-set@2.0.2: - resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} + /is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} dev: true - /is-shared-array-buffer@1.0.2: - resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + /is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 /is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} @@ -4390,7 +4522,7 @@ packages: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 /is-symbol@1.0.4: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} @@ -4398,26 +4530,28 @@ packages: dependencies: has-symbols: 1.0.3 - /is-typed-array@1.1.12: - resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} + /is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} engines: {node: '>= 0.4'} dependencies: - which-typed-array: 1.1.13 + which-typed-array: 1.1.15 - /is-weakmap@2.0.1: - resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} + /is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} dev: true /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 - /is-weakset@2.0.2: - resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} + /is-weakset@2.0.3: + resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 dev: true /is-what@4.1.16: @@ -4436,10 +4570,10 @@ packages: resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} dependencies: define-properties: 1.2.1 - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 has-symbols: 1.0.3 - reflect.getprototypeof: 1.0.4 - set-function-name: 2.0.1 + reflect.getprototypeof: 1.0.6 + set-function-name: 2.0.2 dev: true /jake@10.8.7: @@ -4457,7 +4591,7 @@ packages: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 20.11.4 + '@types/node': 20.11.30 merge-stream: 2.0.0 supports-color: 7.2.0 dev: false @@ -4466,13 +4600,13 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 20.11.4 + '@types/node': 20.11.30 merge-stream: 2.0.0 supports-color: 8.1.1 dev: false - /jotai@2.6.2(@types/react@18.2.48)(react@18.2.0): - resolution: {integrity: sha512-kl4KguU1Fr+tFiLi3A3h9qPEzhvLTTDA10DO3QZAz6k7BEaQJ+qvSBwolzonnfNI4QzEovyQfUqVgnRxfnnQVQ==} + /jotai@2.7.1(@types/react@18.2.67)(react@18.2.0): + resolution: {integrity: sha512-bsaTPn02nFgWNP6cBtg/htZhCu4s0wxqoklRHePp6l/vlsypR9eLn7diRliwXYWMXDpPvW/LLA2afI8vwgFFaw==} engines: {node: '>=12.20.0'} peerDependencies: '@types/react': '>=17.0.0' @@ -4483,7 +4617,7 @@ packages: react: optional: true dependencies: - '@types/react': 18.2.48 + '@types/react': 18.2.67 react: 18.2.0 dev: false @@ -4564,7 +4698,7 @@ packages: array-includes: 3.1.7 array.prototype.flat: 1.3.2 object.assign: 4.1.5 - object.values: 1.1.7 + object.values: 1.2.0 dev: true /keyv@4.5.4: @@ -4639,7 +4773,7 @@ packages: colorette: 2.0.20 eventemitter3: 5.0.1 log-update: 5.0.1 - rfdc: 1.3.0 + rfdc: 1.3.1 wrap-ansi: 8.1.0 dev: true @@ -4807,17 +4941,17 @@ packages: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} dev: false - /next-pwa@5.6.0(@babel/core@7.23.7)(next@13.4.1)(webpack@5.89.0): + /next-pwa@5.6.0(@babel/core@7.24.3)(next@13.4.1)(webpack@5.90.3): resolution: {integrity: sha512-XV8g8C6B7UmViXU8askMEYhWwQ4qc/XqJGnexbLV68hzKaGHZDMtHsm2TNxFcbR7+ypVuth/wwpiIlMwpRJJ5A==} peerDependencies: next: '>=9.0.0' dependencies: - babel-loader: 8.3.0(@babel/core@7.23.7)(webpack@5.89.0) - clean-webpack-plugin: 4.0.0(webpack@5.89.0) + babel-loader: 8.3.0(@babel/core@7.24.3)(webpack@5.90.3) + clean-webpack-plugin: 4.0.0(webpack@5.90.3) globby: 11.1.0 - next: 13.4.1(@babel/core@7.23.7)(react-dom@18.2.0)(react@18.2.0) - terser-webpack-plugin: 5.3.10(webpack@5.89.0) - workbox-webpack-plugin: 6.6.0(webpack@5.89.0) + next: 13.4.1(@babel/core@7.24.3)(react-dom@18.2.0)(react@18.2.0) + terser-webpack-plugin: 5.3.10(webpack@5.90.3) + workbox-webpack-plugin: 6.6.0(webpack@5.90.3) workbox-window: 6.6.0 transitivePeerDependencies: - '@babel/core' @@ -4836,11 +4970,11 @@ packages: superjson: ^1 dependencies: hoist-non-react-statics: 3.3.2 - next: 13.4.1(@babel/core@7.23.7)(react-dom@18.2.0)(react@18.2.0) + next: 13.4.1(@babel/core@7.24.3)(react-dom@18.2.0)(react@18.2.0) superjson: 1.13.3 dev: false - /next@13.4.1(@babel/core@7.23.7)(react-dom@18.2.0)(react@18.2.0): + /next@13.4.1(@babel/core@7.24.3)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-JBw2kAIyhKDpjhEWvNVoFeIzNp9xNxg8wrthDOtMctfn3EpqGCmW0FSviNyGgOSOSn6zDaX48pmvbdf6X2W9xA==} engines: {node: '>=16.8.0'} hasBin: true @@ -4864,11 +4998,11 @@ packages: '@next/env': 13.4.1 '@swc/helpers': 0.5.1 busboy: 1.6.0 - caniuse-lite: 1.0.30001577 + caniuse-lite: 1.0.30001599 postcss: 8.4.14 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - styled-jsx: 5.1.1(@babel/core@7.23.7)(react@18.2.0) + styled-jsx: 5.1.1(@babel/core@7.24.3)(react@18.2.0) zod: 3.21.4 optionalDependencies: '@next/swc-darwin-arm64': 13.4.1 @@ -4904,8 +5038,8 @@ packages: - csstype dev: false - /npm-run-path@5.2.0: - resolution: {integrity: sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==} + /npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: path-key: 4.0.0 @@ -4926,52 +5060,53 @@ packages: resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 has-symbols: 1.0.3 object-keys: 1.1.1 - /object.entries@1.1.7: - resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} + /object.entries@1.1.8: + resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-object-atoms: 1.0.0 dev: true - /object.fromentries@2.0.7: - resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} + /object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.2 + es-object-atoms: 1.0.0 dev: true - /object.groupby@1.0.1: - resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} + /object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.2 + es-abstract: 1.23.2 dev: true /object.hasown@1.1.3: resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==} dependencies: define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.22.5 dev: true - /object.values@1.1.7: - resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} + /object.values@1.2.0: + resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-object-atoms: 1.0.0 dev: true /once@1.4.0: @@ -5053,7 +5188,7 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.23.5 + '@babel/code-frame': 7.24.2 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -5131,13 +5266,17 @@ packages: find-up: 4.1.0 dev: false + /possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + /postcss@8.4.14: resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.7 picocolors: 1.0.0 - source-map-js: 1.0.2 + source-map-js: 1.2.0 dev: false /prelude-ls@1.2.1: @@ -5156,13 +5295,13 @@ packages: engines: {node: '>=6'} dev: false - /prisma@5.8.1: - resolution: {integrity: sha512-N6CpjzECnUHZ5beeYpDzkt2rYpEdAeqXX2dweu6BoQaeYkNZrC/WJHM+5MO/uidFHTak8QhkPKBWck1o/4MD4A==} + /prisma@5.11.0: + resolution: {integrity: sha512-KCLiug2cs0Je7kGkQBN9jDWoZ90ogE/kvZTUTgz2h94FEo8pczCkPH7fPNXkD1sGU7Yh65risGGD1HQ5DF3r3g==} engines: {node: '>=16.13'} hasBin: true requiresBuild: true dependencies: - '@prisma/engines': 5.8.1 + '@prisma/engines': 5.11.0 /prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} @@ -5205,7 +5344,7 @@ packages: scheduler: 0.23.0 dev: false - /react-hook-form-mui@6.8.0(@mui/icons-material@5.15.4)(@mui/material@5.15.4)(@mui/x-date-pickers@6.19.0)(react-hook-form@7.49.3)(react@18.2.0): + /react-hook-form-mui@6.8.0(@mui/icons-material@5.15.14)(@mui/material@5.15.14)(@mui/x-date-pickers@6.19.8)(react-hook-form@7.51.1)(react@18.2.0): resolution: {integrity: sha512-p+Hu/z+nVgSoCXEijs1aXjOUmGoGX0oWzgyBJR4Xgay+il3c6E0HdSHd94XxcmC6i08a88u/+zJ96tuDDjjzRw==} engines: {node: '>=14'} peerDependencies: @@ -5220,16 +5359,16 @@ packages: '@mui/x-date-pickers': optional: true dependencies: - '@mui/icons-material': 5.15.4(@mui/material@5.15.4)(@types/react@18.2.48)(react@18.2.0) - '@mui/material': 5.15.4(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.2.48)(react-dom@18.2.0)(react@18.2.0) - '@mui/x-date-pickers': 6.19.0(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@mui/material@5.15.4)(@mui/system@5.15.4)(@types/react@18.2.48)(date-fns@2.30.0)(react-dom@18.2.0)(react@18.2.0) + '@mui/icons-material': 5.15.14(@mui/material@5.15.14)(@types/react@18.2.67)(react@18.2.0) + '@mui/material': 5.15.14(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@types/react@18.2.67)(react-dom@18.2.0)(react@18.2.0) + '@mui/x-date-pickers': 6.19.8(@emotion/react@11.11.4)(@emotion/styled@11.11.0)(@mui/material@5.15.14)(@mui/system@5.15.14)(@types/react@18.2.67)(date-fns@3.6.0)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 - react-hook-form: 7.49.3(react@18.2.0) + react-hook-form: 7.51.1(react@18.2.0) dev: false - /react-hook-form@7.49.3(react@18.2.0): - resolution: {integrity: sha512-foD6r3juidAT1cOZzpmD/gOKt7fRsDhXXZ0y28+Al1CHgX+AY1qIN9VSIIItXRq1dN68QrRwl1ORFlwjBaAqeQ==} - engines: {node: '>=18', pnpm: '8'} + /react-hook-form@7.51.1(react@18.2.0): + resolution: {integrity: sha512-ifnBjl+kW0ksINHd+8C/Gp6a4eZOdWyvRv0UBaByShwU8JbVx5hTcTWEcd5VdybvmPTATkVVXk9npXArHmo56w==} + engines: {node: '>=12.22.0'} peerDependencies: react: ^16.8.0 || ^17 || ^18 dependencies: @@ -5249,7 +5388,7 @@ packages: react: '>=16.6.0' react-dom: '>=16.6.0' dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.24.1 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 @@ -5264,14 +5403,15 @@ packages: loose-envify: 1.4.0 dev: false - /reflect.getprototypeof@1.0.4: - resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} + /reflect.getprototypeof@1.0.6: + resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.2 + es-abstract: 1.23.2 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 globalthis: 1.0.3 which-builtin-type: 1.1.3 dev: true @@ -5293,16 +5433,17 @@ packages: /regenerator-transform@0.15.2: resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} dependencies: - '@babel/runtime': 7.23.8 + '@babel/runtime': 7.24.1 dev: false - /regexp.prototype.flags@1.5.1: - resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} + /regexp.prototype.flags@1.5.2: + resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - set-function-name: 2.0.1 + es-errors: 1.3.0 + set-function-name: 2.0.2 /regexpu-core@5.3.2: resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} @@ -5365,8 +5506,8 @@ packages: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - /rfdc@1.3.0: - resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} + /rfdc@1.3.1: + resolution: {integrity: sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==} dev: true /rimraf@2.7.1: @@ -5389,11 +5530,11 @@ packages: peerDependencies: rollup: ^2.0.0 dependencies: - '@babel/code-frame': 7.23.5 + '@babel/code-frame': 7.24.2 jest-worker: 26.6.2 rollup: 2.79.1 serialize-javascript: 4.0.0 - terser: 5.26.0 + terser: 5.29.2 dev: false /rollup@2.79.1: @@ -5409,12 +5550,12 @@ packages: dependencies: queue-microtask: 1.2.3 - /safe-array-concat@1.1.0: - resolution: {integrity: sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==} + /safe-array-concat@1.1.2: + resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} engines: {node: '>=0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 has-symbols: 1.0.3 isarray: 2.0.5 @@ -5422,12 +5563,12 @@ packages: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: false - /safe-regex-test@1.0.2: - resolution: {integrity: sha512-83S9w6eFq12BBIJYvjMux6/dkirb8+4zJRA9cxNBVb7Wq5fJBW+Xze48WqR8pxua7bDuAaaAxtVVd4Idjp1dBQ==} + /safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.7 + es-errors: 1.3.0 is-regex: 1.1.4 /scheduler@0.23.0: @@ -5458,8 +5599,8 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - /semver@7.5.4: - resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + /semver@7.6.0: + resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} engines: {node: '>=10'} hasBin: true dependencies: @@ -5478,23 +5619,25 @@ packages: randombytes: 2.1.0 dev: false - /set-function-length@1.2.0: - resolution: {integrity: sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==} + /set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} dependencies: - define-data-property: 1.1.1 + define-data-property: 1.1.4 + es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 gopd: 1.0.1 - has-property-descriptors: 1.0.1 + has-property-descriptors: 1.0.2 - /set-function-name@2.0.1: - resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} + /set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} engines: {node: '>= 0.4'} dependencies: - define-data-property: 1.1.1 + define-data-property: 1.1.4 + es-errors: 1.3.0 functions-have-names: 1.2.3 - has-property-descriptors: 1.0.1 + has-property-descriptors: 1.0.2 /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} @@ -5508,11 +5651,13 @@ packages: engines: {node: '>=8'} dev: true - /side-channel@1.0.4: - resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + /side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 object-inspect: 1.13.1 /signal-exit@3.0.7: @@ -5535,8 +5680,8 @@ packages: resolution: {integrity: sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==} dev: false - /source-map-js@1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + /source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} engines: {node: '>=0.10.0'} dev: false @@ -5590,40 +5735,45 @@ packages: strip-ansi: 7.1.0 dev: true - /string.prototype.matchall@4.0.10: - resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} + /string.prototype.matchall@4.0.11: + resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.2 + es-abstract: 1.23.2 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + get-intrinsic: 1.2.4 + gopd: 1.0.1 has-symbols: 1.0.3 - internal-slot: 1.0.6 - regexp.prototype.flags: 1.5.1 - set-function-name: 2.0.1 - side-channel: 1.0.4 + internal-slot: 1.0.7 + regexp.prototype.flags: 1.5.2 + set-function-name: 2.0.2 + side-channel: 1.0.6 - /string.prototype.trim@1.2.8: - resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} + /string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.2 + es-object-atoms: 1.0.0 - /string.prototype.trimend@1.0.7: - resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} + /string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-object-atoms: 1.0.0 /string.prototype.trimstart@1.0.7: resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.22.5 /stringify-object@3.3.0: resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} @@ -5668,7 +5818,7 @@ packages: engines: {node: '>=8'} dev: true - /styled-jsx@5.1.1(@babel/core@7.23.7)(react@18.2.0): + /styled-jsx@5.1.1(@babel/core@7.24.3)(react@18.2.0): resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} engines: {node: '>= 12.0.0'} peerDependencies: @@ -5681,7 +5831,7 @@ packages: babel-plugin-macros: optional: true dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.24.3 client-only: 0.0.1 react: 18.2.0 dev: false @@ -5749,7 +5899,7 @@ packages: unique-string: 2.0.0 dev: false - /terser-webpack-plugin@5.3.10(webpack@5.89.0): + /terser-webpack-plugin@5.3.10(webpack@5.90.3): resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -5765,20 +5915,20 @@ packages: uglify-js: optional: true dependencies: - '@jridgewell/trace-mapping': 0.3.21 + '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 - terser: 5.26.0 - webpack: 5.89.0 + terser: 5.29.2 + webpack: 5.90.3 dev: false - /terser@5.26.0: - resolution: {integrity: sha512-dytTGoE2oHgbNV9nTzgBEPaqAWvcJNl66VZ0BkJqlvp71IjO8CxdBx/ykCNb47cLnCmCvRZ6ZR0tLkqvZCdVBQ==} + /terser@5.29.2: + resolution: {integrity: sha512-ZiGkhUBIM+7LwkNjXYJq8svgkd+QK3UUr0wJqY4MieaezBSAIPgbSPZyIx0idM6XWK5CMzSWa8MJIzmRcB8Caw==} engines: {node: '>=10'} hasBin: true dependencies: - '@jridgewell/source-map': 0.3.5 + '@jridgewell/source-map': 0.3.6 acorn: 8.11.3 commander: 2.20.3 source-map-support: 0.5.21 @@ -5822,14 +5972,14 @@ packages: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} dev: false - /tsutils@3.21.0(typescript@5.3.3): + /tsutils@3.21.0(typescript@5.4.2): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 5.3.3 + typescript: 5.4.2 dev: true /tsx@3.14.0: @@ -5837,7 +5987,7 @@ packages: hasBin: true dependencies: esbuild: 0.18.20 - get-tsconfig: 4.7.2 + get-tsconfig: 4.7.3 source-map-support: 0.5.21 optionalDependencies: fsevents: 2.3.3 @@ -5865,42 +6015,48 @@ packages: engines: {node: '>=10'} dev: true - /typed-array-buffer@1.0.0: - resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} + /typed-array-buffer@1.0.2: + resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - is-typed-array: 1.1.12 + call-bind: 1.0.7 + es-errors: 1.3.0 + is-typed-array: 1.1.13 - /typed-array-byte-length@1.0.0: - resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} + /typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 for-each: 0.3.3 - has-proto: 1.0.1 - is-typed-array: 1.1.12 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 - /typed-array-byte-offset@1.0.0: - resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} + /typed-array-byte-offset@1.0.2: + resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} engines: {node: '>= 0.4'} dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.5 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 for-each: 0.3.3 - has-proto: 1.0.1 - is-typed-array: 1.1.12 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 - /typed-array-length@1.0.4: - resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + /typed-array-length@1.0.5: + resolution: {integrity: sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 for-each: 0.3.3 - is-typed-array: 1.1.12 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + possible-typed-array-names: 1.0.0 - /typescript@5.3.3: - resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} + /typescript@5.4.2: + resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} engines: {node: '>=14.17'} hasBin: true dev: true @@ -5908,7 +6064,7 @@ packages: /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 @@ -5963,14 +6119,14 @@ packages: engines: {node: '>=4'} dev: false - /update-browserslist-db@1.0.13(browserslist@4.22.2): + /update-browserslist-db@1.0.13(browserslist@4.23.0): resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: - browserslist: 4.22.2 - escalade: 3.1.1 + browserslist: 4.23.0 + escalade: 3.1.2 picocolors: 1.0.0 dev: false @@ -5987,19 +6143,18 @@ packages: react: 18.2.0 dev: false - /usehooks-ts@2.9.4(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-VOSEbA+BGGORLttsICowNb5CG0D2/IEoVvMEl9OuuOoQi99W6XuNipo3SPFhWo3Bhdwi0Swj1D+IMQDQB9KrwQ==} + /usehooks-ts@2.16.0(react@18.2.0): + resolution: {integrity: sha512-bez95WqYujxp6hFdM/CpRDiVPirZPxlMzOH2QB8yopoKQMXpscyZoxOjpEdaxvV+CAWUDSM62cWnqHE0E/MZ7w==} engines: {node: '>=16.15.0'} peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17 || ^18 dependencies: + lodash.debounce: 4.0.8 react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) dev: false - /watchpack@2.4.0: - resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} + /watchpack@2.4.1: + resolution: {integrity: sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==} engines: {node: '>=10.13.0'} dependencies: glob-to-regexp: 0.4.1 @@ -6022,8 +6177,8 @@ packages: engines: {node: '>=10.13.0'} dev: false - /webpack@5.89.0: - resolution: {integrity: sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==} + /webpack@5.90.3: + resolution: {integrity: sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -6034,15 +6189,15 @@ packages: dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/wasm-edit': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/wasm-edit': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 acorn: 8.11.3 acorn-import-assertions: 1.9.0(acorn@8.11.3) - browserslist: 4.22.2 + browserslist: 4.23.0 chrome-trace-event: 1.0.3 - enhanced-resolve: 5.15.0 - es-module-lexer: 1.4.1 + enhanced-resolve: 5.16.0 + es-module-lexer: 1.4.2 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 @@ -6053,8 +6208,8 @@ packages: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(webpack@5.89.0) - watchpack: 2.4.0 + terser-webpack-plugin: 5.3.10(webpack@5.90.3) + watchpack: 2.4.1 webpack-sources: 3.2.3 transitivePeerDependencies: - '@swc/core' @@ -6084,7 +6239,7 @@ packages: engines: {node: '>= 0.4'} dependencies: function.prototype.name: 1.1.6 - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 is-async-function: 2.0.0 is-date-object: 1.0.5 is-finalizationregistry: 1.0.2 @@ -6093,28 +6248,29 @@ packages: 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.13 + which-collection: 1.0.2 + which-typed-array: 1.1.15 dev: true - /which-collection@1.0.1: - resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} + /which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} dependencies: - is-map: 2.0.2 - is-set: 2.0.2 - is-weakmap: 2.0.1 - is-weakset: 2.0.2 + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.3 dev: true - /which-typed-array@1.1.13: - resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} + /which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} engines: {node: '>= 0.4'} dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.5 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 for-each: 0.3.3 gopd: 1.0.1 - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 /which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} @@ -6142,10 +6298,10 @@ packages: engines: {node: '>=10.0.0'} dependencies: '@apideck/better-ajv-errors': 0.3.6(ajv@8.12.0) - '@babel/core': 7.23.7 - '@babel/preset-env': 7.23.8(@babel/core@7.23.7) - '@babel/runtime': 7.23.8 - '@rollup/plugin-babel': 5.3.1(@babel/core@7.23.7)(rollup@2.79.1) + '@babel/core': 7.24.3 + '@babel/preset-env': 7.24.3(@babel/core@7.24.3) + '@babel/runtime': 7.24.1 + '@rollup/plugin-babel': 5.3.1(@babel/core@7.24.3)(rollup@2.79.1) '@rollup/plugin-node-resolve': 11.2.1(rollup@2.79.1) '@rollup/plugin-replace': 2.4.2(rollup@2.79.1) '@surma/rollup-plugin-off-main-thread': 2.2.3 @@ -6263,7 +6419,7 @@ packages: resolution: {integrity: sha512-R2IkwDokbtHUE4Kus8pKO5+VkPHD2oqTgl+XJwh4zbF1HyjAbgNmK/FneZHVU7p03XUt9ICfuGDYISWG9qV/CQ==} dev: false - /workbox-webpack-plugin@6.6.0(webpack@5.89.0): + /workbox-webpack-plugin@6.6.0(webpack@5.90.3): resolution: {integrity: sha512-xNZIZHalboZU66Wa7x1YkjIqEy1gTR+zPM+kjrYJzqN7iurYZBctBLISyScjhkJKYuRrZUP0iqViZTh8rS0+3A==} engines: {node: '>=10.0.0'} peerDependencies: @@ -6272,7 +6428,7 @@ packages: fast-json-stable-stringify: 2.1.0 pretty-bytes: 5.6.0 upath: 1.2.0 - webpack: 5.89.0 + webpack: 5.90.3 webpack-sources: 1.4.3 workbox-build: 6.6.0 transitivePeerDependencies: diff --git a/prisma/migrations/20230316173058_first_migration/migration.sql b/prisma/migrations/20230316173058_first_migration/migration.sql @@ -1,77 +0,0 @@ --- CreateEnum -CREATE TYPE "DayPeriod" AS ENUM ('Mon1', 'Mon2', 'Mon3', 'Mon4', 'Mon5', 'Mon6', 'Mon7', 'Tue1', 'Tue2', 'Tue3', 'Tue4', 'Tue5', 'Tue6', 'Tue7', 'Wed1', 'Wed2', 'Wed3', 'Wed4', 'Wed5', 'Wed6', 'Wed7', 'Thu1', 'Thu2', 'Thu3', 'Thu4', 'Thu5', 'Thu6', 'Fri1', 'Fri2', 'Fri3', 'Fri4', 'Fri5', 'Fri6', 'Fri7'); - --- CreateTable -CREATE TABLE "SchoolClass" ( - "id" SERIAL NOT NULL, - "grade" INTEGER NOT NULL, - "class" INTEGER NOT NULL, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "SchoolClass_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "Class_DayPeriod_Subject" ( - "id" SERIAL NOT NULL, - "classId" INTEGER NOT NULL, - "dayPeriod" "DayPeriod" NOT NULL, - "subjects" TEXT[], - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "Class_DayPeriod_Subject_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "GradeSchedule" ( - "id" SERIAL NOT NULL, - "grade" INTEGER NOT NULL, - "date" DATE NOT NULL, - "period" INTEGER NOT NULL, - "dayPeriod" "DayPeriod" NOT NULL, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "GradeSchedule_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "ClassTemporarySchedule" ( - "id" SERIAL NOT NULL, - "parentId" INTEGER NOT NULL, - "classId" INTEGER NOT NULL, - "date" DATE NOT NULL, - "period" INTEGER NOT NULL, - "sucjects" TEXT[], - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "ClassTemporarySchedule_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "ClassTemporaryScheduleGroup" ( - "id" SERIAL NOT NULL, - "note" TEXT, - - CONSTRAINT "ClassTemporaryScheduleGroup_pkey" PRIMARY KEY ("id") -); - --- CreateIndex -CREATE UNIQUE INDEX "SchoolClass_grade_class_key" ON "SchoolClass"("grade", "class"); - --- CreateIndex -CREATE UNIQUE INDEX "Class_DayPeriod_Subject_classId_dayPeriod_key" ON "Class_DayPeriod_Subject"("classId", "dayPeriod"); - --- CreateIndex -CREATE UNIQUE INDEX "GradeSchedule_grade_date_period_key" ON "GradeSchedule"("grade", "date", "period"); - --- CreateIndex -CREATE UNIQUE INDEX "ClassTemporarySchedule_classId_date_period_key" ON "ClassTemporarySchedule"("classId", "date", "period"); - --- AddForeignKey -ALTER TABLE "Class_DayPeriod_Subject" ADD CONSTRAINT "Class_DayPeriod_Subject_classId_fkey" FOREIGN KEY ("classId") REFERENCES "SchoolClass"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "ClassTemporarySchedule" ADD CONSTRAINT "ClassTemporarySchedule_parentId_fkey" FOREIGN KEY ("parentId") REFERENCES "ClassTemporaryScheduleGroup"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "ClassTemporarySchedule" ADD CONSTRAINT "ClassTemporarySchedule_classId_fkey" FOREIGN KEY ("classId") REFERENCES "SchoolClass"("id") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/prisma/migrations/20230318180950_fix_typo/migration.sql b/prisma/migrations/20230318180950_fix_typo/migration.sql @@ -1,9 +0,0 @@ -/* - Warnings: - - - You are about to drop the column `sucjects` on the `ClassTemporarySchedule` table. All the data in the column will be lost. - -*/ --- AlterTable -ALTER TABLE "ClassTemporarySchedule" DROP COLUMN "sucjects", -ADD COLUMN "subjects" TEXT[]; diff --git a/prisma/migrations/20230324181509_cascade/migration.sql b/prisma/migrations/20230324181509_cascade/migration.sql @@ -1,5 +0,0 @@ --- DropForeignKey -ALTER TABLE "ClassTemporarySchedule" DROP CONSTRAINT "ClassTemporarySchedule_parentId_fkey"; - --- AddForeignKey -ALTER TABLE "ClassTemporarySchedule" ADD CONSTRAINT "ClassTemporarySchedule_parentId_fkey" FOREIGN KEY ("parentId") REFERENCES "ClassTemporaryScheduleGroup"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/prisma/migrations/20230408160935_temporary_group_optional/migration.sql b/prisma/migrations/20230408160935_temporary_group_optional/migration.sql @@ -1,2 +0,0 @@ --- AlterTable -ALTER TABLE "ClassTemporarySchedule" ALTER COLUMN "parentId" DROP NOT NULL; diff --git a/prisma/migrations/20230408165310_add_event_table/migration.sql b/prisma/migrations/20230408165310_add_event_table/migration.sql @@ -1,11 +0,0 @@ --- CreateTable -CREATE TABLE "SchoolEvent" ( - "id" SERIAL NOT NULL, - "grades" INTEGER[], - "date" DATE NOT NULL, - "title" TEXT NOT NULL, - "detail" TEXT, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "SchoolEvent_pkey" PRIMARY KEY ("id") -); diff --git a/prisma/migrations/migration_lock.toml b/prisma/migrations/migration_lock.toml @@ -1,3 +0,0 @@ -# Please do not edit this file manually -# It should be added in your version-control system (i.e. Git) -provider = "postgresql"- \ No newline at end of file diff --git a/prisma/reset.ts b/prisma/reset.ts @@ -1,46 +0,0 @@ -import { PrismaClient } from '@prisma/client'; - -const prisma = new PrismaClient(); - -async function main() { - { - const result = await prisma.class_DayPeriod_Subject.deleteMany(); - console.log( - `Class_DayPeriod_Subject のレコードを 全件 (${result.count}件) 削除しました。` - ); - } - { - const result = await prisma.gradeSchedule.deleteMany(); - console.log( - `GradeSchedule のレコードを 全件 (${result.count}件) 削除しました。` - ); - } - { - const result = await prisma.classTemporarySchedule.deleteMany(); - console.log( - `ClassTemporarySchedule のレコードを 全件 (${result.count}件) 削除しました。` - ); - } - { - const result = await prisma.classTemporaryScheduleGroup.deleteMany(); - console.log( - `ClassTemporaryScheduleGroup のレコードを 全件 (${result.count}件) 削除しました。` - ); - } - { - const result = await prisma.schoolEvent.deleteMany(); - console.log( - `SchoolEvent のレコードを 全件 (${result.count}件) 削除しました。` - ); - } -} - -main() - .then(async () => { - await prisma.$disconnect(); - }) - .catch(async (e) => { - console.error(e); - await prisma.$disconnect(); - process.exit(1); - }); diff --git a/prisma/schema.prisma b/prisma/schema.prisma @@ -1,12 +1,10 @@ // This is your Prisma schema file, // learn more about it in the docs: https://pris.ly/d/prisma-schema -// 曜日時限: DayPeriod - // プログラムから扱うクライアント generator client { provider = "prisma-client-js" - previewFeatures = ["jsonProtocol"] + previewFeatures = [] } datasource db { @@ -15,109 +13,3 @@ datasource db { directUrl = env("POSTGRES_URL_NON_POOLING") // uses a direct connection shadowDatabaseUrl = env("POSTGRES_URL_NON_POOLING") // used for migrations } - -// 各クラス -model SchoolClass { - id Int @id @default(autoincrement()) - grade Int - class Int - updatedAt DateTime @updatedAt - dayPeriod_Subjects Class_DayPeriod_Subject[] - temporarySchedules ClassTemporarySchedule[] - - @@unique([grade, class]) -} - -// 各クラスの「曜日時限」→「科目名」 -model Class_DayPeriod_Subject { - id Int @id @default(autoincrement()) - class SchoolClass @relation(fields: [classId], references: [id]) - classId Int - dayPeriod DayPeriod - subjects String[] - updatedAt DateTime @updatedAt - - @@unique([classId, dayPeriod]) -} - -// 学年ごとの「曜日時限時間割表」の1コマ -model GradeSchedule { - id Int @id @default(autoincrement()) - grade Int - date DateTime @db.Date - period Int - dayPeriod DayPeriod - updatedAt DateTime @updatedAt - - @@unique([grade, date, period]) -} - -// クラスごとの「臨時変更」の1コマ -model ClassTemporarySchedule { - id Int @id @default(autoincrement()) - parent ClassTemporaryScheduleGroup? @relation(fields: [parentId], references: [id], onDelete: Cascade) - parentId Int? - class SchoolClass @relation(fields: [classId], references: [id]) - classId Int - date DateTime @db.Date - period Int - subjects String[] - updatedAt DateTime @updatedAt - - @@unique([classId, date, period]) -} - -// クラスごとの「臨時変更」のかたまり 一旦使わない -model ClassTemporaryScheduleGroup { - id Int @id @default(autoincrement()) - children ClassTemporarySchedule[] - note String? -} - -// 学年・学年単位の行事など -model SchoolEvent { - id Int @id @default(autoincrement()) - grades Int[] - date DateTime @db.Date - title String - detail String? - updatedAt DateTime @updatedAt -} - -// 「曜日時限」の列挙型 -enum DayPeriod { - Mon1 - Mon2 - Mon3 - Mon4 - Mon5 - Mon6 - Mon7 - Tue1 - Tue2 - Tue3 - Tue4 - Tue5 - Tue6 - Tue7 - Wed1 - Wed2 - Wed3 - Wed4 - Wed5 - Wed6 - Wed7 - Thu1 - Thu2 - Thu3 - Thu4 - Thu5 - Thu6 - Fri1 - Fri2 - Fri3 - Fri4 - Fri5 - Fri6 - Fri7 -} diff --git a/prisma/seed.ts b/prisma/seed.ts @@ -1,31 +0,0 @@ -import { PrismaClient } from '@prisma/client'; - -import { CLASSES, GRADES } from 'common/constant'; - -const prisma = new PrismaClient(); - -async function main() { - const classes = GRADES.flatMap((g) => - CLASSES.map((c) => ({ - grade: g, - class: c, - })) - ); - - const result = await prisma.schoolClass.createMany({ - data: classes, - skipDuplicates: true, - }); - - console.log(`SchoolClass のレコードを ${result.count} 件作成しました`); -} - -main() - .then(async () => { - await prisma.$disconnect(); - }) - .catch(async (e) => { - console.error(e); - await prisma.$disconnect(); - process.exit(1); - }); diff --git a/src/client/components/ClassPicker/index.tsx b/src/client/components/ClassPicker/index.tsx @@ -1,48 +0,0 @@ -import { - FormControl, - InputLabel, - Select, - MenuItem, - FormHelperText, -} from '@mui/material'; - -import type { SchoolClass } from '@prisma/client'; - -type Props = { - disabled?: boolean; - classId?: number; - classes: SchoolClass[]; - setClassId: (arg: number) => void; -}; - -export default function ClassPicker({ - disabled, - classes, - classId, - setClassId, -}: Props) { - return ( - <FormControl - fullWidth - required - disabled={disabled} - error={typeof classId === 'undefined'} - > - <InputLabel>クラス</InputLabel> - <Select - value={classId ?? ''} - label='クラス' - onChange={(e) => setClassId(e.target.value as number)} - > - {classes.map((c) => ( - <MenuItem value={c.id} key={c.id}> - {c.grade}-{c.class} - </MenuItem> - ))} - </Select> - {typeof classId === 'undefined' && ( - <FormHelperText>選択してください</FormHelperText> - )} - </FormControl> - ); -} diff --git a/src/client/components/DatePickerLocalizationProvider/index.tsx b/src/client/components/DatePickerLocalizationProvider/index.tsx @@ -1,8 +1,9 @@ import { LocalizationProvider, jaJP } from '@mui/x-date-pickers'; -import { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns'; +import { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFnsV3'; import { ja } from 'date-fns/locale'; import type { LocalizationProviderProps } from '@mui/x-date-pickers'; +import type { Locale } from 'date-fns/locale'; export default function DatePickerLocalizationProvider({ children, diff --git a/src/client/features/console/classStandard/components/InputForm.tsx b/src/client/features/console/classStandard/components/InputForm.tsx @@ -1,42 +0,0 @@ -import { useDebouncedValue } from '@mantine/hooks'; -import SaveIcon from '@mui/icons-material/Save'; -import LoadingButton from '@mui/lab/LoadingButton'; -import { Backdrop, CircularProgress, Box } from '@mui/material'; - -import useRegisterStandardTimetable from '../hooks/useStandardTimetable'; - -import InputTable from './InputTable'; - -type Props = { - classId: number; -}; - -export default function InputForm({ classId }: Props) { - const { fetching, sending, get, set, submit } = - useRegisterStandardTimetable(classId); - const loading = fetching || sending; - const [debouncedLoading] = useDebouncedValue(loading, 1000); - - return ( - <> - <Backdrop open={loading && !!debouncedLoading}> - <CircularProgress color='inherit' /> - </Backdrop> - - <InputTable get={get} set={set} disabled={fetching || sending} /> - - <Box> - <LoadingButton - variant='contained' - loading={sending} - loadingPosition='start' - disabled={fetching || sending} - startIcon={<SaveIcon />} - onClick={() => submit()} - > - 保存 - </LoadingButton> - </Box> - </> - ); -} diff --git a/src/client/features/console/classStandard/components/InputTable.tsx b/src/client/features/console/classStandard/components/InputTable.tsx @@ -1,243 +0,0 @@ -import { - TableContainer, - Paper, - Table, - TableHead, - TableRow, - TableCell, - TableBody, -} from '@mui/material'; - -import LessonCell from './LessonCell'; - -import type { DayPeriod } from '@prisma/client'; - -type Props = { - get: (key: DayPeriod) => string[]; - set: (key: DayPeriod, value: string[]) => void; - disabled?: boolean; -}; - -export default function InputTable({ get, set, disabled }: Props) { - const getCellParams = (dayPeriod: DayPeriod) => { - return { - subjects: get(dayPeriod), - handleChange: (newValue: string) => - set( - dayPeriod, - newValue.split('/').map((v) => v.trim()) - ), - }; - }; - - return ( - <TableContainer component={Paper}> - <Table sx={{ minWidth: '50rem', overflowX: 'scroll' }}> - <TableHead> - <TableRow> - <TableCell>時限</TableCell> - <TableCell>月</TableCell> - <TableCell>火</TableCell> - <TableCell>水</TableCell> - <TableCell>木</TableCell> - <TableCell>金</TableCell> - </TableRow> - </TableHead> - <TableBody> - <TableRow> - <TableCell>1</TableCell> - <LessonCell - {...getCellParams('Mon1')} - disabled={disabled} - tabIndex={111} - /> - <LessonCell - {...getCellParams('Tue1')} - disabled={disabled} - tabIndex={121} - /> - <LessonCell - {...getCellParams('Wed1')} - disabled={disabled} - tabIndex={131} - /> - <LessonCell - {...getCellParams('Thu1')} - disabled={disabled} - tabIndex={141} - /> - <LessonCell - {...getCellParams('Fri1')} - disabled={disabled} - tabIndex={151} - /> - </TableRow> - <TableRow> - <TableCell>2</TableCell> - <LessonCell - {...getCellParams('Mon2')} - disabled={disabled} - tabIndex={112} - /> - <LessonCell - {...getCellParams('Tue2')} - disabled={disabled} - tabIndex={122} - /> - <LessonCell - {...getCellParams('Wed2')} - disabled={disabled} - tabIndex={132} - /> - <LessonCell - {...getCellParams('Thu2')} - disabled={disabled} - tabIndex={142} - /> - <LessonCell - {...getCellParams('Fri2')} - disabled={disabled} - tabIndex={152} - /> - </TableRow> - <TableRow> - <TableCell>3</TableCell> - <LessonCell - {...getCellParams('Mon3')} - disabled={disabled} - tabIndex={113} - /> - <LessonCell - {...getCellParams('Tue3')} - disabled={disabled} - tabIndex={123} - /> - <LessonCell - {...getCellParams('Wed3')} - disabled={disabled} - tabIndex={133} - /> - <LessonCell - {...getCellParams('Thu3')} - disabled={disabled} - tabIndex={143} - /> - <LessonCell - {...getCellParams('Fri3')} - disabled={disabled} - tabIndex={153} - /> - </TableRow> - <TableRow> - <TableCell>4</TableCell> - <LessonCell - {...getCellParams('Mon4')} - disabled={disabled} - tabIndex={114} - /> - <LessonCell - {...getCellParams('Tue4')} - disabled={disabled} - tabIndex={124} - /> - <LessonCell - {...getCellParams('Wed4')} - disabled={disabled} - tabIndex={134} - /> - <LessonCell - {...getCellParams('Thu4')} - disabled={disabled} - tabIndex={144} - /> - <LessonCell - {...getCellParams('Fri4')} - disabled={disabled} - tabIndex={154} - /> - </TableRow> - <TableRow> - <TableCell>5</TableCell> - <LessonCell - {...getCellParams('Mon5')} - disabled={disabled} - tabIndex={115} - /> - <LessonCell - {...getCellParams('Tue5')} - disabled={disabled} - tabIndex={125} - /> - <LessonCell - {...getCellParams('Wed5')} - disabled={disabled} - tabIndex={135} - /> - <LessonCell - {...getCellParams('Thu5')} - disabled={disabled} - tabIndex={145} - /> - <LessonCell - {...getCellParams('Fri5')} - disabled={disabled} - tabIndex={155} - /> - </TableRow> - <TableRow> - <TableCell>6</TableCell> - <LessonCell - {...getCellParams('Mon6')} - disabled={disabled} - tabIndex={116} - /> - <LessonCell - {...getCellParams('Tue6')} - disabled={disabled} - tabIndex={126} - /> - <LessonCell - {...getCellParams('Wed6')} - disabled={disabled} - tabIndex={136} - /> - <LessonCell - {...getCellParams('Thu6')} - disabled={disabled} - tabIndex={146} - /> - <LessonCell - {...getCellParams('Fri6')} - disabled={disabled} - tabIndex={156} - /> - </TableRow> - <TableRow> - <TableCell>7</TableCell> - <LessonCell - {...getCellParams('Mon7')} - disabled={disabled} - tabIndex={117} - /> - <LessonCell - {...getCellParams('Tue7')} - disabled={disabled} - tabIndex={127} - /> - <LessonCell - {...getCellParams('Wed7')} - disabled={disabled} - tabIndex={137} - /> - <TableCell></TableCell> - <LessonCell - {...getCellParams('Fri7')} - disabled={disabled} - tabIndex={157} - /> - </TableRow> - </TableBody> - </Table> - </TableContainer> - ); -} diff --git a/src/client/features/console/classStandard/components/LessonCell.tsx b/src/client/features/console/classStandard/components/LessonCell.tsx @@ -1,25 +0,0 @@ -import { TableCell, TextField } from '@mui/material'; -import { memo } from 'react'; - -type Props = { - subjects: string[]; - handleChange: (newValue: string) => void; - tabIndex: number; - disabled?: boolean; -}; - -function LessonCell({ subjects, handleChange, tabIndex, disabled }: Props) { - return ( - <TableCell> - <TextField - variant='standard' - value={subjects.join('/')} - onChange={(e) => handleChange(e.target.value)} - inputProps={{ tabIndex: tabIndex }} - disabled={disabled} - /> - </TableCell> - ); -} - -export default memo(LessonCell); diff --git a/src/client/features/console/classStandard/hooks/useStandardTimetable.ts b/src/client/features/console/classStandard/hooks/useStandardTimetable.ts @@ -1,83 +0,0 @@ -import { useSnackbar } from 'notistack'; -import { useCallback } from 'react'; - -import useMap from 'client/hooks/useMap'; -import { trpc } from 'client/utils/trpc'; - -import type { DayPeriod } from '@prisma/client'; - -type Result = { - fetching: boolean; - sending: boolean; - get: (key: DayPeriod) => string[]; - set: (key: DayPeriod, value: string[]) => void; - submit: () => void; -}; - -const useRegisterStandardTimetable = (classId: number): Result => { - const trpcCtx = trpc.useContext(); - const { enqueueSnackbar } = useSnackbar(); - - const [modifiedMap, modifiedMapActions] = useMap<DayPeriod, string[]>(); - - const standardQuery = trpc.classStandard.byId.useQuery( - { id: classId }, - { - onError: () => - enqueueSnackbar('エラーが発生しました', { - variant: 'error', - autoHideDuration: 6000, - }), - } - ); - - const standardMutation = trpc.classStandard.update.useMutation({ - onSuccess: (data) => { - modifiedMapActions.reset(); - trpcCtx.classStandard.byId.setData({ id: classId }, data); - enqueueSnackbar('正常に保存されました', { - variant: 'success', - autoHideDuration: 2000, - }); - }, - onError: () => { - enqueueSnackbar('エラーが発生しました', { - variant: 'error', - autoHideDuration: 6000, - }); - }, - }); - - const get = useCallback( - (key: DayPeriod): string[] => { - return ( - modifiedMap.get(key) ?? standardQuery.data?.standard.get(key) ?? [] - ); - }, - [modifiedMap, standardQuery.data?.standard] - ); - - const set = useCallback( - (key: DayPeriod, value: string[]): void => { - modifiedMapActions.set(key, value); - }, - [modifiedMapActions] - ); - - const submit = useCallback(() => { - standardMutation.mutate({ - id: classId, - standard: new Map(modifiedMap.entries()), - }); - }, [classId, modifiedMap, standardMutation]); - - return { - fetching: standardQuery.isFetching, - sending: standardMutation.isLoading, - get, - set, - submit, - }; -}; - -export default useRegisterStandardTimetable; diff --git a/src/client/features/console/classStandard/index.tsx b/src/client/features/console/classStandard/index.tsx @@ -1,29 +0,0 @@ -import { Box, Stack } from '@mui/material'; -import { useState } from 'react'; - -import ClassPicker from 'client/components/ClassPicker'; - -import InputForm from './components/InputForm'; - -import type { SchoolClass } from '@prisma/client'; - -type Props = { - classes: SchoolClass[]; -}; - -export default function ClassStandardTimetableEditor({ classes }: Props) { - const [classId, setClassId] = useState<number>(); - - return ( - <Stack spacing={4} my={4} mx={{ xs: 1, md: 4 }}> - <Box width='8rem'> - <ClassPicker - classes={classes} - classId={classId} - setClassId={setClassId} - /> - </Box> - {classId && <InputForm classId={classId} />} - </Stack> - ); -} diff --git a/src/client/features/console/classTemporarySchedule/components/CreateForm.tsx b/src/client/features/console/classTemporarySchedule/components/CreateForm.tsx @@ -1,146 +0,0 @@ -import SaveIcon from '@mui/icons-material/Save'; -import LoadingButton from '@mui/lab/LoadingButton'; -import { Box, Paper, Autocomplete, TextField, Grid } from '@mui/material'; -import { useSnackbar } from 'notistack'; -import { useState } from 'react'; -import { z } from 'zod'; - -import DatePicker from 'client/components/DatePicker'; -import { trpc } from 'client/utils/trpc'; -import { DATE_FORMAT, SCHOOL_TIMES } from 'common/constant'; -import formatDate from 'common/utils/formatDate'; - -import type { SchoolTime } from 'common/types'; - -type Props = { - classId: number; - invalidateQuery: () => Promise<void>; -}; - -// 新規作成用フォーム -export default function CreateForm({ classId, invalidateQuery }: Props) { - const { enqueueSnackbar } = useSnackbar(); - - const [date, setDate] = useState<Date | null>(null); - const [period, setPeriod] = useState<SchoolTime | null>(null); - const [subjects, setSubjects] = useState<string>(''); - const [groupId, setGruopId] = useState<string>(''); - // グループIDのバリデーション - const parsedGroupId = z.coerce - .number({ invalid_type_error: '整数値を入力してください' }) - .int({ message: '整数値を入力してください' }) - .safeParse(groupId); - - const mutation = trpc.classTemporarySchedule.create.useMutation({ - onSuccess: () => { - invalidateQuery(); - setDate(null); - setPeriod(null); - setSubjects(''); - setGruopId(''); - enqueueSnackbar('正常に保存されました', { - variant: 'success', - autoHideDuration: 2000, - }); - }, - onError: (err) => { - enqueueSnackbar(`エラーが発生しました\n${err.message}`, { - variant: 'error', - autoHideDuration: 6000, - }); - }, - }); - - const handleSubmit = async () => { - if (date && period && parsedGroupId.success) { - return await mutation.mutateAsync({ - classId, - date: formatDate(date, DATE_FORMAT), - period, - subjects: subjects.split('/'), - parentId: parsedGroupId.data ?? undefined, - }); - } else { - enqueueSnackbar('入力内容を確認してください', { - variant: 'warning', - autoHideDuration: 6000, - }); - } - return; - }; - - return ( - <Box component={Paper} p={4}> - <Grid container spacing={4}> - <Grid item width='15rem'> - <DatePicker - value={date} - onChange={(newValue) => newValue && setDate(newValue)} - label='日付' - slotProps={{ - textField: { - size: 'medium', - required: true, - placeholder: '日付を選択', - }, - }} - disabled={mutation.isLoading} - /> - </Grid> - - <Grid item width={150}> - <Autocomplete - disablePortal - autoSelect - value={period} - onChange={(_, newValue) => setPeriod(newValue)} - options={SCHOOL_TIMES} - getOptionLabel={(v) => `${v}限`} - renderInput={(params) => ( - <TextField {...params} label='時限' required /> - )} - disabled={mutation.isLoading} - /> - </Grid> - - <Grid item width={200}> - <TextField - value={subjects} - onChange={(event) => setSubjects(event.target.value)} - label='科目' - required - disabled={mutation.isLoading} - /> - </Grid> - - <Grid item width={160}> - <TextField - value={groupId} - onChange={(event) => setGruopId(event.target.value)} - inputProps={{ inputMode: 'numeric', pattern: '[0-9]*' }} - label='グループID' - helperText={ - parsedGroupId.success - ? 'グループIDが存在する場合のみ入力' - : parsedGroupId.error.issues[0]?.message - } - error={!parsedGroupId.success} - disabled={mutation.isLoading} - /> - </Grid> - - <Grid item> - <LoadingButton - onClick={handleSubmit} - variant='contained' - startIcon={<SaveIcon />} - loadingPosition='start' - loading={mutation.isLoading} - > - 新規作成 - </LoadingButton> - </Grid> - </Grid> - </Box> - ); -} diff --git a/src/client/features/console/classTemporarySchedule/components/EditTable/DeleteCell.tsx b/src/client/features/console/classTemporarySchedule/components/EditTable/DeleteCell.tsx @@ -1,103 +0,0 @@ -import { useDisclosure } from '@mantine/hooks'; -import DeleteIcon from '@mui/icons-material/Delete'; -import LoadingButton from '@mui/lab/LoadingButton'; -import { - DialogTitle, - DialogContent, - DialogContentText, - DialogActions, - Button, - TableCell, - IconButton, - Dialog, -} from '@mui/material'; -import { useSnackbar } from 'notistack'; - -import { trpc } from 'client/utils/trpc'; -import formatDate from 'common/utils/formatDate'; - -import type { ClassTemporarySchedule } from '@prisma/client'; - -type DeleteDialogProps = { - id: number; - contentText: string; - open: boolean; - handleClose: () => void; - invalidateQuery: () => Promise<void>; -}; - -function DeleteDialog({ - id, - contentText, - open, - handleClose, - invalidateQuery, -}: DeleteDialogProps) { - const { enqueueSnackbar } = useSnackbar(); - - const mutation = trpc.classTemporarySchedule.delete.useMutation({ - onSuccess: () => { - invalidateQuery(); - enqueueSnackbar('正常に削除されました', { - variant: 'success', - autoHideDuration: 2000, - }); - }, - onError: () => - enqueueSnackbar('エラーが発生しました', { - variant: 'error', - autoHideDuration: 6000, - }), - }); - const handleDelete = () => - mutation.mutateAsync({ id }).then(() => handleClose()); - - return ( - <Dialog open={open} onClose={handleClose}> - <DialogTitle>本当に削除しますか?</DialogTitle> - <DialogContent> - <DialogContentText>{contentText}</DialogContentText> - </DialogContent> - <DialogActions> - <Button onClick={handleClose}>いいえ</Button> - <LoadingButton onClick={handleDelete} loading={mutation.isLoading}> - 削除する - </LoadingButton> - </DialogActions> - </Dialog> - ); -} - -type Props = { - data: ClassTemporarySchedule; - invalidateQuery: () => Promise<void>; -}; - -export default function DeleteCell({ data, invalidateQuery }: Props) { - const [open, handlers] = useDisclosure(false); - - const dateString = formatDate(data.date, 'yyyy/MM/dd (EEEEE)'); - const content = `${dateString} ${data.period}限 「${data.subjects.join( - '/' - )}」を永久に削除してもよろしいですか?`; - - return ( - <TableCell> - <IconButton - onClick={handlers.open} - aria-label='削除する' - sx={{ color: 'red' }} - size='small' - > - <DeleteIcon /> - </IconButton> - <DeleteDialog - id={data.id} - contentText={content} - open={open} - handleClose={handlers.close} - invalidateQuery={invalidateQuery} - /> - </TableCell> - ); -} diff --git a/src/client/features/console/classTemporarySchedule/components/EditTable/Row.tsx b/src/client/features/console/classTemporarySchedule/components/EditTable/Row.tsx @@ -1,35 +0,0 @@ -import { TableRow, TableCell } from '@mui/material'; - -import formatDate from 'common/utils/formatDate'; - -import DeleteCell from './DeleteCell'; -import UpdateCell from './UpdateCell'; - -import type { ClassTemporarySchedule } from '@prisma/client'; - -type Props = { - data: ClassTemporarySchedule; - invalidateQuery: () => Promise<void>; -}; - -export default function Row({ data, invalidateQuery }: Props) { - const dateString = formatDate(data.date, 'yyyy/MM/dd (EEEEE)'); - const updatedAtString = formatDate( - data.updatedAt, - 'yyyy/MM/dd (EEEEE) HH:mm:ss' - ); - const subjectsString = data.subjects.join('/'); - - return ( - <TableRow> - <TableCell>{data.id}</TableCell> - <TableCell>{dateString}</TableCell> - <TableCell>{data.period}</TableCell> - <TableCell>{subjectsString}</TableCell> - <TableCell>{data.parentId}</TableCell> - <TableCell>{updatedAtString}</TableCell> - <UpdateCell data={data} invalidateQuery={invalidateQuery} /> - <DeleteCell data={data} invalidateQuery={invalidateQuery} /> - </TableRow> - ); -} diff --git a/src/client/features/console/classTemporarySchedule/components/EditTable/UpdateCell.tsx b/src/client/features/console/classTemporarySchedule/components/EditTable/UpdateCell.tsx @@ -1,182 +0,0 @@ -import { useDisclosure } from '@mantine/hooks'; -import EditIcon from '@mui/icons-material/Edit'; -import LoadingButton from '@mui/lab/LoadingButton'; -import { - DialogTitle, - DialogContent, - Stack, - Box, - Autocomplete, - TextField, - DialogActions, - Button, - TableCell, - IconButton, - Dialog, -} from '@mui/material'; -import { useSnackbar } from 'notistack'; -import { useState } from 'react'; -import { z } from 'zod'; - -import DatePicker from 'client/components/DatePicker'; -import { trpc } from 'client/utils/trpc'; -import { DATE_FORMAT, SCHOOL_TIMES } from 'common/constant'; -import formatDate from 'common/utils/formatDate'; -import { zodPeriod } from 'common/utils/zod'; - -import type { ClassTemporarySchedule } from '@prisma/client'; -import type { SchoolTime } from 'common/types'; - -type UpdateDialogProps = { - data: ClassTemporarySchedule; - open: boolean; - handleClose: () => void; - invalidateQuery: () => Promise<void>; -}; - -function UpdateDialog({ - data, - open, - handleClose, - invalidateQuery, -}: UpdateDialogProps) { - const { enqueueSnackbar } = useSnackbar(); - - const mutation = trpc.classTemporarySchedule.update.useMutation({ - onSuccess: () => { - invalidateQuery(); - enqueueSnackbar('正常に更新されました', { - variant: 'success', - autoHideDuration: 2000, - }); - }, - onError: (err) => - enqueueSnackbar(`エラーが発生しました\n${err.message}`, { - variant: 'error', - autoHideDuration: 6000, - }), - }); - - const [date, setDate] = useState<Date>(data.date); - const [period, setPeriod] = useState<SchoolTime>( - zodPeriod.parse(data.period) - ); - const [subjects, setSubjects] = useState<string>(data.subjects.join('/')); - const [groupId, setGruopId] = useState<string>( - data.parentId?.toString() ?? '' - ); - const parsedGroupId = z.coerce - .number({ - invalid_type_error: '自然数を入力してください', - }) - .int({ message: '自然数を入力してください' }) - .positive('自然数を入力してください') - .or(z.literal('')) - .safeParse(groupId); - - const handleUpdate = () => { - if (parsedGroupId.success) { - return mutation - .mutateAsync({ - id: data.id, - date: formatDate(date, DATE_FORMAT), - period, - subjects: subjects.split('/'), - parentId: parsedGroupId.data === '' ? undefined : parsedGroupId.data, - }) - .then(() => handleClose()); - } else return; - }; - - return ( - <Dialog open={open} onClose={handleClose}> - <DialogTitle>ID: {data.id} の編集</DialogTitle> - <DialogContent> - <Stack direction='column' spacing={4} m={1}> - <Box width={250}> - <DatePicker - value={date} - onChange={(newValue) => newValue && setDate(newValue)} - label='日付' - slotProps={{ textField: { size: 'medium', required: true } }} - disabled={mutation.isLoading} - /> - </Box> - - <Box width={100}> - <Autocomplete - disablePortal - autoSelect - disableClearable - value={period} - onChange={(_, newValue) => setPeriod(newValue)} - options={SCHOOL_TIMES} - getOptionLabel={(v) => `${v}限`} - renderInput={(params) => ( - <TextField {...params} label='時限' required /> - )} - disabled={mutation.isLoading} - /> - </Box> - - <Box width={250}> - <TextField - value={subjects} - onChange={(event) => setSubjects(event.target.value)} - label='科目' - required - disabled={mutation.isLoading} - /> - </Box> - - <Box width={150}> - <TextField - value={groupId} - onChange={(event) => setGruopId(event.target.value)} - inputProps={{ inputMode: 'numeric', pattern: '[0-9]*' }} - label='グループID' - helperText={ - !parsedGroupId.success - ? parsedGroupId.error.issues[0]?.message - : '' - } - error={!parsedGroupId.success} - disabled={mutation.isLoading} - /> - </Box> - </Stack> - </DialogContent> - <DialogActions> - <Button onClick={handleClose}>キャンセル</Button> - <LoadingButton onClick={handleUpdate} loading={mutation.isLoading}> - 保存する - </LoadingButton> - </DialogActions> - </Dialog> - ); -} - -type Props = { - data: ClassTemporarySchedule; - invalidateQuery: () => Promise<void>; -}; - -export default function UpdateCell({ data, invalidateQuery }: Props) { - const [open, handlers] = useDisclosure(false); - - return ( - <> - <TableCell> - <IconButton onClick={handlers.open} aria-label='編集する' size='small'> - <EditIcon /> - </IconButton> - <UpdateDialog - data={data} - open={open} - handleClose={handlers.close} - invalidateQuery={invalidateQuery} - /> - </TableCell> - </> - ); -} diff --git a/src/client/features/console/classTemporarySchedule/components/EditTable/index.tsx b/src/client/features/console/classTemporarySchedule/components/EditTable/index.tsx @@ -1,49 +0,0 @@ -import { - TableContainer, - Paper, - Table, - TableHead, - TableRow, - TableCell, - TableBody, -} from '@mui/material'; - -import Row from './Row'; - -import type { ClassTemporarySchedule } from '@prisma/client'; - -type Props = { - data: ClassTemporarySchedule[]; - invalidateQuery: () => Promise<void>; -}; - -export default function EditTable({ data, invalidateQuery }: Props) { - const sorted = data - .sort((a, b) => b.period - a.period) - .sort((a, b) => { - return b.date.getTime() - a.date.getTime(); - }); - return ( - <TableContainer component={Paper}> - <Table size='small'> - <TableHead> - <TableRow> - <TableCell>ID</TableCell> - <TableCell>日付</TableCell> - <TableCell>時限</TableCell> - <TableCell>変更後の科目</TableCell> - <TableCell>グループID</TableCell> - <TableCell>更新日時</TableCell> - <TableCell>編集</TableCell> - <TableCell>削除</TableCell> - </TableRow> - </TableHead> - <TableBody> - {sorted.map((one) => ( - <Row data={one} invalidateQuery={invalidateQuery} key={one.id} /> - ))} - </TableBody> - </Table> - </TableContainer> - ); -} diff --git a/src/client/features/console/classTemporarySchedule/components/InputView.tsx b/src/client/features/console/classTemporarySchedule/components/InputView.tsx @@ -1,23 +0,0 @@ -import { Stack } from '@mui/material'; - -import useGetAll from '../hooks/useGetAllQuery'; - -import CreateForm from './CreateForm'; -import EditTable from './EditTable'; - -type Props = { - classId: number; -}; - -export default function InputView({ classId }: Props) { - const { entries, invalidateQuery } = useGetAll(classId); - - return ( - <Stack spacing={4}> - <CreateForm classId={classId} invalidateQuery={invalidateQuery} /> - {entries && ( - <EditTable data={entries} invalidateQuery={invalidateQuery} /> - )} - </Stack> - ); -} diff --git a/src/client/features/console/classTemporarySchedule/hooks/useGetAllQuery.ts b/src/client/features/console/classTemporarySchedule/hooks/useGetAllQuery.ts @@ -1,37 +0,0 @@ -import { useSnackbar } from 'notistack'; - -import { trpc } from 'client/utils/trpc'; - -import type { ClassTemporarySchedule } from '@prisma/client'; - -type Return = { - loading: boolean; - entries: ClassTemporarySchedule[] | undefined; - invalidateQuery: () => Promise<void>; -}; - -const useGetAll = (classId: number): Return => { - const { enqueueSnackbar } = useSnackbar(); - const trpcCtx = trpc.useContext(); - - const query = trpc.classTemporarySchedule.getAll.useQuery( - { classId }, - { - onError: () => - enqueueSnackbar('エラーが発生しました', { - variant: 'error', - autoHideDuration: 6000, - }), - } - ); - const invalidateQuery = () => - trpcCtx.classTemporarySchedule.getAll.invalidate({ classId }); - - return { - loading: query.isLoading, - entries: query.data, - invalidateQuery, - }; -}; - -export default useGetAll; diff --git a/src/client/features/console/classTemporarySchedule/index.tsx b/src/client/features/console/classTemporarySchedule/index.tsx @@ -1,36 +0,0 @@ -import { Alert, Box } from '@mui/material'; -import { useState } from 'react'; - -import ClassPicker from 'client/components/ClassPicker'; - -import InputView from './components/InputView'; - -import type { SchoolClass } from '@prisma/client'; - -type Props = { - classes: SchoolClass[]; -}; - -export default function ClassTemporaryScheduleEditor({ classes }: Props) { - const [classId, setClassId] = useState<number>(); - - return ( - <> - <Box m={4}> - <Alert severity='error' variant='filled'> - 現在、臨時変更機能は使用しないことになっています。臨時変更データは入力しないでください! - </Alert> - </Box> - - <Box width='8rem' m={4}> - <ClassPicker - classes={classes} - classId={classId} - setClassId={setClassId} - /> - </Box> - - {classId && <InputView classId={classId} />} - </> - ); -} diff --git a/src/client/features/console/event/components/CreateForm.tsx b/src/client/features/console/event/components/CreateForm.tsx @@ -1,85 +0,0 @@ -import SaveIcon from '@mui/icons-material/Save'; -import { LoadingButton } from '@mui/lab'; -import { Box, Grid, Paper } from '@mui/material'; -import { - DatePickerElement, - CheckboxButtonGroup, - TextFieldElement, - FormContainer, -} from 'react-hook-form-mui'; - -import DatePickerLocalizationProvider from 'client/components/DatePickerLocalizationProvider'; -import { GRADES } from 'common/constant'; - -import useCreateForm from '../hooks/useCreateForm'; - -import type { FormInputs } from '../hooks/useCreateForm'; - -export default function CreateForm() { - const { formContext, handleCreate, loading } = useCreateForm(); - - return ( - <Box component={Paper} p={4}> - <FormContainer formContext={formContext} onSuccess={handleCreate}> - <Grid container spacing={4}> - <Grid item width='15rem'> - <DatePickerLocalizationProvider> - <DatePickerElement<FormInputs> - label='日付' - name='date' - required - disabled={loading} - slotProps={{ - toolbar: { toolbarFormat: 'M月d日' }, - }} - /> - </DatePickerLocalizationProvider> - </Grid> - - <Grid item> - <CheckboxButtonGroup<FormInputs> - label='学年' - name='grades' - options={GRADES.map((g) => ({ - id: g, - label: `${g}年`, - }))} - required - row - disabled={loading} - /> - </Grid> - - <Grid item width={250}> - <TextFieldElement<FormInputs> - label='タイトル' - name='title' - required - disabled={loading} - /> - </Grid> - - <Grid item> - <TextFieldElement<FormInputs> - label='詳細' - name='detail' - disabled={loading} - /> - </Grid> - - <Grid item> - <LoadingButton - type='submit' - variant='contained' - startIcon={<SaveIcon />} - loadingPosition='start' - loading={loading} - > - 新規作成 - </LoadingButton> - </Grid> - </Grid> - </FormContainer> - </Box> - ); -} diff --git a/src/client/features/console/event/components/EditTable/DeleteCell.tsx b/src/client/features/console/event/components/EditTable/DeleteCell.tsx @@ -1,72 +0,0 @@ -import { useDisclosure } from '@mantine/hooks'; -import DeleteIcon from '@mui/icons-material/Delete'; -import LoadingButton from '@mui/lab/LoadingButton'; -import { - DialogTitle, - DialogContent, - DialogContentText, - DialogActions, - Button, - TableCell, - IconButton, - Dialog, -} from '@mui/material'; - -import formatDate from 'common/utils/formatDate'; - -import useDeleteMutation from '../../hooks/useDeleteMutation'; - -import type { SchoolEvent } from '@prisma/client'; - -type DeleteDialogProps = { - data: SchoolEvent; - open: boolean; - handleClose: () => void; -}; - -function DeleteDialog({ data, open, handleClose }: DeleteDialogProps) { - const { mutateAsync, isLoading } = useDeleteMutation(); - const handleDelete = () => { - mutateAsync({ id: data.id }).then(() => handleClose()); - }; - - const dateString = formatDate(data.date, 'yyyy/MM/dd (EEEEE)'); - const content = `${dateString} 「${data.title}」を永久に削除してもよろしいですか?`; - - return ( - <Dialog open={open} onClose={handleClose}> - <DialogTitle>本当に削除しますか?</DialogTitle> - <DialogContent> - <DialogContentText>{content}</DialogContentText> - </DialogContent> - <DialogActions> - <Button onClick={handleClose}>いいえ</Button> - <LoadingButton onClick={handleDelete} loading={isLoading}> - 削除する - </LoadingButton> - </DialogActions> - </Dialog> - ); -} - -type Props = { - data: SchoolEvent; -}; - -export default function DeleteCell({ data }: Props) { - const [open, handlers] = useDisclosure(false); - - return ( - <TableCell> - <IconButton - onClick={handlers.open} - aria-label='削除する' - sx={{ color: 'red' }} - size='small' - > - <DeleteIcon /> - </IconButton> - <DeleteDialog data={data} open={open} handleClose={handlers.close} /> - </TableCell> - ); -} diff --git a/src/client/features/console/event/components/EditTable/GradeSelector.tsx b/src/client/features/console/event/components/EditTable/GradeSelector.tsx @@ -1,38 +0,0 @@ -import { - Checkbox, - FormControl, - FormControlLabel, - FormGroup, - FormLabel, -} from '@mui/material'; - -import { GRADES } from 'common/constant'; - -import type { Grade } from 'common/types'; - -type Props = { - selectedGrades: Grade[]; - handleChange: (grade: Grade, selected: boolean) => void; -}; - -export default function GradeSelector({ selectedGrades, handleChange }: Props) { - return ( - <FormControl component='fieldset'> - <FormLabel component='legend'>学年で絞り込む</FormLabel> - <FormGroup row> - {GRADES.map((g) => ( - <FormControlLabel - control={ - <Checkbox - checked={selectedGrades.includes(g)} - onChange={(_, checked) => handleChange(g, checked)} - /> - } - label={`${g}年`} - key={g} - /> - ))} - </FormGroup> - </FormControl> - ); -} diff --git a/src/client/features/console/event/components/EditTable/UpdateCell.tsx b/src/client/features/console/event/components/EditTable/UpdateCell.tsx @@ -1,122 +0,0 @@ -import { useDisclosure } from '@mantine/hooks'; -import EditIcon from '@mui/icons-material/Edit'; -import { LoadingButton } from '@mui/lab'; -import { - TableCell, - IconButton, - Box, - Button, - Dialog, - DialogActions, - DialogContent, - DialogTitle, - Stack, -} from '@mui/material'; -import { - CheckboxButtonGroup, - DatePickerElement, - FormContainer, - TextFieldElement, -} from 'react-hook-form-mui'; - -import DatePickerLocalizationProvider from 'client/components/DatePickerLocalizationProvider'; -import { GRADES } from 'common/constant'; - -import useUpdateForm from '../../hooks/useUpdateForm'; - -import type { FormInputs } from '../../hooks/useUpdateForm'; -import type { SchoolEvent } from '@prisma/client'; - -type DialogProps = { - data: SchoolEvent; - open: boolean; - handleClose: () => void; -}; - -function UpdateDialog({ data, open, handleClose }: DialogProps) { - const { formContext, handleUpdate, loading } = useUpdateForm({ - eventData: data, - handleClose, - }); - - return ( - <Dialog open={open} onClose={handleClose}> - <FormContainer formContext={formContext} onSuccess={handleUpdate}> - <DialogTitle>ID: {data.id} の編集</DialogTitle> - <DialogContent> - <Stack direction='column' spacing={4} m={1}> - <Box width={250}> - <DatePickerLocalizationProvider> - <DatePickerElement<FormInputs> - label='日付' - name='date' - required - disabled={loading} - slotProps={{ - toolbar: { toolbarFormat: 'M月d日' }, - }} - /> - </DatePickerLocalizationProvider> - </Box> - - <Box> - <CheckboxButtonGroup<FormInputs> - label='学年' - name='grades' - options={GRADES.map((g) => ({ - id: g, - label: `${g}年`, - }))} - required - row - disabled={loading} - /> - </Box> - - <Box width={250}> - <TextFieldElement<FormInputs> - label='タイトル' - name='title' - required - disabled={loading} - /> - </Box> - - <Box> - <TextFieldElement<FormInputs> - label='詳細' - name='detail' - disabled={loading} - /> - </Box> - </Stack> - </DialogContent> - <DialogActions> - <Button onClick={handleClose}>キャンセル</Button> - <LoadingButton type='submit' loading={loading}> - 保存する - </LoadingButton> - </DialogActions> - </FormContainer> - </Dialog> - ); -} - -type Props = { - data: SchoolEvent; -}; - -export default function UpdateCell({ data }: Props) { - const [open, handlers] = useDisclosure(false); - - return ( - <> - <TableCell> - <IconButton onClick={handlers.open} aria-label='編集する' size='small'> - <EditIcon /> - </IconButton> - <UpdateDialog data={data} open={open} handleClose={handlers.close} /> - </TableCell> - </> - ); -} diff --git a/src/client/features/console/event/components/EditTable/index.tsx b/src/client/features/console/event/components/EditTable/index.tsx @@ -1,86 +0,0 @@ -import { - TableContainer, - Paper, - Table, - TableHead, - TableRow, - TableCell, - TableBody, - Stack, -} from '@mui/material'; -import { useCallback, useState } from 'react'; - -import { GRADES } from 'common/constant'; -import formatDate from 'common/utils/formatDate'; - -import useFilteredEvents from '../../hooks/useFilteredEvents'; - -import DeleteCell from './DeleteCell'; -import GradeSelector from './GradeSelector'; -import UpdateCell from './UpdateCell'; - -import type { Grade } from 'common/types'; - -export default function EditTable() { - const [gradeSelection, setGradeSelection] = useState({ - 1: true, - 2: true, - 3: true, - }); - const selectedGrades = GRADES.flatMap((g) => - gradeSelection[g] === true ? g : [] - ); - const handleChange = useCallback((grade: Grade, checked: boolean) => { - setGradeSelection((old) => ({ - ...old, - [grade]: checked, - })); - }, []); - - const { loading, data: events } = useFilteredEvents(selectedGrades); - - return ( - <Stack spacing={2}> - <GradeSelector - selectedGrades={selectedGrades} - handleChange={handleChange} - /> - {!loading && ( - <TableContainer component={Paper}> - <Table size='small'> - <TableHead> - <TableRow> - <TableCell>ID</TableCell> - <TableCell>日付</TableCell> - <TableCell>学年</TableCell> - <TableCell>タイトル</TableCell> - <TableCell>詳細</TableCell> - <TableCell>更新日時</TableCell> - <TableCell>編集</TableCell> - <TableCell>削除</TableCell> - </TableRow> - </TableHead> - <TableBody> - {events.map((e) => ( - <TableRow key={e.id}> - <TableCell>{e.id}</TableCell> - <TableCell> - {formatDate(e.date, 'yyyy/MM/dd (EEEEE)')} - </TableCell> - <TableCell>{e.grades.sort().join(', ')}</TableCell> - <TableCell>{e.title}</TableCell> - <TableCell>{e.detail}</TableCell> - <TableCell> - {formatDate(e.updatedAt, 'yyyy/MM/dd (EEEEE) HH:mm:ss')} - </TableCell> - <UpdateCell data={e} /> - <DeleteCell data={e} /> - </TableRow> - ))} - </TableBody> - </Table> - </TableContainer> - )} - </Stack> - ); -} diff --git a/src/client/features/console/event/hooks/useCreateForm.ts b/src/client/features/console/event/hooks/useCreateForm.ts @@ -1,65 +0,0 @@ -import { zodResolver } from '@hookform/resolvers/zod'; -import { useSnackbar } from 'notistack'; -import { - type UseFormReturn, - type SubmitHandler, - useForm, -} from 'react-hook-form'; -import { z } from 'zod'; - -import { trpc } from 'client/utils/trpc'; -import { DATE_FORMAT } from 'common/constant'; -import formatDate from 'common/utils/formatDate'; -import { zodGrade } from 'common/utils/zod'; - -const schema = z.object({ - date: z.date(), - grades: z.array(zodGrade).nonempty('1つ以上選択してください'), - title: z.string({ required_error: '必須入力です' }).nonempty('必須入力です'), - detail: z.string().nullish(), -}); - -export type FormInputs = z.infer<typeof schema>; - -type Return = { - formContext: UseFormReturn<FormInputs>; - handleCreate: SubmitHandler<FormInputs>; - loading: boolean; -}; - -const useCreateForm = (): Return => { - const { enqueueSnackbar } = useSnackbar(); - const trpcCtx = trpc.useContext(); - - const mutation = trpc.event.create.useMutation({ - onSuccess: () => { - trpcCtx.event.getAll.invalidate(); - enqueueSnackbar('正常に作成しました', { - variant: 'success', - autoHideDuration: 2000, - }); - }, - onError: (err) => - enqueueSnackbar(`エラーが発生しました\n${err.message}`, { - variant: 'error', - autoHideDuration: 6000, - }), - }); - - const formContext: UseFormReturn<FormInputs> = useForm<FormInputs>({ - defaultValues: { - grades: [1, 2, 3], - }, - resolver: zodResolver(schema), - }); - - const handleCreate: SubmitHandler<FormInputs> = ({ date, ...rest }) => { - mutation - .mutateAsync({ date: formatDate(date, DATE_FORMAT), ...rest }) - .then(() => formContext.reset()); - }; - - return { formContext, handleCreate, loading: mutation.isLoading }; -}; - -export default useCreateForm; diff --git a/src/client/features/console/event/hooks/useDeleteMutation.ts b/src/client/features/console/event/hooks/useDeleteMutation.ts @@ -1,27 +0,0 @@ -import { useSnackbar } from 'notistack'; - -import { trpc } from 'client/utils/trpc'; - -const useDeleteMutation = () => { - const { enqueueSnackbar } = useSnackbar(); - const trpcCtx = trpc.useContext(); - - const mutation = trpc.event.delete.useMutation({ - onSuccess: () => { - trpcCtx.event.getAll.invalidate(); - enqueueSnackbar('正常に削除しました', { - variant: 'success', - autoHideDuration: 2000, - }); - }, - onError: (err) => - enqueueSnackbar(`エラーが発生しました\n${err.message}`, { - variant: 'error', - autoHideDuration: 6000, - }), - }); - - return mutation; -}; - -export default useDeleteMutation; diff --git a/src/client/features/console/event/hooks/useFilteredEvents.ts b/src/client/features/console/event/hooks/useFilteredEvents.ts @@ -1,34 +0,0 @@ -import { intersection } from 'lodash'; -import { useMemo } from 'react'; - -import { trpc } from 'client/utils/trpc'; - -import type { SchoolEvent } from '@prisma/client'; -import type { Grade } from 'common/types'; - -intersection; - -type Return = { - loading: boolean; - data: SchoolEvent[]; -}; - -const useFilteredEvents = (selectedGrades: Grade[]): Return => { - const query = trpc.event.getAll.useQuery(); - - const data = useMemo(() => { - if (query.data) { - return query.data - .filter((e) => intersection(e.grades, selectedGrades).length > 0) - .sort((a, b) => b.date.getTime() - a.date.getTime()); - } - return []; - }, [query.data, selectedGrades]); - - return { - loading: query.isLoading, - data, - }; -}; - -export default useFilteredEvents; diff --git a/src/client/features/console/event/hooks/useUpdateForm.ts b/src/client/features/console/event/hooks/useUpdateForm.ts @@ -1,75 +0,0 @@ -import { zodResolver } from '@hookform/resolvers/zod'; -import { useSnackbar } from 'notistack'; -import { useForm } from 'react-hook-form'; -import { z } from 'zod'; - -import { trpc } from 'client/utils/trpc'; -import { DATE_FORMAT } from 'common/constant'; -import formatDate from 'common/utils/formatDate'; -import { zodGrade } from 'common/utils/zod'; - -import type { SchoolEvent } from '@prisma/client'; -import type { SubmitHandler, UseFormReturn } from 'react-hook-form'; - -const schema = z.object({ - date: z.date(), - grades: z.array(zodGrade).nonempty('1つ以上選択してください'), - title: z.string({ required_error: '必須入力です' }).nonempty('必須入力です'), - detail: z.string().nullable(), -}); - -export type FormInputs = z.infer<typeof schema>; - -type Params = { - eventData: SchoolEvent; - handleClose: () => void; -}; -type Return = { - formContext: UseFormReturn<FormInputs>; - handleUpdate: SubmitHandler<FormInputs>; - loading: boolean; -}; - -const useUpdateForm = ({ eventData, handleClose }: Params): Return => { - const { enqueueSnackbar } = useSnackbar(); - const trpcCtx = trpc.useContext(); - - const mutation = trpc.event.update.useMutation({ - onSuccess: () => { - trpcCtx.event.getAll.invalidate(); - enqueueSnackbar('正常に更新しました', { - variant: 'success', - autoHideDuration: 2000, - }); - }, - onError: (err) => - enqueueSnackbar(`エラーが発生しました\n${err.message}`, { - variant: 'error', - autoHideDuration: 6000, - }), - }); - - const formContext: UseFormReturn<FormInputs> = useForm<FormInputs>({ - defaultValues: { - date: eventData.date, - grades: z.array(zodGrade).nonempty().parse(eventData.grades), - title: eventData.title, - detail: eventData.detail ?? '', - }, - resolver: zodResolver(schema), - }); - - const handleUpdate: SubmitHandler<FormInputs> = ({ date, ...rest }) => { - mutation - .mutateAsync({ - id: eventData.id, - date: formatDate(date, DATE_FORMAT), - ...rest, - }) - .then(() => handleClose()); - }; - - return { formContext, handleUpdate, loading: mutation.isLoading }; -}; - -export default useUpdateForm; diff --git a/src/client/features/console/event/index.tsx b/src/client/features/console/event/index.tsx @@ -1,13 +0,0 @@ -import { Stack } from '@mui/material'; - -import CreateForm from './components/CreateForm'; -import EditTable from './components/EditTable'; - -export default function EventEditor() { - return ( - <Stack spacing={4} my={4}> - <CreateForm /> - <EditTable /> - </Stack> - ); -} diff --git a/src/client/features/console/gradeSchedule/components/DatePicker.tsx b/src/client/features/console/gradeSchedule/components/DatePicker.tsx @@ -1,42 +0,0 @@ -import ChevronLeftIcon from '@mui/icons-material/ChevronLeft'; -import ChevronRightIcon from '@mui/icons-material/ChevronRight'; -import { Stack, IconButton, Box } from '@mui/material'; -import { addDays, subDays } from 'date-fns'; - -import DatePicker from 'client/components/DatePicker'; - -import type { Dispatch, SetStateAction } from 'react'; - -type Props = { - date: Date; - setDate: Dispatch<SetStateAction<Date>>; - disabled: boolean; -}; - -function DatePickerWithSideButton({ date, setDate, disabled }: Props) { - return ( - <Stack direction='row' spacing={1} alignItems='flex-start' m={4}> - <IconButton - disabled={disabled} - onClick={() => setDate((old) => subDays(old, 1))} - > - <ChevronLeftIcon /> - </IconButton> - <Box width='12rem'> - <DatePicker - value={date} - onChange={(newValue) => newValue && setDate(newValue)} - disabled={disabled} - /> - </Box> - <IconButton - disabled={disabled} - onClick={() => setDate((old) => addDays(old, 1))} - > - <ChevronRightIcon /> - </IconButton> - </Stack> - ); -} - -export default DatePickerWithSideButton; diff --git a/src/client/features/console/gradeSchedule/components/InputForm.tsx b/src/client/features/console/gradeSchedule/components/InputForm.tsx @@ -1,105 +0,0 @@ -import EditIcon from '@mui/icons-material/Edit'; -import { - Autocomplete, - Box, - Button, - Grid, - Paper, - Stack, - TextField, - Typography, -} from '@mui/material'; - -import { - SCHOOL_TIMES, - DAY_PERIOD_JA, - DAY_PERIOD_MAP_EN_TO_JA, - DAY_PERIOD_MAP_JA_TO_EN, -} from 'common/constant'; - -import type { DayPeriod } from '@prisma/client'; -import type { Grade, SchoolTime } from 'common/types'; - -type UnitInputFormProps = { - value: DayPeriod | null; - onChange: (newValue: DayPeriod | null) => void; - schoolTime: SchoolTime; - disabled: boolean; -}; - -function UnitInputForm({ - value, - onChange, - schoolTime, - disabled, -}: UnitInputFormProps) { - return ( - <Box width={120}> - <Autocomplete - disablePortal - autoSelect - disabled={disabled} - options={DAY_PERIOD_JA} - value={value && DAY_PERIOD_MAP_EN_TO_JA[value]} - onChange={(_, newValue) => - onChange(newValue ? DAY_PERIOD_MAP_JA_TO_EN[newValue] : newValue) - } - fullWidth - renderInput={(params) => ( - <TextField {...params} label={`${schoolTime}限`} /> - )} - /> - </Box> - ); -} - -type Props = { - grade: Grade; - get: (key: SchoolTime) => DayPeriod | null; - set: (key: SchoolTime, value: DayPeriod | null) => void; - setBasedOnDay: () => void; - disabled: boolean; -}; - -export default function InputForm({ - grade, - get, - set, - setBasedOnDay, - disabled, -}: Props) { - return ( - <Box component={Paper} p={{ xs: 2, md: 4 }}> - <Stack direction='row' alignItems='center' spacing={6}> - <Typography variant='h3' fontSize={20} fontWeight={400}> - {grade}年 - </Typography> - - <Box> - <Button - variant='outlined' - color='secondary' - disabled={disabled} - startIcon={<EditIcon />} - onClick={() => setBasedOnDay()} - > - 時間割通りで自動入力 - </Button> - </Box> - </Stack> - - <Grid container spacing={2} mt={2}> - {SCHOOL_TIMES.map((schoolTime) => ( - <Grid item key={schoolTime}> - <UnitInputForm - schoolTime={schoolTime} - value={get(schoolTime)} - onChange={(newValue) => set(schoolTime, newValue)} - disabled={disabled} - /> - </Grid> - ))} - </Grid> - </Box> - ); -} diff --git a/src/client/features/console/gradeSchedule/hooks/useGradeSchedule.ts b/src/client/features/console/gradeSchedule/hooks/useGradeSchedule.ts @@ -1,193 +0,0 @@ -import { addDays, startOfDay } from 'date-fns'; -import { useSnackbar } from 'notistack'; -import { useEffect, useState } from 'react'; - -import useMap from 'client/hooks/useMap'; -import { trpc } from 'client/utils/trpc'; -import { DATE_FORMAT } from 'common/constant'; -import formatDate from 'common/utils/formatDate'; - -import type { DayPeriod } from '@prisma/client'; -import type { Grade, SchoolTime } from 'common/types'; -import type { Dispatch, SetStateAction } from 'react'; - -type Getter = (where: { grade: Grade; period: SchoolTime }) => DayPeriod | null; -type Setter = ( - where: { grade: Grade; period: SchoolTime }, - value: DayPeriod | null -) => void; - -type Result = { - loading: boolean; - sending: boolean; - date: Date; - setDate: Dispatch<SetStateAction<Date>>; - getDayPeriod: Getter; - setDayPeriod: Setter; - setBasedOnDay: (grade: Grade) => void; - submit: () => Promise<unknown>; -}; - -export const useGradeSchedule = (): Result => { - const trpcCtx = trpc.useContext(); - const { enqueueSnackbar } = useSnackbar(); - - const [date, setDate] = useState(startOfDay(new Date())); - - // 編集済みデータ - const modified = { - 1: useMap<SchoolTime, DayPeriod | null>(), - 2: useMap<SchoolTime, DayPeriod | null>(), - 3: useMap<SchoolTime, DayPeriod | null>(), - }; - - const query = trpc.gradeSchedule.byDate.useQuery( - { date: formatDate(date, DATE_FORMAT) }, - { - onError: () => - enqueueSnackbar('エラーが発生しました', { - variant: 'error', - autoHideDuration: 6000, - }), - } - ); - - const mutation = trpc.gradeSchedule.update.useMutation({ - onSuccess: (data) => { - modified[1][1].reset(); - modified[2][1].reset(); - modified[3][1].reset(); - trpcCtx.gradeSchedule.byDate.setData( - { date: formatDate(data.date, DATE_FORMAT) }, - data - ); - enqueueSnackbar('正常に保存されました', { - variant: 'success', - autoHideDuration: 2000, - }); - }, - onError: () => { - enqueueSnackbar('エラーが発生しました', { - variant: 'error', - autoHideDuration: 6000, - }); - }, - }); - - // 日付が変わったときに実行 - useEffect(() => { - // 次の日の分をプリフェッチ - trpcCtx.gradeSchedule.byDate.prefetch( - { date: formatDate(addDays(date, 1), DATE_FORMAT) }, - { - retry: 0, - staleTime: 60 * 1000, // 60秒間は最新扱いする - } - ); - - // 編集中データを消去 - modified[1][1].reset(); - modified[2][1].reset(); - modified[3][1].reset(); - - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [date]); - - const get: Getter = (where) => { - if (modified[where.grade][0].has(where.period)) { - return modified[where.grade][0].get(where.period) ?? null; - } - return query.data?.schedule[where.grade].get(where.period) ?? null; - }; - - const set: Setter = (where, value) => { - modified[where.grade][1].set(where.period, value); - }; - - const setBasedOnDay = (grade: Grade) => { - const setAll = modified[grade][1].setAll; - switch (date.getDay()) { - case 1: // 月曜日 - return setAll([ - [1, 'Mon1'], - [2, 'Mon2'], - [3, 'Mon3'], - [4, 'Mon4'], - [5, 'Mon5'], - [6, 'Mon6'], - [7, 'Mon7'], - ]); - case 2: // 火曜日 - return setAll([ - [1, 'Tue1'], - [2, 'Tue2'], - [3, 'Tue3'], - [4, 'Tue4'], - [5, 'Tue5'], - [6, 'Tue6'], - [7, 'Tue7'], - ]); - case 3: // 水曜日 - return setAll([ - [1, 'Wed1'], - [2, 'Wed2'], - [3, 'Wed3'], - [4, 'Wed4'], - [5, 'Wed5'], - [6, 'Wed6'], - [7, 'Wed7'], - ]); - case 4: // 木曜日 - return setAll([ - [1, 'Thu1'], - [2, 'Thu2'], - [3, 'Thu3'], - [4, 'Thu4'], - [5, 'Thu5'], - [6, 'Thu6'], - [7, null], - ]); - case 5: // 金曜日 - return setAll([ - [1, 'Fri1'], - [2, 'Fri2'], - [3, 'Fri3'], - [4, 'Fri4'], - [5, 'Fri5'], - [6, 'Fri6'], - [7, 'Fri7'], - ]); - default: - return setAll([ - [1, null], - [2, null], - [3, null], - [4, null], - [5, null], - [6, null], - [7, null], - ]); - } - }; - - const submit = () => - mutation.mutateAsync({ - date: formatDate(date, DATE_FORMAT), - schedule: { - 1: new Map(modified[1][0].entries()), - 2: new Map(modified[2][0].entries()), - 3: new Map(modified[3][0].entries()), - }, - }); - - return { - loading: query.isLoading, - sending: mutation.isLoading, - date, - setDate, - getDayPeriod: get, - setDayPeriod: set, - setBasedOnDay, - submit, - }; -}; diff --git a/src/client/features/console/gradeSchedule/index.tsx b/src/client/features/console/gradeSchedule/index.tsx @@ -1,85 +0,0 @@ -import SaveIcon from '@mui/icons-material/Save'; -import { LoadingButton } from '@mui/lab'; -import { Checkbox, FormControlLabel, Stack } from '@mui/material'; -import { addDays } from 'date-fns'; -import { useState } from 'react'; - -import { GRADES } from 'common/constant'; - -import DatePicker from './components/DatePicker'; -import InputForm from './components/InputForm'; -import { useGradeSchedule } from './hooks/useGradeSchedule'; - -export default function GradeScheduleEditor() { - const { - date, - setDate, - loading, - sending, - getDayPeriod, - setDayPeriod, - setBasedOnDay, - submit, - } = useGradeSchedule(); - - const [transitionToNextAfterSubmit, setTransitionToNextAfterSubmit] = - useState(true); - - // 最新データがフェッチされるまでは操作可能にしない - const disabled = loading || sending; - - const handleSubmit = () => - submit().then(() => { - if (transitionToNextAfterSubmit) { - setDate((old) => addDays(old, 1)); - } - }); - - return ( - <> - <DatePicker date={date} setDate={setDate} disabled={disabled} /> - - <Stack spacing={4}> - {GRADES.map((grade) => ( - <InputForm - grade={grade} - get={(key) => getDayPeriod({ grade, period: key })} - set={(key, value) => setDayPeriod({ grade, period: key }, value)} - setBasedOnDay={() => setBasedOnDay(grade)} - disabled={disabled} - key={grade} - /> - ))} - </Stack> - - <Stack - direction={{ xs: 'column', sm: 'row' }} - spacing={{ xs: 2, sm: 4 }} - alignItems='flex-start' - mx={{ xs: 2, md: 4 }} - my={4} - > - <LoadingButton - variant='contained' - loading={sending} - loadingPosition='start' - disabled={disabled} - startIcon={<SaveIcon />} - onClick={handleSubmit} - > - 保存 - </LoadingButton> - - <FormControlLabel - control={ - <Checkbox - checked={transitionToNextAfterSubmit} - onChange={(_, checked) => setTransitionToNextAfterSubmit(checked)} - /> - } - label='保存後に翌日に遷移する' - /> - </Stack> - </> - ); -} diff --git a/src/client/features/daily/components/Lessons/BasisChip.tsx b/src/client/features/daily/components/Lessons/BasisChip.tsx @@ -1,6 +1,6 @@ import { Chip } from '@mui/material'; -import { DAY_PERIOD_MAP_EN_TO_JA, WEEKDAYS_EN } from 'common/constant'; +import { WEEKDAYS_JA } from 'common/constant'; import type { Basis } from '../../types'; import type { ChipProps } from '@mui/material'; @@ -17,8 +17,8 @@ export default function BasisChip({ data, date, period }: Props) { if (data.type === 'dayPeriod') { // 曜日時限の場合 - label = DAY_PERIOD_MAP_EN_TO_JA[data.dayPeriod]; - if (`${WEEKDAYS_EN[date.getDay()]}${period}` === data.dayPeriod) { + label = data.dayPeriod; + if (`${WEEKDAYS_JA[date.getDay()]}${period}` === data.dayPeriod) { // 曜日時限の変更がない場合 color = 'default'; } else { diff --git a/src/client/features/daily/components/Lessons/Events.tsx b/src/client/features/daily/components/Lessons/Events.tsx @@ -1,13 +1,11 @@ import EventNoteIcon from '@mui/icons-material/EventNote'; import { Box, Divider, Stack, Typography } from '@mui/material'; -import type { SchoolEvent } from '@prisma/client'; - type Props = { - events: SchoolEvent[]; + event: string; }; -export function Events({ events }: Props) { +export function Events({ event }: Props) { return ( <> <Stack @@ -18,30 +16,13 @@ export function Events({ events }: Props) { > <EventNoteIcon /> <Box width={1}> - {events.map(({ id, title, detail }) => ( - <Stack - direction='row' - spacing={1} - alignItems='center' - justifyContent='flex-start' - key={id} - > - <Typography - fontSize={{ xs: 20, sm: 24 }} - whiteSpace='nowrap' - component='span' - > - {title} - </Typography> - <Typography - variant='body2' - color='text.secondary' - component='span' - > - {detail} - </Typography> - </Stack> - ))} + <Typography + fontSize={{ xs: 20, sm: 24 }} + whiteSpace='nowrap' + component='span' + > + {event} + </Typography> </Box> </Stack> <Divider sx={{ mb: 1.5 }} /> diff --git a/src/client/features/daily/components/Lessons/Lesson.tsx b/src/client/features/daily/components/Lessons/Lesson.tsx @@ -18,9 +18,8 @@ import { gradeClassAtom } from '../../atoms'; import BasisChip from './BasisChip'; import Note from './Note'; -import type { Basis, LessonData } from '../../types'; -import type { DayPeriod } from '@prisma/client'; -import type { GradeClass, SchoolTime } from 'common/types'; +import type { Basis } from '../../types'; +import type { Course, DayPeriodJa, GradeClass, SchoolTime } from 'common/types'; const UnorderedList = styled('ul')({ margin: 0, @@ -50,7 +49,7 @@ const LessonSpan = styled('span')({ type LessonNameWithMySubjectProps = { subjects: readonly string[]; gradeClass: GradeClass; - dayPeriod: DayPeriod; + dayPeriod: DayPeriodJa; }; function LessonNameWithMySubject({ @@ -65,14 +64,17 @@ function LessonNameWithMySubject({ type Props = { date: Date; period: SchoolTime; - subjects: LessonData['subjects']; + courses: Course[]; basis: Basis | null; }; -export default function Lesson({ date, period, subjects, basis }: Props) { +export default function Lesson({ date, period, courses, basis }: Props) { const gradeClass = useAtomValue(gradeClassAtom); const [open, handlers] = useDisclosure(false); + const names = courses.map((c) => c.name); + const shortNames = courses.map((c) => c.shortName); + return ( <ListItem> <Stack @@ -89,10 +91,10 @@ export default function Lesson({ date, period, subjects, basis }: Props) { <LessonNameWithMySubject dayPeriod={basis.dayPeriod} gradeClass={gradeClass} - subjects={subjects} + subjects={shortNames} /> ) : ( - subjects.join('/') + shortNames.join('/') )} </LessonSpan> @@ -116,7 +118,7 @@ export default function Lesson({ date, period, subjects, basis }: Props) { </DialogTitle> <DialogContent> <UnorderedList> - {subjects.map((s) => ( + {names.map((s) => ( <li key={s}>{s}</li> ))} </UnorderedList> diff --git a/src/client/features/daily/components/Lessons/UpdateDateChip.tsx b/src/client/features/daily/components/Lessons/UpdateDateChip.tsx @@ -1,97 +0,0 @@ -import { useDisclosure } from '@mantine/hooks'; -import CloseIcon from '@mui/icons-material/Close'; -import UpdateIcon from '@mui/icons-material/Update'; -import { - Chip, - Dialog, - DialogContent, - DialogTitle, - Typography, - IconButton, -} from '@mui/material'; -import { styled } from '@mui/material/styles'; -import { max } from 'date-fns'; -import { useMemo } from 'react'; - -import { SCHOOL_TIMES } from 'common/constant'; -import formatDate from 'common/utils/formatDate'; - -import type { DayTimetable } from '../../types'; - -type Props = { - lessons: DayTimetable; -}; - -const UnorderedList = styled('ul')({ - margin: 0, - padding: 0, - listStyle: 'none', - marginBlockEnd: 8, -}); - -// TODO: イベント情報の更新日時を考慮する -export default function UpdateDateChip({ lessons }: Props) { - const [open, handlers] = useDisclosure(false); - - const latestUpdatedAt = useMemo(() => { - const dates = SCHOOL_TIMES.flatMap((st) => lessons[st]?.updated ?? []); - if (dates.length > 0) { - const latest = max(dates); - return formatDate(latest, 'yyyy/MM/dd'); - } else { - return null; - } - }, [lessons]); - - const detailItems = SCHOOL_TIMES.flatMap((st) => { - const data = lessons[st]; - if (data) { - return `${st}限 ${formatDate(data.updated, 'yyyy/MM/dd HH:mm')}`; - } else { - return []; - } - }); - - if (latestUpdatedAt === null) { - return <></>; - } - - return ( - <> - <Chip - icon={<UpdateIcon />} - size='small' - label={latestUpdatedAt} - clickable - onClick={handlers.toggle} - /> - <Dialog open={open} onClose={handlers.close}> - <DialogTitle marginRight={4}> - <div>データ更新日時</div> - <IconButton - aria-label='閉じる' - onClick={handlers.close} - sx={{ - position: 'absolute', - right: 8, - top: 8, - color: (theme) => theme.vars.palette.grey[500], - }} - > - <CloseIcon /> - </IconButton> - </DialogTitle> - <DialogContent> - <UnorderedList> - {detailItems.map((v) => ( - <li key={v}>{v}</li> - ))} - </UnorderedList> - <Typography variant='body2' color='text.secondary'> - ※「曜日時限」の更新日時 - </Typography> - </DialogContent> - </Dialog> - </> - ); -} diff --git a/src/client/features/daily/components/Lessons/index.tsx b/src/client/features/daily/components/Lessons/index.tsx @@ -6,7 +6,6 @@ import { SCHOOL_TIMES } from 'common/constant'; import { Events } from './Events'; import Lesson from './Lesson'; -import UpdateDateChip from './UpdateDateChip'; import type { DayTimetable } from '../../types'; @@ -36,21 +35,20 @@ function Lessons({ timetable }: Props) { })} component={Paper} > - {!!timetable.events.length && <Events events={timetable.events} />} + {!!timetable.event && <Events event={timetable.event} />} <List> {SCHOOL_TIMES.map((st) => { return ( <Lesson date={timetable.date} period={st} - subjects={timetable[st]?.subjects ?? []} - basis={timetable[st]?.basis ?? null} + courses={timetable[`period${st}`]?.courses ?? []} + basis={timetable[`period${st}`]?.basis ?? null} key={`${timetable.date}/${st}`} /> ); })} </List> - <UpdateDateChip lessons={timetable} /> </Box> ); } diff --git a/src/client/features/daily/types.ts b/src/client/features/daily/types.ts @@ -1,23 +1,12 @@ -import type { DayPeriod, SchoolEvent } from '@prisma/client'; +import type { Course, DayPeriodJa, SchoolPeriod } from 'common/types'; export type Basis = - | { type: 'dayPeriod'; dayPeriod: DayPeriod } + | { type: 'dayPeriod'; dayPeriod: DayPeriodJa } | { type: 'temporary'; id: number }; -export type LessonData = { - readonly subjects: readonly string[]; - readonly basis: Basis; - readonly updated: Date; -}; +export type OnePeriod = { courses: Course[]; basis: Basis }; export type DayTimetable = { date: Date; - events: SchoolEvent[]; - 1?: LessonData; - 2?: LessonData; - 3?: LessonData; - 4?: LessonData; - 5?: LessonData; - 6?: LessonData; - 7?: LessonData; -}; + event?: string; +} & Partial<Record<SchoolPeriod, OnePeriod>>; diff --git a/src/client/features/setting/components/MySubjectForm.tsx b/src/client/features/setting/components/MySubjectForm.tsx @@ -13,19 +13,14 @@ import { useCallback, useState } from 'react'; import useMyClass from 'client/hooks/useMyClass'; import useMySubject from 'client/hooks/useMySubject'; import { trpc } from 'client/utils/trpc'; -import { - DAY_PERIOD_EN, - DAY_PERIOD_MAP_EN_TO_JA, - GRADE_CLASSES, -} from 'common/constant'; +import { DAY_PERIOD_JA, GRADE_CLASSES } from 'common/constant'; import type { SelectChangeEvent } from '@mui/material'; -import type { DayPeriod } from '@prisma/client'; -import type { GradeClass } from 'common/types'; +import type { DayPeriodJa, GradeClass } from 'common/types'; type SubjectInputFieldProps = { gradeClass: GradeClass; - dayPeriod: DayPeriod; + dayPeriod: DayPeriodJa; defaultSubject: string; }; @@ -37,7 +32,7 @@ function SubjectInputField({ const [subject, setSubject] = useMySubject({ gradeClass, dayPeriod }); return ( <TextField - label={DAY_PERIOD_MAP_EN_TO_JA[dayPeriod]} + label={dayPeriod} value={subject ?? ''} helperText={defaultSubject} onChange={(e) => setSubject(e.target.value)} @@ -55,12 +50,12 @@ function SubjectInputGrid({ gradeClass }: SubjectInputGridProps) { return ( <Grid container spacing={2} my={0.5}> - {DAY_PERIOD_EN.map((dayPeriod) => ( + {DAY_PERIOD_JA.map((dayPeriod) => ( <Grid item width={150} key={dayPeriod}> <SubjectInputField gradeClass={gradeClass} dayPeriod={dayPeriod} - defaultSubject={data?.standard.get(dayPeriod)?.join('/') ?? ''} + defaultSubject={data?.standardTimetable[dayPeriod]?.join('/') ?? ''} /> </Grid> ))} diff --git a/src/client/hooks/useMySubject.ts b/src/client/hooks/useMySubject.ts @@ -2,18 +2,17 @@ import { useLocalStorage } from '@mantine/hooks'; import getSchoolYear from 'common/utils/getSchoolYear'; -import type { DayPeriod } from '@prisma/client'; -import type { GradeClass } from 'common/types'; +import type { DayPeriodJa, GradeClass } from 'common/types'; // ストレージのキー -const getStorageKey = (gradeClass: GradeClass, dayPeriod: DayPeriod) => { +const getStorageKey = (gradeClass: GradeClass, dayPeriod: DayPeriodJa) => { const schoolYear = getSchoolYear(); return `my_subject_data_${schoolYear}_${gradeClass}_${dayPeriod}`; }; type Params = { gradeClass: GradeClass; - dayPeriod: DayPeriod; + dayPeriod: DayPeriodJa; }; type Return = [ string | null, diff --git a/src/common/constant/index.ts b/src/common/constant/index.ts @@ -1,5 +1,4 @@ -import type { DayPeriod } from '@prisma/client'; -import type { DayPeriodJa } from 'common/types'; +import type { DayPeriodEn, DayPeriodJa } from 'common/types'; export const APP_TITLE = '岸高時間割アプリ'; export const APP_DESCRIPTION = '岸和田高校の時間割を確認できるアプリ'; @@ -125,81 +124,83 @@ export const DAY_PERIOD_JA = [ '金7', ] as const; -export const DAY_PERIOD_MAP_EN_TO_JA: Readonly<Record<DayPeriod, DayPeriodJa>> = - { - Mon1: '月1', - Mon2: '月2', - Mon3: '月3', - Mon4: '月4', - Mon5: '月5', - Mon6: '月6', - Mon7: '月7', - Tue1: '火1', - Tue2: '火2', - Tue3: '火3', - Tue4: '火4', - Tue5: '火5', - Tue6: '火6', - Tue7: '火7', - Wed1: '水1', - Wed2: '水2', - Wed3: '水3', - Wed4: '水4', - Wed5: '水5', - Wed6: '水6', - Wed7: '水7', - Thu1: '木1', - Thu2: '木2', - Thu3: '木3', - Thu4: '木4', - Thu5: '木5', - Thu6: '木6', - Fri1: '金1', - Fri2: '金2', - Fri3: '金3', - Fri4: '金4', - Fri5: '金5', - Fri6: '金6', - Fri7: '金7', - } as const; +export const DAY_PERIOD_MAP_EN_TO_JA: Readonly< + Record<DayPeriodEn, DayPeriodJa> +> = { + Mon1: '月1', + Mon2: '月2', + Mon3: '月3', + Mon4: '月4', + Mon5: '月5', + Mon6: '月6', + Mon7: '月7', + Tue1: '火1', + Tue2: '火2', + Tue3: '火3', + Tue4: '火4', + Tue5: '火5', + Tue6: '火6', + Tue7: '火7', + Wed1: '水1', + Wed2: '水2', + Wed3: '水3', + Wed4: '水4', + Wed5: '水5', + Wed6: '水6', + Wed7: '水7', + Thu1: '木1', + Thu2: '木2', + Thu3: '木3', + Thu4: '木4', + Thu5: '木5', + Thu6: '木6', + Fri1: '金1', + Fri2: '金2', + Fri3: '金3', + Fri4: '金4', + Fri5: '金5', + Fri6: '金6', + Fri7: '金7', +} as const; -export const DAY_PERIOD_MAP_JA_TO_EN: Readonly<Record<DayPeriodJa, DayPeriod>> = - { - 月1: 'Mon1', - 月2: 'Mon2', - 月3: 'Mon3', - 月4: 'Mon4', - 月5: 'Mon5', - 月6: 'Mon6', - 月7: 'Mon7', - 火1: 'Tue1', - 火2: 'Tue2', - 火3: 'Tue3', - 火4: 'Tue4', - 火5: 'Tue5', - 火6: 'Tue6', - 火7: 'Tue7', - 水1: 'Wed1', - 水2: 'Wed2', - 水3: 'Wed3', - 水4: 'Wed4', - 水5: 'Wed5', - 水6: 'Wed6', - 水7: 'Wed7', - 木1: 'Thu1', - 木2: 'Thu2', - 木3: 'Thu3', - 木4: 'Thu4', - 木5: 'Thu5', - 木6: 'Thu6', - 金1: 'Fri1', - 金2: 'Fri2', - 金3: 'Fri3', - 金4: 'Fri4', - 金5: 'Fri5', - 金6: 'Fri6', - 金7: 'Fri7', - } as const; +export const DAY_PERIOD_MAP_JA_TO_EN: Readonly< + Record<DayPeriodJa, DayPeriodEn> +> = { + 月1: 'Mon1', + 月2: 'Mon2', + 月3: 'Mon3', + 月4: 'Mon4', + 月5: 'Mon5', + 月6: 'Mon6', + 月7: 'Mon7', + 火1: 'Tue1', + 火2: 'Tue2', + 火3: 'Tue3', + 火4: 'Tue4', + 火5: 'Tue5', + 火6: 'Tue6', + 火7: 'Tue7', + 水1: 'Wed1', + 水2: 'Wed2', + 水3: 'Wed3', + 水4: 'Wed4', + 水5: 'Wed5', + 水6: 'Wed6', + 水7: 'Wed7', + 木1: 'Thu1', + 木2: 'Thu2', + 木3: 'Thu3', + 木4: 'Thu4', + 木5: 'Thu5', + 木6: 'Thu6', + 金1: 'Fri1', + 金2: 'Fri2', + 金3: 'Fri3', + 金4: 'Fri4', + 金5: 'Fri5', + 金6: 'Fri6', + 金7: 'Fri7', +} as const; export const DATE_FORMAT = 'yyyy-MM-dd'; diff --git a/src/common/types/index.ts b/src/common/types/index.ts @@ -1,10 +1,10 @@ -import type { DayPeriod } from '@prisma/client'; import type { CLASSES, GRADES, SCHOOL_TIMES, DAY_PERIOD_JA, GRADE_CLASSES, + DAY_PERIOD_EN, } from 'common/constant'; import type { ZodType } from 'zod'; @@ -21,7 +21,24 @@ export type Class = ArrayToUnion<typeof CLASSES>; export type GradeClass = ArrayToUnion<typeof GRADE_CLASSES>; export type SchoolTime = ArrayToUnion<typeof SCHOOL_TIMES>; +export type SchoolPeriod = `period${SchoolTime}`; +export type DayPeriodEn = ArrayToUnion<typeof DAY_PERIOD_EN>; export type DayPeriodJa = ArrayToUnion<typeof DAY_PERIOD_JA>; -export type ClassStandardTimetable = Map<DayPeriod, string[]>; +export type Course = { + dayPeriod: DayPeriodJa; + name: string; + shortName: string; + room?: string; + instructorID?: string; + note?: string; +}; + +export type ClassStandardTimetable = Record<DayPeriodJa, Course[]>; + +export type DaySchedule = Partial< + Record<SchoolPeriod, DayPeriodJa> & { event: string } +>; + +export type DaySchedulesByGrade = Partial<Record<`grade${Grade}`, DaySchedule>>; diff --git a/src/common/utils/formatDate.ts b/src/common/utils/formatDate.ts @@ -1,11 +1,14 @@ -/* eslint-disable import/no-duplicates */ -import format from 'date-fns/format'; +import { format } from 'date-fns'; import { ja } from 'date-fns/locale'; +import { DATE_FORMAT } from 'common/constant'; + const formatDate = ( - ...[date, formatString, options]: Parameters<typeof format> + date: Parameters<typeof format>[0], + formatStr: string = DATE_FORMAT, + options?: Parameters<typeof format>[2] ) => { - return format(date, formatString, { locale: ja, ...options }); + return format(date, formatStr, { locale: ja, ...options }); }; export default formatDate; diff --git a/src/pages/[class]/index.tsx b/src/pages/[class]/index.tsx @@ -1,19 +1,18 @@ import { Box } from '@mui/material'; -import { addDays, subDays } from 'date-fns'; +import { addDays, compareAsc, subDays } from 'date-fns'; import Head from 'client/components/Head'; import Layout from 'client/components/Layout'; import SlideFooter from 'client/components/SlideFooter'; import DailyView from 'client/features/daily'; -import { CLASSES, DATE_FORMAT, GRADES } from 'common/constant'; +import { CLASSES, GRADES } from 'common/constant'; import formatDate from 'common/utils/formatDate'; -import { zodClass, zodGrade, zodPeriod } from 'common/utils/zod'; +import { zodClass, zodGrade } from 'common/utils/zod'; import { caller } from 'server/routers/_app'; -import { prisma } from 'server/utils/prisma'; -import type { DayTimetable, LessonData } from 'client/features/daily/types'; -import type { Class, Grade } from 'common/types'; -import type { NextPage, GetStaticPaths, GetStaticProps } from 'next'; +import type { DayTimetable, OnePeriod } from 'client/features/daily/types'; +import type { Class, DayPeriodJa, Grade } from 'common/types'; +import type { GetStaticPaths, GetStaticProps, NextPage } from 'next'; type UrlQuery = { class: string; @@ -56,135 +55,72 @@ export const getStaticProps: GetStaticProps<PageProps, UrlQuery> = async ({ notFound: true, }; } + const gradeNumber = gradeParsed.data; + const classNumber = classParsed.data; const now = new Date(); const startDate = subDays(now, 5); const endDate = addDays(now, 30); // クラスの標準時間割表を取得 - const { standard, id: classId } = await caller.classStandard.byGradeAndClass({ - grade: gradeParsed.data, - class: classParsed.data, + const { standardTimetable } = await caller.classStandard.byGradeAndClass({ + grade: gradeNumber, + class: classNumber, }); // 学年の曜日時限時間割表を取得 - const schedules = await prisma.gradeSchedule.findMany({ - where: { - grade: gradeParsed.data, - date: { - gte: startDate, - lte: endDate, - }, - }, + const dayPeriodCalendar = await caller.dayPeriodSchedule.byGradeAndPeriod({ + grade: gradeNumber, + startDate: formatDate(startDate), + endDate: formatDate(endDate), }); // クラスの臨時変更を取得 - const temporarySchedules = await prisma.classTemporarySchedule.findMany({ - where: { - classId, - date: { - gte: startDate, - lte: endDate, - }, - }, - }); - - // 学年のイベントを取得 - const events = await prisma.schoolEvent.findMany({ - where: { - grades: { has: gradeParsed.data }, - date: { - gte: startDate, - lte: endDate, - }, - }, - }); - - // 時間割を構築していくMap - const calendar: Map<string, DayTimetable> = new Map(); - - // イベントでループしてMapに当てはめていく - events.forEach((event) => { - const dateString = formatDate(event.date, DATE_FORMAT); - const old = calendar.get(dateString); - if (old) { - calendar.set(dateString, { - ...old, - events: [...old.events, event], - }); - } else { - calendar.set(dateString, { - date: event.date, - events: [event], - }); - } - }); - - // 曜日時限時間割表の1コマずつでループしてMapに当てはめていく - schedules.forEach(({ date, period, dayPeriod, updatedAt }) => { - const dateString = formatDate(date, DATE_FORMAT); - const parsedPeriod = zodPeriod.safeParse(period); - - if (!parsedPeriod.success) return; - - const old = calendar.get(dateString); - const dataToAdd: LessonData = { - subjects: standard.get(dayPeriod) ?? [], - basis: { type: 'dayPeriod', dayPeriod }, - updated: updatedAt, - }; - - if (old) { - calendar.set(dateString, { - ...old, - [parsedPeriod.data]: dataToAdd, - }); + // 現在、臨時変更は扱っていない + + /** 曜日時限からクラスの科目データを返す */ + const makeOnePeriodData = ( + dayPeriod?: DayPeriodJa + ): OnePeriod | undefined => { + if (dayPeriod) { + return { + courses: standardTimetable[dayPeriod], + basis: { type: 'dayPeriod', dayPeriod }, + }; } else { - calendar.set(dateString, { - date: date, - events: [], - [parsedPeriod.data]: dataToAdd, - }); + return void 0; } - }); - - // 臨時変更を1コマずつループしてMapに当てはめていく - temporarySchedules.forEach(({ id, date, period, subjects, updatedAt }) => { - const dateString = formatDate(date, DATE_FORMAT); - const parsedPeriod = zodPeriod.safeParse(period); - - if (!parsedPeriod.success) return; - - const old = calendar.get(dateString); - const dataToAdd: LessonData = { - subjects, - basis: { type: 'temporary', id }, - updated: updatedAt, - }; + }; - if (old) { - calendar.set(dateString, { - ...old, - [parsedPeriod.data]: dataToAdd, - }); - } else { - calendar.set(dateString, { - date: date, - events: [], - [parsedPeriod.data]: dataToAdd, - }); + // 曜日時限時間割表にクラスの科目データを当てはめていく + const dayTimetableCalendar = dayPeriodCalendar.map( + ([date, sch]): [string, DayTimetable] => { + return [ + date, + { + date: sch.date, + event: sch.event, + period1: makeOnePeriodData(sch.period1), + period2: makeOnePeriodData(sch.period2), + period3: makeOnePeriodData(sch.period3), + period4: makeOnePeriodData(sch.period4), + period5: makeOnePeriodData(sch.period5), + period6: makeOnePeriodData(sch.period6), + period7: makeOnePeriodData(sch.period7), + }, + ]; } - }); + ); - // 日付順に並び替えた配列にする - const sorted = [...calendar.entries()].sort((a, b) => { - return a[1].date.getTime() - b[1].date.getTime(); - }); + // 日付順に並び替える + const sorted = dayTimetableCalendar.toSorted(([, a], [, b]) => + compareAsc(a.date, b.date) + ); return { props: { - grade: gradeParsed.data, - class: classParsed.data, + grade: gradeNumber, + class: classNumber, calendar: sorted, }, revalidate: 60 * 60, // 1時間毎の訪問で再生成 diff --git a/src/pages/console/class-standard.tsx b/src/pages/console/class-standard.tsx @@ -1,63 +0,0 @@ -import NavigateNextIcon from '@mui/icons-material/NavigateNext'; -import Box from '@mui/material/Box'; -import Breadcrumbs from '@mui/material/Breadcrumbs'; -import Container from '@mui/material/Container'; -import Typography from '@mui/material/Typography'; -import { createServerSideHelpers } from '@trpc/react-query/server'; -import superjson from 'superjson'; - -import Head from 'client/components/Head'; -import Link from 'client/components/Link'; -import ClassStandardTimetableEditor from 'client/features/console/classStandard'; -import { createContext } from 'server/context'; -import { appRouter } from 'server/routers/_app'; - -import type { SchoolClass } from '@prisma/client'; -import type { GetStaticProps } from 'next'; - -type PageProps = { - classes: SchoolClass[]; -}; - -export const getStaticProps: GetStaticProps<PageProps> = async () => { - const ssg = createServerSideHelpers({ - router: appRouter, - transformer: superjson, - ctx: await createContext(), - }); - - const classes = await ssg.class.all.fetch(); - - return { - props: { - trpcState: ssg.dehydrate(), - classes: classes, - }, - }; -}; - -export default function StandardTimetableEditPage({ classes }: PageProps) { - return ( - <> - <Head title='クラス別時間割表 登録・変更' /> - <Container maxWidth='lg' component={Box} py={2}> - <Breadcrumbs - separator={<NavigateNextIcon fontSize='small' />} - aria-label='breadcrumb' - > - <Link underline='hover' color='inherit' href='/'> - トップ - </Link> - <Link underline='hover' color='inherit' href='/console'> - データ管理 - </Link> - <Typography color='text.primary' variant='h2'> - クラス別時間割表 - </Typography> - </Breadcrumbs> - - <ClassStandardTimetableEditor classes={classes} /> - </Container> - </> - ); -} diff --git a/src/pages/console/class-temporary-schedule.tsx b/src/pages/console/class-temporary-schedule.tsx @@ -1,63 +0,0 @@ -import NavigateNextIcon from '@mui/icons-material/NavigateNext'; -import Box from '@mui/material/Box'; -import Breadcrumbs from '@mui/material/Breadcrumbs'; -import Container from '@mui/material/Container'; -import Typography from '@mui/material/Typography'; -import { createServerSideHelpers } from '@trpc/react-query/server'; -import superjson from 'superjson'; - -import Head from 'client/components/Head'; -import Link from 'client/components/Link'; -import ClassTemporaryScheduleEditor from 'client/features/console/classTemporarySchedule'; -import { createContext } from 'server/context'; -import { appRouter } from 'server/routers/_app'; - -import type { SchoolClass } from '@prisma/client'; -import type { GetStaticProps } from 'next'; - -type PageProps = { - classes: SchoolClass[]; -}; - -export const getStaticProps: GetStaticProps<PageProps> = async () => { - const ssg = createServerSideHelpers({ - router: appRouter, - transformer: superjson, - ctx: await createContext(), - }); - - const classes = await ssg.class.all.fetch(); - - return { - props: { - trpcState: ssg.dehydrate(), - classes: classes, - }, - }; -}; - -export default function ClassTemporaryScheduleEditPage({ classes }: PageProps) { - return ( - <> - <Head title='臨時変更 登録・変更' /> - <Container maxWidth='lg' component={Box} py={2}> - <Breadcrumbs - separator={<NavigateNextIcon fontSize='small' />} - aria-label='breadcrumb' - > - <Link underline='hover' color='inherit' href='/'> - トップ - </Link> - <Link underline='hover' color='inherit' href='/console'> - データ管理 - </Link> - <Typography color='text.primary' variant='h2'> - クラス別臨時時間割変更 - </Typography> - </Breadcrumbs> - - <ClassTemporaryScheduleEditor classes={classes} /> - </Container> - </> - ); -} diff --git a/src/pages/console/event.tsx b/src/pages/console/event.tsx @@ -1,35 +0,0 @@ -import NavigateNextIcon from '@mui/icons-material/NavigateNext'; -import Box from '@mui/material/Box'; -import Breadcrumbs from '@mui/material/Breadcrumbs'; -import Container from '@mui/material/Container'; -import Typography from '@mui/material/Typography'; - -import Head from 'client/components/Head'; -import Link from 'client/components/Link'; -import EventEditor from 'client/features/console/event'; - -export default function EventEditPage() { - return ( - <> - <Head title='イベント 登録・変更' /> - <Container maxWidth='lg' component={Box} py={2}> - <Breadcrumbs - separator={<NavigateNextIcon fontSize='small' />} - aria-label='breadcrumb' - > - <Link underline='hover' color='inherit' href='/'> - トップ - </Link> - <Link underline='hover' color='inherit' href='/console'> - データ管理 - </Link> - <Typography color='text.primary' variant='h2'> - イベント - </Typography> - </Breadcrumbs> - - <EventEditor /> - </Container> - </> - ); -} diff --git a/src/pages/console/grade-schedule.tsx b/src/pages/console/grade-schedule.tsx @@ -1,36 +0,0 @@ -import NavigateNextIcon from '@mui/icons-material/NavigateNext'; -import Box from '@mui/material/Box'; -import Breadcrumbs from '@mui/material/Breadcrumbs'; -import Container from '@mui/material/Container'; -import Typography from '@mui/material/Typography'; - -import Head from 'client/components/Head'; -import Link from 'client/components/Link'; -import GradeScheduleEditor from 'client/features/console/gradeSchedule'; - -// TODO: この登録画面の他に、一括確認画面を作る -export default function GradeScheduleEditPage() { - return ( - <> - <Head title='曜日時限時間割表 登録・変更' /> - <Container maxWidth='lg' component={Box} py={2}> - <Breadcrumbs - separator={<NavigateNextIcon fontSize='small' />} - aria-label='breadcrumb' - > - <Link underline='hover' color='inherit' href='/'> - トップ - </Link> - <Link underline='hover' color='inherit' href='/console'> - データ管理 - </Link> - <Typography color='text.primary' variant='h2'> - 学年別曜日時限時間割表 - </Typography> - </Breadcrumbs> - - <GradeScheduleEditor /> - </Container> - </> - ); -} diff --git a/src/pages/console/index.tsx b/src/pages/console/index.tsx @@ -1,49 +0,0 @@ -import NavigateNextIcon from '@mui/icons-material/NavigateNext'; -import Box from '@mui/material/Box'; -import Breadcrumbs from '@mui/material/Breadcrumbs'; -import Container from '@mui/material/Container'; -import Typography from '@mui/material/Typography'; - -import Head from 'client/components/Head'; -import Link from 'client/components/Link'; - -import type { NextPage } from 'next'; - -const Page: NextPage = () => { - return ( - <> - <Head title='データ管理トップ' /> - <Container maxWidth='lg' component={Box} py={2}> - <Breadcrumbs - separator={<NavigateNextIcon fontSize='small' />} - aria-label='breadcrumb' - > - <Link underline='hover' color='inherit' href='/'> - トップ - </Link> - <Typography color='text.primary' variant='h2'> - データ管理 - </Typography> - </Breadcrumbs> - <ul> - <li> - <Link href='/console/class-standard'>クラス別標準時間割表</Link> - </li> - <li> - <Link href='/console/grade-schedule'>学年別曜日時限時間割表</Link> - </li> - <li> - <Link href='/console/class-temporary-schedule'> - クラス別臨時変更 - </Link> - </li> - <li> - <Link href='/console/event'>イベント</Link> - </li> - </ul> - </Container> - </> - ); -}; - -export default Page; diff --git a/src/server/context.ts b/src/server/context.ts @@ -1,4 +1,4 @@ -import { prisma } from 'server/utils/prisma'; +// import { prisma } from 'server/utils/prisma'; import type * as trpc from '@trpc/server'; import type * as trpcNext from '@trpc/server/adapters/next'; @@ -10,7 +10,7 @@ export const createContext = async ( ) => { return { req: opts?.req, - prisma, + // prisma, }; }; export type Context = trpc.inferAsyncReturnType<typeof createContext>; diff --git a/src/server/routers/_app.ts b/src/server/routers/_app.ts @@ -1,14 +1,10 @@ import { z } from 'zod'; -import { procedure, router } from '../trpc'; -import { prisma } from '../utils/prisma'; +import { createCallerFactory, procedure, router } from '../trpc'; +// import { prisma } from '../utils/prisma'; -import { classRouter } from './class'; import { classStandardRouter } from './classStandard'; -import { classTemporaryScheduleRouter } from './classTemporarySchedule'; -import { classTemporaryScheduleGroupRouter } from './classTemporaryScheduleGroup'; -import { eventRouter } from './event'; -import { gradeScheduleRouter } from './gradeSchedule'; +import { dayPeriodScheduleRouter } from './dayPeriodSchedule'; export const appRouter = router({ hello: procedure @@ -18,18 +14,15 @@ export const appRouter = router({ greeting: `hello ${input?.text}`, }; }), - class: classRouter, classStandard: classStandardRouter, - gradeSchedule: gradeScheduleRouter, - classTemporarySchedule: classTemporaryScheduleRouter, - classTemporaryScheduleGroup: classTemporaryScheduleGroupRouter, - event: eventRouter, + dayPeriodSchedule: dayPeriodScheduleRouter, }); // export type definition of API export type AppRouter = typeof appRouter; -export const caller = appRouter.createCaller({ +const createCaller = createCallerFactory(appRouter); +export const caller = createCaller({ + // prisma, req: undefined, - prisma: prisma, }); diff --git a/src/server/routers/class.ts b/src/server/routers/class.ts @@ -1,52 +0,0 @@ -import { TRPCError } from '@trpc/server'; -import { z } from 'zod'; - -import { zodClass, zodGrade } from 'common/utils/zod'; -import { prisma } from 'server/utils/prisma'; - -import { router, procedure } from '../trpc'; - -import type { SchoolClass } from '@prisma/client'; - -export const classRouter = router({ - all: procedure - .input(z.object({ grade: zodGrade }).optional()) - .query<SchoolClass[]>(async ({ input }) => { - return await prisma.schoolClass.findMany({ - where: { grade: input?.grade }, - orderBy: [{ grade: 'asc' }, { class: 'asc' }], // クラス順 1-1 → 3-8 - }); - }), - - byId: procedure - .input(z.object({ id: z.number() })) - .query<SchoolClass>(async ({ input }) => { - const classData = await prisma.schoolClass.findUnique({ - where: { id: input.id }, - }); - if (classData) { - return classData; - } else { - throw new TRPCError({ - code: 'NOT_FOUND', - message: `id: '${input.id}' のデータは存在しませんでした。`, - }); - } - }), - - byGradeAndClassWithStandard: procedure - .input(z.object({ grade: zodGrade, class: zodClass })) - .query<SchoolClass>(async ({ input }) => { - const classData = await prisma.schoolClass.findUniqueOrThrow({ - where: { grade_class: { grade: input.grade, class: input.class } }, - }); - if (classData) { - return classData; - } else { - throw new TRPCError({ - code: 'NOT_FOUND', - message: `grade: '${input.grade}', class: ${input.class} のデータは存在しませんでした。`, - }); - } - }), -}); diff --git a/src/server/routers/classStandard.ts b/src/server/routers/classStandard.ts @@ -1,148 +1,46 @@ -import { TRPCError } from '@trpc/server'; import { z } from 'zod'; -import { - zodClass, - zodDayPeriod, - zodGrade, - zodGradeClass, -} from 'common/utils/zod'; -import { prisma } from 'server/utils/prisma'; +import { zodClass, zodGrade, zodGradeClass } from 'common/utils/zod'; -import { router, procedure } from '../trpc'; +import { allClassesStandardTimetable } from '../../../data/classStandard'; +import { procedure, router } from '../trpc'; -import type { SchoolClass } from '@prisma/client'; -import type { ClassStandardTimetable } from 'common/types'; +import type { + Class, + ClassStandardTimetable, + Grade, + GradeClass, +} from 'common/types'; export const classStandardRouter = router({ - byId: procedure - .input(z.object({ id: z.number() })) - .query<SchoolClass & { standard: ClassStandardTimetable }>( - async ({ input }) => { - const classData = await prisma.schoolClass.findUnique({ - where: { id: input.id }, - include: { dayPeriod_Subjects: true }, - }); - if (classData) { - const standard: ClassStandardTimetable = new Map( - classData.dayPeriod_Subjects.map((v) => [v.dayPeriod, v.subjects]) - ); - return { - id: classData.id, - grade: classData.grade, - class: classData.class, - standard, - updatedAt: classData.updatedAt, - }; - } else { - throw new TRPCError({ - code: 'NOT_FOUND', - message: `id: '${input.id}' のクラスは存在しませんでした。`, - }); - } - } - ), - byGradeAndClass: procedure .input(z.object({ grade: zodGrade, class: zodClass })) - .query<SchoolClass & { standard: ClassStandardTimetable }>( - async ({ input }) => { - const classData = await prisma.schoolClass.findUnique({ - where: { grade_class: { grade: input.grade, class: input.class } }, - include: { dayPeriod_Subjects: true }, - }); - if (classData) { - const standard: ClassStandardTimetable = new Map( - classData.dayPeriod_Subjects.map((v) => [v.dayPeriod, v.subjects]) - ); - return { - id: classData.id, - grade: classData.grade, - class: classData.class, - standard, - updatedAt: classData.updatedAt, - }; - } else { - throw new TRPCError({ - code: 'NOT_FOUND', - message: `grade: '${input.grade}', class: '${input.class}' のクラスは存在しませんでした。`, - }); - } - } - ), - - byGradeClass: procedure - .input(z.object({ gradeClass: zodGradeClass })) - .query<SchoolClass & { standard: ClassStandardTimetable }>( - async ({ input }) => { - const [g, c] = input.gradeClass.split('-') as [string, string]; - const classData = await prisma.schoolClass.findUnique({ - where: { grade_class: { grade: parseInt(g), class: parseInt(c) } }, - include: { dayPeriod_Subjects: true }, - }); - if (classData) { - const standard: ClassStandardTimetable = new Map( - classData.dayPeriod_Subjects.map((v) => [v.dayPeriod, v.subjects]) - ); - return { - id: classData.id, - grade: classData.grade, - class: classData.class, - standard, - updatedAt: classData.updatedAt, - }; - } else { - throw new TRPCError({ - code: 'NOT_FOUND', - message: `'${input.gradeClass}' のクラスは存在しませんでした。`, - }); - } - } - ), - - update: procedure - .input( - z.object({ - id: z.number(), - standard: z.map(zodDayPeriod, z.array(z.string())), - }) - ) - .mutation<SchoolClass & { standard: ClassStandardTimetable }>( - async ({ input }) => { - const classId = input.id; - const classData = await prisma.schoolClass.findUnique({ - where: { id: classId }, - }); - - if (!classData) { - throw new TRPCError({ - code: 'NOT_FOUND', - message: `id: '${input.id}' のクラスは存在しませんでした。`, - }); - } - - // 変更をDBに反映 (レコード削除操作は考慮しない) - await Promise.all( - [...input.standard.entries()].map(([dayPeriod, subjects]) => { - return prisma.class_DayPeriod_Subject.upsert({ - where: { classId_dayPeriod: { classId, dayPeriod } }, - create: { classId, dayPeriod, subjects }, - update: { subjects }, - }); - }) - ); - - const result = await prisma.class_DayPeriod_Subject.findMany({ - where: { classId }, - }); - const standard: ClassStandardTimetable = new Map( - result.map((v) => [v.dayPeriod, v.subjects]) - ); - - return { - ...classData, - standard, - }; - } - ), + .query<{ + grade: Grade; + class: Class; + gradeClass: GradeClass; + standardTimetable: ClassStandardTimetable; + }>(({ input }) => { + const gradeClass = `${input.grade}-${input.class}` as const; + const standardTimetable = allClassesStandardTimetable[gradeClass]; + + return { + grade: input.grade, + class: input.class, + gradeClass, + standardTimetable, + }; + }), + + byGradeClass: procedure.input(z.object({ gradeClass: zodGradeClass })).query<{ + gradeClass: GradeClass; + standardTimetable: ClassStandardTimetable; + }>(({ input }) => { + const standardTimetable = allClassesStandardTimetable[input.gradeClass]; + + return { + gradeClass: input.gradeClass, + standardTimetable, + }; + }), }); diff --git a/src/server/routers/classTemporarySchedule.ts b/src/server/routers/classTemporarySchedule.ts @@ -1,101 +0,0 @@ -import { Prisma } from '@prisma/client'; -import { TRPCError } from '@trpc/server'; -import { z } from 'zod'; - -import { zodPeriod } from 'common/utils/zod'; -import { prisma } from 'server/utils/prisma'; - -import { router, procedure } from '../trpc'; - -import type { ClassTemporarySchedule } from '@prisma/client'; - -export const classTemporaryScheduleRouter = router({ - getAll: procedure - .input(z.object({ classId: z.number() })) - .query<ClassTemporarySchedule[]>(async ({ input }) => { - return await prisma.classTemporarySchedule.findMany({ - where: { classId: input.classId }, - orderBy: [{ date: 'asc' }, { period: 'asc' }], - }); - }), - - create: procedure - .input( - z.object({ - date: z.string(), - period: zodPeriod, - classId: z.number(), - subjects: z.array(z.string()), - parentId: z.number().optional(), - }) - ) - .mutation<ClassTemporarySchedule>(async ({ input }) => { - try { - const date = z.coerce.date().parse(input.date); - return await prisma.classTemporarySchedule.create({ - data: { - date, - period: input.period, - class: { connect: { id: input.classId } }, - subjects: input.subjects, - parent: input.parentId ? { connect: { id: input.parentId } } : {}, - }, - }); - } catch (err) { - if (err instanceof Prisma.PrismaClientKnownRequestError) { - if (err.code === 'P2002') { - throw new TRPCError({ - code: 'BAD_REQUEST', - cause: err, - message: 'この日付、時限、クラスの臨時変更が既に存在します。', - }); - } - } - throw new TRPCError({ code: 'INTERNAL_SERVER_ERROR', cause: err }); - } - }), - - update: procedure - .input( - z.object({ - id: z.number(), - date: z.string().optional(), - period: zodPeriod.optional(), - subjects: z.array(z.string()).optional(), - parentId: z.number().optional(), - }) - ) - .mutation<ClassTemporarySchedule>(async ({ input }) => { - try { - const date = z.coerce.date().optional().parse(input.date); - return await prisma.classTemporarySchedule.update({ - where: { id: input.id }, - data: { - date, - period: input.period, - subjects: input.subjects, - parent: { connect: { id: input.parentId } }, - }, - }); - } catch (err) { - if (err instanceof Prisma.PrismaClientKnownRequestError) { - if (err.code === 'P2002') { - throw new TRPCError({ - code: 'BAD_REQUEST', - cause: err, - message: 'この日付、時限、クラスの臨時変更が既に存在します。', - }); - } - } - throw new TRPCError({ code: 'INTERNAL_SERVER_ERROR', cause: err }); - } - }), - - delete: procedure - .input(z.object({ id: z.number() })) - .mutation(async ({ input }) => { - return await prisma.classTemporarySchedule.delete({ - where: { id: input.id }, - }); - }), -}); diff --git a/src/server/routers/classTemporaryScheduleGroup.ts b/src/server/routers/classTemporaryScheduleGroup.ts @@ -1,67 +0,0 @@ -import { z } from 'zod'; - -import { zodPeriod } from 'common/utils/zod'; -import { prisma } from 'server/utils/prisma'; - -import { router, procedure } from '../trpc'; - -import type { - ClassTemporarySchedule, - ClassTemporaryScheduleGroup, -} from '@prisma/client'; - -type ClassTemporaryScheduleGroupWithChildren = ClassTemporaryScheduleGroup & { - children: ClassTemporarySchedule[]; -}; - -export const classTemporaryScheduleGroupRouter = router({ - getAll: procedure - .input(z.object({ classId: z.number() })) - .query<ClassTemporaryScheduleGroupWithChildren[]>(async ({ input }) => { - return await prisma.classTemporaryScheduleGroup.findMany({ - where: { - children: { - some: { classId: input.classId }, - }, - }, - include: { children: true }, - }); - }), - - create: procedure - .input( - z.object({ - classId: z.number(), - children: z.array( - z.object({ - date: z.date(), - period: zodPeriod, - subjects: z.array(z.string()), - }) - ), - note: z.string().optional(), - }) - ) - .mutation<ClassTemporaryScheduleGroupWithChildren>(async ({ input }) => { - const childrenData = input.children.map((data) => ({ - ...data, - classId: input.classId, - })); - return await prisma.classTemporaryScheduleGroup.create({ - data: { - children: { createMany: { data: childrenData } }, - note: input.note, - }, - include: { children: true }, - }); - }), - - delete: procedure - .input(z.object({ id: z.number() })) - .mutation<ClassTemporaryScheduleGroupWithChildren>(async ({ input }) => { - return await prisma.classTemporaryScheduleGroup.delete({ - where: { id: input.id }, - include: { children: true }, - }); - }), -}); diff --git a/src/server/routers/dayPeriodSchedule.ts b/src/server/routers/dayPeriodSchedule.ts @@ -0,0 +1,35 @@ +import { isAfter, isBefore } from 'date-fns'; +import { z } from 'zod'; + +import { zodGrade } from 'common/utils/zod'; + +import { dayPeriodSchedules } from '../../../data/dayPeriodSchedule'; +import { procedure, router } from '../trpc'; + +import type { DaySchedule } from 'common/types'; + +type DayScheduleWithDate = DaySchedule & { date: Date }; + +export const dayPeriodScheduleRouter = router({ + byGradeAndPeriod: procedure + .input( + z.object({ + grade: zodGrade, + startDate: z.string(), + endDate: z.string(), + }) + ) + .query<[string, DayScheduleWithDate][]>(async ({ input }) => { + const schedules = Object.entries(dayPeriodSchedules) + .filter( + ([date]) => + isAfter(date, input.startDate) && isBefore(date, input.endDate) + ) + .map(([date, allGradesSchedule]): [string, DayScheduleWithDate] => { + const schedule = { ...allGradesSchedule[`grade${input.grade}`] }; + return [date, { date: new Date(date), ...schedule }]; + }); + + return schedules; + }), +}); diff --git a/src/server/routers/event.ts b/src/server/routers/event.ts @@ -1,79 +0,0 @@ -import { z } from 'zod'; - -import { zodGrade } from 'common/utils/zod'; -import { prisma } from 'server/utils/prisma'; - -import { router, procedure } from '../trpc'; - -import type { SchoolEvent } from '@prisma/client'; - -export const eventRouter = router({ - getAll: procedure - .input( - z - .object({ - grades: z.array(zodGrade), - }) - .optional() - ) - .query<SchoolEvent[]>(async ({ input }) => { - const grades = input?.grades ?? [1, 2, 3]; - return await prisma.schoolEvent.findMany({ - where: { grades: { hasSome: grades } }, - }); - }), - - create: procedure - .input( - z.object({ - grades: z.array(zodGrade).nonempty(), - date: z.string(), - title: z.string(), - detail: z.string().nullish(), - }) - ) - .mutation<SchoolEvent>(async ({ input }) => { - const date = z.coerce.date().parse(input.date); - const grades = [...new Set(input.grades)].sort(); - const detail = input.detail === '' ? null : input.detail; - return await prisma.schoolEvent.create({ - data: { - grades: { set: grades }, - date, - title: input.title, - detail, - }, - }); - }), - - update: procedure - .input( - z.object({ - id: z.number(), - grades: z.array(zodGrade).nonempty().optional(), - date: z.string().optional(), - title: z.string().optional(), - detail: z.string().nullish(), - }) - ) - .mutation<SchoolEvent>(async ({ input }) => { - const date = z.coerce.date().optional().parse(input.date); - const grades = [...new Set(input.grades)].sort(); - const detail = input.detail === '' ? null : input.detail; - return await prisma.schoolEvent.update({ - where: { id: input.id }, - data: { - grades: { set: grades }, - date, - title: input.title, - detail, - }, - }); - }), - - delete: procedure - .input(z.object({ id: z.number() })) - .mutation(async ({ input }) => { - return await prisma.schoolEvent.delete({ where: { id: input.id } }); - }), -}); diff --git a/src/server/routers/gradeSchedule.ts b/src/server/routers/gradeSchedule.ts @@ -1,126 +0,0 @@ -import { z } from 'zod'; - -import { GRADES } from 'common/constant'; -import { zodPeriod, zodDayPeriod, zodGrade } from 'common/utils/zod'; -import { prisma } from 'server/utils/prisma'; - -import { router, procedure } from '../trpc'; - -import type { DayPeriod, Prisma } from '@prisma/client'; -import type { SchoolTime } from 'common/types'; - -type DayGradeSchedule = Map<SchoolTime, DayPeriod>; -type DaySchedule = { - 1: DayGradeSchedule; - 2: DayGradeSchedule; - 3: DayGradeSchedule; -}; - -const getDaySchedule = async (date: Date): Promise<DaySchedule> => { - const data = await prisma.gradeSchedule.findMany({ - where: { date }, - }); - const daySchedule: DaySchedule = { - 1: new Map(), - 2: new Map(), - 3: new Map(), - }; - - data.forEach((v) => { - const parsedGrade = zodGrade.safeParse(v.grade); - const parsedPeriod = zodPeriod.safeParse(v.period); - if (parsedGrade.success && parsedPeriod.success) { - daySchedule[parsedGrade.data].set(parsedPeriod.data, v.dayPeriod); - } - }); - - return daySchedule; -}; - -export const gradeScheduleRouter = router({ - byDate: procedure - .input( - z.object({ - date: z.string(), - }) - ) - .query<{ - date: Date; - schedule: { - 1: DayGradeSchedule; - 2: DayGradeSchedule; - 3: DayGradeSchedule; - }; - }>(async ({ input }) => { - const date = z.coerce.date().parse(input.date); - const schedule = await getDaySchedule(date); - - return { date, schedule }; - }), - - update: procedure - .input( - z.object({ - date: z.string(), - schedule: z.object({ - 1: z.map(zodPeriod, zodDayPeriod.nullable()), - 2: z.map(zodPeriod, zodDayPeriod.nullable()), - 3: z.map(zodPeriod, zodDayPeriod.nullable()), - }), - }) - ) - .mutation<{ - date: Date; - schedule: { - 1: DayGradeSchedule; - 2: DayGradeSchedule; - 3: DayGradeSchedule; - }; - }>(async ({ input }) => { - const date = z.coerce.date().parse(input.date); - const toDelete: Prisma.GradeScheduleWhereInput[] = []; - - // 一旦全データでループ - const upsert = GRADES.flatMap((grade) => { - return [...input.schedule[grade].entries()].flatMap( - ([period, dayPeriod]) => { - if (dayPeriod === null) { - // null の場合は削除リクエストのリストに入れる - toDelete.push({ - grade, - date, - period, - }); - return []; - } - - // データがある場合は 更新・作成処理 - return prisma.gradeSchedule.upsert({ - where: { - grade_date_period: { grade, date, period }, - }, - update: { dayPeriod }, - create: { - grade, - date, - period, - dayPeriod, - }, - }); - } - ); - }); - - // 更新・作成処理の終了を待機 - await Promise.all(upsert); - - // 削除処理 - await prisma.gradeSchedule.deleteMany({ - where: { OR: toDelete }, - }); - - // 更新後のデータを返却する - const newSchedule = await getDaySchedule(date); - return { date, schedule: newSchedule }; - }), -}); diff --git a/src/server/trpc.ts b/src/server/trpc.ts @@ -15,3 +15,4 @@ const t = initTRPC.context<Context>().create({ export const router = t.router; export const procedure = t.procedure; export const middleware = t.middleware; +export const createCallerFactory = t.createCallerFactory; diff --git a/src/server/utils/prisma.ts b/src/server/utils/prisma.ts @@ -1,10 +1,10 @@ -import { PrismaClient } from '@prisma/client'; +// import { PrismaClient } from '@prisma/client'; -declare global { - // eslint-disable-next-line no-var - var prisma: PrismaClient | undefined; -} +// declare global { +// // eslint-disable-next-line no-var +// var prisma: PrismaClient | undefined; +// } -export const prisma = global.prisma || new PrismaClient(); +// export const prisma = global.prisma || new PrismaClient(); -if (process.env.NODE_ENV === 'development') global.prisma = prisma; +// if (process.env.NODE_ENV === 'development') global.prisma = prisma; diff --git a/tools/emigrateDB.ts b/tools/emigrateDB.ts @@ -1,123 +0,0 @@ -// データベースを supabase から Vercel Postgres に移行する際に利用したスクリプト - -import { PrismaClient } from '@prisma/client'; - -const prismaOld = new PrismaClient({ - datasources: { - db: { - url: '', - }, - }, -}); -const prismaNew = new PrismaClient({ - datasources: { - db: { - url: '', - }, - }, -}); - -async function main() { - { - const data = await prismaOld.schoolClass.findMany({ - select: { class: true, grade: true, updatedAt: true }, - }); - const result = await prismaNew.schoolClass.createMany({ - data, - skipDuplicates: true, - }); - console.log(`SchoolClass のレコードを ${result.count} 件移行しました`); - } - { - const data = await prismaOld.class_DayPeriod_Subject.findMany({ - select: { - classId: true, - dayPeriod: true, - subjects: true, - updatedAt: true, - }, - }); - const result = await prismaNew.class_DayPeriod_Subject.createMany({ - data, - skipDuplicates: true, - }); - console.log( - `Class_DayPeriod_Subject のレコードを ${result.count} 件移行しました` - ); - } - { - const data = await prismaOld.gradeSchedule.findMany({ - select: { - date: true, - dayPeriod: true, - grade: true, - period: true, - updatedAt: true, - }, - }); - const result = await prismaNew.gradeSchedule.createMany({ - data, - skipDuplicates: true, - }); - console.log(`GradeSchedule のレコードを ${result.count} 件移行しました`); - } - { - const data = await prismaOld.classTemporarySchedule.findMany({ - select: { - classId: true, - date: true, - parentId: true, - period: true, - subjects: true, - updatedAt: true, - }, - }); - const result = await prismaNew.classTemporarySchedule.createMany({ - data, - skipDuplicates: true, - }); - console.log( - `ClassTemporarySchedule のレコードを ${result.count} 件移行しました` - ); - } - { - const data = await prismaOld.classTemporaryScheduleGroup.findMany({ - select: { note: true }, - }); - const result = await prismaNew.classTemporaryScheduleGroup.createMany({ - data, - skipDuplicates: true, - }); - console.log( - `ClassTemporaryScheduleGroup のレコードを ${result.count} 件移行しました` - ); - } - { - const data = await prismaOld.schoolEvent.findMany({ - select: { - date: true, - detail: true, - grades: true, - title: true, - updatedAt: true, - }, - }); - const result = await prismaNew.schoolEvent.createMany({ - data, - skipDuplicates: true, - }); - console.log(`SchoolEvent のレコードを ${result.count} 件移行しました`); - } -} - -main() - .then(async () => { - await prismaOld.$disconnect(); - await prismaNew.$disconnect(); - }) - .catch(async (e) => { - console.error(e); - await prismaOld.$disconnect(); - await prismaNew.$disconnect(); - process.exit(1); - }); diff --git a/vercel.json b/vercel.json @@ -1,5 +1 @@ -{ - "buildCommand": "pnpm prisma migrate deploy && pnpm prisma db seed && next build", - "devCommand": "next dev", - "installCommand": "pnpm install && pnpm prisma generate" -} +{}