diff --git a/.github/workflows/auto_assign.yml b/.github/workflows/auto_assign.yml
new file mode 100644
index 00000000..29134e24
--- /dev/null
+++ b/.github/workflows/auto_assign.yml
@@ -0,0 +1,27 @@
+name: Auto Assign
+
+on:
+ pull_request:
+ types: [opened, ready_for_review, converted_to_draft]
+ issues:
+ types: [opened]
+
+jobs:
+ assign_pull_request:
+ runs-on: ubuntu-latest
+ if: github.event_name == 'pull_request'
+ steps:
+ - uses: hkusu/review-assign-action@v1
+ with:
+ assignees: ${{ github.actor }}
+
+ auto_assign_issue:
+ runs-on: ubuntu-latest
+ if: github.event_name == 'issues'
+ permissions:
+ issues: write
+ steps:
+ - name: "Auto-assign issue"
+ uses: pozil/auto-assign-issue@v2
+ with:
+ assignees: ${{ github.actor }}
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644
index 00000000..c62b904f
--- /dev/null
+++ b/.github/workflows/build.yml
@@ -0,0 +1,40 @@
+name: build
+
+on:
+ push:
+ branches:
+ - main
+ - dev
+ pull_request:
+ types: [opened, ready_for_review, converted_to_draft]
+ branches:
+ - main
+ - dev
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ env:
+ TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
+ TURBO_TEAM: ${{ vars.TURBO_TEAM }}
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v2
+
+ - name: Set up Node.js 20.x
+ uses: actions/setup-node@v2
+ with:
+ node-version: 20.x
+
+ - name: Install pnpm
+ uses: pnpm/action-setup@v3
+ with:
+ version: 8
+ run_install: false
+
+ - name: Install dependencies
+ run: pnpm install
+
+ - name: Run build
+ run: pnpm run build
diff --git a/apps/admin/app/fonts/GeistMonoVF.woff b/apps/admin/app/fonts/GeistMonoVF.woff
deleted file mode 100644
index f2ae185c..00000000
Binary files a/apps/admin/app/fonts/GeistMonoVF.woff and /dev/null differ
diff --git a/apps/admin/app/fonts/GeistVF.woff b/apps/admin/app/fonts/GeistVF.woff
deleted file mode 100644
index 1b62daac..00000000
Binary files a/apps/admin/app/fonts/GeistVF.woff and /dev/null differ
diff --git a/apps/admin/app/global.css b/apps/admin/app/global.css
index e27a23b7..9bf49e70 100644
--- a/apps/admin/app/global.css
+++ b/apps/admin/app/global.css
@@ -1 +1,56 @@
@layer reset, base, tokens, recipes, utilities;
+@import url("@wow-class/ui/styles.css");
+
+@font-face {
+ font-family: "SUIT";
+ font-weight: 200;
+ src: url("/fonts/SUIT-Thin.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: "SUIT";
+ font-weight: 300;
+ src: url("/fonts/SUIT-ExtraLight.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: "SUIT";
+ font-weight: 400;
+ src: url("/fonts/SUIT-Regular.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: "SUIT";
+ font-weight: 500;
+ src: url("/fonts/SUIT-Medium.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: "SUIT";
+ font-weight: 600;
+ src: url("/fonts/SUIT-SemiBold.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: "SUIT";
+ font-weight: 700;
+ src: url("/fonts/SUIT-Bold.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: "SUIT";
+ font-weight: 800;
+ src: url("/fonts/SUIT-ExtraBold.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: "SUIT";
+ font-weight: 900;
+ src: url("/fonts/SUIT-Heavy.ttf") format("truetype");
+}
+
+body {
+ font-family: "SUIT" !important;
+ display: flex;
+ flex-direction: row;
+}
diff --git a/apps/admin/app/layout.tsx b/apps/admin/app/layout.tsx
index ddc3a72e..ce7647b0 100644
--- a/apps/admin/app/layout.tsx
+++ b/apps/admin/app/layout.tsx
@@ -2,17 +2,10 @@ import "./global.css";
import "wowds-ui/styles.css";
import "@wow-class/ui/styles.css";
+import Navbar from "components/Navbar";
import type { Metadata } from "next";
-import localFont from "next/font/local";
-const geistSans = localFont({
- src: "./fonts/GeistVF.woff",
- variable: "--font-geist-sans",
-});
-const geistMono = localFont({
- src: "./fonts/GeistMonoVF.woff",
- variable: "--font-geist-mono",
-});
+import { JotaiProvider } from "../components/JotaiProvider";
export const metadata: Metadata = {
title: "Create Next App",
@@ -25,9 +18,12 @@ const RootLayout = ({
children: React.ReactNode;
}>) => {
return (
-
-
- {children}
+
+
+
+
+ {children}
+
);
diff --git a/apps/admin/app/page.tsx b/apps/admin/app/page.tsx
index d407b698..5fd1edf4 100644
--- a/apps/admin/app/page.tsx
+++ b/apps/admin/app/page.tsx
@@ -1,11 +1,10 @@
import { styled } from "@styled-system/jsx";
-import { Button, Text } from "@wow-class/ui";
+import { Text } from "@wow-class/ui";
const Home = () => {
return (
Home
-
sdf
sdf
diff --git a/apps/admin/app/participants/page.tsx b/apps/admin/app/participants/page.tsx
new file mode 100644
index 00000000..19a3c50b
--- /dev/null
+++ b/apps/admin/app/participants/page.tsx
@@ -0,0 +1,5 @@
+const Participants = () => {
+ return Participants
;
+};
+
+export default Participants;
diff --git a/apps/admin/app/studies/[study]/page.tsx b/apps/admin/app/studies/[study]/page.tsx
new file mode 100644
index 00000000..137db0a3
--- /dev/null
+++ b/apps/admin/app/studies/[study]/page.tsx
@@ -0,0 +1,5 @@
+const Study = () => {
+ return Study
;
+};
+
+export default Study;
diff --git a/apps/admin/app/studies/page.tsx b/apps/admin/app/studies/page.tsx
new file mode 100644
index 00000000..c63b2d64
--- /dev/null
+++ b/apps/admin/app/studies/page.tsx
@@ -0,0 +1,5 @@
+const Studies = () => {
+ return Studies
;
+};
+
+export default Studies;
diff --git a/apps/admin/components/JotaiProvider.tsx b/apps/admin/components/JotaiProvider.tsx
new file mode 100644
index 00000000..a75fe0d3
--- /dev/null
+++ b/apps/admin/components/JotaiProvider.tsx
@@ -0,0 +1,8 @@
+"use client";
+
+import { Provider } from "jotai";
+import type { ReactNode } from "react";
+
+export const JotaiProvider = ({ children }: { children: ReactNode }) => {
+ return {children};
+};
diff --git a/apps/admin/components/Navbar.tsx b/apps/admin/components/Navbar.tsx
new file mode 100644
index 00000000..8b5adf57
--- /dev/null
+++ b/apps/admin/components/Navbar.tsx
@@ -0,0 +1,81 @@
+import { css } from "@styled-system/css";
+import { Flex } from "@styled-system/jsx";
+import { NavItem } from "@wow-class/ui";
+import Image from "next/image";
+
+import { navMenu } from "../constants/navMenu";
+import adminImageUrl from "../public/images/administrator.svg";
+import logoImageUrl from "../public/images/logo.svg";
+
+/**
+ * @description admin 내비게이션 바 컴포넌트입니다.
+ */
+
+const Navbar = () => {
+ return (
+
+ );
+};
+
+export default Navbar;
+
+const navbarContainerStyle = css({
+ width: "250px",
+ minHeight: "100vh",
+ paddingTop: "54px",
+ borderRightWidth: "arrow",
+ borderColor: "mono.400",
+});
+
+const logoTextStyle = css({
+ fontSize: "24px",
+ fontWeight: 700,
+ lineHeight: "130%",
+ letterSpacing: "-0.24px",
+});
+
+const navContainerStyle = css({
+ padding: "8px 0px",
+ display: "flex",
+ flexDirection: "column",
+ minHeight: "calc(100vh - 98px)",
+ justifyContent: "space-between",
+});
diff --git a/apps/admin/constants/navMenu.ts b/apps/admin/constants/navMenu.ts
new file mode 100644
index 00000000..8d839128
--- /dev/null
+++ b/apps/admin/constants/navMenu.ts
@@ -0,0 +1,38 @@
+import folderImageUrl from "../public/images/folder.svg";
+import homeImageUrl from "../public/images/home.svg";
+import participantImageUrl from "../public/images/particpant.svg";
+
+export const navMenu = [
+ {
+ href: "studies",
+ imageUrl: homeImageUrl,
+ alt: "home-icon",
+ name: "개설된 스터디",
+ items: [
+ {
+ href: "basic-web-study",
+ imageUrl: folderImageUrl,
+ alt: "folder-icon",
+ name: "기초 웹 스터디",
+ },
+ {
+ href: "dev-beginner-study",
+ imageUrl: folderImageUrl,
+ alt: "folder-icon",
+ name: "개발 입문 스터디",
+ },
+ {
+ href: "basic-mobile-study",
+ imageUrl: folderImageUrl,
+ alt: "folder-icon",
+ name: "기초 모바일 스터디",
+ },
+ ],
+ },
+ {
+ href: "participants",
+ imageUrl: participantImageUrl,
+ alt: "participant-icon",
+ name: "수강생 관리",
+ },
+];
diff --git a/apps/admin/next.config.mjs b/apps/admin/next.config.mjs
index 4678774e..e91137d7 100644
--- a/apps/admin/next.config.mjs
+++ b/apps/admin/next.config.mjs
@@ -1,4 +1,15 @@
/** @type {import('next').NextConfig} */
-const nextConfig = {};
+const nextConfig = {
+ async redirects() {
+ return [
+ {
+ source: "/",
+ destination: "/studies",
+ permanent: false,
+ statusCode: 301,
+ },
+ ];
+ },
+};
export default nextConfig;
diff --git a/apps/admin/package.json b/apps/admin/package.json
index 8a402895..2fd18c13 100644
--- a/apps/admin/package.json
+++ b/apps/admin/package.json
@@ -10,18 +10,20 @@
},
"dependencies": {
"@wow-class/ui": "workspace:*",
- "react": "latest",
- "react-dom": "latest",
- "next": "latest"
+ "jotai": "^2.9.2",
+ "next": "^14.2.5",
+ "react": "^18.3.1",
+ "react-dom": "^18.3.1"
},
"devDependencies": {
- "@wow-class/eslint-config": "workspace:*",
- "@wow-class/typescript-config": "workspace:*",
- "typescript": "^5",
"@types/node": "^20",
"@types/react": "^18",
"@types/react-dom": "^18",
+ "@wow-class/eslint-config": "workspace:*",
+ "@wow-class/typescript-config": "workspace:*",
+ "@wow-class/utils": "workspace:*",
"eslint": "^8",
- "eslint-config-next": "latest"
+ "eslint-config-next": "^14.2.5",
+ "typescript": "^5"
}
}
diff --git a/apps/admin/panda.config.ts b/apps/admin/panda.config.ts
index 5186b028..ad949538 100644
--- a/apps/admin/panda.config.ts
+++ b/apps/admin/panda.config.ts
@@ -3,5 +3,5 @@ import commonConfig from "@wow-class/panda-config/common-config";
export default defineConfig({
...commonConfig,
- include: ["./app/**/*.{ts,tsx,js,jsx}"],
+ include: ["./app/**/*.{ts,tsx,js,jsx}", "./components/**/*.{ts,tsx,js,jsx}"],
});
diff --git a/apps/admin/public/fonts/SUIT-Bold.ttf b/apps/admin/public/fonts/SUIT-Bold.ttf
new file mode 100644
index 00000000..8e553df6
Binary files /dev/null and b/apps/admin/public/fonts/SUIT-Bold.ttf differ
diff --git a/apps/admin/public/fonts/SUIT-ExtraBold.ttf b/apps/admin/public/fonts/SUIT-ExtraBold.ttf
new file mode 100644
index 00000000..7c5ddf6f
Binary files /dev/null and b/apps/admin/public/fonts/SUIT-ExtraBold.ttf differ
diff --git a/apps/admin/public/fonts/SUIT-ExtraLight.ttf b/apps/admin/public/fonts/SUIT-ExtraLight.ttf
new file mode 100644
index 00000000..2179d360
Binary files /dev/null and b/apps/admin/public/fonts/SUIT-ExtraLight.ttf differ
diff --git a/apps/admin/public/fonts/SUIT-Heavy.ttf b/apps/admin/public/fonts/SUIT-Heavy.ttf
new file mode 100644
index 00000000..6eb7d3a0
Binary files /dev/null and b/apps/admin/public/fonts/SUIT-Heavy.ttf differ
diff --git a/apps/admin/public/fonts/SUIT-Light.ttf b/apps/admin/public/fonts/SUIT-Light.ttf
new file mode 100644
index 00000000..29358656
Binary files /dev/null and b/apps/admin/public/fonts/SUIT-Light.ttf differ
diff --git a/apps/admin/public/fonts/SUIT-Medium.ttf b/apps/admin/public/fonts/SUIT-Medium.ttf
new file mode 100644
index 00000000..dc6f4fcd
Binary files /dev/null and b/apps/admin/public/fonts/SUIT-Medium.ttf differ
diff --git a/apps/admin/public/fonts/SUIT-Regular.ttf b/apps/admin/public/fonts/SUIT-Regular.ttf
new file mode 100644
index 00000000..3f261794
Binary files /dev/null and b/apps/admin/public/fonts/SUIT-Regular.ttf differ
diff --git a/apps/admin/public/fonts/SUIT-SemiBold.ttf b/apps/admin/public/fonts/SUIT-SemiBold.ttf
new file mode 100644
index 00000000..30e3d23d
Binary files /dev/null and b/apps/admin/public/fonts/SUIT-SemiBold.ttf differ
diff --git a/apps/admin/public/fonts/SUIT-Thin.ttf b/apps/admin/public/fonts/SUIT-Thin.ttf
new file mode 100644
index 00000000..eba27213
Binary files /dev/null and b/apps/admin/public/fonts/SUIT-Thin.ttf differ
diff --git a/apps/admin/public/images/administrator.svg b/apps/admin/public/images/administrator.svg
new file mode 100644
index 00000000..53a3c0ac
--- /dev/null
+++ b/apps/admin/public/images/administrator.svg
@@ -0,0 +1,13 @@
+
\ No newline at end of file
diff --git a/apps/admin/public/images/folder.svg b/apps/admin/public/images/folder.svg
new file mode 100644
index 00000000..4310a755
--- /dev/null
+++ b/apps/admin/public/images/folder.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/apps/admin/public/images/home.svg b/apps/admin/public/images/home.svg
new file mode 100644
index 00000000..b47210ad
--- /dev/null
+++ b/apps/admin/public/images/home.svg
@@ -0,0 +1,5 @@
+
\ No newline at end of file
diff --git a/apps/admin/public/images/logo.svg b/apps/admin/public/images/logo.svg
new file mode 100644
index 00000000..ec01e061
--- /dev/null
+++ b/apps/admin/public/images/logo.svg
@@ -0,0 +1,9 @@
+
diff --git a/apps/admin/public/images/particpant.svg b/apps/admin/public/images/particpant.svg
new file mode 100644
index 00000000..0263c55d
--- /dev/null
+++ b/apps/admin/public/images/particpant.svg
@@ -0,0 +1,15 @@
+
\ No newline at end of file
diff --git a/apps/client/app/(afterLogin)/layout.tsx b/apps/client/app/(afterLogin)/layout.tsx
new file mode 100644
index 00000000..cd0d13d7
--- /dev/null
+++ b/apps/client/app/(afterLogin)/layout.tsx
@@ -0,0 +1,12 @@
+import Navbar from "components/Navbar";
+
+const Layout = ({ children }: { children: React.ReactNode }) => {
+ return (
+ <>
+
+ {children}
+ >
+ );
+};
+
+export default Layout;
diff --git a/apps/client/app/(afterLogin)/my-page/page.tsx b/apps/client/app/(afterLogin)/my-page/page.tsx
new file mode 100644
index 00000000..706b6223
--- /dev/null
+++ b/apps/client/app/(afterLogin)/my-page/page.tsx
@@ -0,0 +1,5 @@
+const MyPage = () => {
+ return MyPage
;
+};
+
+export default MyPage;
diff --git a/apps/client/app/(afterLogin)/my-study/my-homework/page.tsx b/apps/client/app/(afterLogin)/my-study/my-homework/page.tsx
new file mode 100644
index 00000000..8d35dff8
--- /dev/null
+++ b/apps/client/app/(afterLogin)/my-study/my-homework/page.tsx
@@ -0,0 +1,5 @@
+const MyHomework = () => {
+ return MyHomework
;
+};
+
+export default MyHomework;
diff --git a/apps/client/app/(afterLogin)/my-study/page.tsx b/apps/client/app/(afterLogin)/my-study/page.tsx
new file mode 100644
index 00000000..e0b2fdce
--- /dev/null
+++ b/apps/client/app/(afterLogin)/my-study/page.tsx
@@ -0,0 +1,5 @@
+const MyStudy = () => {
+ return MyStudy
;
+};
+
+export default MyStudy;
diff --git a/apps/client/app/(afterLogin)/study-apply/page.tsx b/apps/client/app/(afterLogin)/study-apply/page.tsx
new file mode 100644
index 00000000..dcc0f33a
--- /dev/null
+++ b/apps/client/app/(afterLogin)/study-apply/page.tsx
@@ -0,0 +1,5 @@
+const StudyApply = () => {
+ return StudyApply
;
+};
+
+export default StudyApply;
diff --git a/apps/client/app/(beforeLogin)/auth/page.tsx b/apps/client/app/(beforeLogin)/auth/page.tsx
new file mode 100644
index 00000000..0a59d089
--- /dev/null
+++ b/apps/client/app/(beforeLogin)/auth/page.tsx
@@ -0,0 +1,5 @@
+const Auth = () => {
+ return Auth
;
+};
+
+export default Auth;
diff --git a/apps/client/app/fonts/GeistMonoVF.woff b/apps/client/app/fonts/GeistMonoVF.woff
deleted file mode 100644
index f2ae185c..00000000
Binary files a/apps/client/app/fonts/GeistMonoVF.woff and /dev/null differ
diff --git a/apps/client/app/fonts/GeistVF.woff b/apps/client/app/fonts/GeistVF.woff
deleted file mode 100644
index 1b62daac..00000000
Binary files a/apps/client/app/fonts/GeistVF.woff and /dev/null differ
diff --git a/apps/client/app/global.css b/apps/client/app/global.css
index e27a23b7..9bf49e70 100644
--- a/apps/client/app/global.css
+++ b/apps/client/app/global.css
@@ -1 +1,56 @@
@layer reset, base, tokens, recipes, utilities;
+@import url("@wow-class/ui/styles.css");
+
+@font-face {
+ font-family: "SUIT";
+ font-weight: 200;
+ src: url("/fonts/SUIT-Thin.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: "SUIT";
+ font-weight: 300;
+ src: url("/fonts/SUIT-ExtraLight.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: "SUIT";
+ font-weight: 400;
+ src: url("/fonts/SUIT-Regular.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: "SUIT";
+ font-weight: 500;
+ src: url("/fonts/SUIT-Medium.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: "SUIT";
+ font-weight: 600;
+ src: url("/fonts/SUIT-SemiBold.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: "SUIT";
+ font-weight: 700;
+ src: url("/fonts/SUIT-Bold.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: "SUIT";
+ font-weight: 800;
+ src: url("/fonts/SUIT-ExtraBold.ttf") format("truetype");
+}
+
+@font-face {
+ font-family: "SUIT";
+ font-weight: 900;
+ src: url("/fonts/SUIT-Heavy.ttf") format("truetype");
+}
+
+body {
+ font-family: "SUIT" !important;
+ display: flex;
+ flex-direction: row;
+}
diff --git a/apps/client/app/layout.tsx b/apps/client/app/layout.tsx
index ddc3a72e..f7ae5569 100644
--- a/apps/client/app/layout.tsx
+++ b/apps/client/app/layout.tsx
@@ -3,16 +3,8 @@ import "wowds-ui/styles.css";
import "@wow-class/ui/styles.css";
import type { Metadata } from "next";
-import localFont from "next/font/local";
-const geistSans = localFont({
- src: "./fonts/GeistVF.woff",
- variable: "--font-geist-sans",
-});
-const geistMono = localFont({
- src: "./fonts/GeistMonoVF.woff",
- variable: "--font-geist-mono",
-});
+import { JotaiProvider } from "../components/JotaiProvider";
export const metadata: Metadata = {
title: "Create Next App",
@@ -25,9 +17,9 @@ const RootLayout = ({
children: React.ReactNode;
}>) => {
return (
-
-
- {children}
+
+
+ {children}
);
diff --git a/apps/client/app/page.tsx b/apps/client/app/page.tsx
index 5f56b089..8ca06e8f 100644
--- a/apps/client/app/page.tsx
+++ b/apps/client/app/page.tsx
@@ -1,18 +1,5 @@
-import { styled } from "@styled-system/jsx";
-import { Button, Text } from "@wow-class/ui";
-
const Home = () => {
- return (
-
- Home
-
- sdf
- sdf
-
- 헤딩1
-
-
- );
+ return Home
;
};
export default Home;
diff --git a/apps/client/components/JotaiProvider.tsx b/apps/client/components/JotaiProvider.tsx
new file mode 100644
index 00000000..a75fe0d3
--- /dev/null
+++ b/apps/client/components/JotaiProvider.tsx
@@ -0,0 +1,8 @@
+"use client";
+
+import { Provider } from "jotai";
+import type { ReactNode } from "react";
+
+export const JotaiProvider = ({ children }: { children: ReactNode }) => {
+ return {children};
+};
diff --git a/apps/client/components/Navbar.tsx b/apps/client/components/Navbar.tsx
new file mode 100644
index 00000000..73123633
--- /dev/null
+++ b/apps/client/components/Navbar.tsx
@@ -0,0 +1,81 @@
+import { css } from "@styled-system/css";
+import { Flex } from "@styled-system/jsx";
+import { NavItem } from "@wow-class/ui";
+import Image from "next/image";
+
+import { navMenu } from "../constants/navMenu";
+import adminImageUrl from "../public/images/administrator.svg";
+import logoImageUrl from "../public/images/logo.svg";
+
+/**
+ * @description client 내비게이션 바 컴포넌트입니다.
+ */
+
+const Navbar = () => {
+ return (
+
+ );
+};
+
+export default Navbar;
+
+const navbarContainerStyle = css({
+ width: "250px",
+ minHeight: "100vh",
+ paddingTop: "54px",
+ borderRightWidth: "arrow",
+ borderColor: "mono.400",
+});
+
+const logoTextStyle = css({
+ fontSize: "24px",
+ fontWeight: 700,
+ lineHeight: "130%",
+ letterSpacing: "-0.24px",
+});
+
+const navContainerStyle = css({
+ padding: "8px 0px",
+ display: "flex",
+ flexDirection: "column",
+ minHeight: "calc(100vh - 98px)",
+ justifyContent: "space-between",
+});
diff --git a/apps/client/constants/navMenu.ts b/apps/client/constants/navMenu.ts
new file mode 100644
index 00000000..8bd73392
--- /dev/null
+++ b/apps/client/constants/navMenu.ts
@@ -0,0 +1,33 @@
+import folderImageUrl from "../public/images/folder.svg";
+import homeImageUrl from "../public/images/home.svg";
+import personImageUrl from "../public/images/person.svg";
+import scheduleImageUrl from "../public/images/schedule.svg";
+
+export const navMenu = [
+ {
+ href: "my-study",
+ imageUrl: homeImageUrl,
+ alt: "home-icon",
+ name: "나의 스터디",
+ items: [
+ {
+ href: "my-homework",
+ imageUrl: folderImageUrl,
+ alt: "folder-icon",
+ name: "나의 과제",
+ },
+ ],
+ },
+ {
+ href: "study-apply",
+ imageUrl: scheduleImageUrl,
+ alt: "schedule-icon",
+ name: "수강 신청",
+ },
+ {
+ href: "my-page",
+ imageUrl: personImageUrl,
+ alt: "person-icon",
+ name: "마이 페이지",
+ },
+];
diff --git a/apps/client/next.config.mjs b/apps/client/next.config.mjs
index 4678774e..f79c0abb 100644
--- a/apps/client/next.config.mjs
+++ b/apps/client/next.config.mjs
@@ -1,4 +1,15 @@
/** @type {import('next').NextConfig} */
-const nextConfig = {};
+const nextConfig = {
+ async redirects() {
+ return [
+ {
+ source: "/",
+ destination: "/my-study",
+ permanent: false,
+ statusCode: 301,
+ },
+ ];
+ },
+};
export default nextConfig;
diff --git a/apps/client/package.json b/apps/client/package.json
index c74f13b3..9db914ba 100644
--- a/apps/client/package.json
+++ b/apps/client/package.json
@@ -10,18 +10,20 @@
},
"dependencies": {
"@wow-class/ui": "workspace:*",
- "react": "latest",
- "react-dom": "latest",
- "next": "latest"
+ "jotai": "^2.9.2",
+ "next": "^14.2.5",
+ "react": "^18.3.1",
+ "react-dom": "^18.3.1"
},
"devDependencies": {
- "@wow-class/eslint-config": "workspace:*",
- "@wow-class/typescript-config": "workspace:*",
- "typescript": "^5",
"@types/node": "^20",
"@types/react": "^18",
"@types/react-dom": "^18",
+ "@wow-class/eslint-config": "workspace:*",
+ "@wow-class/typescript-config": "workspace:*",
+ "@wow-class/utils": "workspace:*",
"eslint": "^8",
- "eslint-config-next": "latest"
+ "eslint-config-next": "^14.2.5",
+ "typescript": "^5"
}
}
diff --git a/apps/client/panda.config.ts b/apps/client/panda.config.ts
index 5186b028..ad949538 100644
--- a/apps/client/panda.config.ts
+++ b/apps/client/panda.config.ts
@@ -3,5 +3,5 @@ import commonConfig from "@wow-class/panda-config/common-config";
export default defineConfig({
...commonConfig,
- include: ["./app/**/*.{ts,tsx,js,jsx}"],
+ include: ["./app/**/*.{ts,tsx,js,jsx}", "./components/**/*.{ts,tsx,js,jsx}"],
});
diff --git a/apps/client/public/fonts/SUIT-Bold.ttf b/apps/client/public/fonts/SUIT-Bold.ttf
new file mode 100644
index 00000000..8e553df6
Binary files /dev/null and b/apps/client/public/fonts/SUIT-Bold.ttf differ
diff --git a/apps/client/public/fonts/SUIT-ExtraBold.ttf b/apps/client/public/fonts/SUIT-ExtraBold.ttf
new file mode 100644
index 00000000..7c5ddf6f
Binary files /dev/null and b/apps/client/public/fonts/SUIT-ExtraBold.ttf differ
diff --git a/apps/client/public/fonts/SUIT-ExtraLight.ttf b/apps/client/public/fonts/SUIT-ExtraLight.ttf
new file mode 100644
index 00000000..2179d360
Binary files /dev/null and b/apps/client/public/fonts/SUIT-ExtraLight.ttf differ
diff --git a/apps/client/public/fonts/SUIT-Heavy.ttf b/apps/client/public/fonts/SUIT-Heavy.ttf
new file mode 100644
index 00000000..6eb7d3a0
Binary files /dev/null and b/apps/client/public/fonts/SUIT-Heavy.ttf differ
diff --git a/apps/client/public/fonts/SUIT-Light.ttf b/apps/client/public/fonts/SUIT-Light.ttf
new file mode 100644
index 00000000..29358656
Binary files /dev/null and b/apps/client/public/fonts/SUIT-Light.ttf differ
diff --git a/apps/client/public/fonts/SUIT-Medium.ttf b/apps/client/public/fonts/SUIT-Medium.ttf
new file mode 100644
index 00000000..dc6f4fcd
Binary files /dev/null and b/apps/client/public/fonts/SUIT-Medium.ttf differ
diff --git a/apps/client/public/fonts/SUIT-Regular.ttf b/apps/client/public/fonts/SUIT-Regular.ttf
new file mode 100644
index 00000000..3f261794
Binary files /dev/null and b/apps/client/public/fonts/SUIT-Regular.ttf differ
diff --git a/apps/client/public/fonts/SUIT-SemiBold.ttf b/apps/client/public/fonts/SUIT-SemiBold.ttf
new file mode 100644
index 00000000..30e3d23d
Binary files /dev/null and b/apps/client/public/fonts/SUIT-SemiBold.ttf differ
diff --git a/apps/client/public/fonts/SUIT-Thin.ttf b/apps/client/public/fonts/SUIT-Thin.ttf
new file mode 100644
index 00000000..eba27213
Binary files /dev/null and b/apps/client/public/fonts/SUIT-Thin.ttf differ
diff --git a/apps/client/public/images/administrator.svg b/apps/client/public/images/administrator.svg
new file mode 100644
index 00000000..53a3c0ac
--- /dev/null
+++ b/apps/client/public/images/administrator.svg
@@ -0,0 +1,13 @@
+
\ No newline at end of file
diff --git a/apps/client/public/images/folder.svg b/apps/client/public/images/folder.svg
new file mode 100644
index 00000000..4310a755
--- /dev/null
+++ b/apps/client/public/images/folder.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/apps/client/public/images/home.svg b/apps/client/public/images/home.svg
new file mode 100644
index 00000000..b47210ad
--- /dev/null
+++ b/apps/client/public/images/home.svg
@@ -0,0 +1,5 @@
+
\ No newline at end of file
diff --git a/apps/client/public/images/logo.svg b/apps/client/public/images/logo.svg
new file mode 100644
index 00000000..ec01e061
--- /dev/null
+++ b/apps/client/public/images/logo.svg
@@ -0,0 +1,9 @@
+
diff --git a/apps/client/public/images/particpant.svg b/apps/client/public/images/particpant.svg
new file mode 100644
index 00000000..0263c55d
--- /dev/null
+++ b/apps/client/public/images/particpant.svg
@@ -0,0 +1,15 @@
+
\ No newline at end of file
diff --git a/apps/client/public/images/person.svg b/apps/client/public/images/person.svg
new file mode 100644
index 00000000..249bc816
--- /dev/null
+++ b/apps/client/public/images/person.svg
@@ -0,0 +1,11 @@
+
\ No newline at end of file
diff --git a/apps/client/public/images/schedule.svg b/apps/client/public/images/schedule.svg
new file mode 100644
index 00000000..88c75231
--- /dev/null
+++ b/apps/client/public/images/schedule.svg
@@ -0,0 +1,8 @@
+
\ No newline at end of file
diff --git a/packages/eslint-config/basic.js b/packages/eslint-config/basic.js
index 2d371261..02ab29fd 100644
--- a/packages/eslint-config/basic.js
+++ b/packages/eslint-config/basic.js
@@ -102,6 +102,7 @@ module.exports = {
],
"simple-import-sort/imports": "error",
"simple-import-sort/exports": "error",
+ "turbo/no-undeclared-env-vars": "off",
},
settings: {
@@ -113,7 +114,6 @@ module.exports = {
version: "detect",
},
},
-
ignorePatterns: [
".*.js",
"node_modules/",
diff --git a/packages/typescript-config/basic.json b/packages/typescript-config/basic.json
index 3e6b291f..54389c2e 100644
--- a/packages/typescript-config/basic.json
+++ b/packages/typescript-config/basic.json
@@ -6,6 +6,8 @@
"declaration": true,
"declarationMap": true,
"esModuleInterop": true,
+ "allowImportingTsExtensions": true,
+ "noEmit": true,
"incremental": false,
"isolatedModules": true,
"lib": ["es2022", "DOM", "DOM.Iterable"],
diff --git a/packages/typescript-config/next.json b/packages/typescript-config/next.json
index f9256665..9cd46a09 100644
--- a/packages/typescript-config/next.json
+++ b/packages/typescript-config/next.json
@@ -7,7 +7,6 @@
"module": "ESNext",
"moduleResolution": "Bundler",
"allowJs": true,
- "jsx": "preserve",
- "noEmit": true
+ "jsx": "preserve"
}
}
diff --git a/packages/ui/.eslintrc.js b/packages/ui/.eslintrc.js
index 6d07b5f2..05c1f9d7 100644
--- a/packages/ui/.eslintrc.js
+++ b/packages/ui/.eslintrc.js
@@ -9,4 +9,7 @@ module.exports = {
parserOptions: {
project: true,
},
+ rules: {
+ "import/export": "off",
+ },
};
diff --git a/packages/ui/package.json b/packages/ui/package.json
index 4e6028c0..9fdeddd2 100644
--- a/packages/ui/package.json
+++ b/packages/ui/package.json
@@ -4,13 +4,14 @@
"private": true,
"exports": {
".": "./src/components/index.ts",
- "./styles.css": "./dist/styles.css"
+ "./styles.css": "./src/styles.css"
},
"scripts": {
"lint": "eslint . --max-warnings 0",
"generate:component": "turbo gen react-component",
"storybook": "storybook dev -p 6006",
- "build-storybook": "storybook build"
+ "build-storybook": "storybook build",
+ "generate:css-file": "panda cssgen --outfile src/styles.css"
},
"devDependencies": {
"@storybook/addon-essentials": "^8.2.7",
@@ -30,6 +31,8 @@
"typescript": "^5.3.3"
},
"dependencies": {
- "react": "latest"
+ "next": "^14.2.5",
+ "react": "^18.3.1",
+ "react-dom": "^18.3.1"
}
}
diff --git a/packages/ui/src/assets/arrow.svg b/packages/ui/src/assets/arrow.svg
new file mode 100644
index 00000000..d9531c81
--- /dev/null
+++ b/packages/ui/src/assets/arrow.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/packages/ui/src/assets/folder.svg b/packages/ui/src/assets/folder.svg
new file mode 100644
index 00000000..4310a755
--- /dev/null
+++ b/packages/ui/src/assets/folder.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/packages/ui/src/assets/home.svg b/packages/ui/src/assets/home.svg
new file mode 100644
index 00000000..b47210ad
--- /dev/null
+++ b/packages/ui/src/assets/home.svg
@@ -0,0 +1,5 @@
+
\ No newline at end of file
diff --git a/packages/ui/src/components/Button/button.stories.tsx b/packages/ui/src/components/Button/button.stories.tsx
deleted file mode 100644
index b62362ac..00000000
--- a/packages/ui/src/components/Button/button.stories.tsx
+++ /dev/null
@@ -1,97 +0,0 @@
-import type { Meta, StoryObj } from "@storybook/react";
-
-import { Button } from ".";
-
-const meta: Meta = {
- title: "UI/Button",
- component: Button,
- tags: ["autodocs"],
- parameters: {
- componentSubtitle: "버튼 컴포넌트",
- a11y: {
- config: {
- rules: [{ id: "color-contrast", enabled: false }],
- },
- },
- },
- argTypes: {
- className: {
- description: "버튼에 전달하는 커스텀 클래스를 나타냅니다.",
- table: {
- type: { summary: "string" },
- },
- control: {
- type: "text",
- },
- },
- children: {
- description: "버튼의 자식 요소를 나타냅니다.",
- table: {
- type: { summary: "ReactNode" },
- },
- control: {
- type: "text",
- },
- },
- appName: {
- description: "버튼 클릭 시 표시할 앱 이름을 나타냅니다.",
- table: {
- type: { summary: "string" },
- },
- control: {
- type: "text",
- },
- },
- },
-};
-
-export default meta;
-
-type Story = StoryObj;
-
-export const Default: Story = {
- args: {
- children: "Default Button",
- appName: "Default App",
- },
-};
-
-export const Primary: Story = {
- args: {
- children: "Primary Button",
- className: "btn btn-primary",
- appName: "Primary App",
- },
-};
-
-export const LargeSolid: Story = {
- args: {
- children: "Large Solid Button",
- className: "btn btn-large",
- appName: "Large Solid App",
- },
-};
-
-export const LargeOutline: Story = {
- args: {
- children: "Large Outline Button",
- className: "btn btn-large btn-outline",
- appName: "Large Outline App",
- },
-};
-
-export const SmallSolid: Story = {
- args: {
- children: "Small Solid Button",
- className: "btn btn-small",
- appName: "Small Solid App",
- },
-};
-
-export const SmallOutline: Story = {
- args: {
- children: "Small Outline Button",
- className: "btn btn-small btn-outline",
- appName: "Small Outline App",
- },
-};
diff --git a/packages/ui/src/components/Button/index.tsx b/packages/ui/src/components/Button/index.tsx
deleted file mode 100644
index f44d9c81..00000000
--- a/packages/ui/src/components/Button/index.tsx
+++ /dev/null
@@ -1,22 +0,0 @@
-"use client";
-
-import { styled } from "@styled-system/jsx";
-import type { ReactNode } from "react";
-
-export interface ButtonProps {
- children: ReactNode;
- className?: string;
- appName: string;
-}
-
-export const Button = ({ children, className, appName }: ButtonProps) => {
- return (
- alert(`Hello from your ${appName} app!`)}
- >
- {children}
-
- );
-};
diff --git a/packages/ui/src/components/Modal/index.tsx b/packages/ui/src/components/Modal/index.tsx
deleted file mode 100644
index b5b2b9c3..00000000
--- a/packages/ui/src/components/Modal/index.tsx
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
- * @description Modal 컴포넌트의 속성을 정의합니다.
- *
- */
-
-export interface ModalProps {}
-
-const Modal = ({}: ModalProps) => {
- return (
-
-
Modal Component
-
- );
-};
-
-export default Modal;
diff --git a/packages/ui/src/components/NavItem/NavItem.stories.tsx b/packages/ui/src/components/NavItem/NavItem.stories.tsx
new file mode 100644
index 00000000..d0fd4fbb
--- /dev/null
+++ b/packages/ui/src/components/NavItem/NavItem.stories.tsx
@@ -0,0 +1,61 @@
+import type { Meta, StoryObj } from "@storybook/react";
+
+import folderImageUrl from "../../assets/folder.svg";
+import homeImageUrl from "../../assets/home.svg";
+import Navbar from ".";
+
+const meta = {
+ title: "Client/Navbar",
+ component: Navbar,
+ tags: ["autodocs"],
+ parameters: {
+ componentSubtitle: "Navbar 컴포넌트",
+ },
+ argTypes: {
+ imageUrl: {
+ control: false,
+ },
+ },
+} satisfies Meta;
+
+export default meta;
+
+type Story = StoryObj;
+
+export const Default: Story = {
+ args: {
+ href: "studies",
+ imageUrl: homeImageUrl,
+ alt: "home-icon",
+ name: "개설된 스터디",
+ },
+};
+
+export const WithSubItems: Story = {
+ args: {
+ href: "studies",
+ imageUrl: homeImageUrl,
+ alt: "home-icon",
+ name: "개설된 스터디",
+ items: [
+ {
+ href: "basic-web-study",
+ imageUrl: folderImageUrl,
+ alt: "folder-icon",
+ name: "기초 웹 스터디",
+ },
+ {
+ href: "dev-beginner-study",
+ imageUrl: folderImageUrl,
+ alt: "folder-icon",
+ name: "개발 입문 스터디",
+ },
+ {
+ href: "basic-mobile-study",
+ imageUrl: folderImageUrl,
+ alt: "folder-icon",
+ name: "기초 모바일 스터디",
+ },
+ ],
+ },
+};
diff --git a/packages/ui/src/components/NavItem/index.tsx b/packages/ui/src/components/NavItem/index.tsx
new file mode 100644
index 00000000..7d3f0787
--- /dev/null
+++ b/packages/ui/src/components/NavItem/index.tsx
@@ -0,0 +1,142 @@
+"use client";
+
+import { css, cva } from "@styled-system/css";
+import { styled } from "@styled-system/jsx";
+import Image from "next/image";
+import Link from "next/link";
+import { useSelectedLayoutSegments } from "next/navigation";
+import { useState } from "react";
+
+import arrowImageUrl from "../../assets/arrow.svg";
+
+/**
+ * @description 내비게이션 바에서 사용하는 내비게이션 아이템 컴포넌트입니다.
+ *
+ * @param {string} href - 내비게이션 아이템의 링크 주소
+ * @param {string} imageUrl - 내비게이션 아이템의 아이콘 이미지 URL
+ * @param {string} alt - 내비게이션 아이템 아이콘 이미지의 대체 텍스트
+ * @param {string} name - 내비게이션 아이템의 이름
+ * @param {Array<{href: string, imageUrl: string, alt: string, name: string}>} [items] - 서브 내비게이션 아이템 배열
+ * @returns {JSX.Element} 내비게이션 아이템 컴포넌트
+ */
+export interface NavItemProps {
+ href: string;
+ imageUrl: string;
+ alt: string;
+ name: string;
+ items?: {
+ href: string;
+ imageUrl: string;
+ alt: string;
+ name: string;
+ }[];
+}
+
+const NavItem = ({ href, imageUrl, alt, name, items }: NavItemProps) => {
+ const [expanded, setExpanded] = useState(
+ Boolean(items?.length && items?.length <= 1)
+ );
+
+ const segment = useSelectedLayoutSegments() || [];
+
+ const handleClickNavItem = () => {
+ if (items?.length !== 1) {
+ setExpanded((prev) => !prev);
+ }
+ };
+
+ return (
+
+ 1 ? "true" : undefined}
+ href={`/${href}`}
+ role="menuitem"
+ tabIndex={0}
+ className={navItemStyle({
+ type: !segment[1] && segment[0] === href ? "active" : "inactive",
+ })}
+ onClick={handleClickNavItem}
+ >
+
+ {name}
+ {items?.length && items?.length > 1 && (
+
+ )}
+
+ {expanded && items && (
+
+ )}
+
+ );
+};
+
+export default NavItem;
+
+const navItemStyle = cva({
+ base: {
+ display: "flex",
+ gap: "12px",
+ marginRight: "8px",
+ alignItems: "center",
+ padding: "11px 18px 11px 20px",
+ },
+ variants: {
+ type: {
+ active: {
+ bg: "monoBackgroundPressed",
+ },
+ inactive: {
+ bg: "white",
+ },
+ },
+ },
+});
+
+const navItemTextStyle = css({
+ fontSize: "16px",
+ fontWeight: 500,
+ lineHeight: "160%",
+ letterSpacing: "-0.16px",
+});
diff --git a/packages/ui/src/components/Text/index.tsx b/packages/ui/src/components/Text/index.tsx
index 50bff616..9f5df2f1 100644
--- a/packages/ui/src/components/Text/index.tsx
+++ b/packages/ui/src/components/Text/index.tsx
@@ -14,7 +14,7 @@ interface TextProps extends PropsWithChildren {
className?: string;
}
-export const Text = ({
+const Text = ({
typo = "body1",
color = "textBlack",
children,
@@ -36,3 +36,5 @@ export const Text = ({
);
};
+
+export default Text;
diff --git a/packages/ui/src/components/index.ts b/packages/ui/src/components/index.ts
index 4e358147..cd4f8487 100644
--- a/packages/ui/src/components/index.ts
+++ b/packages/ui/src/components/index.ts
@@ -1,3 +1,2 @@
-export * from "./Button";
-export * from "./Modal";
-export * from "./Text";
+export { default as NavItem } from "./NavItem";
+export { default as Text } from "./Text";
diff --git a/packages/ui/src/styles.css b/packages/ui/src/styles.css
new file mode 100644
index 00000000..155b9354
--- /dev/null
+++ b/packages/ui/src/styles.css
@@ -0,0 +1 @@
+:host,html{--font-fallback:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent;line-height:1.5;font-family:var(--global-font-body,var(--font-fallback))}*,::backdrop,::file-selector-button,:after,:before{margin:0px;padding:0px;box-sizing:border-box;border-width:0px;border-style:solid;border-color:var(--global-color-border,currentColor)}hr{height:0px;color:inherit;border-top-width:1px}body{height:100%;line-height:inherit}img{border-style:none}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}h1,h2,h3,h4,h5,h6{text-wrap:balance;font-size:inherit;font-weight:inherit}h1,h2,h3,h4,h5,h6,p{overflow-wrap:break-word}menu,ol,ul{list-style:none}::file-selector-button,button,input:where([type=button],[type=reset],[type=submit]){appearance:button;-webkit-appearance:button}::file-selector-button,button,input,optgroup,select,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;background:transparent}::placeholder{opacity:1;--placeholder-fallback:color-mix(in srgb,currentColor 50%,transparent);color:var(--global-color-placeholder,var(--placeholder-fallback))}textarea{resize:vertical}table{text-indent:0px;border-collapse:collapse;border-color:inherit}summary{display:list-item}small{font-size:80%}sub,sup{position:relative;vertical-align:baseline;font-size:75%;line-height:0}sub{bottom:-0.25em}sup{top:-0.5em}dialog{padding:0px}a{color:inherit;text-decoration:inherit}abbr:where([title]){text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,pre,samp{--font-mono-fallback:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New';font-feature-settings:normal;font-variation-settings:normal;font-family:var(--global-font-mono,var(--font-mono-fallback));font-size:1em}progress{vertical-align:baseline}::-webkit-search-cancel-button,::-webkit-search-decoration{-webkit-appearance:none}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}:-moz-ui-invalid{box-shadow:none}:-moz-focusring{outline:auto}[hidden]:not(#\#):not(#\#):not(#\#):not(#\#):not(#\#){display:none!important}:where(:root,:host):not(#\#):not(#\#){--colors-red-50:#FDECEB;--colors-red-100:#FBD9D7;--colors-red-150:#F9C7C2;--colors-red-200:#F7B4AE;--colors-red-300:#F28E86;--colors-red-400:#EE695D;--colors-red-500:#EA4335;--colors-red-600:#BB362A;--colors-red-700:#8C2820;--colors-red-800:#5E1B15;--colors-red-850:#461410;--colors-red-900:#2F0D0B;--colors-red-950:#170705;--colors-blue-50:#EBF4FE;--colors-blue-100:#D7E9FD;--colors-blue-150:#C3DDFD;--colors-blue-200:#AFD2FC;--colors-blue-300:#86BCFA;--colors-blue-400:#5EA5F9;--colors-blue-500:#368FF7;--colors-blue-600:#2B72C6;--colors-blue-700:#205694;--colors-blue-800:#163963;--colors-blue-850:#102B4A;--colors-blue-900:#0B1D31;--colors-blue-950:#050E19;--colors-yellow-50:#FEF7E6;--colors-yellow-100:#FEEECC;--colors-yellow-150:#FDE6B3;--colors-yellow-200:#FDDD99;--colors-yellow-300:#FBCD66;--colors-yellow-400:#FABC33;--colors-yellow-500:#F9AB00;--colors-yellow-600:#C78900;--colors-yellow-700:#956700;--colors-yellow-800:#644400;--colors-yellow-850:#4B3300;--colors-yellow-900:#322200;--colors-yellow-950:#191100;--colors-green-50:#EBF6EE;--colors-green-100:#D6EEDD;--colors-green-150:#C2E5CB;--colors-green-200:#AEDCBA;--colors-green-300:#85CB98;--colors-green-400:#5DB975;--colors-green-500:#34A853;--colors-green-600:#2A8642;--colors-green-700:#1F6532;--colors-green-800:#154321;--colors-green-850:#103219;--colors-green-900:#0A2211;--colors-green-950:#051108;--colors-mono-50:#F7F7F7;--colors-mono-100:#F0F0F0;--colors-mono-150:#E8E8E8;--colors-mono-200:#E1E1E1;--colors-mono-300:#D1D1D1;--colors-mono-400:#C2C2C2;--colors-mono-500:#B3B3B3;--colors-mono-600:#8F8F8F;--colors-mono-700:#6B6B6B;--colors-mono-800:#484848;--colors-mono-900:#242424;--colors-mono-950:#121212;--colors-white:#FFFFFF;--colors-black:#000000;--colors-primary:#368FF7;--colors-success:#2A8642;--colors-error:#BB362A;--colors-background-normal:#FFFFFF;--colors-background-alternative:#F7F7F7;--colors-background-dimmer:rgba(0,0,0,0.8);--colors-sub:#6B6B6B;--colors-outline:#C2C2C2;--colors-text-black:#121212;--colors-text-white:#FFFFFF;--colors-dark-disabled:#C2C2C2;--colors-light-disabled:#E1E1E1;--colors-blue-hover:#2B72C6;--colors-mono-hover:#121212;--colors-elevated-hover:rgba(16,43,74,0.2);--colors-blue-pressed:#5EA5F9;--colors-blue-background-pressed:#EBF4FE;--colors-mono-background-pressed:#F7F7F7;--colors-shadow-small:rgba(0,0,0,0.1);--colors-shadow-medium:rgba(0,0,0,0.2);--colors-blue-shadow:rgba(16,43,74,0.2);--colors-discord:#5566FB;--colors-github:#000000}.li-s_none:not(#\#):not(#\#):not(#\#):not(#\#){list-style:none}.h_20:not(#\#):not(#\#):not(#\#):not(#\#){height:20px}.w_20:not(#\#):not(#\#):not(#\#):not(#\#){width:20px}.w_20px:not(#\#):not(#\#):not(#\#):not(#\#){width:20px}.h_20px:not(#\#):not(#\#):not(#\#):not(#\#){height:20px}.ls_-0\.16px:not(#\#):not(#\#):not(#\#):not(#\#){letter-spacing:-0.16px}.d_flex:not(#\#):not(#\#):not(#\#):not(#\#){display:flex}.gap_12px:not(#\#):not(#\#):not(#\#):not(#\#){gap:12px}.p_11px_18px_11px_20px:not(#\#):not(#\#):not(#\#):not(#\#){padding:11px 18px 11px 20px}.bg_monoBackgroundPressed:not(#\#):not(#\#):not(#\#):not(#\#){background:var(--colors-mono-background-pressed)}.bg_white:not(#\#):not(#\#):not(#\#):not(#\#){background:var(--colors-white)}.c_blue\.50:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-blue-50)}.c_blue\.100:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-blue-100)}.c_blue\.150:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-blue-150)}.c_blue\.200:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-blue-200)}.c_blue\.300:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-blue-300)}.c_blue\.400:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-blue-400)}.c_blue\.500:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-blue-500)}.c_blue\.600:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-blue-600)}.c_blue\.700:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-blue-700)}.c_blue\.800:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-blue-800)}.c_blue\.850:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-blue-850)}.c_blue\.900:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-blue-900)}.c_blue\.950:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-blue-950)}.c_yellow\.50:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-yellow-50)}.c_yellow\.100:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-yellow-100)}.c_yellow\.150:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-yellow-150)}.c_yellow\.200:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-yellow-200)}.c_yellow\.300:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-yellow-300)}.c_yellow\.400:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-yellow-400)}.c_yellow\.500:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-yellow-500)}.c_yellow\.600:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-yellow-600)}.c_yellow\.700:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-yellow-700)}.c_yellow\.800:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-yellow-800)}.c_yellow\.850:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-yellow-850)}.c_yellow\.900:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-yellow-900)}.c_yellow\.950:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-yellow-950)}.c_green\.50:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-green-50)}.c_green\.100:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-green-100)}.c_green\.150:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-green-150)}.c_green\.200:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-green-200)}.c_green\.300:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-green-300)}.c_green\.400:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-green-400)}.c_green\.500:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-green-500)}.c_green\.600:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-green-600)}.c_green\.700:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-green-700)}.c_green\.800:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-green-800)}.c_green\.850:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-green-850)}.c_green\.900:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-green-900)}.c_green\.950:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-green-950)}.c_red\.50:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-red-50)}.c_red\.100:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-red-100)}.c_red\.150:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-red-150)}.c_red\.200:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-red-200)}.c_red\.300:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-red-300)}.c_red\.400:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-red-400)}.c_red\.500:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-red-500)}.c_red\.600:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-red-600)}.c_red\.700:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-red-700)}.c_red\.800:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-red-800)}.c_red\.850:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-red-850)}.c_red\.900:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-red-900)}.c_red\.950:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-red-950)}.c_mono\.50:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-mono-50)}.c_mono\.100:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-mono-100)}.c_mono\.150:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-mono-150)}.c_mono\.200:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-mono-200)}.c_mono\.300:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-mono-300)}.c_mono\.400:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-mono-400)}.c_mono\.500:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-mono-500)}.c_mono\.600:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-mono-600)}.c_mono\.700:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-mono-700)}.c_mono\.800:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-mono-800)}.c_mono\.850:not(#\#):not(#\#):not(#\#):not(#\#){color:mono.850}.c_mono\.900:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-mono-900)}.c_mono\.950:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-mono-950)}.c_white:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-white)}.c_black:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-black)}.c_whiteOpacity\.20:not(#\#):not(#\#):not(#\#):not(#\#){color:whiteOpacity.20}.c_whiteOpacity\.40:not(#\#):not(#\#):not(#\#):not(#\#){color:whiteOpacity.40}.c_whiteOpacity\.60:not(#\#):not(#\#):not(#\#):not(#\#){color:whiteOpacity.60}.c_whiteOpacity\.80:not(#\#):not(#\#):not(#\#):not(#\#){color:whiteOpacity.80}.c_blackOpacity\.20:not(#\#):not(#\#):not(#\#):not(#\#){color:blackOpacity.20}.c_blackOpacity\.40:not(#\#):not(#\#):not(#\#):not(#\#){color:blackOpacity.40}.c_blackOpacity\.60:not(#\#):not(#\#):not(#\#):not(#\#){color:blackOpacity.60}.c_blackOpacity\.80:not(#\#):not(#\#):not(#\#):not(#\#){color:blackOpacity.80}.c_primary:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-primary)}.c_success:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-success)}.c_error:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-error)}.c_backgroundNormal:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-background-normal)}.c_backgroundAlternative:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-background-alternative)}.c_backgroundDimmer:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-background-dimmer)}.c_sub:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-sub)}.c_outline:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-outline)}.c_textBlack:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-text-black)}.c_textWhite:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-text-white)}.c_darkDisabled:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-dark-disabled)}.c_lightDisabled:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-light-disabled)}.c_blueHover:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-blue-hover)}.c_monoHover:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-mono-hover)}.c_elevatedHover:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-elevated-hover)}.c_bluePressed:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-blue-pressed)}.c_blueBackgroundPressed:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-blue-background-pressed)}.c_monoBackgroundPressed:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-mono-background-pressed)}.c_shadowSmall:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-shadow-small)}.c_shadowMedium:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-shadow-medium)}.c_blueShadow:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-blue-shadow)}.c_discord:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-discord)}.c_github:not(#\#):not(#\#):not(#\#):not(#\#){color:var(--colors-github)}.c_blueGradientDark:not(#\#):not(#\#):not(#\#):not(#\#){color:blueGradientDark}.c_blueGradientLight:not(#\#):not(#\#):not(#\#):not(#\#){color:blueGradientLight}.c_redGradientDark:not(#\#):not(#\#):not(#\#):not(#\#){color:redGradientDark}.c_redGradientLight:not(#\#):not(#\#):not(#\#):not(#\#){color:redGradientLight}.c_greenGradientDark:not(#\#):not(#\#):not(#\#):not(#\#){color:greenGradientDark}.c_greenGradientLight:not(#\#):not(#\#):not(#\#):not(#\#){color:greenGradientLight}.c_yellowGradientDark:not(#\#):not(#\#):not(#\#):not(#\#){color:yellowGradientDark}.c_yellowGradientLight:not(#\#):not(#\#):not(#\#):not(#\#){color:yellowGradientLight}.ml_auto:not(#\#):not(#\#):not(#\#):not(#\#){margin-left:auto}.fs_16px:not(#\#):not(#\#):not(#\#):not(#\#){font-size:16px}.fw_500:not(#\#):not(#\#):not(#\#):not(#\#){font-weight:500}.lh_160\%:not(#\#):not(#\#):not(#\#):not(#\#){line-height:160%}.mr_8px:not(#\#):not(#\#):not(#\#):not(#\#){margin-right:8px}.ai_center:not(#\#):not(#\#):not(#\#):not(#\#){align-items:center}
\ No newline at end of file
diff --git a/packages/ui/src/types/svg.d.ts b/packages/ui/src/types/svg.d.ts
new file mode 100644
index 00000000..1a3dd3c2
--- /dev/null
+++ b/packages/ui/src/types/svg.d.ts
@@ -0,0 +1,4 @@
+declare module "*.svg" {
+ const content: any;
+ export default content;
+}
diff --git a/packages/ui/tsconfig.json b/packages/ui/tsconfig.json
index 2b26c5ed..98451a84 100644
--- a/packages/ui/tsconfig.json
+++ b/packages/ui/tsconfig.json
@@ -4,7 +4,6 @@
"outDir": "dist",
"baseUrl": ".",
"paths": {
- "@/*": ["src/*"],
"@styled-system/*": ["./styled-system/*"]
}
},
diff --git a/packages/utils/.eslintrc.js b/packages/utils/.eslintrc.js
new file mode 100644
index 00000000..c65bd9c5
--- /dev/null
+++ b/packages/utils/.eslintrc.js
@@ -0,0 +1,11 @@
+/** @type {import("eslint").Linter.Config} */
+module.exports = {
+ root: true,
+ extends: ["@wow-class/eslint-config/basic.js"],
+ parser: "@typescript-eslint/parser",
+ parserOptions: {
+ project: true,
+ ecmaVersion: 2020,
+ sourceType: "module",
+ },
+};
diff --git a/packages/utils/jest.config.cjs b/packages/utils/jest.config.cjs
new file mode 100644
index 00000000..7d545384
--- /dev/null
+++ b/packages/utils/jest.config.cjs
@@ -0,0 +1,10 @@
+module.exports = {
+ preset: "ts-jest",
+ testEnvironment: "node",
+ setupFiles: ["/jest.setup.ts"],
+ moduleFileExtensions: ["ts", "tsx", "js", "jsx"],
+ transform: {
+ "^.+\\.ts?$": "ts-jest",
+ },
+ testMatch: ["/**/*.(test|spec).ts"],
+};
diff --git a/packages/utils/jest.setup.ts b/packages/utils/jest.setup.ts
new file mode 100644
index 00000000..15319f84
--- /dev/null
+++ b/packages/utils/jest.setup.ts
@@ -0,0 +1,3 @@
+import fetchMock from "jest-fetch-mock";
+
+fetchMock.enableMocks();
diff --git a/packages/utils/package.json b/packages/utils/package.json
new file mode 100644
index 00000000..f699a5c4
--- /dev/null
+++ b/packages/utils/package.json
@@ -0,0 +1,16 @@
+{
+ "name": "@wow-class/utils",
+ "version": "0.0.0",
+ "private": true,
+ "scripts": {
+ "test": "jest"
+ },
+ "devDependencies": {
+ "@types/jest": "^29.5.12",
+ "jest": "^29.7.0",
+ "jest-fetch-mock": "^3.0.3",
+ "ts-jest": "^29.2.4",
+ "@wow-class/eslint-config": "workspace:*",
+ "@wow-class/typescript-config": "workspace:*"
+ }
+}
diff --git a/packages/utils/src/fetcher/fetcher.test.ts b/packages/utils/src/fetcher/fetcher.test.ts
new file mode 100644
index 00000000..e2297c17
--- /dev/null
+++ b/packages/utils/src/fetcher/fetcher.test.ts
@@ -0,0 +1,126 @@
+import fetchMock from "jest-fetch-mock";
+
+import { fetcher } from "./fetcher";
+
+describe("Fetcher", () => {
+ beforeEach(() => {
+ fetchMock.resetMocks();
+ });
+
+ it("should set the baseURL correctly", () => {
+ fetcher.setBaseUrl("https://api.example.com");
+
+ expect(fetcher["baseUrl"]).toBe("https://api.example.com");
+ });
+
+ it("should set default headers correctly", () => {
+ fetcher.setDefaultHeaders({ Authorization: "Bearer test-token" });
+
+ expect(fetcher["defaultHeaders"]).toEqual({
+ Authorization: "Bearer test-token",
+ });
+ });
+
+ it("should make a GET request with the correct headers and URL", async () => {
+ fetchMock.mockResponseOnce(JSON.stringify({ success: true }));
+ fetcher.setBaseUrl("https://api.example.com");
+ fetcher.setDefaultHeaders({
+ "Content-Type": "application/json",
+ Authorization: "Bearer test-token",
+ });
+
+ const response = await fetcher.get("/test-endpoint");
+
+ expect(fetchMock).toHaveBeenCalledWith(
+ "https://api.example.com/test-endpoint",
+ {
+ method: "GET",
+ headers: {
+ Authorization: "Bearer test-token",
+ "Content-Type": "application/json",
+ },
+ }
+ );
+ const jsonData = JSON.parse(response.data);
+ expect(jsonData).toEqual({ success: true });
+ });
+
+ it("should make a GET request with query parameters", async () => {
+ fetchMock.mockResponseOnce(JSON.stringify({ success: true }));
+ fetcher.setBaseUrl("https://api.example.com");
+ fetcher.setDefaultHeaders({
+ "Content-Type": "application/json",
+ Authorization: "Bearer test-token",
+ });
+
+ const params = { key1: "value1", key2: "value2" };
+ const response = await fetcher.get("/test-endpoint", {}, params);
+
+ expect(fetchMock).toHaveBeenCalledWith(
+ "https://api.example.com/test-endpoint?key1=value1&key2=value2",
+ {
+ method: "GET",
+ headers: {
+ Authorization: "Bearer test-token",
+ "Content-Type": "application/json",
+ },
+ }
+ );
+ const jsonData = JSON.parse(response.data);
+ expect(jsonData).toEqual({ success: true });
+ });
+
+ it("should make a POST request with the correct headers and URL and body", async () => {
+ fetchMock.mockResponseOnce(JSON.stringify({ success: true }));
+ fetcher.setBaseUrl("https://api.example.com");
+ fetcher.setDefaultHeaders({
+ "Content-Type": "application/json",
+ Authorization: "Bearer test-token",
+ });
+
+ const response = await fetcher.post("/test-endpoint", { foo: "bar" });
+
+ expect(fetchMock).toHaveBeenCalledWith(
+ "https://api.example.com/test-endpoint",
+ {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ Authorization: "Bearer test-token",
+ },
+ body: JSON.stringify({ foo: "bar" }),
+ }
+ );
+ const jsonData = JSON.parse(response.data);
+ expect(jsonData).toEqual({ success: true });
+ });
+
+ it("should handle plain text responses", async () => {
+ fetchMock.mockResponseOnce("plain text response", {
+ headers: { "Content-Type": "text/plain" },
+ });
+ fetcher.setBaseUrl("https://api.example.com");
+
+ const response = await fetcher.get("/test-endpoint");
+ expect(response.data).toBe("plain text response");
+ });
+
+ it("should handle HTTP errors correctly", async () => {
+ fetchMock.mockResponseOnce("Not Found", { status: 404 });
+ fetcher.setBaseUrl("https://api.example.com");
+ fetcher.setDefaultHeaders({
+ "Content-Type": "application/json",
+ Authorization: "Bearer test-token",
+ });
+
+ try {
+ await fetcher.get("/test-endpoint");
+ } catch (error) {
+ expect(error).toBeInstanceOf(Error);
+ expect((error as any).response).toBeInstanceOf(Response);
+ expect((error as any).response.status).toBe(404);
+ expect((error as any).responseText).toBe("Not Found");
+ expect((error as any).message).toBe("HTTP Error: 404 Not Found");
+ }
+ });
+});
diff --git a/packages/utils/src/fetcher/fetcher.ts b/packages/utils/src/fetcher/fetcher.ts
new file mode 100644
index 00000000..caea16d3
--- /dev/null
+++ b/packages/utils/src/fetcher/fetcher.ts
@@ -0,0 +1,166 @@
+type ApiResponse = Response & { data?: T };
+
+type RequestInterceptor = (
+ options: RequestInit
+) => RequestInit | Promise;
+type ResponseInterceptor = (
+ response: ApiResponse
+) => ApiResponse | Promise>;
+
+class Fetcher {
+ private baseUrl: string;
+ private defaultHeaders: HeadersInit;
+ private requestInterceptors: RequestInterceptor[];
+ private responseInterceptors: ResponseInterceptor[];
+
+ constructor({ baseUrl = "", defaultHeaders = {} } = {}) {
+ this.baseUrl = baseUrl;
+ this.defaultHeaders = defaultHeaders;
+ this.requestInterceptors = [];
+ this.responseInterceptors = [];
+ }
+
+ setBaseUrl(baseUrl: string) {
+ this.baseUrl = baseUrl;
+ }
+
+ setDefaultHeaders(headers: HeadersInit) {
+ this.defaultHeaders = headers;
+ }
+
+ addRequestInterceptor(interceptor: RequestInterceptor) {
+ this.requestInterceptors.push(interceptor);
+ }
+
+ addResponseInterceptor(interceptor: ResponseInterceptor) {
+ this.responseInterceptors.push(interceptor);
+ }
+
+ private async interceptRequest(options: RequestInit): Promise {
+ options.headers = { ...this.defaultHeaders, ...options.headers };
+
+ for (const interceptor of this.requestInterceptors) {
+ options = (await interceptor(options)) || options;
+ }
+
+ return options;
+ }
+
+ private async interceptResponse(
+ response: Response
+ ): Promise> {
+ for (const interceptor of this.responseInterceptors) {
+ response = (await interceptor(response)) || response;
+ }
+
+ return response;
+ }
+
+ private async parseJsonResponse(response: Response): Promise {
+ const contentType = response.headers.get("Content-Type") || "";
+
+ if (contentType.includes("application/json")) {
+ return response.json();
+ } else if (contentType.startsWith("image/")) {
+ return response.blob();
+ }
+
+ return response.text();
+ }
+
+ private async handleError(response: Response) {
+ if (!response.ok) {
+ const text = await response.text();
+ const error = new Error(
+ `HTTP Error: ${response.status} ${response.statusText}`
+ );
+ (error as any).response = response;
+ (error as any).responseText = text;
+
+ throw error;
+ }
+ }
+
+ async request(
+ url: string,
+ options: RequestInit = {}
+ ): Promise> {
+ options = await this.interceptRequest(options);
+
+ const fullUrl = this.baseUrl + url;
+
+ let response: ApiResponse = await fetch(fullUrl, options);
+
+ await this.handleError(response);
+
+ response = await this.interceptResponse(response);
+ response.data = await this.parseJsonResponse(response);
+
+ return response;
+ }
+
+ get(
+ url: string,
+ options: RequestInit = {},
+ params: Record = {}
+ ): Promise> {
+ const queryString =
+ params && Object.keys(params).length > 0
+ ? `?${new URLSearchParams(params).toString()}`
+ : "";
+ const fullUrl = `${url}${queryString}`;
+
+ return this.request(fullUrl, { ...options, method: "GET" });
+ }
+
+ post(
+ url: string,
+ body: any,
+ options: RequestInit = {}
+ ): Promise> {
+ return this.request(url, {
+ ...options,
+ method: "POST",
+ body: JSON.stringify(body),
+ });
+ }
+
+ put(
+ url: string,
+ body: any,
+ options: RequestInit = {}
+ ): Promise> {
+ return this.request(url, {
+ ...options,
+ method: "PUT",
+ body: JSON.stringify(body),
+ });
+ }
+
+ patch(
+ url: string,
+ body: any,
+ options: RequestInit = {}
+ ): Promise> {
+ return this.request(url, {
+ ...options,
+ method: "PATCH",
+ body: JSON.stringify(body),
+ });
+ }
+
+ delete(
+ url: string,
+ options: RequestInit = {}
+ ): Promise> {
+ return this.request(url, { ...options, method: "DELETE" });
+ }
+}
+
+export const fetcher = new Fetcher({
+ baseUrl:
+ process.env.NODE_ENV === "production"
+ ? process.env.NEXT_PUBLIC_PROD_BASE_URL
+ : process.env.NEXT_PUBLIC_DEV_BASE_URL,
+ defaultHeaders: { "Content-Type": "application/json" },
+});
diff --git a/packages/utils/tsconfig.json b/packages/utils/tsconfig.json
new file mode 100644
index 00000000..92343a69
--- /dev/null
+++ b/packages/utils/tsconfig.json
@@ -0,0 +1,5 @@
+{
+ "extends": "@wow-class/typescript-config/basic.json",
+ "include": ["src", "jest.setup.ts"],
+ "exclude": ["node_modules"]
+}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index d64d83f1..11d414f0 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -10,7 +10,7 @@ importers:
dependencies:
wowds-tokens:
specifier: ^0.1.1
- version: 0.1.1
+ version: 0.1.2
wowds-ui:
specifier: ^0.1.8
version: 0.1.8(next@14.2.5)(react-dom@18.3.1)(react@18.3.1)
@@ -42,14 +42,17 @@ importers:
'@wow-class/ui':
specifier: workspace:*
version: link:../../packages/ui
+ jotai:
+ specifier: ^2.9.2
+ version: 2.9.2(@types/react@18.2.61)(react@18.3.1)
next:
- specifier: latest
+ specifier: ^14.2.5
version: 14.2.5(@babel/core@7.25.2)(react-dom@18.3.1)(react@18.3.1)
react:
- specifier: latest
+ specifier: ^18.3.1
version: 18.3.1
react-dom:
- specifier: latest
+ specifier: ^18.3.1
version: 18.3.1(react@18.3.1)
devDependencies:
'@types/node':
@@ -67,11 +70,14 @@ importers:
'@wow-class/typescript-config':
specifier: workspace:*
version: link:../../packages/typescript-config
+ '@wow-class/utils':
+ specifier: workspace:*
+ version: link:../../packages/utils
eslint:
specifier: ^8
version: 8.57.0
eslint-config-next:
- specifier: latest
+ specifier: ^14.2.5
version: 14.2.5(eslint@8.57.0)(typescript@5.4.5)
typescript:
specifier: ^5
@@ -82,14 +88,17 @@ importers:
'@wow-class/ui':
specifier: workspace:*
version: link:../../packages/ui
+ jotai:
+ specifier: ^2.9.2
+ version: 2.9.2(@types/react@18.2.61)(react@18.3.1)
next:
- specifier: latest
+ specifier: ^14.2.5
version: 14.2.5(@babel/core@7.25.2)(react-dom@18.3.1)(react@18.3.1)
react:
- specifier: latest
+ specifier: ^18.3.1
version: 18.3.1
react-dom:
- specifier: latest
+ specifier: ^18.3.1
version: 18.3.1(react@18.3.1)
devDependencies:
'@types/node':
@@ -107,11 +116,14 @@ importers:
'@wow-class/typescript-config':
specifier: workspace:*
version: link:../../packages/typescript-config
+ '@wow-class/utils':
+ specifier: workspace:*
+ version: link:../../packages/utils
eslint:
specifier: ^8
version: 8.57.0
eslint-config-next:
- specifier: latest
+ specifier: ^14.2.5
version: 14.2.5(eslint@8.57.0)(typescript@5.4.5)
typescript:
specifier: ^5
@@ -172,9 +184,15 @@ importers:
packages/ui:
dependencies:
+ next:
+ specifier: ^14.2.5
+ version: 14.2.5(@babel/core@7.25.2)(react-dom@18.3.1)(react@18.3.1)
react:
- specifier: latest
+ specifier: ^18.3.1
version: 18.3.1
+ react-dom:
+ specifier: ^18.3.1
+ version: 18.3.1(react@18.3.1)
devDependencies:
'@storybook/addon-essentials':
specifier: ^8.2.7
@@ -222,6 +240,27 @@ importers:
specifier: ^5.3.3
version: 5.3.3
+ packages/utils:
+ devDependencies:
+ '@types/jest':
+ specifier: ^29.5.12
+ version: 29.5.12
+ '@wow-class/eslint-config':
+ specifier: workspace:*
+ version: link:../eslint-config
+ '@wow-class/typescript-config':
+ specifier: workspace:*
+ version: link:../typescript-config
+ jest:
+ specifier: ^29.7.0
+ version: 29.7.0
+ jest-fetch-mock:
+ specifier: ^3.0.3
+ version: 3.0.3
+ ts-jest:
+ specifier: ^29.2.4
+ version: 29.2.4(@babel/core@7.25.2)(jest@29.7.0)(typescript@5.4.5)
+
packages:
/@aashutoshrathi/word-wrap@1.2.6:
@@ -237,14 +276,14 @@ packages:
resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==}
engines: {node: '>=6.0.0'}
dependencies:
- '@jridgewell/gen-mapping': 0.3.3
- '@jridgewell/trace-mapping': 0.3.20
+ '@jridgewell/gen-mapping': 0.3.5
+ '@jridgewell/trace-mapping': 0.3.25
/@babel/code-frame@7.22.13:
resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/highlight': 7.22.20
+ '@babel/highlight': 7.24.7
chalk: 2.4.2
dev: true
@@ -323,8 +362,8 @@ packages:
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.25.2
- '@jridgewell/gen-mapping': 0.3.3
- '@jridgewell/trace-mapping': 0.3.20
+ '@jridgewell/gen-mapping': 0.3.5
+ '@jridgewell/trace-mapping': 0.3.25
jsesc: 2.5.2
dev: true
@@ -555,11 +594,6 @@ packages:
'@babel/types': 7.25.2
dev: true
- /@babel/helper-string-parser@7.22.5:
- resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==}
- engines: {node: '>=6.9.0'}
- dev: true
-
/@babel/helper-string-parser@7.24.8:
resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==}
engines: {node: '>=6.9.0'}
@@ -606,15 +640,6 @@ packages:
'@babel/template': 7.25.0
'@babel/types': 7.25.2
- /@babel/highlight@7.22.20:
- resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==}
- engines: {node: '>=6.9.0'}
- dependencies:
- '@babel/helper-validator-identifier': 7.24.7
- chalk: 2.4.2
- js-tokens: 4.0.0
- dev: true
-
/@babel/highlight@7.24.7:
resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==}
engines: {node: '>=6.9.0'}
@@ -629,7 +654,7 @@ packages:
engines: {node: '>=6.0.0'}
hasBin: true
dependencies:
- '@babel/types': 7.23.3
+ '@babel/types': 7.25.2
dev: true
/@babel/parser@7.25.3:
@@ -1771,7 +1796,7 @@ packages:
engines: {node: '>=6.9.0'}
dependencies:
'@babel/code-frame': 7.24.7
- '@babel/parser': 7.23.3
+ '@babel/parser': 7.25.3
'@babel/types': 7.25.2
dev: true
@@ -1788,12 +1813,12 @@ packages:
engines: {node: '>=6.9.0'}
dependencies:
'@babel/code-frame': 7.24.7
- '@babel/generator': 7.23.3
+ '@babel/generator': 7.25.0
'@babel/helper-environment-visitor': 7.22.20
'@babel/helper-function-name': 7.23.0
'@babel/helper-hoist-variables': 7.22.5
'@babel/helper-split-export-declaration': 7.22.6
- '@babel/parser': 7.23.3
+ '@babel/parser': 7.25.3
'@babel/types': 7.25.2
debug: 4.3.4
globals: 11.12.0
@@ -1819,7 +1844,7 @@ packages:
resolution: {integrity: sha512-OZnvoH2l8PK5eUvEcUyCt/sXgr/h+UWpVuBbOljwcrAgUl6lpchoQ++PHGyQy1AtYnVA6CEq3y5xeEI10brpXw==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/helper-string-parser': 7.22.5
+ '@babel/helper-string-parser': 7.24.8
'@babel/helper-validator-identifier': 7.24.7
to-fast-properties: 2.0.0
dev: true
@@ -1836,6 +1861,10 @@ packages:
resolution: {integrity: sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==}
dev: true
+ /@bcoe/v8-coverage@0.2.3:
+ resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
+ dev: true
+
/@clack/core@0.3.4:
resolution: {integrity: sha512-H4hxZDXgHtWTwV3RAVenqcC4VbJZNegbBjlPvzOzCouXtS2y3sDvlO3IsbrPNWuLWPPlYVYPghQdSF64683Ldw==}
dependencies:
@@ -1847,7 +1876,7 @@ packages:
resolution: {integrity: sha512-0MhX9/B4iL6Re04jPrttDm+BsP8y6mS7byuv0BvXgdXhbV5PdlsHt55dvNsuBCPZ7xq1oTAOOuotR9NFbQyMSA==}
dependencies:
'@clack/core': 0.3.4
- picocolors: 1.0.0
+ picocolors: 1.0.1
sisteransi: 1.0.5
dev: true
bundledDependencies:
@@ -2559,6 +2588,165 @@ packages:
wrap-ansi-cjs: /wrap-ansi@7.0.0
dev: true
+ /@istanbuljs/load-nyc-config@1.1.0:
+ resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ camelcase: 5.3.1
+ find-up: 4.1.0
+ get-package-type: 0.1.0
+ js-yaml: 3.14.1
+ resolve-from: 5.0.0
+ dev: true
+
+ /@istanbuljs/schema@0.1.3:
+ resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /@jest/console@29.7.0:
+ resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/types': 29.6.3
+ '@types/node': 20.11.24
+ chalk: 4.1.2
+ jest-message-util: 29.7.0
+ jest-util: 29.7.0
+ slash: 3.0.0
+ dev: true
+
+ /@jest/core@29.7.0:
+ resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ peerDependencies:
+ node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
+ peerDependenciesMeta:
+ node-notifier:
+ optional: true
+ dependencies:
+ '@jest/console': 29.7.0
+ '@jest/reporters': 29.7.0
+ '@jest/test-result': 29.7.0
+ '@jest/transform': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 20.11.24
+ ansi-escapes: 4.3.2
+ chalk: 4.1.2
+ ci-info: 3.9.0
+ exit: 0.1.2
+ graceful-fs: 4.2.11
+ jest-changed-files: 29.7.0
+ jest-config: 29.7.0(@types/node@20.11.24)
+ jest-haste-map: 29.7.0
+ jest-message-util: 29.7.0
+ jest-regex-util: 29.6.3
+ jest-resolve: 29.7.0
+ jest-resolve-dependencies: 29.7.0
+ jest-runner: 29.7.0
+ jest-runtime: 29.7.0
+ jest-snapshot: 29.7.0
+ jest-util: 29.7.0
+ jest-validate: 29.7.0
+ jest-watcher: 29.7.0
+ micromatch: 4.0.7
+ pretty-format: 29.7.0
+ slash: 3.0.0
+ strip-ansi: 6.0.1
+ transitivePeerDependencies:
+ - babel-plugin-macros
+ - supports-color
+ - ts-node
+ dev: true
+
+ /@jest/environment@29.7.0:
+ resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/fake-timers': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 20.11.24
+ jest-mock: 29.7.0
+ dev: true
+
+ /@jest/expect-utils@29.7.0:
+ resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ jest-get-type: 29.6.3
+ dev: true
+
+ /@jest/expect@29.7.0:
+ resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ expect: 29.7.0
+ jest-snapshot: 29.7.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@jest/fake-timers@29.7.0:
+ resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/types': 29.6.3
+ '@sinonjs/fake-timers': 10.3.0
+ '@types/node': 20.11.24
+ jest-message-util: 29.7.0
+ jest-mock: 29.7.0
+ jest-util: 29.7.0
+ dev: true
+
+ /@jest/globals@29.7.0:
+ resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/environment': 29.7.0
+ '@jest/expect': 29.7.0
+ '@jest/types': 29.6.3
+ jest-mock: 29.7.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@jest/reporters@29.7.0:
+ resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ peerDependencies:
+ node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
+ peerDependenciesMeta:
+ node-notifier:
+ optional: true
+ dependencies:
+ '@bcoe/v8-coverage': 0.2.3
+ '@jest/console': 29.7.0
+ '@jest/test-result': 29.7.0
+ '@jest/transform': 29.7.0
+ '@jest/types': 29.6.3
+ '@jridgewell/trace-mapping': 0.3.25
+ '@types/node': 20.11.24
+ chalk: 4.1.2
+ collect-v8-coverage: 1.0.2
+ exit: 0.1.2
+ glob: 7.2.3
+ graceful-fs: 4.2.11
+ istanbul-lib-coverage: 3.2.2
+ istanbul-lib-instrument: 6.0.3
+ istanbul-lib-report: 3.0.1
+ istanbul-lib-source-maps: 4.0.1
+ istanbul-reports: 3.1.7
+ jest-message-util: 29.7.0
+ jest-util: 29.7.0
+ jest-worker: 29.7.0
+ slash: 3.0.0
+ string-length: 4.0.2
+ strip-ansi: 6.0.1
+ v8-to-istanbul: 9.3.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/@jest/schemas@29.6.3:
resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -2566,6 +2754,70 @@ packages:
'@sinclair/typebox': 0.27.8
dev: true
+ /@jest/source-map@29.6.3:
+ resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jridgewell/trace-mapping': 0.3.25
+ callsites: 3.1.0
+ graceful-fs: 4.2.11
+ dev: true
+
+ /@jest/test-result@29.7.0:
+ resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/console': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/istanbul-lib-coverage': 2.0.6
+ collect-v8-coverage: 1.0.2
+ dev: true
+
+ /@jest/test-sequencer@29.7.0:
+ resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/test-result': 29.7.0
+ graceful-fs: 4.2.11
+ jest-haste-map: 29.7.0
+ slash: 3.0.0
+ dev: true
+
+ /@jest/transform@29.7.0:
+ resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@babel/core': 7.25.2
+ '@jest/types': 29.6.3
+ '@jridgewell/trace-mapping': 0.3.25
+ babel-plugin-istanbul: 6.1.1
+ chalk: 4.1.2
+ convert-source-map: 2.0.0
+ fast-json-stable-stringify: 2.1.0
+ graceful-fs: 4.2.11
+ jest-haste-map: 29.7.0
+ jest-regex-util: 29.6.3
+ jest-util: 29.7.0
+ micromatch: 4.0.7
+ pirates: 4.0.6
+ slash: 3.0.0
+ write-file-atomic: 4.0.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@jest/types@29.6.3:
+ resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/schemas': 29.6.3
+ '@types/istanbul-lib-coverage': 2.0.6
+ '@types/istanbul-reports': 3.0.4
+ '@types/node': 20.11.24
+ '@types/yargs': 17.0.33
+ chalk: 4.1.2
+ dev: true
+
/@joshwooding/vite-plugin-react-docgen-typescript@0.3.1(typescript@5.3.3)(vite@5.3.5):
resolution: {integrity: sha512-pdoMZ9QaPnVlSM+SdU/wgg0nyD/8wQ7y90ttO2CMCyrrm7RxveYIJ5eNfjPaoMFqW41LZra7QO9j+xV4Y18Glw==}
peerDependencies:
@@ -2583,14 +2835,6 @@ packages:
vite: 5.3.5(@types/node@20.11.24)
dev: true
- /@jridgewell/gen-mapping@0.3.3:
- resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==}
- engines: {node: '>=6.0.0'}
- dependencies:
- '@jridgewell/set-array': 1.2.1
- '@jridgewell/sourcemap-codec': 1.5.0
- '@jridgewell/trace-mapping': 0.3.25
-
/@jridgewell/gen-mapping@0.3.5:
resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==}
engines: {node: '>=6.0.0'}
@@ -2614,19 +2858,9 @@ packages:
'@jridgewell/trace-mapping': 0.3.25
dev: true
- /@jridgewell/sourcemap-codec@1.4.15:
- resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
- dev: true
-
/@jridgewell/sourcemap-codec@1.5.0:
resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
- /@jridgewell/trace-mapping@0.3.20:
- resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==}
- dependencies:
- '@jridgewell/resolve-uri': 3.1.1
- '@jridgewell/sourcemap-codec': 1.5.0
-
/@jridgewell/trace-mapping@0.3.25:
resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
dependencies:
@@ -2637,7 +2871,7 @@ packages:
resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
dependencies:
'@jridgewell/resolve-uri': 3.1.1
- '@jridgewell/sourcemap-codec': 1.4.15
+ '@jridgewell/sourcemap-codec': 1.5.0
dev: true
/@mdx-js/react@3.0.1(@types/react@18.2.61)(react@18.3.1):
@@ -2980,7 +3214,7 @@ packages:
engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
dependencies:
cross-spawn: 7.0.3
- fast-glob: 3.3.1
+ fast-glob: 3.3.2
is-glob: 4.0.3
open: 9.1.0
picocolors: 1.0.1
@@ -3179,6 +3413,18 @@ packages:
engines: {node: '>=18'}
dev: true
+ /@sinonjs/commons@3.0.1:
+ resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==}
+ dependencies:
+ type-detect: 4.0.8
+ dev: true
+
+ /@sinonjs/fake-timers@10.3.0:
+ resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==}
+ dependencies:
+ '@sinonjs/commons': 3.0.1
+ dev: true
+
/@storybook/addon-actions@8.2.8(storybook@8.2.8):
resolution: {integrity: sha512-dyajqsMNAUktpi7aiml0Fsm4ey8Nh2YwRyTDuTJZ1iJFcFyARqfr5iKH4/qElq80y0FYXGgGRJB+dKJsCdefLw==}
peerDependencies:
@@ -3837,7 +4083,7 @@ packages:
dependencies:
'@adobe/css-tools': 4.4.0
'@babel/runtime': 7.25.0
- aria-query: 5.1.3
+ aria-query: 5.3.0
chalk: 3.0.0
css.escape: 1.5.1
dom-accessibility-api: 0.6.3
@@ -3911,14 +4157,14 @@ packages:
chalk: 2.4.2
commander: 10.0.1
execa: 5.1.1
- fast-glob: 3.3.1
+ fast-glob: 3.3.2
fs-extra: 10.1.0
gradient-string: 2.0.2
inquirer: 8.2.6
js-yaml: 4.1.0
ora: 4.1.1
rimraf: 3.0.2
- semver: 7.5.4
+ semver: 7.6.2
update-check: 1.5.4
dev: true
@@ -3929,8 +4175,8 @@ packages:
/@types/babel__core@7.20.5:
resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==}
dependencies:
- '@babel/parser': 7.23.3
- '@babel/types': 7.23.3
+ '@babel/parser': 7.25.3
+ '@babel/types': 7.25.2
'@types/babel__generator': 7.6.8
'@types/babel__template': 7.4.4
'@types/babel__traverse': 7.20.6
@@ -3952,7 +4198,7 @@ packages:
/@types/babel__traverse@7.20.6:
resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==}
dependencies:
- '@babel/types': 7.23.3
+ '@babel/types': 7.25.2
dev: true
/@types/body-parser@1.19.5:
@@ -4037,6 +4283,12 @@ packages:
'@types/node': 20.11.24
dev: true
+ /@types/graceful-fs@4.1.9:
+ resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==}
+ dependencies:
+ '@types/node': 20.11.24
+ dev: true
+
/@types/hast@3.0.4:
resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==}
dependencies:
@@ -4058,6 +4310,29 @@ packages:
rxjs: 6.6.7
dev: true
+ /@types/istanbul-lib-coverage@2.0.6:
+ resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==}
+ dev: true
+
+ /@types/istanbul-lib-report@3.0.3:
+ resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==}
+ dependencies:
+ '@types/istanbul-lib-coverage': 2.0.6
+ dev: true
+
+ /@types/istanbul-reports@3.0.4:
+ resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==}
+ dependencies:
+ '@types/istanbul-lib-report': 3.0.3
+ dev: true
+
+ /@types/jest@29.5.12:
+ resolution: {integrity: sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==}
+ dependencies:
+ expect: 29.7.0
+ pretty-format: 29.7.0
+ dev: true
+
/@types/json-schema@7.0.12:
resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==}
dev: true
@@ -4108,7 +4383,6 @@ packages:
/@types/prop-types@15.7.5:
resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==}
- dev: true
/@types/qs@6.9.15:
resolution: {integrity: sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==}
@@ -4130,7 +4404,6 @@ packages:
'@types/prop-types': 15.7.5
'@types/scheduler': 0.16.3
csstype: 3.1.2
- dev: true
/@types/resolve@1.20.6:
resolution: {integrity: sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==}
@@ -4138,7 +4411,6 @@ packages:
/@types/scheduler@0.16.3:
resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==}
- dev: true
/@types/semver@7.5.0:
resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==}
@@ -4159,6 +4431,10 @@ packages:
'@types/send': 0.17.4
dev: true
+ /@types/stack-utils@2.0.3:
+ resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==}
+ dev: true
+
/@types/through@0.0.30:
resolution: {integrity: sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==}
dependencies:
@@ -4177,6 +4453,16 @@ packages:
resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==}
dev: true
+ /@types/yargs-parser@21.0.3:
+ resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==}
+ dev: true
+
+ /@types/yargs@17.0.33:
+ resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==}
+ dependencies:
+ '@types/yargs-parser': 21.0.3
+ dev: true
+
/@typescript-eslint/eslint-plugin@6.17.0(@typescript-eslint/parser@6.17.0)(eslint@8.57.0)(typescript@5.4.5):
resolution: {integrity: sha512-Vih/4xLXmY7V490dGwBQJTpIZxH4ZFH6eCVmQ4RFkB+wmaCTDAx4dtgoWwMNGKLkqRY1L6rPqzEbjorRnDo4rQ==}
engines: {node: ^16.0.0 || >=18.0.0}
@@ -5025,13 +5311,6 @@ packages:
dequal: 2.0.3
dev: true
- /array-buffer-byte-length@1.0.0:
- resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==}
- dependencies:
- call-bind: 1.0.7
- is-array-buffer: 3.0.4
- dev: true
-
/array-buffer-byte-length@1.0.1:
resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==}
engines: {node: '>= 0.4'}
@@ -5044,17 +5323,6 @@ packages:
resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==}
dev: true
- /array-includes@3.1.7:
- resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==}
- engines: {node: '>= 0.4'}
- dependencies:
- call-bind: 1.0.7
- define-properties: 1.2.1
- es-abstract: 1.22.3
- get-intrinsic: 1.2.2
- is-string: 1.0.7
- dev: true
-
/array-includes@3.1.8:
resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==}
engines: {node: '>= 0.4'}
@@ -5126,19 +5394,6 @@ packages:
es-shim-unscopables: 1.0.2
dev: true
- /arraybuffer.prototype.slice@1.0.2:
- resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==}
- engines: {node: '>= 0.4'}
- dependencies:
- array-buffer-byte-length: 1.0.1
- call-bind: 1.0.7
- define-properties: 1.2.1
- es-abstract: 1.22.3
- get-intrinsic: 1.2.4
- is-array-buffer: 3.0.4
- is-shared-array-buffer: 1.0.3
- dev: true
-
/arraybuffer.prototype.slice@1.0.3:
resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==}
engines: {node: '>= 0.4'}
@@ -5193,9 +5448,8 @@ packages:
tslib: 2.6.2
dev: true
- /available-typed-arrays@1.0.5:
- resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==}
- engines: {node: '>= 0.4'}
+ /async@3.2.5:
+ resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==}
dev: true
/available-typed-arrays@1.0.7:
@@ -5224,6 +5478,24 @@ packages:
'@babel/core': 7.25.2
dev: true
+ /babel-jest@29.7.0(@babel/core@7.25.2):
+ resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ peerDependencies:
+ '@babel/core': ^7.8.0
+ dependencies:
+ '@babel/core': 7.25.2
+ '@jest/transform': 29.7.0
+ '@types/babel__core': 7.20.5
+ babel-plugin-istanbul: 6.1.1
+ babel-preset-jest: 29.6.3(@babel/core@7.25.2)
+ chalk: 4.1.2
+ graceful-fs: 4.2.11
+ slash: 3.0.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/babel-loader@9.1.3(@babel/core@7.25.2)(webpack@5.93.0):
resolution: {integrity: sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==}
engines: {node: '>= 14.15.0'}
@@ -5237,7 +5509,30 @@ packages:
webpack: 5.93.0(esbuild@0.21.5)
dev: true
- /babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.25.2):
+ /babel-plugin-istanbul@6.1.1:
+ resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==}
+ engines: {node: '>=8'}
+ dependencies:
+ '@babel/helper-plugin-utils': 7.24.8
+ '@istanbuljs/load-nyc-config': 1.1.0
+ '@istanbuljs/schema': 0.1.3
+ istanbul-lib-instrument: 5.2.1
+ test-exclude: 6.0.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /babel-plugin-jest-hoist@29.6.3:
+ resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@babel/template': 7.25.0
+ '@babel/types': 7.25.2
+ '@types/babel__core': 7.20.5
+ '@types/babel__traverse': 7.20.6
+ dev: true
+
+ /babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.25.2):
resolution: {integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==}
peerDependencies:
'@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
@@ -5273,6 +5568,37 @@ packages:
- supports-color
dev: true
+ /babel-preset-current-node-syntax@1.0.1(@babel/core@7.25.2):
+ resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/core': 7.25.2
+ '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2)
+ '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.25.2)
+ '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.25.2)
+ '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.25.2)
+ '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2)
+ '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2)
+ '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2)
+ '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2)
+ '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2)
+ '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2)
+ '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2)
+ '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.25.2)
+ dev: true
+
+ /babel-preset-jest@29.6.3(@babel/core@7.25.2):
+ resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/core': 7.25.2
+ babel-plugin-jest-hoist: 29.6.3
+ babel-preset-current-node-syntax: 1.0.1(@babel/core@7.25.2)
+ dev: true
+
/balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
dev: true
@@ -5453,6 +5779,19 @@ packages:
node-releases: 2.0.18
update-browserslist-db: 1.1.0(browserslist@4.23.3)
+ /bs-logger@0.2.6:
+ resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==}
+ engines: {node: '>= 6'}
+ dependencies:
+ fast-json-stable-stringify: 2.1.0
+ dev: true
+
+ /bser@2.1.1:
+ resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==}
+ dependencies:
+ node-int64: 0.4.0
+ dev: true
+
/buffer-from@1.1.2:
resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
dev: true
@@ -5524,8 +5863,8 @@ packages:
resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==}
dependencies:
function-bind: 1.1.2
- get-intrinsic: 1.2.2
- set-function-length: 1.1.1
+ get-intrinsic: 1.2.4
+ set-function-length: 1.2.2
dev: true
/call-bind@1.0.7:
@@ -5558,6 +5897,16 @@ packages:
tslib: 2.6.2
dev: true
+ /camelcase@5.3.1:
+ resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /camelcase@6.3.0:
+ resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==}
+ engines: {node: '>=10'}
+ dev: true
+
/caniuse-api@3.0.0:
resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==}
dependencies:
@@ -5567,9 +5916,6 @@ packages:
lodash.uniq: 4.5.0
dev: true
- /caniuse-lite@1.0.30001593:
- resolution: {integrity: sha512-UWM1zlo3cZfkpBysd7AS+z+v007q9G1+fLTUU42rQnY6t2axoogPW/xol6T7juU5EUoOhML4WgBIdG+9yYqAjQ==}
-
/caniuse-lite@1.0.30001650:
resolution: {integrity: sha512-fgEc7hP/LB7iicdXHUI9VsBsMZmUmlVJeQP2qqQW+3lkqVhbmjEU8zp+h5stWeilX+G7uXuIUIIlWlDw9jdt8g==}
@@ -5643,6 +5989,11 @@ packages:
upper-case-first: 1.1.2
dev: true
+ /char-regex@1.0.2:
+ resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==}
+ engines: {node: '>=10'}
+ dev: true
+
/chardet@0.7.0:
resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==}
dev: true
@@ -5754,6 +6105,15 @@ packages:
/client-only@0.0.1:
resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==}
+ /cliui@8.0.1:
+ resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ wrap-ansi: 7.0.0
+ dev: true
+
/clone-deep@4.0.1:
resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==}
engines: {node: '>=6'}
@@ -5768,10 +6128,19 @@ packages:
engines: {node: '>=0.8'}
dev: true
+ /co@4.6.0:
+ resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==}
+ engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'}
+ dev: true
+
/code-block-writer@12.0.0:
resolution: {integrity: sha512-q4dMFMlXtKR3XNBHyMHt/3pwYNA69EDk00lloMOaaUMKPUXBw6lpXtbu3MMVG6/uOihGnRDOlkyqsONEUj60+w==}
dev: true
+ /collect-v8-coverage@1.0.2:
+ resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==}
+ dev: true
+
/color-convert@1.9.3:
resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
dependencies:
@@ -5973,10 +6342,37 @@ packages:
sha.js: 2.4.11
dev: true
+ /create-jest@29.7.0:
+ resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ hasBin: true
+ dependencies:
+ '@jest/types': 29.6.3
+ chalk: 4.1.2
+ exit: 0.1.2
+ graceful-fs: 4.2.11
+ jest-config: 29.7.0(@types/node@20.11.24)
+ jest-util: 29.7.0
+ prompts: 2.4.2
+ transitivePeerDependencies:
+ - '@types/node'
+ - babel-plugin-macros
+ - supports-color
+ - ts-node
+ dev: true
+
/create-require@1.1.1:
resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}
dev: true
+ /cross-fetch@3.1.8:
+ resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==}
+ dependencies:
+ node-fetch: 2.7.0
+ transitivePeerDependencies:
+ - encoding
+ dev: true
+
/cross-spawn@7.0.3:
resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
engines: {node: '>= 8'}
@@ -6075,7 +6471,6 @@ packages:
/csstype@3.1.2:
resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==}
- dev: true
/damerau-levenshtein@1.0.8:
resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==}
@@ -6150,6 +6545,15 @@ packages:
resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==}
dev: true
+ /dedent@1.5.3:
+ resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==}
+ peerDependencies:
+ babel-plugin-macros: ^3.1.0
+ peerDependenciesMeta:
+ babel-plugin-macros:
+ optional: true
+ dev: true
+
/deep-eql@4.1.4:
resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==}
engines: {node: '>=6'}
@@ -6219,15 +6623,6 @@ packages:
clone: 1.0.4
dev: true
- /define-data-property@1.1.1:
- resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==}
- engines: {node: '>= 0.4'}
- dependencies:
- get-intrinsic: 1.2.4
- gopd: 1.0.1
- has-property-descriptors: 1.0.2
- dev: true
-
/define-data-property@1.1.4:
resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
engines: {node: '>= 0.4'}
@@ -6246,8 +6641,8 @@ packages:
resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
engines: {node: '>= 0.4'}
dependencies:
- define-data-property: 1.1.1
- has-property-descriptors: 1.0.1
+ define-data-property: 1.1.4
+ has-property-descriptors: 1.0.2
object-keys: 1.1.1
dev: true
@@ -6323,6 +6718,11 @@ packages:
dev: true
optional: true
+ /detect-newline@3.1.0:
+ resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==}
+ engines: {node: '>=8'}
+ dev: true
+
/detect-newline@4.0.1:
resolution: {integrity: sha512-qE3Veg1YXzGHQhlA6jzebZN2qVf6NX+A7m7qlhCGG30dJixrAQhYOsJjsnBjJkCSmuOPpCk30145fr8FV0bzog==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -6439,6 +6839,14 @@ packages:
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
dev: true
+ /ejs@3.1.10:
+ resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==}
+ engines: {node: '>=0.10.0'}
+ hasBin: true
+ dependencies:
+ jake: 10.9.2
+ dev: true
+
/electron-to-chromium@1.5.5:
resolution: {integrity: sha512-QR7/A7ZkMS8tZuoftC/jfqNkZLQO779SSW3YuZHP4eXpj3EffGLFcB/Xu9AAZQzLccTiCV+EmUo3ha4mQ9wnlA==}
@@ -6454,6 +6862,11 @@ packages:
minimalistic-crypto-utils: 1.0.1
dev: true
+ /emittery@0.13.1:
+ resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==}
+ engines: {node: '>=12'}
+ dev: true
+
/emoji-regex@10.3.0:
resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==}
dev: true
@@ -6541,43 +6954,43 @@ packages:
resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==}
engines: {node: '>= 0.4'}
dependencies:
- array-buffer-byte-length: 1.0.0
- arraybuffer.prototype.slice: 1.0.2
- available-typed-arrays: 1.0.5
+ array-buffer-byte-length: 1.0.1
+ arraybuffer.prototype.slice: 1.0.3
+ available-typed-arrays: 1.0.7
call-bind: 1.0.7
- es-set-tostringtag: 2.0.2
+ es-set-tostringtag: 2.0.3
es-to-primitive: 1.2.1
function.prototype.name: 1.1.6
- get-intrinsic: 1.2.2
- get-symbol-description: 1.0.0
+ get-intrinsic: 1.2.4
+ get-symbol-description: 1.0.2
globalthis: 1.0.3
gopd: 1.0.1
- has-property-descriptors: 1.0.1
- has-proto: 1.0.1
+ has-property-descriptors: 1.0.2
+ has-proto: 1.0.3
has-symbols: 1.0.3
- hasown: 2.0.0
- internal-slot: 1.0.6
- is-array-buffer: 3.0.2
+ hasown: 2.0.2
+ internal-slot: 1.0.7
+ is-array-buffer: 3.0.4
is-callable: 1.2.7
- is-negative-zero: 2.0.2
+ is-negative-zero: 2.0.3
is-regex: 1.1.4
- is-shared-array-buffer: 1.0.2
+ is-shared-array-buffer: 1.0.3
is-string: 1.0.7
is-typed-array: 1.1.13
is-weakref: 1.0.2
object-inspect: 1.13.1
object-keys: 1.1.1
object.assign: 4.1.5
- regexp.prototype.flags: 1.5.1
- safe-array-concat: 1.0.1
- safe-regex-test: 1.0.0
- string.prototype.trim: 1.2.8
- string.prototype.trimend: 1.0.7
- string.prototype.trimstart: 1.0.7
- typed-array-buffer: 1.0.0
- typed-array-byte-length: 1.0.0
- typed-array-byte-offset: 1.0.0
- typed-array-length: 1.0.4
+ regexp.prototype.flags: 1.5.2
+ safe-array-concat: 1.1.2
+ safe-regex-test: 1.0.3
+ string.prototype.trim: 1.2.9
+ string.prototype.trimend: 1.0.8
+ string.prototype.trimstart: 1.0.8
+ typed-array-buffer: 1.0.2
+ typed-array-byte-length: 1.0.1
+ typed-array-byte-offset: 1.0.2
+ typed-array-length: 1.0.6
unbox-primitive: 1.0.2
which-typed-array: 1.1.15
dev: true
@@ -6691,15 +7104,6 @@ packages:
es-errors: 1.3.0
dev: true
- /es-set-tostringtag@2.0.2:
- resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==}
- engines: {node: '>= 0.4'}
- dependencies:
- get-intrinsic: 1.2.4
- has-tostringtag: 1.0.2
- hasown: 2.0.2
- dev: true
-
/es-set-tostringtag@2.0.3:
resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==}
engines: {node: '>= 0.4'}
@@ -6712,7 +7116,7 @@ packages:
/es-shim-unscopables@1.0.2:
resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==}
dependencies:
- hasown: 2.0.0
+ hasown: 2.0.2
dev: true
/es-to-primitive@1.2.1:
@@ -6809,6 +7213,11 @@ packages:
resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
engines: {node: '>=0.8.0'}
+ /escape-string-regexp@2.0.0:
+ resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==}
+ engines: {node: '>=8'}
+ dev: true
+
/escape-string-regexp@4.0.0:
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
engines: {node: '>=10'}
@@ -6919,11 +7328,11 @@ packages:
eslint-plugin-import: '*'
dependencies:
debug: 4.3.4
- enhanced-resolve: 5.15.0
+ enhanced-resolve: 5.17.1
eslint: 8.57.0
eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.1.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0)
eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.1.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0)
- fast-glob: 3.3.1
+ fast-glob: 3.3.2
get-tsconfig: 4.7.2
is-core-module: 2.13.1
is-glob: 4.0.3
@@ -7521,6 +7930,22 @@ packages:
strip-final-newline: 3.0.0
dev: true
+ /exit@0.1.2:
+ resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==}
+ engines: {node: '>= 0.8.0'}
+ dev: true
+
+ /expect@29.7.0:
+ resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/expect-utils': 29.7.0
+ jest-get-type: 29.6.3
+ jest-matcher-utils: 29.7.0
+ jest-message-util: 29.7.0
+ jest-util: 29.7.0
+ dev: true
+
/express@4.19.2:
resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==}
engines: {node: '>= 0.10.0'}
@@ -7585,7 +8010,7 @@ packages:
'@nodelib/fs.walk': 1.2.8
glob-parent: 5.1.2
merge2: 1.4.1
- micromatch: 4.0.5
+ micromatch: 4.0.7
dev: true
/fast-glob@3.3.2:
@@ -7621,6 +8046,12 @@ packages:
reusify: 1.0.4
dev: true
+ /fb-watchman@2.0.2:
+ resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==}
+ dependencies:
+ bser: 2.1.1
+ dev: true
+
/fd-package-json@1.2.0:
resolution: {integrity: sha512-45LSPmWf+gC5tdCQMNH4s9Sr00bIkiD9aN7dc5hqkrEw1geRYyDQS1v1oMHAW3ysfxfndqGsrDREHHjNNbKUfA==}
dependencies:
@@ -7645,6 +8076,12 @@ packages:
resolution: {integrity: sha512-tLIdonWTpABkU6Axg2yGChYdrOsy4V8xcm0IcyAP8fSsu6jiXLm5pgs083e4sq5fzNRZuAYolUbZyYmPvCKfwQ==}
dev: true
+ /filelist@1.0.4:
+ resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==}
+ dependencies:
+ minimatch: 5.1.6
+ dev: true
+
/filesize@10.1.4:
resolution: {integrity: sha512-ryBwPIIeErmxgPnm6cbESAzXjuEFubs+yKYLBZvg3CaiNcmkJChoOGcBSrZ6IwkMwPABwPpVXE6IlNdGJJrvEg==}
engines: {node: '>= 10.4.0'}
@@ -7865,7 +8302,7 @@ packages:
dependencies:
call-bind: 1.0.7
define-properties: 1.2.1
- es-abstract: 1.22.3
+ es-abstract: 1.23.3
functions-have-names: 1.2.3
dev: true
@@ -7877,6 +8314,11 @@ packages:
resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
engines: {node: '>=6.9.0'}
+ /get-caller-file@2.0.5:
+ resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
+ engines: {node: 6.* || 8.* || >= 10.*}
+ dev: true
+
/get-east-asian-width@1.2.0:
resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==}
engines: {node: '>=18'}
@@ -7886,26 +8328,22 @@ packages:
resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==}
dev: true
- /get-intrinsic@1.2.2:
- resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==}
- dependencies:
- function-bind: 1.1.2
- has-proto: 1.0.3
- has-symbols: 1.0.3
- hasown: 2.0.2
- dev: true
-
/get-intrinsic@1.2.4:
resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==}
engines: {node: '>= 0.4'}
dependencies:
es-errors: 1.3.0
function-bind: 1.1.2
- has-proto: 1.0.1
+ has-proto: 1.0.3
has-symbols: 1.0.3
hasown: 2.0.2
dev: true
+ /get-package-type@0.1.0:
+ resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==}
+ engines: {node: '>=8.0.0'}
+ dev: true
+
/get-stdin@9.0.0:
resolution: {integrity: sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==}
engines: {node: '>=12'}
@@ -7921,14 +8359,6 @@ packages:
engines: {node: '>=16'}
dev: true
- /get-symbol-description@1.0.0:
- resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==}
- engines: {node: '>= 0.4'}
- dependencies:
- call-bind: 1.0.7
- get-intrinsic: 1.2.4
- dev: true
-
/get-symbol-description@1.0.2:
resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==}
engines: {node: '>= 0.4'}
@@ -8055,7 +8485,7 @@ packages:
'@types/glob': 7.2.0
array-union: 2.1.0
dir-glob: 3.0.1
- fast-glob: 3.3.1
+ fast-glob: 3.3.2
glob: 7.2.3
ignore: 5.3.1
merge2: 1.4.1
@@ -8068,7 +8498,7 @@ packages:
dependencies:
array-union: 2.1.0
dir-glob: 3.0.1
- fast-glob: 3.3.1
+ fast-glob: 3.3.2
ignore: 5.3.1
merge2: 1.4.1
slash: 3.0.0
@@ -8079,7 +8509,7 @@ packages:
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
dependencies:
dir-glob: 3.0.1
- fast-glob: 3.3.1
+ fast-glob: 3.3.2
ignore: 5.3.1
merge2: 1.4.1
slash: 4.0.0
@@ -8100,7 +8530,7 @@ packages:
/gopd@1.0.1:
resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
dependencies:
- get-intrinsic: 1.2.2
+ get-intrinsic: 1.2.4
dev: true
/graceful-fs@4.2.11:
@@ -8143,23 +8573,12 @@ packages:
engines: {node: '>=8'}
dev: true
- /has-property-descriptors@1.0.1:
- resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==}
- dependencies:
- get-intrinsic: 1.2.4
- dev: true
-
/has-property-descriptors@1.0.2:
resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
dependencies:
es-define-property: 1.0.0
dev: true
- /has-proto@1.0.1:
- resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==}
- engines: {node: '>= 0.4'}
- dev: true
-
/has-proto@1.0.3:
resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==}
engines: {node: '>= 0.4'}
@@ -8170,13 +8589,6 @@ packages:
engines: {node: '>= 0.4'}
dev: true
- /has-tostringtag@1.0.0:
- resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==}
- engines: {node: '>= 0.4'}
- dependencies:
- has-symbols: 1.0.3
- dev: true
-
/has-tostringtag@1.0.2:
resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
engines: {node: '>= 0.4'}
@@ -8208,13 +8620,6 @@ packages:
minimalistic-assert: 1.0.1
dev: true
- /hasown@2.0.0:
- resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==}
- engines: {node: '>= 0.4'}
- dependencies:
- function-bind: 1.1.2
- dev: true
-
/hasown@2.0.2:
resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
engines: {node: '>= 0.4'}
@@ -8272,6 +8677,10 @@ packages:
resolution: {integrity: sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==}
dev: true
+ /html-escaper@2.0.2:
+ resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==}
+ dev: true
+
/html-minifier-terser@6.1.0:
resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==}
engines: {node: '>=12'}
@@ -8417,6 +8826,15 @@ packages:
resolve-from: 4.0.0
dev: true
+ /import-local@3.2.0:
+ resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==}
+ engines: {node: '>=8'}
+ hasBin: true
+ dependencies:
+ pkg-dir: 4.2.0
+ resolve-cwd: 3.0.0
+ dev: true
+
/imurmurhash@0.1.4:
resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
engines: {node: '>=0.8.19'}
@@ -8483,22 +8901,13 @@ packages:
wrap-ansi: 6.2.0
dev: true
- /internal-slot@1.0.6:
- resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==}
- engines: {node: '>= 0.4'}
- dependencies:
- get-intrinsic: 1.2.4
- hasown: 2.0.2
- side-channel: 1.0.6
- dev: true
-
/internal-slot@1.0.7:
resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==}
engines: {node: '>= 0.4'}
dependencies:
es-errors: 1.3.0
hasown: 2.0.2
- side-channel: 1.0.4
+ side-channel: 1.0.6
dev: true
/ip@1.1.8:
@@ -8527,14 +8936,6 @@ packages:
has-tostringtag: 1.0.2
dev: true
- /is-array-buffer@3.0.2:
- resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==}
- dependencies:
- call-bind: 1.0.7
- get-intrinsic: 1.2.4
- is-typed-array: 1.1.13
- dev: true
-
/is-array-buffer@3.0.4:
resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==}
engines: {node: '>= 0.4'}
@@ -8596,7 +8997,7 @@ packages:
/is-core-module@2.13.1:
resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==}
dependencies:
- hasown: 2.0.0
+ hasown: 2.0.2
dev: true
/is-data-view@1.0.1:
@@ -8653,6 +9054,11 @@ packages:
get-east-asian-width: 1.2.0
dev: true
+ /is-generator-fn@2.1.0:
+ resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==}
+ engines: {node: '>=6'}
+ dev: true
+
/is-generator-function@1.0.10:
resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==}
engines: {node: '>= 0.4'}
@@ -8698,11 +9104,6 @@ packages:
define-properties: 1.2.1
dev: true
- /is-negative-zero@2.0.2:
- resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==}
- engines: {node: '>= 0.4'}
- dev: true
-
/is-negative-zero@2.0.3:
resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==}
engines: {node: '>= 0.4'}
@@ -8752,19 +9153,13 @@ packages:
engines: {node: '>= 0.4'}
dependencies:
call-bind: 1.0.7
- has-tostringtag: 1.0.0
+ has-tostringtag: 1.0.2
dev: true
/is-set@2.0.2:
resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==}
dev: true
- /is-shared-array-buffer@1.0.2:
- resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==}
- dependencies:
- call-bind: 1.0.7
- dev: true
-
/is-shared-array-buffer@1.0.3:
resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==}
engines: {node: '>= 0.4'}
@@ -8786,7 +9181,7 @@ packages:
resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==}
engines: {node: '>= 0.4'}
dependencies:
- has-tostringtag: 1.0.0
+ has-tostringtag: 1.0.2
dev: true
/is-symbol@1.0.4:
@@ -8865,29 +9260,487 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
- /iterator.prototype@1.1.2:
- resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==}
- dependencies:
- define-properties: 1.2.1
- get-intrinsic: 1.2.2
- has-symbols: 1.0.3
- reflect.getprototypeof: 1.0.4
- set-function-name: 2.0.1
+ /istanbul-lib-coverage@3.2.2:
+ resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==}
+ engines: {node: '>=8'}
dev: true
- /jackspeak@2.3.6:
- resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==}
- engines: {node: '>=14'}
+ /istanbul-lib-instrument@5.2.1:
+ resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==}
+ engines: {node: '>=8'}
+ dependencies:
+ '@babel/core': 7.25.2
+ '@babel/parser': 7.25.3
+ '@istanbuljs/schema': 0.1.3
+ istanbul-lib-coverage: 3.2.2
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /istanbul-lib-instrument@6.0.3:
+ resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==}
+ engines: {node: '>=10'}
+ dependencies:
+ '@babel/core': 7.25.2
+ '@babel/parser': 7.25.3
+ '@istanbuljs/schema': 0.1.3
+ istanbul-lib-coverage: 3.2.2
+ semver: 7.6.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /istanbul-lib-report@3.0.1:
+ resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==}
+ engines: {node: '>=10'}
+ dependencies:
+ istanbul-lib-coverage: 3.2.2
+ make-dir: 4.0.0
+ supports-color: 7.2.0
+ dev: true
+
+ /istanbul-lib-source-maps@4.0.1:
+ resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==}
+ engines: {node: '>=10'}
+ dependencies:
+ debug: 4.3.4
+ istanbul-lib-coverage: 3.2.2
+ source-map: 0.6.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /istanbul-reports@3.1.7:
+ resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==}
+ engines: {node: '>=8'}
+ dependencies:
+ html-escaper: 2.0.2
+ istanbul-lib-report: 3.0.1
+ dev: true
+
+ /iterator.prototype@1.1.2:
+ resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==}
+ dependencies:
+ define-properties: 1.2.1
+ get-intrinsic: 1.2.4
+ has-symbols: 1.0.3
+ reflect.getprototypeof: 1.0.4
+ set-function-name: 2.0.2
+ dev: true
+
+ /jackspeak@2.3.6:
+ resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==}
+ engines: {node: '>=14'}
dependencies:
'@isaacs/cliui': 8.0.2
optionalDependencies:
'@pkgjs/parseargs': 0.11.0
dev: true
+ /jake@10.9.2:
+ resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==}
+ engines: {node: '>=10'}
+ hasBin: true
+ dependencies:
+ async: 3.2.5
+ chalk: 4.1.2
+ filelist: 1.0.4
+ minimatch: 3.1.2
+ dev: true
+
/javascript-stringify@2.1.0:
resolution: {integrity: sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==}
dev: true
+ /jest-changed-files@29.7.0:
+ resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ execa: 5.1.1
+ jest-util: 29.7.0
+ p-limit: 3.1.0
+ dev: true
+
+ /jest-circus@29.7.0:
+ resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/environment': 29.7.0
+ '@jest/expect': 29.7.0
+ '@jest/test-result': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 20.11.24
+ chalk: 4.1.2
+ co: 4.6.0
+ dedent: 1.5.3
+ is-generator-fn: 2.1.0
+ jest-each: 29.7.0
+ jest-matcher-utils: 29.7.0
+ jest-message-util: 29.7.0
+ jest-runtime: 29.7.0
+ jest-snapshot: 29.7.0
+ jest-util: 29.7.0
+ p-limit: 3.1.0
+ pretty-format: 29.7.0
+ pure-rand: 6.1.0
+ slash: 3.0.0
+ stack-utils: 2.0.6
+ transitivePeerDependencies:
+ - babel-plugin-macros
+ - supports-color
+ dev: true
+
+ /jest-cli@29.7.0:
+ resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ hasBin: true
+ peerDependencies:
+ node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
+ peerDependenciesMeta:
+ node-notifier:
+ optional: true
+ dependencies:
+ '@jest/core': 29.7.0
+ '@jest/test-result': 29.7.0
+ '@jest/types': 29.6.3
+ chalk: 4.1.2
+ create-jest: 29.7.0
+ exit: 0.1.2
+ import-local: 3.2.0
+ jest-config: 29.7.0(@types/node@20.11.24)
+ jest-util: 29.7.0
+ jest-validate: 29.7.0
+ yargs: 17.7.2
+ transitivePeerDependencies:
+ - '@types/node'
+ - babel-plugin-macros
+ - supports-color
+ - ts-node
+ dev: true
+
+ /jest-config@29.7.0(@types/node@20.11.24):
+ resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ peerDependencies:
+ '@types/node': '*'
+ ts-node: '>=9.0.0'
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ ts-node:
+ optional: true
+ dependencies:
+ '@babel/core': 7.25.2
+ '@jest/test-sequencer': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 20.11.24
+ babel-jest: 29.7.0(@babel/core@7.25.2)
+ chalk: 4.1.2
+ ci-info: 3.9.0
+ deepmerge: 4.3.1
+ glob: 7.2.3
+ graceful-fs: 4.2.11
+ jest-circus: 29.7.0
+ jest-environment-node: 29.7.0
+ jest-get-type: 29.6.3
+ jest-regex-util: 29.6.3
+ jest-resolve: 29.7.0
+ jest-runner: 29.7.0
+ jest-util: 29.7.0
+ jest-validate: 29.7.0
+ micromatch: 4.0.7
+ parse-json: 5.2.0
+ pretty-format: 29.7.0
+ slash: 3.0.0
+ strip-json-comments: 3.1.1
+ transitivePeerDependencies:
+ - babel-plugin-macros
+ - supports-color
+ dev: true
+
+ /jest-diff@29.7.0:
+ resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ chalk: 4.1.2
+ diff-sequences: 29.6.3
+ jest-get-type: 29.6.3
+ pretty-format: 29.7.0
+ dev: true
+
+ /jest-docblock@29.7.0:
+ resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ detect-newline: 3.1.0
+ dev: true
+
+ /jest-each@29.7.0:
+ resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/types': 29.6.3
+ chalk: 4.1.2
+ jest-get-type: 29.6.3
+ jest-util: 29.7.0
+ pretty-format: 29.7.0
+ dev: true
+
+ /jest-environment-node@29.7.0:
+ resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/environment': 29.7.0
+ '@jest/fake-timers': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 20.11.24
+ jest-mock: 29.7.0
+ jest-util: 29.7.0
+ dev: true
+
+ /jest-fetch-mock@3.0.3:
+ resolution: {integrity: sha512-Ux1nWprtLrdrH4XwE7O7InRY6psIi3GOsqNESJgMJ+M5cv4A8Lh7SN9d2V2kKRZ8ebAfcd1LNyZguAOb6JiDqw==}
+ dependencies:
+ cross-fetch: 3.1.8
+ promise-polyfill: 8.3.0
+ transitivePeerDependencies:
+ - encoding
+ dev: true
+
+ /jest-get-type@29.6.3:
+ resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dev: true
+
+ /jest-haste-map@29.7.0:
+ resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/types': 29.6.3
+ '@types/graceful-fs': 4.1.9
+ '@types/node': 20.11.24
+ anymatch: 3.1.3
+ fb-watchman: 2.0.2
+ graceful-fs: 4.2.11
+ jest-regex-util: 29.6.3
+ jest-util: 29.7.0
+ jest-worker: 29.7.0
+ micromatch: 4.0.7
+ walker: 1.0.8
+ optionalDependencies:
+ fsevents: 2.3.3
+ dev: true
+
+ /jest-leak-detector@29.7.0:
+ resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ jest-get-type: 29.6.3
+ pretty-format: 29.7.0
+ dev: true
+
+ /jest-matcher-utils@29.7.0:
+ resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ chalk: 4.1.2
+ jest-diff: 29.7.0
+ jest-get-type: 29.6.3
+ pretty-format: 29.7.0
+ dev: true
+
+ /jest-message-util@29.7.0:
+ resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@babel/code-frame': 7.24.7
+ '@jest/types': 29.6.3
+ '@types/stack-utils': 2.0.3
+ chalk: 4.1.2
+ graceful-fs: 4.2.11
+ micromatch: 4.0.7
+ pretty-format: 29.7.0
+ slash: 3.0.0
+ stack-utils: 2.0.6
+ dev: true
+
+ /jest-mock@29.7.0:
+ resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/types': 29.6.3
+ '@types/node': 20.11.24
+ jest-util: 29.7.0
+ dev: true
+
+ /jest-pnp-resolver@1.2.3(jest-resolve@29.7.0):
+ resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==}
+ engines: {node: '>=6'}
+ peerDependencies:
+ jest-resolve: '*'
+ peerDependenciesMeta:
+ jest-resolve:
+ optional: true
+ dependencies:
+ jest-resolve: 29.7.0
+ dev: true
+
+ /jest-regex-util@29.6.3:
+ resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dev: true
+
+ /jest-resolve-dependencies@29.7.0:
+ resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ jest-regex-util: 29.6.3
+ jest-snapshot: 29.7.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /jest-resolve@29.7.0:
+ resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ chalk: 4.1.2
+ graceful-fs: 4.2.11
+ jest-haste-map: 29.7.0
+ jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0)
+ jest-util: 29.7.0
+ jest-validate: 29.7.0
+ resolve: 1.22.8
+ resolve.exports: 2.0.2
+ slash: 3.0.0
+ dev: true
+
+ /jest-runner@29.7.0:
+ resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/console': 29.7.0
+ '@jest/environment': 29.7.0
+ '@jest/test-result': 29.7.0
+ '@jest/transform': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 20.11.24
+ chalk: 4.1.2
+ emittery: 0.13.1
+ graceful-fs: 4.2.11
+ jest-docblock: 29.7.0
+ jest-environment-node: 29.7.0
+ jest-haste-map: 29.7.0
+ jest-leak-detector: 29.7.0
+ jest-message-util: 29.7.0
+ jest-resolve: 29.7.0
+ jest-runtime: 29.7.0
+ jest-util: 29.7.0
+ jest-watcher: 29.7.0
+ jest-worker: 29.7.0
+ p-limit: 3.1.0
+ source-map-support: 0.5.13
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /jest-runtime@29.7.0:
+ resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/environment': 29.7.0
+ '@jest/fake-timers': 29.7.0
+ '@jest/globals': 29.7.0
+ '@jest/source-map': 29.6.3
+ '@jest/test-result': 29.7.0
+ '@jest/transform': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 20.11.24
+ chalk: 4.1.2
+ cjs-module-lexer: 1.3.1
+ collect-v8-coverage: 1.0.2
+ glob: 7.2.3
+ graceful-fs: 4.2.11
+ jest-haste-map: 29.7.0
+ jest-message-util: 29.7.0
+ jest-mock: 29.7.0
+ jest-regex-util: 29.6.3
+ jest-resolve: 29.7.0
+ jest-snapshot: 29.7.0
+ jest-util: 29.7.0
+ slash: 3.0.0
+ strip-bom: 4.0.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /jest-snapshot@29.7.0:
+ resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@babel/core': 7.25.2
+ '@babel/generator': 7.25.0
+ '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2)
+ '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.25.2)
+ '@babel/types': 7.25.2
+ '@jest/expect-utils': 29.7.0
+ '@jest/transform': 29.7.0
+ '@jest/types': 29.6.3
+ babel-preset-current-node-syntax: 1.0.1(@babel/core@7.25.2)
+ chalk: 4.1.2
+ expect: 29.7.0
+ graceful-fs: 4.2.11
+ jest-diff: 29.7.0
+ jest-get-type: 29.6.3
+ jest-matcher-utils: 29.7.0
+ jest-message-util: 29.7.0
+ jest-util: 29.7.0
+ natural-compare: 1.4.0
+ pretty-format: 29.7.0
+ semver: 7.6.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /jest-util@29.7.0:
+ resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/types': 29.6.3
+ '@types/node': 20.11.24
+ chalk: 4.1.2
+ ci-info: 3.9.0
+ graceful-fs: 4.2.11
+ picomatch: 2.3.1
+ dev: true
+
+ /jest-validate@29.7.0:
+ resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/types': 29.6.3
+ camelcase: 6.3.0
+ chalk: 4.1.2
+ jest-get-type: 29.6.3
+ leven: 3.1.0
+ pretty-format: 29.7.0
+ dev: true
+
+ /jest-watcher@29.7.0:
+ resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/test-result': 29.7.0
+ '@jest/types': 29.6.3
+ '@types/node': 20.11.24
+ ansi-escapes: 4.3.2
+ chalk: 4.1.2
+ emittery: 0.13.1
+ jest-util: 29.7.0
+ string-length: 4.0.2
+ dev: true
+
/jest-worker@27.5.1:
resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==}
engines: {node: '>= 10.13.0'}
@@ -8897,6 +9750,37 @@ packages:
supports-color: 8.1.1
dev: true
+ /jest-worker@29.7.0:
+ resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@types/node': 20.11.24
+ jest-util: 29.7.0
+ merge-stream: 2.0.0
+ supports-color: 8.1.1
+ dev: true
+
+ /jest@29.7.0:
+ resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ hasBin: true
+ peerDependencies:
+ node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
+ peerDependenciesMeta:
+ node-notifier:
+ optional: true
+ dependencies:
+ '@jest/core': 29.7.0
+ '@jest/types': 29.6.3
+ import-local: 3.2.0
+ jest-cli: 29.7.0
+ transitivePeerDependencies:
+ - '@types/node'
+ - babel-plugin-macros
+ - supports-color
+ - ts-node
+ dev: true
+
/jiti@1.21.6:
resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==}
hasBin: true
@@ -8906,6 +9790,22 @@ packages:
resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==}
dev: true
+ /jotai@2.9.2(@types/react@18.2.61)(react@18.3.1):
+ resolution: {integrity: sha512-jIBXEadOHCziOuMY6HAy2KQcHipGhnsbF+twqh8Lcmcz/Yei0gdBtW5mOYdKmbQxGqkvfvXM3w/oHtJ2WNGSFg==}
+ engines: {node: '>=12.20.0'}
+ peerDependencies:
+ '@types/react': '>=17.0.0'
+ react: '>=17.0.0'
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ react:
+ optional: true
+ dependencies:
+ '@types/react': 18.2.61
+ react: 18.3.1
+ dev: false
+
/js-tokens@4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
@@ -8933,7 +9833,7 @@ packages:
optional: true
dependencies:
'@babel/core': 7.25.2
- '@babel/parser': 7.23.3
+ '@babel/parser': 7.25.3
'@babel/plugin-transform-class-properties': 7.24.7(@babel/core@7.25.2)
'@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.25.2)
'@babel/plugin-transform-nullish-coalescing-operator': 7.24.7(@babel/core@7.25.2)
@@ -9023,10 +9923,10 @@ packages:
resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==}
engines: {node: '>=4.0'}
dependencies:
- array-includes: 3.1.7
+ array-includes: 3.1.8
array.prototype.flat: 1.3.2
object.assign: 4.1.4
- object.values: 1.1.7
+ object.values: 1.2.0
dev: true
/kind-of@6.0.3:
@@ -9376,13 +10276,6 @@ packages:
dependencies:
yallist: 3.1.1
- /lru-cache@6.0.0:
- resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
- engines: {node: '>=10'}
- dependencies:
- yallist: 4.0.0
- dev: true
-
/lru-cache@7.18.3:
resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==}
engines: {node: '>=12'}
@@ -9397,7 +10290,7 @@ packages:
resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==}
engines: {node: '>=12'}
dependencies:
- '@jridgewell/sourcemap-codec': 1.4.15
+ '@jridgewell/sourcemap-codec': 1.5.0
dev: true
/magic-string@0.30.10:
@@ -9427,10 +10320,23 @@ packages:
semver: 6.3.1
dev: true
+ /make-dir@4.0.0:
+ resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==}
+ engines: {node: '>=10'}
+ dependencies:
+ semver: 7.6.2
+ dev: true
+
/make-error@1.3.6:
resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==}
dev: true
+ /makeerror@1.0.12:
+ resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==}
+ dependencies:
+ tmpl: 1.0.5
+ dev: true
+
/map-or-similar@1.5.0:
resolution: {integrity: sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==}
dev: true
@@ -9499,14 +10405,6 @@ packages:
resolution: {integrity: sha512-pKy60S2febliZIbwdfEQKTtL5bLNxOyiRRmD400gueYl9XcHyNGxzHSlJWn9IMHwYXT0yohPYL08+bGozVk8cQ==}
dev: true
- /micromatch@4.0.5:
- resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
- engines: {node: '>=8.6'}
- dependencies:
- braces: 3.0.3
- picomatch: 2.3.1
- dev: true
-
/micromatch@4.0.7:
resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==}
engines: {node: '>=8.6'}
@@ -9575,6 +10473,13 @@ packages:
brace-expansion: 1.1.11
dev: true
+ /minimatch@5.1.6:
+ resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==}
+ engines: {node: '>=10'}
+ dependencies:
+ brace-expansion: 2.0.1
+ dev: true
+
/minimatch@9.0.3:
resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==}
engines: {node: '>=16 || 14 >=14.17'}
@@ -9697,7 +10602,7 @@ packages:
'@next/env': 14.2.5
'@swc/helpers': 0.5.5
busboy: 1.6.0
- caniuse-lite: 1.0.30001593
+ caniuse-lite: 1.0.30001650
graceful-fs: 4.2.11
postcss: 8.4.31
react: 18.3.1
@@ -9752,6 +10657,22 @@ packages:
resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==}
dev: true
+ /node-fetch@2.7.0:
+ resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
+ engines: {node: 4.x || >=6.0.0}
+ peerDependencies:
+ encoding: ^0.1.0
+ peerDependenciesMeta:
+ encoding:
+ optional: true
+ dependencies:
+ whatwg-url: 5.0.0
+ dev: true
+
+ /node-int64@0.4.0:
+ resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==}
+ dev: true
+
/node-plop@0.26.3:
resolution: {integrity: sha512-Cov028YhBZ5aB7MdMWJEmwyBig43aGL5WT4vdoB28Oitau1zZAcHUn8Sgfk9HM33TqhtLJ9PlM/O0Mv+QpV/4Q==}
engines: {node: '>=8.9.4'}
@@ -9928,15 +10849,6 @@ packages:
get-intrinsic: 1.2.4
dev: true
- /object.values@1.1.7:
- resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==}
- engines: {node: '>= 0.4'}
- dependencies:
- call-bind: 1.0.7
- define-properties: 1.2.1
- es-abstract: 1.22.3
- dev: true
-
/object.values@1.2.0:
resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==}
engines: {node: '>= 0.4'}
@@ -10292,9 +11204,6 @@ packages:
resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==}
dev: true
- /picocolors@1.0.0:
- resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
-
/picocolors@1.0.1:
resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==}
@@ -10524,8 +11433,8 @@ packages:
engines: {node: ^10 || ^12 || >=14}
dependencies:
nanoid: 3.3.7
- picocolors: 1.0.0
- source-map-js: 1.0.2
+ picocolors: 1.0.1
+ source-map-js: 1.2.0
/postcss@8.4.39:
resolution: {integrity: sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==}
@@ -10619,6 +11528,10 @@ packages:
engines: {node: '>= 0.6.0'}
dev: true
+ /promise-polyfill@8.3.0:
+ resolution: {integrity: sha512-H5oELycFml5yto/atYqmjyigJoAo3+OXwolYiH7OfQuYlAqhxNvTfiNMbV9hsC6Yp83yE5r2KTVmtrG6R9i6Pg==}
+ dev: true
+
/prompts@2.4.2:
resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==}
engines: {node: '>= 6'}
@@ -10683,6 +11596,10 @@ packages:
engines: {node: '>=6'}
dev: true
+ /pure-rand@6.1.0:
+ resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==}
+ dev: true
+
/qs@6.11.0:
resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==}
engines: {node: '>=0.6'}
@@ -10771,9 +11688,9 @@ packages:
resolution: {integrity: sha512-i8aF1nyKInZnANZ4uZrH49qn1paRgBZ7wZiCNBMnenlPzEv0mRl+ShpTVEI6wZNl8sSc79xZkivtgLKQArcanQ==}
engines: {node: '>=16.14.0'}
dependencies:
- '@babel/core': 7.23.3
- '@babel/traverse': 7.23.3
- '@babel/types': 7.23.3
+ '@babel/core': 7.25.2
+ '@babel/traverse': 7.25.3
+ '@babel/types': 7.25.2
'@types/babel__core': 7.20.5
'@types/babel__traverse': 7.20.6
'@types/doctrine': 0.0.9
@@ -10913,7 +11830,7 @@ packages:
dependencies:
call-bind: 1.0.7
define-properties: 1.2.1
- es-abstract: 1.22.3
+ es-abstract: 1.23.3
get-intrinsic: 1.2.4
globalthis: 1.0.3
which-builtin-type: 1.1.3
@@ -10949,15 +11866,6 @@ packages:
hasBin: true
dev: true
- /regexp.prototype.flags@1.5.1:
- resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==}
- engines: {node: '>= 0.4'}
- dependencies:
- call-bind: 1.0.7
- define-properties: 1.2.1
- set-function-name: 2.0.2
- dev: true
-
/regexp.prototype.flags@1.5.2:
resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==}
engines: {node: '>= 0.4'}
@@ -11044,6 +11952,11 @@ packages:
strip-ansi: 6.0.1
dev: true
+ /require-directory@2.1.1:
+ resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
/require-from-string@2.0.2:
resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
engines: {node: '>=0.10.0'}
@@ -11054,11 +11967,23 @@ packages:
engines: {node: '>=0.10.5'}
dev: true
+ /resolve-cwd@3.0.0:
+ resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==}
+ engines: {node: '>=8'}
+ dependencies:
+ resolve-from: 5.0.0
+ dev: true
+
/resolve-from@4.0.0:
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
engines: {node: '>=4'}
dev: true
+ /resolve-from@5.0.0:
+ resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
+ engines: {node: '>=8'}
+ dev: true
+
/resolve-pkg-maps@1.0.0:
resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
dev: true
@@ -11074,6 +11999,11 @@ packages:
source-map: 0.6.1
dev: true
+ /resolve.exports@2.0.2:
+ resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==}
+ engines: {node: '>=10'}
+ dev: true
+
/resolve@1.19.0:
resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==}
dependencies:
@@ -11202,16 +12132,6 @@ packages:
tslib: 2.6.2
dev: true
- /safe-array-concat@1.0.1:
- resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==}
- engines: {node: '>=0.4'}
- dependencies:
- call-bind: 1.0.7
- get-intrinsic: 1.2.4
- has-symbols: 1.0.3
- isarray: 2.0.5
- dev: true
-
/safe-array-concat@1.1.2:
resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==}
engines: {node: '>=0.4'}
@@ -11230,14 +12150,6 @@ packages:
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
dev: true
- /safe-regex-test@1.0.0:
- resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==}
- dependencies:
- call-bind: 1.0.7
- get-intrinsic: 1.2.4
- is-regex: 1.1.4
- dev: true
-
/safe-regex-test@1.0.3:
resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==}
engines: {node: '>= 0.4'}
@@ -11308,13 +12220,6 @@ packages:
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
hasBin: true
- /semver@7.5.4:
- resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==}
- engines: {node: '>=10'}
- dependencies:
- lru-cache: 6.0.0
- dev: true
-
/semver@7.6.2:
resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==}
engines: {node: '>=10'}
@@ -11368,16 +12273,6 @@ packages:
- supports-color
dev: true
- /set-function-length@1.1.1:
- resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==}
- engines: {node: '>= 0.4'}
- dependencies:
- define-data-property: 1.1.4
- get-intrinsic: 1.2.4
- gopd: 1.0.1
- has-property-descriptors: 1.0.2
- dev: true
-
/set-function-length@1.2.2:
resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
engines: {node: '>= 0.4'}
@@ -11390,15 +12285,6 @@ packages:
has-property-descriptors: 1.0.2
dev: true
- /set-function-name@2.0.1:
- resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==}
- engines: {node: '>= 0.4'}
- dependencies:
- define-data-property: 1.1.4
- functions-have-names: 1.2.3
- has-property-descriptors: 1.0.2
- dev: true
-
/set-function-name@2.0.2:
resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==}
engines: {node: '>= 0.4'}
@@ -11475,14 +12361,6 @@ packages:
engines: {node: '>=8'}
dev: true
- /side-channel@1.0.4:
- resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
- dependencies:
- call-bind: 1.0.7
- get-intrinsic: 1.2.4
- object-inspect: 1.13.1
- dev: true
-
/side-channel@1.0.6:
resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==}
engines: {node: '>= 0.4'}
@@ -11592,13 +12470,15 @@ packages:
sort-object-keys: 1.1.3
dev: true
- /source-map-js@1.0.2:
- resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
- engines: {node: '>=0.10.0'}
-
/source-map-js@1.2.0:
resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==}
engines: {node: '>=0.10.0'}
+
+ /source-map-support@0.5.13:
+ resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==}
+ dependencies:
+ buffer-from: 1.1.2
+ source-map: 0.6.1
dev: true
/source-map-support@0.5.21:
@@ -11648,6 +12528,13 @@ packages:
resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
dev: true
+ /stack-utils@2.0.6:
+ resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==}
+ engines: {node: '>=10'}
+ dependencies:
+ escape-string-regexp: 2.0.0
+ dev: true
+
/stackframe@1.3.4:
resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==}
dev: true
@@ -11728,6 +12615,14 @@ packages:
engines: {node: '>=0.6.19'}
dev: true
+ /string-length@4.0.2:
+ resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==}
+ engines: {node: '>=10'}
+ dependencies:
+ char-regex: 1.0.2
+ strip-ansi: 6.0.1
+ dev: true
+
/string-width@4.2.3:
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
engines: {node: '>=8'}
@@ -11787,15 +12682,6 @@ packages:
es-abstract: 1.23.3
dev: true
- /string.prototype.trim@1.2.8:
- resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==}
- engines: {node: '>= 0.4'}
- dependencies:
- call-bind: 1.0.7
- define-properties: 1.2.1
- es-abstract: 1.22.3
- dev: true
-
/string.prototype.trim@1.2.9:
resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==}
engines: {node: '>= 0.4'}
@@ -11806,14 +12692,6 @@ packages:
es-object-atoms: 1.0.0
dev: true
- /string.prototype.trimend@1.0.7:
- resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==}
- dependencies:
- call-bind: 1.0.7
- define-properties: 1.2.1
- es-abstract: 1.22.3
- dev: true
-
/string.prototype.trimend@1.0.8:
resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==}
dependencies:
@@ -11822,14 +12700,6 @@ packages:
es-object-atoms: 1.0.0
dev: true
- /string.prototype.trimstart@1.0.7:
- resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==}
- dependencies:
- call-bind: 1.0.7
- define-properties: 1.2.1
- es-abstract: 1.22.3
- dev: true
-
/string.prototype.trimstart@1.0.8:
resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==}
engines: {node: '>= 0.4'}
@@ -11870,6 +12740,11 @@ packages:
engines: {node: '>=4'}
dev: true
+ /strip-bom@4.0.0:
+ resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==}
+ engines: {node: '>=8'}
+ dev: true
+
/strip-final-newline@2.0.0:
resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
engines: {node: '>=6'}
@@ -12059,6 +12934,15 @@ packages:
source-map-support: 0.5.21
dev: true
+ /test-exclude@6.0.0:
+ resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==}
+ engines: {node: '>=8'}
+ dependencies:
+ '@istanbuljs/schema': 0.1.3
+ glob: 7.2.3
+ minimatch: 3.1.2
+ dev: true
+
/text-table@0.2.0:
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
dev: true
@@ -12113,6 +12997,10 @@ packages:
os-tmpdir: 1.0.2
dev: true
+ /tmpl@1.0.5:
+ resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==}
+ dev: true
+
/to-fast-properties@2.0.0:
resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
engines: {node: '>=4'}
@@ -12129,6 +13017,10 @@ packages:
engines: {node: '>=0.6'}
dev: true
+ /tr46@0.0.3:
+ resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
+ dev: true
+
/ts-api-utils@1.0.2(typescript@5.4.5):
resolution: {integrity: sha512-Cbu4nIqnEdd+THNEsBdkolnOXhg0I8XteoHaEKgvsxpsbWda4IsUut2c187HxywQCvveojow0Dgw/amxtSKVkQ==}
engines: {node: '>=16.13.0'}
@@ -12159,6 +13051,44 @@ packages:
typescript: 5.4.5
dev: true
+ /ts-jest@29.2.4(@babel/core@7.25.2)(jest@29.7.0)(typescript@5.4.5):
+ resolution: {integrity: sha512-3d6tgDyhCI29HlpwIq87sNuI+3Q6GLTTCeYRHCs7vDz+/3GCMwEtV9jezLyl4ZtnBgx00I7hm8PCP8cTksMGrw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0}
+ hasBin: true
+ peerDependencies:
+ '@babel/core': '>=7.0.0-beta.0 <8'
+ '@jest/transform': ^29.0.0
+ '@jest/types': ^29.0.0
+ babel-jest: ^29.0.0
+ esbuild: '*'
+ jest: ^29.0.0
+ typescript: '>=4.3 <6'
+ peerDependenciesMeta:
+ '@babel/core':
+ optional: true
+ '@jest/transform':
+ optional: true
+ '@jest/types':
+ optional: true
+ babel-jest:
+ optional: true
+ esbuild:
+ optional: true
+ dependencies:
+ '@babel/core': 7.25.2
+ bs-logger: 0.2.6
+ ejs: 3.1.10
+ fast-json-stable-stringify: 2.1.0
+ jest: 29.7.0
+ jest-util: 29.7.0
+ json5: 2.2.3
+ lodash.memoize: 4.1.2
+ make-error: 1.3.6
+ semver: 7.6.2
+ typescript: 5.4.5
+ yargs-parser: 21.1.1
+ dev: true
+
/ts-morph@21.0.1:
resolution: {integrity: sha512-dbDtVdEAncKctzrVZ+Nr7kHpHkv+0JDJb2MjjpBaj8bFeCkePU9rHfMklmhuLFnpeq/EJZk2IhStY6NzqgjOkg==}
dependencies:
@@ -12231,7 +13161,7 @@ packages:
engines: {node: '>=10.13.0'}
dependencies:
chalk: 4.1.2
- enhanced-resolve: 5.15.0
+ enhanced-resolve: 5.17.1
tsconfig-paths: 4.2.0
dev: true
@@ -12351,6 +13281,11 @@ packages:
prelude-ls: 1.2.1
dev: true
+ /type-detect@4.0.8:
+ resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==}
+ engines: {node: '>=4'}
+ dev: true
+
/type-detect@4.1.0:
resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==}
engines: {node: '>=4'}
@@ -12394,15 +13329,6 @@ packages:
mime-types: 2.1.35
dev: true
- /typed-array-buffer@1.0.0:
- resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==}
- engines: {node: '>= 0.4'}
- dependencies:
- call-bind: 1.0.7
- get-intrinsic: 1.2.4
- is-typed-array: 1.1.13
- dev: true
-
/typed-array-buffer@1.0.2:
resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==}
engines: {node: '>= 0.4'}
@@ -12412,16 +13338,6 @@ packages:
is-typed-array: 1.1.13
dev: true
- /typed-array-byte-length@1.0.0:
- resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==}
- engines: {node: '>= 0.4'}
- dependencies:
- call-bind: 1.0.7
- for-each: 0.3.3
- has-proto: 1.0.3
- is-typed-array: 1.1.13
- dev: true
-
/typed-array-byte-length@1.0.1:
resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==}
engines: {node: '>= 0.4'}
@@ -12433,17 +13349,6 @@ packages:
is-typed-array: 1.1.13
dev: true
- /typed-array-byte-offset@1.0.0:
- resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==}
- engines: {node: '>= 0.4'}
- dependencies:
- available-typed-arrays: 1.0.7
- call-bind: 1.0.7
- for-each: 0.3.3
- has-proto: 1.0.3
- is-typed-array: 1.1.13
- dev: true
-
/typed-array-byte-offset@1.0.2:
resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==}
engines: {node: '>= 0.4'}
@@ -12456,14 +13361,6 @@ packages:
is-typed-array: 1.1.13
dev: true
- /typed-array-length@1.0.4:
- resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==}
- dependencies:
- call-bind: 1.0.7
- for-each: 0.3.3
- is-typed-array: 1.1.13
- dev: true
-
/typed-array-length@1.0.6:
resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==}
engines: {node: '>= 0.4'}
@@ -12680,6 +13577,15 @@ packages:
resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==}
dev: true
+ /v8-to-istanbul@9.3.0:
+ resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==}
+ engines: {node: '>=10.12.0'}
+ dependencies:
+ '@jridgewell/trace-mapping': 0.3.25
+ '@types/istanbul-lib-coverage': 2.0.6
+ convert-source-map: 2.0.0
+ dev: true
+
/validate-npm-package-license@3.0.4:
resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
dependencies:
@@ -12743,6 +13649,12 @@ packages:
resolution: {integrity: sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==}
dev: true
+ /walker@1.0.8:
+ resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==}
+ dependencies:
+ makeerror: 1.0.12
+ dev: true
+
/watchpack@2.4.1:
resolution: {integrity: sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==}
engines: {node: '>=10.13.0'}
@@ -12757,6 +13669,10 @@ packages:
defaults: 1.0.4
dev: true
+ /webidl-conversions@3.0.1:
+ resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
+ dev: true
+
/webpack-dev-middleware@6.1.3(webpack@5.93.0):
resolution: {integrity: sha512-A4ChP0Qj8oGociTs6UdlRUGANIGrCDL3y+pmQMc+dSsraXHCatFpmMey4mYELA+juqwUqwQsUgJJISXl1KWmiw==}
engines: {node: '>= 14.15.0'}
@@ -12831,6 +13747,13 @@ packages:
- uglify-js
dev: true
+ /whatwg-url@5.0.0:
+ resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
+ dependencies:
+ tr46: 0.0.3
+ webidl-conversions: 3.0.1
+ dev: true
+
/which-boxed-primitive@1.0.2:
resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
dependencies:
@@ -12890,6 +13813,7 @@ packages:
/which@2.0.2:
resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
engines: {node: '>= 8'}
+ hasBin: true
dependencies:
isexe: 2.0.0
dev: true
@@ -12906,8 +13830,8 @@ packages:
resolution: {integrity: sha512-YyjVG+JwjAe4YFw/mhnj1peFzlux326jxrNkr3V8kyo/sOVWTDW0LkWMlscETPSNVSY8TSYgcSYSELrON5uikg==}
dev: true
- /wowds-tokens@0.1.1:
- resolution: {integrity: sha512-aHUaS2KawRly4Y0kSd2t0qpDf/s9kUmg0X4bwRqpHnXnqI2eqPKVnfyRVln/npy0jrtVJ+Tt82GRX+2e1H7yJg==}
+ /wowds-tokens@0.1.2:
+ resolution: {integrity: sha512-rVKpxNtNMYp68RdsVcXDUMoVZfnD51vrLz8bKXkgh0buRKhjCa8A3qzXvU1RK1h+jEdpLV5oEbabLtwtq1Xkgg==}
dev: false
/wowds-ui@0.1.8(next@14.2.5)(react-dom@18.3.1)(react@18.3.1):
@@ -12972,6 +13896,14 @@ packages:
signal-exit: 3.0.7
dev: true
+ /write-file-atomic@4.0.2:
+ resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==}
+ engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
+ dependencies:
+ imurmurhash: 0.1.4
+ signal-exit: 3.0.7
+ dev: true
+
/ws@8.18.0:
resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==}
engines: {node: '>=10.0.0'}
@@ -12990,6 +13922,11 @@ packages:
engines: {node: '>=0.4'}
dev: true
+ /y18n@5.0.8:
+ resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
+ engines: {node: '>=10'}
+ dev: true
+
/yallist@3.1.1:
resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
@@ -13008,6 +13945,24 @@ packages:
hasBin: true
dev: true
+ /yargs-parser@21.1.1:
+ resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
+ engines: {node: '>=12'}
+ dev: true
+
+ /yargs@17.7.2:
+ resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
+ engines: {node: '>=12'}
+ dependencies:
+ cliui: 8.0.1
+ escalade: 3.1.2
+ get-caller-file: 2.0.5
+ require-directory: 2.1.1
+ string-width: 4.2.3
+ y18n: 5.0.8
+ yargs-parser: 21.1.1
+ dev: true
+
/yn@3.1.1:
resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==}
engines: {node: '>=6'}