From 5ef1cf5f554779cdb8df82209f4a80b618fe1d79 Mon Sep 17 00:00:00 2001 From: Shibatch Date: Mon, 1 Apr 2024 20:21:58 +0900 Subject: [PATCH 001/107] =?UTF-8?q?style:=20=E3=82=B2=E3=83=BC=E3=83=A0?= =?UTF-8?q?=E9=96=8B=E5=A7=8B=E7=94=BB=E9=9D=A2=E3=81=AE=E3=82=B9=E3=82=BF?= =?UTF-8?q?=E3=82=A4=E3=83=AB=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB=E3=82=92?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/templates/GamePre.module.css | 11 +++++++++++ typing-app/src/components/templates/GamePre.tsx | 7 ++++++- 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 typing-app/src/components/templates/GamePre.module.css diff --git a/typing-app/src/components/templates/GamePre.module.css b/typing-app/src/components/templates/GamePre.module.css new file mode 100644 index 0000000..77ad0d0 --- /dev/null +++ b/typing-app/src/components/templates/GamePre.module.css @@ -0,0 +1,11 @@ +.box { + width: 70%; + height: calc(100% - 300px); + margin: 50px auto 0 auto; + position: absolute; + left: 15%; + top: 100px; + background-color: #263238; + /* border-radius: 10px; */ + border: 4px, #fff; +} \ No newline at end of file diff --git a/typing-app/src/components/templates/GamePre.tsx b/typing-app/src/components/templates/GamePre.tsx index 17694d2..dd58749 100644 --- a/typing-app/src/components/templates/GamePre.tsx +++ b/typing-app/src/components/templates/GamePre.tsx @@ -1,6 +1,7 @@ import { Box, Text } from "@chakra-ui/react"; import React, { useEffect } from "react"; import { GamePreProps } from "../pages/Game"; +import styles from "./GamePre.module.css"; const GamePre: React.FC = ({ nextPage }) => { useEffect(() => { @@ -22,7 +23,11 @@ const GamePre: React.FC = ({ nextPage }) => { return ( - GamePre screen +
+ + ゲーム説明 + +
); }; From 923e2d5ef0994d662a4427e0d0470475083b37e3 Mon Sep 17 00:00:00 2001 From: Shibatch Date: Mon, 1 Apr 2024 21:40:20 +0900 Subject: [PATCH 002/107] =?UTF-8?q?style:=20=E3=82=B2=E3=83=BC=E3=83=A0?= =?UTF-8?q?=E9=96=8B=E5=A7=8B=E5=89=8D=E3=81=AE=E7=94=BB=E9=9D=A2=E3=82=92?= =?UTF-8?q?=E3=82=B9=E3=82=BF=E3=82=A4=E3=83=AA=E3=83=B3=E3=82=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/templates/GamePre.module.css | 25 ++++++++------ .../src/components/templates/GamePre.tsx | 33 ++++++++++++++++--- 2 files changed, 44 insertions(+), 14 deletions(-) diff --git a/typing-app/src/components/templates/GamePre.module.css b/typing-app/src/components/templates/GamePre.module.css index 77ad0d0..2b95443 100644 --- a/typing-app/src/components/templates/GamePre.module.css +++ b/typing-app/src/components/templates/GamePre.module.css @@ -1,11 +1,16 @@ .box { - width: 70%; - height: calc(100% - 300px); - margin: 50px auto 0 auto; - position: absolute; - left: 15%; - top: 100px; - background-color: #263238; - /* border-radius: 10px; */ - border: 4px, #fff; -} \ No newline at end of file + width: 70%; + height: calc(100% - 300px); + margin: 50px auto 0 auto; + position: absolute; + left: 15%; + top: 100px; + background-color: #263238; + border: 4px, #fff; +} + +.centerText { + display: flex; + justify-content: center; + align-items: center; +} diff --git a/typing-app/src/components/templates/GamePre.tsx b/typing-app/src/components/templates/GamePre.tsx index dd58749..cc56ef7 100644 --- a/typing-app/src/components/templates/GamePre.tsx +++ b/typing-app/src/components/templates/GamePre.tsx @@ -1,4 +1,4 @@ -import { Box, Text } from "@chakra-ui/react"; +import { Box, Grid, GridItem, Text } from "@chakra-ui/react"; import React, { useEffect } from "react"; import { GamePreProps } from "../pages/Game"; import styles from "./GamePre.module.css"; @@ -24,9 +24,34 @@ const GamePre: React.FC = ({ nextPage }) => { return (
- - ゲーム説明 - + + + + ゲーム説明 + + + + 本文 + + + キーボードの写真とか? + + + + [Space]キーを押して開始 + + +
); From 22f9cfbe68f1eceb229cd577d4c1105f1f77ae6f Mon Sep 17 00:00:00 2001 From: Shibatch Date: Wed, 3 Apr 2024 13:38:01 +0900 Subject: [PATCH 003/107] =?UTF-8?q?add:=20=E3=82=AD=E3=83=BC=E3=83=9C?= =?UTF-8?q?=E3=83=BC=E3=83=89(=E4=B8=80=E9=83=A8)=E3=81=AE=E7=94=BB?= =?UTF-8?q?=E5=83=8F=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/assets/images/LetsNote_Keyboard.png | Bin 0 -> 9969 bytes typing-app/src/components/templates/GamePre.tsx | 1 + 2 files changed, 1 insertion(+) create mode 100644 typing-app/src/assets/images/LetsNote_Keyboard.png diff --git a/typing-app/src/assets/images/LetsNote_Keyboard.png b/typing-app/src/assets/images/LetsNote_Keyboard.png new file mode 100644 index 0000000000000000000000000000000000000000..2684230cb6521e22bcee08028764e59451355a07 GIT binary patch literal 9969 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 WSrW?UdWmP)0N1sRv`P^6k^c*^ = ({ nextPage }) => { useEffect(() => { From 1b8560d209acf0477a380bc8b6625ba04439b243 Mon Sep 17 00:00:00 2001 From: Shibatch Date: Wed, 3 Apr 2024 13:59:35 +0900 Subject: [PATCH 004/107] =?UTF-8?q?docs:=20=E3=82=B2=E3=83=BC=E3=83=A0?= =?UTF-8?q?=E9=96=8B=E5=A7=8B=E5=89=8D=E3=81=AE=E8=AA=AC=E6=98=8E=E6=96=87?= =?UTF-8?q?=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/templates/GamePre.tsx | 27 +++++++++++++------ 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/typing-app/src/components/templates/GamePre.tsx b/typing-app/src/components/templates/GamePre.tsx index 55424f0..95a85a0 100644 --- a/typing-app/src/components/templates/GamePre.tsx +++ b/typing-app/src/components/templates/GamePre.tsx @@ -1,8 +1,8 @@ -import { Box, Grid, GridItem, Text } from "@chakra-ui/react"; +import { Box, Grid, GridItem, Text, Image, Center } from "@chakra-ui/react"; import React, { useEffect } from "react"; import { GamePreProps } from "../pages/Game"; import styles from "./GamePre.module.css"; -import keyboardImage from "@/assets/images/LetsNote_Keyboard.png" +import keyboardImage from "@/assets/images/LetsNote_Keyboard.png"; const GamePre: React.FC = ({ nextPage }) => { useEffect(() => { @@ -30,7 +30,7 @@ const GamePre: React.FC = ({ nextPage }) => { "main nav" "footer footer"`} gridTemplateRows={"60px 1fr 50px"} - gridTemplateColumns={"1fr 300px"} + gridTemplateColumns={"1fr 400px"} h="100%" gap={6} bg="blackAlpha" @@ -41,15 +41,26 @@ const GamePre: React.FC = ({ nextPage }) => { ゲーム説明 - - 本文 + + 制限時間は1分間! + 英文を速く・正確に入力して高スコアを目指そう! + 【入力スコア目安】 + WPM(打鍵数): 120字以上 + 正打率: 95%以上 + The time limit is 1 minute! + Enter English sentences quickly and accurately to achieve your best score! + 【Suggested Scores】 + WPM(Words Per Minutes): 120 words or more + Accuracy: 95% or more - - キーボードの写真とか? + +
+ Logo +
- [Space]キーを押して開始 + [Space]キーを押して開始 / Press [Space] to start From dfb43ca7ed83c9c3e0f843bc6c2ec25e0f28b235 Mon Sep 17 00:00:00 2001 From: Shibatch Date: Wed, 3 Apr 2024 15:26:44 +0900 Subject: [PATCH 005/107] =?UTF-8?q?docs:=20=E8=8B=B1=E8=A8=B3=E3=82=92?= =?UTF-8?q?=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/templates/GamePre.tsx | 20 ++++++++----------- 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/typing-app/src/components/templates/GamePre.tsx b/typing-app/src/components/templates/GamePre.tsx index 95a85a0..d7e6759 100644 --- a/typing-app/src/components/templates/GamePre.tsx +++ b/typing-app/src/components/templates/GamePre.tsx @@ -1,4 +1,4 @@ -import { Box, Grid, GridItem, Text, Image, Center } from "@chakra-ui/react"; +import { Box, Grid, GridItem, Text, Image, Center, Flex } from "@chakra-ui/react"; import React, { useEffect } from "react"; import { GamePreProps } from "../pages/Game"; import styles from "./GamePre.module.css"; @@ -42,16 +42,12 @@ const GamePre: React.FC = ({ nextPage }) => {
- 制限時間は1分間! - 英文を速く・正確に入力して高スコアを目指そう! - 【入力スコア目安】 - WPM(打鍵数): 120字以上 - 正打率: 95%以上 - The time limit is 1 minute! - Enter English sentences quickly and accurately to achieve your best score! - 【Suggested Scores】 - WPM(Words Per Minutes): 120 words or more - Accuracy: 95% or more + + 制限時間は1分間! + 英文を速く・正確に入力して高スコアを目指そう! + 【ランキング掲載条件】 + WPM(打鍵数): 120字以上 かつ 正打率: 95%以上 +
@@ -60,7 +56,7 @@ const GamePre: React.FC = ({ nextPage }) => { - [Space]キーを押して開始 / Press [Space] to start + [Space]キーを押して開始 From 199665ffcfc6d53bb8cee54e38e90cd81b747458 Mon Sep 17 00:00:00 2001 From: Shibatch Date: Wed, 3 Apr 2024 15:29:54 +0900 Subject: [PATCH 006/107] =?UTF-8?q?fix:=20=E3=83=AA=E3=82=B6=E3=83=AB?= =?UTF-8?q?=E3=83=88=E3=81=AE=E3=80=8C=E6=AD=A3=E8=A7=A3=E7=8E=87=E3=80=8D?= =?UTF-8?q?->=E3=80=8C=E6=AD=A3=E6=89=93=E7=8E=87=E3=80=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/src/components/templates/GameResult.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/typing-app/src/components/templates/GameResult.tsx b/typing-app/src/components/templates/GameResult.tsx index 1b32570..5f51452 100644 --- a/typing-app/src/components/templates/GameResult.tsx +++ b/typing-app/src/components/templates/GameResult.tsx @@ -52,7 +52,7 @@ const GameResult: React.FC = ({ nextPage, resultScore }) => { - 正解率 + 正打率 From 85f8825d02cde69e6923f5167669d6206f6caa7b Mon Sep 17 00:00:00 2001 From: Shibatch Date: Wed, 3 Apr 2024 16:06:50 +0900 Subject: [PATCH 007/107] =?UTF-8?q?fix:=20=E3=82=AD=E3=83=BC=E3=83=9C?= =?UTF-8?q?=E3=83=BC=E3=83=89=E3=81=AE=E7=94=BB=E5=83=8F=E3=82=92=E5=B7=AE?= =?UTF-8?q?=E3=81=97=E6=9B=BF=E3=81=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/assets/images/LetsNote_Keyboard.png | Bin 9969 -> 0 bytes typing-app/src/assets/images/keyboard.png | Bin 0 -> 87138 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 typing-app/src/assets/images/LetsNote_Keyboard.png create mode 100644 typing-app/src/assets/images/keyboard.png diff --git a/typing-app/src/assets/images/LetsNote_Keyboard.png b/typing-app/src/assets/images/LetsNote_Keyboard.png deleted file mode 100644 index 2684230cb6521e22bcee08028764e59451355a07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9969 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 tYcc_(i}L)*Gca%yv6RT__n!kT-bla7kLT Date: Wed, 3 Apr 2024 18:53:43 +0900 Subject: [PATCH 008/107] =?UTF-8?q?fix:=20=E4=BD=93=E8=A3=81=E3=82=92?= =?UTF-8?q?=E8=AA=BF=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/templates/GamePre.tsx | 41 ++++++++++++------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/typing-app/src/components/templates/GamePre.tsx b/typing-app/src/components/templates/GamePre.tsx index d7e6759..207c508 100644 --- a/typing-app/src/components/templates/GamePre.tsx +++ b/typing-app/src/components/templates/GamePre.tsx @@ -2,7 +2,7 @@ import { Box, Grid, GridItem, Text, Image, Center, Flex } from "@chakra-ui/react import React, { useEffect } from "react"; import { GamePreProps } from "../pages/Game"; import styles from "./GamePre.module.css"; -import keyboardImage from "@/assets/images/LetsNote_Keyboard.png"; +import keyboardImage from "@/assets/images/keyboard.png"; const GamePre: React.FC = ({ nextPage }) => { useEffect(() => { @@ -29,30 +29,41 @@ const GamePre: React.FC = ({ nextPage }) => { templateAreas={`"header header" "main nav" "footer footer"`} - gridTemplateRows={"60px 1fr 50px"} - gridTemplateColumns={"1fr 400px"} + gridTemplateRows={"100px 1fr 50px"} + gridTemplateColumns={"1fr 1fr"} h="100%" - gap={6} - bg="blackAlpha" + gap={0} + bg="#263238" border="4px solid white" + alignItems="center" + overflow="auto" > - + ゲーム説明 - - + + 制限時間は1分間! - 英文を速く・正確に入力して高スコアを目指そう! - 【ランキング掲載条件】 - WPM(打鍵数): 120字以上 かつ 正打率: 95%以上 + 英文を速く・正確に入力して高スコアを目指そう! + 【ランキング掲載条件】 + WPM(Words per Minutes): 120字以上 + 正打率: 95%以上 - -
- Logo -
+ + Logo From 9a6902b3590b941973815e28281d05a6de760dcf Mon Sep 17 00:00:00 2001 From: Shibatch Date: Thu, 4 Apr 2024 14:11:41 +0900 Subject: [PATCH 009/107] =?UTF-8?q?docs:=20=E3=83=95=E3=82=A9=E3=83=BC?= =?UTF-8?q?=E3=82=AB=E3=82=B9=E3=81=8C=E5=A4=96=E3=82=8C=E3=81=A6=E3=81=97?= =?UTF-8?q?=E3=81=BE=E3=81=A3=E3=81=9F=E3=81=A8=E3=81=8D=E3=81=AE=E5=AF=BE?= =?UTF-8?q?=E5=87=A6=E6=B3=95=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/src/components/templates/GamePre.tsx | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/typing-app/src/components/templates/GamePre.tsx b/typing-app/src/components/templates/GamePre.tsx index 207c508..3eab7f4 100644 --- a/typing-app/src/components/templates/GamePre.tsx +++ b/typing-app/src/components/templates/GamePre.tsx @@ -29,7 +29,7 @@ const GamePre: React.FC = ({ nextPage }) => { templateAreas={`"header header" "main nav" "footer footer"`} - gridTemplateRows={"100px 1fr 50px"} + gridTemplateRows={"80px 1fr 50px"} gridTemplateColumns={"1fr 1fr"} h="100%" gap={0} @@ -38,18 +38,21 @@ const GamePre: React.FC = ({ nextPage }) => { alignItems="center" overflow="auto" > - + ゲーム説明 + 【基本ルール】 制限時間は1分間! 英文を速く・正確に入力して高スコアを目指そう! 【ランキング掲載条件】 WPM(Words per Minutes): 120字以上 - 正打率: 95%以上 + 正打率: 95%以上 + 【カーソルが消えてしまった場合】 + テキストが表示されているボックスをクリックすると元に戻れます。 Date: Thu, 4 Apr 2024 14:47:02 +0900 Subject: [PATCH 010/107] =?UTF-8?q?docs:=20=E3=83=95=E3=82=A9=E3=83=BC?= =?UTF-8?q?=E3=82=AB=E3=82=B9=E3=81=8C=E5=A4=96=E3=82=8C=E3=81=A6=E3=81=97?= =?UTF-8?q?=E3=81=BE=E3=81=A3=E3=81=9F=E9=9A=9B=E3=81=AE=E8=AA=AC=E6=98=8E?= =?UTF-8?q?=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/src/components/templates/GamePre.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/typing-app/src/components/templates/GamePre.tsx b/typing-app/src/components/templates/GamePre.tsx index 3eab7f4..7d7bdba 100644 --- a/typing-app/src/components/templates/GamePre.tsx +++ b/typing-app/src/components/templates/GamePre.tsx @@ -51,7 +51,7 @@ const GamePre: React.FC = ({ nextPage }) => { 【ランキング掲載条件】 WPM(Words per Minutes): 120字以上 正打率: 95%以上 - 【カーソルが消えてしまった場合】 + 【入力しても反応しなくなった場合】 テキストが表示されているボックスをクリックすると元に戻れます。
From 3264b237217b177aacd126c0ec0c90142d3a0c62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8F=E3=81=8B?= <100208180+waka-eup25@users.noreply.github.com> Date: Thu, 4 Apr 2024 16:20:24 +0900 Subject: [PATCH 011/107] =?UTF-8?q?feat:=20=E3=83=AA=E3=82=B6=E3=83=AB?= =?UTF-8?q?=E3=83=88=E7=94=BB=E9=9D=A2=E3=81=A7=E3=80=8C=E3=82=B2=E3=83=BC?= =?UTF-8?q?=E3=83=A0=E3=82=92=E7=B5=82=E4=BA=86=E3=81=99=E3=82=8B=E3=80=8D?= =?UTF-8?q?=E3=83=9C=E3=82=BF=E3=83=B3=E3=81=AE=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/src/components/templates/GameResult.tsx | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/typing-app/src/components/templates/GameResult.tsx b/typing-app/src/components/templates/GameResult.tsx index 1b32570..8b46ed6 100644 --- a/typing-app/src/components/templates/GameResult.tsx +++ b/typing-app/src/components/templates/GameResult.tsx @@ -86,9 +86,14 @@ const GameResult: React.FC = ({ nextPage, resultScore }) => { {resultScore.accuracy.toFixed(1)}%
- - + + + From 673b5fd3f0a10b1b92edab0eda227c9e5f29254a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8F=E3=81=8B?= <100208180+waka-eup25@users.noreply.github.com> Date: Thu, 4 Apr 2024 18:07:06 +0900 Subject: [PATCH 012/107] =?UTF-8?q?feat:=20=E3=83=AA=E3=82=B6=E3=83=AB?= =?UTF-8?q?=E3=83=88=E7=94=BB=E9=9D=A2=E3=81=A7=E3=80=8C=E3=82=B2=E3=83=BC?= =?UTF-8?q?=E3=83=A0=E3=82=92=E7=B5=82=E4=BA=86=E3=81=99=E3=82=8B=E3=80=8D?= =?UTF-8?q?=E3=83=9C=E3=82=BF=E3=83=B3=E3=81=8B=E3=82=89=E3=83=9B=E3=83=BC?= =?UTF-8?q?=E3=83=A0=E3=81=AB=E9=81=B7=E7=A7=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/src/components/templates/GameResult.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/typing-app/src/components/templates/GameResult.tsx b/typing-app/src/components/templates/GameResult.tsx index 8b46ed6..6f5b315 100644 --- a/typing-app/src/components/templates/GameResult.tsx +++ b/typing-app/src/components/templates/GameResult.tsx @@ -87,7 +87,7 @@ const GameResult: React.FC = ({ nextPage, resultScore }) => {
- From 07e84febf975c8db5b14e5100402c29a19455637 Mon Sep 17 00:00:00 2001 From: araaki12345 <74499464+araaki12345@users.noreply.github.com> Date: Thu, 4 Apr 2024 19:11:02 +0900 Subject: [PATCH 013/107] =?UTF-8?q?feat:api=E3=81=8B=E3=82=89=E3=83=A9?= =?UTF-8?q?=E3=83=B3=E3=82=AD=E3=83=B3=E3=82=B0=E3=81=AE=E5=AE=9F=E3=83=87?= =?UTF-8?q?=E3=83=BC=E3=82=BF=E3=82=92=E8=AA=AD=E3=81=BF=E8=BE=BC=E3=82=80?= =?UTF-8?q?=E6=A9=9F=E8=83=BD=E3=82=92=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/organism/RankingTabs.tsx | 98 +++++++++++-------- 1 file changed, 58 insertions(+), 40 deletions(-) diff --git a/typing-app/src/components/organism/RankingTabs.tsx b/typing-app/src/components/organism/RankingTabs.tsx index b5aaea8..4f50b61 100644 --- a/typing-app/src/components/organism/RankingTabs.tsx +++ b/typing-app/src/components/organism/RankingTabs.tsx @@ -5,48 +5,76 @@ import { Pagination } from "../molecules/Pagination"; //import { CustomButton } from "../atoms/CustomButton"; import RefreshButton from "../atoms/RefreshButton"; import { useEffect, useState } from "react"; -// import { client } from "@/libs/api"; +import { client } from "@/libs/api"; +//import { error } from "console"; + +export interface User { + id: string; + studentNumber: string; + handleName: string; +} + +export interface ScoreRanking { + rank: number; + user: User; + keystrokes: number; + accuracy: number; + createdAt: Date; +} const RankingTabs = () => { - const [scoreRankings, setScoreRankings] = useState(demoAccuracyRankings); + const [scoreRankings, setScoreRankings] = useState([]); const [rankingStartFrom, setRankingStartFrom] = useState(0); const [sortBy, setSortBy] = useState<"accuracy" | "keystrokes">("accuracy"); + const [isLoading, setIsLoading] = useState(false); + const [error, setError] = useState(null); const LIMIT = 10; - const MAXIMUM = 100; // TODO: MAXIMUMをAPIから取得する + + const fetchData = async () => { + setIsLoading(true); + try { + // APIからデータを取得するためのパラメータを含むGETリクエスト + const { data, error } = await client.GET("/scores/ranking", { + params: { + sort_by: sortBy, + start: rankingStartFrom, + limit: LIMIT, + }, + }); + if (error) { + setError("データの取得中にエラーが発生しました。"); + } else { + setScoreRankings(data.rankings); + } + } catch (err) { + setError("データの取得中に予期せぬエラーが発生しました。"); + } finally { + setIsLoading(false); + } + }; useEffect(() => { // ページが読み込まれたときにデータを取得 fetchData(); - }); + }, [sortBy, rankingStartFrom]); const handleTabChange = (index: number) => { - if (index === 0) { - setSortBy("accuracy"); - } else if (index === 1) { - setSortBy("keystrokes"); - } - - fetchData; + const sortOption = index === 0 ? "accuracy" : "keystrokes"; + setSortBy(sortOption); + fetchData(); }; // 演算子を引数にとる、ボタンを押したときのハンドラ関数 const handlePaginationClick = (direction: "next" | "prev") => { - const newStartFrom = - direction === "prev" ? Math.max(rankingStartFrom - LIMIT, 0) : Math.min(rankingStartFrom + LIMIT, MAXIMUM); + const newStartFrom = direction === "prev" ? Math.max(rankingStartFrom - LIMIT, 0) : Math.min(rankingStartFrom - LIMIT, 0); setRankingStartFrom(newStartFrom); - - fetchData; + fetchData(); }; - const fetchData = async () => { - // TODO: APIを使ってデータをフェッチ - if (sortBy == "accuracy") { - setScoreRankings(demoAccuracyRankings); - } else if (sortBy == "keystrokes") { - setScoreRankings(demoKeyStrokeRankings); - } - }; + if(error) { + return
Error loading rankings
; + } return ( @@ -60,7 +88,10 @@ const RankingTabs = () => { fetchData()} isDisabled={false} /> - + {error &&
Error: {error}
} + {isLoading ? ( +
Loading...
+ ) : ( @@ -69,6 +100,7 @@ const RankingTabs = () => { + )}
handlePaginationClick("prev")} @@ -82,21 +114,7 @@ const RankingTabs = () => { }; export default RankingTabs; -export interface User { - id: string; - studentNumber: string; - handleName: string; -} - -export interface ScoreRanking { - rank: Number; - user: User; - keystrokes: Number; - accuracy: Number; - createdAt: Date; -} - -const demoUsers: User[] = [ +/*const demoUsers: User[] = [ { id: "1", studentNumber: "70310000", @@ -216,4 +234,4 @@ const demoAccuracyRankings: ScoreRanking[] = [ accuracy: 60, createdAt: new Date(), }, -]; +]; */ From d9713fbb265e4742fbd134fd73ec576e059591d0 Mon Sep 17 00:00:00 2001 From: araaki12345 <74499464+araaki12345@users.noreply.github.com> Date: Thu, 4 Apr 2024 21:38:08 +0900 Subject: [PATCH 014/107] =?UTF-8?q?feat:API=E3=81=8B=E3=82=89=E3=83=87?= =?UTF-8?q?=E3=83=BC=E3=82=BF=E3=82=92=E5=8F=96=E5=BE=97=E3=81=99=E3=82=8B?= =?UTF-8?q?=E6=A9=9F=E8=83=BD=E3=82=92=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/src/components/organism/RankingTabs.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/typing-app/src/components/organism/RankingTabs.tsx b/typing-app/src/components/organism/RankingTabs.tsx index 4f50b61..ecf6a7f 100644 --- a/typing-app/src/components/organism/RankingTabs.tsx +++ b/typing-app/src/components/organism/RankingTabs.tsx @@ -6,6 +6,7 @@ import { Pagination } from "../molecules/Pagination"; import RefreshButton from "../atoms/RefreshButton"; import { useEffect, useState } from "react"; import { client } from "@/libs/api"; +import {paths} from "@/libs/api/v1"; //import { error } from "console"; export interface User { @@ -36,7 +37,7 @@ const RankingTabs = () => { setIsLoading(true); try { // APIからデータを取得するためのパラメータを含むGETリクエスト - const { data, error } = await client.GET("/scores/ranking", { + const { data, error } = await client.GET("/scores/ranking", { params: { sort_by: sortBy, start: rankingStartFrom, From 3897be1df79927801505c083506932896050d2e4 Mon Sep 17 00:00:00 2001 From: KikyoNanakusa Date: Thu, 4 Apr 2024 22:35:13 +0900 Subject: [PATCH 015/107] =?UTF-8?q?build:jest=E7=92=B0=E5=A2=83=E3=82=92?= =?UTF-8?q?=E3=82=BB=E3=83=83=E3=83=88=E3=82=A2=E3=83=83=E3=83=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/.eslintrc.json | 3 +- typing-app/jest.config.js | 18 + typing-app/jest.setup.js | 1 + typing-app/package.json | 5 + typing-app/tsconfig.json | 2 +- typing-app/yarn.lock | 2830 ++++++++++++++++++++++++++++++++++++- 6 files changed, 2805 insertions(+), 54 deletions(-) create mode 100644 typing-app/jest.config.js create mode 100644 typing-app/jest.setup.js diff --git a/typing-app/.eslintrc.json b/typing-app/.eslintrc.json index f64128d..9b08370 100644 --- a/typing-app/.eslintrc.json +++ b/typing-app/.eslintrc.json @@ -1,6 +1,7 @@ { "extends": [ "next/core-web-vitals", - "prettier" + "prettier", + "next/babel" ] } diff --git a/typing-app/jest.config.js b/typing-app/jest.config.js new file mode 100644 index 0000000..d6e66f0 --- /dev/null +++ b/typing-app/jest.config.js @@ -0,0 +1,18 @@ +/** + * For a detailed explanation regarding each configuration property, visit: + * https://jestjs.io/docs/configuration + */ +const nextJest = require('next/jest') + +/** @type {import('jest').Config} */ +const config = { + coverageProvider: 'v8', + setupFilesAfterEnv: ['/jest.setup.js'], + testEnvironment: 'jsdom', +} + +const createJestConfig = nextJest({ + dir: './', +}) + +module.exports = createJestConfig(config) \ No newline at end of file diff --git a/typing-app/jest.setup.js b/typing-app/jest.setup.js new file mode 100644 index 0000000..e5bd4df --- /dev/null +++ b/typing-app/jest.setup.js @@ -0,0 +1 @@ +import '@testing-library/jest-dom/jest-globals' \ No newline at end of file diff --git a/typing-app/package.json b/typing-app/package.json index e02dc0c..282ffe0 100644 --- a/typing-app/package.json +++ b/typing-app/package.json @@ -29,6 +29,9 @@ "tailwindcss-animate": "^1.0.7" }, "devDependencies": { + "@jest/globals": "^29.7.0", + "@testing-library/jest-dom": "^6.4.2", + "@testing-library/react": "^14.2.2", "@types/node": "^20", "@types/react": "^18", "@types/react-dom": "^18", @@ -36,6 +39,8 @@ "eslint": "^8", "eslint-config-next": "14.1.0", "eslint-config-prettier": "^9.1.0", + "jest": "^29.7.0", + "jest-environment-jsdom": "^29.7.0", "openapi-typescript": "6.7.5", "postcss": "^8", "tailwindcss": "^3.3.0", diff --git a/typing-app/tsconfig.json b/typing-app/tsconfig.json index 81b17d0..0cab761 100644 --- a/typing-app/tsconfig.json +++ b/typing-app/tsconfig.json @@ -22,6 +22,6 @@ "@/*": ["./src/*"] } }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts", "jest.setup.js"], "exclude": ["node_modules"] } diff --git a/typing-app/yarn.lock b/typing-app/yarn.lock index ebd03ab..4a0989b 100644 --- a/typing-app/yarn.lock +++ b/typing-app/yarn.lock @@ -12,6 +12,13 @@ __metadata: languageName: node linkType: hard +"@adobe/css-tools@npm:^4.3.2": + version: 4.3.3 + resolution: "@adobe/css-tools@npm:4.3.3" + checksum: 10c0/e76e712df713964b87cdf2aca1f0477f19bebd845484d5fcba726d3ec7782366e2f26ec8cb2dcfaf47081a5c891987d8a9f5c3f30d11e1eb3c1848adc27fcb24 + languageName: node + linkType: hard + "@alloc/quick-lru@npm:^5.2.0": version: 5.2.0 resolution: "@alloc/quick-lru@npm:5.2.0" @@ -19,7 +26,17 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0": +"@ampproject/remapping@npm:^2.2.0": + version: 2.3.0 + resolution: "@ampproject/remapping@npm:2.3.0" + dependencies: + "@jridgewell/gen-mapping": "npm:^0.3.5" + "@jridgewell/trace-mapping": "npm:^0.3.24" + checksum: 10c0/81d63cca5443e0f0c72ae18b544cc28c7c0ec2cea46e7cb888bb0e0f411a1191d0d6b7af798d54e30777d8d1488b2ec0732aac2be342d3d7d3ffd271c6f489ed + languageName: node + linkType: hard + +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.23.5, @babel/code-frame@npm:^7.24.1, @babel/code-frame@npm:^7.24.2": version: 7.24.2 resolution: "@babel/code-frame@npm:7.24.2" dependencies: @@ -29,7 +46,88 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.16.7": +"@babel/compat-data@npm:^7.23.5": + version: 7.24.4 + resolution: "@babel/compat-data@npm:7.24.4" + checksum: 10c0/9cd8a9cd28a5ca6db5d0e27417d609f95a8762b655e8c9c97fd2de08997043ae99f0139007083c5e607601c6122e8432c85fe391731b19bf26ad458fa0c60dd3 + languageName: node + linkType: hard + +"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.23.9": + version: 7.24.4 + resolution: "@babel/core@npm:7.24.4" + dependencies: + "@ampproject/remapping": "npm:^2.2.0" + "@babel/code-frame": "npm:^7.24.2" + "@babel/generator": "npm:^7.24.4" + "@babel/helper-compilation-targets": "npm:^7.23.6" + "@babel/helper-module-transforms": "npm:^7.23.3" + "@babel/helpers": "npm:^7.24.4" + "@babel/parser": "npm:^7.24.4" + "@babel/template": "npm:^7.24.0" + "@babel/traverse": "npm:^7.24.1" + "@babel/types": "npm:^7.24.0" + convert-source-map: "npm:^2.0.0" + debug: "npm:^4.1.0" + gensync: "npm:^1.0.0-beta.2" + json5: "npm:^2.2.3" + semver: "npm:^6.3.1" + checksum: 10c0/fc136966583e64d6f84f4a676368de6ab4583aa87f867186068655b30ef67f21f8e65a88c6d446a7efd219ad7ffb9185c82e8a90183ee033f6f47b5026641e16 + languageName: node + linkType: hard + +"@babel/generator@npm:^7.24.1, @babel/generator@npm:^7.24.4, @babel/generator@npm:^7.7.2": + version: 7.24.4 + resolution: "@babel/generator@npm:7.24.4" + dependencies: + "@babel/types": "npm:^7.24.0" + "@jridgewell/gen-mapping": "npm:^0.3.5" + "@jridgewell/trace-mapping": "npm:^0.3.25" + jsesc: "npm:^2.5.1" + checksum: 10c0/67a1b2f7cc985aaaa11b01e8ddd4fffa4f285837bc7a209738eb8203aa34bdafeb8507ed75fd883ddbabd641a036ca0a8d984e760f28ad4a9d60bff29d0a60bb + languageName: node + linkType: hard + +"@babel/helper-compilation-targets@npm:^7.23.6": + version: 7.23.6 + resolution: "@babel/helper-compilation-targets@npm:7.23.6" + dependencies: + "@babel/compat-data": "npm:^7.23.5" + "@babel/helper-validator-option": "npm:^7.23.5" + browserslist: "npm:^4.22.2" + lru-cache: "npm:^5.1.1" + semver: "npm:^6.3.1" + checksum: 10c0/ba38506d11185f48b79abf439462ece271d3eead1673dd8814519c8c903c708523428806f05f2ec5efd0c56e4e278698fac967e5a4b5ee842c32415da54bc6fa + languageName: node + linkType: hard + +"@babel/helper-environment-visitor@npm:^7.22.20": + version: 7.22.20 + resolution: "@babel/helper-environment-visitor@npm:7.22.20" + checksum: 10c0/e762c2d8f5d423af89bd7ae9abe35bd4836d2eb401af868a63bbb63220c513c783e25ef001019418560b3fdc6d9a6fb67e6c0b650bcdeb3a2ac44b5c3d2bdd94 + languageName: node + linkType: hard + +"@babel/helper-function-name@npm:^7.23.0": + version: 7.23.0 + resolution: "@babel/helper-function-name@npm:7.23.0" + dependencies: + "@babel/template": "npm:^7.22.15" + "@babel/types": "npm:^7.23.0" + checksum: 10c0/d771dd1f3222b120518176733c52b7cadac1c256ff49b1889dbbe5e3fed81db855b8cc4e40d949c9d3eae0e795e8229c1c8c24c0e83f27cfa6ee3766696c6428 + languageName: node + linkType: hard + +"@babel/helper-hoist-variables@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-hoist-variables@npm:7.22.5" + dependencies: + "@babel/types": "npm:^7.22.5" + checksum: 10c0/60a3077f756a1cd9f14eb89f0037f487d81ede2b7cfe652ea6869cd4ec4c782b0fb1de01b8494b9a2d2050e3d154d7d5ad3be24806790acfb8cbe2073bf1e208 + languageName: node + linkType: hard + +"@babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.22.15": version: 7.24.3 resolution: "@babel/helper-module-imports@npm:7.24.3" dependencies: @@ -38,6 +136,46 @@ __metadata: languageName: node linkType: hard +"@babel/helper-module-transforms@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/helper-module-transforms@npm:7.23.3" + dependencies: + "@babel/helper-environment-visitor": "npm:^7.22.20" + "@babel/helper-module-imports": "npm:^7.22.15" + "@babel/helper-simple-access": "npm:^7.22.5" + "@babel/helper-split-export-declaration": "npm:^7.22.6" + "@babel/helper-validator-identifier": "npm:^7.22.20" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/211e1399d0c4993671e8e5c2b25383f08bee40004ace5404ed4065f0e9258cc85d99c1b82fd456c030ce5cfd4d8f310355b54ef35de9924eabfc3dff1331d946 + languageName: node + linkType: hard + +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.24.0, @babel/helper-plugin-utils@npm:^7.8.0": + version: 7.24.0 + resolution: "@babel/helper-plugin-utils@npm:7.24.0" + checksum: 10c0/90f41bd1b4dfe7226b1d33a4bb745844c5c63e400f9e4e8bf9103a7ceddd7d425d65333b564d9daba3cebd105985764d51b4bd4c95822b97c2e3ac1201a8a5da + languageName: node + linkType: hard + +"@babel/helper-simple-access@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-simple-access@npm:7.22.5" + dependencies: + "@babel/types": "npm:^7.22.5" + checksum: 10c0/f0cf81a30ba3d09a625fd50e5a9069e575c5b6719234e04ee74247057f8104beca89ed03e9217b6e9b0493434cedc18c5ecca4cea6244990836f1f893e140369 + languageName: node + linkType: hard + +"@babel/helper-split-export-declaration@npm:^7.22.6": + version: 7.22.6 + resolution: "@babel/helper-split-export-declaration@npm:7.22.6" + dependencies: + "@babel/types": "npm:^7.22.5" + checksum: 10c0/d83e4b623eaa9622c267d3c83583b72f3aac567dc393dda18e559d79187961cb29ae9c57b2664137fc3d19508370b12ec6a81d28af73a50e0846819cb21c6e44 + languageName: node + linkType: hard + "@babel/helper-string-parser@npm:^7.23.4": version: 7.24.1 resolution: "@babel/helper-string-parser@npm:7.24.1" @@ -52,6 +190,24 @@ __metadata: languageName: node linkType: hard +"@babel/helper-validator-option@npm:^7.23.5": + version: 7.23.5 + resolution: "@babel/helper-validator-option@npm:7.23.5" + checksum: 10c0/af45d5c0defb292ba6fd38979e8f13d7da63f9623d8ab9ededc394f67eb45857d2601278d151ae9affb6e03d5d608485806cd45af08b4468a0515cf506510e94 + languageName: node + linkType: hard + +"@babel/helpers@npm:^7.24.4": + version: 7.24.4 + resolution: "@babel/helpers@npm:7.24.4" + dependencies: + "@babel/template": "npm:^7.24.0" + "@babel/traverse": "npm:^7.24.1" + "@babel/types": "npm:^7.24.0" + checksum: 10c0/747ef62b7fe87de31a2f3c19ff337a86cbb79be2f6c18af63133b614ab5a8f6da5b06ae4b06fb0e71271cb6a27efec6f8b6c9f44c60b8a18777832dc7929e6c5 + languageName: node + linkType: hard + "@babel/highlight@npm:^7.24.2": version: 7.24.2 resolution: "@babel/highlight@npm:7.24.2" @@ -64,6 +220,169 @@ __metadata: languageName: node linkType: hard +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.24.0, @babel/parser@npm:^7.24.1, @babel/parser@npm:^7.24.4": + version: 7.24.4 + resolution: "@babel/parser@npm:7.24.4" + bin: + parser: ./bin/babel-parser.js + checksum: 10c0/8381e1efead5069cb7ed2abc3a583f4a86289b2f376c75cecc69f59a8eb36df18274b1886cecf2f97a6a0dff5334b27330f58535be9b3e4e26102cc50e12eac8 + languageName: node + linkType: hard + +"@babel/plugin-syntax-async-generators@npm:^7.8.4": + version: 7.8.4 + resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/d13efb282838481348c71073b6be6245b35d4f2f964a8f71e4174f235009f929ef7613df25f8d2338e2d3e44bc4265a9f8638c6aaa136d7a61fe95985f9725c8 + languageName: node + linkType: hard + +"@babel/plugin-syntax-bigint@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-bigint@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/686891b81af2bc74c39013655da368a480f17dd237bf9fbc32048e5865cb706d5a8f65438030da535b332b1d6b22feba336da8fa931f663b6b34e13147d12dde + languageName: node + linkType: hard + +"@babel/plugin-syntax-class-properties@npm:^7.8.3": + version: 7.12.13 + resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.12.13" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/95168fa186416195280b1264fb18afcdcdcea780b3515537b766cb90de6ce042d42dd6a204a39002f794ae5845b02afb0fd4861a3308a861204a55e68310a120 + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-meta@npm:^7.8.3": + version: 7.10.4 + resolution: "@babel/plugin-syntax-import-meta@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.10.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/0b08b5e4c3128523d8e346f8cfc86824f0da2697b1be12d71af50a31aff7a56ceb873ed28779121051475010c28d6146a6bfea8518b150b71eeb4e46190172ee + languageName: node + linkType: hard + +"@babel/plugin-syntax-json-strings@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-json-strings@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e98f31b2ec406c57757d115aac81d0336e8434101c224edd9a5c93cefa53faf63eacc69f3138960c8b25401315af03df37f68d316c151c4b933136716ed6906e + languageName: node + linkType: hard + +"@babel/plugin-syntax-jsx@npm:^7.7.2": + version: 7.24.1 + resolution: "@babel/plugin-syntax-jsx@npm:7.24.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/6cec76fbfe6ca81c9345c2904d8d9a8a0df222f9269f0962ed6eb2eb8f3f10c2f15e993d1ef09dbaf97726bf1792b5851cf5bd9a769f966a19448df6be95d19a + languageName: node + linkType: hard + +"@babel/plugin-syntax-logical-assignment-operators@npm:^7.8.3": + version: 7.10.4 + resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.10.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/2594cfbe29411ad5bc2ad4058de7b2f6a8c5b86eda525a993959438615479e59c012c14aec979e538d60a584a1a799b60d1b8942c3b18468cb9d99b8fd34cd0b + languageName: node + linkType: hard + +"@babel/plugin-syntax-nullish-coalescing-operator@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-nullish-coalescing-operator@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/2024fbb1162899094cfc81152449b12bd0cc7053c6d4bda8ac2852545c87d0a851b1b72ed9560673cbf3ef6248257262c3c04aabf73117215c1b9cc7dd2542ce + languageName: node + linkType: hard + +"@babel/plugin-syntax-numeric-separator@npm:^7.8.3": + version: 7.10.4 + resolution: "@babel/plugin-syntax-numeric-separator@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.10.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/c55a82b3113480942c6aa2fcbe976ff9caa74b7b1109ff4369641dfbc88d1da348aceb3c31b6ed311c84d1e7c479440b961906c735d0ab494f688bf2fd5b9bb9 + languageName: node + linkType: hard + +"@babel/plugin-syntax-object-rest-spread@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-object-rest-spread@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/ee1eab52ea6437e3101a0a7018b0da698545230015fc8ab129d292980ec6dff94d265e9e90070e8ae5fed42f08f1622c14c94552c77bcac784b37f503a82ff26 + languageName: node + linkType: hard + +"@babel/plugin-syntax-optional-catch-binding@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-optional-catch-binding@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/27e2493ab67a8ea6d693af1287f7e9acec206d1213ff107a928e85e173741e1d594196f99fec50e9dde404b09164f39dec5864c767212154ffe1caa6af0bc5af + languageName: node + linkType: hard + +"@babel/plugin-syntax-optional-chaining@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-optional-chaining@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/46edddf2faa6ebf94147b8e8540dfc60a5ab718e2de4d01b2c0bdf250a4d642c2bd47cbcbb739febcb2bf75514dbcefad3c52208787994b8d0f8822490f55e81 + languageName: node + linkType: hard + +"@babel/plugin-syntax-top-level-await@npm:^7.8.3": + version: 7.14.5 + resolution: "@babel/plugin-syntax-top-level-await@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/14bf6e65d5bc1231ffa9def5f0ef30b19b51c218fcecaa78cd1bdf7939dfdf23f90336080b7f5196916368e399934ce5d581492d8292b46a2fb569d8b2da106f + languageName: node + linkType: hard + +"@babel/plugin-syntax-typescript@npm:^7.7.2": + version: 7.24.1 + resolution: "@babel/plugin-syntax-typescript@npm:7.24.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.24.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/7a81e277dcfe3138847e8e5944e02a42ff3c2e864aea6f33fd9b70d1556d12b0e70f0d56cc1985d353c91bcbf8fe163e6cc17418da21129b7f7f1d8b9ac00c93 + languageName: node + linkType: hard + "@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.12.13, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.13.10, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.23.2, @babel/runtime@npm:^7.24.0": version: 7.24.1 resolution: "@babel/runtime@npm:7.24.1" @@ -73,7 +392,45 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.24.0": +"@babel/runtime@npm:^7.9.2": + version: 7.24.4 + resolution: "@babel/runtime@npm:7.24.4" + dependencies: + regenerator-runtime: "npm:^0.14.0" + checksum: 10c0/785aff96a3aa8ff97f90958e1e8a7b1d47f793b204b47c6455eaadc3f694f48c97cd5c0a921fe3596d818e71f18106610a164fb0f1c71fd68c622a58269d537c + languageName: node + linkType: hard + +"@babel/template@npm:^7.22.15, @babel/template@npm:^7.24.0, @babel/template@npm:^7.3.3": + version: 7.24.0 + resolution: "@babel/template@npm:7.24.0" + dependencies: + "@babel/code-frame": "npm:^7.23.5" + "@babel/parser": "npm:^7.24.0" + "@babel/types": "npm:^7.24.0" + checksum: 10c0/9d3dd8d22fe1c36bc3bdef6118af1f4b030aaf6d7d2619f5da203efa818a2185d717523486c111de8d99a8649ddf4bbf6b2a7a64962d8411cf6a8fa89f010e54 + languageName: node + linkType: hard + +"@babel/traverse@npm:^7.24.1": + version: 7.24.1 + resolution: "@babel/traverse@npm:7.24.1" + dependencies: + "@babel/code-frame": "npm:^7.24.1" + "@babel/generator": "npm:^7.24.1" + "@babel/helper-environment-visitor": "npm:^7.22.20" + "@babel/helper-function-name": "npm:^7.23.0" + "@babel/helper-hoist-variables": "npm:^7.22.5" + "@babel/helper-split-export-declaration": "npm:^7.22.6" + "@babel/parser": "npm:^7.24.1" + "@babel/types": "npm:^7.24.0" + debug: "npm:^4.3.1" + globals: "npm:^11.1.0" + checksum: 10c0/c087b918f6823776537ba246136c70e7ce0719fc05361ebcbfd16f4e6f2f6f1f8f4f9167f1d9b675f27d12074839605189cc9d689de20b89a85e7c140f23daab + languageName: node + linkType: hard + +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.5, @babel/types@npm:^7.23.0, @babel/types@npm:^7.24.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.8.3": version: 7.24.0 resolution: "@babel/types@npm:7.24.0" dependencies: @@ -84,6 +441,13 @@ __metadata: languageName: node linkType: hard +"@bcoe/v8-coverage@npm:^0.2.3": + version: 0.2.3 + resolution: "@bcoe/v8-coverage@npm:0.2.3" + checksum: 10c0/6b80ae4cb3db53f486da2dc63b6e190a74c8c3cca16bb2733f234a0b6a9382b09b146488ae08e2b22cf00f6c83e20f3e040a2f7894f05c045c946d6a090b1d52 + languageName: node + linkType: hard + "@chakra-ui/accordion@npm:2.3.1": version: 2.3.1 resolution: "@chakra-ui/accordion@npm:2.3.1" @@ -1510,7 +1874,257 @@ __metadata: languageName: node linkType: hard -"@jridgewell/gen-mapping@npm:^0.3.2": +"@istanbuljs/load-nyc-config@npm:^1.0.0": + version: 1.1.0 + resolution: "@istanbuljs/load-nyc-config@npm:1.1.0" + dependencies: + camelcase: "npm:^5.3.1" + find-up: "npm:^4.1.0" + get-package-type: "npm:^0.1.0" + js-yaml: "npm:^3.13.1" + resolve-from: "npm:^5.0.0" + checksum: 10c0/dd2a8b094887da5a1a2339543a4933d06db2e63cbbc2e288eb6431bd832065df0c099d091b6a67436e71b7d6bf85f01ce7c15f9253b4cbebcc3b9a496165ba42 + languageName: node + linkType: hard + +"@istanbuljs/schema@npm:^0.1.2, @istanbuljs/schema@npm:^0.1.3": + version: 0.1.3 + resolution: "@istanbuljs/schema@npm:0.1.3" + checksum: 10c0/61c5286771676c9ca3eb2bd8a7310a9c063fb6e0e9712225c8471c582d157392c88f5353581c8c9adbe0dff98892317d2fdfc56c3499aa42e0194405206a963a + languageName: node + linkType: hard + +"@jest/console@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/console@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + jest-message-util: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + slash: "npm:^3.0.0" + checksum: 10c0/7be408781d0a6f657e969cbec13b540c329671819c2f57acfad0dae9dbfe2c9be859f38fe99b35dba9ff1536937dc6ddc69fdcd2794812fa3c647a1619797f6c + languageName: node + linkType: hard + +"@jest/core@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/core@npm:29.7.0" + dependencies: + "@jest/console": "npm:^29.7.0" + "@jest/reporters": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + ansi-escapes: "npm:^4.2.1" + chalk: "npm:^4.0.0" + ci-info: "npm:^3.2.0" + exit: "npm:^0.1.2" + graceful-fs: "npm:^4.2.9" + jest-changed-files: "npm:^29.7.0" + jest-config: "npm:^29.7.0" + jest-haste-map: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-regex-util: "npm:^29.6.3" + jest-resolve: "npm:^29.7.0" + jest-resolve-dependencies: "npm:^29.7.0" + jest-runner: "npm:^29.7.0" + jest-runtime: "npm:^29.7.0" + jest-snapshot: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-validate: "npm:^29.7.0" + jest-watcher: "npm:^29.7.0" + micromatch: "npm:^4.0.4" + pretty-format: "npm:^29.7.0" + slash: "npm:^3.0.0" + strip-ansi: "npm:^6.0.0" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + checksum: 10c0/934f7bf73190f029ac0f96662c85cd276ec460d407baf6b0dbaec2872e157db4d55a7ee0b1c43b18874602f662b37cb973dda469a4e6d88b4e4845b521adeeb2 + languageName: node + linkType: hard + +"@jest/environment@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/environment@npm:29.7.0" + dependencies: + "@jest/fake-timers": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + jest-mock: "npm:^29.7.0" + checksum: 10c0/c7b1b40c618f8baf4d00609022d2afa086d9c6acc706f303a70bb4b67275868f620ad2e1a9efc5edd418906157337cce50589a627a6400bbdf117d351b91ef86 + languageName: node + linkType: hard + +"@jest/expect-utils@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/expect-utils@npm:29.7.0" + dependencies: + jest-get-type: "npm:^29.6.3" + checksum: 10c0/60b79d23a5358dc50d9510d726443316253ecda3a7fb8072e1526b3e0d3b14f066ee112db95699b7a43ad3f0b61b750c72e28a5a1cac361d7a2bb34747fa938a + languageName: node + linkType: hard + +"@jest/expect@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/expect@npm:29.7.0" + dependencies: + expect: "npm:^29.7.0" + jest-snapshot: "npm:^29.7.0" + checksum: 10c0/b41f193fb697d3ced134349250aed6ccea075e48c4f803159db102b826a4e473397c68c31118259868fd69a5cba70e97e1c26d2c2ff716ca39dc73a2ccec037e + languageName: node + linkType: hard + +"@jest/fake-timers@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/fake-timers@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + "@sinonjs/fake-timers": "npm:^10.0.2" + "@types/node": "npm:*" + jest-message-util: "npm:^29.7.0" + jest-mock: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + checksum: 10c0/cf0a8bcda801b28dc2e2b2ba36302200ee8104a45ad7a21e6c234148932f826cb3bc57c8df3b7b815aeea0861d7b6ca6f0d4778f93b9219398ef28749e03595c + languageName: node + linkType: hard + +"@jest/globals@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/globals@npm:29.7.0" + dependencies: + "@jest/environment": "npm:^29.7.0" + "@jest/expect": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + jest-mock: "npm:^29.7.0" + checksum: 10c0/a385c99396878fe6e4460c43bd7bb0a5cc52befb462cc6e7f2a3810f9e7bcce7cdeb51908fd530391ee452dc856c98baa2c5f5fa8a5b30b071d31ef7f6955cea + languageName: node + linkType: hard + +"@jest/reporters@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/reporters@npm:29.7.0" + dependencies: + "@bcoe/v8-coverage": "npm:^0.2.3" + "@jest/console": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@jridgewell/trace-mapping": "npm:^0.3.18" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + collect-v8-coverage: "npm:^1.0.0" + exit: "npm:^0.1.2" + glob: "npm:^7.1.3" + graceful-fs: "npm:^4.2.9" + istanbul-lib-coverage: "npm:^3.0.0" + istanbul-lib-instrument: "npm:^6.0.0" + istanbul-lib-report: "npm:^3.0.0" + istanbul-lib-source-maps: "npm:^4.0.0" + istanbul-reports: "npm:^3.1.3" + jest-message-util: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-worker: "npm:^29.7.0" + slash: "npm:^3.0.0" + string-length: "npm:^4.0.1" + strip-ansi: "npm:^6.0.0" + v8-to-istanbul: "npm:^9.0.1" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + checksum: 10c0/a754402a799541c6e5aff2c8160562525e2a47e7d568f01ebfc4da66522de39cbb809bbb0a841c7052e4270d79214e70aec3c169e4eae42a03bc1a8a20cb9fa2 + languageName: node + linkType: hard + +"@jest/schemas@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/schemas@npm:29.6.3" + dependencies: + "@sinclair/typebox": "npm:^0.27.8" + checksum: 10c0/b329e89cd5f20b9278ae1233df74016ebf7b385e0d14b9f4c1ad18d096c4c19d1e687aa113a9c976b16ec07f021ae53dea811fb8c1248a50ac34fbe009fdf6be + languageName: node + linkType: hard + +"@jest/source-map@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/source-map@npm:29.6.3" + dependencies: + "@jridgewell/trace-mapping": "npm:^0.3.18" + callsites: "npm:^3.0.0" + graceful-fs: "npm:^4.2.9" + checksum: 10c0/a2f177081830a2e8ad3f2e29e20b63bd40bade294880b595acf2fc09ec74b6a9dd98f126a2baa2bf4941acd89b13a4ade5351b3885c224107083a0059b60a219 + languageName: node + linkType: hard + +"@jest/test-result@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/test-result@npm:29.7.0" + dependencies: + "@jest/console": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/istanbul-lib-coverage": "npm:^2.0.0" + collect-v8-coverage: "npm:^1.0.0" + checksum: 10c0/7de54090e54a674ca173470b55dc1afdee994f2d70d185c80236003efd3fa2b753fff51ffcdda8e2890244c411fd2267529d42c4a50a8303755041ee493e6a04 + languageName: node + linkType: hard + +"@jest/test-sequencer@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/test-sequencer@npm:29.7.0" + dependencies: + "@jest/test-result": "npm:^29.7.0" + graceful-fs: "npm:^4.2.9" + jest-haste-map: "npm:^29.7.0" + slash: "npm:^3.0.0" + checksum: 10c0/593a8c4272797bb5628984486080cbf57aed09c7cfdc0a634e8c06c38c6bef329c46c0016e84555ee55d1cd1f381518cf1890990ff845524c1123720c8c1481b + languageName: node + linkType: hard + +"@jest/transform@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/transform@npm:29.7.0" + dependencies: + "@babel/core": "npm:^7.11.6" + "@jest/types": "npm:^29.6.3" + "@jridgewell/trace-mapping": "npm:^0.3.18" + babel-plugin-istanbul: "npm:^6.1.1" + chalk: "npm:^4.0.0" + convert-source-map: "npm:^2.0.0" + fast-json-stable-stringify: "npm:^2.1.0" + graceful-fs: "npm:^4.2.9" + jest-haste-map: "npm:^29.7.0" + jest-regex-util: "npm:^29.6.3" + jest-util: "npm:^29.7.0" + micromatch: "npm:^4.0.4" + pirates: "npm:^4.0.4" + slash: "npm:^3.0.0" + write-file-atomic: "npm:^4.0.2" + checksum: 10c0/7f4a7f73dcf45dfdf280c7aa283cbac7b6e5a904813c3a93ead7e55873761fc20d5c4f0191d2019004fac6f55f061c82eb3249c2901164ad80e362e7a7ede5a6 + languageName: node + linkType: hard + +"@jest/types@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/types@npm:29.6.3" + dependencies: + "@jest/schemas": "npm:^29.6.3" + "@types/istanbul-lib-coverage": "npm:^2.0.0" + "@types/istanbul-reports": "npm:^3.0.0" + "@types/node": "npm:*" + "@types/yargs": "npm:^17.0.8" + chalk: "npm:^4.0.0" + checksum: 10c0/ea4e493dd3fb47933b8ccab201ae573dcc451f951dc44ed2a86123cd8541b82aa9d2b1031caf9b1080d6673c517e2dcc25a44b2dc4f3fbc37bfc965d444888c0 + languageName: node + linkType: hard + +"@jridgewell/gen-mapping@npm:^0.3.2, @jridgewell/gen-mapping@npm:^0.3.5": version: 0.3.5 resolution: "@jridgewell/gen-mapping@npm:0.3.5" dependencies: @@ -1542,7 +2156,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.24": +"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": version: 0.3.25 resolution: "@jridgewell/trace-mapping@npm:0.3.25" dependencies: @@ -1977,17 +2591,205 @@ __metadata: languageName: node linkType: hard -"@swc/helpers@npm:0.5.2": - version: 0.5.2 - resolution: "@swc/helpers@npm:0.5.2" - dependencies: - tslib: "npm:^2.4.0" - checksum: 10c0/b6fa49bcf6c00571d0eb7837b163f8609960d4d77538160585e27ed167361e9776bd6e5eb9646ffac2fb4d43c58df9ca50dab9d96ab097e6591bc82a75fd1164 +"@sinclair/typebox@npm:^0.27.8": + version: 0.27.8 + resolution: "@sinclair/typebox@npm:0.27.8" + checksum: 10c0/ef6351ae073c45c2ac89494dbb3e1f87cc60a93ce4cde797b782812b6f97da0d620ae81973f104b43c9b7eaa789ad20ba4f6a1359f1cc62f63729a55a7d22d4e languageName: node linkType: hard -"@types/json5@npm:^0.0.29": - version: 0.0.29 +"@sinonjs/commons@npm:^3.0.0": + version: 3.0.1 + resolution: "@sinonjs/commons@npm:3.0.1" + dependencies: + type-detect: "npm:4.0.8" + checksum: 10c0/1227a7b5bd6c6f9584274db996d7f8cee2c8c350534b9d0141fc662eaf1f292ea0ae3ed19e5e5271c8fd390d27e492ca2803acd31a1978be2cdc6be0da711403 + languageName: node + linkType: hard + +"@sinonjs/fake-timers@npm:^10.0.2": + version: 10.3.0 + resolution: "@sinonjs/fake-timers@npm:10.3.0" + dependencies: + "@sinonjs/commons": "npm:^3.0.0" + checksum: 10c0/2e2fb6cc57f227912814085b7b01fede050cd4746ea8d49a1e44d5a0e56a804663b0340ae2f11af7559ea9bf4d087a11f2f646197a660ea3cb04e19efc04aa63 + languageName: node + linkType: hard + +"@swc/helpers@npm:0.5.2": + version: 0.5.2 + resolution: "@swc/helpers@npm:0.5.2" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/b6fa49bcf6c00571d0eb7837b163f8609960d4d77538160585e27ed167361e9776bd6e5eb9646ffac2fb4d43c58df9ca50dab9d96ab097e6591bc82a75fd1164 + languageName: node + linkType: hard + +"@testing-library/dom@npm:^9.0.0": + version: 9.3.4 + resolution: "@testing-library/dom@npm:9.3.4" + dependencies: + "@babel/code-frame": "npm:^7.10.4" + "@babel/runtime": "npm:^7.12.5" + "@types/aria-query": "npm:^5.0.1" + aria-query: "npm:5.1.3" + chalk: "npm:^4.1.0" + dom-accessibility-api: "npm:^0.5.9" + lz-string: "npm:^1.5.0" + pretty-format: "npm:^27.0.2" + checksum: 10c0/147da340e8199d7f98f3a4ad8aa22ed55b914b83957efa5eb22bfea021a979ebe5a5182afa9c1e5b7a5f99a7f6744a5a4d9325ae46ec3b33b5a15aed8750d794 + languageName: node + linkType: hard + +"@testing-library/jest-dom@npm:^6.4.2": + version: 6.4.2 + resolution: "@testing-library/jest-dom@npm:6.4.2" + dependencies: + "@adobe/css-tools": "npm:^4.3.2" + "@babel/runtime": "npm:^7.9.2" + aria-query: "npm:^5.0.0" + chalk: "npm:^3.0.0" + css.escape: "npm:^1.5.1" + dom-accessibility-api: "npm:^0.6.3" + lodash: "npm:^4.17.15" + redent: "npm:^3.0.0" + peerDependencies: + "@jest/globals": ">= 28" + "@types/bun": "*" + "@types/jest": ">= 28" + jest: ">= 28" + vitest: ">= 0.32" + peerDependenciesMeta: + "@jest/globals": + optional: true + "@types/bun": + optional: true + "@types/jest": + optional: true + jest: + optional: true + vitest: + optional: true + checksum: 10c0/e7eba527b34ce30cde94424d2ec685bdfed51daaafb7df9b68b51aec6052e99a50c8bfe654612dacdf857a1eb81d68cf294fc89de558ee3a992bf7a6019fffcc + languageName: node + linkType: hard + +"@testing-library/react@npm:^14.2.2": + version: 14.2.2 + resolution: "@testing-library/react@npm:14.2.2" + dependencies: + "@babel/runtime": "npm:^7.12.5" + "@testing-library/dom": "npm:^9.0.0" + "@types/react-dom": "npm:^18.0.0" + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + checksum: 10c0/ab36707f6701a4a56dd217e16e00d6326e0f760bb2e716245422c7500a0b94efcd351d0aa89c4fab2916e6ebc68c983cec6b3ae0804de813cafc913a612668f6 + languageName: node + linkType: hard + +"@tootallnate/once@npm:2": + version: 2.0.0 + resolution: "@tootallnate/once@npm:2.0.0" + checksum: 10c0/073bfa548026b1ebaf1659eb8961e526be22fa77139b10d60e712f46d2f0f05f4e6c8bec62a087d41088ee9e29faa7f54838568e475ab2f776171003c3920858 + languageName: node + linkType: hard + +"@types/aria-query@npm:^5.0.1": + version: 5.0.4 + resolution: "@types/aria-query@npm:5.0.4" + checksum: 10c0/dc667bc6a3acc7bba2bccf8c23d56cb1f2f4defaa704cfef595437107efaa972d3b3db9ec1d66bc2711bfc35086821edd32c302bffab36f2e79b97f312069f08 + languageName: node + linkType: hard + +"@types/babel__core@npm:^7.1.14": + version: 7.20.5 + resolution: "@types/babel__core@npm:7.20.5" + dependencies: + "@babel/parser": "npm:^7.20.7" + "@babel/types": "npm:^7.20.7" + "@types/babel__generator": "npm:*" + "@types/babel__template": "npm:*" + "@types/babel__traverse": "npm:*" + checksum: 10c0/bdee3bb69951e833a4b811b8ee9356b69a61ed5b7a23e1a081ec9249769117fa83aaaf023bb06562a038eb5845155ff663e2d5c75dd95c1d5ccc91db012868ff + languageName: node + linkType: hard + +"@types/babel__generator@npm:*": + version: 7.6.8 + resolution: "@types/babel__generator@npm:7.6.8" + dependencies: + "@babel/types": "npm:^7.0.0" + checksum: 10c0/f0ba105e7d2296bf367d6e055bb22996886c114261e2cb70bf9359556d0076c7a57239d019dee42bb063f565bade5ccb46009bce2044b2952d964bf9a454d6d2 + languageName: node + linkType: hard + +"@types/babel__template@npm:*": + version: 7.4.4 + resolution: "@types/babel__template@npm:7.4.4" + dependencies: + "@babel/parser": "npm:^7.1.0" + "@babel/types": "npm:^7.0.0" + checksum: 10c0/cc84f6c6ab1eab1427e90dd2b76ccee65ce940b778a9a67be2c8c39e1994e6f5bbc8efa309f6cea8dc6754994524cd4d2896558df76d92e7a1f46ecffee7112b + languageName: node + linkType: hard + +"@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6": + version: 7.20.5 + resolution: "@types/babel__traverse@npm:7.20.5" + dependencies: + "@babel/types": "npm:^7.20.7" + checksum: 10c0/033abcb2f4c084ad33e30c3efaad82161240f351e3c71b6154ed289946b33b363696c0fbd42502b68e4582a87413c418321f40eb1ea863e34fe525641345e05b + languageName: node + linkType: hard + +"@types/graceful-fs@npm:^4.1.3": + version: 4.1.9 + resolution: "@types/graceful-fs@npm:4.1.9" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/235d2fc69741448e853333b7c3d1180a966dd2b8972c8cbcd6b2a0c6cd7f8d582ab2b8e58219dbc62cce8f1b40aa317ff78ea2201cdd8249da5025adebed6f0b + languageName: node + linkType: hard + +"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": + version: 2.0.6 + resolution: "@types/istanbul-lib-coverage@npm:2.0.6" + checksum: 10c0/3948088654f3eeb45363f1db158354fb013b362dba2a5c2c18c559484d5eb9f6fd85b23d66c0a7c2fcfab7308d0a585b14dadaca6cc8bf89ebfdc7f8f5102fb7 + languageName: node + linkType: hard + +"@types/istanbul-lib-report@npm:*": + version: 3.0.3 + resolution: "@types/istanbul-lib-report@npm:3.0.3" + dependencies: + "@types/istanbul-lib-coverage": "npm:*" + checksum: 10c0/247e477bbc1a77248f3c6de5dadaae85ff86ac2d76c5fc6ab1776f54512a745ff2a5f791d22b942e3990ddbd40f3ef5289317c4fca5741bedfaa4f01df89051c + languageName: node + linkType: hard + +"@types/istanbul-reports@npm:^3.0.0": + version: 3.0.4 + resolution: "@types/istanbul-reports@npm:3.0.4" + dependencies: + "@types/istanbul-lib-report": "npm:*" + checksum: 10c0/1647fd402aced5b6edac87274af14ebd6b3a85447ef9ad11853a70fd92a98d35f81a5d3ea9fcb5dbb5834e800c6e35b64475e33fcae6bfa9acc70d61497c54ee + languageName: node + linkType: hard + +"@types/jsdom@npm:^20.0.0": + version: 20.0.1 + resolution: "@types/jsdom@npm:20.0.1" + dependencies: + "@types/node": "npm:*" + "@types/tough-cookie": "npm:*" + parse5: "npm:^7.0.0" + checksum: 10c0/3d4b2a3eab145674ee6da482607c5e48977869109f0f62560bf91ae1a792c9e847ac7c6aaf243ed2e97333cb3c51aef314ffa54a19ef174b8f9592dfcb836b25 + languageName: node + linkType: hard + +"@types/json5@npm:^0.0.29": + version: 0.0.29 resolution: "@types/json5@npm:0.0.29" checksum: 10c0/6bf5337bc447b706bb5b4431d37686aa2ea6d07cfd6f79cc31de80170d6ff9b1c7384a9c0ccbc45b3f512bae9e9f75c2e12109806a15331dc94e8a8db6dbb4ac languageName: node @@ -2009,6 +2811,15 @@ __metadata: languageName: node linkType: hard +"@types/node@npm:*": + version: 20.12.4 + resolution: "@types/node@npm:20.12.4" + dependencies: + undici-types: "npm:~5.26.4" + checksum: 10c0/9b142fcd839a48c348d6b9acfc753dfa4b3fb1f3e23ed67e8952bee9b2dfdaffdddfbcf0e4701557b88631591a5f9968433910027532ef847759f8682e27ffe7 + languageName: node + linkType: hard + "@types/node@npm:^20": version: 20.11.30 resolution: "@types/node@npm:20.11.30" @@ -2041,6 +2852,15 @@ __metadata: languageName: node linkType: hard +"@types/react-dom@npm:^18.0.0": + version: 18.2.24 + resolution: "@types/react-dom@npm:18.2.24" + dependencies: + "@types/react": "npm:*" + checksum: 10c0/9ec38e5ab4727c56ef17bd8e938ead88748ba19db314b8d9807714a5cae430f5b799514667b221b4f2dc8d9b4ca17dd1c3da8c41c083c2de9eddcc31bec6b8ff + languageName: node + linkType: hard + "@types/react@npm:*, @types/react@npm:^18": version: 18.2.70 resolution: "@types/react@npm:18.2.70" @@ -2059,6 +2879,36 @@ __metadata: languageName: node linkType: hard +"@types/stack-utils@npm:^2.0.0": + version: 2.0.3 + resolution: "@types/stack-utils@npm:2.0.3" + checksum: 10c0/1f4658385ae936330581bcb8aa3a066df03867d90281cdf89cc356d404bd6579be0f11902304e1f775d92df22c6dd761d4451c804b0a4fba973e06211e9bd77c + languageName: node + linkType: hard + +"@types/tough-cookie@npm:*": + version: 4.0.5 + resolution: "@types/tough-cookie@npm:4.0.5" + checksum: 10c0/68c6921721a3dcb40451543db2174a145ef915bc8bcbe7ad4e59194a0238e776e782b896c7a59f4b93ac6acefca9161fccb31d1ce3b3445cb6faa467297fb473 + languageName: node + linkType: hard + +"@types/yargs-parser@npm:*": + version: 21.0.3 + resolution: "@types/yargs-parser@npm:21.0.3" + checksum: 10c0/e71c3bd9d0b73ca82e10bee2064c384ab70f61034bbfb78e74f5206283fc16a6d85267b606b5c22cb2a3338373586786fed595b2009825d6a9115afba36560a0 + languageName: node + linkType: hard + +"@types/yargs@npm:^17.0.8": + version: 17.0.32 + resolution: "@types/yargs@npm:17.0.32" + dependencies: + "@types/yargs-parser": "npm:*" + checksum: 10c0/2095e8aad8a4e66b86147415364266b8d607a3b95b4239623423efd7e29df93ba81bb862784a6e08664f645cc1981b25fd598f532019174cd3e5e1e689e1cccf + languageName: node + linkType: hard + "@typescript-eslint/parser@npm:^5.4.2 || ^6.0.0": version: 6.21.0 resolution: "@typescript-eslint/parser@npm:6.21.0" @@ -2153,6 +3003,13 @@ __metadata: languageName: node linkType: hard +"abab@npm:^2.0.6": + version: 2.0.6 + resolution: "abab@npm:2.0.6" + checksum: 10c0/0b245c3c3ea2598fe0025abf7cc7bb507b06949d51e8edae5d12c1b847a0a0c09639abcb94788332b4e2044ac4491c1e8f571b51c7826fd4b0bda1685ad4a278 + languageName: node + linkType: hard + "abbrev@npm:^2.0.0": version: 2.0.0 resolution: "abbrev@npm:2.0.0" @@ -2160,6 +3017,16 @@ __metadata: languageName: node linkType: hard +"acorn-globals@npm:^7.0.0": + version: 7.0.1 + resolution: "acorn-globals@npm:7.0.1" + dependencies: + acorn: "npm:^8.1.0" + acorn-walk: "npm:^8.0.2" + checksum: 10c0/7437f58e92d99292dbebd0e79531af27d706c9f272f31c675d793da6c82d897e75302a8744af13c7f7978a8399840f14a353b60cf21014647f71012982456d2b + languageName: node + linkType: hard + "acorn-jsx@npm:^5.3.2": version: 5.3.2 resolution: "acorn-jsx@npm:5.3.2" @@ -2169,7 +3036,14 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.9.0": +"acorn-walk@npm:^8.0.2": + version: 8.3.2 + resolution: "acorn-walk@npm:8.3.2" + checksum: 10c0/7e2a8dad5480df7f872569b9dccff2f3da7e65f5353686b1d6032ab9f4ddf6e3a2cb83a9b52cf50b1497fd522154dda92f0abf7153290cc79cd14721ff121e52 + languageName: node + linkType: hard + +"acorn@npm:^8.1.0, acorn@npm:^8.8.1, acorn@npm:^8.9.0": version: 8.11.3 resolution: "acorn@npm:8.11.3" bin: @@ -2178,6 +3052,15 @@ __metadata: languageName: node linkType: hard +"agent-base@npm:6": + version: 6.0.2 + resolution: "agent-base@npm:6.0.2" + dependencies: + debug: "npm:4" + checksum: 10c0/dc4f757e40b5f3e3d674bc9beb4f1048f4ee83af189bae39be99f57bf1f48dde166a8b0a5342a84b5944ee8e6ed1e5a9d801858f4ad44764e84957122fe46261 + languageName: node + linkType: hard + "agent-base@npm:^7.0.2, agent-base@npm:^7.1.0": version: 7.1.0 resolution: "agent-base@npm:7.1.0" @@ -2216,6 +3099,15 @@ __metadata: languageName: node linkType: hard +"ansi-escapes@npm:^4.2.1": + version: 4.3.2 + resolution: "ansi-escapes@npm:4.3.2" + dependencies: + type-fest: "npm:^0.21.3" + checksum: 10c0/da917be01871525a3dfcf925ae2977bc59e8c513d4423368645634bf5d4ceba5401574eb705c1e92b79f7292af5a656f78c5725a4b0e1cec97c4b413705c1d50 + languageName: node + linkType: hard + "ansi-regex@npm:^5.0.1": version: 5.0.1 resolution: "ansi-regex@npm:5.0.1" @@ -2248,6 +3140,13 @@ __metadata: languageName: node linkType: hard +"ansi-styles@npm:^5.0.0": + version: 5.2.0 + resolution: "ansi-styles@npm:5.2.0" + checksum: 10c0/9c4ca80eb3c2fb7b33841c210d2f20807f40865d27008d7c3f707b7f95cab7d67462a565e2388ac3285b71cb3d9bb2173de8da37c57692a362885ec34d6e27df + languageName: node + linkType: hard + "ansi-styles@npm:^6.1.0": version: 6.2.1 resolution: "ansi-styles@npm:6.2.1" @@ -2262,7 +3161,7 @@ __metadata: languageName: node linkType: hard -"anymatch@npm:~3.1.2": +"anymatch@npm:^3.0.3, anymatch@npm:~3.1.2": version: 3.1.3 resolution: "anymatch@npm:3.1.3" dependencies: @@ -2279,6 +3178,15 @@ __metadata: languageName: node linkType: hard +"argparse@npm:^1.0.7": + version: 1.0.10 + resolution: "argparse@npm:1.0.10" + dependencies: + sprintf-js: "npm:~1.0.2" + checksum: 10c0/b2972c5c23c63df66bca144dbc65d180efa74f25f8fd9b7d9a0a6c88ae839db32df3d54770dcb6460cf840d232b60695d1a6b1053f599d84e73f7437087712de + languageName: node + linkType: hard + "argparse@npm:^2.0.1": version: 2.0.1 resolution: "argparse@npm:2.0.1" @@ -2295,7 +3203,16 @@ __metadata: languageName: node linkType: hard -"aria-query@npm:^5.3.0": +"aria-query@npm:5.1.3": + version: 5.1.3 + resolution: "aria-query@npm:5.1.3" + dependencies: + deep-equal: "npm:^2.0.5" + checksum: 10c0/edcbc8044c4663d6f88f785e983e6784f98cb62b4ba1e9dd8d61b725d0203e4cfca38d676aee984c31f354103461102a3d583aa4fbe4fd0a89b679744f4e5faf + languageName: node + linkType: hard + +"aria-query@npm:^5.0.0, aria-query@npm:^5.3.0": version: 5.3.0 resolution: "aria-query@npm:5.3.0" dependencies: @@ -2304,7 +3221,7 @@ __metadata: languageName: node linkType: hard -"array-buffer-byte-length@npm:^1.0.1": +"array-buffer-byte-length@npm:^1.0.0, array-buffer-byte-length@npm:^1.0.1": version: 1.0.1 resolution: "array-buffer-byte-length@npm:1.0.1" dependencies: @@ -2435,6 +3352,13 @@ __metadata: languageName: node linkType: hard +"asynckit@npm:^0.4.0": + version: 0.4.0 + resolution: "asynckit@npm:0.4.0" + checksum: 10c0/d73e2ddf20c4eb9337e1b3df1a0f6159481050a5de457c55b14ea2e5cb6d90bb69e004c9af54737a5ee0917fcf2c9e25de67777bbe58261847846066ba75bc9d + languageName: node + linkType: hard + "autoprefixer@npm:^10.0.1": version: 10.4.19 resolution: "autoprefixer@npm:10.4.19" @@ -2478,6 +3402,48 @@ __metadata: languageName: node linkType: hard +"babel-jest@npm:^29.7.0": + version: 29.7.0 + resolution: "babel-jest@npm:29.7.0" + dependencies: + "@jest/transform": "npm:^29.7.0" + "@types/babel__core": "npm:^7.1.14" + babel-plugin-istanbul: "npm:^6.1.1" + babel-preset-jest: "npm:^29.6.3" + chalk: "npm:^4.0.0" + graceful-fs: "npm:^4.2.9" + slash: "npm:^3.0.0" + peerDependencies: + "@babel/core": ^7.8.0 + checksum: 10c0/2eda9c1391e51936ca573dd1aedfee07b14c59b33dbe16ef347873ddd777bcf6e2fc739681e9e9661ab54ef84a3109a03725be2ac32cd2124c07ea4401cbe8c1 + languageName: node + linkType: hard + +"babel-plugin-istanbul@npm:^6.1.1": + version: 6.1.1 + resolution: "babel-plugin-istanbul@npm:6.1.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.0.0" + "@istanbuljs/load-nyc-config": "npm:^1.0.0" + "@istanbuljs/schema": "npm:^0.1.2" + istanbul-lib-instrument: "npm:^5.0.4" + test-exclude: "npm:^6.0.0" + checksum: 10c0/1075657feb705e00fd9463b329921856d3775d9867c5054b449317d39153f8fbcebd3e02ebf00432824e647faff3683a9ca0a941325ef1afe9b3c4dd51b24beb + languageName: node + linkType: hard + +"babel-plugin-jest-hoist@npm:^29.6.3": + version: 29.6.3 + resolution: "babel-plugin-jest-hoist@npm:29.6.3" + dependencies: + "@babel/template": "npm:^7.3.3" + "@babel/types": "npm:^7.3.3" + "@types/babel__core": "npm:^7.1.14" + "@types/babel__traverse": "npm:^7.0.6" + checksum: 10c0/7e6451caaf7dce33d010b8aafb970e62f1b0c0b57f4978c37b0d457bbcf0874d75a395a102daf0bae0bd14eafb9f6e9a165ee5e899c0a4f1f3bb2e07b304ed2e + languageName: node + linkType: hard + "babel-plugin-macros@npm:^3.1.0": version: 3.1.0 resolution: "babel-plugin-macros@npm:3.1.0" @@ -2489,6 +3455,40 @@ __metadata: languageName: node linkType: hard +"babel-preset-current-node-syntax@npm:^1.0.0": + version: 1.0.1 + resolution: "babel-preset-current-node-syntax@npm:1.0.1" + dependencies: + "@babel/plugin-syntax-async-generators": "npm:^7.8.4" + "@babel/plugin-syntax-bigint": "npm:^7.8.3" + "@babel/plugin-syntax-class-properties": "npm:^7.8.3" + "@babel/plugin-syntax-import-meta": "npm:^7.8.3" + "@babel/plugin-syntax-json-strings": "npm:^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" + "@babel/plugin-syntax-numeric-separator": "npm:^7.8.3" + "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" + "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" + "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" + "@babel/plugin-syntax-top-level-await": "npm:^7.8.3" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/5ba39a3a0e6c37d25e56a4fb843be632dac98d54706d8a0933f9bcb1a07987a96d55c2b5a6c11788a74063fb2534fe68c1f1dbb6c93626850c785e0938495627 + languageName: node + linkType: hard + +"babel-preset-jest@npm:^29.6.3": + version: 29.6.3 + resolution: "babel-preset-jest@npm:29.6.3" + dependencies: + babel-plugin-jest-hoist: "npm:^29.6.3" + babel-preset-current-node-syntax: "npm:^1.0.0" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/ec5fd0276b5630b05f0c14bb97cc3815c6b31600c683ebb51372e54dcb776cff790bdeeabd5b8d01ede375a040337ccbf6a3ccd68d3a34219125945e167ad943 + languageName: node + linkType: hard + "balanced-match@npm:^1.0.0": version: 1.0.2 resolution: "balanced-match@npm:1.0.2" @@ -2531,7 +3531,7 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.23.0": +"browserslist@npm:^4.22.2, browserslist@npm:^4.23.0": version: 4.23.0 resolution: "browserslist@npm:4.23.0" dependencies: @@ -2545,6 +3545,22 @@ __metadata: languageName: node linkType: hard +"bser@npm:2.1.1": + version: 2.1.1 + resolution: "bser@npm:2.1.1" + dependencies: + node-int64: "npm:^0.4.0" + checksum: 10c0/24d8dfb7b6d457d73f32744e678a60cc553e4ec0e9e1a01cf614b44d85c3c87e188d3cc78ef0442ce5032ee6818de20a0162ba1074725c0d08908f62ea979227 + languageName: node + linkType: hard + +"buffer-from@npm:^1.0.0": + version: 1.1.2 + resolution: "buffer-from@npm:1.1.2" + checksum: 10c0/124fff9d66d691a86d3b062eff4663fe437a9d9ee4b47b1b9e97f5a5d14f6d5399345db80f796827be7c95e70a8e765dd404b7c3ff3b3324f98e9b0c8826cc34 + languageName: node + linkType: hard + "busboy@npm:1.6.0": version: 1.6.0 resolution: "busboy@npm:1.6.0" @@ -2601,6 +3617,20 @@ __metadata: languageName: node linkType: hard +"camelcase@npm:^5.3.1": + version: 5.3.1 + resolution: "camelcase@npm:5.3.1" + checksum: 10c0/92ff9b443bfe8abb15f2b1513ca182d16126359ad4f955ebc83dc4ddcc4ef3fdd2c078bc223f2673dc223488e75c99b16cc4d056624374b799e6a1555cf61b23 + languageName: node + linkType: hard + +"camelcase@npm:^6.2.0": + version: 6.3.0 + resolution: "camelcase@npm:6.3.0" + checksum: 10c0/0d701658219bd3116d12da3eab31acddb3f9440790c0792e0d398f0a520a6a4058018e546862b6fba89d7ae990efaeb97da71e1913e9ebf5a8b5621a3d55c710 + languageName: node + linkType: hard + "caniuse-lite@npm:^1.0.30001579, caniuse-lite@npm:^1.0.30001587, caniuse-lite@npm:^1.0.30001599": version: 1.0.30001600 resolution: "caniuse-lite@npm:1.0.30001600" @@ -2619,7 +3649,17 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^4.0.0": +"chalk@npm:^3.0.0": + version: 3.0.0 + resolution: "chalk@npm:3.0.0" + dependencies: + ansi-styles: "npm:^4.1.0" + supports-color: "npm:^7.1.0" + checksum: 10c0/ee650b0a065b3d7a6fda258e75d3a86fc8e4effa55871da730a9e42ccb035bf5fd203525e5a1ef45ec2582ecc4f65b47eb11357c526b84dd29a14fb162c414d2 + languageName: node + linkType: hard + +"chalk@npm:^4.0.0, chalk@npm:^4.1.0": version: 4.1.2 resolution: "chalk@npm:4.1.2" dependencies: @@ -2629,6 +3669,13 @@ __metadata: languageName: node linkType: hard +"char-regex@npm:^1.0.2": + version: 1.0.2 + resolution: "char-regex@npm:1.0.2" + checksum: 10c0/57a09a86371331e0be35d9083ba429e86c4f4648ecbe27455dbfb343037c16ee6fdc7f6b61f433a57cc5ded5561d71c56a150e018f40c2ffb7bc93a26dae341e + languageName: node + linkType: hard + "chokidar@npm:^3.5.3": version: 3.6.0 resolution: "chokidar@npm:3.6.0" @@ -2655,6 +3702,20 @@ __metadata: languageName: node linkType: hard +"ci-info@npm:^3.2.0": + version: 3.9.0 + resolution: "ci-info@npm:3.9.0" + checksum: 10c0/6f0109e36e111684291d46123d491bc4e7b7a1934c3a20dea28cba89f1d4a03acd892f5f6a81ed3855c38647e285a150e3c9ba062e38943bef57fee6c1554c3a + languageName: node + linkType: hard + +"cjs-module-lexer@npm:^1.0.0": + version: 1.2.3 + resolution: "cjs-module-lexer@npm:1.2.3" + checksum: 10c0/0de9a9c3fad03a46804c0d38e7b712fb282584a9c7ef1ed44cae22fb71d9bb600309d66a9711ac36a596fd03422f5bb03e021e8f369c12a39fa1786ae531baab + languageName: node + linkType: hard + "class-variance-authority@npm:^0.7.0": version: 0.7.0 resolution: "class-variance-authority@npm:0.7.0" @@ -2678,6 +3739,17 @@ __metadata: languageName: node linkType: hard +"cliui@npm:^8.0.1": + version: 8.0.1 + resolution: "cliui@npm:8.0.1" + dependencies: + string-width: "npm:^4.2.0" + strip-ansi: "npm:^6.0.1" + wrap-ansi: "npm:^7.0.0" + checksum: 10c0/4bda0f09c340cbb6dfdc1ed508b3ca080f12992c18d68c6be4d9cf51756033d5266e61ec57529e610dacbf4da1c634423b0c1b11037709cc6b09045cbd815df5 + languageName: node + linkType: hard + "clsx@npm:2.0.0": version: 2.0.0 resolution: "clsx@npm:2.0.0" @@ -2692,6 +3764,20 @@ __metadata: languageName: node linkType: hard +"co@npm:^4.6.0": + version: 4.6.0 + resolution: "co@npm:4.6.0" + checksum: 10c0/c0e85ea0ca8bf0a50cbdca82efc5af0301240ca88ebe3644a6ffb8ffe911f34d40f8fbcf8f1d52c5ddd66706abd4d3bfcd64259f1e8e2371d4f47573b0dc8c28 + languageName: node + linkType: hard + +"collect-v8-coverage@npm:^1.0.0": + version: 1.0.2 + resolution: "collect-v8-coverage@npm:1.0.2" + checksum: 10c0/ed7008e2e8b6852c5483b444a3ae6e976e088d4335a85aa0a9db2861c5f1d31bd2d7ff97a60469b3388deeba661a619753afbe201279fb159b4b9548ab8269a1 + languageName: node + linkType: hard + "color-convert@npm:^1.9.0": version: 1.9.3 resolution: "color-convert@npm:1.9.3" @@ -2731,6 +3817,15 @@ __metadata: languageName: node linkType: hard +"combined-stream@npm:^1.0.8": + version: 1.0.8 + resolution: "combined-stream@npm:1.0.8" + dependencies: + delayed-stream: "npm:~1.0.0" + checksum: 10c0/0dbb829577e1b1e839fa82b40c07ffaf7de8a09b935cadd355a73652ae70a88b4320db322f6634a4ad93424292fa80973ac6480986247f1734a1137debf271d5 + languageName: node + linkType: hard + "commander@npm:^4.0.0": version: 4.1.1 resolution: "commander@npm:4.1.1" @@ -2759,6 +3854,13 @@ __metadata: languageName: node linkType: hard +"convert-source-map@npm:^2.0.0": + version: 2.0.0 + resolution: "convert-source-map@npm:2.0.0" + checksum: 10c0/8f2f7a27a1a011cc6cc88cc4da2d7d0cfa5ee0369508baae3d98c260bb3ac520691464e5bbe4ae7cdf09860c1d69ecc6f70c63c6e7c7f7e3f18ec08484dc7d9b + languageName: node + linkType: hard + "copy-to-clipboard@npm:3.3.3": version: 3.3.3 resolution: "copy-to-clipboard@npm:3.3.3" @@ -2781,7 +3883,24 @@ __metadata: languageName: node linkType: hard -"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2": +"create-jest@npm:^29.7.0": + version: 29.7.0 + resolution: "create-jest@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + chalk: "npm:^4.0.0" + exit: "npm:^0.1.2" + graceful-fs: "npm:^4.2.9" + jest-config: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + prompts: "npm:^2.0.1" + bin: + create-jest: bin/create-jest.js + checksum: 10c0/e7e54c280692470d3398f62a6238fd396327e01c6a0757002833f06d00afc62dd7bfe04ff2b9cd145264460e6b4d1eb8386f2925b7e567f97939843b7b0e812f + languageName: node + linkType: hard + +"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": version: 7.0.3 resolution: "cross-spawn@npm:7.0.3" dependencies: @@ -2801,6 +3920,13 @@ __metadata: languageName: node linkType: hard +"css.escape@npm:^1.5.1": + version: 1.5.1 + resolution: "css.escape@npm:1.5.1" + checksum: 10c0/5e09035e5bf6c2c422b40c6df2eb1529657a17df37fda5d0433d722609527ab98090baf25b13970ca754079a0f3161dd3dfc0e743563ded8cfa0749d861c1525 + languageName: node + linkType: hard + "cssesc@npm:^3.0.0": version: 3.0.0 resolution: "cssesc@npm:3.0.0" @@ -2810,6 +3936,29 @@ __metadata: languageName: node linkType: hard +"cssom@npm:^0.5.0": + version: 0.5.0 + resolution: "cssom@npm:0.5.0" + checksum: 10c0/8c4121c243baf0678c65dcac29b201ff0067dfecf978de9d5c83b2ff127a8fdefd2bfd54577f5ad8c80ed7d2c8b489ae01c82023545d010c4ecb87683fb403dd + languageName: node + linkType: hard + +"cssom@npm:~0.3.6": + version: 0.3.8 + resolution: "cssom@npm:0.3.8" + checksum: 10c0/d74017b209440822f9e24d8782d6d2e808a8fdd58fa626a783337222fe1c87a518ba944d4c88499031b4786e68772c99dfae616638d71906fe9f203aeaf14411 + languageName: node + linkType: hard + +"cssstyle@npm:^2.3.0": + version: 2.3.0 + resolution: "cssstyle@npm:2.3.0" + dependencies: + cssom: "npm:~0.3.6" + checksum: 10c0/863400da2a458f73272b9a55ba7ff05de40d850f22eb4f37311abebd7eff801cf1cd2fb04c4c92b8c3daed83fe766e52e4112afb7bc88d86c63a9c2256a7d178 + languageName: node + linkType: hard + "csstype@npm:^3.0.2, csstype@npm:^3.1.2": version: 3.1.3 resolution: "csstype@npm:3.1.3" @@ -2824,6 +3973,17 @@ __metadata: languageName: node linkType: hard +"data-urls@npm:^3.0.2": + version: 3.0.2 + resolution: "data-urls@npm:3.0.2" + dependencies: + abab: "npm:^2.0.6" + whatwg-mimetype: "npm:^3.0.0" + whatwg-url: "npm:^11.0.0" + checksum: 10c0/051c3aaaf3e961904f136aab095fcf6dff4db23a7fc759dd8ba7b3e6ba03fc07ef608086caad8ab910d864bd3b5e57d0d2f544725653d77c96a2c971567045f4 + languageName: node + linkType: hard + "data-view-buffer@npm:^1.0.1": version: 1.0.1 resolution: "data-view-buffer@npm:1.0.1" @@ -2857,7 +4017,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4": +"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4": version: 4.3.4 resolution: "debug@npm:4.3.4" dependencies: @@ -2878,13 +4038,65 @@ __metadata: languageName: node linkType: hard -"deep-is@npm:^0.1.3": +"decimal.js@npm:^10.4.2": + version: 10.4.3 + resolution: "decimal.js@npm:10.4.3" + checksum: 10c0/6d60206689ff0911f0ce968d40f163304a6c1bc739927758e6efc7921cfa630130388966f16bf6ef6b838cb33679fbe8e7a78a2f3c478afce841fd55ac8fb8ee + languageName: node + linkType: hard + +"dedent@npm:^1.0.0": + version: 1.5.1 + resolution: "dedent@npm:1.5.1" + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + checksum: 10c0/f8612cd5b00aab58b18bb95572dca08dc2d49720bfa7201a444c3dae430291e8a06d4928614a6ec8764d713927f44bce9c990d3b8238fca2f430990ddc17c070 + languageName: node + linkType: hard + +"deep-equal@npm:^2.0.5": + version: 2.2.3 + resolution: "deep-equal@npm:2.2.3" + dependencies: + array-buffer-byte-length: "npm:^1.0.0" + call-bind: "npm:^1.0.5" + es-get-iterator: "npm:^1.1.3" + get-intrinsic: "npm:^1.2.2" + is-arguments: "npm:^1.1.1" + is-array-buffer: "npm:^3.0.2" + is-date-object: "npm:^1.0.5" + is-regex: "npm:^1.1.4" + is-shared-array-buffer: "npm:^1.0.2" + isarray: "npm:^2.0.5" + object-is: "npm:^1.1.5" + object-keys: "npm:^1.1.1" + object.assign: "npm:^4.1.4" + regexp.prototype.flags: "npm:^1.5.1" + side-channel: "npm:^1.0.4" + which-boxed-primitive: "npm:^1.0.2" + which-collection: "npm:^1.0.1" + which-typed-array: "npm:^1.1.13" + checksum: 10c0/a48244f90fa989f63ff5ef0cc6de1e4916b48ea0220a9c89a378561960814794a5800c600254482a2c8fd2e49d6c2e196131dc983976adb024c94a42dfe4949f + languageName: node + linkType: hard + +"deep-is@npm:^0.1.3": version: 0.1.4 resolution: "deep-is@npm:0.1.4" checksum: 10c0/7f0ee496e0dff14a573dc6127f14c95061b448b87b995fc96c017ce0a1e66af1675e73f1d6064407975bc4ea6ab679497a29fff7b5b9c4e99cb10797c1ad0b4c languageName: node linkType: hard +"deepmerge@npm:^4.2.2": + version: 4.3.1 + resolution: "deepmerge@npm:4.3.1" + checksum: 10c0/e53481aaf1aa2c4082b5342be6b6d8ad9dfe387bc92ce197a66dea08bd4265904a087e75e464f14d1347cf2ac8afe1e4c16b266e0561cc5df29382d3c5f80044 + languageName: node + linkType: hard + "define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.4": version: 1.1.4 resolution: "define-data-property@npm:1.1.4" @@ -2907,6 +4119,13 @@ __metadata: languageName: node linkType: hard +"delayed-stream@npm:~1.0.0": + version: 1.0.0 + resolution: "delayed-stream@npm:1.0.0" + checksum: 10c0/d758899da03392e6712f042bec80aa293bbe9e9ff1b2634baae6a360113e708b91326594c8a486d475c69d6259afb7efacdc3537bfcda1c6c648e390ce601b19 + languageName: node + linkType: hard + "dequal@npm:^2.0.3": version: 2.0.3 resolution: "dequal@npm:2.0.3" @@ -2914,6 +4133,13 @@ __metadata: languageName: node linkType: hard +"detect-newline@npm:^3.0.0": + version: 3.1.0 + resolution: "detect-newline@npm:3.1.0" + checksum: 10c0/c38cfc8eeb9fda09febb44bcd85e467c970d4e3bf526095394e5a4f18bc26dd0cf6b22c69c1fa9969261521c593836db335c2795218f6d781a512aea2fb8209d + languageName: node + linkType: hard + "detect-node-es@npm:^1.1.0": version: 1.1.0 resolution: "detect-node-es@npm:1.1.0" @@ -2928,6 +4154,13 @@ __metadata: languageName: node linkType: hard +"diff-sequences@npm:^29.6.3": + version: 29.6.3 + resolution: "diff-sequences@npm:29.6.3" + checksum: 10c0/32e27ac7dbffdf2fb0eb5a84efd98a9ad084fbabd5ac9abb8757c6770d5320d2acd172830b28c4add29bb873d59420601dfc805ac4064330ce59b1adfd0593b2 + languageName: node + linkType: hard + "dir-glob@npm:^3.0.1": version: 3.0.1 resolution: "dir-glob@npm:3.0.1" @@ -2962,6 +4195,29 @@ __metadata: languageName: node linkType: hard +"dom-accessibility-api@npm:^0.5.9": + version: 0.5.16 + resolution: "dom-accessibility-api@npm:0.5.16" + checksum: 10c0/b2c2eda4fae568977cdac27a9f0c001edf4f95a6a6191dfa611e3721db2478d1badc01db5bb4fa8a848aeee13e442a6c2a4386d65ec65a1436f24715a2f8d053 + languageName: node + linkType: hard + +"dom-accessibility-api@npm:^0.6.3": + version: 0.6.3 + resolution: "dom-accessibility-api@npm:0.6.3" + checksum: 10c0/10bee5aa514b2a9a37c87cd81268db607a2e933a050074abc2f6fa3da9080ebed206a320cbc123567f2c3087d22292853bdfdceaffdd4334ffe2af9510b29360 + languageName: node + linkType: hard + +"domexception@npm:^4.0.0": + version: 4.0.0 + resolution: "domexception@npm:4.0.0" + dependencies: + webidl-conversions: "npm:^7.0.0" + checksum: 10c0/774277cd9d4df033f852196e3c0077a34dbd15a96baa4d166e0e47138a80f4c0bdf0d94e4703e6ff5883cec56bb821a6fff84402d8a498e31de7c87eb932a294 + languageName: node + linkType: hard + "eastasianwidth@npm:^0.2.0": version: 0.2.0 resolution: "eastasianwidth@npm:0.2.0" @@ -2976,6 +4232,13 @@ __metadata: languageName: node linkType: hard +"emittery@npm:^0.13.1": + version: 0.13.1 + resolution: "emittery@npm:0.13.1" + checksum: 10c0/1573d0ae29ab34661b6c63251ff8f5facd24ccf6a823f19417ae8ba8c88ea450325788c67f16c99edec8de4b52ce93a10fe441ece389fd156e88ee7dab9bfa35 + languageName: node + linkType: hard + "emoji-regex@npm:^8.0.0": version: 8.0.0 resolution: "emoji-regex@npm:8.0.0" @@ -3009,6 +4272,13 @@ __metadata: languageName: node linkType: hard +"entities@npm:^4.4.0": + version: 4.5.0 + resolution: "entities@npm:4.5.0" + checksum: 10c0/5b039739f7621f5d1ad996715e53d964035f75ad3b9a4d38c6b3804bb226e282ffeae2443624d8fdd9c47d8e926ae9ac009c54671243f0c3294c26af7cc85250 + languageName: node + linkType: hard + "env-paths@npm:^2.2.0": version: 2.2.1 resolution: "env-paths@npm:2.2.1" @@ -3102,6 +4372,23 @@ __metadata: languageName: node linkType: hard +"es-get-iterator@npm:^1.1.3": + version: 1.1.3 + resolution: "es-get-iterator@npm:1.1.3" + dependencies: + call-bind: "npm:^1.0.2" + get-intrinsic: "npm:^1.1.3" + has-symbols: "npm:^1.0.3" + is-arguments: "npm:^1.1.1" + is-map: "npm:^2.0.2" + is-set: "npm:^2.0.2" + is-string: "npm:^1.0.7" + isarray: "npm:^2.0.5" + stop-iteration-iterator: "npm:^1.0.0" + checksum: 10c0/ebd11effa79851ea75d7f079405f9d0dc185559fd65d986c6afea59a0ff2d46c2ed8675f19f03dce7429d7f6c14ff9aede8d121fbab78d75cfda6a263030bac0 + languageName: node + linkType: hard + "es-iterator-helpers@npm:^1.0.15, es-iterator-helpers@npm:^1.0.17": version: 1.0.18 resolution: "es-iterator-helpers@npm:1.0.18" @@ -3178,6 +4465,13 @@ __metadata: languageName: node linkType: hard +"escape-string-regexp@npm:^2.0.0": + version: 2.0.0 + resolution: "escape-string-regexp@npm:2.0.0" + checksum: 10c0/2530479fe8db57eace5e8646c9c2a9c80fa279614986d16dcc6bcaceb63ae77f05a851ba6c43756d816c61d7f4534baf56e3c705e3e0d884818a46808811c507 + languageName: node + linkType: hard + "escape-string-regexp@npm:^4.0.0": version: 4.0.0 resolution: "escape-string-regexp@npm:4.0.0" @@ -3185,6 +4479,24 @@ __metadata: languageName: node linkType: hard +"escodegen@npm:^2.0.0": + version: 2.1.0 + resolution: "escodegen@npm:2.1.0" + dependencies: + esprima: "npm:^4.0.1" + estraverse: "npm:^5.2.0" + esutils: "npm:^2.0.2" + source-map: "npm:~0.6.1" + dependenciesMeta: + source-map: + optional: true + bin: + escodegen: bin/escodegen.js + esgenerate: bin/esgenerate.js + checksum: 10c0/e1450a1f75f67d35c061bf0d60888b15f62ab63aef9df1901cffc81cffbbb9e8b3de237c5502cf8613a017c1df3a3003881307c78835a1ab54d8c8d2206e01d3 + languageName: node + linkType: hard + "eslint-config-next@npm:14.1.0": version: 14.1.0 resolution: "eslint-config-next@npm:14.1.0" @@ -3426,6 +4738,16 @@ __metadata: languageName: node linkType: hard +"esprima@npm:^4.0.0, esprima@npm:^4.0.1": + version: 4.0.1 + resolution: "esprima@npm:4.0.1" + bin: + esparse: ./bin/esparse.js + esvalidate: ./bin/esvalidate.js + checksum: 10c0/ad4bab9ead0808cf56501750fd9d3fb276f6b105f987707d059005d57e182d18a7c9ec7f3a01794ebddcca676773e42ca48a32d67a250c9d35e009ca613caba3 + languageName: node + linkType: hard + "esquery@npm:^1.4.2": version: 1.5.0 resolution: "esquery@npm:1.5.0" @@ -3458,6 +4780,43 @@ __metadata: languageName: node linkType: hard +"execa@npm:^5.0.0": + version: 5.1.1 + resolution: "execa@npm:5.1.1" + dependencies: + cross-spawn: "npm:^7.0.3" + get-stream: "npm:^6.0.0" + human-signals: "npm:^2.1.0" + is-stream: "npm:^2.0.0" + merge-stream: "npm:^2.0.0" + npm-run-path: "npm:^4.0.1" + onetime: "npm:^5.1.2" + signal-exit: "npm:^3.0.3" + strip-final-newline: "npm:^2.0.0" + checksum: 10c0/c8e615235e8de4c5addf2fa4c3da3e3aa59ce975a3e83533b4f6a71750fb816a2e79610dc5f1799b6e28976c9ae86747a36a606655bf8cb414a74d8d507b304f + languageName: node + linkType: hard + +"exit@npm:^0.1.2": + version: 0.1.2 + resolution: "exit@npm:0.1.2" + checksum: 10c0/71d2ad9b36bc25bb8b104b17e830b40a08989be7f7d100b13269aaae7c3784c3e6e1e88a797e9e87523993a25ba27c8958959a554535370672cfb4d824af8989 + languageName: node + linkType: hard + +"expect@npm:^29.7.0": + version: 29.7.0 + resolution: "expect@npm:29.7.0" + dependencies: + "@jest/expect-utils": "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + jest-matcher-utils: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + checksum: 10c0/2eddeace66e68b8d8ee5f7be57f3014b19770caaf6815c7a08d131821da527fb8c8cb7b3dcd7c883d2d3d8d184206a4268984618032d1e4b16dc8d6596475d41 + languageName: node + linkType: hard + "exponential-backoff@npm:^3.1.1": version: 3.1.1 resolution: "exponential-backoff@npm:3.1.1" @@ -3485,7 +4844,7 @@ __metadata: languageName: node linkType: hard -"fast-json-stable-stringify@npm:^2.0.0": +"fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0": version: 2.1.0 resolution: "fast-json-stable-stringify@npm:2.1.0" checksum: 10c0/7f081eb0b8a64e0057b3bb03f974b3ef00135fbf36c1c710895cd9300f13c94ba809bb3a81cf4e1b03f6e5285610a61abbd7602d0652de423144dfee5a389c9b @@ -3508,6 +4867,15 @@ __metadata: languageName: node linkType: hard +"fb-watchman@npm:^2.0.0": + version: 2.0.2 + resolution: "fb-watchman@npm:2.0.2" + dependencies: + bser: "npm:2.1.1" + checksum: 10c0/feae89ac148adb8f6ae8ccd87632e62b13563e6fb114cacb5265c51f585b17e2e268084519fb2edd133872f1d47a18e6bfd7e5e08625c0d41b93149694187581 + languageName: node + linkType: hard + "file-entry-cache@npm:^6.0.1": version: 6.0.1 resolution: "file-entry-cache@npm:6.0.1" @@ -3533,6 +4901,16 @@ __metadata: languageName: node linkType: hard +"find-up@npm:^4.0.0, find-up@npm:^4.1.0": + version: 4.1.0 + resolution: "find-up@npm:4.1.0" + dependencies: + locate-path: "npm:^5.0.0" + path-exists: "npm:^4.0.0" + checksum: 10c0/0406ee89ebeefa2d507feb07ec366bebd8a6167ae74aa4e34fb4c4abd06cf782a3ce26ae4194d70706f72182841733f00551c209fe575cb00bd92104056e78c1 + languageName: node + linkType: hard + "find-up@npm:^5.0.0": version: 5.0.0 resolution: "find-up@npm:5.0.0" @@ -3589,6 +4967,17 @@ __metadata: languageName: node linkType: hard +"form-data@npm:^4.0.0": + version: 4.0.0 + resolution: "form-data@npm:4.0.0" + dependencies: + asynckit: "npm:^0.4.0" + combined-stream: "npm:^1.0.8" + mime-types: "npm:^2.1.12" + checksum: 10c0/cb6f3ac49180be03ff07ba3ff125f9eba2ff0b277fb33c7fc47569fc5e616882c5b1c69b9904c4c4187e97dd0419dd03b134174756f296dec62041e6527e2c6e + languageName: node + linkType: hard + "fraction.js@npm:^4.3.7": version: 4.3.7 resolution: "fraction.js@npm:4.3.7" @@ -3650,7 +5039,7 @@ __metadata: languageName: node linkType: hard -"fsevents@npm:~2.3.2": +"fsevents@npm:^2.3.2, fsevents@npm:~2.3.2": version: 2.3.3 resolution: "fsevents@npm:2.3.3" dependencies: @@ -3660,7 +5049,7 @@ __metadata: languageName: node linkType: hard -"fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin": +"fsevents@patch:fsevents@npm%3A^2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin": version: 2.3.3 resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" dependencies: @@ -3695,7 +5084,21 @@ __metadata: languageName: node linkType: hard -"get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4": +"gensync@npm:^1.0.0-beta.2": + version: 1.0.0-beta.2 + resolution: "gensync@npm:1.0.0-beta.2" + checksum: 10c0/782aba6cba65b1bb5af3b095d96249d20edbe8df32dbf4696fd49be2583faf676173bf4809386588828e4dd76a3354fcbeb577bab1c833ccd9fc4577f26103f8 + languageName: node + linkType: hard + +"get-caller-file@npm:^2.0.5": + version: 2.0.5 + resolution: "get-caller-file@npm:2.0.5" + checksum: 10c0/c6c7b60271931fa752aeb92f2b47e355eac1af3a2673f47c9589e8f8a41adc74d45551c1bc57b5e66a80609f10ffb72b6f575e4370d61cc3f7f3aaff01757cde + languageName: node + linkType: hard + +"get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.2, get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4": version: 1.2.4 resolution: "get-intrinsic@npm:1.2.4" dependencies: @@ -3715,6 +5118,20 @@ __metadata: languageName: node linkType: hard +"get-package-type@npm:^0.1.0": + version: 0.1.0 + resolution: "get-package-type@npm:0.1.0" + checksum: 10c0/e34cdf447fdf1902a1f6d5af737eaadf606d2ee3518287abde8910e04159368c268568174b2e71102b87b26c2020486f126bfca9c4fb1ceb986ff99b52ecd1be + languageName: node + linkType: hard + +"get-stream@npm:^6.0.0": + version: 6.0.1 + resolution: "get-stream@npm:6.0.1" + checksum: 10c0/49825d57d3fd6964228e6200a58169464b8e8970489b3acdc24906c782fb7f01f9f56f8e6653c4a50713771d6658f7cfe051e5eb8c12e334138c9c918b296341 + languageName: node + linkType: hard + "get-symbol-description@npm:^1.0.2": version: 1.0.2 resolution: "get-symbol-description@npm:1.0.2" @@ -3768,7 +5185,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^7.1.3": +"glob@npm:^7.1.3, glob@npm:^7.1.4": version: 7.2.3 resolution: "glob@npm:7.2.3" dependencies: @@ -3782,6 +5199,13 @@ __metadata: languageName: node linkType: hard +"globals@npm:^11.1.0": + version: 11.12.0 + resolution: "globals@npm:11.12.0" + checksum: 10c0/758f9f258e7b19226bd8d4af5d3b0dcf7038780fb23d82e6f98932c44e239f884847f1766e8fa9cc5635ccb3204f7fa7314d4408dd4002a5e8ea827b4018f0a1 + languageName: node + linkType: hard + "globals@npm:^13.19.0": version: 13.24.0 resolution: "globals@npm:13.24.0" @@ -3823,7 +5247,7 @@ __metadata: languageName: node linkType: hard -"graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6": +"graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 @@ -3908,6 +5332,22 @@ __metadata: languageName: node linkType: hard +"html-encoding-sniffer@npm:^3.0.0": + version: 3.0.0 + resolution: "html-encoding-sniffer@npm:3.0.0" + dependencies: + whatwg-encoding: "npm:^2.0.0" + checksum: 10c0/b17b3b0fb5d061d8eb15121c3b0b536376c3e295ecaf09ba48dd69c6b6c957839db124fe1e2b3f11329753a4ee01aa7dedf63b7677999e86da17fbbdd82c5386 + languageName: node + linkType: hard + +"html-escaper@npm:^2.0.0": + version: 2.0.2 + resolution: "html-escaper@npm:2.0.2" + checksum: 10c0/208e8a12de1a6569edbb14544f4567e6ce8ecc30b9394fcaa4e7bb1e60c12a7c9a1ed27e31290817157e8626f3a4f29e76c8747030822eb84a6abb15c255f0a0 + languageName: node + linkType: hard + "http-cache-semantics@npm:^4.1.1": version: 4.1.1 resolution: "http-cache-semantics@npm:4.1.1" @@ -3915,6 +5355,17 @@ __metadata: languageName: node linkType: hard +"http-proxy-agent@npm:^5.0.0": + version: 5.0.0 + resolution: "http-proxy-agent@npm:5.0.0" + dependencies: + "@tootallnate/once": "npm:2" + agent-base: "npm:6" + debug: "npm:4" + checksum: 10c0/32a05e413430b2c1e542e5c74b38a9f14865301dd69dff2e53ddb684989440e3d2ce0c4b64d25eb63cf6283e6265ff979a61cf93e3ca3d23047ddfdc8df34a32 + languageName: node + linkType: hard + "http-proxy-agent@npm:^7.0.0": version: 7.0.2 resolution: "http-proxy-agent@npm:7.0.2" @@ -3925,6 +5376,16 @@ __metadata: languageName: node linkType: hard +"https-proxy-agent@npm:^5.0.1": + version: 5.0.1 + resolution: "https-proxy-agent@npm:5.0.1" + dependencies: + agent-base: "npm:6" + debug: "npm:4" + checksum: 10c0/6dd639f03434003577c62b27cafdb864784ef19b2de430d8ae2a1d45e31c4fd60719e5637b44db1a88a046934307da7089e03d6089ec3ddacc1189d8de8897d1 + languageName: node + linkType: hard + "https-proxy-agent@npm:^7.0.1": version: 7.0.4 resolution: "https-proxy-agent@npm:7.0.4" @@ -3935,7 +5396,14 @@ __metadata: languageName: node linkType: hard -"iconv-lite@npm:^0.6.2": +"human-signals@npm:^2.1.0": + version: 2.1.0 + resolution: "human-signals@npm:2.1.0" + checksum: 10c0/695edb3edfcfe9c8b52a76926cd31b36978782062c0ed9b1192b36bebc75c4c87c82e178dfcb0ed0fc27ca59d434198aac0bd0be18f5781ded775604db22304a + languageName: node + linkType: hard + +"iconv-lite@npm:0.6.3, iconv-lite@npm:^0.6.2": version: 0.6.3 resolution: "iconv-lite@npm:0.6.3" dependencies: @@ -3961,6 +5429,18 @@ __metadata: languageName: node linkType: hard +"import-local@npm:^3.0.2": + version: 3.1.0 + resolution: "import-local@npm:3.1.0" + dependencies: + pkg-dir: "npm:^4.2.0" + resolve-cwd: "npm:^3.0.0" + bin: + import-local-fixture: fixtures/cli.js + checksum: 10c0/c67ecea72f775fe8684ca3d057e54bdb2ae28c14bf261d2607c269c18ea0da7b730924c06262eca9aed4b8ab31e31d65bc60b50e7296c85908a56e2f7d41ecd2 + languageName: node + linkType: hard + "imurmurhash@npm:^0.1.4": version: 0.1.4 resolution: "imurmurhash@npm:0.1.4" @@ -3992,7 +5472,7 @@ __metadata: languageName: node linkType: hard -"internal-slot@npm:^1.0.7": +"internal-slot@npm:^1.0.4, internal-slot@npm:^1.0.7": version: 1.0.7 resolution: "internal-slot@npm:1.0.7" dependencies: @@ -4022,7 +5502,17 @@ __metadata: languageName: node linkType: hard -"is-array-buffer@npm:^3.0.4": +"is-arguments@npm:^1.1.1": + version: 1.1.1 + resolution: "is-arguments@npm:1.1.1" + dependencies: + call-bind: "npm:^1.0.2" + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/5ff1f341ee4475350adfc14b2328b38962564b7c2076be2f5bac7bd9b61779efba99b9f844a7b82ba7654adccf8e8eb19d1bb0cc6d1c1a085e498f6793d4328f + languageName: node + linkType: hard + +"is-array-buffer@npm:^3.0.2, is-array-buffer@npm:^3.0.4": version: 3.0.4 resolution: "is-array-buffer@npm:3.0.4" dependencies: @@ -4133,6 +5623,13 @@ __metadata: languageName: node linkType: hard +"is-generator-fn@npm:^2.0.0": + version: 2.1.0 + resolution: "is-generator-fn@npm:2.1.0" + checksum: 10c0/2957cab387997a466cd0bf5c1b6047bd21ecb32bdcfd8996b15747aa01002c1c88731802f1b3d34ac99f4f6874b626418bd118658cf39380fe5fff32a3af9c4d + languageName: node + linkType: hard + "is-generator-function@npm:^1.0.10": version: 1.0.10 resolution: "is-generator-function@npm:1.0.10" @@ -4158,7 +5655,7 @@ __metadata: languageName: node linkType: hard -"is-map@npm:^2.0.3": +"is-map@npm:^2.0.2, is-map@npm:^2.0.3": version: 2.0.3 resolution: "is-map@npm:2.0.3" checksum: 10c0/2c4d431b74e00fdda7162cd8e4b763d6f6f217edf97d4f8538b94b8702b150610e2c64961340015fe8df5b1fcee33ccd2e9b62619c4a8a3a155f8de6d6d355fc @@ -4195,6 +5692,13 @@ __metadata: languageName: node linkType: hard +"is-potential-custom-element-name@npm:^1.0.1": + version: 1.0.1 + resolution: "is-potential-custom-element-name@npm:1.0.1" + checksum: 10c0/b73e2f22bc863b0939941d369486d308b43d7aef1f9439705e3582bfccaa4516406865e32c968a35f97a99396dac84e2624e67b0a16b0a15086a785e16ce7db9 + languageName: node + linkType: hard + "is-regex@npm:^1.1.4": version: 1.1.4 resolution: "is-regex@npm:1.1.4" @@ -4205,7 +5709,7 @@ __metadata: languageName: node linkType: hard -"is-set@npm:^2.0.3": +"is-set@npm:^2.0.2, is-set@npm:^2.0.3": version: 2.0.3 resolution: "is-set@npm:2.0.3" checksum: 10c0/f73732e13f099b2dc879c2a12341cfc22ccaca8dd504e6edae26484bd5707a35d503fba5b4daad530a9b088ced1ae6c9d8200fd92e09b428fe14ea79ce8080b7 @@ -4221,6 +5725,13 @@ __metadata: languageName: node linkType: hard +"is-stream@npm:^2.0.0": + version: 2.0.1 + resolution: "is-stream@npm:2.0.1" + checksum: 10c0/7c284241313fc6efc329b8d7f08e16c0efeb6baab1b4cd0ba579eb78e5af1aa5da11e68559896a2067cd6c526bd29241dda4eb1225e627d5aa1a89a76d4635a5 + languageName: node + linkType: hard + "is-string@npm:^1.0.5, is-string@npm:^1.0.7": version: 1.0.7 resolution: "is-string@npm:1.0.7" @@ -4295,6 +5806,71 @@ __metadata: languageName: node linkType: hard +"istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": + version: 3.2.2 + resolution: "istanbul-lib-coverage@npm:3.2.2" + checksum: 10c0/6c7ff2106769e5f592ded1fb418f9f73b4411fd5a084387a5410538332b6567cd1763ff6b6cadca9b9eb2c443cce2f7ea7d7f1b8d315f9ce58539793b1e0922b + languageName: node + linkType: hard + +"istanbul-lib-instrument@npm:^5.0.4": + version: 5.2.1 + resolution: "istanbul-lib-instrument@npm:5.2.1" + dependencies: + "@babel/core": "npm:^7.12.3" + "@babel/parser": "npm:^7.14.7" + "@istanbuljs/schema": "npm:^0.1.2" + istanbul-lib-coverage: "npm:^3.2.0" + semver: "npm:^6.3.0" + checksum: 10c0/8a1bdf3e377dcc0d33ec32fe2b6ecacdb1e4358fd0eb923d4326bb11c67622c0ceb99600a680f3dad5d29c66fc1991306081e339b4d43d0b8a2ab2e1d910a6ee + languageName: node + linkType: hard + +"istanbul-lib-instrument@npm:^6.0.0": + version: 6.0.2 + resolution: "istanbul-lib-instrument@npm:6.0.2" + dependencies: + "@babel/core": "npm:^7.23.9" + "@babel/parser": "npm:^7.23.9" + "@istanbuljs/schema": "npm:^0.1.3" + istanbul-lib-coverage: "npm:^3.2.0" + semver: "npm:^7.5.4" + checksum: 10c0/405c6ac037bf8c7ee7495980b0cd5544b2c53078c10534d0c9ceeb92a9ea7dcf8510f58ccfce31336458a8fa6ccef27b570bbb602abaa8c1650f5496a807477c + languageName: node + linkType: hard + +"istanbul-lib-report@npm:^3.0.0": + version: 3.0.1 + resolution: "istanbul-lib-report@npm:3.0.1" + dependencies: + istanbul-lib-coverage: "npm:^3.0.0" + make-dir: "npm:^4.0.0" + supports-color: "npm:^7.1.0" + checksum: 10c0/84323afb14392de8b6a5714bd7e9af845cfbd56cfe71ed276cda2f5f1201aea673c7111901227ee33e68e4364e288d73861eb2ed48f6679d1e69a43b6d9b3ba7 + languageName: node + linkType: hard + +"istanbul-lib-source-maps@npm:^4.0.0": + version: 4.0.1 + resolution: "istanbul-lib-source-maps@npm:4.0.1" + dependencies: + debug: "npm:^4.1.1" + istanbul-lib-coverage: "npm:^3.0.0" + source-map: "npm:^0.6.1" + checksum: 10c0/19e4cc405016f2c906dff271a76715b3e881fa9faeb3f09a86cb99b8512b3a5ed19cadfe0b54c17ca0e54c1142c9c6de9330d65506e35873994e06634eebeb66 + languageName: node + linkType: hard + +"istanbul-reports@npm:^3.1.3": + version: 3.1.7 + resolution: "istanbul-reports@npm:3.1.7" + dependencies: + html-escaper: "npm:^2.0.0" + istanbul-lib-report: "npm:^3.0.0" + checksum: 10c0/a379fadf9cf8dc5dfe25568115721d4a7eb82fbd50b005a6672aff9c6989b20cc9312d7865814e0859cd8df58cbf664482e1d3604be0afde1f7fc3ccc1394a51 + languageName: node + linkType: hard + "iterator.prototype@npm:^1.1.2": version: 1.1.2 resolution: "iterator.prototype@npm:1.1.2" @@ -4321,6 +5897,466 @@ __metadata: languageName: node linkType: hard +"jest-changed-files@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-changed-files@npm:29.7.0" + dependencies: + execa: "npm:^5.0.0" + jest-util: "npm:^29.7.0" + p-limit: "npm:^3.1.0" + checksum: 10c0/e071384d9e2f6bb462231ac53f29bff86f0e12394c1b49ccafbad225ce2ab7da226279a8a94f421949920bef9be7ef574fd86aee22e8adfa149be73554ab828b + languageName: node + linkType: hard + +"jest-circus@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-circus@npm:29.7.0" + dependencies: + "@jest/environment": "npm:^29.7.0" + "@jest/expect": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + co: "npm:^4.6.0" + dedent: "npm:^1.0.0" + is-generator-fn: "npm:^2.0.0" + jest-each: "npm:^29.7.0" + jest-matcher-utils: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-runtime: "npm:^29.7.0" + jest-snapshot: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + p-limit: "npm:^3.1.0" + pretty-format: "npm:^29.7.0" + pure-rand: "npm:^6.0.0" + slash: "npm:^3.0.0" + stack-utils: "npm:^2.0.3" + checksum: 10c0/8d15344cf7a9f14e926f0deed64ed190c7a4fa1ed1acfcd81e4cc094d3cc5bf7902ebb7b874edc98ada4185688f90c91e1747e0dfd7ac12463b097968ae74b5e + languageName: node + linkType: hard + +"jest-cli@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-cli@npm:29.7.0" + dependencies: + "@jest/core": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + chalk: "npm:^4.0.0" + create-jest: "npm:^29.7.0" + exit: "npm:^0.1.2" + import-local: "npm:^3.0.2" + jest-config: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-validate: "npm:^29.7.0" + yargs: "npm:^17.3.1" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + bin: + jest: bin/jest.js + checksum: 10c0/a658fd55050d4075d65c1066364595962ead7661711495cfa1dfeecf3d6d0a8ffec532f3dbd8afbb3e172dd5fd2fb2e813c5e10256e7cf2fea766314942fb43a + languageName: node + linkType: hard + +"jest-config@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-config@npm:29.7.0" + dependencies: + "@babel/core": "npm:^7.11.6" + "@jest/test-sequencer": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + babel-jest: "npm:^29.7.0" + chalk: "npm:^4.0.0" + ci-info: "npm:^3.2.0" + deepmerge: "npm:^4.2.2" + glob: "npm:^7.1.3" + graceful-fs: "npm:^4.2.9" + jest-circus: "npm:^29.7.0" + jest-environment-node: "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + jest-regex-util: "npm:^29.6.3" + jest-resolve: "npm:^29.7.0" + jest-runner: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-validate: "npm:^29.7.0" + micromatch: "npm:^4.0.4" + parse-json: "npm:^5.2.0" + pretty-format: "npm:^29.7.0" + slash: "npm:^3.0.0" + strip-json-comments: "npm:^3.1.1" + peerDependencies: + "@types/node": "*" + ts-node: ">=9.0.0" + peerDependenciesMeta: + "@types/node": + optional: true + ts-node: + optional: true + checksum: 10c0/bab23c2eda1fff06e0d104b00d6adfb1d1aabb7128441899c9bff2247bd26710b050a5364281ce8d52b46b499153bf7e3ee88b19831a8f3451f1477a0246a0f1 + languageName: node + linkType: hard + +"jest-diff@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-diff@npm:29.7.0" + dependencies: + chalk: "npm:^4.0.0" + diff-sequences: "npm:^29.6.3" + jest-get-type: "npm:^29.6.3" + pretty-format: "npm:^29.7.0" + checksum: 10c0/89a4a7f182590f56f526443dde69acefb1f2f0c9e59253c61d319569856c4931eae66b8a3790c443f529267a0ddba5ba80431c585deed81827032b2b2a1fc999 + languageName: node + linkType: hard + +"jest-docblock@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-docblock@npm:29.7.0" + dependencies: + detect-newline: "npm:^3.0.0" + checksum: 10c0/d932a8272345cf6b6142bb70a2bb63e0856cc0093f082821577ea5bdf4643916a98744dfc992189d2b1417c38a11fa42466f6111526bc1fb81366f56410f3be9 + languageName: node + linkType: hard + +"jest-each@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-each@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + chalk: "npm:^4.0.0" + jest-get-type: "npm:^29.6.3" + jest-util: "npm:^29.7.0" + pretty-format: "npm:^29.7.0" + checksum: 10c0/f7f9a90ebee80cc688e825feceb2613627826ac41ea76a366fa58e669c3b2403d364c7c0a74d862d469b103c843154f8456d3b1c02b487509a12afa8b59edbb4 + languageName: node + linkType: hard + +"jest-environment-jsdom@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-environment-jsdom@npm:29.7.0" + dependencies: + "@jest/environment": "npm:^29.7.0" + "@jest/fake-timers": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/jsdom": "npm:^20.0.0" + "@types/node": "npm:*" + jest-mock: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jsdom: "npm:^20.0.0" + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + checksum: 10c0/139b94e2c8ec1bb5a46ce17df5211da65ce867354b3fd4e00fa6a0d1da95902df4cf7881273fc6ea937e5c325d39d6773f0d41b6c469363334de9d489d2c321f + languageName: node + linkType: hard + +"jest-environment-node@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-environment-node@npm:29.7.0" + dependencies: + "@jest/environment": "npm:^29.7.0" + "@jest/fake-timers": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + jest-mock: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + checksum: 10c0/61f04fec077f8b1b5c1a633e3612fc0c9aa79a0ab7b05600683428f1e01a4d35346c474bde6f439f9fcc1a4aa9a2861ff852d079a43ab64b02105d1004b2592b + languageName: node + linkType: hard + +"jest-get-type@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-get-type@npm:29.6.3" + checksum: 10c0/552e7a97a983d3c2d4e412a44eb7de0430ff773dd99f7500962c268d6dfbfa431d7d08f919c9d960530e5f7f78eb47f267ad9b318265e5092b3ff9ede0db7c2b + languageName: node + linkType: hard + +"jest-haste-map@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-haste-map@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + "@types/graceful-fs": "npm:^4.1.3" + "@types/node": "npm:*" + anymatch: "npm:^3.0.3" + fb-watchman: "npm:^2.0.0" + fsevents: "npm:^2.3.2" + graceful-fs: "npm:^4.2.9" + jest-regex-util: "npm:^29.6.3" + jest-util: "npm:^29.7.0" + jest-worker: "npm:^29.7.0" + micromatch: "npm:^4.0.4" + walker: "npm:^1.0.8" + dependenciesMeta: + fsevents: + optional: true + checksum: 10c0/2683a8f29793c75a4728787662972fedd9267704c8f7ef9d84f2beed9a977f1cf5e998c07b6f36ba5603f53cb010c911fe8cd0ac9886e073fe28ca66beefd30c + languageName: node + linkType: hard + +"jest-leak-detector@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-leak-detector@npm:29.7.0" + dependencies: + jest-get-type: "npm:^29.6.3" + pretty-format: "npm:^29.7.0" + checksum: 10c0/71bb9f77fc489acb842a5c7be030f2b9acb18574dc9fb98b3100fc57d422b1abc55f08040884bd6e6dbf455047a62f7eaff12aa4058f7cbdc11558718ca6a395 + languageName: node + linkType: hard + +"jest-matcher-utils@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-matcher-utils@npm:29.7.0" + dependencies: + chalk: "npm:^4.0.0" + jest-diff: "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + pretty-format: "npm:^29.7.0" + checksum: 10c0/0d0e70b28fa5c7d4dce701dc1f46ae0922102aadc24ed45d594dd9b7ae0a8a6ef8b216718d1ab79e451291217e05d4d49a82666e1a3cc2b428b75cd9c933244e + languageName: node + linkType: hard + +"jest-message-util@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-message-util@npm:29.7.0" + dependencies: + "@babel/code-frame": "npm:^7.12.13" + "@jest/types": "npm:^29.6.3" + "@types/stack-utils": "npm:^2.0.0" + chalk: "npm:^4.0.0" + graceful-fs: "npm:^4.2.9" + micromatch: "npm:^4.0.4" + pretty-format: "npm:^29.7.0" + slash: "npm:^3.0.0" + stack-utils: "npm:^2.0.3" + checksum: 10c0/850ae35477f59f3e6f27efac5215f706296e2104af39232bb14e5403e067992afb5c015e87a9243ec4d9df38525ef1ca663af9f2f4766aa116f127247008bd22 + languageName: node + linkType: hard + +"jest-mock@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-mock@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + jest-util: "npm:^29.7.0" + checksum: 10c0/7b9f8349ee87695a309fe15c46a74ab04c853369e5c40952d68061d9dc3159a0f0ed73e215f81b07ee97a9faaf10aebe5877a9d6255068a0977eae6a9ff1d5ac + languageName: node + linkType: hard + +"jest-pnp-resolver@npm:^1.2.2": + version: 1.2.3 + resolution: "jest-pnp-resolver@npm:1.2.3" + peerDependencies: + jest-resolve: "*" + peerDependenciesMeta: + jest-resolve: + optional: true + checksum: 10c0/86eec0c78449a2de733a6d3e316d49461af6a858070e113c97f75fb742a48c2396ea94150cbca44159ffd4a959f743a47a8b37a792ef6fdad2cf0a5cba973fac + languageName: node + linkType: hard + +"jest-regex-util@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-regex-util@npm:29.6.3" + checksum: 10c0/4e33fb16c4f42111159cafe26397118dcfc4cf08bc178a67149fb05f45546a91928b820894572679d62559839d0992e21080a1527faad65daaae8743a5705a3b + languageName: node + linkType: hard + +"jest-resolve-dependencies@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-resolve-dependencies@npm:29.7.0" + dependencies: + jest-regex-util: "npm:^29.6.3" + jest-snapshot: "npm:^29.7.0" + checksum: 10c0/b6e9ad8ae5b6049474118ea6441dfddd385b6d1fc471db0136f7c8fbcfe97137a9665e4f837a9f49f15a29a1deb95a14439b7aec812f3f99d08f228464930f0d + languageName: node + linkType: hard + +"jest-resolve@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-resolve@npm:29.7.0" + dependencies: + chalk: "npm:^4.0.0" + graceful-fs: "npm:^4.2.9" + jest-haste-map: "npm:^29.7.0" + jest-pnp-resolver: "npm:^1.2.2" + jest-util: "npm:^29.7.0" + jest-validate: "npm:^29.7.0" + resolve: "npm:^1.20.0" + resolve.exports: "npm:^2.0.0" + slash: "npm:^3.0.0" + checksum: 10c0/59da5c9c5b50563e959a45e09e2eace783d7f9ac0b5dcc6375dea4c0db938d2ebda97124c8161310082760e8ebbeff9f6b177c15ca2f57fb424f637a5d2adb47 + languageName: node + linkType: hard + +"jest-runner@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-runner@npm:29.7.0" + dependencies: + "@jest/console": "npm:^29.7.0" + "@jest/environment": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + emittery: "npm:^0.13.1" + graceful-fs: "npm:^4.2.9" + jest-docblock: "npm:^29.7.0" + jest-environment-node: "npm:^29.7.0" + jest-haste-map: "npm:^29.7.0" + jest-leak-detector: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-resolve: "npm:^29.7.0" + jest-runtime: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-watcher: "npm:^29.7.0" + jest-worker: "npm:^29.7.0" + p-limit: "npm:^3.1.0" + source-map-support: "npm:0.5.13" + checksum: 10c0/2194b4531068d939f14c8d3274fe5938b77fa73126aedf9c09ec9dec57d13f22c72a3b5af01ac04f5c1cf2e28d0ac0b4a54212a61b05f10b5d6b47f2a1097bb4 + languageName: node + linkType: hard + +"jest-runtime@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-runtime@npm:29.7.0" + dependencies: + "@jest/environment": "npm:^29.7.0" + "@jest/fake-timers": "npm:^29.7.0" + "@jest/globals": "npm:^29.7.0" + "@jest/source-map": "npm:^29.6.3" + "@jest/test-result": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + cjs-module-lexer: "npm:^1.0.0" + collect-v8-coverage: "npm:^1.0.0" + glob: "npm:^7.1.3" + graceful-fs: "npm:^4.2.9" + jest-haste-map: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-mock: "npm:^29.7.0" + jest-regex-util: "npm:^29.6.3" + jest-resolve: "npm:^29.7.0" + jest-snapshot: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + slash: "npm:^3.0.0" + strip-bom: "npm:^4.0.0" + checksum: 10c0/7cd89a1deda0bda7d0941835434e44f9d6b7bd50b5c5d9b0fc9a6c990b2d4d2cab59685ab3cb2850ed4cc37059f6de903af5a50565d7f7f1192a77d3fd6dd2a6 + languageName: node + linkType: hard + +"jest-snapshot@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-snapshot@npm:29.7.0" + dependencies: + "@babel/core": "npm:^7.11.6" + "@babel/generator": "npm:^7.7.2" + "@babel/plugin-syntax-jsx": "npm:^7.7.2" + "@babel/plugin-syntax-typescript": "npm:^7.7.2" + "@babel/types": "npm:^7.3.3" + "@jest/expect-utils": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + babel-preset-current-node-syntax: "npm:^1.0.0" + chalk: "npm:^4.0.0" + expect: "npm:^29.7.0" + graceful-fs: "npm:^4.2.9" + jest-diff: "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + jest-matcher-utils: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + natural-compare: "npm:^1.4.0" + pretty-format: "npm:^29.7.0" + semver: "npm:^7.5.3" + checksum: 10c0/6e9003c94ec58172b4a62864a91c0146513207bedf4e0a06e1e2ac70a4484088a2683e3a0538d8ea913bcfd53dc54a9b98a98cdfa562e7fe1d1339aeae1da570 + languageName: node + linkType: hard + +"jest-util@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-util@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + ci-info: "npm:^3.2.0" + graceful-fs: "npm:^4.2.9" + picomatch: "npm:^2.2.3" + checksum: 10c0/bc55a8f49fdbb8f51baf31d2a4f312fb66c9db1483b82f602c9c990e659cdd7ec529c8e916d5a89452ecbcfae4949b21b40a7a59d4ffc0cd813a973ab08c8150 + languageName: node + linkType: hard + +"jest-validate@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-validate@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + camelcase: "npm:^6.2.0" + chalk: "npm:^4.0.0" + jest-get-type: "npm:^29.6.3" + leven: "npm:^3.1.0" + pretty-format: "npm:^29.7.0" + checksum: 10c0/a20b930480c1ed68778c739f4739dce39423131bc070cd2505ddede762a5570a256212e9c2401b7ae9ba4d7b7c0803f03c5b8f1561c62348213aba18d9dbece2 + languageName: node + linkType: hard + +"jest-watcher@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-watcher@npm:29.7.0" + dependencies: + "@jest/test-result": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + ansi-escapes: "npm:^4.2.1" + chalk: "npm:^4.0.0" + emittery: "npm:^0.13.1" + jest-util: "npm:^29.7.0" + string-length: "npm:^4.0.1" + checksum: 10c0/ec6c75030562fc8f8c727cb8f3b94e75d831fc718785abfc196e1f2a2ebc9a2e38744a15147170039628a853d77a3b695561ce850375ede3a4ee6037a2574567 + languageName: node + linkType: hard + +"jest-worker@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-worker@npm:29.7.0" + dependencies: + "@types/node": "npm:*" + jest-util: "npm:^29.7.0" + merge-stream: "npm:^2.0.0" + supports-color: "npm:^8.0.0" + checksum: 10c0/5570a3a005b16f46c131968b8a5b56d291f9bbb85ff4217e31c80bd8a02e7de799e59a54b95ca28d5c302f248b54cbffde2d177c2f0f52ffcee7504c6eabf660 + languageName: node + linkType: hard + +"jest@npm:^29.7.0": + version: 29.7.0 + resolution: "jest@npm:29.7.0" + dependencies: + "@jest/core": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + import-local: "npm:^3.0.2" + jest-cli: "npm:^29.7.0" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + bin: + jest: bin/jest.js + checksum: 10c0/f40eb8171cf147c617cc6ada49d062fbb03b4da666cb8d39cdbfb739a7d75eea4c3ca150fb072d0d273dce0c753db4d0467d54906ad0293f59c54f9db4a09d8b + languageName: node + linkType: hard + "jiti@npm:^1.19.1": version: 1.21.0 resolution: "jiti@npm:1.21.0" @@ -4337,6 +6373,18 @@ __metadata: languageName: node linkType: hard +"js-yaml@npm:^3.13.1": + version: 3.14.1 + resolution: "js-yaml@npm:3.14.1" + dependencies: + argparse: "npm:^1.0.7" + esprima: "npm:^4.0.0" + bin: + js-yaml: bin/js-yaml.js + checksum: 10c0/6746baaaeac312c4db8e75fa22331d9a04cccb7792d126ed8ce6a0bbcfef0cedaddd0c5098fade53db067c09fe00aa1c957674b4765610a8b06a5a189e46433b + languageName: node + linkType: hard + "js-yaml@npm:^4.1.0": version: 4.1.0 resolution: "js-yaml@npm:4.1.0" @@ -4355,6 +6403,54 @@ __metadata: languageName: node linkType: hard +"jsdom@npm:^20.0.0": + version: 20.0.3 + resolution: "jsdom@npm:20.0.3" + dependencies: + abab: "npm:^2.0.6" + acorn: "npm:^8.8.1" + acorn-globals: "npm:^7.0.0" + cssom: "npm:^0.5.0" + cssstyle: "npm:^2.3.0" + data-urls: "npm:^3.0.2" + decimal.js: "npm:^10.4.2" + domexception: "npm:^4.0.0" + escodegen: "npm:^2.0.0" + form-data: "npm:^4.0.0" + html-encoding-sniffer: "npm:^3.0.0" + http-proxy-agent: "npm:^5.0.0" + https-proxy-agent: "npm:^5.0.1" + is-potential-custom-element-name: "npm:^1.0.1" + nwsapi: "npm:^2.2.2" + parse5: "npm:^7.1.1" + saxes: "npm:^6.0.0" + symbol-tree: "npm:^3.2.4" + tough-cookie: "npm:^4.1.2" + w3c-xmlserializer: "npm:^4.0.0" + webidl-conversions: "npm:^7.0.0" + whatwg-encoding: "npm:^2.0.0" + whatwg-mimetype: "npm:^3.0.0" + whatwg-url: "npm:^11.0.0" + ws: "npm:^8.11.0" + xml-name-validator: "npm:^4.0.0" + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + checksum: 10c0/b109073bb826a966db7828f46cb1d7371abecd30f182b143c52be5fe1ed84513bbbe995eb3d157241681fcd18331381e61e3dc004d4949f3a63bca02f6214902 + languageName: node + linkType: hard + +"jsesc@npm:^2.5.1": + version: 2.5.2 + resolution: "jsesc@npm:2.5.2" + bin: + jsesc: bin/jsesc + checksum: 10c0/dbf59312e0ebf2b4405ef413ec2b25abb5f8f4d9bc5fb8d9f90381622ebca5f2af6a6aa9a8578f65903f9e33990a6dc798edd0ce5586894bf0e9e31803a1de88 + languageName: node + linkType: hard + "json-buffer@npm:3.0.1": version: 3.0.1 resolution: "json-buffer@npm:3.0.1" @@ -4394,6 +6490,15 @@ __metadata: languageName: node linkType: hard +"json5@npm:^2.2.3": + version: 2.2.3 + resolution: "json5@npm:2.2.3" + bin: + json5: lib/cli.js + checksum: 10c0/5a04eed94810fa55c5ea138b2f7a5c12b97c3750bc63d11e511dcecbfef758003861522a070c2272764ee0f4e3e323862f386945aeb5b85b87ee43f084ba586c + languageName: node + linkType: hard + "jsx-ast-utils@npm:^2.4.1 || ^3.0.0, jsx-ast-utils@npm:^3.3.5": version: 3.3.5 resolution: "jsx-ast-utils@npm:3.3.5" @@ -4415,6 +6520,13 @@ __metadata: languageName: node linkType: hard +"kleur@npm:^3.0.3": + version: 3.0.3 + resolution: "kleur@npm:3.0.3" + checksum: 10c0/cd3a0b8878e7d6d3799e54340efe3591ca787d9f95f109f28129bdd2915e37807bf8918bb295ab86afb8c82196beec5a1adcaf29042ce3f2bd932b038fe3aa4b + languageName: node + linkType: hard + "language-subtag-registry@npm:^0.3.20": version: 0.3.22 resolution: "language-subtag-registry@npm:0.3.22" @@ -4431,6 +6543,13 @@ __metadata: languageName: node linkType: hard +"leven@npm:^3.1.0": + version: 3.1.0 + resolution: "leven@npm:3.1.0" + checksum: 10c0/cd778ba3fbab0f4d0500b7e87d1f6e1f041507c56fdcd47e8256a3012c98aaee371d4c15e0a76e0386107af2d42e2b7466160a2d80688aaa03e66e49949f42df + languageName: node + linkType: hard + "levn@npm:^0.4.1": version: 0.4.1 resolution: "levn@npm:0.4.1" @@ -4462,6 +6581,15 @@ __metadata: languageName: node linkType: hard +"locate-path@npm:^5.0.0": + version: 5.0.0 + resolution: "locate-path@npm:5.0.0" + dependencies: + p-locate: "npm:^4.1.0" + checksum: 10c0/33a1c5247e87e022f9713e6213a744557a3e9ec32c5d0b5efb10aa3a38177615bf90221a5592674857039c1a0fd2063b82f285702d37b792d973e9e72ace6c59 + languageName: node + linkType: hard + "locate-path@npm:^6.0.0": version: 6.0.0 resolution: "locate-path@npm:6.0.0" @@ -4485,6 +6613,13 @@ __metadata: languageName: node linkType: hard +"lodash@npm:^4.17.15": + version: 4.17.21 + resolution: "lodash@npm:4.17.21" + checksum: 10c0/d8cbea072bb08655bb4c989da418994b073a608dffa608b09ac04b43a791b12aeae7cd7ad919aa4c925f33b48490b5cfe6c1f71d827956071dae2e7bb3a6b74c + languageName: node + linkType: hard + "loose-envify@npm:^1.0.0, loose-envify@npm:^1.1.0, loose-envify@npm:^1.4.0": version: 1.4.0 resolution: "loose-envify@npm:1.4.0" @@ -4503,6 +6638,15 @@ __metadata: languageName: node linkType: hard +"lru-cache@npm:^5.1.1": + version: 5.1.1 + resolution: "lru-cache@npm:5.1.1" + dependencies: + yallist: "npm:^3.0.2" + checksum: 10c0/89b2ef2ef45f543011e38737b8a8622a2f8998cddf0e5437174ef8f1f70a8b9d14a918ab3e232cb3ba343b7abddffa667f0b59075b2b80e6b4d63c3de6127482 + languageName: node + linkType: hard + "lru-cache@npm:^6.0.0": version: 6.0.0 resolution: "lru-cache@npm:6.0.0" @@ -4521,6 +6665,24 @@ __metadata: languageName: node linkType: hard +"lz-string@npm:^1.5.0": + version: 1.5.0 + resolution: "lz-string@npm:1.5.0" + bin: + lz-string: bin/bin.js + checksum: 10c0/36128e4de34791838abe979b19927c26e67201ca5acf00880377af7d765b38d1c60847e01c5ec61b1a260c48029084ab3893a3925fd6e48a04011364b089991b + languageName: node + linkType: hard + +"make-dir@npm:^4.0.0": + version: 4.0.0 + resolution: "make-dir@npm:4.0.0" + dependencies: + semver: "npm:^7.5.3" + checksum: 10c0/69b98a6c0b8e5c4fe9acb61608a9fbcfca1756d910f51e5dbe7a9e5cfb74fca9b8a0c8a0ffdf1294a740826c1ab4871d5bf3f62f72a3049e5eac6541ddffed68 + languageName: node + linkType: hard + "make-fetch-happen@npm:^13.0.0": version: 13.0.0 resolution: "make-fetch-happen@npm:13.0.0" @@ -4540,6 +6702,22 @@ __metadata: languageName: node linkType: hard +"makeerror@npm:1.0.12": + version: 1.0.12 + resolution: "makeerror@npm:1.0.12" + dependencies: + tmpl: "npm:1.0.5" + checksum: 10c0/b0e6e599780ce6bab49cc413eba822f7d1f0dfebd1c103eaa3785c59e43e22c59018323cf9e1708f0ef5329e94a745d163fcbb6bff8e4c6742f9be9e86f3500c + languageName: node + linkType: hard + +"merge-stream@npm:^2.0.0": + version: 2.0.0 + resolution: "merge-stream@npm:2.0.0" + checksum: 10c0/867fdbb30a6d58b011449b8885601ec1690c3e41c759ecd5a9d609094f7aed0096c37823ff4a7190ef0b8f22cc86beb7049196ff68c016e3b3c671d0dac91ce5 + languageName: node + linkType: hard + "merge2@npm:^1.3.0, merge2@npm:^1.4.1": version: 1.4.1 resolution: "merge2@npm:1.4.1" @@ -4557,6 +6735,36 @@ __metadata: languageName: node linkType: hard +"mime-db@npm:1.52.0": + version: 1.52.0 + resolution: "mime-db@npm:1.52.0" + checksum: 10c0/0557a01deebf45ac5f5777fe7740b2a5c309c6d62d40ceab4e23da9f821899ce7a900b7ac8157d4548ddbb7beffe9abc621250e6d182b0397ec7f10c7b91a5aa + languageName: node + linkType: hard + +"mime-types@npm:^2.1.12": + version: 2.1.35 + resolution: "mime-types@npm:2.1.35" + dependencies: + mime-db: "npm:1.52.0" + checksum: 10c0/82fb07ec56d8ff1fc999a84f2f217aa46cb6ed1033fefaabd5785b9a974ed225c90dc72fff460259e66b95b73648596dbcc50d51ed69cdf464af2d237d3149b2 + languageName: node + linkType: hard + +"mimic-fn@npm:^2.1.0": + version: 2.1.0 + resolution: "mimic-fn@npm:2.1.0" + checksum: 10c0/b26f5479d7ec6cc2bce275a08f146cf78f5e7b661b18114e2506dd91ec7ec47e7a25bf4360e5438094db0560bcc868079fb3b1fb3892b833c1ecbf63f80c95a4 + languageName: node + linkType: hard + +"min-indent@npm:^1.0.0": + version: 1.0.1 + resolution: "min-indent@npm:1.0.1" + checksum: 10c0/7e207bd5c20401b292de291f02913230cb1163abca162044f7db1d951fa245b174dc00869d40dd9a9f32a885ad6a5f3e767ee104cf278f399cb4e92d3f582d5c + languageName: node + linkType: hard + "minimatch@npm:9.0.3, minimatch@npm:^9.0.1": version: 9.0.3 resolution: "minimatch@npm:9.0.3" @@ -4566,7 +6774,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": +"minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": version: 3.1.2 resolution: "minimatch@npm:3.1.2" dependencies: @@ -4798,6 +7006,13 @@ __metadata: languageName: node linkType: hard +"node-int64@npm:^0.4.0": + version: 0.4.0 + resolution: "node-int64@npm:0.4.0" + checksum: 10c0/a6a4d8369e2f2720e9c645255ffde909c0fbd41c92ea92a5607fc17055955daac99c1ff589d421eee12a0d24e99f7bfc2aabfeb1a4c14742f6c099a51863f31a + languageName: node + linkType: hard + "node-releases@npm:^2.0.14": version: 2.0.14 resolution: "node-releases@npm:2.0.14" @@ -4823,10 +7038,26 @@ __metadata: languageName: node linkType: hard -"normalize-range@npm:^0.1.2": - version: 0.1.2 - resolution: "normalize-range@npm:0.1.2" - checksum: 10c0/bf39b73a63e0a42ad1a48c2bd1bda5a07ede64a7e2567307a407674e595bcff0fa0d57e8e5f1e7fa5e91000797c7615e13613227aaaa4d6d6e87f5bd5cc95de6 +"normalize-range@npm:^0.1.2": + version: 0.1.2 + resolution: "normalize-range@npm:0.1.2" + checksum: 10c0/bf39b73a63e0a42ad1a48c2bd1bda5a07ede64a7e2567307a407674e595bcff0fa0d57e8e5f1e7fa5e91000797c7615e13613227aaaa4d6d6e87f5bd5cc95de6 + languageName: node + linkType: hard + +"npm-run-path@npm:^4.0.1": + version: 4.0.1 + resolution: "npm-run-path@npm:4.0.1" + dependencies: + path-key: "npm:^3.0.0" + checksum: 10c0/6f9353a95288f8455cf64cbeb707b28826a7f29690244c1e4bb61ec573256e021b6ad6651b394eb1ccfd00d6ec50147253aba2c5fe58a57ceb111fad62c519ac + languageName: node + linkType: hard + +"nwsapi@npm:^2.2.2": + version: 2.2.7 + resolution: "nwsapi@npm:2.2.7" + checksum: 10c0/44be198adae99208487a1c886c0a3712264f7bbafa44368ad96c003512fed2753d4e22890ca1e6edb2690c3456a169f2a3c33bfacde1905cf3bf01c7722464db languageName: node linkType: hard @@ -4851,6 +7082,16 @@ __metadata: languageName: node linkType: hard +"object-is@npm:^1.1.5": + version: 1.1.6 + resolution: "object-is@npm:1.1.6" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + checksum: 10c0/506af444c4dce7f8e31f34fc549e2fb8152d6b9c4a30c6e62852badd7f520b579c679af433e7a072f9d78eb7808d230dc12e1cf58da9154dfbf8813099ea0fe0 + languageName: node + linkType: hard + "object-keys@npm:^1.1.1": version: 1.1.1 resolution: "object-keys@npm:1.1.1" @@ -4935,6 +7176,15 @@ __metadata: languageName: node linkType: hard +"onetime@npm:^5.1.2": + version: 5.1.2 + resolution: "onetime@npm:5.1.2" + dependencies: + mimic-fn: "npm:^2.1.0" + checksum: 10c0/ffcef6fbb2692c3c40749f31ea2e22677a876daea92959b8a80b521d95cca7a668c884d8b2045d1d8ee7d56796aa405c405462af112a1477594cc63531baeb8f + languageName: node + linkType: hard + "openapi-fetch@npm:0.9.3": version: 0.9.3 resolution: "openapi-fetch@npm:0.9.3" @@ -4981,7 +7231,16 @@ __metadata: languageName: node linkType: hard -"p-limit@npm:^3.0.2": +"p-limit@npm:^2.2.0": + version: 2.3.0 + resolution: "p-limit@npm:2.3.0" + dependencies: + p-try: "npm:^2.0.0" + checksum: 10c0/8da01ac53efe6a627080fafc127c873da40c18d87b3f5d5492d465bb85ec7207e153948df6b9cbaeb130be70152f874229b8242ee2be84c0794082510af97f12 + languageName: node + linkType: hard + +"p-limit@npm:^3.0.2, p-limit@npm:^3.1.0": version: 3.1.0 resolution: "p-limit@npm:3.1.0" dependencies: @@ -4990,6 +7249,15 @@ __metadata: languageName: node linkType: hard +"p-locate@npm:^4.1.0": + version: 4.1.0 + resolution: "p-locate@npm:4.1.0" + dependencies: + p-limit: "npm:^2.2.0" + checksum: 10c0/1b476ad69ad7f6059744f343b26d51ce091508935c1dbb80c4e0a2f397ffce0ca3a1f9f5cd3c7ce19d7929a09719d5c65fe70d8ee289c3f267cd36f2881813e9 + languageName: node + linkType: hard + "p-locate@npm:^5.0.0": version: 5.0.0 resolution: "p-locate@npm:5.0.0" @@ -5008,6 +7276,13 @@ __metadata: languageName: node linkType: hard +"p-try@npm:^2.0.0": + version: 2.2.0 + resolution: "p-try@npm:2.2.0" + checksum: 10c0/c36c19907734c904b16994e6535b02c36c2224d433e01a2f1ab777237f4d86e6289fd5fd464850491e940379d4606ed850c03e0f9ab600b0ebddb511312e177f + languageName: node + linkType: hard + "parent-module@npm:^1.0.0": version: 1.0.1 resolution: "parent-module@npm:1.0.1" @@ -5017,7 +7292,7 @@ __metadata: languageName: node linkType: hard -"parse-json@npm:^5.0.0": +"parse-json@npm:^5.0.0, parse-json@npm:^5.2.0": version: 5.2.0 resolution: "parse-json@npm:5.2.0" dependencies: @@ -5029,6 +7304,15 @@ __metadata: languageName: node linkType: hard +"parse5@npm:^7.0.0, parse5@npm:^7.1.1": + version: 7.1.2 + resolution: "parse5@npm:7.1.2" + dependencies: + entities: "npm:^4.4.0" + checksum: 10c0/297d7af8224f4b5cb7f6617ecdae98eeaed7f8cbd78956c42785e230505d5a4f07cef352af10d3006fa5c1544b76b57784d3a22d861ae071bbc460c649482bf4 + languageName: node + linkType: hard + "path-exists@npm:^4.0.0": version: 4.0.0 resolution: "path-exists@npm:4.0.0" @@ -5043,7 +7327,7 @@ __metadata: languageName: node linkType: hard -"path-key@npm:^3.1.0": +"path-key@npm:^3.0.0, path-key@npm:^3.1.0": version: 3.1.1 resolution: "path-key@npm:3.1.1" checksum: 10c0/748c43efd5a569c039d7a00a03b58eecd1d75f3999f5a28303d75f521288df4823bc057d8784eb72358b2895a05f29a070bc9f1f17d28226cc4e62494cc58c4c @@ -5081,7 +7365,7 @@ __metadata: languageName: node linkType: hard -"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.3.1": +"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.3, picomatch@npm:^2.3.1": version: 2.3.1 resolution: "picomatch@npm:2.3.1" checksum: 10c0/26c02b8d06f03206fc2ab8d16f19960f2ff9e81a658f831ecb656d8f17d9edc799e8364b1f4a7873e89d9702dff96204be0fa26fe4181f6843f040f819dac4be @@ -5095,13 +7379,22 @@ __metadata: languageName: node linkType: hard -"pirates@npm:^4.0.1": +"pirates@npm:^4.0.1, pirates@npm:^4.0.4": version: 4.0.6 resolution: "pirates@npm:4.0.6" checksum: 10c0/00d5fa51f8dded94d7429700fb91a0c1ead00ae2c7fd27089f0c5b63e6eca36197fe46384631872690a66f390c5e27198e99006ab77ae472692ab9c2ca903f36 languageName: node linkType: hard +"pkg-dir@npm:^4.2.0": + version: 4.2.0 + resolution: "pkg-dir@npm:4.2.0" + dependencies: + find-up: "npm:^4.0.0" + checksum: 10c0/c56bda7769e04907a88423feb320babaed0711af8c436ce3e56763ab1021ba107c7b0cafb11cde7529f669cfc22bffcaebffb573645cbd63842ea9fb17cd7728 + languageName: node + linkType: hard + "possible-typed-array-names@npm:^1.0.0": version: 1.0.0 resolution: "possible-typed-array-names@npm:1.0.0" @@ -5217,6 +7510,28 @@ __metadata: languageName: node linkType: hard +"pretty-format@npm:^27.0.2": + version: 27.5.1 + resolution: "pretty-format@npm:27.5.1" + dependencies: + ansi-regex: "npm:^5.0.1" + ansi-styles: "npm:^5.0.0" + react-is: "npm:^17.0.1" + checksum: 10c0/0cbda1031aa30c659e10921fa94e0dd3f903ecbbbe7184a729ad66f2b6e7f17891e8c7d7654c458fa4ccb1a411ffb695b4f17bbcd3fe075fabe181027c4040ed + languageName: node + linkType: hard + +"pretty-format@npm:^29.7.0": + version: 29.7.0 + resolution: "pretty-format@npm:29.7.0" + dependencies: + "@jest/schemas": "npm:^29.6.3" + ansi-styles: "npm:^5.0.0" + react-is: "npm:^18.0.0" + checksum: 10c0/edc5ff89f51916f036c62ed433506b55446ff739358de77207e63e88a28ca2894caac6e73dcb68166a606e51c8087d32d400473e6a9fdd2dbe743f46c9c0276f + languageName: node + linkType: hard + "proc-log@npm:^3.0.0": version: 3.0.0 resolution: "proc-log@npm:3.0.0" @@ -5234,6 +7549,16 @@ __metadata: languageName: node linkType: hard +"prompts@npm:^2.0.1": + version: 2.4.2 + resolution: "prompts@npm:2.4.2" + dependencies: + kleur: "npm:^3.0.3" + sisteransi: "npm:^1.0.5" + checksum: 10c0/16f1ac2977b19fe2cf53f8411cc98db7a3c8b115c479b2ca5c82b5527cd937aa405fa04f9a5960abeb9daef53191b53b4d13e35c1f5d50e8718c76917c5f1ea4 + languageName: node + linkType: hard + "prop-types@npm:^15.6.2, prop-types@npm:^15.8.1": version: 15.8.1 resolution: "prop-types@npm:15.8.1" @@ -5245,13 +7570,34 @@ __metadata: languageName: node linkType: hard -"punycode@npm:^2.1.0": +"psl@npm:^1.1.33": + version: 1.9.0 + resolution: "psl@npm:1.9.0" + checksum: 10c0/6a3f805fdab9442f44de4ba23880c4eba26b20c8e8e0830eff1cb31007f6825dace61d17203c58bfe36946842140c97a1ba7f67bc63ca2d88a7ee052b65d97ab + languageName: node + linkType: hard + +"punycode@npm:^2.1.0, punycode@npm:^2.1.1": version: 2.3.1 resolution: "punycode@npm:2.3.1" checksum: 10c0/14f76a8206bc3464f794fb2e3d3cc665ae416c01893ad7a02b23766eb07159144ee612ad67af5e84fa4479ccfe67678c4feb126b0485651b302babf66f04f9e9 languageName: node linkType: hard +"pure-rand@npm:^6.0.0": + version: 6.1.0 + resolution: "pure-rand@npm:6.1.0" + checksum: 10c0/1abe217897bf74dcb3a0c9aba3555fe975023147b48db540aa2faf507aee91c03bf54f6aef0eb2bf59cc259a16d06b28eca37f0dc426d94f4692aeff02fb0e65 + languageName: node + linkType: hard + +"querystringify@npm:^2.1.1": + version: 2.2.0 + resolution: "querystringify@npm:2.2.0" + checksum: 10c0/3258bc3dbdf322ff2663619afe5947c7926a6ef5fb78ad7d384602974c467fadfc8272af44f5eb8cddd0d011aae8fabf3a929a8eee4b86edcc0a21e6bd10f9aa + languageName: node + linkType: hard + "queue-microtask@npm:^1.2.2": version: 1.2.3 resolution: "queue-microtask@npm:1.2.3" @@ -5316,6 +7662,20 @@ __metadata: languageName: node linkType: hard +"react-is@npm:^17.0.1": + version: 17.0.2 + resolution: "react-is@npm:17.0.2" + checksum: 10c0/2bdb6b93fbb1820b024b496042cce405c57e2f85e777c9aabd55f9b26d145408f9f74f5934676ffdc46f3dcff656d78413a6e43968e7b3f92eea35b3052e9053 + languageName: node + linkType: hard + +"react-is@npm:^18.0.0": + version: 18.2.0 + resolution: "react-is@npm:18.2.0" + checksum: 10c0/6eb5e4b28028c23e2bfcf73371e72cd4162e4ac7ab445ddae2afe24e347a37d6dc22fae6e1748632cd43c6d4f9b8f86dcf26bf9275e1874f436d129952528ae0 + languageName: node + linkType: hard + "react-remove-scroll-bar@npm:^2.3.6": version: 2.3.6 resolution: "react-remove-scroll-bar@npm:2.3.6" @@ -5395,6 +7755,16 @@ __metadata: languageName: node linkType: hard +"redent@npm:^3.0.0": + version: 3.0.0 + resolution: "redent@npm:3.0.0" + dependencies: + indent-string: "npm:^4.0.0" + strip-indent: "npm:^3.0.0" + checksum: 10c0/d64a6b5c0b50eb3ddce3ab770f866658a2b9998c678f797919ceb1b586bab9259b311407280bd80b804e2a7c7539b19238ae6a2a20c843f1a7fcff21d48c2eae + languageName: node + linkType: hard + "reflect.getprototypeof@npm:^1.0.4": version: 1.0.6 resolution: "reflect.getprototypeof@npm:1.0.6" @@ -5417,7 +7787,7 @@ __metadata: languageName: node linkType: hard -"regexp.prototype.flags@npm:^1.5.2": +"regexp.prototype.flags@npm:^1.5.1, regexp.prototype.flags@npm:^1.5.2": version: 1.5.2 resolution: "regexp.prototype.flags@npm:1.5.2" dependencies: @@ -5429,6 +7799,29 @@ __metadata: languageName: node linkType: hard +"require-directory@npm:^2.1.1": + version: 2.1.1 + resolution: "require-directory@npm:2.1.1" + checksum: 10c0/83aa76a7bc1531f68d92c75a2ca2f54f1b01463cb566cf3fbc787d0de8be30c9dbc211d1d46be3497dac5785fe296f2dd11d531945ac29730643357978966e99 + languageName: node + linkType: hard + +"requires-port@npm:^1.0.0": + version: 1.0.0 + resolution: "requires-port@npm:1.0.0" + checksum: 10c0/b2bfdd09db16c082c4326e573a82c0771daaf7b53b9ce8ad60ea46aa6e30aaf475fe9b164800b89f93b748d2c234d8abff945d2551ba47bf5698e04cd7713267 + languageName: node + linkType: hard + +"resolve-cwd@npm:^3.0.0": + version: 3.0.0 + resolution: "resolve-cwd@npm:3.0.0" + dependencies: + resolve-from: "npm:^5.0.0" + checksum: 10c0/e608a3ebd15356264653c32d7ecbc8fd702f94c6703ea4ac2fb81d9c359180cba0ae2e6b71faa446631ed6145454d5a56b227efc33a2d40638ac13f8beb20ee4 + languageName: node + linkType: hard + "resolve-from@npm:^4.0.0": version: 4.0.0 resolution: "resolve-from@npm:4.0.0" @@ -5436,6 +7829,13 @@ __metadata: languageName: node linkType: hard +"resolve-from@npm:^5.0.0": + version: 5.0.0 + resolution: "resolve-from@npm:5.0.0" + checksum: 10c0/b21cb7f1fb746de8107b9febab60095187781137fd803e6a59a76d421444b1531b641bba5857f5dc011974d8a5c635d61cec49e6bd3b7fc20e01f0fafc4efbf2 + languageName: node + linkType: hard + "resolve-pkg-maps@npm:^1.0.0": version: 1.0.0 resolution: "resolve-pkg-maps@npm:1.0.0" @@ -5443,7 +7843,14 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.1.7, resolve@npm:^1.19.0, resolve@npm:^1.22.2, resolve@npm:^1.22.4": +"resolve.exports@npm:^2.0.0": + version: 2.0.2 + resolution: "resolve.exports@npm:2.0.2" + checksum: 10c0/cc4cffdc25447cf34730f388dca5021156ba9302a3bad3d7f168e790dc74b2827dff603f1bc6ad3d299bac269828dca96dd77e036dc9fba6a2a1807c47ab5c98 + languageName: node + linkType: hard + +"resolve@npm:^1.1.7, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.2, resolve@npm:^1.22.4": version: 1.22.8 resolution: "resolve@npm:1.22.8" dependencies: @@ -5469,7 +7876,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@npm%3A^1.1.7#optional!builtin, resolve@patch:resolve@npm%3A^1.19.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.2#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin": +"resolve@patch:resolve@npm%3A^1.1.7#optional!builtin, resolve@patch:resolve@npm%3A^1.19.0#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.2#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin": version: 1.22.8 resolution: "resolve@patch:resolve@npm%3A1.22.8#optional!builtin::version=1.22.8&hash=c3c19d" dependencies: @@ -5559,6 +7966,15 @@ __metadata: languageName: node linkType: hard +"saxes@npm:^6.0.0": + version: 6.0.0 + resolution: "saxes@npm:6.0.0" + dependencies: + xmlchars: "npm:^2.2.0" + checksum: 10c0/3847b839f060ef3476eb8623d099aa502ad658f5c40fd60c105ebce86d244389b0d76fcae30f4d0c728d7705ceb2f7e9b34bb54717b6a7dbedaf5dad2d9a4b74 + languageName: node + linkType: hard + "scheduler@npm:^0.23.0": version: 0.23.0 resolution: "scheduler@npm:0.23.0" @@ -5568,7 +7984,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^6.3.1": +"semver@npm:^6.3.0, semver@npm:^6.3.1": version: 6.3.1 resolution: "semver@npm:6.3.1" bin: @@ -5577,7 +7993,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.3.5, semver@npm:^7.5.4": +"semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4": version: 7.6.0 resolution: "semver@npm:7.6.0" dependencies: @@ -5642,6 +8058,13 @@ __metadata: languageName: node linkType: hard +"signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": + version: 3.0.7 + resolution: "signal-exit@npm:3.0.7" + checksum: 10c0/25d272fa73e146048565e08f3309d5b942c1979a6f4a58a8c59d5fa299728e9c2fcd1a759ec870863b1fd38653670240cd420dad2ad9330c71f36608a6a1c912 + languageName: node + linkType: hard + "signal-exit@npm:^4.0.1": version: 4.1.0 resolution: "signal-exit@npm:4.1.0" @@ -5649,6 +8072,13 @@ __metadata: languageName: node linkType: hard +"sisteransi@npm:^1.0.5": + version: 1.0.5 + resolution: "sisteransi@npm:1.0.5" + checksum: 10c0/230ac975cca485b7f6fe2b96a711aa62a6a26ead3e6fb8ba17c5a00d61b8bed0d7adc21f5626b70d7c33c62ff4e63933017a6462942c719d1980bb0b1207ad46 + languageName: node + linkType: hard + "slash@npm:^3.0.0": version: 3.0.0 resolution: "slash@npm:3.0.0" @@ -5691,6 +8121,16 @@ __metadata: languageName: node linkType: hard +"source-map-support@npm:0.5.13": + version: 0.5.13 + resolution: "source-map-support@npm:0.5.13" + dependencies: + buffer-from: "npm:^1.0.0" + source-map: "npm:^0.6.0" + checksum: 10c0/137539f8c453fa0f496ea42049ab5da4569f96781f6ac8e5bfda26937be9494f4e8891f523c5f98f0e85f71b35d74127a00c46f83f6a4f54672b58d53202565e + languageName: node + linkType: hard + "source-map@npm:^0.5.7": version: 0.5.7 resolution: "source-map@npm:0.5.7" @@ -5698,6 +8138,13 @@ __metadata: languageName: node linkType: hard +"source-map@npm:^0.6.0, source-map@npm:^0.6.1, source-map@npm:~0.6.1": + version: 0.6.1 + resolution: "source-map@npm:0.6.1" + checksum: 10c0/ab55398007c5e5532957cb0beee2368529618ac0ab372d789806f5718123cc4367d57de3904b4e6a4170eb5a0b0f41373066d02ca0735a0c4d75c7d328d3e011 + languageName: node + linkType: hard + "sprintf-js@npm:^1.1.3": version: 1.1.3 resolution: "sprintf-js@npm:1.1.3" @@ -5705,6 +8152,13 @@ __metadata: languageName: node linkType: hard +"sprintf-js@npm:~1.0.2": + version: 1.0.3 + resolution: "sprintf-js@npm:1.0.3" + checksum: 10c0/ecadcfe4c771890140da5023d43e190b7566d9cf8b2d238600f31bec0fc653f328da4450eb04bd59a431771a8e9cc0e118f0aa3974b683a4981b4e07abc2a5bb + languageName: node + linkType: hard + "ssri@npm:^10.0.0": version: 10.0.5 resolution: "ssri@npm:10.0.5" @@ -5714,6 +8168,24 @@ __metadata: languageName: node linkType: hard +"stack-utils@npm:^2.0.3": + version: 2.0.6 + resolution: "stack-utils@npm:2.0.6" + dependencies: + escape-string-regexp: "npm:^2.0.0" + checksum: 10c0/651c9f87667e077584bbe848acaecc6049bc71979f1e9a46c7b920cad4431c388df0f51b8ad7cfd6eed3db97a2878d0fc8b3122979439ea8bac29c61c95eec8a + languageName: node + linkType: hard + +"stop-iteration-iterator@npm:^1.0.0": + version: 1.0.0 + resolution: "stop-iteration-iterator@npm:1.0.0" + dependencies: + internal-slot: "npm:^1.0.4" + checksum: 10c0/c4158d6188aac510d9e92925b58709207bd94699e9c31186a040c80932a687f84a51356b5895e6dc72710aad83addb9411c22171832c9ae0e6e11b7d61b0dfb9 + languageName: node + linkType: hard + "streamsearch@npm:^1.1.0": version: 1.1.0 resolution: "streamsearch@npm:1.1.0" @@ -5721,7 +8193,17 @@ __metadata: languageName: node linkType: hard -"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0": +"string-length@npm:^4.0.1": + version: 4.0.2 + resolution: "string-length@npm:4.0.2" + dependencies: + char-regex: "npm:^1.0.2" + strip-ansi: "npm:^6.0.0" + checksum: 10c0/1cd77409c3d7db7bc59406f6bcc9ef0783671dcbabb23597a1177c166906ef2ee7c8290f78cae73a8aec858768f189d2cb417797df5e15ec4eb5e16b3346340c + languageName: node + linkType: hard + +"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": version: 4.2.3 resolution: "string-width@npm:4.2.3" dependencies: @@ -5822,6 +8304,29 @@ __metadata: languageName: node linkType: hard +"strip-bom@npm:^4.0.0": + version: 4.0.0 + resolution: "strip-bom@npm:4.0.0" + checksum: 10c0/26abad1172d6bc48985ab9a5f96c21e440f6e7e476686de49be813b5a59b3566dccb5c525b831ec54fe348283b47f3ffb8e080bc3f965fde12e84df23f6bb7ef + languageName: node + linkType: hard + +"strip-final-newline@npm:^2.0.0": + version: 2.0.0 + resolution: "strip-final-newline@npm:2.0.0" + checksum: 10c0/bddf8ccd47acd85c0e09ad7375409d81653f645fda13227a9d459642277c253d877b68f2e5e4d819fe75733b0e626bac7e954c04f3236f6d196f79c94fa4a96f + languageName: node + linkType: hard + +"strip-indent@npm:^3.0.0": + version: 3.0.0 + resolution: "strip-indent@npm:3.0.0" + dependencies: + min-indent: "npm:^1.0.0" + checksum: 10c0/ae0deaf41c8d1001c5d4fbe16cb553865c1863da4fae036683b474fa926af9fc121e155cb3fc57a68262b2ae7d5b8420aa752c97a6428c315d00efe2a3875679 + languageName: node + linkType: hard + "strip-json-comments@npm:^3.1.1": version: 3.1.1 resolution: "strip-json-comments@npm:3.1.1" @@ -5888,6 +8393,15 @@ __metadata: languageName: node linkType: hard +"supports-color@npm:^8.0.0": + version: 8.1.1 + resolution: "supports-color@npm:8.1.1" + dependencies: + has-flag: "npm:^4.0.0" + checksum: 10c0/ea1d3c275dd604c974670f63943ed9bd83623edc102430c05adb8efc56ba492746b6e95386e7831b872ec3807fd89dd8eb43f735195f37b5ec343e4234cc7e89 + languageName: node + linkType: hard + "supports-color@npm:^9.4.0": version: 9.4.0 resolution: "supports-color@npm:9.4.0" @@ -5902,6 +8416,13 @@ __metadata: languageName: node linkType: hard +"symbol-tree@npm:^3.2.4": + version: 3.2.4 + resolution: "symbol-tree@npm:3.2.4" + checksum: 10c0/dfbe201ae09ac6053d163578778c53aa860a784147ecf95705de0cd23f42c851e1be7889241495e95c37cabb058edb1052f141387bef68f705afc8f9dd358509 + languageName: node + linkType: hard + "tailwind-merge@npm:^2.2.1": version: 2.2.2 resolution: "tailwind-merge@npm:2.2.2" @@ -5974,6 +8495,17 @@ __metadata: languageName: node linkType: hard +"test-exclude@npm:^6.0.0": + version: 6.0.0 + resolution: "test-exclude@npm:6.0.0" + dependencies: + "@istanbuljs/schema": "npm:^0.1.2" + glob: "npm:^7.1.4" + minimatch: "npm:^3.0.4" + checksum: 10c0/019d33d81adff3f9f1bfcff18125fb2d3c65564f437d9be539270ee74b994986abb8260c7c2ce90e8f30162178b09dbbce33c6389273afac4f36069c48521f57 + languageName: node + linkType: hard + "text-table@npm:^0.2.0": version: 0.2.0 resolution: "text-table@npm:0.2.0" @@ -6006,6 +8538,13 @@ __metadata: languageName: node linkType: hard +"tmpl@npm:1.0.5": + version: 1.0.5 + resolution: "tmpl@npm:1.0.5" + checksum: 10c0/f935537799c2d1922cb5d6d3805f594388f75338fe7a4a9dac41504dd539704ca4db45b883b52e7b0aa5b2fd5ddadb1452bf95cd23a69da2f793a843f9451cc9 + languageName: node + linkType: hard + "to-fast-properties@npm:^2.0.0": version: 2.0.0 resolution: "to-fast-properties@npm:2.0.0" @@ -6029,6 +8568,27 @@ __metadata: languageName: node linkType: hard +"tough-cookie@npm:^4.1.2": + version: 4.1.3 + resolution: "tough-cookie@npm:4.1.3" + dependencies: + psl: "npm:^1.1.33" + punycode: "npm:^2.1.1" + universalify: "npm:^0.2.0" + url-parse: "npm:^1.5.3" + checksum: 10c0/4fc0433a0cba370d57c4b240f30440c848906dee3180bb6e85033143c2726d322e7e4614abb51d42d111ebec119c4876ed8d7247d4113563033eebbc1739c831 + languageName: node + linkType: hard + +"tr46@npm:^3.0.0": + version: 3.0.0 + resolution: "tr46@npm:3.0.0" + dependencies: + punycode: "npm:^2.1.1" + checksum: 10c0/cdc47cad3a9d0b6cb293e39ccb1066695ae6fdd39b9e4f351b010835a1f8b4f3a6dc3a55e896b421371187f22b48d7dac1b693de4f6551bdef7b6ab6735dfe3b + languageName: node + linkType: hard + "ts-api-utils@npm:^1.0.1": version: 1.3.0 resolution: "ts-api-utils@npm:1.3.0" @@ -6080,6 +8640,13 @@ __metadata: languageName: node linkType: hard +"type-detect@npm:4.0.8": + version: 4.0.8 + resolution: "type-detect@npm:4.0.8" + checksum: 10c0/8fb9a51d3f365a7de84ab7f73b653534b61b622aa6800aecdb0f1095a4a646d3f5eb295322127b6573db7982afcd40ab492d038cf825a42093a58b1e1353e0bd + languageName: node + linkType: hard + "type-fest@npm:^0.20.2": version: 0.20.2 resolution: "type-fest@npm:0.20.2" @@ -6087,6 +8654,13 @@ __metadata: languageName: node linkType: hard +"type-fest@npm:^0.21.3": + version: 0.21.3 + resolution: "type-fest@npm:0.21.3" + checksum: 10c0/902bd57bfa30d51d4779b641c2bc403cdf1371fb9c91d3c058b0133694fcfdb817aef07a47f40faf79039eecbaa39ee9d3c532deff244f3a19ce68cea71a61e8 + languageName: node + linkType: hard + "typed-array-buffer@npm:^1.0.2": version: 1.0.2 resolution: "typed-array-buffer@npm:1.0.2" @@ -6166,8 +8740,11 @@ __metadata: "@chakra-ui/react": "npm:^2.8.2" "@emotion/react": "npm:^11.11.4" "@emotion/styled": "npm:^11.11.0" + "@jest/globals": "npm:^29.7.0" "@radix-ui/react-slot": "npm:^1.0.2" "@radix-ui/react-toast": "npm:^1.1.5" + "@testing-library/jest-dom": "npm:^6.4.2" + "@testing-library/react": "npm:^14.2.2" "@types/node": "npm:^20" "@types/react": "npm:^18" "@types/react-dom": "npm:^18" @@ -6178,6 +8755,8 @@ __metadata: eslint-config-next: "npm:14.1.0" eslint-config-prettier: "npm:^9.1.0" framer-motion: "npm:^11.0.20" + jest: "npm:^29.7.0" + jest-environment-jsdom: "npm:^29.7.0" lucide-react: "npm:^0.343.0" next: "npm:14.1.0" openapi-fetch: "npm:0.9.3" @@ -6239,6 +8818,13 @@ __metadata: languageName: node linkType: hard +"universalify@npm:^0.2.0": + version: 0.2.0 + resolution: "universalify@npm:0.2.0" + checksum: 10c0/cedbe4d4ca3967edf24c0800cfc161c5a15e240dac28e3ce575c689abc11f2c81ccc6532c8752af3b40f9120fb5e454abecd359e164f4f6aa44c29cd37e194fe + languageName: node + linkType: hard + "update-browserslist-db@npm:^1.0.13": version: 1.0.13 resolution: "update-browserslist-db@npm:1.0.13" @@ -6262,6 +8848,16 @@ __metadata: languageName: node linkType: hard +"url-parse@npm:^1.5.3": + version: 1.5.10 + resolution: "url-parse@npm:1.5.10" + dependencies: + querystringify: "npm:^2.1.1" + requires-port: "npm:^1.0.0" + checksum: 10c0/bd5aa9389f896974beb851c112f63b466505a04b4807cea2e5a3b7092f6fbb75316f0491ea84e44f66fed55f1b440df5195d7e3a8203f64fcefa19d182f5be87 + languageName: node + linkType: hard + "use-callback-ref@npm:^1.3.0": version: 1.3.2 resolution: "use-callback-ref@npm:1.3.2" @@ -6300,6 +8896,68 @@ __metadata: languageName: node linkType: hard +"v8-to-istanbul@npm:^9.0.1": + version: 9.2.0 + resolution: "v8-to-istanbul@npm:9.2.0" + dependencies: + "@jridgewell/trace-mapping": "npm:^0.3.12" + "@types/istanbul-lib-coverage": "npm:^2.0.1" + convert-source-map: "npm:^2.0.0" + checksum: 10c0/e691ba4dd0dea4a884e52c37dbda30cce6f9eeafe9b26721e449429c6bb0f4b6d1e33fabe7711d0f67f7a34c3bfd56c873f7375bba0b1534e6a2843ce99550e5 + languageName: node + linkType: hard + +"w3c-xmlserializer@npm:^4.0.0": + version: 4.0.0 + resolution: "w3c-xmlserializer@npm:4.0.0" + dependencies: + xml-name-validator: "npm:^4.0.0" + checksum: 10c0/02cc66d6efc590bd630086cd88252444120f5feec5c4043932b0d0f74f8b060512f79dc77eb093a7ad04b4f02f39da79ce4af47ceb600f2bf9eacdc83204b1a8 + languageName: node + linkType: hard + +"walker@npm:^1.0.8": + version: 1.0.8 + resolution: "walker@npm:1.0.8" + dependencies: + makeerror: "npm:1.0.12" + checksum: 10c0/a17e037bccd3ca8a25a80cb850903facdfed0de4864bd8728f1782370715d679fa72e0a0f5da7c1c1379365159901e5935f35be531229da53bbfc0efdabdb48e + languageName: node + linkType: hard + +"webidl-conversions@npm:^7.0.0": + version: 7.0.0 + resolution: "webidl-conversions@npm:7.0.0" + checksum: 10c0/228d8cb6d270c23b0720cb2d95c579202db3aaf8f633b4e9dd94ec2000a04e7e6e43b76a94509cdb30479bd00ae253ab2371a2da9f81446cc313f89a4213a2c4 + languageName: node + linkType: hard + +"whatwg-encoding@npm:^2.0.0": + version: 2.0.0 + resolution: "whatwg-encoding@npm:2.0.0" + dependencies: + iconv-lite: "npm:0.6.3" + checksum: 10c0/91b90a49f312dc751496fd23a7e68981e62f33afe938b97281ad766235c4872fc4e66319f925c5e9001502b3040dd25a33b02a9c693b73a4cbbfdc4ad10c3e3e + languageName: node + linkType: hard + +"whatwg-mimetype@npm:^3.0.0": + version: 3.0.0 + resolution: "whatwg-mimetype@npm:3.0.0" + checksum: 10c0/323895a1cda29a5fb0b9ca82831d2c316309fede0365047c4c323073e3239067a304a09a1f4b123b9532641ab604203f33a1403b5ca6a62ef405bcd7a204080f + languageName: node + linkType: hard + +"whatwg-url@npm:^11.0.0": + version: 11.0.0 + resolution: "whatwg-url@npm:11.0.0" + dependencies: + tr46: "npm:^3.0.0" + webidl-conversions: "npm:^7.0.0" + checksum: 10c0/f7ec264976d7c725e0696fcaf9ebe056e14422eacbf92fdbb4462034609cba7d0c85ffa1aab05e9309d42969bcf04632ba5ed3f3882c516d7b093053315bf4c1 + languageName: node + linkType: hard + "which-boxed-primitive@npm:^1.0.2": version: 1.0.2 resolution: "which-boxed-primitive@npm:1.0.2" @@ -6345,7 +9003,7 @@ __metadata: languageName: node linkType: hard -"which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.15, which-typed-array@npm:^1.1.9": +"which-typed-array@npm:^1.1.13, which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.15, which-typed-array@npm:^1.1.9": version: 1.1.15 resolution: "which-typed-array@npm:1.1.15" dependencies: @@ -6380,7 +9038,7 @@ __metadata: languageName: node linkType: hard -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": version: 7.0.0 resolution: "wrap-ansi@npm:7.0.0" dependencies: @@ -6409,6 +9067,59 @@ __metadata: languageName: node linkType: hard +"write-file-atomic@npm:^4.0.2": + version: 4.0.2 + resolution: "write-file-atomic@npm:4.0.2" + dependencies: + imurmurhash: "npm:^0.1.4" + signal-exit: "npm:^3.0.7" + checksum: 10c0/a2c282c95ef5d8e1c27b335ae897b5eca00e85590d92a3fd69a437919b7b93ff36a69ea04145da55829d2164e724bc62202cdb5f4b208b425aba0807889375c7 + languageName: node + linkType: hard + +"ws@npm:^8.11.0": + version: 8.16.0 + resolution: "ws@npm:8.16.0" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 10c0/a7783bb421c648b1e622b423409cb2a58ac5839521d2f689e84bc9dc41d59379c692dd405b15a997ea1d4c0c2e5314ad707332d0c558f15232d2bc07c0b4618a + languageName: node + linkType: hard + +"xml-name-validator@npm:^4.0.0": + version: 4.0.0 + resolution: "xml-name-validator@npm:4.0.0" + checksum: 10c0/c1bfa219d64e56fee265b2bd31b2fcecefc063ee802da1e73bad1f21d7afd89b943c9e2c97af2942f60b1ad46f915a4c81e00039c7d398b53cf410e29d3c30bd + languageName: node + linkType: hard + +"xmlchars@npm:^2.2.0": + version: 2.2.0 + resolution: "xmlchars@npm:2.2.0" + checksum: 10c0/b64b535861a6f310c5d9bfa10834cf49127c71922c297da9d4d1b45eeaae40bf9b4363275876088fbe2667e5db028d2cd4f8ee72eed9bede840a67d57dab7593 + languageName: node + linkType: hard + +"y18n@npm:^5.0.5": + version: 5.0.8 + resolution: "y18n@npm:5.0.8" + checksum: 10c0/4df2842c36e468590c3691c894bc9cdbac41f520566e76e24f59401ba7d8b4811eb1e34524d57e54bc6d864bcb66baab7ffd9ca42bf1eda596618f9162b91249 + languageName: node + linkType: hard + +"yallist@npm:^3.0.2": + version: 3.1.1 + resolution: "yallist@npm:3.1.1" + checksum: 10c0/c66a5c46bc89af1625476f7f0f2ec3653c1a1791d2f9407cfb4c2ba812a1e1c9941416d71ba9719876530e3340a99925f697142989371b72d93b9ee628afd8c1 + languageName: node + linkType: hard + "yallist@npm:^4.0.0": version: 4.0.0 resolution: "yallist@npm:4.0.0" @@ -6439,6 +9150,21 @@ __metadata: languageName: node linkType: hard +"yargs@npm:^17.3.1": + version: 17.7.2 + resolution: "yargs@npm:17.7.2" + dependencies: + cliui: "npm:^8.0.1" + escalade: "npm:^3.1.1" + get-caller-file: "npm:^2.0.5" + require-directory: "npm:^2.1.1" + string-width: "npm:^4.2.3" + y18n: "npm:^5.0.5" + yargs-parser: "npm:^21.1.1" + checksum: 10c0/ccd7e723e61ad5965fffbb791366db689572b80cca80e0f96aad968dfff4156cd7cd1ad18607afe1046d8241e6fb2d6c08bf7fa7bfb5eaec818735d8feac8f05 + languageName: node + linkType: hard + "yocto-queue@npm:^0.1.0": version: 0.1.0 resolution: "yocto-queue@npm:0.1.0" From 56c0b22efb6be1eb3b3ebf4ab7ef1669d7f84f20 Mon Sep 17 00:00:00 2001 From: KikyoNanakusa Date: Thu, 4 Apr 2024 22:38:27 +0900 Subject: [PATCH 016/107] =?UTF-8?q?build:test=E3=82=92=E5=AE=9F=E8=A1=8C?= =?UTF-8?q?=E3=81=A7=E3=81=8D=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/package.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/typing-app/package.json b/typing-app/package.json index 282ffe0..3cc7ad1 100644 --- a/typing-app/package.json +++ b/typing-app/package.json @@ -8,7 +8,9 @@ "start": "next start", "lint": "next lint", "format": "prettier . --write", - "format:ci": "prettier . --check" + "format:ci": "prettier . --check", + "test": "jest", + "test:watch": "jest --watch" }, "dependencies": { "@chakra-ui/react": "^2.8.2", From 9603978cb2397b3f12543aa08c029357479a5a0a Mon Sep 17 00:00:00 2001 From: KikyoNanakusa Date: Thu, 4 Apr 2024 23:27:54 +0900 Subject: [PATCH 017/107] =?UTF-8?q?test:LoginModal=E3=81=AE=E3=83=86?= =?UTF-8?q?=E3=82=B9=E3=83=88=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/__test__/LoginModal.test.tsx | 25 +++++++++++++ .../components/molecules/GameStartButton.tsx | 2 +- .../src/components/molecules/LoginModal.tsx | 36 ++++++++++++++++--- 3 files changed, 57 insertions(+), 6 deletions(-) create mode 100644 typing-app/__test__/LoginModal.test.tsx diff --git a/typing-app/__test__/LoginModal.test.tsx b/typing-app/__test__/LoginModal.test.tsx new file mode 100644 index 0000000..2da6b5c --- /dev/null +++ b/typing-app/__test__/LoginModal.test.tsx @@ -0,0 +1,25 @@ +import { LoginModalPresenter } from '@/components/molecules/LoginModal' +import { describe, expect, it } from '@jest/globals' +import { render, screen} from '@testing-library/react' + +describe('LoginModal', () => { + it('renders a modal', () => { + const mockDispatchAction = () => {}; + const mockState = {}; + const mockPending = false; + + const tree = render( + {}} + state={mockState} + dispatchAction={ mockDispatchAction } + pending={mockPending} + /> + ); + const textbox = screen.getByRole('textbox'); + const submitButton = screen.getByRole('submit'); + expect(textbox).toBeInTheDocument(); + expect(submitButton).toBeInTheDocument(); + }); + }); diff --git a/typing-app/src/components/molecules/GameStartButton.tsx b/typing-app/src/components/molecules/GameStartButton.tsx index cb3eb81..de18535 100644 --- a/typing-app/src/components/molecules/GameStartButton.tsx +++ b/typing-app/src/components/molecules/GameStartButton.tsx @@ -2,7 +2,7 @@ import React from "react"; import { Button, useDisclosure } from "@chakra-ui/react"; -import LoginModal from "./LoginModal"; // LoginModalコンポーネントをインポート +import LoginModal from "./LoginModal"; const GameStartButton = () => { const { isOpen, onOpen, onClose } = useDisclosure(); diff --git a/typing-app/src/components/molecules/LoginModal.tsx b/typing-app/src/components/molecules/LoginModal.tsx index dd7ac91..03a74f1 100644 --- a/typing-app/src/components/molecules/LoginModal.tsx +++ b/typing-app/src/components/molecules/LoginModal.tsx @@ -1,3 +1,5 @@ +"use client"; + import React from "react"; import { Modal, @@ -15,12 +17,14 @@ import { useFormState } from "react-dom"; interface LoginModalProps { isOpen: boolean; onClose: () => void; + state: any; + dispatchAction: (payload: FormData) => void; + pending: boolean; } -const LoginModal: React.FC = ({ isOpen, onClose }) => { - const [state, dispatchAction, pending] = useFormState(login, {}); +const LoginModalPresenter: React.FC = ({ isOpen, onClose, state, dispatchAction, pending }) => { return ( - +
@@ -33,12 +37,13 @@ const LoginModal: React.FC = ({ isOpen, onClose }) => { placeholder="学籍番号を入力してください" pattern="[0-9A-Z]{8}" title="学籍番号" + role="textbox" /> {state.error ? `エラー: ${state.error}` : null} - - + ); }; From f501f2fa893b52301fb38c81e51abe06e78c8b69 Mon Sep 17 00:00:00 2001 From: KikyoNanakusa Date: Fri, 5 Apr 2024 09:14:42 +0900 Subject: [PATCH 040/107] =?UTF-8?q?refactor:onClick=E3=81=AE=E3=82=B3?= =?UTF-8?q?=E3=83=BC=E3=83=AB=E3=83=90=E3=83=83=E3=82=AF=E3=81=AE=E5=91=BD?= =?UTF-8?q?=E5=90=8D=E3=82=92=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/src/components/molecules/LogoutButton.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/typing-app/src/components/molecules/LogoutButton.tsx b/typing-app/src/components/molecules/LogoutButton.tsx index 5283ce2..e24c281 100644 --- a/typing-app/src/components/molecules/LogoutButton.tsx +++ b/typing-app/src/components/molecules/LogoutButton.tsx @@ -3,7 +3,7 @@ import React from "react"; import { useRouter } from "next/navigation"; import { Button, useDisclosure } from "@chakra-ui/react"; -import LogoutModal from "./LogoutModal"; +import LogoutModal from "./LogoutModal"; import { logout } from "@/app/actions"; const LogoutButton: React.FC = () => { @@ -16,10 +16,10 @@ const LogoutButton: React.FC = () => { }; //Note: ログアウト時にページをリレンダリングするためにリダイレクトする - const handleRedirect = () => { + const pushToRoot = () => { onClose(); router.push("/"); - } + }; return ( <> @@ -27,7 +27,7 @@ const LogoutButton: React.FC = () => { Logout - + ); }; From 7c9ae8e0922391b3eeaf59a0f64a410e0620b4e5 Mon Sep 17 00:00:00 2001 From: KikyoNanakusa Date: Fri, 5 Apr 2024 09:16:48 +0900 Subject: [PATCH 041/107] =?UTF-8?q?refactor:=E5=91=BD=E5=90=8D=E3=82=92reL?= =?UTF-8?q?oad=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/src/components/molecules/LogoutButton.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/typing-app/src/components/molecules/LogoutButton.tsx b/typing-app/src/components/molecules/LogoutButton.tsx index e24c281..730b9da 100644 --- a/typing-app/src/components/molecules/LogoutButton.tsx +++ b/typing-app/src/components/molecules/LogoutButton.tsx @@ -16,7 +16,7 @@ const LogoutButton: React.FC = () => { }; //Note: ログアウト時にページをリレンダリングするためにリダイレクトする - const pushToRoot = () => { + const reLoad = () => { onClose(); router.push("/"); }; @@ -27,7 +27,7 @@ const LogoutButton: React.FC = () => { Logout - + ); }; From 0d7ff84db287565a2a57f1f8dc8922444b6bba85 Mon Sep 17 00:00:00 2001 From: KikyoNanakusa Date: Fri, 5 Apr 2024 09:23:08 +0900 Subject: [PATCH 042/107] =?UTF-8?q?feat:=E7=94=BB=E5=83=8F=E3=82=92?= =?UTF-8?q?=E3=81=97=E3=81=9A=E3=81=A3=E3=81=B4=E3=83=BC=E3=81=AB=E5=A4=89?= =?UTF-8?q?=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/src/components/molecules/UserCard.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/typing-app/src/components/molecules/UserCard.tsx b/typing-app/src/components/molecules/UserCard.tsx index 5ff6dd0..05bf0ee 100644 --- a/typing-app/src/components/molecules/UserCard.tsx +++ b/typing-app/src/components/molecules/UserCard.tsx @@ -11,7 +11,7 @@ export const UserCardPresenter = ({ user }: UserCardPresenterProps) => { return ( - + 名前: {user ? user.handleName : "ログインしていません"} From 22e4b0e2912b83bb7aa82da511a755a20eb89d4c Mon Sep 17 00:00:00 2001 From: KikyoNanakusa Date: Fri, 5 Apr 2024 09:33:15 +0900 Subject: [PATCH 043/107] =?UTF-8?q?feat:UserCard=E3=81=AE=E3=82=B5?= =?UTF-8?q?=E3=82=A4=E3=82=BA=E3=82=92=E6=8B=A1=E5=A4=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/molecules/UserCard.tsx | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/typing-app/src/components/molecules/UserCard.tsx b/typing-app/src/components/molecules/UserCard.tsx index 05bf0ee..c39e0ab 100644 --- a/typing-app/src/components/molecules/UserCard.tsx +++ b/typing-app/src/components/molecules/UserCard.tsx @@ -9,17 +9,15 @@ interface UserCardPresenterProps { export const UserCardPresenter = ({ user }: UserCardPresenterProps) => { return ( - - - - - - 名前: {user ? user.handleName : "ログインしていません"} - - 学籍番号: {user ? user.studentNumber : "未ログイン"} - - - + + + + + 名前: {user ? user.handleName : "ログインしていません"} + + 学籍番号: {user ? user.studentNumber : "未ログイン"} + + ); }; From 9386efa2be58230625e8a9472fe827ec0afed6d2 Mon Sep 17 00:00:00 2001 From: KikyoNanakusa Date: Fri, 5 Apr 2024 09:34:48 +0900 Subject: [PATCH 044/107] =?UTF-8?q?style:prettier=E3=82=92=E9=81=A9?= =?UTF-8?q?=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/src/components/molecules/UserCard.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/typing-app/src/components/molecules/UserCard.tsx b/typing-app/src/components/molecules/UserCard.tsx index c39e0ab..7d9ecab 100644 --- a/typing-app/src/components/molecules/UserCard.tsx +++ b/typing-app/src/components/molecules/UserCard.tsx @@ -10,7 +10,11 @@ interface UserCardPresenterProps { export const UserCardPresenter = ({ user }: UserCardPresenterProps) => { return ( - + 名前: {user ? user.handleName : "ログインしていません"} From da85d3d75a04650b549ed1b7473e8056700b0d3f Mon Sep 17 00:00:00 2001 From: shin0729 Date: Fri, 5 Apr 2024 15:06:55 +0900 Subject: [PATCH 045/107] =?UTF-8?q?add:=20=E3=83=A6=E3=83=BC=E3=82=B6?= =?UTF-8?q?=E3=83=BC=E3=81=AE=E7=8F=BE=E5=9C=A8=E3=81=AE=E9=A0=86=E4=BD=8D?= =?UTF-8?q?=E3=82=92=E5=8F=96=E5=BE=97=E3=81=99=E3=82=8B=E3=82=A8=E3=83=B3?= =?UTF-8?q?=E3=83=89=E3=83=9D=E3=82=A4=E3=83=B3=E3=83=88=E3=82=92=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-server/openapi.yaml | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/typing-server/openapi.yaml b/typing-server/openapi.yaml index 7851ba3..4063725 100644 --- a/typing-server/openapi.yaml +++ b/typing-server/openapi.yaml @@ -119,6 +119,36 @@ paths: "400": description: 不正なリクエストです。 + /scores/{user-id}/current-rank: + get: + tags: + - user + operationId: getMyscoreRanking + summary: ユーザーの現在の順位を取得 + parameters: + - in: path + name: user-id + schema: + type: string + format: uuid + required: true + description: ユーザーID + responses: + "200": + description: ユーザーの現在の順位を返します。 + content: + application/json: + schema: + type: object + properties: + current-rank: + type: integer + description: ユーザーの現在の順位 + "404": + description: ユーザーが見つかりません。 + "500": + description: サーバーエラーが発生しました。 + components: schemas: User: From 6505a72269d172a93d36e253ebe76e8af27bc910 Mon Sep 17 00:00:00 2001 From: shin0729 Date: Fri, 5 Apr 2024 15:19:41 +0900 Subject: [PATCH 046/107] =?UTF-8?q?update:=E3=83=AC=E3=82=B9=E3=83=9D?= =?UTF-8?q?=E3=83=B3=E3=82=B9=E3=81=AB=E3=83=A9=E3=83=B3=E3=82=AD=E3=83=B3?= =?UTF-8?q?=E3=82=B0=E3=81=AE=E5=85=A8=E4=BB=B6=E6=95=B0=E3=82=92=E5=90=AB?= =?UTF-8?q?=E3=82=81=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=E3=81=97=E3=81=BE?= =?UTF-8?q?=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-server/openapi.yaml | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/typing-server/openapi.yaml b/typing-server/openapi.yaml index 4063725..c8f829b 100644 --- a/typing-server/openapi.yaml +++ b/typing-server/openapi.yaml @@ -79,9 +79,15 @@ paths: content: application/json: schema: - type: array - items: - $ref: "#/components/schemas/ScoreRanking" + type: object + properties: + rankings: + type: array + items: + $ref: "#/components/schemas/ScoreRanking" + total_count: + type: integer + description: ランキングの全件数 "400": description: 不正なリクエストです。 From 9db2d124ea219840bba44b0f107a6614e08823f6 Mon Sep 17 00:00:00 2001 From: shin0729 Date: Fri, 5 Apr 2024 06:38:28 +0000 Subject: [PATCH 047/107] generate TS code from api schema --- typing-app/src/libs/api/v1.d.ts | 38 ++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/typing-app/src/libs/api/v1.d.ts b/typing-app/src/libs/api/v1.d.ts index 12d1efb..f1343b0 100644 --- a/typing-app/src/libs/api/v1.d.ts +++ b/typing-app/src/libs/api/v1.d.ts @@ -21,6 +21,10 @@ export interface paths { /** スコアを登録 */ post: operations["registerScore"]; }; + "/scores/{user-id}/current-rank": { + /** ユーザーの現在の順位を取得 */ + get: operations["getMyscoreRanking"]; + }; } export type webhooks = Record; @@ -109,7 +113,11 @@ export interface operations { /** @description スコアランキングを返します。 */ 200: { content: { - "application/json": components["schemas"]["ScoreRanking"][]; + "application/json": { + rankings?: components["schemas"]["ScoreRanking"][]; + /** @description ランキングの全件数 */ + total_count?: number; + }; }; }; /** @description 不正なリクエストです。 */ @@ -149,4 +157,32 @@ export interface operations { }; }; }; + /** ユーザーの現在の順位を取得 */ + getMyscoreRanking: { + parameters: { + path: { + /** @description ユーザーID */ + "user-id": string; + }; + }; + responses: { + /** @description ユーザーの現在の順位を返します。 */ + 200: { + content: { + "application/json": { + /** @description ユーザーの現在の順位 */ + "current-rank"?: number; + }; + }; + }; + /** @description ユーザーが見つかりません。 */ + 404: { + content: never; + }; + /** @description サーバーエラーが発生しました。 */ + 500: { + content: never; + }; + }; + }; } From 6b3841aa60e1ebba54b61378c4eb78b2c6aa387d Mon Sep 17 00:00:00 2001 From: shin0729 Date: Fri, 5 Apr 2024 15:59:06 +0900 Subject: [PATCH 048/107] =?UTF-8?q?update:=E3=83=AC=E3=82=B9=E3=83=9D?= =?UTF-8?q?=E3=83=B3=E3=82=B9=E3=81=ABrequired=E3=82=92=E8=BF=BD=E5=8A=A0?= =?UTF-8?q?=E3=81=97=E3=81=BE=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-server/openapi.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/typing-server/openapi.yaml b/typing-server/openapi.yaml index c8f829b..c1fe42b 100644 --- a/typing-server/openapi.yaml +++ b/typing-server/openapi.yaml @@ -88,6 +88,9 @@ paths: total_count: type: integer description: ランキングの全件数 + required: + - rankings + - total_count "400": description: 不正なリクエストです。 @@ -150,6 +153,8 @@ paths: current-rank: type: integer description: ユーザーの現在の順位 + required: + - current-rank "404": description: ユーザーが見つかりません。 "500": From 62bc5e446a0bcc37dd70f7ae36305b16fa413d7e Mon Sep 17 00:00:00 2001 From: shin0729 Date: Fri, 5 Apr 2024 06:59:53 +0000 Subject: [PATCH 049/107] generate TS code from api schema --- typing-app/src/libs/api/v1.d.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/typing-app/src/libs/api/v1.d.ts b/typing-app/src/libs/api/v1.d.ts index f1343b0..e439702 100644 --- a/typing-app/src/libs/api/v1.d.ts +++ b/typing-app/src/libs/api/v1.d.ts @@ -114,9 +114,9 @@ export interface operations { 200: { content: { "application/json": { - rankings?: components["schemas"]["ScoreRanking"][]; + rankings: components["schemas"]["ScoreRanking"][]; /** @description ランキングの全件数 */ - total_count?: number; + total_count: number; }; }; }; @@ -171,7 +171,7 @@ export interface operations { content: { "application/json": { /** @description ユーザーの現在の順位 */ - "current-rank"?: number; + "current-rank": number; }; }; }; From 3c48b2197cf8ab673086015763c6da0db798a4da Mon Sep 17 00:00:00 2001 From: shin0729 Date: Fri, 5 Apr 2024 16:06:54 +0900 Subject: [PATCH 050/107] =?UTF-8?q?chore:=E3=82=A4=E3=83=B3=E3=83=87?= =?UTF-8?q?=E3=83=B3=E3=83=88=E3=82=92=E3=81=82=E3=81=91=E3=81=BE=E3=81=97?= =?UTF-8?q?=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-server/openapi.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/typing-server/openapi.yaml b/typing-server/openapi.yaml index c1fe42b..b428c6b 100644 --- a/typing-server/openapi.yaml +++ b/typing-server/openapi.yaml @@ -89,8 +89,8 @@ paths: type: integer description: ランキングの全件数 required: - - rankings - - total_count + - rankings + - total_count "400": description: 不正なリクエストです。 From 41a7727f8e09515590d2bcbebad32f51da51387c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=82=8F=E3=81=8B?= <100208180+waka-eup25@users.noreply.github.com> Date: Fri, 5 Apr 2024 17:34:21 +0900 Subject: [PATCH 051/107] =?UTF-8?q?style:=20Home=E3=81=B8=E3=81=AE?= =?UTF-8?q?=E7=94=BB=E9=9D=A2=E9=81=B7=E7=A7=BB=E3=81=AE=E5=AE=9F=E8=A3=85?= =?UTF-8?q?=E3=82=92useRouter=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/src/components/templates/GameResult.tsx | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/typing-app/src/components/templates/GameResult.tsx b/typing-app/src/components/templates/GameResult.tsx index 6f5b315..3357dce 100644 --- a/typing-app/src/components/templates/GameResult.tsx +++ b/typing-app/src/components/templates/GameResult.tsx @@ -2,6 +2,7 @@ import { ResultScore } from "@/types/RegisterScore"; import { Button, Grid, GridItem, Text } from "@chakra-ui/react"; import React from "react"; import styles from "./GameResult.module.css"; +import { useRouter } from "next/navigation"; interface GameResultProps { nextPage: () => void; @@ -9,6 +10,12 @@ interface GameResultProps { } const GameResult: React.FC = ({ nextPage, resultScore }) => { + const router = useRouter(); + + const pushToRoot = () => { + router.push("/"); + } + return (
@@ -87,7 +94,7 @@ const GameResult: React.FC = ({ nextPage, resultScore }) => { - From 7dcee70fee6c6290cc532863118bda8511d2f0f6 Mon Sep 17 00:00:00 2001 From: araaki12345 <74499464+araaki12345@users.noreply.github.com> Date: Fri, 5 Apr 2024 17:55:19 +0900 Subject: [PATCH 052/107] =?UTF-8?q?feat:API=E3=81=8B=E3=82=89=E5=AE=9F?= =?UTF-8?q?=E3=83=87=E3=83=BC=E3=82=BF=E3=82=92=E5=8F=96=E5=BE=97=E3=81=97?= =?UTF-8?q?=E3=80=81=E3=83=A9=E3=83=B3=E3=82=AD=E3=83=B3=E3=82=B0=E3=81=AB?= =?UTF-8?q?=E8=A1=A8=E7=A4=BA=E3=81=99=E3=82=8B=E6=A9=9F=E8=83=BD=E3=82=92?= =?UTF-8?q?=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: かわきん Co-authored-by: KikyoNanakusa --- .../src/components/atoms/RefreshButton.tsx | 6 +- .../components/molecules/RankingTableBody.tsx | 6 +- .../components/molecules/RankingTableRow.tsx | 19 +- .../src/components/organism/RankingTabs.tsx | 245 ++++-------------- typing-server/api/cmd/main.go | 4 +- 5 files changed, 68 insertions(+), 212 deletions(-) diff --git a/typing-app/src/components/atoms/RefreshButton.tsx b/typing-app/src/components/atoms/RefreshButton.tsx index 6f6ad12..3fd399a 100644 --- a/typing-app/src/components/atoms/RefreshButton.tsx +++ b/typing-app/src/components/atoms/RefreshButton.tsx @@ -8,9 +8,9 @@ const RefreshIcon = () => ( viewBox="0 0 24 24" fill="none" stroke="currentColor" - stroke-width="2" - stroke-linecap="round" - stroke-linejoin="round" + strokeWidth="2" + strokeLinecap="round" + strokeLinejoin="round" > diff --git a/typing-app/src/components/molecules/RankingTableBody.tsx b/typing-app/src/components/molecules/RankingTableBody.tsx index d8959c7..ff013dd 100644 --- a/typing-app/src/components/molecules/RankingTableBody.tsx +++ b/typing-app/src/components/molecules/RankingTableBody.tsx @@ -1,16 +1,16 @@ import { Tbody } from "@chakra-ui/react"; import RankingTableRow from "./RankingTableRow"; -import { ScoreRanking } from "../organism/RankingTabs"; +import { components } from "@/libs/api/v1"; export type RankingTableBodyProps = { - scoreRankings: ScoreRanking[]; + scoreRankings: components["schemas"]["ScoreRanking"][]; }; const RankingTableBody: React.FC = ({ scoreRankings }) => { return ( {scoreRankings.map((scoreRanking) => ( - + ))} ); diff --git a/typing-app/src/components/molecules/RankingTableRow.tsx b/typing-app/src/components/molecules/RankingTableRow.tsx index b45da86..222573a 100644 --- a/typing-app/src/components/molecules/RankingTableRow.tsx +++ b/typing-app/src/components/molecules/RankingTableRow.tsx @@ -1,23 +1,28 @@ import { Td, Tr } from "@chakra-ui/react"; -import { ScoreRanking } from "../organism/RankingTabs"; +import { components } from "@/libs/api/v1"; -const RankingTableRow: React.FC = (scoreRanking) => { +const RankingTableRow: React.FC = (scoreRanking) => { return ( - + {String(scoreRanking.rank)} - {scoreRanking.user.studentNumber} + {scoreRanking.score?.user?.student_number} - {String(scoreRanking.keystrokes)} + {String(scoreRanking.score?.keystrokes)} - {String(scoreRanking.accuracy)} + {String(scoreRanking.score?.accuracy)} - {scoreRanking.createdAt.toLocaleDateString("ja-JP")} + {scoreRanking.score?.created_at} ); diff --git a/typing-app/src/components/organism/RankingTabs.tsx b/typing-app/src/components/organism/RankingTabs.tsx index 7b40bbb..3729c19 100644 --- a/typing-app/src/components/organism/RankingTabs.tsx +++ b/typing-app/src/components/organism/RankingTabs.tsx @@ -1,89 +1,65 @@ "use client"; + import { Tabs, TabList, TabPanels, Tab, TabPanel, Flex, Center, Box, Grid } from "@chakra-ui/react"; import RankingTable from "../organism/RankingTable"; import { Pagination } from "../molecules/Pagination"; -//import { CustomButton } from "../atoms/CustomButton"; import RefreshButton from "../atoms/RefreshButton"; import { useEffect, useState } from "react"; import { client } from "@/libs/api"; -import { paths } from "@/libs/api/v1"; -//import { error } from "console"; - -export interface User { - id: string; - studentNumber: string; - handleName: string; -} - -export interface ScoreRanking { - rank: number; - user: User; - keystrokes: number; - accuracy: number; - createdAt: Date; -} +import { components } from "@/libs/api/v1"; const RankingTabs = () => { - const [rankings, setRankings] = useState([]); - const [scoreRankings, setScoreRankings] = useState([]); - const [rankingStartFrom, setRankingStartFrom] = useState(0); + const [scoreRankings, setScoreRankings] = useState([]); + const [rankingStartFrom, setRankingStartFrom] = useState(1); const [sortBy, setSortBy] = useState<"accuracy" | "keystrokes">("accuracy"); - const [isLoading, setIsLoading] = useState(false); - const [error, setError] = useState(null); + const [error, setError] = useState(undefined); + const LIMIT = 10; const MAXIMUM = 100; // TODO: MAXIMUMをAPIから取得する - const fetchData = async () => { - setIsLoading(true); - try { - // APIからデータを取得するためのパラメータを含むGETリクエスト - const { data, error } = await client.GET("/scores/ranking", { - params: { - query: { - startFrom: rankingStartFrom, - limit: LIMIT, - sortBy: sortBy, + useEffect(() => { + const fetchData = async () => { + try { + console.log(sortBy); + console.log(rankingStartFrom); + const { data, error } = await client.GET("/scores/ranking", { + params: { + query: { + sort_by: sortBy, + start: rankingStartFrom, + limit: LIMIT, + }, }, - }, - }); - if (error && data) { - setRankings(data); - } else { - setError("データの取得中にエラーが発生しました。"); + }); + console.log(data); + console.log(error); + if (data) { + setScoreRankings(data); + } else { + setError("データの取得中にエラーが発生しました。"); + } + } catch (err) { + console.log("APIリクエストエラー:", err); + setError("データの取得中に予期せぬエラーが発生しました。"); + } finally { } - } catch (err) { - console.log("APIリクエストエラー:", err); - setError("データの取得中に予期せぬエラーが発生しました。"); - } finally { - setIsLoading(false); - } - }; - - useEffect(() => { - // ページが読み込まれたときにデータを取得 + }; fetchData(); - }, []); - if (isLoading) return
Loading...
; - if (error) return
Error: {error}
; + }, [sortBy, rankingStartFrom]); const handleTabChange = (index: number) => { const sortOption = index === 0 ? "accuracy" : "keystrokes"; setSortBy(sortOption); - fetchData(); }; - // 演算子を引数にとる、ボタンを押したときのハンドラ関数 const handlePaginationClick = (direction: "next" | "prev") => { const newStartFrom = - direction === "prev" ? Math.max(rankingStartFrom - LIMIT, 0) : Math.min(rankingStartFrom - LIMIT, 0); + direction === "prev" + ? Math.max(rankingStartFrom - LIMIT, 0) + : Math.min(rankingStartFrom + LIMIT, MAXIMUM - LIMIT); setRankingStartFrom(newStartFrom); - fetchData(); }; - if (error) { - return
Error loading rankings
; - } - return ( @@ -93,7 +69,7 @@ const RankingTabs = () => { 正打率 入力文字数 - fetchData()} isDisabled={false} /> + {}} isDisabled={false} />
{error && ( @@ -101,151 +77,26 @@ const RankingTabs = () => { Error: {error}
)} - {isLoading ? ( -
- Loading... -
- ) : ( - - - - - - - - - )} + ( + + + + + + + + + )
handlePaginationClick("prev")} onNext={() => handlePaginationClick("next")} - isPrevDisabled={rankingStartFrom <= 0} + isPrevDisabled={rankingStartFrom <= 1} isNextDisabled={rankingStartFrom + LIMIT >= MAXIMUM} />
); }; -export default RankingTabs; - -/*const demoUsers: User[] = [ - { - id: "1", - studentNumber: "70310000", - handleName: "X", - }, - { - id: "2", - studentNumber: "70310000", - handleName: "Y", - }, - { - id: "3", - studentNumber: "70310000", - handleName: "Z", - }, - { - id: "4", - studentNumber: "70310000", - handleName: "A", - }, - { - id: "5", - studentNumber: "70310000", - handleName: "B", - }, -]; -const demoKeyStrokeRankings: ScoreRanking[] = [ - { - rank: 1, - user: { - id: "1", - studentNumber: "70310000", - handleName: "X", - }, - keystrokes: 100, - accuracy: 100, - createdAt: new Date(), - }, - { - rank: 2, - user: { - id: "2", - studentNumber: "70310000", - handleName: "Y", - }, - keystrokes: 90, - accuracy: 90, - createdAt: new Date(), - }, - { - rank: 3, - user: { - id: "3", - studentNumber: "70310000", - handleName: "Z", - }, - keystrokes: 80, - accuracy: 80, - createdAt: new Date(), - }, -]; - -const demoAccuracyRankings: ScoreRanking[] = [ - { - rank: 1, - user: { - id: "1", - studentNumber: "70310000", - handleName: "X", - }, - keystrokes: 100, - accuracy: 100, - createdAt: new Date(), - }, - { - rank: 2, - user: { - id: "2", - studentNumber: "70310000", - handleName: "Y", - }, - keystrokes: 90, - accuracy: 90, - createdAt: new Date(), - }, - { - rank: 3, - user: { - id: "3", - studentNumber: "70310000", - handleName: "Z", - }, - keystrokes: 80, - accuracy: 80, - createdAt: new Date(), - }, - { - rank: 4, - user: { - id: "4", - studentNumber: "70310000", - handleName: "A", - }, - keystrokes: 70, - accuracy: 70, - createdAt: new Date(), - }, - { - rank: 5, - user: { - id: "5", - studentNumber: "70310000", - handleName: "B", - }, - keystrokes: 60, - accuracy: 60, - createdAt: new Date(), - }, -]; */ +export default RankingTabs; diff --git a/typing-server/api/cmd/main.go b/typing-server/api/cmd/main.go index 5826503..7210d23 100644 --- a/typing-server/api/cmd/main.go +++ b/typing-server/api/cmd/main.go @@ -127,7 +127,7 @@ func main() { func seedData(ctx context.Context, client *ent.Client, logger *slog.Logger) error { // シードデータの作成 - for i := 0; i < 10; i++ { + for i := 0; i < 1000; i++ { studentNumber := fmt.Sprintf("user%d", i+1) handleName := fmt.Sprintf("handle%d", i+1) @@ -152,7 +152,7 @@ func seedData(ctx context.Context, client *ent.Client, logger *slog.Logger) erro var maxKeystrokesScore, maxAccuracyScore *ent.Score - for j := 0; j < 5; j++ { + for j := 0; j < 10; j++ { keystrokes := rand.Intn(200) + 100 accuracy := rand.Float64() From e3ce8e2b51791a087a6f123c754cde84160a4db5 Mon Sep 17 00:00:00 2001 From: shin0729 Date: Fri, 5 Apr 2024 20:24:03 +0900 Subject: [PATCH 053/107] =?UTF-8?q?add:=20=E3=82=B9=E3=82=B3=E3=82=A2?= =?UTF-8?q?=E3=83=A9=E3=83=B3=E3=82=AD=E3=83=B3=E3=82=B0=E3=81=AB=E5=85=A8?= =?UTF-8?q?=E4=BB=B6=E6=95=B0=E3=81=AE=E6=83=85=E5=A0=B1=E3=82=92=E5=90=AB?= =?UTF-8?q?=E3=82=81=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=E3=81=97=E3=81=BE?= =?UTF-8?q?=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-server/api/handler/score.go | 8 ++++++-- typing-server/api/repository/score.go | 11 +++++++---- typing-server/api/service/score.go | 9 ++++----- 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/typing-server/api/handler/score.go b/typing-server/api/handler/score.go index 063d7d8..6dae89d 100644 --- a/typing-server/api/handler/score.go +++ b/typing-server/api/handler/score.go @@ -29,14 +29,18 @@ func GetScoresRanking(w http.ResponseWriter, r *http.Request) { limit = 10 } - rankings, err := service.GetScoresRanking(ctx, entClient, sortBy, start, limit) + rankings, totalCount, err := service.GetScoresRanking(ctx, entClient, sortBy, start, limit) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } + w.Header().Set("Content-Type", "application/json") - err = json.NewEncoder(w).Encode(rankings) + err = json.NewEncoder(w).Encode(map[string]interface{}{ + "rankings": rankings, + "total_count": totalCount, + }) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return diff --git a/typing-server/api/repository/score.go b/typing-server/api/repository/score.go index fadff4b..6050bcb 100644 --- a/typing-server/api/repository/score.go +++ b/typing-server/api/repository/score.go @@ -12,7 +12,7 @@ import ( "github.com/su-its/typing/typing-server/domain/repository/ent/user" ) -func GetScoresRanking(ctx context.Context, client *ent.Client, sortBy string, start, limit int) ([]*model.ScoreRanking, error) { +func GetScoresRanking(ctx context.Context, client *ent.Client, sortBy string, start, limit int) ([]*model.ScoreRanking, int, error) { var scores []*ent.Score // entのクエリを使用してスコアを取得 @@ -32,9 +32,12 @@ func GetScoresRanking(ctx context.Context, client *ent.Client, sortBy string, st case "keystrokes": query = query.Where(score.IsMaxKeystrokes(true)) default: - return nil, fmt.Errorf("invalid sort by parameter: %s", sortBy) + return nil, 0, fmt.Errorf("invalid sort by parameter: %s", sortBy) } + //全件数の取得 + count := query.CountX(ctx) + // フラグでフィルタリングされたスコアを取得 scores, err := query. Limit(limit). @@ -42,7 +45,7 @@ func GetScoresRanking(ctx context.Context, client *ent.Client, sortBy string, st All(ctx) if err != nil { - return nil, err + return nil, 0, err } var rankings []*model.ScoreRanking @@ -89,7 +92,7 @@ func GetScoresRanking(ctx context.Context, client *ent.Client, sortBy string, st rankings = append(rankings, ranking) } - return rankings, nil + return rankings, count, nil } func CreateScore(ctx context.Context, client *ent.Client, userID uuid.UUID, keystrokes int, accuracy float64) error { // トランザクションを開始 diff --git a/typing-server/api/service/score.go b/typing-server/api/service/score.go index 15025a8..2f6e03b 100644 --- a/typing-server/api/service/score.go +++ b/typing-server/api/service/score.go @@ -9,13 +9,12 @@ import ( "github.com/su-its/typing/typing-server/domain/repository/ent" ) -func GetScoresRanking(ctx context.Context, client *ent.Client, sortBy string, start, limit int) ([]*model.ScoreRanking, error) { - rankings, err := repository.GetScoresRanking(ctx, client, sortBy, start, limit) +func GetScoresRanking(ctx context.Context, client *ent.Client, sortBy string, start, limit int) ([]*model.ScoreRanking, int, error) { + rankings, totalCount, err := repository.GetScoresRanking(ctx, client, sortBy, start, limit) if err != nil { - return nil, err + return nil, 0, err } - - return rankings, nil + return rankings, totalCount, nil } func CreateScore(ctx context.Context, client *ent.Client, userID uuid.UUID, keystrokes int, accuracy float64) error { From e5b21a61f013379f3a62e6e4fe213e50ecdeaf38 Mon Sep 17 00:00:00 2001 From: araaki12345 <74499464+araaki12345@users.noreply.github.com> Date: Fri, 5 Apr 2024 20:56:08 +0900 Subject: [PATCH 054/107] =?UTF-8?q?chore:main.go=E3=81=AE=E6=95=B0?= =?UTF-8?q?=E5=80=A4=E3=82=92=E5=85=83=E3=81=AB=E6=88=BB=E3=81=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-server/api/cmd/main.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/typing-server/api/cmd/main.go b/typing-server/api/cmd/main.go index 7210d23..5826503 100644 --- a/typing-server/api/cmd/main.go +++ b/typing-server/api/cmd/main.go @@ -127,7 +127,7 @@ func main() { func seedData(ctx context.Context, client *ent.Client, logger *slog.Logger) error { // シードデータの作成 - for i := 0; i < 1000; i++ { + for i := 0; i < 10; i++ { studentNumber := fmt.Sprintf("user%d", i+1) handleName := fmt.Sprintf("handle%d", i+1) @@ -152,7 +152,7 @@ func seedData(ctx context.Context, client *ent.Client, logger *slog.Logger) erro var maxKeystrokesScore, maxAccuracyScore *ent.Score - for j := 0; j < 10; j++ { + for j := 0; j < 5; j++ { keystrokes := rand.Intn(200) + 100 accuracy := rand.Float64() From 17a65179a8385a24d57bbafb6fdd7f528cefa853 Mon Sep 17 00:00:00 2001 From: araaki12345 <74499464+araaki12345@users.noreply.github.com> Date: Fri, 5 Apr 2024 21:06:52 +0900 Subject: [PATCH 055/107] =?UTF-8?q?fix:=20RefreshButton=E3=82=92=E5=8B=95?= =?UTF-8?q?=E3=81=8F=E3=82=88=E3=81=86=E3=81=AB=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/organism/RankingTabs.tsx | 54 +++++++++---------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/typing-app/src/components/organism/RankingTabs.tsx b/typing-app/src/components/organism/RankingTabs.tsx index 3729c19..a55e1d8 100644 --- a/typing-app/src/components/organism/RankingTabs.tsx +++ b/typing-app/src/components/organism/RankingTabs.tsx @@ -17,33 +17,27 @@ const RankingTabs = () => { const LIMIT = 10; const MAXIMUM = 100; // TODO: MAXIMUMをAPIから取得する - useEffect(() => { - const fetchData = async () => { - try { - console.log(sortBy); - console.log(rankingStartFrom); - const { data, error } = await client.GET("/scores/ranking", { - params: { - query: { - sort_by: sortBy, - start: rankingStartFrom, - limit: LIMIT, - }, + const fetchData = async () => { + try { + const { data, error } = await client.GET("/scores/ranking", { + params: { + query: { + sort_by: sortBy, + start: rankingStartFrom, + limit: LIMIT, }, - }); - console.log(data); - console.log(error); - if (data) { - setScoreRankings(data); - } else { - setError("データの取得中にエラーが発生しました。"); - } - } catch (err) { - console.log("APIリクエストエラー:", err); - setError("データの取得中に予期せぬエラーが発生しました。"); - } finally { + }, + }); + if (data) { + setScoreRankings(data); + } else { + setError("データの取得中にエラーが発生しました。"); } - }; + } catch (err) { + setError("データの取得中に予期せぬエラーが発生しました。"); + } + }; + useEffect(() => { fetchData(); }, [sortBy, rankingStartFrom]); @@ -55,7 +49,7 @@ const RankingTabs = () => { const handlePaginationClick = (direction: "next" | "prev") => { const newStartFrom = direction === "prev" - ? Math.max(rankingStartFrom - LIMIT, 0) + ? Math.max(rankingStartFrom - LIMIT, 1) : Math.min(rankingStartFrom + LIMIT, MAXIMUM - LIMIT); setRankingStartFrom(newStartFrom); }; @@ -69,7 +63,13 @@ const RankingTabs = () => { 正打率 入力文字数 - {}} isDisabled={false} /> + { + setRankingStartFrom(1); + fetchData(); + }} + isDisabled={false} + /> {error && ( From 174e52c9b1de77a5904dd932f8d4c71c0e03f872 Mon Sep 17 00:00:00 2001 From: araaki12345 <74499464+araaki12345@users.noreply.github.com> Date: Fri, 5 Apr 2024 21:23:38 +0900 Subject: [PATCH 056/107] =?UTF-8?q?fix:=20try,catch=E6=96=87=E3=82=92?= =?UTF-8?q?=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/organism/RankingTabs.tsx | 28 ++++++++----------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/typing-app/src/components/organism/RankingTabs.tsx b/typing-app/src/components/organism/RankingTabs.tsx index a55e1d8..edde59e 100644 --- a/typing-app/src/components/organism/RankingTabs.tsx +++ b/typing-app/src/components/organism/RankingTabs.tsx @@ -18,23 +18,19 @@ const RankingTabs = () => { const MAXIMUM = 100; // TODO: MAXIMUMをAPIから取得する const fetchData = async () => { - try { - const { data, error } = await client.GET("/scores/ranking", { - params: { - query: { - sort_by: sortBy, - start: rankingStartFrom, - limit: LIMIT, - }, + const { data, error } = await client.GET("/scores/ranking", { + params: { + query: { + sort_by: sortBy, + start: rankingStartFrom, + limit: LIMIT, }, - }); - if (data) { - setScoreRankings(data); - } else { - setError("データの取得中にエラーが発生しました。"); - } - } catch (err) { - setError("データの取得中に予期せぬエラーが発生しました。"); + }, + }); + if (data) { + setScoreRankings(data); + } else { + setError("データの取得中にエラーが発生しました。"); } }; useEffect(() => { From 2147e685b7dd4974432adb0107925a90dca5293e Mon Sep 17 00:00:00 2001 From: araaki12345 <74499464+araaki12345@users.noreply.github.com> Date: Fri, 5 Apr 2024 21:55:51 +0900 Subject: [PATCH 057/107] =?UTF-8?q?fix:=20API=5FURL=E3=81=ABNEXT=5FPUBLIC?= =?UTF-8?q?=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/.env | 2 +- typing-app/src/libs/api/index.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/typing-app/.env b/typing-app/.env index 15f9205..cc53660 100644 --- a/typing-app/.env +++ b/typing-app/.env @@ -1 +1 @@ -API_URL=http://localhost:8080 \ No newline at end of file +NEXT_PUBLIC_API_URL=http://localhost:8080 \ No newline at end of file diff --git a/typing-app/src/libs/api/index.ts b/typing-app/src/libs/api/index.ts index 1ff62cd..d4cc0a9 100644 --- a/typing-app/src/libs/api/index.ts +++ b/typing-app/src/libs/api/index.ts @@ -1,4 +1,4 @@ import createClient from "openapi-fetch"; import { paths } from "./v1"; -export const client = createClient({ baseUrl: process.env.API_URL }); +export const client = createClient({ baseUrl: process.env.NEXT_PUBLIC_API_URL }); From 5f8bd7697437a8594a1ae1cb4918032c45f06ba2 Mon Sep 17 00:00:00 2001 From: h-takeyeah <61489178+h-takeyeah@users.noreply.github.com> Date: Fri, 5 Apr 2024 21:59:45 +0900 Subject: [PATCH 058/107] style: add new line to env file --- typing-app/.env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/typing-app/.env b/typing-app/.env index cc53660..966485d 100644 --- a/typing-app/.env +++ b/typing-app/.env @@ -1 +1 @@ -NEXT_PUBLIC_API_URL=http://localhost:8080 \ No newline at end of file +NEXT_PUBLIC_API_URL=http://localhost:8080 From 5913be3a2e6a95dc88b53e673080836e4fd5f209 Mon Sep 17 00:00:00 2001 From: KinjiKawaguchi Date: Sat, 6 Apr 2024 05:15:06 +0900 Subject: [PATCH 059/107] =?UTF-8?q?refactor:=20GetScoresRanking=E9=96=A2?= =?UTF-8?q?=E6=95=B0=E3=81=AE=E5=BC=95=E6=95=B0=E3=82=92=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-server/api/handler/score.go | 15 +++++++++------ typing-server/api/repository/score.go | 23 +++++++++++++---------- typing-server/api/service/score.go | 8 ++++---- typing-server/domain/model/model.go | 11 +++++++++++ 4 files changed, 37 insertions(+), 20 deletions(-) diff --git a/typing-server/api/handler/score.go b/typing-server/api/handler/score.go index 6dae89d..543e75c 100644 --- a/typing-server/api/handler/score.go +++ b/typing-server/api/handler/score.go @@ -7,6 +7,7 @@ import ( "github.com/google/uuid" "github.com/su-its/typing/typing-server/api/service" + "github.com/su-its/typing/typing-server/domain/model" ) func GetScoresRanking(w http.ResponseWriter, r *http.Request) { @@ -29,18 +30,20 @@ func GetScoresRanking(w http.ResponseWriter, r *http.Request) { limit = 10 } - rankings, totalCount, err := service.GetScoresRanking(ctx, entClient, sortBy, start, limit) + request := model.GetScoresRankingRequest{ + SortBy: sortBy, + Start: start, + Limit: limit, + } + + response, err := service.GetScoresRanking(ctx, entClient, &request) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } - w.Header().Set("Content-Type", "application/json") - err = json.NewEncoder(w).Encode(map[string]interface{}{ - "rankings": rankings, - "total_count": totalCount, - }) + err = json.NewEncoder(w).Encode(response) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return diff --git a/typing-server/api/repository/score.go b/typing-server/api/repository/score.go index 6050bcb..47ce77d 100644 --- a/typing-server/api/repository/score.go +++ b/typing-server/api/repository/score.go @@ -12,7 +12,7 @@ import ( "github.com/su-its/typing/typing-server/domain/repository/ent/user" ) -func GetScoresRanking(ctx context.Context, client *ent.Client, sortBy string, start, limit int) ([]*model.ScoreRanking, int, error) { +func GetScoresRanking(ctx context.Context, client *ent.Client, request *model.GetScoresRankingRequest) (*model.GetScoresRankingResponse, error) { var scores []*ent.Score // entのクエリを使用してスコアを取得 @@ -24,15 +24,15 @@ func GetScoresRanking(ctx context.Context, client *ent.Client, sortBy string, st score.AccuracyGTE(0.95), ), ). - Order(ent.Desc(sortBy)) + Order(ent.Desc(request.SortBy)) - switch sortBy { + switch request.SortBy { case "accuracy": query = query.Where(score.IsMaxAccuracy(true)) case "keystrokes": query = query.Where(score.IsMaxKeystrokes(true)) default: - return nil, 0, fmt.Errorf("invalid sort by parameter: %s", sortBy) + return nil, fmt.Errorf("invalid sort by parameter: %s", request.SortBy) } //全件数の取得 @@ -40,12 +40,12 @@ func GetScoresRanking(ctx context.Context, client *ent.Client, sortBy string, st // フラグでフィルタリングされたスコアを取得 scores, err := query. - Limit(limit). - Offset(start - 1). + Limit(request.Limit). + Offset(request.Start - 1). All(ctx) if err != nil { - return nil, 0, err + return nil, err } var rankings []*model.ScoreRanking @@ -71,7 +71,7 @@ func GetScoresRanking(ctx context.Context, client *ent.Client, sortBy string, st } var currentScore float64 - switch sortBy { + switch request.SortBy { case "accuracy": currentScore = s.Accuracy case "keystrokes": @@ -79,7 +79,7 @@ func GetScoresRanking(ctx context.Context, client *ent.Client, sortBy string, st } if i == 0 || currentScore != prevScore { - rank = start + i + rank = request.Start + i } prevScore = currentScore @@ -92,7 +92,10 @@ func GetScoresRanking(ctx context.Context, client *ent.Client, sortBy string, st rankings = append(rankings, ranking) } - return rankings, count, nil + return &model.GetScoresRankingResponse{ + Rankings: rankings, + TotalCount: count, + }, nil } func CreateScore(ctx context.Context, client *ent.Client, userID uuid.UUID, keystrokes int, accuracy float64) error { // トランザクションを開始 diff --git a/typing-server/api/service/score.go b/typing-server/api/service/score.go index 2f6e03b..e3a5248 100644 --- a/typing-server/api/service/score.go +++ b/typing-server/api/service/score.go @@ -9,12 +9,12 @@ import ( "github.com/su-its/typing/typing-server/domain/repository/ent" ) -func GetScoresRanking(ctx context.Context, client *ent.Client, sortBy string, start, limit int) ([]*model.ScoreRanking, int, error) { - rankings, totalCount, err := repository.GetScoresRanking(ctx, client, sortBy, start, limit) +func GetScoresRanking(ctx context.Context, client *ent.Client, request *model.GetScoresRankingRequest) (*model.GetScoresRankingResponse, error) { + response, err := repository.GetScoresRanking(ctx, client, request) if err != nil { - return nil, 0, err + return nil, err } - return rankings, totalCount, nil + return response, nil } func CreateScore(ctx context.Context, client *ent.Client, userID uuid.UUID, keystrokes int, accuracy float64) error { diff --git a/typing-server/domain/model/model.go b/typing-server/domain/model/model.go index 0239d0f..6582e32 100644 --- a/typing-server/domain/model/model.go +++ b/typing-server/domain/model/model.go @@ -23,3 +23,14 @@ type Score struct { CreatedAt time.Time `json:"created_at"` User User `json:"user"` } + +type GetScoresRankingRequest struct { + SortBy string `json:"sort_by"` + Start int `json:"start"` + Limit int `json:"limit"` +} + +type GetScoresRankingResponse struct { + Rankings []*ScoreRanking `json:"rankings"` + TotalCount int `json:"total_count"` +} From eece7ae4bc01fcffb5ccb8db00b682e040005010 Mon Sep 17 00:00:00 2001 From: KinjiKawaguchi Date: Sat, 6 Apr 2024 05:45:56 +0900 Subject: [PATCH 060/107] style: prettier --- typing-app/src/components/templates/GameResult.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/typing-app/src/components/templates/GameResult.tsx b/typing-app/src/components/templates/GameResult.tsx index 3357dce..bb74789 100644 --- a/typing-app/src/components/templates/GameResult.tsx +++ b/typing-app/src/components/templates/GameResult.tsx @@ -14,7 +14,7 @@ const GameResult: React.FC = ({ nextPage, resultScore }) => { const pushToRoot = () => { router.push("/"); - } + }; return (
From 543109414df7da60e8b040d1eae625777fb5725f Mon Sep 17 00:00:00 2001 From: Sora Arakawa Date: Sat, 6 Apr 2024 10:18:08 +0900 Subject: [PATCH 061/107] =?UTF-8?q?feat:=20Home=E3=81=AE=E3=83=9C=E3=82=BF?= =?UTF-8?q?=E3=83=B3=E3=82=92=E7=94=BB=E5=83=8F=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/src/assets/images/home/game.png | Bin 0 -> 9781 bytes typing-app/src/assets/images/home/logout.png | Bin 0 -> 5987 bytes typing-app/src/assets/images/home/ranking.png | Bin 0 -> 6528 bytes .../src/components/molecules/GameStartButton.tsx | 8 +++----- .../src/components/molecules/LogoutButton.tsx | 8 +++----- .../src/components/molecules/RankingButton.tsx | 9 +++------ .../components/organism/HomeMenuContainer.tsx | 4 ++-- 7 files changed, 11 insertions(+), 18 deletions(-) create mode 100644 typing-app/src/assets/images/home/game.png create mode 100644 typing-app/src/assets/images/home/logout.png create mode 100644 typing-app/src/assets/images/home/ranking.png diff --git a/typing-app/src/assets/images/home/game.png b/typing-app/src/assets/images/home/game.png new file mode 100644 index 0000000000000000000000000000000000000000..ebef756b7e600da39e9842c41f1a49d4fdd78f21 GIT binary patch literal 9781 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ð^3^${ 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 G@V@|gX$K_$ literal 0 HcmV?d00001 diff --git a/typing-app/src/assets/images/home/logout.png b/typing-app/src/assets/images/home/logout.png new file mode 100644 index 0000000000000000000000000000000000000000..0392dc7ad8e80c6d67194ae263fb806f972f9bc8 GIT binary patch literal 5987 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 literal 0 HcmV?d00001 diff --git a/typing-app/src/assets/images/home/ranking.png b/typing-app/src/assets/images/home/ranking.png new file mode 100644 index 0000000000000000000000000000000000000000..be510bd6e86e126cb6447c4a488fae9384797e6b GIT binary patch literal 6528 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 { const { isOpen, onOpen, onClose } = useDisclosure(); return ( <> - - + ); diff --git a/typing-app/src/components/molecules/LogoutButton.tsx b/typing-app/src/components/molecules/LogoutButton.tsx index 730b9da..5071d5a 100644 --- a/typing-app/src/components/molecules/LogoutButton.tsx +++ b/typing-app/src/components/molecules/LogoutButton.tsx @@ -2,9 +2,10 @@ import React from "react"; import { useRouter } from "next/navigation"; -import { Button, useDisclosure } from "@chakra-ui/react"; +import { Image, useDisclosure } from "@chakra-ui/react"; import LogoutModal from "./LogoutModal"; import { logout } from "@/app/actions"; +import logoutButton from "@/assets/images/home/logout.png"; const LogoutButton: React.FC = () => { const { isOpen, onOpen, onClose } = useDisclosure(); @@ -23,10 +24,7 @@ const LogoutButton: React.FC = () => { return ( <> - - + ); diff --git a/typing-app/src/components/molecules/RankingButton.tsx b/typing-app/src/components/molecules/RankingButton.tsx index 7345d14..0227cc9 100644 --- a/typing-app/src/components/molecules/RankingButton.tsx +++ b/typing-app/src/components/molecules/RankingButton.tsx @@ -1,7 +1,8 @@ "use client"; import { useRouter } from "next/navigation"; -import { Button } from "@chakra-ui/react"; +import { Image } from "@chakra-ui/react"; +import rankingButton from "@/assets/images/home/ranking.png"; const RankingButton = () => { const router = useRouter(); @@ -11,11 +12,7 @@ const RankingButton = () => { router.push("/ranking"); }; - return ( - - ); + return ; }; export default RankingButton; diff --git a/typing-app/src/components/organism/HomeMenuContainer.tsx b/typing-app/src/components/organism/HomeMenuContainer.tsx index 1b044fe..dfc09db 100644 --- a/typing-app/src/components/organism/HomeMenuContainer.tsx +++ b/typing-app/src/components/organism/HomeMenuContainer.tsx @@ -5,8 +5,8 @@ import LogoutButton from "../molecules/LogoutButton"; const HomeMenuContainer = () => { return ( - - + + {/* TODO: ログイン状況に応じて表示を切り替え */} From 267113826aee424d03f925502f785f68d4d43d75 Mon Sep 17 00:00:00 2001 From: Sora Arakawa Date: Sat, 6 Apr 2024 11:28:01 +0900 Subject: [PATCH 062/107] =?UTF-8?q?add:=20=E8=83=8C=E6=99=AF=E7=94=BB?= =?UTF-8?q?=E5=83=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/public/img/background.png | Bin 0 -> 338868 bytes typing-app/src/app/layout.tsx | 2 +- typing-app/src/components/organism/Header.tsx | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 typing-app/public/img/background.png diff --git a/typing-app/public/img/background.png b/typing-app/public/img/background.png new file mode 100644 index 0000000000000000000000000000000000000000..38dbf7b90c04d6989ee251536b0dd318c12e3210 GIT binary patch literal 338868 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

*!e9)e9;y%r?z?6FpB49x|Xzp$l;QR`6N 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

  • h0bCL4SLFN_0ZbnYAsW7I@$?pxeT|Qw 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

    qyb5liM6rPI_!|v` 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 - +

    {children} diff --git a/typing-app/src/components/organism/Header.tsx b/typing-app/src/components/organism/Header.tsx index deecf68..7e6736b 100644 --- a/typing-app/src/components/organism/Header.tsx +++ b/typing-app/src/components/organism/Header.tsx @@ -8,7 +8,7 @@ import Separator from "@/components/atoms/Separater"; const Header: React.FC = () => { return ( <> - + From 30cee83f73b331b42481d1157be2af149812f7fe Mon Sep 17 00:00:00 2001 From: Sora Arakawa Date: Sat, 6 Apr 2024 12:03:40 +0900 Subject: [PATCH 063/107] =?UTF-8?q?style:=20RankingTabs=E3=81=AE=E4=B8=8A?= =?UTF-8?q?=E9=83=A8=E3=81=AB=E3=83=9E=E3=83=BC=E3=82=B8=E3=83=B3=E3=82=92?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/src/components/organism/RankingTabs.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/typing-app/src/components/organism/RankingTabs.tsx b/typing-app/src/components/organism/RankingTabs.tsx index b5aaea8..9fe2ecf 100644 --- a/typing-app/src/components/organism/RankingTabs.tsx +++ b/typing-app/src/components/organism/RankingTabs.tsx @@ -49,7 +49,7 @@ const RankingTabs = () => { }; return ( - + {/* 幅を揃えるためだけの要素,視覚的な意味はなし */} From cbfb81694a967792b07914c198a6f1cbe2a50f33 Mon Sep 17 00:00:00 2001 From: Tsuyopon-1067 <91947809+Tsuyopon-1067@users.noreply.github.com> Date: Sat, 6 Apr 2024 12:51:31 +0900 Subject: [PATCH 064/107] =?UTF-8?q?docs:=20tex=E9=96=A2=E9=80=A3=E3=81=AE?= =?UTF-8?q?=E8=A1=A8=E7=A4=BA=E3=81=AE=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/docs/game-page-wpm-logarithm.md | 40 +++++++++++----------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/typing-app/docs/game-page-wpm-logarithm.md b/typing-app/docs/game-page-wpm-logarithm.md index 156cc00..689777e 100644 --- a/typing-app/docs/game-page-wpm-logarithm.md +++ b/typing-app/docs/game-page-wpm-logarithm.md @@ -61,7 +61,7 @@ Excel 用計算式 ``` -=(1000 / 3) _LOG10((999 / 1000) _ A1 + 1) +=(1000 / 3) * LOG10((999 / 1000) * A2 + 1) ``` ## その他 @@ -70,29 +70,29 @@ Excel 用計算式 #### 記号定義 -$\log$の底は 10 とする(常用対数). -$w \in [0, 1000]$:WPM の値 -$v\in [0, 1000]$:ProgressBar 上での値 +$\log$ の底は 10 とする(常用対数).
    +$w \in [0, 1000]$ : WPM の値
    +$v\in [0, 1000]$ : ProgressBar 上での値
    $v=f(w)$として -- $v$が$\log w$に比例する +- $v$ が $\log w$ に比例する - $[0, 1000] \rightarrow [0, 1000]$ -の 2 つを満たす$f$を作る. - -$\log 0 : undefined$ なので$f(1000)$を先に考える. -仮に -$g(x) := a\log (x)$ ($a$: 任意定数, ただし$a\neq 0$) -とすると, -$g(1000) = 1000$から -$g(1000)=a\log 1000 = 3a$ -$\therefore a = \frac{1000}{3}$ -つぎに$f(0)$について考える. -ここで, $x:=h(w)$とし,$f(x)=g(h(w))$とすれば, -$h(0) = 1, h(1000)=1000$を満たすとき -$f(0) = 0, f(1000)=1000$を満たす. -$w\in[0,1000]$を線形変換して$x\in[1,1000]$にすることを考えると -$x=h(w)=\frac{999}{1000}x+1$ +の 2 つを満たす $f$ を作る. + +$\log 0 : undefined$ なので $f(1000)$ を先に考える.
    +仮に
    +$g(x) := a\log (x)$ ( $a$ : 任意定数, ただし $a\neq 0$ )
    +とすると,
    +$g(1000) = 1000$ から
    +$g(1000)=a\log 1000 = 3a$
    +$\therefore a = \frac{1000}{3}$
    +つぎに $f(0)$ について考える.
    +ここで, $x:=h(w)$ とし, $f(x)=g(h(w))$ とすれば,
    +$h(0) = 1, h(1000)=1000$ を満たすとき +$f(0) = 0, f(1000)=1000$ を満たす.
    +$w\in[0,1000]$ を線形変換して $x\in[1,1000]$ にすることを考えると
    +$x=h(w)=\frac{999}{1000}x+1$
    $\therefore f(w) = \frac{1000}{3}\log (\frac{999}{1000}x+1)$ ### 採用しなかった対処 From 9ca684a091b7dfcee24c76c06cfc31b20db4a9d2 Mon Sep 17 00:00:00 2001 From: Tsuyopon-1067 <91947809+Tsuyopon-1067@users.noreply.github.com> Date: Sat, 6 Apr 2024 12:54:31 +0900 Subject: [PATCH 065/107] =?UTF-8?q?docs:=20=E8=AA=A4=E5=AD=97=E3=81=AE?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/docs/game-page-wpm-logarithm.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/typing-app/docs/game-page-wpm-logarithm.md b/typing-app/docs/game-page-wpm-logarithm.md index 689777e..c810df0 100644 --- a/typing-app/docs/game-page-wpm-logarithm.md +++ b/typing-app/docs/game-page-wpm-logarithm.md @@ -89,11 +89,11 @@ $g(1000)=a\log 1000 = 3a$
    $\therefore a = \frac{1000}{3}$
    つぎに $f(0)$ について考える.
    ここで, $x:=h(w)$ とし, $f(x)=g(h(w))$ とすれば,
    -$h(0) = 1, h(1000)=1000$ を満たすとき +$h(0) = 1, h(1000)=1000$ を満たすとき
    $f(0) = 0, f(1000)=1000$ を満たす.
    $w\in[0,1000]$ を線形変換して $x\in[1,1000]$ にすることを考えると
    -$x=h(w)=\frac{999}{1000}x+1$
    -$\therefore f(w) = \frac{1000}{3}\log (\frac{999}{1000}x+1)$ +$x=h(w)=\frac{999}{1000}w+1$
    +$\therefore f(w) = \frac{1000}{3}\log (\frac{999}{1000}w+1)$ ### 採用しなかった対処 From c957781007168598a8104bd630f79a39e5eb5f42 Mon Sep 17 00:00:00 2001 From: Tsuyopon-1067 <91947809+Tsuyopon-1067@users.noreply.github.com> Date: Sat, 6 Apr 2024 12:56:45 +0900 Subject: [PATCH 066/107] =?UTF-8?q?docs:=20=E3=82=B2=E3=83=BC=E3=82=B8?= =?UTF-8?q?=E5=B9=85=E3=81=AE=E8=A1=A8=E3=82=92=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/docs/game-page-wpm-logarithm.md | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/typing-app/docs/game-page-wpm-logarithm.md b/typing-app/docs/game-page-wpm-logarithm.md index c810df0..e899272 100644 --- a/typing-app/docs/game-page-wpm-logarithm.md +++ b/typing-app/docs/game-page-wpm-logarithm.md @@ -37,26 +37,25 @@ | WPM | ゲージ上での値 | | ---- | ---- | | 0 | 0 | +| 10 | 347 | +| 20 | 440.6 | +| 30 | 497 | +| 40 | 537.5 | | 50 | 569 | +| 60 | 595 | +| 70 | 616.9 | +| 80 | 636 | +| 90 | 652.9 | | 100 | 668 | -| 150 | 726.2 | | 200 | 767.6 | -| 250 | 799.7 | | 300 | 826 | -| 350 | 848.3 | | 400 | 867.6 | -| 450 | 884.6 | | 500 | 899.8 | -| 550 | 913.6 | | 600 | 926.1 | -| 650 | 937.7 | | 700 | 948.4 | -| 750 | 958.4 | | 800 | 967.7 | -| 850 | 976.5 | | 900 | 984.8 | -| 950 | 992.6 | -| 1000 | 1000 | +|1000 | 1000 | Excel 用計算式 From 694077e63104eb45cbbe9ed6cf39279244575201 Mon Sep 17 00:00:00 2001 From: KinjiKawaguchi Date: Sat, 6 Apr 2024 17:11:15 +0900 Subject: [PATCH 067/107] fix: Fix MySQL driver import and update server shutdown logic --- typing-server/api/cmd/main.go | 38 ++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/typing-server/api/cmd/main.go b/typing-server/api/cmd/main.go index 5826503..d9949b1 100644 --- a/typing-server/api/cmd/main.go +++ b/typing-server/api/cmd/main.go @@ -13,11 +13,11 @@ import ( "syscall" "time" - "github.com/go-sql-driver/mysql" "github.com/su-its/typing/typing-server/api/handler" "github.com/su-its/typing/typing-server/api/router" "github.com/su-its/typing/typing-server/domain/repository/ent" "github.com/su-its/typing/typing-server/domain/repository/ent/user" + "gorm.io/driver/mysql" ) func main() { @@ -76,18 +76,21 @@ func main() { } else { logger.Info("シードデータは挿入されませんでした") } - // WaitGroupの宣言 var wg sync.WaitGroup + // エラーを通知するためのチャネル errChan := make(chan error, 1) + // シグナルハンドリングの準備 sigChan := make(chan os.Signal, 1) signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM) + // HTTPサーバーの非同期起動 wg.Add(1) go func() { defer wg.Done() // 関数終了時にWaitGroupをデクリメント + // サーバーの設定 // ルーティングの設定 r := router.SetupRouter() @@ -97,29 +100,32 @@ func main() { Addr: ":8080", Handler: r, } + // 非同期でサーバーを開始 go func() { logger.Info("server is running at Addr :8080") - if err := server.ListenAndServe(); err != http.ErrServerClosed { + if err := server.ListenAndServe(); err != nil && err != http.ErrServerClosed { logger.Error("failed to listen and serve: %v", err) errChan <- err // エラーをチャネルに送信 } }() - // シグナルを待機 - <-sigChan - logger.Info("shutting down the server...") - ctx := context.TODO() // Use context.TODO() as a temporary placeholder - if err := server.Shutdown(ctx); err != nil { - logger.Error("error during server shutdown: %v", err) - errChan <- err // エラーをチャネルに送信 + + // エラーまたはシグナルを待機 + select { + case err := <-errChan: + logger.Error("server stopped due to an error: %v", err) + case sig := <-sigChan: + logger.Info("received signal: %v", sig) + // グレースフルシャットダウン + ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) + defer cancel() + if err := server.Shutdown(ctx); err != nil { + logger.Error("error during server shutdown: %v", err) + errChan <- err // エラーをチャネルに送信 + } } }() - select { - case <-errChan: // エラーが発生した場合 - logger.Error("server stopped due to an error") - case sig := <-sigChan: // シグナルを受信した場合 - logger.Info("received signal: %s", sig) - } + wg.Wait() // HTTPサーバーの終了を待機 close(errChan) logger.Info("server exited") From d3746852b893f76e42a9f27ab8e6231c03886bf1 Mon Sep 17 00:00:00 2001 From: araaki12345 <74499464+araaki12345@users.noreply.github.com> Date: Sat, 6 Apr 2024 17:16:29 +0900 Subject: [PATCH 068/107] =?UTF-8?q?feat:=20API=E3=81=8B=E3=82=89=E5=8F=96?= =?UTF-8?q?=E5=BE=97=E3=81=97=E3=81=9F=E3=83=A9=E3=83=B3=E3=82=AD=E3=83=B3?= =?UTF-8?q?=E3=82=B0=E3=81=AE=E6=9C=80=E5=A4=A7=E6=95=B0=E3=82=92=E3=82=82?= =?UTF-8?q?=E3=81=A8=E3=81=AB=E3=80=81=E3=83=9A=E3=83=BC=E3=82=B8=E3=83=8D?= =?UTF-8?q?=E3=83=BC=E3=82=B7=E3=83=A7=E3=83=B3=E3=81=AE=E5=8B=95=E4=BD=9C?= =?UTF-8?q?=E3=82=92=E5=88=B6=E5=BE=A1=E3=81=99=E3=82=8B=E6=A9=9F=E8=83=BD?= =?UTF-8?q?=E3=82=92=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/src/components/organism/RankingTabs.tsx | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/typing-app/src/components/organism/RankingTabs.tsx b/typing-app/src/components/organism/RankingTabs.tsx index edde59e..c02e63e 100644 --- a/typing-app/src/components/organism/RankingTabs.tsx +++ b/typing-app/src/components/organism/RankingTabs.tsx @@ -13,12 +13,13 @@ const RankingTabs = () => { const [rankingStartFrom, setRankingStartFrom] = useState(1); const [sortBy, setSortBy] = useState<"accuracy" | "keystrokes">("accuracy"); const [error, setError] = useState(undefined); + const [totalRankingCount, setTotalRankingCount] = useState(0); const LIMIT = 10; - const MAXIMUM = 100; // TODO: MAXIMUMをAPIから取得する + const MAXIMUM = totalRankingCount; const fetchData = async () => { - const { data, error } = await client.GET("/scores/ranking", { + const { data } = await client.GET("/scores/ranking", { params: { query: { sort_by: sortBy, @@ -28,7 +29,8 @@ const RankingTabs = () => { }, }); if (data) { - setScoreRankings(data); + setScoreRankings(data.rankings); + setTotalRankingCount(data.total_count); } else { setError("データの取得中にエラーが発生しました。"); } @@ -40,6 +42,7 @@ const RankingTabs = () => { const handleTabChange = (index: number) => { const sortOption = index === 0 ? "accuracy" : "keystrokes"; setSortBy(sortOption); + setRankingStartFrom(1); }; const handlePaginationClick = (direction: "next" | "prev") => { From 17e2eec8ebe798c0e1c44df680b3e66777bff471 Mon Sep 17 00:00:00 2001 From: KinjiKawaguchi Date: Sat, 6 Apr 2024 17:21:50 +0900 Subject: [PATCH 069/107] =?UTF-8?q?fix:=20MySQL=E3=83=89=E3=83=A9=E3=82=A4?= =?UTF-8?q?=E3=83=90=E3=81=AE=E3=82=A4=E3=83=B3=E3=83=9D=E3=83=BC=E3=83=88?= =?UTF-8?q?=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-server/api/cmd/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/typing-server/api/cmd/main.go b/typing-server/api/cmd/main.go index d9949b1..eba4b0f 100644 --- a/typing-server/api/cmd/main.go +++ b/typing-server/api/cmd/main.go @@ -13,11 +13,11 @@ import ( "syscall" "time" + "github.com/go-sql-driver/mysql" "github.com/su-its/typing/typing-server/api/handler" "github.com/su-its/typing/typing-server/api/router" "github.com/su-its/typing/typing-server/domain/repository/ent" "github.com/su-its/typing/typing-server/domain/repository/ent/user" - "gorm.io/driver/mysql" ) func main() { From 2046f219e980126d3649c197d97f878f10169d58 Mon Sep 17 00:00:00 2001 From: araaki12345 <74499464+araaki12345@users.noreply.github.com> Date: Sat, 6 Apr 2024 18:18:57 +0900 Subject: [PATCH 070/107] =?UTF-8?q?fix:=20accuracy=E3=81=AE=E8=A1=A8?= =?UTF-8?q?=E7=A4=BA=E3=82=92=E5=B0=8F=E6=95=B0=E7=AC=AC2=E4=BD=8D?= =?UTF-8?q?=E3=81=BE=E3=81=A7=E3=81=AE=E3=83=91=E3=83=BC=E3=82=BB=E3=83=B3?= =?UTF-8?q?=E3=83=86=E3=83=BC=E3=82=B8=E5=BD=A2=E5=BC=8F=E3=81=AB=E5=A4=89?= =?UTF-8?q?=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/src/components/molecules/RankingTableRow.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/typing-app/src/components/molecules/RankingTableRow.tsx b/typing-app/src/components/molecules/RankingTableRow.tsx index 222573a..8c1648a 100644 --- a/typing-app/src/components/molecules/RankingTableRow.tsx +++ b/typing-app/src/components/molecules/RankingTableRow.tsx @@ -2,6 +2,10 @@ import { Td, Tr } from "@chakra-ui/react"; import { components } from "@/libs/api/v1"; const RankingTableRow: React.FC = (scoreRanking) => { + const accuracy = scoreRanking.score?.accuracy ?? 0; + const formattedAccuracy = new Intl.NumberFormat("en-US", { style: "percent", maximumFractionDigits: 2 }).format( + accuracy + ); return ( = (scoreR {String(scoreRanking.score?.keystrokes)} - {String(scoreRanking.score?.accuracy)} + {formattedAccuracy} {scoreRanking.score?.created_at} From 0d2323c7d58394fb9b4803fae2e5f7a978648ec2 Mon Sep 17 00:00:00 2001 From: araaki12345 <74499464+araaki12345@users.noreply.github.com> Date: Sat, 6 Apr 2024 18:45:51 +0900 Subject: [PATCH 071/107] =?UTF-8?q?feat:=20created=5Fat=E3=81=AE=E8=A1=A8?= =?UTF-8?q?=E7=A4=BA=E5=BD=A2=E5=BC=8F=E3=82=92YYYY-MM-DD=E3=81=AB?= =?UTF-8?q?=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/src/components/molecules/RankingTableRow.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/typing-app/src/components/molecules/RankingTableRow.tsx b/typing-app/src/components/molecules/RankingTableRow.tsx index 8c1648a..da1cf2a 100644 --- a/typing-app/src/components/molecules/RankingTableRow.tsx +++ b/typing-app/src/components/molecules/RankingTableRow.tsx @@ -6,6 +6,9 @@ const RankingTableRow: React.FC = (scoreR const formattedAccuracy = new Intl.NumberFormat("en-US", { style: "percent", maximumFractionDigits: 2 }).format( accuracy ); + const formattedCreatedAt = scoreRanking.score?.created_at + ? new Date(scoreRanking.score.created_at).toISOString().split("T")[0] + : ""; return ( = (scoreR {formattedAccuracy} - {scoreRanking.score?.created_at} + {formattedCreatedAt} ); From b148d69133117edb6be27e5adf516809e5336351 Mon Sep 17 00:00:00 2001 From: KikyoNanakusa Date: Sat, 6 Apr 2024 22:47:12 +0900 Subject: [PATCH 072/107] =?UTF-8?q?feat:=20=E7=B5=90=E6=9E=9C=E3=82=92API?= =?UTF-8?q?=E3=81=AB=E3=83=9D=E3=82=B9=E3=83=88=E3=81=99=E3=82=8B=E3=82=88?= =?UTF-8?q?=E3=81=86=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: KinjiKawaguchi --- typing-app/.env | 2 +- .../src/components/templates/GameTyping.tsx | 36 +++++++++---------- typing-app/src/libs/api/index.ts | 2 +- 3 files changed, 18 insertions(+), 22 deletions(-) diff --git a/typing-app/.env b/typing-app/.env index 15f9205..cc53660 100644 --- a/typing-app/.env +++ b/typing-app/.env @@ -1 +1 @@ -API_URL=http://localhost:8080 \ No newline at end of file +NEXT_PUBLIC_API_URL=http://localhost:8080 \ No newline at end of file diff --git a/typing-app/src/components/templates/GameTyping.tsx b/typing-app/src/components/templates/GameTyping.tsx index 244bd8b..c3e4944 100644 --- a/typing-app/src/components/templates/GameTyping.tsx +++ b/typing-app/src/components/templates/GameTyping.tsx @@ -1,6 +1,7 @@ import RegisterScore, { ResultScore } from "@/types/RegisterScore"; import { Box } from "@chakra-ui/react"; import Image from "next/image"; +import { client } from "@/libs/api"; import React, { useCallback, useEffect, useRef, useState } from "react"; import ProgressBar from "../atoms/ProgressBar"; import { GameTypingProps } from "../pages/Game"; @@ -13,7 +14,7 @@ import gaugeTimeImg from "../../../public/img/gauge_time.png"; const GameTyping: React.FC = ({ nextPage, subjectText, setResultScore }) => { const [startedAt, setStartedAt] = useState(new Date()); - const totalSeconds = 60; + const totalSeconds = 3; const [count, setCount] = useState(totalSeconds); const damyUserId = "damyId"; @@ -22,7 +23,7 @@ const GameTyping: React.FC = ({ nextPage, subjectText, setResul const [incorrectType, setIncorrectType] = useState(0); // 誤打数 // スコアデータを送信する - const sendResultData = useCallback(() => { + const sendResultData = useCallback(async () => { // サーバに送信されるデータ const endedAt = new Date(); const actualTypeTimeSeconds = (endedAt.valueOf() - startedAt.valueOf()) / 1000; @@ -37,24 +38,19 @@ const GameTyping: React.FC = ({ nextPage, subjectText, setResul endedAt: endedAt, }; - // リザルト画面用のデータ - setResultScore({ - keystrokes: registeredScore.keystrokes, - miss: incorrectType, - time: new Date(typeTimeSeconds * 1000), - wpm: (correctType / typeTimeSeconds) * 60, - accuracy: registeredScore.accuracy, - score: registeredScore.score, - }); - fetch(`http://localhost:8080/users/${userId}/scores`, { - method: `POST`, - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify(registeredScore), - }).catch((error) => { - console.error(error); - }); + + const { data, error } = await client.POST("/scores", { body: { user_id: "ea450409-14de-463a-847e-bd3e8a6313c8", keystrokes: registeredScore.keystrokes, accuracy: registeredScore.accuracy}}); + if(!error){ + // リザルト画面用のデータ + setResultScore({ + keystrokes: registeredScore.keystrokes, + miss: incorrectType, + time: new Date(typeTimeSeconds * 1000), + wpm: (correctType / typeTimeSeconds) * 60, + accuracy: registeredScore.accuracy, + score: registeredScore.score, + }); + } nextPage(); }, [startedAt, totalSeconds, correctType, incorrectType, setResultScore, userId, nextPage]); diff --git a/typing-app/src/libs/api/index.ts b/typing-app/src/libs/api/index.ts index 1ff62cd..d4cc0a9 100644 --- a/typing-app/src/libs/api/index.ts +++ b/typing-app/src/libs/api/index.ts @@ -1,4 +1,4 @@ import createClient from "openapi-fetch"; import { paths } from "./v1"; -export const client = createClient({ baseUrl: process.env.API_URL }); +export const client = createClient({ baseUrl: process.env.NEXT_PUBLIC_API_URL }); From f469b086807c3439690156724dc28c2afdb45571 Mon Sep 17 00:00:00 2001 From: KinjiKawaguchi Date: Sun, 7 Apr 2024 00:27:02 +0900 Subject: [PATCH 073/107] =?UTF-8?q?chore:=E8=A6=81=E3=82=89=E3=82=93?= =?UTF-8?q?=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB=E3=82=92=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/src/config/index.ts | 0 typing-app/src/constants/index.ts | 0 typing-app/src/utils/textManager/index.ts | 0 3 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 typing-app/src/config/index.ts delete mode 100644 typing-app/src/constants/index.ts delete mode 100644 typing-app/src/utils/textManager/index.ts diff --git a/typing-app/src/config/index.ts b/typing-app/src/config/index.ts deleted file mode 100644 index e69de29..0000000 diff --git a/typing-app/src/constants/index.ts b/typing-app/src/constants/index.ts deleted file mode 100644 index e69de29..0000000 diff --git a/typing-app/src/utils/textManager/index.ts b/typing-app/src/utils/textManager/index.ts deleted file mode 100644 index e69de29..0000000 From d5c04484b27386fa8b5adc5459856c27f5b2b073 Mon Sep 17 00:00:00 2001 From: KinjiKawaguchi Date: Sun, 7 Apr 2024 00:27:13 +0900 Subject: [PATCH 074/107] =?UTF-8?q?feat:=20toast=E3=82=92=E4=BD=BF?= =?UTF-8?q?=E3=81=86=E3=81=9F=E3=82=81=E3=81=AEutil=E3=82=92=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/src/utils/toast.ts | 48 +++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 typing-app/src/utils/toast.ts diff --git a/typing-app/src/utils/toast.ts b/typing-app/src/utils/toast.ts new file mode 100644 index 0000000..b03e160 --- /dev/null +++ b/typing-app/src/utils/toast.ts @@ -0,0 +1,48 @@ +import { createStandaloneToast } from '@chakra-ui/react'; + +const { toast: toastChakra } = createStandaloneToast(); + +const toast = ({ + status, + title = '', + description = '', +}: { + status: 'success' | 'error' | 'warning' | 'info'; + title?: string; + description?: string; +}) => { + toastChakra({ + title, + description, + status, + duration: 3000, + isClosable: true, + position: 'top', + }); +}; + +export const showSuccessToast = (title: string, description?: string) => { + toast({ + title, + description, + status: 'success', + }); +}; + +export const showWarningToast = (title: string, description?: string) => { + toast({ + title, + description, + status: 'warning', + }); +}; + +export const showErrorToast = (title: string, description?: string) => { + toast({ + title, + description, + status: 'error', + }); +}; + +export default toast; \ No newline at end of file From c867ae3e9168667caa53f4b651af0a0ec9b05900 Mon Sep 17 00:00:00 2001 From: KinjiKawaguchi Date: Sun, 7 Apr 2024 00:30:29 +0900 Subject: [PATCH 075/107] style: prettier --- typing-app/src/utils/toast.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/typing-app/src/utils/toast.ts b/typing-app/src/utils/toast.ts index b03e160..2d8fa36 100644 --- a/typing-app/src/utils/toast.ts +++ b/typing-app/src/utils/toast.ts @@ -1,13 +1,13 @@ -import { createStandaloneToast } from '@chakra-ui/react'; +import { createStandaloneToast } from "@chakra-ui/react"; const { toast: toastChakra } = createStandaloneToast(); const toast = ({ status, - title = '', - description = '', + title = "", + description = "", }: { - status: 'success' | 'error' | 'warning' | 'info'; + status: "success" | "error" | "warning" | "info"; title?: string; description?: string; }) => { @@ -17,7 +17,7 @@ const toast = ({ status, duration: 3000, isClosable: true, - position: 'top', + position: "top", }); }; @@ -25,7 +25,7 @@ export const showSuccessToast = (title: string, description?: string) => { toast({ title, description, - status: 'success', + status: "success", }); }; @@ -33,7 +33,7 @@ export const showWarningToast = (title: string, description?: string) => { toast({ title, description, - status: 'warning', + status: "warning", }); }; @@ -41,8 +41,8 @@ export const showErrorToast = (title: string, description?: string) => { toast({ title, description, - status: 'error', + status: "error", }); }; -export default toast; \ No newline at end of file +export default toast; From a622ed2d8938a2489a3d769eb9acaefd57d6aaad Mon Sep 17 00:00:00 2001 From: KikyoNanakusa Date: Sun, 7 Apr 2024 00:34:17 +0900 Subject: [PATCH 076/107] =?UTF-8?q?feat:=E3=83=AD=E3=82=B0=E3=82=A4?= =?UTF-8?q?=E3=83=B3=E3=81=97=E3=81=A6=E3=81=84=E3=82=8B=E3=83=A6=E3=83=BC?= =?UTF-8?q?=E3=82=B6=E3=83=BC=E3=81=AEid=E3=82=92=E5=8F=96=E5=BE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/templates/GameTyping.tsx | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/typing-app/src/components/templates/GameTyping.tsx b/typing-app/src/components/templates/GameTyping.tsx index c3e4944..41977f7 100644 --- a/typing-app/src/components/templates/GameTyping.tsx +++ b/typing-app/src/components/templates/GameTyping.tsx @@ -10,15 +10,15 @@ import styles from "./GameTyping.module.css"; import gaugePositionImg from "../../../public/img/gauge_position.png"; import gaugeSpeedImg from "../../../public/img/gauge_speed.png"; import gaugeTimeImg from "../../../public/img/gauge_time.png"; +import { User } from "@/types/user"; +import { getCurrentUser } from "@/app/actions"; const GameTyping: React.FC = ({ nextPage, subjectText, setResultScore }) => { const [startedAt, setStartedAt] = useState(new Date()); - const totalSeconds = 3; + const totalSeconds = 60; const [count, setCount] = useState(totalSeconds); - const damyUserId = "damyId"; - const userId = damyUserId; // ToDo: 要変更 const [correctType, setCorrectType] = useState(0); // 正打数 const [incorrectType, setIncorrectType] = useState(0); // 誤打数 @@ -38,8 +38,13 @@ const GameTyping: React.FC = ({ nextPage, subjectText, setResul endedAt: endedAt, }; + const user: User | undefined = await getCurrentUser(); + //TODO:Userが取得できなかった場合のエラーハンドリングを追加 + if (!user) { + return; + } - const { data, error } = await client.POST("/scores", { body: { user_id: "ea450409-14de-463a-847e-bd3e8a6313c8", keystrokes: registeredScore.keystrokes, accuracy: registeredScore.accuracy}}); + const { data, error } = await client.POST("/scores", { body: { user_id: user?.id, keystrokes: registeredScore.keystrokes, accuracy: registeredScore.accuracy}}); if(!error){ // リザルト画面用のデータ setResultScore({ @@ -51,8 +56,9 @@ const GameTyping: React.FC = ({ nextPage, subjectText, setResul score: registeredScore.score, }); } + nextPage(); - }, [startedAt, totalSeconds, correctType, incorrectType, setResultScore, userId, nextPage]); + }, [startedAt, totalSeconds, correctType, incorrectType, setResultScore, nextPage]); const [typeIndex, setTypeIndex] = useState(0); // 残り時間のカウントダウン @@ -68,14 +74,14 @@ const GameTyping: React.FC = ({ nextPage, subjectText, setResul }, updateFrequency); return () => clearInterval(timer); } - }, [count, nextPage, sendResultData, startedAt, userId]); // ビルド時の警告防止のためにuserIdも依存リストに追加 + }, [count, nextPage, sendResultData, startedAt]); // 打ち終わった時にスコアを送信する useEffect(() => { if (typeIndex === subjectText.length - 1) { sendResultData(); } - }, [nextPage, userId, sendResultData, subjectText.length, typeIndex]); // ビルド時の警告防止のためにuserIdも依存リストに追加 + }, [nextPage, sendResultData, subjectText.length, typeIndex]); // ビルド時の警告防止のためにuserIdも依存リストに追加 // タイピング速度計算用 const typingQueueListSize = 5; // ここで瞬間タイピング速度計算の粒度を決める 増やすほど変化が穏やかになる From 7d71c49b06f0b3ecffffa3f4a56fe7f822844738 Mon Sep 17 00:00:00 2001 From: KikyoNanakusa Date: Sun, 7 Apr 2024 00:35:45 +0900 Subject: [PATCH 077/107] =?UTF-8?q?style:prettier=E3=82=92=E9=81=A9?= =?UTF-8?q?=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/src/components/templates/GameTyping.tsx | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/typing-app/src/components/templates/GameTyping.tsx b/typing-app/src/components/templates/GameTyping.tsx index 41977f7..1d99194 100644 --- a/typing-app/src/components/templates/GameTyping.tsx +++ b/typing-app/src/components/templates/GameTyping.tsx @@ -44,8 +44,10 @@ const GameTyping: React.FC = ({ nextPage, subjectText, setResul return; } - const { data, error } = await client.POST("/scores", { body: { user_id: user?.id, keystrokes: registeredScore.keystrokes, accuracy: registeredScore.accuracy}}); - if(!error){ + const { data, error } = await client.POST("/scores", { + body: { user_id: user?.id, keystrokes: registeredScore.keystrokes, accuracy: registeredScore.accuracy }, + }); + if (!error) { // リザルト画面用のデータ setResultScore({ keystrokes: registeredScore.keystrokes, @@ -74,7 +76,7 @@ const GameTyping: React.FC = ({ nextPage, subjectText, setResul }, updateFrequency); return () => clearInterval(timer); } - }, [count, nextPage, sendResultData, startedAt]); + }, [count, nextPage, sendResultData, startedAt]); // 打ち終わった時にスコアを送信する useEffect(() => { From 9d2845b7667a7a8484fbf4d625fa1f9fc3b80a5e Mon Sep 17 00:00:00 2001 From: KikyoNanakusa Date: Sun, 7 Apr 2024 01:05:37 +0900 Subject: [PATCH 078/107] =?UTF-8?q?chore:post=E3=81=99=E3=82=8B=E9=9A=9B?= =?UTF-8?q?=E3=81=AB=E4=BD=BF=E3=81=86user=E3=82=92nullable=E3=81=A7?= =?UTF-8?q?=E7=84=A1=E3=81=8F=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/src/components/templates/GameTyping.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/typing-app/src/components/templates/GameTyping.tsx b/typing-app/src/components/templates/GameTyping.tsx index 1d99194..69494d7 100644 --- a/typing-app/src/components/templates/GameTyping.tsx +++ b/typing-app/src/components/templates/GameTyping.tsx @@ -45,7 +45,7 @@ const GameTyping: React.FC = ({ nextPage, subjectText, setResul } const { data, error } = await client.POST("/scores", { - body: { user_id: user?.id, keystrokes: registeredScore.keystrokes, accuracy: registeredScore.accuracy }, + body: { user_id: user.id, keystrokes: registeredScore.keystrokes, accuracy: registeredScore.accuracy }, }); if (!error) { // リザルト画面用のデータ From a76ac2e0d5afcbc34ec87c961d946b4a369cbb8b Mon Sep 17 00:00:00 2001 From: KikyoNanakusa Date: Sun, 7 Apr 2024 01:08:43 +0900 Subject: [PATCH 079/107] =?UTF-8?q?chore:=E4=B8=8D=E8=A6=81=E3=81=AA?= =?UTF-8?q?=E3=82=B3=E3=83=A1=E3=83=B3=E3=83=88=E3=82=92=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/src/components/templates/GameTyping.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/typing-app/src/components/templates/GameTyping.tsx b/typing-app/src/components/templates/GameTyping.tsx index 69494d7..151c77b 100644 --- a/typing-app/src/components/templates/GameTyping.tsx +++ b/typing-app/src/components/templates/GameTyping.tsx @@ -83,7 +83,7 @@ const GameTyping: React.FC = ({ nextPage, subjectText, setResul if (typeIndex === subjectText.length - 1) { sendResultData(); } - }, [nextPage, sendResultData, subjectText.length, typeIndex]); // ビルド時の警告防止のためにuserIdも依存リストに追加 + }, [nextPage, sendResultData, subjectText.length, typeIndex]); // タイピング速度計算用 const typingQueueListSize = 5; // ここで瞬間タイピング速度計算の粒度を決める 増やすほど変化が穏やかになる From 26337330aeea860a44763dc661160469fa843902 Mon Sep 17 00:00:00 2001 From: KikyoNanakusa Date: Sun, 7 Apr 2024 01:24:02 +0900 Subject: [PATCH 080/107] =?UTF-8?q?feat:UserCard=E3=81=AE=E5=B9=85?= =?UTF-8?q?=E3=82=92=E8=A8=AD=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/src/components/molecules/UserCard.tsx | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/typing-app/src/components/molecules/UserCard.tsx b/typing-app/src/components/molecules/UserCard.tsx index 7d9ecab..a84375f 100644 --- a/typing-app/src/components/molecules/UserCard.tsx +++ b/typing-app/src/components/molecules/UserCard.tsx @@ -1,5 +1,5 @@ import React from "react"; -import { Avatar, Box, Text, HStack, VStack } from "@chakra-ui/react"; +import { Avatar, Box, Text, HStack, VStack, Spacer } from "@chakra-ui/react"; import { getCurrentUser } from "@/app/actions"; import type { User } from "@/types/user"; @@ -9,17 +9,18 @@ interface UserCardPresenterProps { export const UserCardPresenter = ({ user }: UserCardPresenterProps) => { return ( - + - - - 名前: {user ? user.handleName : "ログインしていません"} + + + + 名前: {user ? user.handleName : "ログインしていませんaaaaaaaaa"} - 学籍番号: {user ? user.studentNumber : "未ログイン"} + 学籍番号: {user ? user.studentNumber : "未ログイン"} ); From 2047725d76be6967fc81b75f6675afadb25ee481 Mon Sep 17 00:00:00 2001 From: KikyoNanakusa Date: Sun, 7 Apr 2024 01:38:31 +0900 Subject: [PATCH 081/107] =?UTF-8?q?style:prettier=E3=82=92=E9=81=A9?= =?UTF-8?q?=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/src/components/molecules/UserCard.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/typing-app/src/components/molecules/UserCard.tsx b/typing-app/src/components/molecules/UserCard.tsx index a84375f..f7b5842 100644 --- a/typing-app/src/components/molecules/UserCard.tsx +++ b/typing-app/src/components/molecules/UserCard.tsx @@ -20,7 +20,9 @@ export const UserCardPresenter = ({ user }: UserCardPresenterProps) => { 名前: {user ? user.handleName : "ログインしていませんaaaaaaaaa"} - 学籍番号: {user ? user.studentNumber : "未ログイン"} + + 学籍番号: {user ? user.studentNumber : "未ログイン"} + ); From a5361ccf8e46a5775a998ff03e706220c7e061a4 Mon Sep 17 00:00:00 2001 From: KikyoNanakusa Date: Sun, 7 Apr 2024 01:39:05 +0900 Subject: [PATCH 082/107] =?UTF-8?q?style:prettier=E3=82=92=E9=81=A9?= =?UTF-8?q?=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/src/components/templates/GameTyping.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/typing-app/src/components/templates/GameTyping.tsx b/typing-app/src/components/templates/GameTyping.tsx index 151c77b..143f23d 100644 --- a/typing-app/src/components/templates/GameTyping.tsx +++ b/typing-app/src/components/templates/GameTyping.tsx @@ -83,7 +83,7 @@ const GameTyping: React.FC = ({ nextPage, subjectText, setResul if (typeIndex === subjectText.length - 1) { sendResultData(); } - }, [nextPage, sendResultData, subjectText.length, typeIndex]); + }, [nextPage, sendResultData, subjectText.length, typeIndex]); // タイピング速度計算用 const typingQueueListSize = 5; // ここで瞬間タイピング速度計算の粒度を決める 増やすほど変化が穏やかになる From 8e923d775adf25bd456a80024eed9dc9d4498f60 Mon Sep 17 00:00:00 2001 From: h-takeyeah <61489178+h-takeyeah@users.noreply.github.com> Date: Sun, 7 Apr 2024 14:47:44 +0900 Subject: [PATCH 083/107] =?UTF-8?q?fix:=20text-overflow=20=E3=82=92?= =?UTF-8?q?=E5=8A=B9=E3=81=84=E3=81=A6=E3=81=AA=E3=81=8B=E3=81=A3=E3=81=9F?= =?UTF-8?q?=E3=81=AE=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit flex で text-overflow を効かせるには親要素にも overflow: hidden が 設定されていなければならない --- typing-app/src/components/molecules/UserCard.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/typing-app/src/components/molecules/UserCard.tsx b/typing-app/src/components/molecules/UserCard.tsx index f7b5842..ec282c8 100644 --- a/typing-app/src/components/molecules/UserCard.tsx +++ b/typing-app/src/components/molecules/UserCard.tsx @@ -1,5 +1,5 @@ import React from "react"; -import { Avatar, Box, Text, HStack, VStack, Spacer } from "@chakra-ui/react"; +import { Avatar, Text, HStack, VStack, Spacer } from "@chakra-ui/react"; import { getCurrentUser } from "@/app/actions"; import type { User } from "@/types/user"; @@ -16,9 +16,9 @@ export const UserCardPresenter = ({ user }: UserCardPresenterProps) => { borderRadius="0" /> - + - 名前: {user ? user.handleName : "ログインしていませんaaaaaaaaa"} + 名前: {user ? user.handleName : "ログインしていません"} 学籍番号: {user ? user.studentNumber : "未ログイン"} From 4dcffaac78d6f11ce874bd02fd458332f269d15b Mon Sep 17 00:00:00 2001 From: h-takeyeah <61489178+h-takeyeah@users.noreply.github.com> Date: Sun, 7 Apr 2024 15:02:13 +0900 Subject: [PATCH 084/107] =?UTF-8?q?refactor:=20UserCard=20=E3=81=AE?= =?UTF-8?q?=E5=B9=85=E3=82=92=E5=91=BC=E3=81=B3=E5=87=BA=E3=81=97=E5=81=B4?= =?UTF-8?q?=E3=81=8C=E6=B1=BA=E5=AE=9A=E3=81=A7=E3=81=8D=E3=82=8B=E3=82=88?= =?UTF-8?q?=E3=81=86=E3=81=AB=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/src/components/molecules/UserCard.tsx | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/typing-app/src/components/molecules/UserCard.tsx b/typing-app/src/components/molecules/UserCard.tsx index ec282c8..2622fc4 100644 --- a/typing-app/src/components/molecules/UserCard.tsx +++ b/typing-app/src/components/molecules/UserCard.tsx @@ -1,15 +1,21 @@ import React from "react"; import { Avatar, Text, HStack, VStack, Spacer } from "@chakra-ui/react"; +import type { StackProps } from "@chakra-ui/react"; import { getCurrentUser } from "@/app/actions"; import type { User } from "@/types/user"; -interface UserCardPresenterProps { +interface UserCardPresenterProps extends StackProps { user?: User; } -export const UserCardPresenter = ({ user }: UserCardPresenterProps) => { +export const UserCardPresenter = ({ user, ...rest }: UserCardPresenterProps) => { + const props: StackProps = { + width: rest?.width ?? "18%", + ...rest, + }; + return ( - + { ); }; -const UserCard = async () => { +const UserCard = async (props?: StackProps) => { const user = await getCurrentUser(); - return ; + return ; }; export default UserCard; From 7cf79ef51a3ad7492c22671eb0ce7e6ebfe2c4aa Mon Sep 17 00:00:00 2001 From: h-takeyeah <61489178+h-takeyeah@users.noreply.github.com> Date: Sun, 7 Apr 2024 15:10:23 +0900 Subject: [PATCH 085/107] =?UTF-8?q?feat:=20UserCard=20=E3=81=AE=E5=B9=85?= =?UTF-8?q?=E3=82=92=20300px=20=E3=81=AB=E5=9B=BA=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/src/components/organism/Header.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/typing-app/src/components/organism/Header.tsx b/typing-app/src/components/organism/Header.tsx index deecf68..e97f03b 100644 --- a/typing-app/src/components/organism/Header.tsx +++ b/typing-app/src/components/organism/Header.tsx @@ -10,7 +10,7 @@ const Header: React.FC = () => { <> - + From 1c1179968b7d9f1e63927043219605cdf1cec960 Mon Sep 17 00:00:00 2001 From: KinjiKawaguchi Date: Sun, 7 Apr 2024 16:11:16 +0900 Subject: [PATCH 086/107] =?UTF-8?q?chore:=20=E8=A6=81=E3=82=89=E3=81=AA?= =?UTF-8?q?=E3=81=84=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/src/utils/api/healthcheck.ts | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 typing-app/src/utils/api/healthcheck.ts diff --git a/typing-app/src/utils/api/healthcheck.ts b/typing-app/src/utils/api/healthcheck.ts deleted file mode 100644 index e69de29..0000000 From 1a573ce3193d97cdc20be37de718b57ab0c4f5ef Mon Sep 17 00:00:00 2001 From: KinjiKawaguchi Date: Sun, 7 Apr 2024 16:11:43 +0900 Subject: [PATCH 087/107] =?UTF-8?q?feat:=20=E3=82=A8=E3=83=A9=E3=83=BCtoas?= =?UTF-8?q?t=E3=81=AE=E8=BF=BD=E5=8A=A0=E3=81=A8=E3=80=81TODO=E3=82=B3?= =?UTF-8?q?=E3=83=A1=E3=83=B3=E3=83=88=E3=81=AE=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/src/app/actions.ts | 7 ++-- .../src/components/molecules/LoginModal.tsx | 2 +- .../src/components/organism/RankingTabs.tsx | 15 +++----- .../src/components/templates/GameResult.tsx | 1 + .../src/components/templates/GameTyping.tsx | 36 ++++++++++++------- 5 files changed, 34 insertions(+), 27 deletions(-) diff --git a/typing-app/src/app/actions.ts b/typing-app/src/app/actions.ts index db2f9b1..424841b 100644 --- a/typing-app/src/app/actions.ts +++ b/typing-app/src/app/actions.ts @@ -3,6 +3,7 @@ import { client } from "@/libs/api"; import { redirect } from "next/navigation"; import { cookies } from "next/headers"; import { User } from "@/types/user"; +import { showWarningToast } from "@/utils/toast"; type LoginActionState = { error?: string; @@ -21,9 +22,11 @@ export async function login(_: LoginActionState, formData: FormData): Promise = ({ isOpen, onClose, state title="学籍番号" role="textbox" /> - {state.error ? `エラー: ${state.error}` : null} + {state.error ? `エラー: ${state.error}` : null} // TODO: ここ変更 diff --git a/typing-app/src/components/organism/RankingTabs.tsx b/typing-app/src/components/organism/RankingTabs.tsx index c02e63e..6585f7e 100644 --- a/typing-app/src/components/organism/RankingTabs.tsx +++ b/typing-app/src/components/organism/RankingTabs.tsx @@ -7,19 +7,19 @@ import RefreshButton from "../atoms/RefreshButton"; import { useEffect, useState } from "react"; import { client } from "@/libs/api"; import { components } from "@/libs/api/v1"; +import { showErrorToast } from "@/utils/toast"; const RankingTabs = () => { const [scoreRankings, setScoreRankings] = useState([]); const [rankingStartFrom, setRankingStartFrom] = useState(1); const [sortBy, setSortBy] = useState<"accuracy" | "keystrokes">("accuracy"); - const [error, setError] = useState(undefined); const [totalRankingCount, setTotalRankingCount] = useState(0); - const LIMIT = 10; + const LIMIT = 10; //TODO: Configファイルから取得 const MAXIMUM = totalRankingCount; const fetchData = async () => { - const { data } = await client.GET("/scores/ranking", { + const { data, error } = await client.GET("/scores/ranking", { params: { query: { sort_by: sortBy, @@ -32,7 +32,7 @@ const RankingTabs = () => { setScoreRankings(data.rankings); setTotalRankingCount(data.total_count); } else { - setError("データの取得中にエラーが発生しました。"); + showErrorToast(error); } }; useEffect(() => { @@ -71,12 +71,6 @@ const RankingTabs = () => { />
    - {error && ( -
    - Error: {error} -
    - )} - ( @@ -85,7 +79,6 @@ const RankingTabs = () => { - )
    handlePaginationClick("prev")} diff --git a/typing-app/src/components/templates/GameResult.tsx b/typing-app/src/components/templates/GameResult.tsx index a140f57..4703fbb 100644 --- a/typing-app/src/components/templates/GameResult.tsx +++ b/typing-app/src/components/templates/GameResult.tsx @@ -32,6 +32,7 @@ const GameResult: React.FC = ({ nextPage, resultScore }) => { Result + { /* TODO: スコアいらない */} スコア diff --git a/typing-app/src/components/templates/GameTyping.tsx b/typing-app/src/components/templates/GameTyping.tsx index 143f23d..37d1c14 100644 --- a/typing-app/src/components/templates/GameTyping.tsx +++ b/typing-app/src/components/templates/GameTyping.tsx @@ -12,11 +12,15 @@ import gaugeSpeedImg from "../../../public/img/gauge_speed.png"; import gaugeTimeImg from "../../../public/img/gauge_time.png"; import { User } from "@/types/user"; import { getCurrentUser } from "@/app/actions"; +import { showErrorToast } from "@/utils/toast"; +import { useRouter } from "next/navigation"; const GameTyping: React.FC = ({ nextPage, subjectText, setResultScore }) => { + const router = useRouter(); + const [startedAt, setStartedAt] = useState(new Date()); - const totalSeconds = 60; + const totalSeconds = 60;// TODO: Configファイルから取得 const [count, setCount] = useState(totalSeconds); const [correctType, setCorrectType] = useState(0); // 正打数 @@ -26,14 +30,14 @@ const GameTyping: React.FC = ({ nextPage, subjectText, setResul const sendResultData = useCallback(async () => { // サーバに送信されるデータ const endedAt = new Date(); - const actualTypeTimeSeconds = (endedAt.valueOf() - startedAt.valueOf()) / 1000; + const actualTypeTimeSeconds = (endedAt.valueOf() - startedAt.valueOf()) / 1000; //TODO: マジックナンバー確認 const typeTimeSeconds = actualTypeTimeSeconds > totalSeconds ? totalSeconds : actualTypeTimeSeconds; const totalType = correctType + incorrectType; const accuracy = totalType === 0 ? 0 : (correctType / totalType) * 100; // [%] const registeredScore: RegisterScore = { keystrokes: correctType, accuracy: accuracy, - score: (correctType / typeTimeSeconds) * 60, + score: (correctType / typeTimeSeconds) * 60, // TODO: マジックナンバー確認 startedAt: startedAt, endedAt: endedAt, }; @@ -41,30 +45,34 @@ const GameTyping: React.FC = ({ nextPage, subjectText, setResul const user: User | undefined = await getCurrentUser(); //TODO:Userが取得できなかった場合のエラーハンドリングを追加 if (!user) { - return; + showErrorToast("ユーザー情報が取得できませんでした"); + router.push("/") + return } - const { data, error } = await client.POST("/scores", { + const { error } = await client.POST("/scores", { body: { user_id: user.id, keystrokes: registeredScore.keystrokes, accuracy: registeredScore.accuracy }, }); - if (!error) { + if (error) { + showErrorToast("スコアの登録に失敗しました"); + return; + } else{ // リザルト画面用のデータ setResultScore({ keystrokes: registeredScore.keystrokes, miss: incorrectType, - time: new Date(typeTimeSeconds * 1000), - wpm: (correctType / typeTimeSeconds) * 60, + time: new Date(typeTimeSeconds * 1000),// TODO: マジックナンバー確認 + wpm: (correctType / typeTimeSeconds) * 60, // TODO: マジックナンバー確認 accuracy: registeredScore.accuracy, score: registeredScore.score, }); } - nextPage(); }, [startedAt, totalSeconds, correctType, incorrectType, setResultScore, nextPage]); const [typeIndex, setTypeIndex] = useState(0); // 残り時間のカウントダウン - const updateFrequency = 100; // 100msごとにカウントダウン + const updateFrequency = 100; // TODO: 1000msに変更、これもConfigファイル可rあ取得 useEffect(() => { if (count <= 0) { sendResultData(); @@ -113,17 +121,17 @@ const GameTyping: React.FC = ({ nextPage, subjectText, setResul return 0; } const typeTime = getTypingQueueListIndex(typingQueueList.length - 1) - getTypingQueueListIndex(0); - const currentWpm = (typingQueueList.length / typeTime) * 60000; + const currentWpm = (typingQueueList.length / typeTime) * 60000; // TODO:マジックナンバー確認 return toLogarithmWpm(currentWpm); }; const calcAverageTypingSpeed = (): number => { const timeFromStart = new Date().valueOf() - startedAt.valueOf(); - const averageTypingSpeed = (correctType / timeFromStart) * 60000; + const averageTypingSpeed = (correctType / timeFromStart) * 60000; // TODO: マジックナンバー確認 return toLogarithmWpm(averageTypingSpeed); }; - const toLogarithmWpm = (wpm: number) => { + const toLogarithmWpm = (wpm: number) => { // TODO: マジックナンバー確認 const wpmForProgressBar = (1000 / 3) * Math.log10((999 / 1000) * wpm + 1); if (wpmForProgressBar > 1000) { return 1000; @@ -159,6 +167,7 @@ const GameTyping: React.FC = ({ nextPage, subjectText, setResul return (
    + { /* TODO: Article Nameって消すんじゃなかったっけ */}
    Article Name
    Time Remain
    Progress
    @@ -183,6 +192,7 @@ const GameTyping: React.FC = ({ nextPage, subjectText, setResul height={24} /> {""} + { /* TODO: Lpre, Ipusumって消すんじゃなかったっけ */}
    Lorem Ipsum
    From e038065bbf4d003c049b7983f5e3caed8d0b523d Mon Sep 17 00:00:00 2001 From: KinjiKawaguchi Date: Sun, 7 Apr 2024 16:13:42 +0900 Subject: [PATCH 088/107] style: prettier --- .../src/components/templates/GameResult.tsx | 2 +- .../src/components/templates/GameTyping.tsx | 17 +++++++++-------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/typing-app/src/components/templates/GameResult.tsx b/typing-app/src/components/templates/GameResult.tsx index 4703fbb..395eaca 100644 --- a/typing-app/src/components/templates/GameResult.tsx +++ b/typing-app/src/components/templates/GameResult.tsx @@ -32,7 +32,7 @@ const GameResult: React.FC = ({ nextPage, resultScore }) => { Result - { /* TODO: スコアいらない */} + {/* TODO: スコアいらない */} スコア diff --git a/typing-app/src/components/templates/GameTyping.tsx b/typing-app/src/components/templates/GameTyping.tsx index 37d1c14..e454ea9 100644 --- a/typing-app/src/components/templates/GameTyping.tsx +++ b/typing-app/src/components/templates/GameTyping.tsx @@ -20,7 +20,7 @@ const GameTyping: React.FC = ({ nextPage, subjectText, setResul const [startedAt, setStartedAt] = useState(new Date()); - const totalSeconds = 60;// TODO: Configファイルから取得 + const totalSeconds = 60; // TODO: Configファイルから取得 const [count, setCount] = useState(totalSeconds); const [correctType, setCorrectType] = useState(0); // 正打数 @@ -46,8 +46,8 @@ const GameTyping: React.FC = ({ nextPage, subjectText, setResul //TODO:Userが取得できなかった場合のエラーハンドリングを追加 if (!user) { showErrorToast("ユーザー情報が取得できませんでした"); - router.push("/") - return + router.push("/"); + return; } const { error } = await client.POST("/scores", { @@ -56,12 +56,12 @@ const GameTyping: React.FC = ({ nextPage, subjectText, setResul if (error) { showErrorToast("スコアの登録に失敗しました"); return; - } else{ + } else { // リザルト画面用のデータ setResultScore({ keystrokes: registeredScore.keystrokes, miss: incorrectType, - time: new Date(typeTimeSeconds * 1000),// TODO: マジックナンバー確認 + time: new Date(typeTimeSeconds * 1000), // TODO: マジックナンバー確認 wpm: (correctType / typeTimeSeconds) * 60, // TODO: マジックナンバー確認 accuracy: registeredScore.accuracy, score: registeredScore.score, @@ -131,7 +131,8 @@ const GameTyping: React.FC = ({ nextPage, subjectText, setResul return toLogarithmWpm(averageTypingSpeed); }; - const toLogarithmWpm = (wpm: number) => { // TODO: マジックナンバー確認 + const toLogarithmWpm = (wpm: number) => { + // TODO: マジックナンバー確認 const wpmForProgressBar = (1000 / 3) * Math.log10((999 / 1000) * wpm + 1); if (wpmForProgressBar > 1000) { return 1000; @@ -167,7 +168,7 @@ const GameTyping: React.FC = ({ nextPage, subjectText, setResul return (
    - { /* TODO: Article Nameって消すんじゃなかったっけ */} + {/* TODO: Article Nameって消すんじゃなかったっけ */}
    Article Name
    Time Remain
    Progress
    @@ -192,7 +193,7 @@ const GameTyping: React.FC = ({ nextPage, subjectText, setResul height={24} /> {""} - { /* TODO: Lpre, Ipusumって消すんじゃなかったっけ */} + {/* TODO: Lpre, Ipusumって消すんじゃなかったっけ */}
    Lorem Ipsum
    From 40388df729d1116bbf245143498d13fa32757603 Mon Sep 17 00:00:00 2001 From: Sora Arakawa Date: Sun, 7 Apr 2024 16:20:54 +0900 Subject: [PATCH 089/107] =?UTF-8?q?remove:=20Google=20Fonts=E3=81=AB?= =?UTF-8?q?=E4=BE=9D=E5=AD=98=E3=81=99=E3=82=8B=E6=9B=B8=E4=BD=93=E3=82=92?= =?UTF-8?q?=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/README.md | 2 -- typing-app/src/app/globals.css | 4 ++++ typing-app/src/app/layout.tsx | 5 +---- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/typing-app/README.md b/typing-app/README.md index c403366..08f571f 100644 --- a/typing-app/README.md +++ b/typing-app/README.md @@ -18,8 +18,6 @@ Open [http://localhost:3000](http://localhost:3000) with your browser to see the You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. -This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font. - ## Learn More To learn more about Next.js, take a look at the following resources: diff --git a/typing-app/src/app/globals.css b/typing-app/src/app/globals.css index 1340b32..c457558 100644 --- a/typing-app/src/app/globals.css +++ b/typing-app/src/app/globals.css @@ -8,6 +8,10 @@ --background-end-rgb: 0, 0, 0; } +* { + font-family: "メイリオ", "Meiryo", "Hiragino Kaku Gothic Pro", "ヒラギノ角ゴ Pro W3", "MS Pゴシック", sans-serif; +} + body { color: rgb(var(--foreground-rgb)); background: rgb(var(--background-start-rgb)); diff --git a/typing-app/src/app/layout.tsx b/typing-app/src/app/layout.tsx index 6c12d45..6a77292 100644 --- a/typing-app/src/app/layout.tsx +++ b/typing-app/src/app/layout.tsx @@ -1,12 +1,9 @@ import type { Metadata } from "next"; -import { Inter } from "next/font/google"; import Header from "../components/organism/Header"; import Footer from "../components/organism/Footer"; import "./globals.css"; import { Box, ChakraProvider } from "@chakra-ui/react"; -const inter = Inter({ subsets: ["latin"] }); - export const metadata: Metadata = { title: "TYPE MASTER", }; @@ -18,7 +15,7 @@ export default async function RootLayout({ }>) { return ( - +
    From 1f79f3dffd72f639a61af8fd4db530d55b594455 Mon Sep 17 00:00:00 2001 From: Sora Arakawa Date: Sun, 7 Apr 2024 17:01:19 +0900 Subject: [PATCH 090/107] =?UTF-8?q?fix:=20=E3=82=B2=E3=83=BC=E3=83=A0?= =?UTF-8?q?=E7=94=BB=E9=9D=A2=E3=81=AE=E3=83=AC=E3=82=A4=E3=82=A2=E3=82=A6?= =?UTF-8?q?=E3=83=88=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/templates/GamePre.module.css | 2 +- typing-app/src/components/templates/GamePre.tsx | 12 ++++++------ .../src/components/templates/GameResult.module.css | 2 +- typing-app/src/components/templates/GameResult.tsx | 12 ++++++------ .../src/components/templates/GameTyping.module.css | 2 +- 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/typing-app/src/components/templates/GamePre.module.css b/typing-app/src/components/templates/GamePre.module.css index 2b95443..c089b2d 100644 --- a/typing-app/src/components/templates/GamePre.module.css +++ b/typing-app/src/components/templates/GamePre.module.css @@ -4,7 +4,7 @@ margin: 50px auto 0 auto; position: absolute; left: 15%; - top: 100px; + top: 120px; background-color: #263238; border: 4px, #fff; } diff --git a/typing-app/src/components/templates/GamePre.tsx b/typing-app/src/components/templates/GamePre.tsx index 7d7bdba..d724203 100644 --- a/typing-app/src/components/templates/GamePre.tsx +++ b/typing-app/src/components/templates/GamePre.tsx @@ -29,7 +29,7 @@ const GamePre: React.FC = ({ nextPage }) => { templateAreas={`"header header" "main nav" "footer footer"`} - gridTemplateRows={"80px 1fr 50px"} + gridTemplateRows={"80px 1fr 80px"} gridTemplateColumns={"1fr 1fr"} h="100%" gap={0} @@ -38,9 +38,9 @@ const GamePre: React.FC = ({ nextPage }) => { alignItems="center" overflow="auto" > - + - ゲーム説明 + 操作説明 @@ -49,8 +49,8 @@ const GamePre: React.FC = ({ nextPage }) => { 制限時間は1分間! 英文を速く・正確に入力して高スコアを目指そう! 【ランキング掲載条件】 - WPM(Words per Minutes): 120字以上 - 正打率: 95%以上 + WPM (Words Per Minutes) : 120字以上 + 正打率 : 95%以上 【入力しても反応しなくなった場合】 テキストが表示されているボックスをクリックすると元に戻れます。 @@ -70,7 +70,7 @@ const GamePre: React.FC = ({ nextPage }) => { - [Space]キーを押して開始 + [Space] キーを押して開始 diff --git a/typing-app/src/components/templates/GameResult.module.css b/typing-app/src/components/templates/GameResult.module.css index bdd0c0b..7036bb4 100644 --- a/typing-app/src/components/templates/GameResult.module.css +++ b/typing-app/src/components/templates/GameResult.module.css @@ -4,7 +4,7 @@ margin: 50px auto 0 auto; position: absolute; left: 15%; - top: 100px; + top: 120px; background-color: #263238; border: solid 4px #fff; } diff --git a/typing-app/src/components/templates/GameResult.tsx b/typing-app/src/components/templates/GameResult.tsx index a140f57..ff763f8 100644 --- a/typing-app/src/components/templates/GameResult.tsx +++ b/typing-app/src/components/templates/GameResult.tsx @@ -69,28 +69,28 @@ const GameResult: React.FC = ({ nextPage, resultScore }) => { - {resultScore.keystrokes}回 + {resultScore.keystrokes} 回 - {resultScore.miss}回 + {resultScore.miss} 回 - {String(resultScore.time.getMinutes() * 60 + resultScore.time.getSeconds()).padStart(2, "0")}秒 - {String(Math.floor(resultScore.time.getMilliseconds() / 100))} + {String(resultScore.time.getMinutes() * 60 + resultScore.time.getSeconds()).padStart(2, "0")}. + {String(Math.floor(resultScore.time.getMilliseconds() / 100))} 秒 - {Math.floor(resultScore.wpm)}字/分 + {Math.floor(resultScore.wpm)} 字/分 - {resultScore.accuracy.toFixed(1)}% + {resultScore.accuracy.toFixed(1)} % diff --git a/typing-app/src/components/templates/GameTyping.module.css b/typing-app/src/components/templates/GameTyping.module.css index 8caf14a..2a36040 100644 --- a/typing-app/src/components/templates/GameTyping.module.css +++ b/typing-app/src/components/templates/GameTyping.module.css @@ -4,7 +4,7 @@ margin: 50px auto 0 auto; position: absolute; left: 15%; - top: 100px; + top: 120px; background-color: #263238; border: solid 4px #fff; } From 4e85789daf53c357811abe21e7a4ea837dce90f3 Mon Sep 17 00:00:00 2001 From: Sora Arakawa Date: Sun, 7 Apr 2024 17:19:23 +0900 Subject: [PATCH 091/107] =?UTF-8?q?feat:=20=E3=83=98=E3=83=83=E3=83=80?= =?UTF-8?q?=E3=81=AE=E3=83=AD=E3=82=B4=E3=83=9E=E3=83=BC=E3=82=AF=E6=8A=BC?= =?UTF-8?q?=E4=B8=8B=E3=81=A7Home=E3=81=AB=E9=81=B7=E7=A7=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/src/components/atoms/Banner.tsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/typing-app/src/components/atoms/Banner.tsx b/typing-app/src/components/atoms/Banner.tsx index f960bc4..d67a13b 100644 --- a/typing-app/src/components/atoms/Banner.tsx +++ b/typing-app/src/components/atoms/Banner.tsx @@ -1,11 +1,13 @@ import React from "react"; -import { Box, Image } from "@chakra-ui/react"; +import { Box, Image, Link } from "@chakra-ui/react"; import bannerImage from "@/assets/images/banner.png"; const Banner: React.FC = () => { return ( - Logo + + Logo + ); }; From edff68203a39cd85c3b4dc14ee1152135b0a0bb7 Mon Sep 17 00:00:00 2001 From: h-takeyeah <61489178+h-takeyeah@users.noreply.github.com> Date: Sun, 7 Apr 2024 04:44:01 +0900 Subject: [PATCH 092/107] =?UTF-8?q?build:=20yarn=20build=20=E6=99=82?= =?UTF-8?q?=E3=81=AE=E8=AC=8E=E3=81=AE=20next/babel=20=E3=82=A8=E3=83=A9?= =?UTF-8?q?=E3=83=BC=E3=82=92=E6=B6=88=E3=81=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/.eslintrc.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/typing-app/.eslintrc.json b/typing-app/.eslintrc.json index 9b08370..f64128d 100644 --- a/typing-app/.eslintrc.json +++ b/typing-app/.eslintrc.json @@ -1,7 +1,6 @@ { "extends": [ "next/core-web-vitals", - "prettier", - "next/babel" + "prettier" ] } From 818ec248219851db8a5eb41ff0177fb06a2db9bb Mon Sep 17 00:00:00 2001 From: h-takeyeah <61489178+h-takeyeah@users.noreply.github.com> Date: Sun, 7 Apr 2024 17:23:10 +0900 Subject: [PATCH 093/107] build: add sharp to dependencies because we must do so. See below --- typing-app/package.json | 1 + typing-app/yarn.lock | 301 +++++++++++++++++++++++++++++++++++++++- 2 files changed, 300 insertions(+), 2 deletions(-) diff --git a/typing-app/package.json b/typing-app/package.json index 3cc7ad1..62557a8 100644 --- a/typing-app/package.json +++ b/typing-app/package.json @@ -27,6 +27,7 @@ "prettier": "^3.2.5", "react": "^18", "react-dom": "^18", + "sharp": "^0.33.3", "tailwind-merge": "^2.2.1", "tailwindcss-animate": "^1.0.7" }, diff --git a/typing-app/yarn.lock b/typing-app/yarn.lock index 4a0989b..d097bdf 100644 --- a/typing-app/yarn.lock +++ b/typing-app/yarn.lock @@ -1640,6 +1640,15 @@ __metadata: languageName: node linkType: hard +"@emnapi/runtime@npm:^1.1.0": + version: 1.1.1 + resolution: "@emnapi/runtime@npm:1.1.1" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/c11ee57abf0ec643e64ccdace4b4fcc0b0c7b1117a191f969e84ae3669841aa90d2c17fa35b73f5a66fc0c843c8caca7bf11187faaeaa526bcfb7dbfb9b85de9 + languageName: node + linkType: hard + "@emotion/babel-plugin@npm:^11.11.0": version: 11.11.0 resolution: "@emotion/babel-plugin@npm:11.11.0" @@ -1860,6 +1869,181 @@ __metadata: languageName: node linkType: hard +"@img/sharp-darwin-arm64@npm:0.33.3": + version: 0.33.3 + resolution: "@img/sharp-darwin-arm64@npm:0.33.3" + dependencies: + "@img/sharp-libvips-darwin-arm64": "npm:1.0.2" + dependenciesMeta: + "@img/sharp-libvips-darwin-arm64": + optional: true + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@img/sharp-darwin-x64@npm:0.33.3": + version: 0.33.3 + resolution: "@img/sharp-darwin-x64@npm:0.33.3" + dependencies: + "@img/sharp-libvips-darwin-x64": "npm:1.0.2" + dependenciesMeta: + "@img/sharp-libvips-darwin-x64": + optional: true + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@img/sharp-libvips-darwin-arm64@npm:1.0.2": + version: 1.0.2 + resolution: "@img/sharp-libvips-darwin-arm64@npm:1.0.2" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@img/sharp-libvips-darwin-x64@npm:1.0.2": + version: 1.0.2 + resolution: "@img/sharp-libvips-darwin-x64@npm:1.0.2" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@img/sharp-libvips-linux-arm64@npm:1.0.2": + version: 1.0.2 + resolution: "@img/sharp-libvips-linux-arm64@npm:1.0.2" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@img/sharp-libvips-linux-arm@npm:1.0.2": + version: 1.0.2 + resolution: "@img/sharp-libvips-linux-arm@npm:1.0.2" + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + +"@img/sharp-libvips-linux-s390x@npm:1.0.2": + version: 1.0.2 + resolution: "@img/sharp-libvips-linux-s390x@npm:1.0.2" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + +"@img/sharp-libvips-linux-x64@npm:1.0.2": + version: 1.0.2 + resolution: "@img/sharp-libvips-linux-x64@npm:1.0.2" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@img/sharp-libvips-linuxmusl-arm64@npm:1.0.2": + version: 1.0.2 + resolution: "@img/sharp-libvips-linuxmusl-arm64@npm:1.0.2" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@img/sharp-libvips-linuxmusl-x64@npm:1.0.2": + version: 1.0.2 + resolution: "@img/sharp-libvips-linuxmusl-x64@npm:1.0.2" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@img/sharp-linux-arm64@npm:0.33.3": + version: 0.33.3 + resolution: "@img/sharp-linux-arm64@npm:0.33.3" + dependencies: + "@img/sharp-libvips-linux-arm64": "npm:1.0.2" + dependenciesMeta: + "@img/sharp-libvips-linux-arm64": + optional: true + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@img/sharp-linux-arm@npm:0.33.3": + version: 0.33.3 + resolution: "@img/sharp-linux-arm@npm:0.33.3" + dependencies: + "@img/sharp-libvips-linux-arm": "npm:1.0.2" + dependenciesMeta: + "@img/sharp-libvips-linux-arm": + optional: true + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + +"@img/sharp-linux-s390x@npm:0.33.3": + version: 0.33.3 + resolution: "@img/sharp-linux-s390x@npm:0.33.3" + dependencies: + "@img/sharp-libvips-linux-s390x": "npm:1.0.2" + dependenciesMeta: + "@img/sharp-libvips-linux-s390x": + optional: true + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + +"@img/sharp-linux-x64@npm:0.33.3": + version: 0.33.3 + resolution: "@img/sharp-linux-x64@npm:0.33.3" + dependencies: + "@img/sharp-libvips-linux-x64": "npm:1.0.2" + dependenciesMeta: + "@img/sharp-libvips-linux-x64": + optional: true + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@img/sharp-linuxmusl-arm64@npm:0.33.3": + version: 0.33.3 + resolution: "@img/sharp-linuxmusl-arm64@npm:0.33.3" + dependencies: + "@img/sharp-libvips-linuxmusl-arm64": "npm:1.0.2" + dependenciesMeta: + "@img/sharp-libvips-linuxmusl-arm64": + optional: true + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@img/sharp-linuxmusl-x64@npm:0.33.3": + version: 0.33.3 + resolution: "@img/sharp-linuxmusl-x64@npm:0.33.3" + dependencies: + "@img/sharp-libvips-linuxmusl-x64": "npm:1.0.2" + dependenciesMeta: + "@img/sharp-libvips-linuxmusl-x64": + optional: true + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@img/sharp-wasm32@npm:0.33.3": + version: 0.33.3 + resolution: "@img/sharp-wasm32@npm:0.33.3" + dependencies: + "@emnapi/runtime": "npm:^1.1.0" + conditions: cpu=wasm32 + languageName: node + linkType: hard + +"@img/sharp-win32-ia32@npm:0.33.3": + version: 0.33.3 + resolution: "@img/sharp-win32-ia32@npm:0.33.3" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@img/sharp-win32-x64@npm:0.33.3": + version: 0.33.3 + resolution: "@img/sharp-win32-x64@npm:0.33.3" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@isaacs/cliui@npm:^8.0.2": version: 8.0.2 resolution: "@isaacs/cliui@npm:8.0.2" @@ -3803,13 +3987,23 @@ __metadata: languageName: node linkType: hard -"color-name@npm:~1.1.4": +"color-name@npm:^1.0.0, color-name@npm:~1.1.4": version: 1.1.4 resolution: "color-name@npm:1.1.4" checksum: 10c0/a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95 languageName: node linkType: hard +"color-string@npm:^1.9.0": + version: 1.9.1 + resolution: "color-string@npm:1.9.1" + dependencies: + color-name: "npm:^1.0.0" + simple-swizzle: "npm:^0.2.2" + checksum: 10c0/b0bfd74c03b1f837f543898b512f5ea353f71630ccdd0d66f83028d1f0924a7d4272deb278b9aef376cacf1289b522ac3fb175e99895283645a2dc3a33af2404 + languageName: node + linkType: hard + "color2k@npm:^2.0.2": version: 2.0.3 resolution: "color2k@npm:2.0.3" @@ -3817,6 +4011,16 @@ __metadata: languageName: node linkType: hard +"color@npm:^4.2.3": + version: 4.2.3 + resolution: "color@npm:4.2.3" + dependencies: + color-convert: "npm:^2.0.1" + color-string: "npm:^1.9.0" + checksum: 10c0/7fbe7cfb811054c808349de19fb380252e5e34e61d7d168ec3353e9e9aacb1802674bddc657682e4e9730c2786592a4de6f8283e7e0d3870b829bb0b7b2f6118 + languageName: node + linkType: hard + "combined-stream@npm:^1.0.8": version: 1.0.8 resolution: "combined-stream@npm:1.0.8" @@ -4133,6 +4337,13 @@ __metadata: languageName: node linkType: hard +"detect-libc@npm:^2.0.3": + version: 2.0.3 + resolution: "detect-libc@npm:2.0.3" + checksum: 10c0/88095bda8f90220c95f162bf92cad70bd0e424913e655c20578600e35b91edc261af27531cf160a331e185c0ced93944bc7e09939143225f56312d7fd800fdb7 + languageName: node + linkType: hard + "detect-newline@npm:^3.0.0": version: 3.1.0 resolution: "detect-newline@npm:3.1.0" @@ -5529,6 +5740,13 @@ __metadata: languageName: node linkType: hard +"is-arrayish@npm:^0.3.1": + version: 0.3.2 + resolution: "is-arrayish@npm:0.3.2" + checksum: 10c0/f59b43dc1d129edb6f0e282595e56477f98c40278a2acdc8b0a5c57097c9eff8fe55470493df5775478cf32a4dc8eaf6d3a749f07ceee5bc263a78b2434f6a54 + languageName: node + linkType: hard + "is-async-function@npm:^2.0.0": version: 2.0.0 resolution: "is-async-function@npm:2.0.0" @@ -7993,7 +8211,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4": +"semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0": version: 7.6.0 resolution: "semver@npm:7.6.0" dependencies: @@ -8030,6 +8248,75 @@ __metadata: languageName: node linkType: hard +"sharp@npm:^0.33.3": + version: 0.33.3 + resolution: "sharp@npm:0.33.3" + dependencies: + "@img/sharp-darwin-arm64": "npm:0.33.3" + "@img/sharp-darwin-x64": "npm:0.33.3" + "@img/sharp-libvips-darwin-arm64": "npm:1.0.2" + "@img/sharp-libvips-darwin-x64": "npm:1.0.2" + "@img/sharp-libvips-linux-arm": "npm:1.0.2" + "@img/sharp-libvips-linux-arm64": "npm:1.0.2" + "@img/sharp-libvips-linux-s390x": "npm:1.0.2" + "@img/sharp-libvips-linux-x64": "npm:1.0.2" + "@img/sharp-libvips-linuxmusl-arm64": "npm:1.0.2" + "@img/sharp-libvips-linuxmusl-x64": "npm:1.0.2" + "@img/sharp-linux-arm": "npm:0.33.3" + "@img/sharp-linux-arm64": "npm:0.33.3" + "@img/sharp-linux-s390x": "npm:0.33.3" + "@img/sharp-linux-x64": "npm:0.33.3" + "@img/sharp-linuxmusl-arm64": "npm:0.33.3" + "@img/sharp-linuxmusl-x64": "npm:0.33.3" + "@img/sharp-wasm32": "npm:0.33.3" + "@img/sharp-win32-ia32": "npm:0.33.3" + "@img/sharp-win32-x64": "npm:0.33.3" + color: "npm:^4.2.3" + detect-libc: "npm:^2.0.3" + semver: "npm:^7.6.0" + dependenciesMeta: + "@img/sharp-darwin-arm64": + optional: true + "@img/sharp-darwin-x64": + optional: true + "@img/sharp-libvips-darwin-arm64": + optional: true + "@img/sharp-libvips-darwin-x64": + optional: true + "@img/sharp-libvips-linux-arm": + optional: true + "@img/sharp-libvips-linux-arm64": + optional: true + "@img/sharp-libvips-linux-s390x": + optional: true + "@img/sharp-libvips-linux-x64": + optional: true + "@img/sharp-libvips-linuxmusl-arm64": + optional: true + "@img/sharp-libvips-linuxmusl-x64": + optional: true + "@img/sharp-linux-arm": + optional: true + "@img/sharp-linux-arm64": + optional: true + "@img/sharp-linux-s390x": + optional: true + "@img/sharp-linux-x64": + optional: true + "@img/sharp-linuxmusl-arm64": + optional: true + "@img/sharp-linuxmusl-x64": + optional: true + "@img/sharp-wasm32": + optional: true + "@img/sharp-win32-ia32": + optional: true + "@img/sharp-win32-x64": + optional: true + checksum: 10c0/12f5203426595b4e64c807162a6d52358b591d25fbb414a51fe38861584759fba38485be951ed98d15be3dfe21f2def5336f78ca35bf8bbd22d88cc78ca03f2a + languageName: node + linkType: hard + "shebang-command@npm:^2.0.0": version: 2.0.0 resolution: "shebang-command@npm:2.0.0" @@ -8072,6 +8359,15 @@ __metadata: languageName: node linkType: hard +"simple-swizzle@npm:^0.2.2": + version: 0.2.2 + resolution: "simple-swizzle@npm:0.2.2" + dependencies: + is-arrayish: "npm:^0.3.1" + checksum: 10c0/df5e4662a8c750bdba69af4e8263c5d96fe4cd0f9fe4bdfa3cbdeb45d2e869dff640beaaeb1ef0e99db4d8d2ec92f85508c269f50c972174851bc1ae5bd64308 + languageName: node + linkType: hard + "sisteransi@npm:^1.0.5": version: 1.0.5 resolution: "sisteransi@npm:1.0.5" @@ -8765,6 +9061,7 @@ __metadata: prettier: "npm:^3.2.5" react: "npm:^18" react-dom: "npm:^18" + sharp: "npm:^0.33.3" tailwind-merge: "npm:^2.2.1" tailwindcss: "npm:^3.3.0" tailwindcss-animate: "npm:^1.0.7" From 307a4f30801d764b2bebc16189cd08c31ce81769 Mon Sep 17 00:00:00 2001 From: Sora Arakawa Date: Sun, 7 Apr 2024 18:22:05 +0900 Subject: [PATCH 094/107] =?UTF-8?q?change:=20WPM=E3=81=AE=E3=83=97?= =?UTF-8?q?=E3=83=AD=E3=82=B0=E3=83=AC=E3=82=B9=E3=83=90=E3=83=BC=E3=82=92?= =?UTF-8?q?1=E6=9C=AC=E3=81=AB=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/src/components/templates/GameTyping.tsx | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/typing-app/src/components/templates/GameTyping.tsx b/typing-app/src/components/templates/GameTyping.tsx index 143f23d..63d2190 100644 --- a/typing-app/src/components/templates/GameTyping.tsx +++ b/typing-app/src/components/templates/GameTyping.tsx @@ -170,8 +170,7 @@ const GameTyping: React.FC = ({ nextPage, subjectText, setResul
    - - +
    {""} = ({ nextPage, subjectText, setResul height={24} /> {""} -
    Lorem Ipsum
    +
    -
    {subjectText.slice(0, typeIndex)} @@ -195,7 +194,7 @@ const GameTyping: React.FC = ({ nextPage, subjectText, setResul 残り {count.toFixed(1)}
    - {correctType} 語 / {subjectText.length} 字 + {correctType} 字 / {subjectText.length} 字
    From 8b3e404395cb09b240c5fa4d949fd81b0dc7fa10 Mon Sep 17 00:00:00 2001 From: Sora Arakawa Date: Sun, 7 Apr 2024 18:22:34 +0900 Subject: [PATCH 095/107] =?UTF-8?q?style:=20body=E3=81=AE=E3=82=B9?= =?UTF-8?q?=E3=82=AF=E3=83=AD=E3=83=BC=E3=83=AB=E3=83=90=E3=83=BC=E3=82=92?= =?UTF-8?q?=E7=84=A1=E5=8A=B9=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/src/app/globals.css | 1 + 1 file changed, 1 insertion(+) diff --git a/typing-app/src/app/globals.css b/typing-app/src/app/globals.css index c457558..ad302de 100644 --- a/typing-app/src/app/globals.css +++ b/typing-app/src/app/globals.css @@ -15,6 +15,7 @@ body { color: rgb(var(--foreground-rgb)); background: rgb(var(--background-start-rgb)); + overflow-y: hidden; } @layer utilities { From f86a457ffffd601635ffda98fe85135af5e28f70 Mon Sep 17 00:00:00 2001 From: KinjiKawaguchi Date: Mon, 8 Apr 2024 00:02:27 +0900 Subject: [PATCH 096/107] fix: toast util --- typing-app/src/utils/toast.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/typing-app/src/utils/toast.ts b/typing-app/src/utils/toast.ts index 2d8fa36..225f53c 100644 --- a/typing-app/src/utils/toast.ts +++ b/typing-app/src/utils/toast.ts @@ -1,6 +1,4 @@ -import { createStandaloneToast } from "@chakra-ui/react"; - -const { toast: toastChakra } = createStandaloneToast(); +import { useToast } from "@chakra-ui/react"; const toast = ({ status, @@ -11,7 +9,8 @@ const toast = ({ title?: string; description?: string; }) => { - toastChakra({ + const toastInstance = useToast(); + toastInstance({ title, description, status, From e27a2df3fd351e7db3cfa7cfcec0ce3e12a70bc8 Mon Sep 17 00:00:00 2001 From: KikyoNanakusa Date: Mon, 8 Apr 2024 00:10:55 +0900 Subject: [PATCH 097/107] =?UTF-8?q?feat:login=E3=81=AB=E4=BE=8B=E5=A4=96?= =?UTF-8?q?=E5=87=A6=E7=90=86=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/src/app/actions.ts | 47 +++++++++++++++++++---------------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/typing-app/src/app/actions.ts b/typing-app/src/app/actions.ts index 424841b..9710950 100644 --- a/typing-app/src/app/actions.ts +++ b/typing-app/src/app/actions.ts @@ -12,34 +12,37 @@ type LoginActionState = { export async function login(_: LoginActionState, formData: FormData): Promise { const studentNumber = formData.get("student-number")!.toString(); - const { data, error } = await client.GET("/users", { - params: { - query: { - student_number: studentNumber, + try { + const { data, error } = await client.GET("/users", { + params: { + query: { + student_number: studentNumber, + }, }, - }, - }); - - if (error) { - if (/not found/.test(`${error}`.toLowerCase())) { - showWarningToast("ユーザーが見つかりませんでした"); - return { error: "見つかりませんでした" }; //返す? + }); + if (error) { + if (/not found/.test(`${error}`.toLowerCase())) { + showWarningToast("ユーザーが見つかりませんでした"); + return { error: "見つかりませんでした" }; //返す? + } + showWarningToast("もう一度お試しください"); + return { error: "もう一度お試しください" }; // 返す? } - showWarningToast("もう一度お試しください"); - return { error: "もう一度お試しください" }; // 返す? - } - const expires = new Date(Date.now() + 3 * 60 * 60 * 1000); + const expires = new Date(Date.now() + 3 * 60 * 60 * 1000); - const user: User = { - id: data.id!, - handleName: data.handle_name!, - studentNumber: data.student_number!, - }; + const user: User = { + id: data.id!, + handleName: data.handle_name!, + studentNumber: data.student_number!, + }; - cookies().set("user", JSON.stringify(user), { expires, httpOnly: true }); + cookies().set("user", JSON.stringify(user), { expires, httpOnly: true }); - redirect("/game"); + redirect("/game"); + } catch (error) { + return { error: "通信に失敗しました" }; + } } export async function logout() { From d19cde22d648f80a266e0a790f07b51fab574272 Mon Sep 17 00:00:00 2001 From: KikyoNanakusa Date: Mon, 8 Apr 2024 00:58:19 +0900 Subject: [PATCH 098/107] =?UTF-8?q?feat:=E3=83=AD=E3=82=B0=E3=82=A4?= =?UTF-8?q?=E3=83=B3=E3=81=AB=E5=A4=B1=E6=95=97=E3=81=97=E3=81=9F=E9=9A=9B?= =?UTF-8?q?=E3=81=ABtoast=E3=82=92=E8=A1=A8=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/src/app/actions.ts | 7 +--- .../src/components/molecules/LoginModal.tsx | 7 +++- typing-app/src/utils/toast.ts | 41 +++++++------------ 3 files changed, 22 insertions(+), 33 deletions(-) diff --git a/typing-app/src/app/actions.ts b/typing-app/src/app/actions.ts index 9710950..9aa0c7a 100644 --- a/typing-app/src/app/actions.ts +++ b/typing-app/src/app/actions.ts @@ -3,7 +3,6 @@ import { client } from "@/libs/api"; import { redirect } from "next/navigation"; import { cookies } from "next/headers"; import { User } from "@/types/user"; -import { showWarningToast } from "@/utils/toast"; type LoginActionState = { error?: string; @@ -22,11 +21,9 @@ export async function login(_: LoginActionState, formData: FormData): Promise = ({ isOpen, onClose, state - + { + await dispatchAction(formData); + state.error && showWarningToast(state.error); + }}> 続けるにはログインが必要です = ({ isOpen, onClose, state title="学籍番号" role="textbox" /> - {state.error ? `エラー: ${state.error}` : null} // TODO: ここ変更 diff --git a/typing-app/src/utils/toast.ts b/typing-app/src/utils/toast.ts index 225f53c..8e57d9a 100644 --- a/typing-app/src/utils/toast.ts +++ b/typing-app/src/utils/toast.ts @@ -1,47 +1,36 @@ -import { useToast } from "@chakra-ui/react"; +import { createStandaloneToast } from "@chakra-ui/react"; -const toast = ({ - status, - title = "", - description = "", -}: { - status: "success" | "error" | "warning" | "info"; - title?: string; - description?: string; -}) => { - const toastInstance = useToast(); - toastInstance({ +const { toast } = createStandaloneToast(); + +const showToast = (title: string, description?: string, status?: "info" | "warning" | "success" | "error") => { + toast({ title, description, status, - duration: 3000, - isClosable: true, position: "top", }); -}; +} export const showSuccessToast = (title: string, description?: string) => { - toast({ + showToast( title, description, - status: "success", - }); + "success", + ); }; export const showWarningToast = (title: string, description?: string) => { - toast({ + showToast( title, description, - status: "warning", - }); + "warning", + ); }; export const showErrorToast = (title: string, description?: string) => { - toast({ + showToast( title, description, - status: "error", - }); + "error", + ); }; - -export default toast; From dd15963a6ac00f19f71adab5f5b407268006a87a Mon Sep 17 00:00:00 2001 From: KikyoNanakusa Date: Mon, 8 Apr 2024 01:20:00 +0900 Subject: [PATCH 099/107] =?UTF-8?q?style:prettier=E3=82=92=E9=81=A9?= =?UTF-8?q?=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/molecules/LoginModal.tsx | 10 ++++++---- typing-app/src/utils/toast.ts | 20 ++++--------------- 2 files changed, 10 insertions(+), 20 deletions(-) diff --git a/typing-app/src/components/molecules/LoginModal.tsx b/typing-app/src/components/molecules/LoginModal.tsx index 23ed9bf..f80953c 100644 --- a/typing-app/src/components/molecules/LoginModal.tsx +++ b/typing-app/src/components/molecules/LoginModal.tsx @@ -28,10 +28,12 @@ const LoginModalPresenter: React.FC = ({ isOpen, onClose, state - { - await dispatchAction(formData); - state.error && showWarningToast(state.error); - }}> + { + await dispatchAction(formData); + state.error && showWarningToast(state.error); + }} + > 続けるにはログインが必要です { - showToast( - title, - description, - "success", - ); + showToast(title, description, "success"); }; export const showWarningToast = (title: string, description?: string) => { - showToast( - title, - description, - "warning", - ); + showToast(title, description, "warning"); }; export const showErrorToast = (title: string, description?: string) => { - showToast( - title, - description, - "error", - ); + showToast(title, description, "error"); }; From 6b06ead671bef30cffb17ceb7273b6fe2730e527 Mon Sep 17 00:00:00 2001 From: KikyoNanakusa Date: Mon, 8 Apr 2024 01:33:55 +0900 Subject: [PATCH 100/107] =?UTF-8?q?refactor:showToast=E3=81=AEprops?= =?UTF-8?q?=E3=82=92=E5=AE=9A=E7=BE=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/src/utils/toast.ts | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/typing-app/src/utils/toast.ts b/typing-app/src/utils/toast.ts index 321ee4f..22ec447 100644 --- a/typing-app/src/utils/toast.ts +++ b/typing-app/src/utils/toast.ts @@ -2,23 +2,29 @@ import { createStandaloneToast } from "@chakra-ui/react"; const { toast } = createStandaloneToast(); -const showToast = (title: string, description?: string, status?: "info" | "warning" | "success" | "error") => { +interface showToastProps { + title: string; + description?: string; + status?: "info" | "warning" | "success" | "error"; +} + +const showToast = ({ title, description = "", status }: showToastProps) => { toast({ + position: "top", title, description, status, - position: "top", }); }; export const showSuccessToast = (title: string, description?: string) => { - showToast(title, description, "success"); + showToast({ title, description, status: "success" }); }; export const showWarningToast = (title: string, description?: string) => { - showToast(title, description, "warning"); + showToast({ title, description, status: "warning" }); }; export const showErrorToast = (title: string, description?: string) => { - showToast(title, description, "error"); + showToast({ title, description, status: "error" }); }; From aeb31e71af615c68562e1d5a1a650b5fb40390c7 Mon Sep 17 00:00:00 2001 From: h-takeyeah <61489178+h-takeyeah@users.noreply.github.com> Date: Mon, 8 Apr 2024 01:58:39 +0900 Subject: [PATCH 101/107] =?UTF-8?q?fix:=20=E6=96=87=E5=AD=97=E3=81=8C?= =?UTF-8?q?=E3=81=82=E3=81=B5=E3=82=8C=E3=82=8B=E3=81=AE=E3=82=92=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/src/components/templates/GameTyping.module.css | 2 ++ 1 file changed, 2 insertions(+) diff --git a/typing-app/src/components/templates/GameTyping.module.css b/typing-app/src/components/templates/GameTyping.module.css index 8caf14a..dceb110 100644 --- a/typing-app/src/components/templates/GameTyping.module.css +++ b/typing-app/src/components/templates/GameTyping.module.css @@ -125,6 +125,8 @@ font-size: 24px; line-height: 48px; color: #fff; + height: 100%; + overflow-y: hidden; } .span_typed_text { From 9717e153ea3a849281cf55ef0ca0a920b05acec5 Mon Sep 17 00:00:00 2001 From: KikyoNanakusa Date: Mon, 8 Apr 2024 02:44:01 +0900 Subject: [PATCH 102/107] =?UTF-8?q?feat:game=E3=81=AB=E7=9B=B4=E6=8E=A5?= =?UTF-8?q?=E3=82=A2=E3=82=AF=E3=82=BB=E3=82=B9=E3=81=97=E3=81=9F=E9=9A=9B?= =?UTF-8?q?=E3=81=AB=E3=83=AD=E3=82=B0=E3=82=A4=E3=83=B3=E7=8A=B6=E6=B3=81?= =?UTF-8?q?=E3=82=92=E3=83=81=E3=82=A7=E3=83=83=E3=82=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/src/components/pages/Game.tsx | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/typing-app/src/components/pages/Game.tsx b/typing-app/src/components/pages/Game.tsx index 6a7a5a2..6fd153d 100644 --- a/typing-app/src/components/pages/Game.tsx +++ b/typing-app/src/components/pages/Game.tsx @@ -1,10 +1,14 @@ "use client"; import { ResultScore } from "@/types/RegisterScore"; import { VStack } from "@chakra-ui/react"; -import React, { useState } from "react"; +import React, { useState, useEffect } from "react"; import GamePre from "../templates/GamePre"; import GameResult from "../templates/GameResult"; import GameTyping from "../templates/GameTyping"; +import { useRouter } from "next/navigation"; +import { showWarningToast } from "@/utils/toast"; +import { User } from "@/types/user"; +import { getCurrentUser } from "@/app/actions"; export interface GamePreProps { nextPage: () => void; @@ -22,6 +26,22 @@ interface GamePageProps { } const GamePage: React.FC = ({ subjectText }) => { + //ログインしていなければ、トップページにリダイレクト + const router = useRouter(); + const isUserLoggedIn = async () => { + const user: User | undefined = await getCurrentUser(); + return user; + } + + useEffect(() => { + isUserLoggedIn().then((user) => { + if (!user) { + showWarningToast("ログインしてください"); + router.push("/"); + } + }); + }, []); + const ScreenIndex = { IDX_PRE: 0, IDX_TYPING: 1, From e575a0b75e788da0f82055a458ee04ccfcb0c1c1 Mon Sep 17 00:00:00 2001 From: KikyoNanakusa Date: Mon, 8 Apr 2024 02:52:20 +0900 Subject: [PATCH 103/107] =?UTF-8?q?style:prettier=E3=82=92=E9=81=A9?= =?UTF-8?q?=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/src/components/pages/Game.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/typing-app/src/components/pages/Game.tsx b/typing-app/src/components/pages/Game.tsx index 6fd153d..327ab0a 100644 --- a/typing-app/src/components/pages/Game.tsx +++ b/typing-app/src/components/pages/Game.tsx @@ -31,7 +31,7 @@ const GamePage: React.FC = ({ subjectText }) => { const isUserLoggedIn = async () => { const user: User | undefined = await getCurrentUser(); return user; - } + }; useEffect(() => { isUserLoggedIn().then((user) => { @@ -40,7 +40,7 @@ const GamePage: React.FC = ({ subjectText }) => { router.push("/"); } }); - }, []); + }, []); const ScreenIndex = { IDX_PRE: 0, From 715f2e1117541d1a4a28ca809901c03797ec3f3d Mon Sep 17 00:00:00 2001 From: Sora Arakawa Date: Mon, 8 Apr 2024 21:28:37 +0900 Subject: [PATCH 104/107] fix: favicon --- typing-app/src/app/favicon.ico | Bin 25931 -> 9662 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/typing-app/src/app/favicon.ico b/typing-app/src/app/favicon.ico index 718d6fea4835ec2d246af9800eddb7ffb276240c..1c234515abdfab7877b47250362f2b240596d345 100644 GIT binary patch literal 9662 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 LrJugUA?W`A8`#=m From e3b947be7da19358c7bbe16f6040163ed5dc3daf Mon Sep 17 00:00:00 2001 From: Sora Arakawa Date: Mon, 8 Apr 2024 21:28:54 +0900 Subject: [PATCH 105/107] fix: gauge_time.png --- typing-app/public/img/gauge_time.png | Bin 935 -> 1252 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/typing-app/public/img/gauge_time.png b/typing-app/public/img/gauge_time.png index 0458530af1037e98719c2af60e8ab988b61e8074..0cc4f1f02b4ab1d3561b8bf3184b7c93757a8af7 100644 GIT binary patch delta 1245 zcmV<31S0#V2jmHm7k?NC1^@s6&O3<)000E5Nkl2sft`MYE?v5G`9b+8?Le0< zU0z!{$#m(`NwT z{np4e+7;7^^NQ1oLuqH92|kGA3phYG;Wz*bbc5?D~ph+q)96G&yoSSHaoNit|Z zpqfeAJnMHsd}6+R*b>a+*eW{<{SvkuN!b-gBXO_IZ=PR|`CR~6xj)1evB4)8%49i0 zH zFsVJAXZD8c@N-{$QOPjba3$mA{*A7LP_f)>^yUa{uiuq{ zuJeR>m(__6@jDnNXjRwPVBAal9WakX61)Wd3V+uHhK1fl`Wv)4I@XOY)A1lX)*gJW zN;2(C41dT$R4Pu`Xp*s-V3beU*ff;voFpu>YLDp{TxyrTh8E*qi{DbFuzlw}jxB5) zj!mTh6<6rShdb6D{0B(J36cq@QjD^Z%O#tuR$h!`Xs&7fJ%lZ(XlW#uKqPabZzq}d z{eLEjJxSsxOmysEXCnQxBx5rjjqF%E?ktxMSoSc%c!1xd89+jQygXgHT1q7nBDOw# z1@PSS_4&}ya;alCLSlaT214Xx@!3S|IA0tc>&ByORNz62Z~Q)j@$zW-#@}&!lb6XQ zV5u}H8-7X8j+ZA+vAEoQRNfE?a78Lf zd_+Ho^b>_D0TMYY9ak~)7PeC)#mToF5g#R(>H5`MzqDhR;C5c?=5qCe(HX1u(B#}!X%!}pl0a(^0w zTz7L!hHy!)LD>3?UGaCRI{pbXmn7$K%K`ERWTBfPc8={*C*if1l&OM?-;Hs5i7rYK zF_HnfII(9lX9(u+@1jay=Qo1N;6=^7Bok@pBX$q}V6>xZ*l;V7bQpKJB6pG@Y^>x$ z!-<1U++`F$kQ8lyNoKsf?YoHT#a3p00000NkvXX Hu0mjfVDV$+ delta 926 zcmV;P17ZB+38x2;7k?HA1^@s6^fBmm000ASNklyhd(425Zd7Scjmpaoi> zg|t8m{Gk9^NDH(;3$)n6gsj694{pl1I!J^)Y^sZ);po z8}Z*=c>WTr#syNjXn}U&IjG6p5?JokwrI14mD zKQrH!xNOtsD?6r3+o>5<=`EFuzR@-%bPdxq5J~sx=YLZMxcWNMXpN283NN5nMYCbN z%vmXN;dKBV38T_{TjTQ1WU#$jZ!Lbo0%7gg2@uhE($o$6)bGtyHknP3ZwO=dH?s51 zSSfSiIpfRdJ~Q9exI|&OG>~Jk4IHZVmIjoZ;Fw61n+$bmelD6!y7{@NR$wwxp`oy_ zbTDUS{C}txO9B*rX}+y-L4CkfP$yB;P^$Ho1r(@HiPP!Y9FxJcur-qbw-~gr%vl+6 ziDO4y&{`?Yw>2)D4>g&iu;0A5G@(d<_`1<&GI^7M!SHXTDy$5+&_?28Z+Rw@;}XT6 zJkpsBme>D&CWB?tmFZ5l)Ah8pHf-shOcXVkK7Vt*87qT(4``&hIZ5|qTH%s2h$A_# zT5oAUku-$A1|yja?ucK6YrvVMhFerCF&TajhRd9lG8gGy!zcN+#w9mHL5&@2aDg$9h4O8Q3*NVSHB6*3I3-Z;zSX~_XsB`~!`}+#fpbh*8N77%D$qcs`L@OdGm%R=X9$y_Q1htL zTPhcwp_r)j(pi@vVL3HwLf|qonO(|VdI1VtUWuM##!9)Fa{1DwLTSFOalx?&zTcb+ zq;}y2Rq{WTzolrtn$-%ql;+zK7rw--#uo+p0guUzI1q-GmH+?%07*qoM6N<$f*fwh AIsgCw From f970033b6ce52c9ea95f6268be55453a595a3305 Mon Sep 17 00:00:00 2001 From: Sora Arakawa Date: Tue, 9 Apr 2024 22:07:44 +0900 Subject: [PATCH 106/107] =?UTF-8?q?style:=20globals.css=E3=81=8B=E3=82=89?= =?UTF-8?q?=E4=B8=8D=E8=A6=81=E3=81=AA=E8=A8=98=E8=BF=B0=E3=82=92=E5=89=8A?= =?UTF-8?q?=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/src/app/globals.css | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/typing-app/src/app/globals.css b/typing-app/src/app/globals.css index ad302de..a75cdd7 100644 --- a/typing-app/src/app/globals.css +++ b/typing-app/src/app/globals.css @@ -1,7 +1,3 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; - :root { --foreground-rgb: 0, 0, 0; --background-start-rgb: 0, 0, 0; @@ -17,9 +13,3 @@ body { background: rgb(var(--background-start-rgb)); overflow-y: hidden; } - -@layer utilities { - .text-balance { - text-wrap: balance; - } -} From e69fbae70323bf52141ed8829e0cd3d4836d1655 Mon Sep 17 00:00:00 2001 From: Sora Arakawa Date: Tue, 9 Apr 2024 22:11:08 +0900 Subject: [PATCH 107/107] =?UTF-8?q?move:=20=E8=83=8C=E6=99=AF=E7=94=BB?= =?UTF-8?q?=E5=83=8F=E3=82=92assets=E3=83=87=E3=82=A3=E3=83=AC=E3=82=AF?= =?UTF-8?q?=E3=83=88=E3=83=AA=E3=81=B8=E7=A7=BB=E5=8B=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typing-app/src/app/layout.tsx | 3 ++- .../img => src/assets/images}/background.png | Bin 2 files changed, 2 insertions(+), 1 deletion(-) rename typing-app/{public/img => src/assets/images}/background.png (100%) diff --git a/typing-app/src/app/layout.tsx b/typing-app/src/app/layout.tsx index 6a77292..e374430 100644 --- a/typing-app/src/app/layout.tsx +++ b/typing-app/src/app/layout.tsx @@ -3,6 +3,7 @@ import Header from "../components/organism/Header"; import Footer from "../components/organism/Footer"; import "./globals.css"; import { Box, ChakraProvider } from "@chakra-ui/react"; +import background from "@/assets/images/background.png"; export const metadata: Metadata = { title: "TYPE MASTER", @@ -17,7 +18,7 @@ export default async function RootLayout({ - +
    {children} diff --git a/typing-app/public/img/background.png b/typing-app/src/assets/images/background.png similarity index 100% rename from typing-app/public/img/background.png rename to typing-app/src/assets/images/background.png