3
.env
3
.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"
|
||||
DATABASE_URL="postgresql://bip:Production_123@localhost:5433/hipmi?schema=public"
|
||||
PWD="QWERTYUIOPLKJHGFDSAZXCVBNMQAZWSXEDCRFVTGBYHNUJMIKOLPPOIUYTREWQLKJHGFDSAMNBVCXZ"
|
||||
29
README_DEV.md
Normal file
29
README_DEV.md
Normal file
@@ -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
|
||||
@@ -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"
|
||||
}
|
||||
|
||||
51
prisma/migrations/20231002020725_new_prisma/migration.sql
Normal file
51
prisma/migrations/20231002020725_new_prisma/migration.sql
Normal file
@@ -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;
|
||||
3
prisma/migrations/migration_lock.toml
Normal file
3
prisma/migrations/migration_lock.toml
Normal file
@@ -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"
|
||||
@@ -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
|
||||
}
|
||||
|
||||
20
src/app/api/auth/login/route.ts
Normal file
20
src/app/api/auth/login/route.ts
Normal file
@@ -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 });
|
||||
}
|
||||
12
src/app/api/auth/logout/route.ts
Normal file
12
src/app/api/auth/logout/route.ts
Normal file
@@ -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" });
|
||||
}
|
||||
55
src/app/api/auth/register/route.ts
Normal file
55
src/app/api/auth/register/route.ts
Normal file
@@ -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 });
|
||||
}
|
||||
52
src/app/api/auth/validasi/route.ts
Normal file
52
src/app/api/auth/validasi/route.ts
Normal file
@@ -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 });
|
||||
}
|
||||
27
src/app/api/seeder/route.ts
Normal file
27
src/app/api/seeder/route.ts
Normal file
@@ -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 });
|
||||
}
|
||||
12
src/app/api/user/get-token/route.ts
Normal file
12
src/app/api/user/get-token/route.ts
Normal file
@@ -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);
|
||||
}
|
||||
@@ -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 (
|
||||
<>
|
||||
<Login />
|
||||
{/* {JSON.stringify(tkn)} */}
|
||||
<Login />;
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
5
src/app/dev/auth/register/page.tsx
Normal file
5
src/app/dev/auth/register/page.tsx
Normal file
@@ -0,0 +1,5 @@
|
||||
import { Register } from "@/app_modules/auth";
|
||||
|
||||
export default function Page() {
|
||||
return <Register />;
|
||||
}
|
||||
@@ -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 (
|
||||
<>
|
||||
<SplashScreen />
|
||||
|
||||
<SplashScreen data={tkn} />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
5
src/app/dev/auth/validasi/page.tsx
Normal file
5
src/app/dev/auth/validasi/page.tsx
Normal file
@@ -0,0 +1,5 @@
|
||||
import { Validasi } from "@/app_modules/auth";
|
||||
|
||||
export default function Page() {
|
||||
return <Validasi />;
|
||||
}
|
||||
@@ -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)} */}
|
||||
<HomeView />
|
||||
</>
|
||||
);
|
||||
|
||||
8
src/app/fun/my_console.ts
Normal file
8
src/app/fun/my_console.ts
Normal file
@@ -0,0 +1,8 @@
|
||||
import { useState } from "react";
|
||||
|
||||
export function MyConsole(value: any) {
|
||||
const onData = false;
|
||||
if (onData) {
|
||||
console.log(value);
|
||||
}
|
||||
}
|
||||
4
src/app/fun/rondom_otp.ts
Normal file
4
src/app/fun/rondom_otp.ts
Normal file
@@ -0,0 +1,4 @@
|
||||
export function randomOTP(){
|
||||
const random = Math.floor(Math.random() * (9000 - 1000 )) + 1000
|
||||
return random;
|
||||
}
|
||||
9
src/app/lib/api.ts
Normal file
9
src/app/lib/api.ts
Normal file
@@ -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",
|
||||
};
|
||||
17
src/app/lib/prisma.ts
Normal file
17
src/app/lib/prisma.ts
Normal file
@@ -0,0 +1,17 @@
|
||||
import { PrismaClient } from '@prisma/client'
|
||||
|
||||
const prismaClientSingleton = () => {
|
||||
return new PrismaClient()
|
||||
}
|
||||
|
||||
type PrismaClientSingleton = ReturnType<typeof prismaClientSingleton>
|
||||
|
||||
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
|
||||
10
src/app/lib/warna.ts
Normal file
10
src/app/lib/warna.ts
Normal file
@@ -0,0 +1,10 @@
|
||||
export const Warna = {
|
||||
hijau_tua: "#297646",
|
||||
hijau_muda: "#3da18d",
|
||||
hijau_cerah: "#42c748",
|
||||
kuning: "#fed630",
|
||||
biru: "#3175b1",
|
||||
merah: "#DE2E2D",
|
||||
hitam: "#121517",
|
||||
};
|
||||
|
||||
@@ -3,5 +3,5 @@ import { redirect } from "next/navigation";
|
||||
import PageSplash from "./dev/auth/splash/page";
|
||||
|
||||
export default async function Page() {
|
||||
return <PageSplash />;
|
||||
return <PageSplash/>
|
||||
}
|
||||
|
||||
@@ -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}
|
||||
export { SplashScreen, Login, Validasi, Register, Logout };
|
||||
|
||||
@@ -1,11 +1,98 @@
|
||||
"use client"
|
||||
import { Center, Title } from "@mantine/core";
|
||||
"use client";
|
||||
|
||||
export default function Login(){
|
||||
return <>
|
||||
<Center h={"100vh"}>
|
||||
<Title>Login</Title>
|
||||
|
||||
</Center>
|
||||
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 (
|
||||
<>
|
||||
{/* <pre>
|
||||
{JSON.stringify(inputNumber, null, 2)}
|
||||
<br />
|
||||
{JSON.stringify(code)}
|
||||
</pre> */}
|
||||
|
||||
<Flex
|
||||
h={"100vh"}
|
||||
direction={"column"}
|
||||
justify={"center"}
|
||||
align={"center"}
|
||||
gap={"lg"}
|
||||
>
|
||||
<>
|
||||
<IconCircleLetterH size={150} />
|
||||
<Title>Login</Title>
|
||||
|
||||
<TextInput
|
||||
label="Phone Number"
|
||||
w={250}
|
||||
type="number"
|
||||
placeholder="62 xx xxx xxx xxx"
|
||||
// value={nomor}
|
||||
onChange={(val) => {
|
||||
setNomor(val.target.value);
|
||||
}}
|
||||
/>
|
||||
|
||||
<Button
|
||||
h={30}
|
||||
radius={50}
|
||||
compact
|
||||
bg={Warna.hijau_muda}
|
||||
color={"green"}
|
||||
onClick={() => {
|
||||
onLogin();
|
||||
}}
|
||||
>
|
||||
Login
|
||||
</Button>
|
||||
</>
|
||||
</Flex>
|
||||
</>
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
36
src/app_modules/auth/logout/view.tsx
Normal file
36
src/app_modules/auth/logout/view.tsx
Normal file
@@ -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 (
|
||||
<>
|
||||
<Button compact onClick={() => onLogout()}>
|
||||
Logout
|
||||
</Button>
|
||||
</>
|
||||
);
|
||||
}
|
||||
87
src/app_modules/auth/register/view.tsx
Normal file
87
src/app_modules/auth/register/view.tsx
Normal file
@@ -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 (
|
||||
<>
|
||||
<Flex
|
||||
align={"center"}
|
||||
justify={"center"}
|
||||
direction={"column"}
|
||||
gap={50}
|
||||
h={"100vh"}
|
||||
>
|
||||
<Title order={4}>Registrasi</Title>
|
||||
<IconCircleLetterH size={150} />
|
||||
<Flex direction={"column"} gap={"xl"} align={"center"}>
|
||||
<Flex direction={"column"}>
|
||||
<TextInput
|
||||
label="Username"
|
||||
placeholder="Username"
|
||||
onChange={(val) => {
|
||||
setValue(val.target.value);
|
||||
}}
|
||||
/>
|
||||
|
||||
<Text>Nomor : {nomor}</Text>
|
||||
</Flex>
|
||||
<Button
|
||||
radius={50}
|
||||
bg={Warna.biru}
|
||||
color="cyan"
|
||||
compact
|
||||
onClick={() => {
|
||||
onRegister();
|
||||
}}
|
||||
>
|
||||
Register
|
||||
</Button>
|
||||
</Flex>
|
||||
</Flex>
|
||||
</>
|
||||
);
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
4
src/app_modules/auth/state/state.ts
Normal file
4
src/app_modules/auth/state/state.ts
Normal file
@@ -0,0 +1,4 @@
|
||||
import { atomWithStorage } from 'jotai/utils'
|
||||
|
||||
export const gs_nomor = atomWithStorage<any | null>("nomorHp", null)
|
||||
export const gs_otp = atomWithStorage<any | null>("code_otp", null)
|
||||
103
src/app_modules/auth/validasi/view.tsx
Normal file
103
src/app_modules/auth/validasi/view.tsx
Normal file
@@ -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)} */}
|
||||
|
||||
<Flex
|
||||
align={"center"}
|
||||
justify={"center"}
|
||||
direction={"column"}
|
||||
gap={50}
|
||||
h={"100vh"}
|
||||
>
|
||||
<Title order={4}>Validasi Kode OTP</Title>
|
||||
<IconCircleLetterH size={150} />
|
||||
<Flex direction={"column"} gap={"xl"} align={"center"}>
|
||||
<Flex
|
||||
justify={"center"}
|
||||
gap={1}
|
||||
direction={"column"}
|
||||
align={"center"}
|
||||
>
|
||||
<Text>Enter the 6-digit OTP , we’ve just sent</Text>
|
||||
<Text>to {nomor}</Text>
|
||||
</Flex>
|
||||
<PinInput
|
||||
onChange={(val) => {
|
||||
setInputOtp(val);
|
||||
}}
|
||||
/>
|
||||
<Button
|
||||
compact
|
||||
radius={50}
|
||||
bg={Warna.hijau_tua}
|
||||
color="green"
|
||||
onClick={() => {
|
||||
onValid();
|
||||
}}
|
||||
>
|
||||
Submit
|
||||
</Button>
|
||||
</Flex>
|
||||
</Flex>
|
||||
</>
|
||||
);
|
||||
}
|
||||
@@ -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<any | null>(null);
|
||||
|
||||
useShallowEffect(() => {
|
||||
userToken();
|
||||
}, []);
|
||||
|
||||
async function userToken() {
|
||||
await fetch(ApiHipmi.get_token)
|
||||
.then((res) => res.json())
|
||||
.then((val) => setToken(val));
|
||||
}
|
||||
|
||||
return (
|
||||
<>
|
||||
{/* <pre>{JSON.stringify(token, null, 2)}</pre> */}
|
||||
<Title>Home</Title>
|
||||
<Text>Welcome, {token?.username}</Text>
|
||||
<Logout />
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
18
src/bin/seeder/user_role.json
Normal file
18
src/bin/seeder/user_role.json
Normal file
@@ -0,0 +1,18 @@
|
||||
[
|
||||
{
|
||||
"id": 1,
|
||||
"name": "User",
|
||||
"user": 1
|
||||
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"name": "Admin",
|
||||
"user": 2
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"name": "Super Admin",
|
||||
"user": 3
|
||||
}
|
||||
]
|
||||
433
yarn.lock
433
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==
|
||||
|
||||
Reference in New Issue
Block a user