diff --git a/.env b/.env index f8620a4f..dc4f23c6 100644 --- a/.env +++ b/.env @@ -4,4 +4,5 @@ # Prisma supports the native connection string format for PostgreSQL, MySQL, SQLite, SQL Server, MongoDB and CockroachDB. # See the documentation for all the connection string options: https://pris.ly/d/connection-strings -DATABASE_URL="postgresql://bip:Production_123@localhost:5433/hipmi?schema=public" \ No newline at end of file +DATABASE_URL="postgresql://bip:Production_123@localhost:5433/hipmi?schema=public" +PWD="QWERTYUIOPLKJHGFDSAZXCVBNMQAZWSXEDCRFVTGBYHNUJMIKOLPPOIUYTREWQLKJHGFDSAMNBVCXZ" \ No newline at end of file diff --git a/README_DEV.md b/README_DEV.md new file mode 100644 index 00000000..1a86e87a --- /dev/null +++ b/README_DEV.md @@ -0,0 +1,29 @@ +### API +- src/app/api + +### Api path shortcut +- src/app/lib/api.ts + +### fun +Deskripsi: Global function seperti console.log, random number dll. + +### lib +Deskripsi: Library untuk menampung beberapa function seperti: +- global prisma +- colortune untuk tampilan FE + +### bin +Deskripsi: JSON seeder + +### App_Modules +Deskripsi: Folder client yang mencakup sub menu dari menu-menu utama +- Auth: +1. login +2. validasi +3. register +4. logout +5. splash screen +6. state (khusus bagian auth) + +- Home: +1. home page diff --git a/package.json b/package.json index 2c0b3860..6c44b37b 100644 --- a/package.json +++ b/package.json @@ -15,16 +15,22 @@ "@mantine/hooks": "^6.0.17", "@mantine/next": "^6.0.17", "@prisma/client": "^5.0.0", + "@tabler/icons-react": "^2.38.0", + "@types/lodash": "^4.14.199", "@types/node": "20.4.5", "@types/react": "18.2.17", "@types/react-dom": "18.2.7", "autoprefixer": "10.4.14", "eslint": "8.45.0", "eslint-config-next": "13.4.12", - "next": "13.4.12", + "iron-session": "^6.3.1", + "jotai": "^2.4.3", + "lodash": "^4.17.21", + "next": "^13.5.4-canary.8", "postcss": "8.4.27", "react": "18.2.0", "react-dom": "18.2.0", + "react-simple-toasts": "^5.10.0", "tailwindcss": "3.3.3", "typescript": "5.1.6" } diff --git a/prisma/migrations/20231002020725_new_prisma/migration.sql b/prisma/migrations/20231002020725_new_prisma/migration.sql new file mode 100644 index 00000000..bbf083ef --- /dev/null +++ b/prisma/migrations/20231002020725_new_prisma/migration.sql @@ -0,0 +1,51 @@ +-- CreateTable +CREATE TABLE "User" ( + "id" TEXT NOT NULL, + "username" TEXT NOT NULL, + "nomor" TEXT NOT NULL, + "active" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3), + "masterUserRoleId" TEXT NOT NULL DEFAULT '1', + + CONSTRAINT "User_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "MasterUserRole" ( + "id" TEXT NOT NULL, + "name" TEXT NOT NULL, + "active" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3), + + CONSTRAINT "MasterUserRole_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "UserSession" ( + "id" TEXT NOT NULL, + "token" TEXT NOT NULL, + "expires" TIMESTAMP(3) NOT NULL, + "active" BOOLEAN NOT NULL DEFAULT true, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "userId" TEXT NOT NULL, + + CONSTRAINT "UserSession_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "User_username_key" ON "User"("username"); + +-- CreateIndex +CREATE UNIQUE INDEX "User_nomor_key" ON "User"("nomor"); + +-- CreateIndex +CREATE UNIQUE INDEX "UserSession_userId_key" ON "UserSession"("userId"); + +-- AddForeignKey +ALTER TABLE "User" ADD CONSTRAINT "User_masterUserRoleId_fkey" FOREIGN KEY ("masterUserRoleId") REFERENCES "MasterUserRole"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "UserSession" ADD CONSTRAINT "UserSession_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/prisma/migrations/migration_lock.toml b/prisma/migrations/migration_lock.toml new file mode 100644 index 00000000..fbffa92c --- /dev/null +++ b/prisma/migrations/migration_lock.toml @@ -0,0 +1,3 @@ +# Please do not edit this file manually +# It should be added in your version-control system (i.e. Git) +provider = "postgresql" \ No newline at end of file diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 7aed529a..9fd28852 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -10,4 +10,34 @@ datasource db { url = env("DATABASE_URL") } +model User { + id String @id @default(cuid()) + username String @unique + nomor String @unique + active Boolean @default(true) + createdAt DateTime? @default(now()) + updatedAt DateTime? @updatedAt + MasterUserRole MasterUserRole @relation(fields: [masterUserRoleId], references: [id]) + masterUserRoleId String @default("1") + UserSession UserSession? +} +model MasterUserRole { + id String @id + name String + active Boolean @default(true) + createdAt DateTime? @default(now()) + updatedAt DateTime? @updatedAt + User User[] +} + +model UserSession { + id String @id @default(cuid()) + token String + expires DateTime + active Boolean @default(true) + createdAt DateTime @default(now()) + updatedAt DateTime @default(now()) @updatedAt + User User @relation(fields: [userId], references: [id]) + userId String @unique +} diff --git a/src/app/api/auth/login/route.ts b/src/app/api/auth/login/route.ts new file mode 100644 index 00000000..5c332c0e --- /dev/null +++ b/src/app/api/auth/login/route.ts @@ -0,0 +1,20 @@ +import { MyConsole } from "@/app/fun/my_console"; +import prisma from "@/app/lib/prisma"; +import { NextResponse } from "next/server"; + +export async function POST(req: Request) { + if (req.method === "POST") { + const body = await req.json(); + MyConsole(body); + + try { + await fetch( + `https://wa.wibudev.com/code?nom=${body.nomor}&text=${body.otp}` + ); + return NextResponse.json({ body, status: 200, message: "Login Success" }); + } catch (error) { + return NextResponse.json({ status: 500, message: "Server Error !!!" }); + } + } + return NextResponse.json({ success: false }); +} diff --git a/src/app/api/auth/logout/route.ts b/src/app/api/auth/logout/route.ts new file mode 100644 index 00000000..d4c9049e --- /dev/null +++ b/src/app/api/auth/logout/route.ts @@ -0,0 +1,12 @@ +import { cookies } from "next/headers"; +import { NextResponse } from "next/server"; + +export async function GET() { + cookies().set({ + name: "ssn", + value: "", + maxAge: 0, + }); + + return NextResponse.json({ status: 200, message: "Logout" }); +} diff --git a/src/app/api/auth/register/route.ts b/src/app/api/auth/register/route.ts new file mode 100644 index 00000000..a8052707 --- /dev/null +++ b/src/app/api/auth/register/route.ts @@ -0,0 +1,55 @@ +import { sealData } from "iron-session"; +import { MyConsole } from "@/app/fun/my_console"; +import prisma from "@/app/lib/prisma"; +import { data } from "autoprefixer"; +import { NextResponse } from "next/server"; +import { cookies } from "next/headers"; + +export async function POST(req: Request) { + if (req.method === "POST") { + const body = await req.json(); + // MyConsole(body); + + const cekUsername = await prisma.user.findUnique({ + where: { + username: body.username, + }, + }); + + MyConsole(cekUsername); + + if (cekUsername) + return NextResponse.json({ status: 400, message: "Username sudah ada" }); + + const data = await prisma.user.create({ + data: { + username: body.username, + nomor: body.nomor, + }, + }); + + if (data) { + const seal = await sealData( + JSON.stringify({ + id: data.id, + username: data.username, + }), + { + password: process.env.PWD as string, + } + ); + + cookies().set({ + name: "ssn", + value: seal, + maxAge: 60 * 60 * 24 * 7, + }); + + + return NextResponse.json({ status: 201}); + } + + return NextResponse.json({ success: true }); + } + return NextResponse.json({ success: false }); +} diff --git a/src/app/api/auth/validasi/route.ts b/src/app/api/auth/validasi/route.ts new file mode 100644 index 00000000..6879b296 --- /dev/null +++ b/src/app/api/auth/validasi/route.ts @@ -0,0 +1,52 @@ +import { MyConsole } from "@/app/fun/my_console"; +import prisma from "@/app/lib/prisma"; +import { NextResponse } from "next/server"; +import { cookies } from "next/headers"; +import { sealData, unsealData } from "iron-session"; + +export async function POST(req: Request) { + if (req.method === "POST") { + const body = await req.json(); + MyConsole(body); + + const data = await prisma.user.findUnique({ + where: { + nomor: body.nomor, + }, + select: { + id: true, + nomor: true, + username: true, + active: true, + }, + }); + + if (!data) return NextResponse.json({ status: 404 }); + + if (data) { + const res = await sealData( + JSON.stringify({ + id: data.id, + username: data.username, + }), + { + password: process.env.PWD as string, + } + ); + + const un = await unsealData(res, { password: process.env.PWD as string }); + // console.log(JSON.stringify(un), "route validasi") + + cookies().set({ + name: "ssn", + value: res, + maxAge: 60 * 60 * 24 * 7, + }); + + return NextResponse.json({ status: 200, data }); + } + + return NextResponse.json({ success: true }); + } + return NextResponse.json({ success: false }); +} diff --git a/src/app/api/seeder/route.ts b/src/app/api/seeder/route.ts new file mode 100644 index 00000000..16990102 --- /dev/null +++ b/src/app/api/seeder/route.ts @@ -0,0 +1,27 @@ +import prisma from "@/app/lib/prisma"; +import userRole from "../../../bin/seeder/user_role.json"; +import { NextResponse } from "next/server"; + +export async function GET(req: Request) { + const dev = new URL(req.url).searchParams.get("dev"); + if (dev === "DEV-HIPMI") { + for (let i of userRole) { + const data = await prisma.masterUserRole.upsert({ + where: { + id: i.id.toString(), + }, + update: { + id: i.id.toString(), + name: i.name, + }, + create: { + id: i.id.toString(), + name: i.name, + }, + }); + } + return NextResponse.json({ success: true }); + } + + return NextResponse.json({ success: false }); +} \ No newline at end of file diff --git a/src/app/api/user/get-token/route.ts b/src/app/api/user/get-token/route.ts new file mode 100644 index 00000000..31c1c0cb --- /dev/null +++ b/src/app/api/user/get-token/route.ts @@ -0,0 +1,12 @@ +import { unsealData } from 'iron-session'; +import { cookies } from "next/headers"; +import { NextResponse } from "next/server"; + +export async function GET() { + const c = cookies().get("ssn"); + const data = JSON.parse( + await unsealData(c?.value as string, {password: process.env.PWD as string}) + ) + + return NextResponse.json(data); +} diff --git a/src/app/dev/auth/login/page.tsx b/src/app/dev/auth/login/page.tsx index 60cc8469..b36236db 100644 --- a/src/app/dev/auth/login/page.tsx +++ b/src/app/dev/auth/login/page.tsx @@ -1,9 +1,14 @@ import { Login } from "@/app_modules/auth"; +import { cookies } from "next/headers"; export default function Page() { + const c = cookies().getAll(); + const tkn = c; + return ( <> - + {/* {JSON.stringify(tkn)} */} + ; ); } diff --git a/src/app/dev/auth/register/page.tsx b/src/app/dev/auth/register/page.tsx new file mode 100644 index 00000000..f35d8b13 --- /dev/null +++ b/src/app/dev/auth/register/page.tsx @@ -0,0 +1,5 @@ +import { Register } from "@/app_modules/auth"; + +export default function Page() { + return ; +} diff --git a/src/app/dev/auth/splash/page.tsx b/src/app/dev/auth/splash/page.tsx index 5fd14a09..4b88fc97 100644 --- a/src/app/dev/auth/splash/page.tsx +++ b/src/app/dev/auth/splash/page.tsx @@ -1,12 +1,25 @@ import { SplashScreen } from "@/app_modules/auth"; import { useShallowEffect } from "@mantine/hooks"; +import { cookies } from "next/headers"; import { useRouter } from "next/navigation"; import { useState } from "react"; +import {unsealData} from "iron-session" + +export default async function PageSplash() { + const c = cookies().get("ssn"); + const tkn = !c + ? null + : JSON.parse( + await unsealData(c.value as string, { + password: process.env.PWD as string, + }) + ); + -export default function PageSplash() { return ( <> - + + ); } diff --git a/src/app/dev/auth/validasi/page.tsx b/src/app/dev/auth/validasi/page.tsx new file mode 100644 index 00000000..76eb53ac --- /dev/null +++ b/src/app/dev/auth/validasi/page.tsx @@ -0,0 +1,5 @@ +import { Validasi } from "@/app_modules/auth"; + +export default function Page() { + return ; +} diff --git a/src/app/dev/home/page.tsx b/src/app/dev/home/page.tsx index 489c9862..2a43fb7f 100644 --- a/src/app/dev/home/page.tsx +++ b/src/app/dev/home/page.tsx @@ -1,8 +1,24 @@ import { HomeView } from "@/app_modules/home"; +import { cookies } from "next/headers"; +import { unsealData } from "iron-session"; +import _ from "lodash"; +import { redirect } from "next/navigation"; + +export default async function Page() { + const c = cookies().get("ssn"); + const tkn = !c + ? null + : JSON.parse( + await unsealData(c.value as string, { + password: process.env.PWD as string, + }) + ); + + if (!c?.value) return redirect("/dev/auth/login"); -export default function Page() { return ( <> + {/* {JSON.stringify(tkn)} */} ); diff --git a/src/app/fun/my_console.ts b/src/app/fun/my_console.ts new file mode 100644 index 00000000..9bf87a99 --- /dev/null +++ b/src/app/fun/my_console.ts @@ -0,0 +1,8 @@ +import { useState } from "react"; + +export function MyConsole(value: any) { + const onData = false; + if (onData) { + console.log(value); + } + } diff --git a/src/app/fun/rondom_otp.ts b/src/app/fun/rondom_otp.ts new file mode 100644 index 00000000..4c578b23 --- /dev/null +++ b/src/app/fun/rondom_otp.ts @@ -0,0 +1,4 @@ +export function randomOTP(){ + const random = Math.floor(Math.random() * (9000 - 1000 )) + 1000 + return random; +} \ No newline at end of file diff --git a/src/app/lib/api.ts b/src/app/lib/api.ts new file mode 100644 index 00000000..72d6b4a8 --- /dev/null +++ b/src/app/lib/api.ts @@ -0,0 +1,9 @@ +export const ApiHipmi = { + // Get one token + get_token: "/api/user/get-token", + // Auth + login: "/api/auth/login", + validasi: "/api/auth/validasi", + register: "/api/auth/register", + logout: "/api/auth/logout", +}; diff --git a/src/app/lib/prisma.ts b/src/app/lib/prisma.ts new file mode 100644 index 00000000..553b19ad --- /dev/null +++ b/src/app/lib/prisma.ts @@ -0,0 +1,17 @@ +import { PrismaClient } from '@prisma/client' + +const prismaClientSingleton = () => { + return new PrismaClient() +} + +type PrismaClientSingleton = ReturnType + +const globalForPrisma = globalThis as unknown as { + prisma: PrismaClientSingleton | undefined +} + +const prisma = globalForPrisma.prisma ?? prismaClientSingleton() + +export default prisma + +if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma \ No newline at end of file diff --git a/src/app/lib/warna.ts b/src/app/lib/warna.ts new file mode 100644 index 00000000..537457ba --- /dev/null +++ b/src/app/lib/warna.ts @@ -0,0 +1,10 @@ +export const Warna = { + hijau_tua: "#297646", + hijau_muda: "#3da18d", + hijau_cerah: "#42c748", + kuning: "#fed630", + biru: "#3175b1", + merah: "#DE2E2D", + hitam: "#121517", + }; + \ No newline at end of file diff --git a/src/app/page.tsx b/src/app/page.tsx index 6cd2068f..76e0c4f4 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -3,5 +3,5 @@ import { redirect } from "next/navigation"; import PageSplash from "./dev/auth/splash/page"; export default async function Page() { - return ; + return } diff --git a/src/app_modules/auth/index.ts b/src/app_modules/auth/index.ts index ae882517..6cfd1f76 100644 --- a/src/app_modules/auth/index.ts +++ b/src/app_modules/auth/index.ts @@ -1,4 +1,7 @@ import SplashScreen from "./splash/view"; import Login from "./login/view"; +import Validasi from "./validasi/view"; +import Register from "./register/view"; +import Logout from "./logout/view"; -export {SplashScreen, Login} \ No newline at end of file +export { SplashScreen, Login, Validasi, Register, Logout }; diff --git a/src/app_modules/auth/login/view.tsx b/src/app_modules/auth/login/view.tsx index 44b7451b..d0edeb19 100644 --- a/src/app_modules/auth/login/view.tsx +++ b/src/app_modules/auth/login/view.tsx @@ -1,11 +1,98 @@ -"use client" -import { Center, Title } from "@mantine/core"; +"use client"; -export default function Login(){ - return <> -
- Login - -
+import { MyConsole } from "@/app/fun/my_console"; +import { randomOTP } from "@/app/fun/rondom_otp"; +import { ApiHipmi } from "@/app/lib/api"; +import { Warna } from "@/app/lib/warna"; +import { Button, Center, Flex, Stack, TextInput, Title } from "@mantine/core"; +import { getHotkeyHandler, useHotkeys } from "@mantine/hooks"; +import { useRouter } from "next/navigation"; +import { useState } from "react"; +import toast from "react-simple-toasts"; +import { useAtom } from "jotai"; +import { gs_otp, gs_nomor } from "../state/state"; +import { IconCircleLetterH } from "@tabler/icons-react"; + +export default function Login() { + const router = useRouter(); + const [nomor, setNomor] = useState(""); + const [inputNumber, setInputNumber] = useAtom(gs_nomor); + const [code, setCode] = useAtom(gs_otp); + + const onLogin = async () => { + const body = { + nomor: nomor, + otp: randomOTP(), + }; + + if (body.nomor.length < 10) return toast("Nomor minimal 10 digit"); + if (body.nomor.length > 13) return toast("Nomor maximal 13 digit"); + + await fetch(ApiHipmi.login, { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(body), + }) + .then((res) => res.json()) + .then((val) => { + MyConsole(val); + if (val.status == 200) { + toast(val.message); + setCode(val.body.otp); + setInputNumber(val.body.nomor); + router.push("/dev/auth/validasi"); + } else { + toast(val.message); + } + }); + }; + + return ( + <> + {/*
+        {JSON.stringify(inputNumber, null, 2)}
+        
+ {JSON.stringify(code)} +
*/} + + + <> + + Login + + { + setNomor(val.target.value); + }} + /> + + + + -} \ No newline at end of file + ); +} diff --git a/src/app_modules/auth/logout/view.tsx b/src/app_modules/auth/logout/view.tsx new file mode 100644 index 00000000..2b1384a4 --- /dev/null +++ b/src/app_modules/auth/logout/view.tsx @@ -0,0 +1,36 @@ +"use client"; +import { MyConsole } from "@/app/fun/my_console"; +import { ApiHipmi } from "@/app/lib/api"; +import { Button } from "@mantine/core"; +import { useRouter } from "next/navigation"; +import { useAtom } from "jotai"; +import { gs_nomor, gs_otp } from "../state/state"; + +export default function Logout() { + const router = useRouter(); + const [nomor, setnomor] = useAtom(gs_nomor); + const [code, setCode] = useAtom(gs_otp); + + const onLogout = async () => { + // MyConsole("keluar"); + + await fetch(ApiHipmi.logout) + .then((res) => res.json()) + .then((val) => { + if (val.status == 200) { + setnomor(null); + setCode(null); + + return router.push("/dev/auth/login"); + } + }); + }; + + return ( + <> + + + ); +} diff --git a/src/app_modules/auth/register/view.tsx b/src/app_modules/auth/register/view.tsx new file mode 100644 index 00000000..8eb9a977 --- /dev/null +++ b/src/app_modules/auth/register/view.tsx @@ -0,0 +1,87 @@ +"use client"; + +import { Warna } from "@/app/lib/warna"; +import { Flex, Title, TextInput, Button, Text } from "@mantine/core"; +import { IconCircleLetterH } from "@tabler/icons-react"; +import { gs_nomor } from "../state/state"; +import { useAtom } from "jotai"; +import { useState } from "react"; +import { MyConsole } from "@/app/fun/my_console"; +import toast from "react-simple-toasts"; +import { ApiHipmi } from "@/app/lib/api"; +import { useRouter } from "next/navigation"; + +export default function Register() { + const route = useRouter(); + const [nomor, setNomor] = useAtom(gs_nomor); + const [value, setValue] = useState(""); + + const onRegister = async () => { + MyConsole(value); + + const body = { + username: value, + nomor: nomor, + }; + + if (!body) return toast("Lengkapi username"); + if (body.username.length < 5) return toast("Username minimal 5 karakter"); + + await fetch(ApiHipmi.register, { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(body), + }) + .then((res) => res.json()) + .then((val) => { + MyConsole(val); + if (val.status == 201) { + toast("Pendaftaran Berhasil"); + return route.push("/dev/home"); + } else { + return toast(val.message); + } + }); + }; + + return ( + <> + + Registrasi + + + + { + setValue(val.target.value); + }} + /> + + Nomor : {nomor} + + + + + + ); +} diff --git a/src/app_modules/auth/splash/view.tsx b/src/app_modules/auth/splash/view.tsx index 868e77be..ff3a8eeb 100644 --- a/src/app_modules/auth/splash/view.tsx +++ b/src/app_modules/auth/splash/view.tsx @@ -5,12 +5,12 @@ import { useShallowEffect } from "@mantine/hooks"; import { useRouter } from "next/navigation"; import { useState } from "react"; -export default function SplashScreen() { +export default function SplashScreen({ data }: { data: any }) { const router = useRouter(); const [val, setVal] = useState(false); useShallowEffect(() => { - if (!val) { + if (!data) { setTimeout(() => { return router.push("/dev/auth/login"); }, 2000); diff --git a/src/app_modules/auth/state/state.ts b/src/app_modules/auth/state/state.ts new file mode 100644 index 00000000..04c96225 --- /dev/null +++ b/src/app_modules/auth/state/state.ts @@ -0,0 +1,4 @@ +import { atomWithStorage } from 'jotai/utils' + +export const gs_nomor = atomWithStorage("nomorHp", null) +export const gs_otp = atomWithStorage("code_otp", null) \ No newline at end of file diff --git a/src/app_modules/auth/validasi/view.tsx b/src/app_modules/auth/validasi/view.tsx new file mode 100644 index 00000000..2002cbd6 --- /dev/null +++ b/src/app_modules/auth/validasi/view.tsx @@ -0,0 +1,103 @@ +"use client"; + +import { useAtom } from "jotai"; +import { + Button, + Center, + Flex, + PinInput, + Stack, + Text, + Title, +} from "@mantine/core"; +import { gs_nomor, gs_otp } from "../state/state"; +import { Warna } from "@/app/lib/warna"; +import { useState } from "react"; +import { MyConsole } from "@/app/fun/my_console"; +import { IconCircleLetterH } from "@tabler/icons-react"; +import toast from "react-simple-toasts"; +import { ApiHipmi } from "@/app/lib/api"; +import { useRouter } from "next/navigation"; + +export default function Validasi() { + const router = useRouter(); + const [nomor, setnomor] = useAtom(gs_nomor); + const [code, setCode] = useAtom(gs_otp); + + const [inputCode, setInputOtp] = useState(""); + + const onValid = async () => { + // MyConsole(inputCode) + const body = { + nomor: nomor, + otp: code, + }; + + if (!inputCode) return toast("Lengkapi Kode"); + if (body.otp != inputCode) return toast("Kode Salah"); + + await fetch(ApiHipmi.validasi, { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(body), + }) + .then((res) => res.json()) + .then((val) => { + MyConsole(val); + if (val.status == 200) { + toast("Berhasil Login"); + return router.push("/dev/home"); + } else { + toast("Silahkan Registrasi"); + return router.push("/dev/auth/register"); + } + }); + }; + + return ( + <> + {/* {JSON.stringify(nomor)} + {JSON.stringify(code)} */} + + + Validasi Kode OTP + + + + Enter the 6-digit OTP , we’ve just sent + to {nomor} + + { + setInputOtp(val); + }} + /> + + + + + ); +} diff --git a/src/app_modules/home/view.tsx b/src/app_modules/home/view.tsx index 79d38a05..524fdb70 100644 --- a/src/app_modules/home/view.tsx +++ b/src/app_modules/home/view.tsx @@ -1,11 +1,30 @@ "use client"; -import { Title } from "@mantine/core"; +import { Text, Title } from "@mantine/core"; +import { Logout } from "../auth"; +import { useState } from "react"; +import { ApiHipmi } from "@/app/lib/api"; +import { useShallowEffect } from "@mantine/hooks"; export default function HomeView() { + const [token, setToken] = useState(null); + + useShallowEffect(() => { + userToken(); + }, []); + + async function userToken() { + await fetch(ApiHipmi.get_token) + .then((res) => res.json()) + .then((val) => setToken(val)); + } + return ( <> + {/*
{JSON.stringify(token, null, 2)}
*/} Home + Welcome, {token?.username} + ); } diff --git a/src/bin/seeder/user_role.json b/src/bin/seeder/user_role.json new file mode 100644 index 00000000..a3725b23 --- /dev/null +++ b/src/bin/seeder/user_role.json @@ -0,0 +1,18 @@ +[ + { + "id": 1, + "name": "User", + "user": 1 + + }, + { + "id": 2, + "name": "Admin", + "user": 2 + }, + { + "id": 3, + "name": "Super Admin", + "user": 3 + } + ] \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 76004960..47525054 100644 --- a/yarn.lock +++ b/yarn.lock @@ -321,10 +321,10 @@ resolved "https://registry.yarnpkg.com/@mantine/utils/-/utils-6.0.17.tgz#7d4a6c7686a3ee19a0ac248ef14780f00730837b" integrity sha512-U6SWV/asYE6NhiHx4ltmVZdQR3HwGVqJxVulhOylMcV1tX/P1LMQUCbGV2Oe4O9jbX4/YW5B/CBb4BbEhENQFQ== -"@next/env@13.4.12": - version "13.4.12" - resolved "https://registry.yarnpkg.com/@next/env/-/env-13.4.12.tgz#0b88115ab817f178bf9dc0c5e7b367277595b58d" - integrity sha512-RmHanbV21saP/6OEPBJ7yJMuys68cIf8OBBWd7+uj40LdpmswVAwe1uzeuFyUsd6SfeITWT3XnQfn6wULeKwDQ== +"@next/env@13.5.4-canary.8": + version "13.5.4-canary.8" + resolved "https://registry.yarnpkg.com/@next/env/-/env-13.5.4-canary.8.tgz#48b57f83a83af10d51cdf69f85d4aea75d4d953d" + integrity sha512-MUgfQcUNkByK4x16EewqRHsg7lGrkNjmH6Iml3cv6Yk0TV4vOSWKPGheO847McD/gN7ErxLQmH2WaWPfFOHSrA== "@next/eslint-plugin-next@13.4.12": version "13.4.12" @@ -333,50 +333,50 @@ dependencies: glob "7.1.7" -"@next/swc-darwin-arm64@13.4.12": - version "13.4.12" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.4.12.tgz#326c830b111de8a1a51ac0cbc3bcb157c4c4f92c" - integrity sha512-deUrbCXTMZ6ZhbOoloqecnUeNpUOupi8SE2tx4jPfNS9uyUR9zK4iXBvH65opVcA/9F5I/p8vDXSYbUlbmBjZg== +"@next/swc-darwin-arm64@13.5.4-canary.8": + version "13.5.4-canary.8" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.5.4-canary.8.tgz#6271e299d81d5b8be8d602c4ae8407b00ea57182" + integrity sha512-Juaj0EEdwHzPpXVNGvgs6q/YUn+QHeUrdzo04qEDrgqvir7DyiKtcdbW/K3qNtNybVuo1E/bs4TS/TCknUyfBw== -"@next/swc-darwin-x64@13.4.12": - version "13.4.12" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.12.tgz#dd5c49fc092a8ffe4f30b7aa9bf6c5d2e40bbfa1" - integrity sha512-WRvH7RxgRHlC1yb5oG0ZLx8F7uci9AivM5/HGGv9ZyG2Als8Ij64GC3d+mQ5sJhWjusyU6T6V1WKTUoTmOB0zQ== +"@next/swc-darwin-x64@13.5.4-canary.8": + version "13.5.4-canary.8" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-13.5.4-canary.8.tgz#be2756b056fbb92646f3fa3b066b0312e9b67b3e" + integrity sha512-RlcAtfZthP75P4tXtbMYaHsLLCRicv1X3XAqz93mlT1WwJnVp41zAZtZ/aCtzeXcB/LLI5gQJw2Nsuzc8qCRnQ== -"@next/swc-linux-arm64-gnu@13.4.12": - version "13.4.12" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.4.12.tgz#816cbe9d26ce4670ea99d95b66041e483ed122d6" - integrity sha512-YEKracAWuxp54tKiAvvq73PUs9lok57cc8meYRibTWe/VdPB2vLgkTVWFcw31YDuRXdEhdX0fWS6Q+ESBhnEig== +"@next/swc-linux-arm64-gnu@13.5.4-canary.8": + version "13.5.4-canary.8" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.5.4-canary.8.tgz#681a3ca32ee35484e9181008c38e08d973fba69d" + integrity sha512-g1JzCTAjUQTpiy2fSG4Zoax3qajJXXlJy2SNPKsI2uXGMcJWI+Ab3ah/Pf12HQne2kZI4rNHBI9W0hTFD7sAxw== -"@next/swc-linux-arm64-musl@13.4.12": - version "13.4.12" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.4.12.tgz#670c8aee221628f65e5b299ee84db746e6c778b0" - integrity sha512-LhJR7/RAjdHJ2Isl2pgc/JaoxNk0KtBgkVpiDJPVExVWA1c6gzY57+3zWuxuyWzTG+fhLZo2Y80pLXgIJv7g3g== +"@next/swc-linux-arm64-musl@13.5.4-canary.8": + version "13.5.4-canary.8" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.5.4-canary.8.tgz#22db6759ecd0518f50931eb31efd2481bde86b3b" + integrity sha512-/GNNsUGgsdLOXIujc04sXhHvfsi14QaWZvkfb4Lhaf7YFCA7tgwGHcAhfDs8pDOZ2rDW5Fp31kh9a53R7pO25Q== -"@next/swc-linux-x64-gnu@13.4.12": - version "13.4.12" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.12.tgz#54c64e689f007ae463698dddc1c6637491c99cb4" - integrity sha512-1DWLL/B9nBNiQRng+1aqs3OaZcxC16Nf+mOnpcrZZSdyKHek3WQh6j/fkbukObgNGwmCoVevLUa/p3UFTTqgqg== +"@next/swc-linux-x64-gnu@13.5.4-canary.8": + version "13.5.4-canary.8" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.5.4-canary.8.tgz#c2e5162c3f40dbf50393aabd7991074eefa63cfc" + integrity sha512-Sd7Scf9DAIEZJ532x3t0KUyKK2oFf6QxAVnSkLn2dTOYNeANhRC+cHe3r61UC5/hj+lLAfflDYBNxZd55CxXuw== -"@next/swc-linux-x64-musl@13.4.12": - version "13.4.12" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.12.tgz#9cbddf4e542ef3d32284e0c36ce102facc015f8b" - integrity sha512-kEAJmgYFhp0VL+eRWmUkVxLVunn7oL9Mdue/FS8yzRBVj7Z0AnIrHpTIeIUl1bbdQq1VaoOztnKicAjfkLTRCQ== +"@next/swc-linux-x64-musl@13.5.4-canary.8": + version "13.5.4-canary.8" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.5.4-canary.8.tgz#113a0ac43329db60e79b890fe5fc3ff1b0b2d9eb" + integrity sha512-9bV1yFFIX9h1wqz6QluBkPT/GO245ZSYt07nGymJ3JfrwKOU8Lwy5OVfVsZO8Ov365ZU3w+OQJSipiiqvRnSmw== -"@next/swc-win32-arm64-msvc@13.4.12": - version "13.4.12" - resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.12.tgz#3467a4b25429ccf49fd416388c9d19c80a4f6465" - integrity sha512-GMLuL/loR6yIIRTnPRY6UGbLL9MBdw2anxkOnANxvLvsml4F0HNIgvnU3Ej4BjbqMTNjD4hcPFdlEow4XHPdZA== +"@next/swc-win32-arm64-msvc@13.5.4-canary.8": + version "13.5.4-canary.8" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.5.4-canary.8.tgz#7d21b7424bda5759f8137ba0d95e22b047cbde33" + integrity sha512-wAVdSIp/edgc7e5A1hFYTgL7VAC9bKaLIody8S4ds+9VS/PyA1vzrXlwdCBeekxK6cw7uNYByU6eDMXl4SkMaw== -"@next/swc-win32-ia32-msvc@13.4.12": - version "13.4.12" - resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.12.tgz#73494cd167191946833c680b28d6a42435d383a8" - integrity sha512-PhgNqN2Vnkm7XaMdRmmX0ZSwZXQAtamBVSa9A/V1dfKQCV1rjIZeiy/dbBnVYGdj63ANfsOR/30XpxP71W0eww== +"@next/swc-win32-ia32-msvc@13.5.4-canary.8": + version "13.5.4-canary.8" + resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.5.4-canary.8.tgz#b7102ead6ff1ef4c20030e9a5119d0185e466253" + integrity sha512-2rHgUACbiDBF2AwMAhHN1x5FlMNuEgk/3cA0tac91bHQ/pTmvF03BZVqK6z+L0rIJulkZ32Abf1UsoJgzEjjuw== -"@next/swc-win32-x64-msvc@13.4.12": - version "13.4.12" - resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.12.tgz#4a497edc4e8c5ee3c3eb27cf0eb39dfadff70874" - integrity sha512-Z+56e/Ljt0bUs+T+jPjhFyxYBcdY2RIq9ELFU+qAMQMteHo7ymbV7CKmlcX59RI9C4YzN8PgMgLyAoi916b5HA== +"@next/swc-win32-x64-msvc@13.5.4-canary.8": + version "13.5.4-canary.8" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.5.4-canary.8.tgz#e9a782c18adafe672129d80dfc6a19c399d70595" + integrity sha512-MCVBd7NRtcRH+hPFXLnhS9v73WnZ0nhdSciYmrB2TqzYoZnTNj9QB+ldHv6d7wvcXmMRqe1EbT1yoR/yUY+IjA== "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -399,6 +399,33 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@peculiar/asn1-schema@^2.3.6": + version "2.3.6" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-2.3.6.tgz#3dd3c2ade7f702a9a94dfb395c192f5fa5d6b922" + integrity sha512-izNRxPoaeJeg/AyH8hER6s+H7p4itk+03QCa4sbxI3lNdseQYCuxzgsuNK8bTXChtLTjpJz6NmXKA73qLa3rCA== + dependencies: + asn1js "^3.0.5" + pvtsutils "^1.3.2" + tslib "^2.4.0" + +"@peculiar/json-schema@^1.1.12": + version "1.1.12" + resolved "https://registry.yarnpkg.com/@peculiar/json-schema/-/json-schema-1.1.12.tgz#fe61e85259e3b5ba5ad566cb62ca75b3d3cd5339" + integrity sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w== + dependencies: + tslib "^2.0.0" + +"@peculiar/webcrypto@^1.4.0": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@peculiar/webcrypto/-/webcrypto-1.4.3.tgz#078b3e8f598e847b78683dc3ba65feb5029b93a7" + integrity sha512-VtaY4spKTdN5LjJ04im/d/joXuvLbQdgy5Z4DXF4MFZhQ+MTrejbNMkfZBp1Bs3O5+bFqnJgyGdPuZQflvIa5A== + dependencies: + "@peculiar/asn1-schema" "^2.3.6" + "@peculiar/json-schema" "^1.1.12" + pvtsutils "^1.3.2" + tslib "^2.5.0" + webcrypto-core "^1.7.7" + "@pkgr/utils@^2.3.1": version "2.4.2" resolved "https://registry.yarnpkg.com/@pkgr/utils/-/utils-2.4.2.tgz#9e638bbe9a6a6f165580dc943f138fd3309a2cbc" @@ -518,23 +545,159 @@ resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.3.2.tgz#31b9c510d8cada9683549e1dbb4284cca5001faf" integrity sha512-V+MvGwaHH03hYhY+k6Ef/xKd6RYlc4q8WBx+2ANmipHJcKuktNcI/NgEsJgdSUF6Lw32njT6OnrRsKYCdgHjYw== -"@swc/helpers@0.5.1": - version "0.5.1" - resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.1.tgz#e9031491aa3f26bfcc974a67f48bd456c8a5357a" - integrity sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg== +"@swc/helpers@0.5.2": + version "0.5.2" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.2.tgz#85ea0c76450b61ad7d10a37050289eded783c27d" + integrity sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw== dependencies: tslib "^2.4.0" +"@tabler/icons-react@^2.38.0": + version "2.38.0" + resolved "https://registry.yarnpkg.com/@tabler/icons-react/-/icons-react-2.38.0.tgz#2f77785ab4b6a0aee3f056675b97c6fe8a1b4af8" + integrity sha512-4oLo7z7HkFQXZNNAo3tmhpdZTeFrSNSxngmrEOGZ6WsjT2WRlc6kcEHMVxfCekV19JeB6Yprg30Bdr4sUYJLiQ== + dependencies: + "@tabler/icons" "2.38.0" + prop-types "^15.7.2" + +"@tabler/icons@2.38.0": + version "2.38.0" + resolved "https://registry.yarnpkg.com/@tabler/icons/-/icons-2.38.0.tgz#fe79c675aafa9a2bbacb6d3c02d6b38662fae890" + integrity sha512-icDKK6n8jUYAavHK+L2Xe0/tYjwZVS7uhVazhCMVjdm3RfJLFbeLSNEIWcYdGOg6QAock9yqWse8hnhvsy2M3w== + +"@types/accepts@*": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/accepts/-/accepts-1.3.5.tgz#c34bec115cfc746e04fe5a059df4ce7e7b391575" + integrity sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ== + dependencies: + "@types/node" "*" + +"@types/body-parser@*": + version "1.19.3" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.3.tgz#fb558014374f7d9e56c8f34bab2042a3a07d25cd" + integrity sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/connect@*": + version "3.4.36" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.36.tgz#e511558c15a39cb29bd5357eebb57bd1459cd1ab" + integrity sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w== + dependencies: + "@types/node" "*" + +"@types/content-disposition@*": + version "0.5.6" + resolved "https://registry.yarnpkg.com/@types/content-disposition/-/content-disposition-0.5.6.tgz#0f5fa03609f308a7a1a57e0b0afe4b95f1d19740" + integrity sha512-GmShTb4qA9+HMPPaV2+Up8tJafgi38geFi7vL4qAM7k8BwjoelgHZqEUKJZLvughUw22h6vD/wvwN4IUCaWpDA== + +"@types/cookie@^0.5.1": + version "0.5.2" + resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.5.2.tgz#9bf9d62c838c85a07c92fdf2334c2c14fd9c59a9" + integrity sha512-DBpRoJGKJZn7RY92dPrgoMew8xCWc2P71beqsjyhEI/Ds9mOyVmBwtekyfhpwFIVt1WrxTonFifiOZ62V8CnNA== + +"@types/cookies@*": + version "0.7.8" + resolved "https://registry.yarnpkg.com/@types/cookies/-/cookies-0.7.8.tgz#16fccd6d58513a9833c527701a90cc96d216bc18" + integrity sha512-y6KhF1GtsLERUpqOV+qZJrjUGzc0GE6UTa0b5Z/LZ7Nm2mKSdCXmS6Kdnl7fctPNnMSouHjxqEWI12/YqQfk5w== + dependencies: + "@types/connect" "*" + "@types/express" "*" + "@types/keygrip" "*" + "@types/node" "*" + +"@types/express-serve-static-core@^4.17.33": + version "4.17.37" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.37.tgz#7e4b7b59da9142138a2aaa7621f5abedce8c7320" + integrity sha512-ZohaCYTgGFcOP7u6aJOhY9uIZQgZ2vxC2yWoArY+FeDXlqeH66ZVBjgvg+RLVAS/DWNq4Ap9ZXu1+SUQiiWYMg== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + "@types/send" "*" + +"@types/express@*", "@types/express@^4.17.13": + version "4.17.18" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.18.tgz#efabf5c4495c1880df1bdffee604b143b29c4a95" + integrity sha512-Sxv8BSLLgsBYmcnGdGjjEjqET2U+AKAdCRODmMiq02FgjwuV75Ut85DRpvFjyw/Mk0vgUOliGRU0UUmuuZHByQ== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.33" + "@types/qs" "*" + "@types/serve-static" "*" + +"@types/http-assert@*": + version "1.5.3" + resolved "https://registry.yarnpkg.com/@types/http-assert/-/http-assert-1.5.3.tgz#ef8e3d1a8d46c387f04ab0f2e8ab8cb0c5078661" + integrity sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA== + +"@types/http-errors@*": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.2.tgz#a86e00bbde8950364f8e7846687259ffcd96e8c2" + integrity sha512-lPG6KlZs88gef6aD85z3HNkztpj7w2R7HmR3gygjfXCQmsLloWNARFkMuzKiiY8FGdh1XDpgBdrSf4aKDiA7Kg== + "@types/json5@^0.0.29": version "0.0.29" resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== +"@types/keygrip@*": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@types/keygrip/-/keygrip-1.0.3.tgz#2286b16ef71d8dea74dab00902ef419a54341bfe" + integrity sha512-tfzBBb7OV2PbUfKbG6zRE5UbmtdLVCKT/XT364Z9ny6pXNbd9GnIB6aFYpq2A5lZ6mq9bhXgK6h5MFGNwhMmuQ== + +"@types/koa-compose@*": + version "3.2.6" + resolved "https://registry.yarnpkg.com/@types/koa-compose/-/koa-compose-3.2.6.tgz#17a077786d0ac5eee04c37a7d6c207b3252f6de9" + integrity sha512-PHiciWxH3NRyAaxUdEDE1NIZNfvhgtPlsdkjRPazHC6weqt90Jr0uLhIQs+SDwC8HQ/jnA7UQP6xOqGFB7ugWw== + dependencies: + "@types/koa" "*" + +"@types/koa@*", "@types/koa@^2.13.5": + version "2.13.9" + resolved "https://registry.yarnpkg.com/@types/koa/-/koa-2.13.9.tgz#8d989ac17d7f033475fbe34c4f906c9287c2041a" + integrity sha512-tPX3cN1dGrMn+sjCDEiQqXH2AqlPoPd594S/8zxwUm/ZbPsQXKqHPUypr2gjCPhHUc+nDJLduhh5lXI/1olnGQ== + dependencies: + "@types/accepts" "*" + "@types/content-disposition" "*" + "@types/cookies" "*" + "@types/http-assert" "*" + "@types/http-errors" "*" + "@types/keygrip" "*" + "@types/koa-compose" "*" + "@types/node" "*" + +"@types/lodash@^4.14.199": + version "4.14.199" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.199.tgz#c3edb5650149d847a277a8961a7ad360c474e9bf" + integrity sha512-Vrjz5N5Ia4SEzWWgIVwnHNEnb1UE1XMkvY5DGXrAeOGE9imk0hgTHh5GyDjLDJi9OTCn9oo9dXH1uToK1VRfrg== + +"@types/mime@*": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.2.tgz#c1ae807f13d308ee7511a5b81c74f327028e66e8" + integrity sha512-Wj+fqpTLtTbG7c0tH47dkahefpLKEbB+xAZuLq7b4/IDHPl/n6VoXcyUQ2bypFlbSwvCr0y+bD4euTTqTJsPxQ== + +"@types/mime@^1": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.3.tgz#bbe64987e0eb05de150c305005055c7ad784a9ce" + integrity sha512-Ys+/St+2VF4+xuY6+kDIXGxbNRO0mesVg0bbxEfB97Od1Vjpjx9KD1qxs64Gcb3CWPirk9Xe+PT4YiiHQ9T+eg== + +"@types/node@*": + version "20.8.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.0.tgz#10ddf0119cf20028781c06d7115562934e53f745" + integrity sha512-LzcWltT83s1bthcvjBmiBvGJiiUe84NWRHkw+ZV6Fr41z2FbIzvc815dk2nQ3RAKMuN2fkenM/z3Xv2QzEpYxQ== + "@types/node@20.4.5": version "20.4.5" resolved "https://registry.yarnpkg.com/@types/node/-/node-20.4.5.tgz#9dc0a5cb1ccce4f7a731660935ab70b9c00a5d69" integrity sha512-rt40Nk13II9JwQBdeYqmbn2Q6IVTA5uPhvSO+JVqdXw/6/4glI6oR9ezty/A9Hg5u7JH4OmYmuQ+XvjKm0Datg== +"@types/node@^17.0.41": + version "17.0.45" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.45.tgz#2c0fafd78705e7a18b7906b5201a522719dc5190" + integrity sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw== + "@types/parse-json@^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" @@ -545,6 +708,16 @@ resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== +"@types/qs@*": + version "6.9.8" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.8.tgz#f2a7de3c107b89b441e071d5472e6b726b4adf45" + integrity sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg== + +"@types/range-parser@*": + version "1.2.5" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.5.tgz#38bd1733ae299620771bd414837ade2e57757498" + integrity sha512-xrO9OoVPqFuYyR/loIHjnbvvyRZREYKLjxV4+dY6v3FQR3stQ9ZxIGkaclF7YhI9hfjpuTbu14hZEy94qKLtOA== + "@types/react-dom@18.2.7": version "18.2.7" resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.7.tgz#67222a08c0a6ae0a0da33c3532348277c70abb63" @@ -566,6 +739,23 @@ resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.3.tgz#cef09e3ec9af1d63d2a6cc5b383a737e24e6dcf5" integrity sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ== +"@types/send@*": + version "0.17.2" + resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.2.tgz#af78a4495e3c2b79bfbdac3955fdd50e03cc98f2" + integrity sha512-aAG6yRf6r0wQ29bkS+x97BIs64ZLxeE/ARwyS6wrldMm3C1MdKwCcnnEwMC1slI8wuxJOpiUH9MioC0A0i+GJw== + dependencies: + "@types/mime" "^1" + "@types/node" "*" + +"@types/serve-static@*": + version "1.15.3" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.3.tgz#2cfacfd1fd4520bbc3e292cca432d5e8e2e3ee61" + integrity sha512-yVRvFsEMrv7s0lGhzrggJjNOSmZCdgCjw9xWrPr/kNNLp6FaDfMC1KaYl3TSJ0c58bECwNBMoQrZJ8hA8E1eFg== + dependencies: + "@types/http-errors" "*" + "@types/mime" "*" + "@types/node" "*" + "@typescript-eslint/parser@^5.42.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7" @@ -753,6 +943,15 @@ arraybuffer.prototype.slice@^1.0.1: is-array-buffer "^3.0.2" is-shared-array-buffer "^1.0.2" +asn1js@^3.0.1, asn1js@^3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/asn1js/-/asn1js-3.0.5.tgz#5ea36820443dbefb51cc7f88a2ebb5b462114f38" + integrity sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ== + dependencies: + pvtsutils "^1.3.2" + pvutils "^1.1.3" + tslib "^2.4.0" + ast-types-flow@^0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" @@ -801,6 +1000,11 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + big-integer@^1.6.44: version "1.6.51" resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" @@ -848,6 +1052,14 @@ buffer-from@~0.1.1: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-0.1.2.tgz#15f4b9bcef012044df31142c14333caf6e0260d0" integrity sha512-RiWIenusJsmI2KcvqQABB83tLxCByE3upSP8QU3rJDMVFGPWLvPQJt/O1Su9moRWeH7d+Q2HYb68f6+v+tw2vg== +buffer@^6: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + bundle-name@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bundle-name/-/bundle-name-3.0.0.tgz#ba59bcc9ac785fb67ccdbf104a2bf60c099f0e1a" @@ -966,6 +1178,11 @@ convert-source-map@^1.5.0: resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== +cookie@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== + core-util-is@~1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" @@ -1853,6 +2070,11 @@ human-signals@^4.3.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-4.3.1.tgz#ab7f811e851fca97ffbd2c1fe9a958964de321b2" integrity sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ== +ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + ignore@^5.2.0, ignore@^5.2.4: version "5.2.4" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" @@ -1905,6 +2127,26 @@ invariant@^2.2.4: dependencies: loose-envify "^1.0.0" +iron-session@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/iron-session/-/iron-session-6.3.1.tgz#9c8b331acc0f9561dd0f942b089e8197576a03de" + integrity sha512-3UJ7y2vk/WomAtEySmPgM6qtYF1cZ3tXuWX5GsVX4PJXAcs5y/sV9HuSfpjKS6HkTL/OhZcTDWJNLZ7w+Erx3A== + dependencies: + "@peculiar/webcrypto" "^1.4.0" + "@types/cookie" "^0.5.1" + "@types/express" "^4.17.13" + "@types/koa" "^2.13.5" + "@types/node" "^17.0.41" + cookie "^0.5.0" + iron-webcrypto "^0.2.5" + +iron-webcrypto@^0.2.5: + version "0.2.8" + resolved "https://registry.yarnpkg.com/iron-webcrypto/-/iron-webcrypto-0.2.8.tgz#7258fb87aa60122949e9900a49ae0f28cf4813b4" + integrity sha512-YPdCvjFMOBjXaYuDj5tiHst5CEk6Xw84Jo8Y2+jzhMceclAnb3+vNPP/CTtb5fO2ZEuXEaO4N+w62Vfko757KA== + dependencies: + buffer "^6" + is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" @@ -2096,6 +2338,11 @@ jiti@^1.18.2: resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.19.1.tgz#fa99e4b76a23053e0e7cde098efe1704a14c16f1" integrity sha512-oVhqoRDaBXf7sjkll95LHVS6Myyyb1zaunVwk4Z0+WPSW4gjS0pl01zYKHScTuyEhQsFxV5L4DR5r+YqSyqyyg== +jotai@^2.4.3: + version "2.4.3" + resolved "https://registry.yarnpkg.com/jotai/-/jotai-2.4.3.tgz#a8eff8ca6de968d6a04616329dd1335ce52e70f3" + integrity sha512-CSAHX9LqWG5WCrU8OgBoZbBJ+Bo9rQU0mPusEF4e0CZ/SNFgurG26vb3UpgvCSJZgYVcUQNiUBM5q86PA8rstQ== + "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -2182,6 +2429,11 @@ lodash.merge@^4.6.2: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" @@ -2263,7 +2515,7 @@ mz@^2.7.0: object-assign "^4.0.1" thenify-all "^1.0.0" -nanoid@^3.3.4, nanoid@^3.3.6: +nanoid@^3.3.6: version "3.3.6" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== @@ -2273,29 +2525,28 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -next@13.4.12: - version "13.4.12" - resolved "https://registry.yarnpkg.com/next/-/next-13.4.12.tgz#809b21ea0aabbe88ced53252c88c4a5bd5af95df" - integrity sha512-eHfnru9x6NRmTMcjQp6Nz0J4XH9OubmzOa7CkWL+AUrUxpibub3vWwttjduu9No16dug1kq04hiUUpo7J3m3Xw== +next@^13.5.4-canary.8: + version "13.5.4-canary.8" + resolved "https://registry.yarnpkg.com/next/-/next-13.5.4-canary.8.tgz#e9424a0cd76d3a0b12ed71f21b2b8647dec5cf0b" + integrity sha512-fAQV8yr2jywHu7gE7Wz6xEz03W2Lmr6437ajJcDGhhMwbN/rLLM1UsZGYV9+qC1Rriy734RGaHbWbrvGpLbrjA== dependencies: - "@next/env" "13.4.12" - "@swc/helpers" "0.5.1" + "@next/env" "13.5.4-canary.8" + "@swc/helpers" "0.5.2" busboy "1.6.0" caniuse-lite "^1.0.30001406" - postcss "8.4.14" + postcss "8.4.31" styled-jsx "5.1.1" watchpack "2.4.0" - zod "3.21.4" optionalDependencies: - "@next/swc-darwin-arm64" "13.4.12" - "@next/swc-darwin-x64" "13.4.12" - "@next/swc-linux-arm64-gnu" "13.4.12" - "@next/swc-linux-arm64-musl" "13.4.12" - "@next/swc-linux-x64-gnu" "13.4.12" - "@next/swc-linux-x64-musl" "13.4.12" - "@next/swc-win32-arm64-msvc" "13.4.12" - "@next/swc-win32-ia32-msvc" "13.4.12" - "@next/swc-win32-x64-msvc" "13.4.12" + "@next/swc-darwin-arm64" "13.5.4-canary.8" + "@next/swc-darwin-x64" "13.5.4-canary.8" + "@next/swc-linux-arm64-gnu" "13.5.4-canary.8" + "@next/swc-linux-arm64-musl" "13.5.4-canary.8" + "@next/swc-linux-x64-gnu" "13.5.4-canary.8" + "@next/swc-linux-x64-musl" "13.5.4-canary.8" + "@next/swc-win32-arm64-msvc" "13.5.4-canary.8" + "@next/swc-win32-ia32-msvc" "13.5.4-canary.8" + "@next/swc-win32-x64-msvc" "13.5.4-canary.8" node-releases@^2.0.12: version "2.0.13" @@ -2564,15 +2815,6 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0: resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@8.4.14: - version "8.4.14" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf" - integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== - dependencies: - nanoid "^3.3.4" - picocolors "^1.0.0" - source-map-js "^1.0.2" - postcss@8.4.27, postcss@^8.4.23: version "8.4.27" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.27.tgz#234d7e4b72e34ba5a92c29636734349e0d9c3057" @@ -2582,6 +2824,15 @@ postcss@8.4.27, postcss@^8.4.23: picocolors "^1.0.0" source-map-js "^1.0.2" +postcss@8.4.31: + version "8.4.31" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" + integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== + dependencies: + nanoid "^3.3.6" + picocolors "^1.0.0" + source-map-js "^1.0.2" + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -2592,7 +2843,7 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -prop-types@^15.8.1: +prop-types@^15.7.2, prop-types@^15.8.1: version "15.8.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -2606,6 +2857,18 @@ punycode@^2.1.0: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== +pvtsutils@^1.3.2: + version "1.3.5" + resolved "https://registry.yarnpkg.com/pvtsutils/-/pvtsutils-1.3.5.tgz#b8705b437b7b134cd7fd858f025a23456f1ce910" + integrity sha512-ARvb14YB9Nm2Xi6nBq1ZX6dAM0FsJnuk+31aUp4TrcZEdKUlSqOqsxJHUPJDNE3qiIp+iUPEIeR6Je/tgV7zsA== + dependencies: + tslib "^2.6.1" + +pvutils@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/pvutils/-/pvutils-1.1.3.tgz#f35fc1d27e7cd3dfbd39c0826d173e806a03f5a3" + integrity sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ== + queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" @@ -2648,6 +2911,11 @@ react-remove-scroll@^2.5.5: use-callback-ref "^1.3.0" use-sidecar "^1.1.2" +react-simple-toasts@^5.10.0: + version "5.10.0" + resolved "https://registry.yarnpkg.com/react-simple-toasts/-/react-simple-toasts-5.10.0.tgz#cfa692cd06fe858ea327adf32e72db2199459fa7" + integrity sha512-GIsBaLkZnyqeTzs0fSmXoLr5GtSnHv9C35tEx/2mc8H7/OaTlwXRHjm0ssDP454gvI4rZFS+rnj2HOL5zuiiwA== + react-style-singleton@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/react-style-singleton/-/react-style-singleton-2.2.1.tgz#f99e420492b2d8f34d38308ff660b60d0b1205b4" @@ -3130,6 +3398,11 @@ tslib@^2.0.0, tslib@^2.1.0, tslib@^2.4.0, tslib@^2.5.0, tslib@^2.6.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.1.tgz#fd8c9a0ff42590b25703c0acb3de3d3f4ede0410" integrity sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig== +tslib@^2.6.1: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + tsutils@^3.21.0: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" @@ -3268,6 +3541,17 @@ watchpack@2.4.0: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" +webcrypto-core@^1.7.7: + version "1.7.7" + resolved "https://registry.yarnpkg.com/webcrypto-core/-/webcrypto-core-1.7.7.tgz#06f24b3498463e570fed64d7cab149e5437b162c" + integrity sha512-7FjigXNsBfopEj+5DV2nhNpfic2vumtjjgPmeDKk45z+MJwXKKfhPB7118Pfzrmh4jqOMST6Ch37iPAHoImg5g== + dependencies: + "@peculiar/asn1-schema" "^2.3.6" + "@peculiar/json-schema" "^1.1.12" + asn1js "^3.0.1" + pvtsutils "^1.3.2" + tslib "^2.4.0" + which-boxed-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" @@ -3328,8 +3612,3 @@ yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== - -zod@3.21.4: - version "3.21.4" - resolved "https://registry.yarnpkg.com/zod/-/zod-3.21.4.tgz#10882231d992519f0a10b5dd58a38c9dabbb64db" - integrity sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==