diff --git a/.env.example b/.env.example
index dbbdf73..8687992 100644
--- a/.env.example
+++ b/.env.example
@@ -4,7 +4,7 @@
NEXT_PUBLIC_UMAMI_WEBSITE_ID=
-# ---- STAGING ENVS ------------------------------------------------
+# ---- REMOTE/STAGING ENVS ------------------------------------------------
NEXT_PUBLIC_SUPABASE_URL=https://.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=
@@ -15,8 +15,8 @@ DIRECT_URL="postgresql://postgres:@db..s
# ---- LOCAL ENVS ------------------------------------------------
-# NEXT_PUBLIC_SUPABASE_URL=http://localhost:54321
+# NEXT_PUBLIC_SUPABASE_URL=http://localhost:5421
# NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24iLCJleHAiOjE5ODM4MTI5OTZ9.CRXP1A7WOeoJeXxjNni43kdQwgnWNReilDMblYTn_I0
# SUPABASE_SERVICE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6InNlcnZpY2Vfcm9sZSIsImV4cCI6MTk4MzgxMjk5Nn0.EGIM96RAZx35lJzdJsyH-qQwv8Hdp7fsn3W0YpN81IU
-# DIRECT_URL="postgresql://postgres:postgres@localhost:54322/postgres"
-# DATABASE_URL="postgresql://postgres:postgres@localhost:54322/postgres"
+# DIRECT_URL="postgresql://postgres:postgres@localhost:5422/postgres"
+# DATABASE_URL="postgresql://postgres:postgres@localhost:5422/postgres"
diff --git a/.eslintrc.cjs b/.eslintrc.cjs
index e1f24d6..8933d2c 100644
--- a/.eslintrc.cjs
+++ b/.eslintrc.cjs
@@ -1,26 +1,20 @@
-// eslint-disable-next-line @typescript-eslint/no-var-requires
-const path = require("path");
-
/** @type {import("eslint").Linter.Config} */
const config = {
+ root: true,
+ extends: [
+ "next",
+ "next/core-web-vitals",
+ "plugin:@typescript-eslint/recommended",
+ ],
+ plugins: ["react", "@typescript-eslint", "unused-imports"],
overrides: [
{
- extends: [
- "plugin:@typescript-eslint/recommended-requiring-type-checking",
- ],
- files: ["*.ts", "*.tsx"],
- parserOptions: {
- project: path.join(__dirname, "tsconfig.json"),
- },
+ files: ["*.ts", "*.tsx", "*.js"],
+ parser: "@typescript-eslint/parser",
},
],
- parser: "@typescript-eslint/parser",
- parserOptions: {
- project: path.join(__dirname, "tsconfig.json"),
- },
- plugins: ["@typescript-eslint"],
- extends: ["next/core-web-vitals", "plugin:@typescript-eslint/recommended"],
rules: {
+ "@typescript-eslint/no-misused-promises": "off",
"@typescript-eslint/consistent-type-imports": [
"warn",
{
@@ -28,11 +22,50 @@ const config = {
fixStyle: "inline-type-imports",
},
],
+ "import/prefer-default-export": "off",
+ "react/jsx-filename-extension": ["warn", { extensions: [".tsx"] }],
+ "react/jsx-uses-react": "off",
+ "react/react-in-jsx-scope": "off",
+
"react/jsx-curly-brace-presence": [
"warn",
{ props: "never", children: "never" },
],
- "@typescript-eslint/no-unused-vars": ["warn", { argsIgnorePattern: "^_" }],
+ "@typescript-eslint/no-shadow": ["error"],
+ "@typescript-eslint/no-unused-vars": "off",
+ "no-param-reassign": ["error"],
+ "unused-imports/no-unused-imports": "error",
+ "unused-imports/no-unused-vars": [
+ "warn",
+ {
+ vars: "all",
+ varsIgnorePattern: "^_",
+ args: "after-used",
+ argsIgnorePattern: "^_",
+ },
+ ],
+ "padding-line-between-statements": [
+ "error",
+ {
+ blankLine: "always",
+ prev: ["const", "let", "var", "directive"],
+ next: "*",
+ },
+ {
+ blankLine: "any",
+ prev: ["const", "let", "var"],
+ next: ["const", "let", "var"],
+ },
+ { blankLine: "always", prev: "*", next: "return" },
+ { blankLine: "always", prev: ["block", "block-like"], next: "*" },
+ { blankLine: "always", prev: "*", next: ["function"] },
+ {
+ blankLine: "always",
+ prev: "import",
+ next: ["const", "let", "var", "function", "export", "block-like"],
+ },
+ ],
+ "no-nested-ternary": "error",
},
};
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index bfea672..1179564 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -12,7 +12,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
- node-version: [16]
+ node-version: [18]
env:
SKIP_ENV_VALIDATION: true
steps:
@@ -27,5 +27,5 @@ jobs:
cache: "pnpm"
- name: Install pnpm
run: pnpm install
- - name: Run eslint
+ - name: Run Lint
run: pnpm lint
diff --git a/.github/workflows/production.yaml b/.github/workflows/production.yaml
index c2eb1c3..8976624 100644
--- a/.github/workflows/production.yaml
+++ b/.github/workflows/production.yaml
@@ -13,7 +13,7 @@ jobs:
env:
SUPABASE_ACCESS_TOKEN: ${{ secrets.SUPABASE_ACCESS_TOKEN }}
SUPABASE_DB_PASSWORD: ${{ secrets.PRODUCTION_DB_PASSWORD }}
- PRODUCTION_PROJECT_ID: CHANGE_ME
+ PRODUCTION_PROJECT_ID:
steps:
- uses: actions/checkout@v3
diff --git a/.github/workflows/staging.yaml b/.github/workflows/staging.yaml
index 24f8a76..654bf06 100644
--- a/.github/workflows/staging.yaml
+++ b/.github/workflows/staging.yaml
@@ -13,7 +13,7 @@ jobs:
env:
SUPABASE_ACCESS_TOKEN: ${{ secrets.SUPABASE_ACCESS_TOKEN }}
SUPABASE_DB_PASSWORD: ${{ secrets.STAGING_DB_PASSWORD }}
- STAGING_PROJECT_ID: CHANGE_ME
+ STAGING_PROJECT_ID:
steps:
- uses: actions/checkout@v3
diff --git a/README.md b/README.md
index 79ee0ca..c5ed7a2 100644
--- a/README.md
+++ b/README.md
@@ -32,13 +32,28 @@ pnpm install
- Copy the .env.example into .env and fill out the envs
+### Initial Setup
+
## If you want to develop on local supabase instance, follow the steps below:
Then go to supabase/config.toml file and change your service name.
-Link the project with your supabase instance:
+Start the database:
+
+- supabase start
+- pnpm prepare:local
+
+## If you want to develop on remote supabase instance, follow the steps below:
+
+Connect supabase to remote instance:
+
+- supabase link --project-ref <_your_project_id_>
+- pnpm prepare:remote
+
+## Common steps
-- supabase link --project-ref *<*project-id*>*
+- Fill out environment variables
+- Create Secrets on Github
#### If you want to create migrations by hand, go ahead and use this command:
diff --git a/components.json b/components.json
index 93569ef..1005fb2 100644
--- a/components.json
+++ b/components.json
@@ -11,6 +11,6 @@
},
"aliases": {
"components": "~/components",
- "utils": "~/utils"
+ "utils": "~/utils/cn"
}
}
diff --git a/package.json b/package.json
index b9c8cb7..9ab01b2 100644
--- a/package.json
+++ b/package.json
@@ -11,7 +11,7 @@
"lint": "next lint && pnpm check-types",
"check-types": "tsc --noEmit",
"update-types-local": "supabase gen types typescript --local > src/server/supabase/supabaseTypes.ts",
- "update-types-remote": "supabase gen types typescript --project-id \"PUT YOUR SUPABASE REMOTE API KEY\" --schema public > src/server/supabase/supabaseTypes.ts",
+ "update-types-remote": "supabase gen types typescript --project-id \"\" --schema public > src/server/supabase/supabaseTypes.ts",
"prepare:local": "pnpm update-types-local && pnpm prisma db pull && pnpm prisma generate && pnpm prisma-case-format --file prisma/schema.prisma && pnpm prisma generate",
"prepare:remote": "pnpm update-types-remote && pnpm prisma db pull && pnpm prisma generate && pnpm prisma-case-format --file prisma/schema.prisma && pnpm prisma generate",
"db:reset": "supabase db reset",
@@ -20,46 +20,53 @@
"db:diff": "supabase db diff -f"
},
"dependencies": {
- "@prisma/client": "^5.1.1",
+ "@prisma/client": "^5.6.0",
+ "@radix-ui/react-dropdown-menu": "^2.0.6",
+ "@radix-ui/react-label": "^2.0.2",
"@radix-ui/react-slot": "^1.0.2",
- "@supabase/auth-helpers-nextjs": "^0.8.1",
- "@supabase/supabase-js": "^2.38.0",
- "@t3-oss/env-nextjs": "^0.6.0",
- "@tanstack/react-query": "^4.32.6",
- "@trpc/client": "^10.37.1",
- "@trpc/next": "^10.37.1",
- "@trpc/react-query": "^10.37.1",
- "@trpc/server": "^10.37.1",
- "@vercel/analytics": "^1.0.2",
+ "@radix-ui/react-toast": "^1.1.5",
+ "@supabase/auth-helpers-nextjs": "^0.8.7",
+ "@supabase/supabase-js": "^2.39.0",
+ "@t3-oss/env-nextjs": "^0.6.1",
+ "@tanstack/react-query": "^4.36.1",
+ "@tanstack/react-query-devtools": "^5.12.1",
+ "@trpc/client": "^10.44.1",
+ "@trpc/next": "^10.44.1",
+ "@trpc/react-query": "^10.44.1",
+ "@trpc/server": "^10.44.1",
+ "@vercel/analytics": "^1.1.1",
+ "accept-language": "^3.0.18",
"class-variance-authority": "^0.7.0",
"clsx": "^2.0.0",
"lucide-react": "^0.284.0",
- "next": "^13.4.19",
+ "next": "^14.0.3",
"next-themes": "^0.2.1",
"react": "18.2.0",
"react-dom": "18.2.0",
- "superjson": "^1.13.1",
+ "react-hook-form": "^7.49.2",
+ "superjson": "^1.13.3",
"tailwind-merge": "^1.14.0",
"tailwindcss-animate": "^1.0.7",
- "zod": "^3.21.4"
+ "zod": "^3.22.4"
},
"devDependencies": {
- "@types/eslint": "^8.44.2",
- "@types/node": "^18.16.0",
- "@types/react": "^18.2.20",
- "@types/react-dom": "^18.2.7",
- "@typescript-eslint/eslint-plugin": "^6.3.0",
- "@typescript-eslint/parser": "^6.3.0",
- "autoprefixer": "^10.4.14",
- "eslint": "^8.47.0",
- "eslint-config-next": "^13.4.19",
- "postcss": "^8.4.27",
- "prettier": "^3.0.0",
- "prettier-plugin-tailwindcss": "^0.5.1",
- "prisma": "^5.1.1",
+ "@types/eslint": "^8.44.8",
+ "@types/node": "^18.19.0",
+ "@types/react": "^18.2.39",
+ "@types/react-dom": "^18.2.17",
+ "@typescript-eslint/eslint-plugin": "^6.13.1",
+ "@typescript-eslint/parser": "^6.13.1",
+ "autoprefixer": "^10.4.16",
+ "eslint": "^8.54.0",
+ "eslint-config-next": "^13.5.6",
+ "eslint-plugin-unused-imports": "^3.0.0",
+ "postcss": "^8.4.31",
+ "prettier": "^3.1.0",
+ "prettier-plugin-tailwindcss": "^0.5.7",
+ "prisma": "^5.6.0",
"prisma-case-format": "^1.7.3",
- "tailwindcss": "^3.3.3",
- "typescript": "^5.1.6"
+ "tailwindcss": "^3.3.5",
+ "typescript": "^5.3.2"
},
"ct3aMetadata": {
"initVersion": "7.20.2"
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 479ba06..3fa9a50 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -6,38 +6,53 @@ settings:
dependencies:
'@prisma/client':
- specifier: ^5.1.1
- version: 5.4.0(prisma@5.4.0)
+ specifier: ^5.6.0
+ version: 5.7.0(prisma@5.7.0)
+ '@radix-ui/react-dropdown-menu':
+ specifier: ^2.0.6
+ version: 2.0.6(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-label':
+ specifier: ^2.0.2
+ version: 2.0.2(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
'@radix-ui/react-slot':
specifier: ^1.0.2
- version: 1.0.2(@types/react@18.2.24)(react@18.2.0)
+ version: 1.0.2(@types/react@18.2.45)(react@18.2.0)
+ '@radix-ui/react-toast':
+ specifier: ^1.1.5
+ version: 1.1.5(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
'@supabase/auth-helpers-nextjs':
- specifier: ^0.8.1
- version: 0.8.1(@supabase/supabase-js@2.38.0)
+ specifier: ^0.8.7
+ version: 0.8.7(@supabase/supabase-js@2.39.0)
'@supabase/supabase-js':
- specifier: ^2.38.0
- version: 2.38.0
+ specifier: ^2.39.0
+ version: 2.39.0
'@t3-oss/env-nextjs':
- specifier: ^0.6.0
- version: 0.6.1(typescript@5.2.2)(zod@3.22.3)
+ specifier: ^0.6.1
+ version: 0.6.1(typescript@5.3.3)(zod@3.22.4)
'@tanstack/react-query':
- specifier: ^4.32.6
- version: 4.35.7(react-dom@18.2.0)(react@18.2.0)
+ specifier: ^4.36.1
+ version: 4.36.1(react-dom@18.2.0)(react@18.2.0)
+ '@tanstack/react-query-devtools':
+ specifier: ^5.12.1
+ version: 5.13.5(@tanstack/react-query@4.36.1)(react@18.2.0)
'@trpc/client':
- specifier: ^10.37.1
- version: 10.38.5(@trpc/server@10.38.5)
+ specifier: ^10.44.1
+ version: 10.44.1(@trpc/server@10.44.1)
'@trpc/next':
- specifier: ^10.37.1
- version: 10.38.5(@tanstack/react-query@4.35.7)(@trpc/client@10.38.5)(@trpc/react-query@10.38.5)(@trpc/server@10.38.5)(next@13.5.4)(react-dom@18.2.0)(react@18.2.0)
+ specifier: ^10.44.1
+ version: 10.44.1(@tanstack/react-query@4.36.1)(@trpc/client@10.44.1)(@trpc/react-query@10.44.1)(@trpc/server@10.44.1)(next@14.0.4)(react-dom@18.2.0)(react@18.2.0)
'@trpc/react-query':
- specifier: ^10.37.1
- version: 10.38.5(@tanstack/react-query@4.35.7)(@trpc/client@10.38.5)(@trpc/server@10.38.5)(react-dom@18.2.0)(react@18.2.0)
+ specifier: ^10.44.1
+ version: 10.44.1(@tanstack/react-query@4.36.1)(@trpc/client@10.44.1)(@trpc/server@10.44.1)(react-dom@18.2.0)(react@18.2.0)
'@trpc/server':
- specifier: ^10.37.1
- version: 10.38.5
+ specifier: ^10.44.1
+ version: 10.44.1
'@vercel/analytics':
- specifier: ^1.0.2
- version: 1.0.2
+ specifier: ^1.1.1
+ version: 1.1.1
+ accept-language:
+ specifier: ^3.0.18
+ version: 3.0.18
class-variance-authority:
specifier: ^0.7.0
version: 0.7.0
@@ -48,79 +63,85 @@ dependencies:
specifier: ^0.284.0
version: 0.284.0(react@18.2.0)
next:
- specifier: ^13.4.19
- version: 13.5.4(react-dom@18.2.0)(react@18.2.0)
+ specifier: ^14.0.3
+ version: 14.0.4(react-dom@18.2.0)(react@18.2.0)
next-themes:
specifier: ^0.2.1
- version: 0.2.1(next@13.5.4)(react-dom@18.2.0)(react@18.2.0)
+ version: 0.2.1(next@14.0.4)(react-dom@18.2.0)(react@18.2.0)
react:
specifier: 18.2.0
version: 18.2.0
react-dom:
specifier: 18.2.0
version: 18.2.0(react@18.2.0)
+ react-hook-form:
+ specifier: ^7.49.2
+ version: 7.49.2(react@18.2.0)
superjson:
- specifier: ^1.13.1
+ specifier: ^1.13.3
version: 1.13.3
tailwind-merge:
specifier: ^1.14.0
version: 1.14.0
tailwindcss-animate:
specifier: ^1.0.7
- version: 1.0.7(tailwindcss@3.3.3)
+ version: 1.0.7(tailwindcss@3.3.6)
zod:
- specifier: ^3.21.4
- version: 3.22.3
+ specifier: ^3.22.4
+ version: 3.22.4
devDependencies:
'@types/eslint':
- specifier: ^8.44.2
- version: 8.44.3
+ specifier: ^8.44.8
+ version: 8.44.9
'@types/node':
- specifier: ^18.16.0
- version: 18.18.3
+ specifier: ^18.19.0
+ version: 18.19.3
'@types/react':
- specifier: ^18.2.20
- version: 18.2.24
+ specifier: ^18.2.39
+ version: 18.2.45
'@types/react-dom':
- specifier: ^18.2.7
- version: 18.2.9
+ specifier: ^18.2.17
+ version: 18.2.17
'@typescript-eslint/eslint-plugin':
- specifier: ^6.3.0
- version: 6.7.4(@typescript-eslint/parser@6.7.4)(eslint@8.50.0)(typescript@5.2.2)
+ specifier: ^6.13.1
+ version: 6.14.0(@typescript-eslint/parser@6.14.0)(eslint@8.55.0)(typescript@5.3.3)
'@typescript-eslint/parser':
- specifier: ^6.3.0
- version: 6.7.4(eslint@8.50.0)(typescript@5.2.2)
+ specifier: ^6.13.1
+ version: 6.14.0(eslint@8.55.0)(typescript@5.3.3)
autoprefixer:
- specifier: ^10.4.14
- version: 10.4.16(postcss@8.4.31)
+ specifier: ^10.4.16
+ version: 10.4.16(postcss@8.4.32)
eslint:
- specifier: ^8.47.0
- version: 8.50.0
+ specifier: ^8.54.0
+ version: 8.55.0
eslint-config-next:
- specifier: ^13.4.19
- version: 13.5.4(eslint@8.50.0)(typescript@5.2.2)
+ specifier: ^13.5.6
+ version: 13.5.6(eslint@8.55.0)(typescript@5.3.3)
+ eslint-plugin-unused-imports:
+ specifier: ^3.0.0
+ version: 3.0.0(@typescript-eslint/eslint-plugin@6.14.0)(eslint@8.55.0)
postcss:
- specifier: ^8.4.27
- version: 8.4.31
+ specifier: ^8.4.31
+ version: 8.4.32
prettier:
- specifier: ^3.0.0
- version: 3.0.3
+ specifier: ^3.1.0
+ version: 3.1.1
prettier-plugin-tailwindcss:
- specifier: ^0.5.1
- version: 0.5.5(prettier@3.0.3)
+ specifier: ^0.5.7
+ version: 0.5.9(prettier@3.1.1)
prisma:
- specifier: ^5.1.1
- version: 5.4.0
+ specifier: ^5.6.0
+ version: 5.7.0
prisma-case-format:
specifier: ^1.7.3
version: 1.7.3
tailwindcss:
- specifier: ^3.3.3
- version: 3.3.3
+ specifier: ^3.3.5
+ version: 3.3.6
typescript:
- specifier: ^5.1.6
- version: 5.2.2
+ specifier: ^5.3.2
+ version: 5.3.3
packages:
@@ -138,11 +159,11 @@ packages:
hasBin: true
dev: true
- /@babel/code-frame@7.22.13:
- resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==}
+ /@babel/code-frame@7.23.5:
+ resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==}
engines: {node: '>=6.9.0'}
dependencies:
- '@babel/highlight': 7.22.20
+ '@babel/highlight': 7.23.4
chalk: 2.4.2
dev: true
@@ -151,8 +172,8 @@ packages:
engines: {node: '>=6.9.0'}
dev: true
- /@babel/highlight@7.22.20:
- resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==}
+ /@babel/highlight@7.23.4:
+ resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/helper-validator-identifier': 7.22.20
@@ -160,36 +181,36 @@ packages:
js-tokens: 4.0.0
dev: true
- /@babel/runtime@7.23.1:
- resolution: {integrity: sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g==}
+ /@babel/runtime@7.23.6:
+ resolution: {integrity: sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==}
engines: {node: '>=6.9.0'}
dependencies:
regenerator-runtime: 0.14.0
- /@eslint-community/eslint-utils@4.4.0(eslint@8.50.0):
+ /@eslint-community/eslint-utils@4.4.0(eslint@8.55.0):
resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
dependencies:
- eslint: 8.50.0
+ eslint: 8.55.0
eslint-visitor-keys: 3.4.3
dev: true
- /@eslint-community/regexpp@4.9.1:
- resolution: {integrity: sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==}
+ /@eslint-community/regexpp@4.10.0:
+ resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==}
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
dev: true
- /@eslint/eslintrc@2.1.2:
- resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==}
+ /@eslint/eslintrc@2.1.4:
+ resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies:
ajv: 6.12.6
debug: 4.3.4
espree: 9.6.1
- globals: 13.22.0
- ignore: 5.2.4
+ globals: 13.24.0
+ ignore: 5.3.0
import-fresh: 3.3.0
js-yaml: 4.1.0
minimatch: 3.1.2
@@ -198,16 +219,44 @@ packages:
- supports-color
dev: true
- /@eslint/js@8.50.0:
- resolution: {integrity: sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==}
+ /@eslint/js@8.55.0:
+ resolution: {integrity: sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true
- /@humanwhocodes/config-array@0.11.11:
- resolution: {integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==}
+ /@floating-ui/core@1.5.2:
+ resolution: {integrity: sha512-Ii3MrfY/GAIN3OhXNzpCKaLxHQfJF9qvwq/kEJYdqDxeIHa01K8sldugal6TmeeXl+WMvhv9cnVzUTaFFJF09A==}
+ dependencies:
+ '@floating-ui/utils': 0.1.6
+ dev: false
+
+ /@floating-ui/dom@1.5.3:
+ resolution: {integrity: sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==}
+ dependencies:
+ '@floating-ui/core': 1.5.2
+ '@floating-ui/utils': 0.1.6
+ dev: false
+
+ /@floating-ui/react-dom@2.0.4(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-CF8k2rgKeh/49UrnIBs4BdxPUV6vize/Db1d/YbCLyp9GiVZ0BEwf5AiDSxJRCr6yOkGqTFHtmrULxkEfYZ7dQ==}
+ peerDependencies:
+ react: '>=16.8.0'
+ react-dom: '>=16.8.0'
+ dependencies:
+ '@floating-ui/dom': 1.5.3
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@floating-ui/utils@0.1.6:
+ resolution: {integrity: sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==}
+ dev: false
+
+ /@humanwhocodes/config-array@0.11.13:
+ resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==}
engines: {node: '>=10.10.0'}
dependencies:
- '@humanwhocodes/object-schema': 1.2.1
+ '@humanwhocodes/object-schema': 2.0.1
debug: 4.3.4
minimatch: 3.1.2
transitivePeerDependencies:
@@ -219,8 +268,8 @@ packages:
engines: {node: '>=12.22'}
dev: true
- /@humanwhocodes/object-schema@1.2.1:
- resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==}
+ /@humanwhocodes/object-schema@2.0.1:
+ resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==}
dev: true
/@jridgewell/gen-mapping@0.3.3:
@@ -229,7 +278,7 @@ packages:
dependencies:
'@jridgewell/set-array': 1.1.2
'@jridgewell/sourcemap-codec': 1.4.15
- '@jridgewell/trace-mapping': 0.3.19
+ '@jridgewell/trace-mapping': 0.3.20
/@jridgewell/resolve-uri@3.1.1:
resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==}
@@ -242,24 +291,24 @@ packages:
/@jridgewell/sourcemap-codec@1.4.15:
resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
- /@jridgewell/trace-mapping@0.3.19:
- resolution: {integrity: sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==}
+ /@jridgewell/trace-mapping@0.3.20:
+ resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==}
dependencies:
'@jridgewell/resolve-uri': 3.1.1
'@jridgewell/sourcemap-codec': 1.4.15
- /@next/env@13.5.4:
- resolution: {integrity: sha512-LGegJkMvRNw90WWphGJ3RMHMVplYcOfRWf2Be3td3sUa+1AaxmsYyANsA+znrGCBjXJNi4XAQlSoEfUxs/4kIQ==}
+ /@next/env@14.0.4:
+ resolution: {integrity: sha512-irQnbMLbUNQpP1wcE5NstJtbuA/69kRfzBrpAD7Gsn8zm/CY6YQYc3HQBz8QPxwISG26tIm5afvvVbu508oBeQ==}
dev: false
- /@next/eslint-plugin-next@13.5.4:
- resolution: {integrity: sha512-vI94U+D7RNgX6XypSyjeFrOzxGlZyxOplU0dVE5norIfZGn/LDjJYPHdvdsR5vN1eRtl6PDAsOHmycFEOljK5A==}
+ /@next/eslint-plugin-next@13.5.6:
+ resolution: {integrity: sha512-ng7pU/DDsxPgT6ZPvuprxrkeew3XaRf4LAT4FabaEO/hAbvVx4P7wqnqdbTdDn1kgTvsI4tpIgT4Awn/m0bGbg==}
dependencies:
glob: 7.1.7
dev: true
- /@next/swc-darwin-arm64@13.5.4:
- resolution: {integrity: sha512-Df8SHuXgF1p+aonBMcDPEsaahNo2TCwuie7VXED4FVyECvdXfRT9unapm54NssV9tF3OQFKBFOdlje4T43VO0w==}
+ /@next/swc-darwin-arm64@14.0.4:
+ resolution: {integrity: sha512-mF05E/5uPthWzyYDyptcwHptucf/jj09i2SXBPwNzbgBNc+XnwzrL0U6BmPjQeOL+FiB+iG1gwBeq7mlDjSRPg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [darwin]
@@ -267,8 +316,8 @@ packages:
dev: false
optional: true
- /@next/swc-darwin-x64@13.5.4:
- resolution: {integrity: sha512-siPuUwO45PnNRMeZnSa8n/Lye5ZX93IJom9wQRB5DEOdFrw0JjOMu1GINB8jAEdwa7Vdyn1oJ2xGNaQpdQQ9Pw==}
+ /@next/swc-darwin-x64@14.0.4:
+ resolution: {integrity: sha512-IZQ3C7Bx0k2rYtrZZxKKiusMTM9WWcK5ajyhOZkYYTCc8xytmwSzR1skU7qLgVT/EY9xtXDG0WhY6fyujnI3rw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [darwin]
@@ -276,8 +325,8 @@ packages:
dev: false
optional: true
- /@next/swc-linux-arm64-gnu@13.5.4:
- resolution: {integrity: sha512-l/k/fvRP/zmB2jkFMfefmFkyZbDkYW0mRM/LB+tH5u9pB98WsHXC0WvDHlGCYp3CH/jlkJPL7gN8nkTQVrQ/2w==}
+ /@next/swc-linux-arm64-gnu@14.0.4:
+ resolution: {integrity: sha512-VwwZKrBQo/MGb1VOrxJ6LrKvbpo7UbROuyMRvQKTFKhNaXjUmKTu7wxVkIuCARAfiI8JpaWAnKR+D6tzpCcM4w==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
@@ -285,8 +334,8 @@ packages:
dev: false
optional: true
- /@next/swc-linux-arm64-musl@13.5.4:
- resolution: {integrity: sha512-YYGb7SlLkI+XqfQa8VPErljb7k9nUnhhRrVaOdfJNCaQnHBcvbT7cx/UjDQLdleJcfyg1Hkn5YSSIeVfjgmkTg==}
+ /@next/swc-linux-arm64-musl@14.0.4:
+ resolution: {integrity: sha512-8QftwPEW37XxXoAwsn+nXlodKWHfpMaSvt81W43Wh8dv0gkheD+30ezWMcFGHLI71KiWmHK5PSQbTQGUiidvLQ==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
@@ -294,8 +343,8 @@ packages:
dev: false
optional: true
- /@next/swc-linux-x64-gnu@13.5.4:
- resolution: {integrity: sha512-uE61vyUSClnCH18YHjA8tE1prr/PBFlBFhxBZis4XBRJoR+txAky5d7gGNUIbQ8sZZ7LVkSVgm/5Fc7mwXmRAg==}
+ /@next/swc-linux-x64-gnu@14.0.4:
+ resolution: {integrity: sha512-/s/Pme3VKfZAfISlYVq2hzFS8AcAIOTnoKupc/j4WlvF6GQ0VouS2Q2KEgPuO1eMBwakWPB1aYFIA4VNVh667A==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
@@ -303,8 +352,8 @@ packages:
dev: false
optional: true
- /@next/swc-linux-x64-musl@13.5.4:
- resolution: {integrity: sha512-qVEKFYML/GvJSy9CfYqAdUexA6M5AklYcQCW+8JECmkQHGoPxCf04iMh7CPR7wkHyWWK+XLt4Ja7hhsPJtSnhg==}
+ /@next/swc-linux-x64-musl@14.0.4:
+ resolution: {integrity: sha512-m8z/6Fyal4L9Bnlxde5g2Mfa1Z7dasMQyhEhskDATpqr+Y0mjOBZcXQ7G5U+vgL22cI4T7MfvgtrM2jdopqWaw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
@@ -312,8 +361,8 @@ packages:
dev: false
optional: true
- /@next/swc-win32-arm64-msvc@13.5.4:
- resolution: {integrity: sha512-mDSQfqxAlfpeZOLPxLymZkX0hYF3juN57W6vFHTvwKlnHfmh12Pt7hPIRLYIShk8uYRsKPtMTth/EzpwRI+u8w==}
+ /@next/swc-win32-arm64-msvc@14.0.4:
+ resolution: {integrity: sha512-7Wv4PRiWIAWbm5XrGz3D8HUkCVDMMz9igffZG4NB1p4u1KoItwx9qjATHz88kwCEal/HXmbShucaslXCQXUM5w==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [win32]
@@ -321,8 +370,8 @@ packages:
dev: false
optional: true
- /@next/swc-win32-ia32-msvc@13.5.4:
- resolution: {integrity: sha512-aoqAT2XIekIWoriwzOmGFAvTtVY5O7JjV21giozBTP5c6uZhpvTWRbmHXbmsjZqY4HnEZQRXWkSAppsIBweKqw==}
+ /@next/swc-win32-ia32-msvc@14.0.4:
+ resolution: {integrity: sha512-zLeNEAPULsl0phfGb4kdzF/cAVIfaC7hY+kt0/d+y9mzcZHsMS3hAS829WbJ31DkSlVKQeHEjZHIdhN+Pg7Gyg==}
engines: {node: '>= 10'}
cpu: [ia32]
os: [win32]
@@ -330,8 +379,8 @@ packages:
dev: false
optional: true
- /@next/swc-win32-x64-msvc@13.5.4:
- resolution: {integrity: sha512-cyRvlAxwlddlqeB9xtPSfNSCRy8BOa4wtMo0IuI9P7Y0XT2qpDrpFKRyZ7kUngZis59mPVla5k8X1oOJ8RxDYg==}
+ /@next/swc-win32-x64-msvc@14.0.4:
+ resolution: {integrity: sha512-yEh2+R8qDlDCjxVpzOTEpBLQTEFAcP2A8fUFLaWNap9GitYKkKv1//y2S6XY6zsR4rCOPRpU7plYDR+az2n30A==}
engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
@@ -362,8 +411,8 @@ packages:
engines: {node: '>=8.0.0'}
dev: true
- /@prisma/client@5.4.0(prisma@5.4.0):
- resolution: {integrity: sha512-JEo7J24OgEyNJg6hWRecIj6NJcB0chBCXFhWoO5exDVReMxiaY801lLLd6KStVFJHCWVEWoMLPUqhOvQA5MUuw==}
+ /@prisma/client@5.7.0(prisma@5.7.0):
+ resolution: {integrity: sha512-cZmglCrfNbYpzUtz7HscVHl38e9CrUs31nrVoGUK1nIPXGgt8hT4jj2s657UXcNdQ/jBUxDgGmHyu2Nyrq1txg==}
engines: {node: '>=16.13'}
requiresBuild: true
peerDependencies:
@@ -372,8 +421,7 @@ packages:
prisma:
optional: true
dependencies:
- '@prisma/engines-version': 5.4.0-47.a5596b96668f0f4b397761ce0956db54e17e48c4
- prisma: 5.4.0
+ prisma: 5.7.0
dev: false
/@prisma/debug@4.16.2:
@@ -386,18 +434,25 @@ packages:
- supports-color
dev: true
- /@prisma/engines-version@5.4.0-47.a5596b96668f0f4b397761ce0956db54e17e48c4:
- resolution: {integrity: sha512-liWWFhIL5hMhVt4f9HWqMSnBgVicVFGKsEzO5gBfLr9aG1JgjjMDYNmqqLji0Hp0VpD8ffTQTOVZDJRUVBD4dw==}
- dev: false
+ /@prisma/debug@5.7.0:
+ resolution: {integrity: sha512-tZ+MOjWlVvz1kOEhNYMa4QUGURY+kgOUBqLHYIV8jmCsMuvA1tWcn7qtIMLzYWCbDcQT4ZS8xDgK0R2gl6/0wA==}
+
+ /@prisma/engines-version@5.7.0-41.79fb5193cf0a8fdbef536e4b4a159cad677ab1b9:
+ resolution: {integrity: sha512-V6tgRVi62jRwTm0Hglky3Scwjr/AKFBFtS+MdbsBr7UOuiu1TKLPc6xfPiyEN1+bYqjEtjxwGsHgahcJsd1rNg==}
/@prisma/engines@4.16.2:
resolution: {integrity: sha512-vx1nxVvN4QeT/cepQce68deh/Turxy5Mr+4L4zClFuK1GlxN3+ivxfuv+ej/gvidWn1cE1uAhW7ALLNlYbRUAw==}
requiresBuild: true
dev: true
- /@prisma/engines@5.4.0:
- resolution: {integrity: sha512-tnPa5Z1D70iPahvy9xG0bH5GD6Pb25Q+rH76+N1JKwQFe6vA3LyKyVzQrG4CQCI6N5PCJHJxlahJeCgcTJfLsg==}
+ /@prisma/engines@5.7.0:
+ resolution: {integrity: sha512-TkOMgMm60n5YgEKPn9erIvFX2/QuWnl3GBo6yTRyZKk5O5KQertXiNnrYgSLy0SpsKmhovEPQb+D4l0SzyE7XA==}
requiresBuild: true
+ dependencies:
+ '@prisma/debug': 5.7.0
+ '@prisma/engines-version': 5.7.0-41.79fb5193cf0a8fdbef536e4b4a159cad677ab1b9
+ '@prisma/fetch-engine': 5.7.0
+ '@prisma/get-platform': 5.7.0
/@prisma/fetch-engine@4.16.2:
resolution: {integrity: sha512-lnCnHcOaNn0kw8qTJbVcNhyfIf5Lus2GFXbj3qpkdKEIB9xLgqkkuTP+35q1xFaqwQ0vy4HFpdRUpFP7njE15g==}
@@ -424,6 +479,13 @@ packages:
- supports-color
dev: true
+ /@prisma/fetch-engine@5.7.0:
+ resolution: {integrity: sha512-zIn/qmO+N/3FYe7/L9o+yZseIU8ivh4NdPKSkQRIHfg2QVTVMnbhGoTcecbxfVubeTp+DjcbjS0H9fCuM4W04w==}
+ dependencies:
+ '@prisma/debug': 5.7.0
+ '@prisma/engines-version': 5.7.0-41.79fb5193cf0a8fdbef536e4b4a159cad677ab1b9
+ '@prisma/get-platform': 5.7.0
+
/@prisma/generator-helper@4.16.2:
resolution: {integrity: sha512-bMOH7y73Ui7gpQrioFeavMQA+Tf8ksaVf8Nhs9rQNzuSg8SSV6E9baczob0L5KGZTSgYoqnrRxuo03kVJYrnIg==}
dependencies:
@@ -452,6 +514,11 @@ packages:
- supports-color
dev: true
+ /@prisma/get-platform@5.7.0:
+ resolution: {integrity: sha512-ZeV/Op4bZsWXuw5Tg05WwRI8BlKiRFhsixPcAM+5BKYSiUZiMKIi713tfT3drBq8+T0E1arNZgYSA9QYcglWNA==}
+ dependencies:
+ '@prisma/debug': 5.7.0
+
/@prisma/internals@4.16.2:
resolution: {integrity: sha512-/3OiSADA3RRgsaeEE+MDsBgL6oAMwddSheXn6wtYGUnjERAV/BmF5bMMLnTykesQqwZ1s8HrISrJ0Vf6cjOxMg==}
dependencies:
@@ -507,7 +574,58 @@ packages:
resolution: {integrity: sha512-g090+dEH7wrdCw359+8J9+TGH84qK28V/dxwINjhhNCtju9lej99z9w/AVsJP9UhhcCPS4psYz4iu8d53uxVpA==}
dev: true
- /@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.24)(react@18.2.0):
+ /@radix-ui/primitive@1.0.1:
+ resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==}
+ dependencies:
+ '@babel/runtime': 7.23.6
+ dev: false
+
+ /@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.23.6
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
+ '@types/react': 18.2.45
+ '@types/react-dom': 18.2.17
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-collection@1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.23.6
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0)
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.45)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-slot': 1.0.2(@types/react@18.2.45)(react@18.2.0)
+ '@types/react': 18.2.45
+ '@types/react-dom': 18.2.17
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.45)(react@18.2.0):
resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==}
peerDependencies:
'@types/react': '*'
@@ -516,12 +634,326 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.23.1
- '@types/react': 18.2.24
+ '@babel/runtime': 7.23.6
+ '@types/react': 18.2.45
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-context@1.0.1(@types/react@18.2.45)(react@18.2.0):
+ resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.23.6
+ '@types/react': 18.2.45
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-direction@1.0.1(@types/react@18.2.45)(react@18.2.0):
+ resolution: {integrity: sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.23.6
+ '@types/react': 18.2.45
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.23.6
+ '@radix-ui/primitive': 1.0.1
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.45)(react@18.2.0)
+ '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.2.45)(react@18.2.0)
+ '@types/react': 18.2.45
+ '@types/react-dom': 18.2.17
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-dropdown-menu@2.0.6(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-i6TuFOoWmLWq+M/eCLGd/bQ2HfAX1RJgvrBQ6AQLmzfvsLdefxbWu8G9zczcPFfcSPehz9GcpF6K9QYreFV8hA==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.23.6
+ '@radix-ui/primitive': 1.0.1
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0)
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.45)(react@18.2.0)
+ '@radix-ui/react-id': 1.0.1(@types/react@18.2.45)(react@18.2.0)
+ '@radix-ui/react-menu': 2.0.6(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.45)(react@18.2.0)
+ '@types/react': 18.2.45
+ '@types/react-dom': 18.2.17
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-focus-guards@1.0.1(@types/react@18.2.45)(react@18.2.0):
+ resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.23.6
+ '@types/react': 18.2.45
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.23.6
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.45)(react@18.2.0)
+ '@types/react': 18.2.45
+ '@types/react-dom': 18.2.17
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-id@1.0.1(@types/react@18.2.45)(react@18.2.0):
+ resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.23.6
+ '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.45)(react@18.2.0)
+ '@types/react': 18.2.45
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-label@2.0.2(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-N5ehvlM7qoTLx7nWPodsPYPgMzA5WM8zZChQg8nyFJKnDO5WHdba1vv5/H6IO5LtJMfD2Q3wh1qHFGNtK0w3bQ==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.23.6
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
+ '@types/react': 18.2.45
+ '@types/react-dom': 18.2.17
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-menu@2.0.6(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-BVkFLS+bUC8HcImkRKPSiVumA1VPOOEC5WBMiT+QAVsPzW1FJzI9KnqgGxVDPBcql5xXrHkD3JOVoXWEXD8SYA==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.23.6
+ '@radix-ui/primitive': 1.0.1
+ '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0)
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.45)(react@18.2.0)
+ '@radix-ui/react-direction': 1.0.1(@types/react@18.2.45)(react@18.2.0)
+ '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.45)(react@18.2.0)
+ '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-id': 1.0.1(@types/react@18.2.45)(react@18.2.0)
+ '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-slot': 1.0.2(@types/react@18.2.45)(react@18.2.0)
+ '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.45)(react@18.2.0)
+ '@types/react': 18.2.45
+ '@types/react-dom': 18.2.17
+ aria-hidden: 1.2.3
react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ react-remove-scroll: 2.5.5(@types/react@18.2.45)(react@18.2.0)
dev: false
- /@radix-ui/react-slot@1.0.2(@types/react@18.2.24)(react@18.2.0):
+ /@radix-ui/react-popper@1.1.3(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.23.6
+ '@floating-ui/react-dom': 2.0.4(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0)
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.45)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.45)(react@18.2.0)
+ '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.45)(react@18.2.0)
+ '@radix-ui/react-use-rect': 1.0.1(@types/react@18.2.45)(react@18.2.0)
+ '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.45)(react@18.2.0)
+ '@radix-ui/rect': 1.0.1
+ '@types/react': 18.2.45
+ '@types/react-dom': 18.2.17
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-portal@1.0.4(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.23.6
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
+ '@types/react': 18.2.45
+ '@types/react-dom': 18.2.17
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-presence@1.0.1(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.23.6
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0)
+ '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.45)(react@18.2.0)
+ '@types/react': 18.2.45
+ '@types/react-dom': 18.2.17
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.23.6
+ '@radix-ui/react-slot': 1.0.2(@types/react@18.2.45)(react@18.2.0)
+ '@types/react': 18.2.45
+ '@types/react-dom': 18.2.17
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.23.6
+ '@radix-ui/primitive': 1.0.1
+ '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0)
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.45)(react@18.2.0)
+ '@radix-ui/react-direction': 1.0.1(@types/react@18.2.45)(react@18.2.0)
+ '@radix-ui/react-id': 1.0.1(@types/react@18.2.45)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.45)(react@18.2.0)
+ '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.45)(react@18.2.0)
+ '@types/react': 18.2.45
+ '@types/react-dom': 18.2.17
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-slot@1.0.2(@types/react@18.2.45)(react@18.2.0):
resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==}
peerDependencies:
'@types/react': '*'
@@ -530,88 +962,237 @@ packages:
'@types/react':
optional: true
dependencies:
- '@babel/runtime': 7.23.1
- '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.24)(react@18.2.0)
- '@types/react': 18.2.24
+ '@babel/runtime': 7.23.6
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0)
+ '@types/react': 18.2.45
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-toast@1.1.5(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-fRLn227WHIBRSzuRzGJ8W+5YALxofH23y0MlPLddaIpLpCDqdE0NZlS2NRQDRiptfxDeeCjgFIpexB1/zkxDlw==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.23.6
+ '@radix-ui/primitive': 1.0.1
+ '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0)
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.45)(react@18.2.0)
+ '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.45)(react@18.2.0)
+ '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.45)(react@18.2.0)
+ '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.45)(react@18.2.0)
+ '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
+ '@types/react': 18.2.45
+ '@types/react-dom': 18.2.17
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.45)(react@18.2.0):
+ resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.23.6
+ '@types/react': 18.2.45
react: 18.2.0
dev: false
- /@rushstack/eslint-patch@1.5.1:
- resolution: {integrity: sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA==}
+ /@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.45)(react@18.2.0):
+ resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.23.6
+ '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.45)(react@18.2.0)
+ '@types/react': 18.2.45
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.45)(react@18.2.0):
+ resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.23.6
+ '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.45)(react@18.2.0)
+ '@types/react': 18.2.45
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.45)(react@18.2.0):
+ resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.23.6
+ '@types/react': 18.2.45
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-use-rect@1.0.1(@types/react@18.2.45)(react@18.2.0):
+ resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.23.6
+ '@radix-ui/rect': 1.0.1
+ '@types/react': 18.2.45
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-use-size@1.0.1(@types/react@18.2.45)(react@18.2.0):
+ resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.23.6
+ '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.45)(react@18.2.0)
+ '@types/react': 18.2.45
+ react: 18.2.0
+ dev: false
+
+ /@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.23.6
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)
+ '@types/react': 18.2.45
+ '@types/react-dom': 18.2.17
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@radix-ui/rect@1.0.1:
+ resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==}
+ dependencies:
+ '@babel/runtime': 7.23.6
+ dev: false
+
+ /@rushstack/eslint-patch@1.6.0:
+ resolution: {integrity: sha512-2/U3GXA6YiPYQDLGwtGlnNgKYBSwCFIHf8Y9LUY5VATHdtbLlU0Y1R3QoBnT0aB4qv/BEiVVsj7LJXoQCgJ2vA==}
dev: true
- /@supabase/auth-helpers-nextjs@0.8.1(@supabase/supabase-js@2.38.0):
- resolution: {integrity: sha512-ZO/UGDE9oaVXwPL4gpzGu2NpPwfKOgxTUnuK6no51So8Ah9BUuUUsTj+BdZlx7jJoZEIAkHWdRIx65WuQgWAiQ==}
+ /@supabase/auth-helpers-nextjs@0.8.7(@supabase/supabase-js@2.39.0):
+ resolution: {integrity: sha512-iYdOjFo0GkRvha340l8JdCiBiyXQuG9v8jnq7qMJ/2fakrskRgHTCOt7ryWbip1T6BExcWKC8SoJrhCzPOxhhg==}
peerDependencies:
'@supabase/supabase-js': ^2.19.0
dependencies:
- '@supabase/auth-helpers-shared': 0.5.0(@supabase/supabase-js@2.38.0)
- '@supabase/supabase-js': 2.38.0
+ '@supabase/auth-helpers-shared': 0.6.3(@supabase/supabase-js@2.39.0)
+ '@supabase/supabase-js': 2.39.0
set-cookie-parser: 2.6.0
dev: false
- /@supabase/auth-helpers-shared@0.5.0(@supabase/supabase-js@2.38.0):
- resolution: {integrity: sha512-kioUeYDBZ89cfqOTZFOLEFIO7kGczL0XJYZdVv/bKt5efXqhiY14NbzgGWiMvvD9o9Iluo0+YEV2tG3ZZ5W06A==}
+ /@supabase/auth-helpers-shared@0.6.3(@supabase/supabase-js@2.39.0):
+ resolution: {integrity: sha512-xYQRLFeFkL4ZfwC7p9VKcarshj3FB2QJMgJPydvOY7J5czJe6xSG5/wM1z63RmAzGbCkKg+dzpq61oeSyWiGBQ==}
peerDependencies:
'@supabase/supabase-js': ^2.19.0
dependencies:
- '@supabase/supabase-js': 2.38.0
- jose: 4.15.2
+ '@supabase/supabase-js': 2.39.0
+ jose: 4.15.4
dev: false
/@supabase/functions-js@2.1.5:
resolution: {integrity: sha512-BNzC5XhCzzCaggJ8s53DP+WeHHGT/NfTsx2wUSSGKR2/ikLFQTBCDzMvGz/PxYMqRko/LwncQtKXGOYp1PkPaw==}
dependencies:
- '@supabase/node-fetch': 2.6.14
+ '@supabase/node-fetch': 2.6.15
dev: false
- /@supabase/gotrue-js@2.54.2:
- resolution: {integrity: sha512-e6XCirHbacHFFPM60w0u+rVwcymOIvYIhor1VoUzr/6/whgI9ootiUcLngcGedc8mbHbjhuSQ6QuC9Mjs5+UHQ==}
+ /@supabase/gotrue-js@2.60.1:
+ resolution: {integrity: sha512-dM28NhyPS5NLWpJbVokxGbuEMmMK2K+EBXYlNU2NEYzp1BrkdxetNh8ucslMbKauJ93XAEhbMCQHSO9fZ2E+DQ==}
dependencies:
- '@supabase/node-fetch': 2.6.14
+ '@supabase/node-fetch': 2.6.15
dev: false
- /@supabase/node-fetch@2.6.14:
- resolution: {integrity: sha512-w/Tsd22e/5fAeoxqQ4P2MX6EyF+iM6rc9kmlMVFkHuG0rAltt2TLhFbDJfemnHbtvnazWaRfy5KnFU/SYT37dQ==}
+ /@supabase/node-fetch@2.6.15:
+ resolution: {integrity: sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ==}
engines: {node: 4.x || >=6.0.0}
dependencies:
whatwg-url: 5.0.0
dev: false
- /@supabase/postgrest-js@1.8.4:
- resolution: {integrity: sha512-ELjpvhb04wILUiJz9zIsTSwaz9LQNlX+Ig5/LgXQ7k68qQI6NqHVn+ISRNt53DngUIyOnLHjeqqIRHBZ7zpgGA==}
+ /@supabase/postgrest-js@1.9.0:
+ resolution: {integrity: sha512-axP6cU69jDrLbfihJKQ6vU27tklD0gzb9idkMN363MtTXeJVt5DQNT3JnJ58JVNBdL74hgm26rAsFNvHk+tnSw==}
dependencies:
- '@supabase/node-fetch': 2.6.14
+ '@supabase/node-fetch': 2.6.15
dev: false
- /@supabase/realtime-js@2.8.0:
- resolution: {integrity: sha512-j1OP2nRJhqLNEoYSMkIl1+cHK/Ow9fektemazkF2CvrIrmwgfJJGaFGiWGVgwoKtwVcrdknSsYWpxs90hys1EQ==}
+ /@supabase/realtime-js@2.9.0:
+ resolution: {integrity: sha512-e/SI+/eqFJorAKAgVAwKQ9hSDQSBp86Yh7XbQmfJJ90LEfpM52HlTfJt/03lcepRu6BmH5h1uYn1b4zta7ghdw==}
dependencies:
- '@supabase/node-fetch': 2.6.14
- '@types/phoenix': 1.6.2
- '@types/websocket': 1.0.7
- websocket: 1.0.34
+ '@supabase/node-fetch': 2.6.15
+ '@types/phoenix': 1.6.4
+ '@types/websocket': 1.0.10
+ ws: 8.15.1
transitivePeerDependencies:
- - supports-color
+ - bufferutil
+ - utf-8-validate
dev: false
- /@supabase/storage-js@2.5.4:
- resolution: {integrity: sha512-yspHD19I9uQUgfTh0J94+/r/g6hnhdQmw6Y7OWqr/EbnL6uvicGV1i1UDkkmeUHqfF9Mbt2sLtuxRycYyKv2ew==}
+ /@supabase/storage-js@2.5.5:
+ resolution: {integrity: sha512-OpLoDRjFwClwc2cjTJZG8XviTiQH4Ik8sCiMK5v7et0MDu2QlXjCAW3ljxJB5+z/KazdMOTnySi+hysxWUPu3w==}
dependencies:
- '@supabase/node-fetch': 2.6.14
+ '@supabase/node-fetch': 2.6.15
dev: false
- /@supabase/supabase-js@2.38.0:
- resolution: {integrity: sha512-FSkIcz+/+TTBqNqhR8AdtblxEqCF72//CCkmZFIRCa3Xh/aiI0F4cBdL7AB3aIQn2DhE4aGxZ4mGiGR593096Q==}
+ /@supabase/supabase-js@2.39.0:
+ resolution: {integrity: sha512-cYfnwWRW5rYBbPT/BNIejtRT9ULdD9PnIExQV28PZpqcqm3PLwS4f3pY7WGB01Da63VYdvktZPKuYvreqsj/Zg==}
dependencies:
'@supabase/functions-js': 2.1.5
- '@supabase/gotrue-js': 2.54.2
- '@supabase/node-fetch': 2.6.14
- '@supabase/postgrest-js': 1.8.4
- '@supabase/realtime-js': 2.8.0
- '@supabase/storage-js': 2.5.4
+ '@supabase/gotrue-js': 2.60.1
+ '@supabase/node-fetch': 2.6.15
+ '@supabase/postgrest-js': 1.9.0
+ '@supabase/realtime-js': 2.9.0
+ '@supabase/storage-js': 2.5.5
transitivePeerDependencies:
- - supports-color
+ - bufferutil
+ - utf-8-validate
dev: false
/@swc/helpers@0.5.2:
@@ -620,33 +1201,48 @@ packages:
tslib: 2.6.2
dev: false
- /@t3-oss/env-core@0.6.1(typescript@5.2.2)(zod@3.22.3):
+ /@t3-oss/env-core@0.6.1(typescript@5.3.3)(zod@3.22.4):
resolution: {integrity: sha512-KQD7qEDJtkWIWWmTVjNvk0wnHpkvAQ6CRbUxbWMFNG/fiosBQDQvtRpBNu6USxBscJCoC4z6y7P9MN52/mLOzw==}
peerDependencies:
typescript: '>=4.7.2'
zod: ^3.0.0
dependencies:
- typescript: 5.2.2
- zod: 3.22.3
+ typescript: 5.3.3
+ zod: 3.22.4
dev: false
- /@t3-oss/env-nextjs@0.6.1(typescript@5.2.2)(zod@3.22.3):
+ /@t3-oss/env-nextjs@0.6.1(typescript@5.3.3)(zod@3.22.4):
resolution: {integrity: sha512-z1dIC++Vxj9kmzX5nSPfcrCSkszy3dTEPC4Ssx7Ap5AqR3c2Qa7S0xf8axn6coy7D/vCXDAAnHYnCMDhtcY3SQ==}
peerDependencies:
typescript: '>=4.7.2'
zod: ^3.0.0
dependencies:
- '@t3-oss/env-core': 0.6.1(typescript@5.2.2)(zod@3.22.3)
- typescript: 5.2.2
- zod: 3.22.3
+ '@t3-oss/env-core': 0.6.1(typescript@5.3.3)(zod@3.22.4)
+ typescript: 5.3.3
+ zod: 3.22.4
dev: false
- /@tanstack/query-core@4.35.7:
- resolution: {integrity: sha512-PgDJtX75ubFS0WCYFM7DqEoJ4QbxU3S5OH3gJSI40xr7UVVax3/J4CM3XUMOTs+EOT5YGEfssi3tfRVGte4DEw==}
+ /@tanstack/query-core@4.36.1:
+ resolution: {integrity: sha512-DJSilV5+ytBP1FbFcEJovv4rnnm/CokuVvrBEtW/Va9DvuJ3HksbXUJEpI0aV1KtuL4ZoO9AVE6PyNLzF7tLeA==}
dev: false
- /@tanstack/react-query@4.35.7(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-0MankquP/6EOM2ATfEov6ViiKemey5uTbjGlFMX1xGotwNaqC76YKDMJdHumZupPbZcZPWAeoPGEHQmVKIKoOQ==}
+ /@tanstack/query-devtools@5.13.5:
+ resolution: {integrity: sha512-effSYz9AWcZ6sNd+c8LCBYFIuDZApoCTXEpRlEYChBZpMz9QUUVMLToThwCyUY49+T5pANL3XxgZf3HV7hwJlg==}
+ dev: false
+
+ /@tanstack/react-query-devtools@5.13.5(@tanstack/react-query@4.36.1)(react@18.2.0):
+ resolution: {integrity: sha512-FB17B/yPtwnqg+DAdosAM+rFj3t8Pl121MPLiUGgl6jvG0A+U9XN3n39zVbhurbdSFO5jCMkPBlloW4NH5ojrA==}
+ peerDependencies:
+ '@tanstack/react-query': ^5.13.4
+ react: ^18.0.0
+ dependencies:
+ '@tanstack/query-devtools': 5.13.5
+ '@tanstack/react-query': 4.36.1(react-dom@18.2.0)(react@18.2.0)
+ react: 18.2.0
+ dev: false
+
+ /@tanstack/react-query@4.36.1(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-y7ySVHFyyQblPl3J3eQBWpXZkliroki3ARnBKsdJchlgt7yJLRDUcf4B8soufgiYt3pEQIkBWBx1N9/ZPIeUWw==}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
@@ -657,142 +1253,144 @@ packages:
react-native:
optional: true
dependencies:
- '@tanstack/query-core': 4.35.7
+ '@tanstack/query-core': 4.36.1
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
use-sync-external-store: 1.2.0(react@18.2.0)
dev: false
- /@trpc/client@10.38.5(@trpc/server@10.38.5):
- resolution: {integrity: sha512-tpGUsoAP+3CD/1KRqMdWZ+zebvB68/86SaVPAYHaEDozTFLQdNqTe98DS/T0S4hfh7WCKbMSObj40SCzE8amKQ==}
+ /@trpc/client@10.44.1(@trpc/server@10.44.1):
+ resolution: {integrity: sha512-vTWsykNcgz1LnwePVl2fKZnhvzP9N3GaaLYPkfGINo314ZOS0OBqe9x0ytB2LLUnRVTAAZ2WoONzARd8nHiqrA==}
peerDependencies:
- '@trpc/server': 10.38.5
+ '@trpc/server': 10.44.1
dependencies:
- '@trpc/server': 10.38.5
+ '@trpc/server': 10.44.1
dev: false
- /@trpc/next@10.38.5(@tanstack/react-query@4.35.7)(@trpc/client@10.38.5)(@trpc/react-query@10.38.5)(@trpc/server@10.38.5)(next@13.5.4)(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-sSPEiaNtNIH3psU+RiGtfLWjLbHFaD66pqcPvUR3C686u7A3TDFXznez9K20Ii0LRwpyQOWCz2Doe51oj7TL6w==}
+ /@trpc/next@10.44.1(@tanstack/react-query@4.36.1)(@trpc/client@10.44.1)(@trpc/react-query@10.44.1)(@trpc/server@10.44.1)(next@14.0.4)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-ez2oYUzmaQ+pGch627sRBfeEk3h+UIwNicR8WjTAM54TPcdP5W9ZyWCyO5HZTEfjHgGixYM4tCIxewdKOWY9yA==}
peerDependencies:
'@tanstack/react-query': ^4.18.0
- '@trpc/client': 10.38.5
- '@trpc/react-query': 10.38.5
- '@trpc/server': 10.38.5
+ '@trpc/client': 10.44.1
+ '@trpc/react-query': 10.44.1
+ '@trpc/server': 10.44.1
next: '*'
react: '>=16.8.0'
react-dom: '>=16.8.0'
dependencies:
- '@tanstack/react-query': 4.35.7(react-dom@18.2.0)(react@18.2.0)
- '@trpc/client': 10.38.5(@trpc/server@10.38.5)
- '@trpc/react-query': 10.38.5(@tanstack/react-query@4.35.7)(@trpc/client@10.38.5)(@trpc/server@10.38.5)(react-dom@18.2.0)(react@18.2.0)
- '@trpc/server': 10.38.5
- next: 13.5.4(react-dom@18.2.0)(react@18.2.0)
+ '@tanstack/react-query': 4.36.1(react-dom@18.2.0)(react@18.2.0)
+ '@trpc/client': 10.44.1(@trpc/server@10.44.1)
+ '@trpc/react-query': 10.44.1(@tanstack/react-query@4.36.1)(@trpc/client@10.44.1)(@trpc/server@10.44.1)(react-dom@18.2.0)(react@18.2.0)
+ '@trpc/server': 10.44.1
+ next: 14.0.4(react-dom@18.2.0)(react@18.2.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
react-ssr-prepass: 1.5.0(react@18.2.0)
dev: false
- /@trpc/react-query@10.38.5(@tanstack/react-query@4.35.7)(@trpc/client@10.38.5)(@trpc/server@10.38.5)(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-cGpKfiQen3ba3lTII3+Y6Hm3KnC60AS9n2AYt07I7LZx/GknsGHq4h570imdIxr6Qb5LtYe3DFV13kzbm+yGeA==}
+ /@trpc/react-query@10.44.1(@tanstack/react-query@4.36.1)(@trpc/client@10.44.1)(@trpc/server@10.44.1)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-Sgi/v0YtdunOXjBRi7om9gILGkOCFYXPzn5KqLuEHiZw5dr5w4qGHFwCeMAvndZxmwfblJrl1tk2AznmsVu8MA==}
peerDependencies:
'@tanstack/react-query': ^4.18.0
- '@trpc/client': 10.38.5
- '@trpc/server': 10.38.5
+ '@trpc/client': 10.44.1
+ '@trpc/server': 10.44.1
react: '>=16.8.0'
react-dom: '>=16.8.0'
dependencies:
- '@tanstack/react-query': 4.35.7(react-dom@18.2.0)(react@18.2.0)
- '@trpc/client': 10.38.5(@trpc/server@10.38.5)
- '@trpc/server': 10.38.5
+ '@tanstack/react-query': 4.36.1(react-dom@18.2.0)(react@18.2.0)
+ '@trpc/client': 10.44.1(@trpc/server@10.44.1)
+ '@trpc/server': 10.44.1
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
dev: false
- /@trpc/server@10.38.5:
- resolution: {integrity: sha512-J0d2Y3Gpt2bMohOshPBfuzDqVrPaE3OKEDtJYgTmLk5t1pZy3kXHQep4rP2LEIr+ELbmkelhcrSvvFLA+4/w/Q==}
+ /@trpc/server@10.44.1:
+ resolution: {integrity: sha512-mF7B+K6LjuboX8I1RZgKE5GA/fJhsJ8tKGK2UBt3Bwik7hepEPb4NJgNr7vO6BK5IYwPdBLRLTctRw6XZx0sRg==}
+ engines: {node: '>=18.0.0'}
dev: false
/@types/cross-spawn@6.0.2:
resolution: {integrity: sha512-KuwNhp3eza+Rhu8IFI5HUXRP0LIhqH5cAjubUvGXXthh4YYBuP2ntwEX+Cz8GJoZUHlKo247wPWOfA9LYEq4cw==}
dependencies:
- '@types/node': 18.18.3
+ '@types/node': 18.19.3
dev: true
/@types/debug@4.1.8:
resolution: {integrity: sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==}
dependencies:
- '@types/ms': 0.7.32
+ '@types/ms': 0.7.34
dev: true
- /@types/eslint@8.44.3:
- resolution: {integrity: sha512-iM/WfkwAhwmPff3wZuPLYiHX18HI24jU8k1ZSH7P8FHwxTjZ2P6CoX2wnF43oprR+YXJM6UUxATkNvyv/JHd+g==}
+ /@types/eslint@8.44.9:
+ resolution: {integrity: sha512-6yBxcvwnnYoYT1Uk2d+jvIfsuP4mb2EdIxFnrPABj5a/838qe5bGkNLFOiipX4ULQ7XVQvTxOh7jO+BTAiqsEw==}
dependencies:
- '@types/estree': 1.0.2
- '@types/json-schema': 7.0.13
+ '@types/estree': 1.0.5
+ '@types/json-schema': 7.0.15
dev: true
- /@types/estree@1.0.2:
- resolution: {integrity: sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA==}
+ /@types/estree@1.0.5:
+ resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
dev: true
- /@types/json-schema@7.0.13:
- resolution: {integrity: sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==}
+ /@types/json-schema@7.0.15:
+ resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
dev: true
/@types/json5@0.0.29:
resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
dev: true
- /@types/ms@0.7.32:
- resolution: {integrity: sha512-xPSg0jm4mqgEkNhowKgZFBNtwoEwF6gJ4Dhww+GFpm3IgtNseHQZ5IqdNwnquZEoANxyDAKDRAdVo4Z72VvD/g==}
+ /@types/ms@0.7.34:
+ resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==}
dev: true
- /@types/node@18.18.3:
- resolution: {integrity: sha512-0OVfGupTl3NBFr8+iXpfZ8NR7jfFO+P1Q+IO/q0wbo02wYkP5gy36phojeYWpLQ6WAMjl+VfmqUk2YbUfp0irA==}
+ /@types/node@18.19.3:
+ resolution: {integrity: sha512-k5fggr14DwAytoA/t8rPrIz++lXK7/DqckthCmoZOKNsEbJkId4Z//BqgApXBUGrGddrigYa1oqheo/7YmW4rg==}
+ dependencies:
+ undici-types: 5.26.5
- /@types/normalize-package-data@2.4.2:
- resolution: {integrity: sha512-lqa4UEhhv/2sjjIQgjX8B+RBjj47eo0mzGasklVJ78UKGQY1r0VpB9XHDaZZO9qzEFDdy4MrXLuEaSmPrPSe/A==}
+ /@types/normalize-package-data@2.4.4:
+ resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==}
dev: true
- /@types/phoenix@1.6.2:
- resolution: {integrity: sha512-I3mm7x5XIi+5NsIY3nfreY+H4PmQdyBwJ84SiUSOxSg1axwEPNmkKWYVm56y+emDpPPUL3cPzrLcgRWSd9gI7g==}
+ /@types/phoenix@1.6.4:
+ resolution: {integrity: sha512-B34A7uot1Cv0XtaHRYDATltAdKx0BvVKNgYNqE4WjtPUa4VQJM7kxeXcVKaH+KS+kCmZ+6w+QaUdcljiheiBJA==}
dev: false
- /@types/prop-types@15.7.8:
- resolution: {integrity: sha512-kMpQpfZKSCBqltAJwskgePRaYRFukDkm1oItcAbC3gNELR20XIBcN9VRgg4+m8DKsTfkWeA4m4Imp4DDuWy7FQ==}
+ /@types/prop-types@15.7.11:
+ resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==}
- /@types/react-dom@18.2.9:
- resolution: {integrity: sha512-6nNhVzZ9joQ6F7lozrASuQKC0Kf6ArYMU+DqA2ZrUbB+d+9lC6ZLn1GxiEBI1edmAwvTULtuJ6uPZpv3XudwUg==}
+ /@types/react-dom@18.2.17:
+ resolution: {integrity: sha512-rvrT/M7Df5eykWFxn6MYt5Pem/Dbyc1N8Y0S9Mrkw2WFCRiqUgw9P7ul2NpwsXCSM1DVdENzdG9J5SreqfAIWg==}
dependencies:
- '@types/react': 18.2.24
- dev: true
+ '@types/react': 18.2.45
- /@types/react@18.2.24:
- resolution: {integrity: sha512-Ee0Jt4sbJxMu1iDcetZEIKQr99J1Zfb6D4F3qfUWoR1JpInkY1Wdg4WwCyBjL257D0+jGqSl1twBjV8iCaC0Aw==}
+ /@types/react@18.2.45:
+ resolution: {integrity: sha512-TtAxCNrlrBp8GoeEp1npd5g+d/OejJHFxS3OWmrPBMFaVQMSN0OFySozJio5BHxTuTeug00AVXVAjfDSfk+lUg==}
dependencies:
- '@types/prop-types': 15.7.8
- '@types/scheduler': 0.16.4
- csstype: 3.1.2
+ '@types/prop-types': 15.7.11
+ '@types/scheduler': 0.16.8
+ csstype: 3.1.3
/@types/retry@0.12.0:
resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==}
dev: true
- /@types/scheduler@0.16.4:
- resolution: {integrity: sha512-2L9ifAGl7wmXwP4v3pN4p2FLhD0O1qsJpvKmNin5VA8+UvNVb447UDaAEV6UdrkA+m/Xs58U1RFps44x6TFsVQ==}
+ /@types/scheduler@0.16.8:
+ resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==}
- /@types/semver@7.5.3:
- resolution: {integrity: sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==}
+ /@types/semver@7.5.6:
+ resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==}
dev: true
- /@types/websocket@1.0.7:
- resolution: {integrity: sha512-62Omr8U0PO+hgjLCpPnMsmjh2/FRwIGOktZHyYAUzooEJotwkXHMp7vCacdYi8haxBNOiw9bc2HIHI+b/MPNjA==}
+ /@types/websocket@1.0.10:
+ resolution: {integrity: sha512-svjGZvPB7EzuYS94cI7a+qhwgGU1y89wUgjT6E2wVUfmAGIvRfT7obBvRtnhXCSsoMdlG4gBFGE7MfkIXZLoww==}
dependencies:
- '@types/node': 18.18.3
+ '@types/node': 18.19.3
dev: false
- /@typescript-eslint/eslint-plugin@6.7.4(@typescript-eslint/parser@6.7.4)(eslint@8.50.0)(typescript@5.2.2):
- resolution: {integrity: sha512-DAbgDXwtX+pDkAHwiGhqP3zWUGpW49B7eqmgpPtg+BKJXwdct79ut9+ifqOFPJGClGKSHXn2PTBatCnldJRUoA==}
+ /@typescript-eslint/eslint-plugin@6.14.0(@typescript-eslint/parser@6.14.0)(eslint@8.55.0)(typescript@5.3.3):
+ resolution: {integrity: sha512-1ZJBykBCXaSHG94vMMKmiHoL0MhNHKSVlcHVYZNw+BKxufhqQVTOawNpwwI1P5nIFZ/4jLVop0mcY6mJJDFNaw==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
'@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha
@@ -802,26 +1400,26 @@ packages:
typescript:
optional: true
dependencies:
- '@eslint-community/regexpp': 4.9.1
- '@typescript-eslint/parser': 6.7.4(eslint@8.50.0)(typescript@5.2.2)
- '@typescript-eslint/scope-manager': 6.7.4
- '@typescript-eslint/type-utils': 6.7.4(eslint@8.50.0)(typescript@5.2.2)
- '@typescript-eslint/utils': 6.7.4(eslint@8.50.0)(typescript@5.2.2)
- '@typescript-eslint/visitor-keys': 6.7.4
+ '@eslint-community/regexpp': 4.10.0
+ '@typescript-eslint/parser': 6.14.0(eslint@8.55.0)(typescript@5.3.3)
+ '@typescript-eslint/scope-manager': 6.14.0
+ '@typescript-eslint/type-utils': 6.14.0(eslint@8.55.0)(typescript@5.3.3)
+ '@typescript-eslint/utils': 6.14.0(eslint@8.55.0)(typescript@5.3.3)
+ '@typescript-eslint/visitor-keys': 6.14.0
debug: 4.3.4
- eslint: 8.50.0
+ eslint: 8.55.0
graphemer: 1.4.0
- ignore: 5.2.4
+ ignore: 5.3.0
natural-compare: 1.4.0
semver: 7.5.4
- ts-api-utils: 1.0.3(typescript@5.2.2)
- typescript: 5.2.2
+ ts-api-utils: 1.0.3(typescript@5.3.3)
+ typescript: 5.3.3
transitivePeerDependencies:
- supports-color
dev: true
- /@typescript-eslint/parser@6.7.4(eslint@8.50.0)(typescript@5.2.2):
- resolution: {integrity: sha512-I5zVZFY+cw4IMZUeNCU7Sh2PO5O57F7Lr0uyhgCJmhN/BuTlnc55KxPonR4+EM3GBdfiCyGZye6DgMjtubQkmA==}
+ /@typescript-eslint/parser@6.14.0(eslint@8.55.0)(typescript@5.3.3):
+ resolution: {integrity: sha512-QjToC14CKacd4Pa7JK4GeB/vHmWFJckec49FR4hmIRf97+KXole0T97xxu9IFiPxVQ1DBWrQ5wreLwAGwWAVQA==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
eslint: ^7.0.0 || ^8.0.0
@@ -830,27 +1428,27 @@ packages:
typescript:
optional: true
dependencies:
- '@typescript-eslint/scope-manager': 6.7.4
- '@typescript-eslint/types': 6.7.4
- '@typescript-eslint/typescript-estree': 6.7.4(typescript@5.2.2)
- '@typescript-eslint/visitor-keys': 6.7.4
+ '@typescript-eslint/scope-manager': 6.14.0
+ '@typescript-eslint/types': 6.14.0
+ '@typescript-eslint/typescript-estree': 6.14.0(typescript@5.3.3)
+ '@typescript-eslint/visitor-keys': 6.14.0
debug: 4.3.4
- eslint: 8.50.0
- typescript: 5.2.2
+ eslint: 8.55.0
+ typescript: 5.3.3
transitivePeerDependencies:
- supports-color
dev: true
- /@typescript-eslint/scope-manager@6.7.4:
- resolution: {integrity: sha512-SdGqSLUPTXAXi7c3Ob7peAGVnmMoGzZ361VswK2Mqf8UOYcODiYvs8rs5ILqEdfvX1lE7wEZbLyELCW+Yrql1A==}
+ /@typescript-eslint/scope-manager@6.14.0:
+ resolution: {integrity: sha512-VT7CFWHbZipPncAZtuALr9y3EuzY1b1t1AEkIq2bTXUPKw+pHoXflGNG5L+Gv6nKul1cz1VH8fz16IThIU0tdg==}
engines: {node: ^16.0.0 || >=18.0.0}
dependencies:
- '@typescript-eslint/types': 6.7.4
- '@typescript-eslint/visitor-keys': 6.7.4
+ '@typescript-eslint/types': 6.14.0
+ '@typescript-eslint/visitor-keys': 6.14.0
dev: true
- /@typescript-eslint/type-utils@6.7.4(eslint@8.50.0)(typescript@5.2.2):
- resolution: {integrity: sha512-n+g3zi1QzpcAdHFP9KQF+rEFxMb2KxtnJGID3teA/nxKHOVi3ylKovaqEzGBbVY2pBttU6z85gp0D00ufLzViQ==}
+ /@typescript-eslint/type-utils@6.14.0(eslint@8.55.0)(typescript@5.3.3):
+ resolution: {integrity: sha512-x6OC9Q7HfYKqjnuNu5a7kffIYs3No30isapRBJl1iCHLitD8O0lFbRcVGiOcuyN837fqXzPZ1NS10maQzZMKqw==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
eslint: ^7.0.0 || ^8.0.0
@@ -859,23 +1457,23 @@ packages:
typescript:
optional: true
dependencies:
- '@typescript-eslint/typescript-estree': 6.7.4(typescript@5.2.2)
- '@typescript-eslint/utils': 6.7.4(eslint@8.50.0)(typescript@5.2.2)
+ '@typescript-eslint/typescript-estree': 6.14.0(typescript@5.3.3)
+ '@typescript-eslint/utils': 6.14.0(eslint@8.55.0)(typescript@5.3.3)
debug: 4.3.4
- eslint: 8.50.0
- ts-api-utils: 1.0.3(typescript@5.2.2)
- typescript: 5.2.2
+ eslint: 8.55.0
+ ts-api-utils: 1.0.3(typescript@5.3.3)
+ typescript: 5.3.3
transitivePeerDependencies:
- supports-color
dev: true
- /@typescript-eslint/types@6.7.4:
- resolution: {integrity: sha512-o9XWK2FLW6eSS/0r/tgjAGsYasLAnOWg7hvZ/dGYSSNjCh+49k5ocPN8OmG5aZcSJ8pclSOyVKP2x03Sj+RrCA==}
+ /@typescript-eslint/types@6.14.0:
+ resolution: {integrity: sha512-uty9H2K4Xs8E47z3SnXEPRNDfsis8JO27amp2GNCnzGETEW3yTqEIVg5+AI7U276oGF/tw6ZA+UesxeQ104ceA==}
engines: {node: ^16.0.0 || >=18.0.0}
dev: true
- /@typescript-eslint/typescript-estree@6.7.4(typescript@5.2.2):
- resolution: {integrity: sha512-ty8b5qHKatlNYd9vmpHooQz3Vki3gG+3PchmtsA4TgrZBKWHNjWfkQid7K7xQogBqqc7/BhGazxMD5vr6Ha+iQ==}
+ /@typescript-eslint/typescript-estree@6.14.0(typescript@5.3.3):
+ resolution: {integrity: sha512-yPkaLwK0yH2mZKFE/bXkPAkkFgOv15GJAUzgUVonAbv0Hr4PK/N2yaA/4XQbTZQdygiDkpt5DkxPELqHguNvyw==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
typescript: '*'
@@ -883,59 +1481,72 @@ packages:
typescript:
optional: true
dependencies:
- '@typescript-eslint/types': 6.7.4
- '@typescript-eslint/visitor-keys': 6.7.4
+ '@typescript-eslint/types': 6.14.0
+ '@typescript-eslint/visitor-keys': 6.14.0
debug: 4.3.4
globby: 11.1.0
is-glob: 4.0.3
semver: 7.5.4
- ts-api-utils: 1.0.3(typescript@5.2.2)
- typescript: 5.2.2
+ ts-api-utils: 1.0.3(typescript@5.3.3)
+ typescript: 5.3.3
transitivePeerDependencies:
- supports-color
dev: true
- /@typescript-eslint/utils@6.7.4(eslint@8.50.0)(typescript@5.2.2):
- resolution: {integrity: sha512-PRQAs+HUn85Qdk+khAxsVV+oULy3VkbH3hQ8hxLRJXWBEd7iI+GbQxH5SEUSH7kbEoTp6oT1bOwyga24ELALTA==}
+ /@typescript-eslint/utils@6.14.0(eslint@8.55.0)(typescript@5.3.3):
+ resolution: {integrity: sha512-XwRTnbvRr7Ey9a1NT6jqdKX8y/atWG+8fAIu3z73HSP8h06i3r/ClMhmaF/RGWGW1tHJEwij1uEg2GbEmPYvYg==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
eslint: ^7.0.0 || ^8.0.0
dependencies:
- '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0)
- '@types/json-schema': 7.0.13
- '@types/semver': 7.5.3
- '@typescript-eslint/scope-manager': 6.7.4
- '@typescript-eslint/types': 6.7.4
- '@typescript-eslint/typescript-estree': 6.7.4(typescript@5.2.2)
- eslint: 8.50.0
+ '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0)
+ '@types/json-schema': 7.0.15
+ '@types/semver': 7.5.6
+ '@typescript-eslint/scope-manager': 6.14.0
+ '@typescript-eslint/types': 6.14.0
+ '@typescript-eslint/typescript-estree': 6.14.0(typescript@5.3.3)
+ eslint: 8.55.0
semver: 7.5.4
transitivePeerDependencies:
- supports-color
- typescript
dev: true
- /@typescript-eslint/visitor-keys@6.7.4:
- resolution: {integrity: sha512-pOW37DUhlTZbvph50x5zZCkFn3xzwkGtNoJHzIM3svpiSkJzwOYr/kVBaXmf+RAQiUDs1AHEZVNPg6UJCJpwRA==}
+ /@typescript-eslint/visitor-keys@6.14.0:
+ resolution: {integrity: sha512-fB5cw6GRhJUz03MrROVuj5Zm/Q+XWlVdIsFj+Zb1Hvqouc8t+XP2H5y53QYU/MGtd2dPg6/vJJlhoX3xc2ehfw==}
engines: {node: ^16.0.0 || >=18.0.0}
dependencies:
- '@typescript-eslint/types': 6.7.4
+ '@typescript-eslint/types': 6.14.0
eslint-visitor-keys: 3.4.3
dev: true
- /@vercel/analytics@1.0.2:
- resolution: {integrity: sha512-BZFxVrv24VbNNl5xMxqUojQIegEeXMI6rX3rg1uVLYUEXsuKNBSAEQf4BWEcjQDp/8aYJOj6m8V4PUA3x/cxgg==}
+ /@ungap/structured-clone@1.2.0:
+ resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
+ dev: true
+
+ /@vercel/analytics@1.1.1:
+ resolution: {integrity: sha512-+NqgNmSabg3IFfxYhrWCfB/H+RCUOCR5ExRudNG2+pcRehq628DJB5e1u1xqwpLtn4pAYii4D98w7kofORAGQA==}
+ dependencies:
+ server-only: 0.0.1
+ dev: false
+
+ /accept-language@3.0.18:
+ resolution: {integrity: sha512-sUofgqBPzgfcF20sPoBYGQ1IhQLt2LSkxTnlQSuLF3n5gPEqd5AimbvOvHEi0T1kLMiGVqPWzI5a9OteBRth3A==}
+ dependencies:
+ bcp47: 1.1.2
+ stable: 0.1.8
dev: false
- /acorn-jsx@5.3.2(acorn@8.10.0):
+ /acorn-jsx@5.3.2(acorn@8.11.2):
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
peerDependencies:
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
dependencies:
- acorn: 8.10.0
+ acorn: 8.11.2
dev: true
- /acorn@8.10.0:
- resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==}
+ /acorn@8.11.2:
+ resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==}
engines: {node: '>=0.4.0'}
hasBin: true
dev: true
@@ -1039,7 +1650,7 @@ packages:
engines: {node: '>= 10'}
dependencies:
archiver-utils: 2.1.0
- async: 3.2.4
+ async: 3.2.5
buffer-crc32: 0.2.13
readable-stream: 3.6.2
readdir-glob: 1.1.3
@@ -1054,6 +1665,13 @@ packages:
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
dev: true
+ /aria-hidden@1.2.3:
+ resolution: {integrity: sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==}
+ engines: {node: '>=10'}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
/aria-query@5.3.0:
resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==}
dependencies:
@@ -1063,7 +1681,7 @@ packages:
/array-buffer-byte-length@1.0.0:
resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==}
dependencies:
- call-bind: 1.0.2
+ call-bind: 1.0.5
is-array-buffer: 3.0.2
dev: true
@@ -1071,10 +1689,10 @@ packages:
resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==}
engines: {node: '>= 0.4'}
dependencies:
- call-bind: 1.0.2
+ call-bind: 1.0.5
define-properties: 1.2.1
- es-abstract: 1.22.2
- get-intrinsic: 1.2.1
+ es-abstract: 1.22.3
+ get-intrinsic: 1.2.2
is-string: 1.0.7
dev: true
@@ -1087,41 +1705,41 @@ packages:
resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==}
engines: {node: '>= 0.4'}
dependencies:
- call-bind: 1.0.2
+ call-bind: 1.0.5
define-properties: 1.2.1
- es-abstract: 1.22.2
- es-shim-unscopables: 1.0.0
- get-intrinsic: 1.2.1
+ es-abstract: 1.22.3
+ es-shim-unscopables: 1.0.2
+ get-intrinsic: 1.2.2
dev: true
/array.prototype.flat@1.3.2:
resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==}
engines: {node: '>= 0.4'}
dependencies:
- call-bind: 1.0.2
+ call-bind: 1.0.5
define-properties: 1.2.1
- es-abstract: 1.22.2
- es-shim-unscopables: 1.0.0
+ es-abstract: 1.22.3
+ es-shim-unscopables: 1.0.2
dev: true
/array.prototype.flatmap@1.3.2:
resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==}
engines: {node: '>= 0.4'}
dependencies:
- call-bind: 1.0.2
+ call-bind: 1.0.5
define-properties: 1.2.1
- es-abstract: 1.22.2
- es-shim-unscopables: 1.0.0
+ es-abstract: 1.22.3
+ es-shim-unscopables: 1.0.2
dev: true
/array.prototype.tosorted@1.1.2:
resolution: {integrity: sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==}
dependencies:
- call-bind: 1.0.2
+ call-bind: 1.0.5
define-properties: 1.2.1
- es-abstract: 1.22.2
- es-shim-unscopables: 1.0.0
- get-intrinsic: 1.2.1
+ es-abstract: 1.22.3
+ es-shim-unscopables: 1.0.2
+ get-intrinsic: 1.2.2
dev: true
/arraybuffer.prototype.slice@1.0.2:
@@ -1129,16 +1747,16 @@ packages:
engines: {node: '>= 0.4'}
dependencies:
array-buffer-byte-length: 1.0.0
- call-bind: 1.0.2
+ call-bind: 1.0.5
define-properties: 1.2.1
- es-abstract: 1.22.2
- get-intrinsic: 1.2.1
+ es-abstract: 1.22.3
+ get-intrinsic: 1.2.2
is-array-buffer: 3.0.2
is-shared-array-buffer: 1.0.2
dev: true
- /ast-types-flow@0.0.7:
- resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==}
+ /ast-types-flow@0.0.8:
+ resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==}
dev: true
/astral-regex@2.0.0:
@@ -1146,8 +1764,8 @@ packages:
engines: {node: '>=8'}
dev: true
- /async@3.2.4:
- resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==}
+ /async@3.2.5:
+ resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==}
dev: true
/asynciterator.prototype@1.0.0:
@@ -1156,19 +1774,19 @@ packages:
has-symbols: 1.0.3
dev: true
- /autoprefixer@10.4.16(postcss@8.4.31):
+ /autoprefixer@10.4.16(postcss@8.4.32):
resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==}
engines: {node: ^10 || ^12 || >=14}
hasBin: true
peerDependencies:
postcss: ^8.1.0
dependencies:
- browserslist: 4.22.1
- caniuse-lite: 1.0.30001543
- fraction.js: 4.3.6
+ browserslist: 4.22.2
+ caniuse-lite: 1.0.30001570
+ fraction.js: 4.3.7
normalize-range: 0.1.2
picocolors: 1.0.0
- postcss: 8.4.31
+ postcss: 8.4.32
postcss-value-parser: 4.2.0
dev: true
@@ -1177,8 +1795,8 @@ packages:
engines: {node: '>= 0.4'}
dev: true
- /axe-core@4.8.2:
- resolution: {integrity: sha512-/dlp0fxyM3R8YW7MFzaHWXrf4zzbr0vaYb23VBFCl83R7nWNPg/yaQw2Dc8jzCMmDVLhSdzH8MjrsuIUuvX+6g==}
+ /axe-core@4.7.0:
+ resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==}
engines: {node: '>=4'}
dev: true
@@ -1195,6 +1813,11 @@ packages:
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
dev: true
+ /bcp47@1.1.2:
+ resolution: {integrity: sha512-JnkkL4GUpOvvanH9AZPX38CxhiLsXMBicBY2IAtqiVN8YulGDQybUydWA4W6yAMtw6iShtw+8HEF6cfrTHU+UQ==}
+ engines: {node: '>=0.10'}
+ dev: false
+
/binary-extensions@2.2.0:
resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
engines: {node: '>=8'}
@@ -1225,15 +1848,15 @@ packages:
dependencies:
fill-range: 7.0.1
- /browserslist@4.22.1:
- resolution: {integrity: sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==}
+ /browserslist@4.22.2:
+ resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==}
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
dependencies:
- caniuse-lite: 1.0.30001543
- electron-to-chromium: 1.4.540
- node-releases: 2.0.13
- update-browserslist-db: 1.0.13(browserslist@4.22.1)
+ caniuse-lite: 1.0.30001570
+ electron-to-chromium: 1.4.613
+ node-releases: 2.0.14
+ update-browserslist-db: 1.0.13(browserslist@4.22.2)
dev: true
/buffer-crc32@0.2.13:
@@ -1247,14 +1870,6 @@ packages:
ieee754: 1.2.1
dev: true
- /bufferutil@4.0.7:
- resolution: {integrity: sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==}
- engines: {node: '>=6.14.2'}
- requiresBuild: true
- dependencies:
- node-gyp-build: 4.6.1
- dev: false
-
/busboy@1.6.0:
resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==}
engines: {node: '>=10.16.0'}
@@ -1262,11 +1877,12 @@ packages:
streamsearch: 1.1.0
dev: false
- /call-bind@1.0.2:
- resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==}
+ /call-bind@1.0.5:
+ resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==}
dependencies:
- function-bind: 1.1.1
- get-intrinsic: 1.2.1
+ function-bind: 1.1.2
+ get-intrinsic: 1.2.2
+ set-function-length: 1.1.1
dev: true
/callsites@3.1.0:
@@ -1285,8 +1901,8 @@ packages:
resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
engines: {node: '>= 6'}
- /caniuse-lite@1.0.30001543:
- resolution: {integrity: sha512-qxdO8KPWPQ+Zk6bvNpPeQIOH47qZSYdFZd6dXQzb2KzhnSXju4Kd7H1PkSJx6NICSMgo/IhRZRhhfPTHYpJUCA==}
+ /caniuse-lite@1.0.30001570:
+ resolution: {integrity: sha512-+3e0ASu4sw1SWaoCtvPeyXp+5PsjigkSt8OXZbF9StH5pQWbxEjLAZE3n8Aup5udop1uRiKA7a4utUk/uoSpUw==}
/capital-case@1.0.4:
resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==}
@@ -1450,7 +2066,7 @@ packages:
resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==}
engines: {node: '>=12.13'}
dependencies:
- is-what: 4.1.15
+ is-what: 4.1.16
dev: false
/core-util-is@1.0.3:
@@ -1490,31 +2106,13 @@ packages:
engines: {node: '>=4'}
hasBin: true
- /csstype@3.1.2:
- resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==}
-
- /d@1.0.1:
- resolution: {integrity: sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==}
- dependencies:
- es5-ext: 0.10.62
- type: 1.2.0
- dev: false
+ /csstype@3.1.3:
+ resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
/damerau-levenshtein@1.0.8:
resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==}
dev: true
- /debug@2.6.9:
- resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
- peerDependencies:
- supports-color: '*'
- peerDependenciesMeta:
- supports-color:
- optional: true
- dependencies:
- ms: 2.0.0
- dev: false
-
/debug@3.2.7:
resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
peerDependencies:
@@ -1542,21 +2140,21 @@ packages:
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
dev: true
- /define-data-property@1.1.0:
- resolution: {integrity: sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==}
+ /define-data-property@1.1.1:
+ resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==}
engines: {node: '>= 0.4'}
dependencies:
- get-intrinsic: 1.2.1
+ get-intrinsic: 1.2.2
gopd: 1.0.1
- has-property-descriptors: 1.0.0
+ has-property-descriptors: 1.0.1
dev: true
/define-properties@1.2.1:
resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
engines: {node: '>= 0.4'}
dependencies:
- define-data-property: 1.1.0
- has-property-descriptors: 1.0.0
+ define-data-property: 1.1.1
+ has-property-descriptors: 1.0.1
object-keys: 1.1.1
dev: true
@@ -1579,6 +2177,10 @@ packages:
engines: {node: '>=6'}
dev: true
+ /detect-node-es@1.1.0:
+ resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==}
+ dev: false
+
/didyoumean@1.2.2:
resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
@@ -1618,8 +2220,8 @@ packages:
engines: {node: '>=12'}
dev: true
- /electron-to-chromium@1.4.540:
- resolution: {integrity: sha512-aoCqgU6r9+o9/S7wkcSbmPRFi7OWZWiXS9rtjEd+Ouyu/Xyw5RSq2XN8s5Qp8IaFOLiRrhQCphCIjAxgG3eCAg==}
+ /electron-to-chromium@1.4.613:
+ resolution: {integrity: sha512-r4x5+FowKG6q+/Wj0W9nidx7QO31BJwmR2uEo+Qh3YLGQ8SbBAFuDFpTxzly/I2gsbrFwBuIjrMp423L3O5U3w==}
dev: true
/emoji-regex@8.0.0:
@@ -1655,26 +2257,26 @@ packages:
is-arrayish: 0.2.1
dev: true
- /es-abstract@1.22.2:
- resolution: {integrity: sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==}
+ /es-abstract@1.22.3:
+ 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
- call-bind: 1.0.2
- es-set-tostringtag: 2.0.1
+ call-bind: 1.0.5
+ es-set-tostringtag: 2.0.2
es-to-primitive: 1.2.1
function.prototype.name: 1.1.6
- get-intrinsic: 1.2.1
+ get-intrinsic: 1.2.2
get-symbol-description: 1.0.0
globalthis: 1.0.3
gopd: 1.0.1
- has: 1.0.4
- has-property-descriptors: 1.0.0
+ has-property-descriptors: 1.0.1
has-proto: 1.0.1
has-symbols: 1.0.3
- internal-slot: 1.0.5
+ hasown: 2.0.0
+ internal-slot: 1.0.6
is-array-buffer: 3.0.2
is-callable: 1.2.7
is-negative-zero: 2.0.2
@@ -1683,9 +2285,9 @@ packages:
is-string: 1.0.7
is-typed-array: 1.1.12
is-weakref: 1.0.2
- object-inspect: 1.12.3
+ object-inspect: 1.13.1
object-keys: 1.1.1
- object.assign: 4.1.4
+ object.assign: 4.1.5
regexp.prototype.flags: 1.5.1
safe-array-concat: 1.0.1
safe-regex-test: 1.0.0
@@ -1697,41 +2299,41 @@ packages:
typed-array-byte-offset: 1.0.0
typed-array-length: 1.0.4
unbox-primitive: 1.0.2
- which-typed-array: 1.1.11
+ which-typed-array: 1.1.13
dev: true
/es-iterator-helpers@1.0.15:
resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==}
dependencies:
asynciterator.prototype: 1.0.0
- call-bind: 1.0.2
+ call-bind: 1.0.5
define-properties: 1.2.1
- es-abstract: 1.22.2
- es-set-tostringtag: 2.0.1
- function-bind: 1.1.1
- get-intrinsic: 1.2.1
+ es-abstract: 1.22.3
+ es-set-tostringtag: 2.0.2
+ function-bind: 1.1.2
+ get-intrinsic: 1.2.2
globalthis: 1.0.3
- has-property-descriptors: 1.0.0
+ has-property-descriptors: 1.0.1
has-proto: 1.0.1
has-symbols: 1.0.3
- internal-slot: 1.0.5
+ internal-slot: 1.0.6
iterator.prototype: 1.1.2
safe-array-concat: 1.0.1
dev: true
- /es-set-tostringtag@2.0.1:
- resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==}
+ /es-set-tostringtag@2.0.2:
+ resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==}
engines: {node: '>= 0.4'}
dependencies:
- get-intrinsic: 1.2.1
- has: 1.0.4
+ get-intrinsic: 1.2.2
has-tostringtag: 1.0.0
+ hasown: 2.0.0
dev: true
- /es-shim-unscopables@1.0.0:
- resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==}
+ /es-shim-unscopables@1.0.2:
+ resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==}
dependencies:
- has: 1.0.4
+ hasown: 2.0.0
dev: true
/es-to-primitive@1.2.1:
@@ -1743,31 +2345,6 @@ packages:
is-symbol: 1.0.4
dev: true
- /es5-ext@0.10.62:
- resolution: {integrity: sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==}
- engines: {node: '>=0.10'}
- requiresBuild: true
- dependencies:
- es6-iterator: 2.0.3
- es6-symbol: 3.1.3
- next-tick: 1.1.0
- dev: false
-
- /es6-iterator@2.0.3:
- resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==}
- dependencies:
- d: 1.0.1
- es5-ext: 0.10.62
- es6-symbol: 3.1.3
- dev: false
-
- /es6-symbol@3.1.3:
- resolution: {integrity: sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==}
- dependencies:
- d: 1.0.1
- ext: 1.7.0
- dev: false
-
/escalade@3.1.1:
resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
engines: {node: '>=6'}
@@ -1783,8 +2360,8 @@ packages:
engines: {node: '>=10'}
dev: true
- /eslint-config-next@13.5.4(eslint@8.50.0)(typescript@5.2.2):
- resolution: {integrity: sha512-FzQGIj4UEszRX7fcRSJK6L1LrDiVZvDFW320VVntVKh3BSU8Fb9kpaoxQx0cdFgf3MQXdeSbrCXJ/5Z/NndDkQ==}
+ /eslint-config-next@13.5.6(eslint@8.55.0)(typescript@5.3.3):
+ resolution: {integrity: sha512-o8pQsUHTo9aHqJ2YiZDym5gQAMRf7O2HndHo/JZeY7TDD+W4hk6Ma8Vw54RHiBeb7OWWO5dPirQB+Is/aVQ7Kg==}
peerDependencies:
eslint: ^7.23.0 || ^8.0.0
typescript: '>=3.3.1'
@@ -1792,17 +2369,17 @@ packages:
typescript:
optional: true
dependencies:
- '@next/eslint-plugin-next': 13.5.4
- '@rushstack/eslint-patch': 1.5.1
- '@typescript-eslint/parser': 6.7.4(eslint@8.50.0)(typescript@5.2.2)
- eslint: 8.50.0
+ '@next/eslint-plugin-next': 13.5.6
+ '@rushstack/eslint-patch': 1.6.0
+ '@typescript-eslint/parser': 6.14.0(eslint@8.55.0)(typescript@5.3.3)
+ eslint: 8.55.0
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.7.4)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.50.0)
- eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.7.4)(eslint-import-resolver-typescript@3.6.1)(eslint@8.50.0)
- eslint-plugin-jsx-a11y: 6.7.1(eslint@8.50.0)
- eslint-plugin-react: 7.33.2(eslint@8.50.0)
- eslint-plugin-react-hooks: 4.6.0(eslint@8.50.0)
- typescript: 5.2.2
+ eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.14.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.55.0)
+ eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.14.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.55.0)
+ eslint-plugin-jsx-a11y: 6.8.0(eslint@8.55.0)
+ eslint-plugin-react: 7.33.2(eslint@8.55.0)
+ eslint-plugin-react-hooks: 4.6.0(eslint@8.55.0)
+ typescript: 5.3.3
transitivePeerDependencies:
- eslint-import-resolver-webpack
- supports-color
@@ -1812,13 +2389,13 @@ packages:
resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==}
dependencies:
debug: 3.2.7
- is-core-module: 2.13.0
- resolve: 1.22.6
+ is-core-module: 2.13.1
+ resolve: 1.22.8
transitivePeerDependencies:
- supports-color
dev: true
- /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.7.4)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.50.0):
+ /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.14.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.55.0):
resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==}
engines: {node: ^14.18.0 || >=16.0.0}
peerDependencies:
@@ -1827,12 +2404,12 @@ packages:
dependencies:
debug: 4.3.4
enhanced-resolve: 5.15.0
- eslint: 8.50.0
- eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.7.4)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.50.0)
- eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.7.4)(eslint-import-resolver-typescript@3.6.1)(eslint@8.50.0)
- fast-glob: 3.3.1
+ eslint: 8.55.0
+ eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.14.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.55.0)
+ eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.14.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.55.0)
+ fast-glob: 3.3.2
get-tsconfig: 4.7.2
- is-core-module: 2.13.0
+ is-core-module: 2.13.1
is-glob: 4.0.3
transitivePeerDependencies:
- '@typescript-eslint/parser'
@@ -1841,7 +2418,7 @@ packages:
- supports-color
dev: true
- /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.7.4)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.50.0):
+ /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.14.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.55.0):
resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==}
engines: {node: '>=4'}
peerDependencies:
@@ -1862,17 +2439,17 @@ packages:
eslint-import-resolver-webpack:
optional: true
dependencies:
- '@typescript-eslint/parser': 6.7.4(eslint@8.50.0)(typescript@5.2.2)
+ '@typescript-eslint/parser': 6.14.0(eslint@8.55.0)(typescript@5.3.3)
debug: 3.2.7
- eslint: 8.50.0
+ eslint: 8.55.0
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.7.4)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.50.0)
+ eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.14.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.55.0)
transitivePeerDependencies:
- supports-color
dev: true
- /eslint-plugin-import@2.28.1(@typescript-eslint/parser@6.7.4)(eslint-import-resolver-typescript@3.6.1)(eslint@8.50.0):
- resolution: {integrity: sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==}
+ /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.14.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.55.0):
+ resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==}
engines: {node: '>=4'}
peerDependencies:
'@typescript-eslint/parser': '*'
@@ -1881,66 +2458,66 @@ packages:
'@typescript-eslint/parser':
optional: true
dependencies:
- '@typescript-eslint/parser': 6.7.4(eslint@8.50.0)(typescript@5.2.2)
+ '@typescript-eslint/parser': 6.14.0(eslint@8.55.0)(typescript@5.3.3)
array-includes: 3.1.7
array.prototype.findlastindex: 1.2.3
array.prototype.flat: 1.3.2
array.prototype.flatmap: 1.3.2
debug: 3.2.7
doctrine: 2.1.0
- eslint: 8.50.0
+ eslint: 8.55.0
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.7.4)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.50.0)
- has: 1.0.4
- is-core-module: 2.13.0
+ eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.14.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.55.0)
+ hasown: 2.0.0
+ is-core-module: 2.13.1
is-glob: 4.0.3
minimatch: 3.1.2
object.fromentries: 2.0.7
object.groupby: 1.0.1
object.values: 1.1.7
semver: 6.3.1
- tsconfig-paths: 3.14.2
+ tsconfig-paths: 3.15.0
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
- supports-color
dev: true
- /eslint-plugin-jsx-a11y@6.7.1(eslint@8.50.0):
- resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==}
+ /eslint-plugin-jsx-a11y@6.8.0(eslint@8.55.0):
+ resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==}
engines: {node: '>=4.0'}
peerDependencies:
eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8
dependencies:
- '@babel/runtime': 7.23.1
+ '@babel/runtime': 7.23.6
aria-query: 5.3.0
array-includes: 3.1.7
array.prototype.flatmap: 1.3.2
- ast-types-flow: 0.0.7
- axe-core: 4.8.2
+ ast-types-flow: 0.0.8
+ axe-core: 4.7.0
axobject-query: 3.2.1
damerau-levenshtein: 1.0.8
emoji-regex: 9.2.2
- eslint: 8.50.0
- has: 1.0.4
+ es-iterator-helpers: 1.0.15
+ eslint: 8.55.0
+ hasown: 2.0.0
jsx-ast-utils: 3.3.5
- language-tags: 1.0.5
+ language-tags: 1.0.9
minimatch: 3.1.2
object.entries: 1.1.7
object.fromentries: 2.0.7
- semver: 6.3.1
dev: true
- /eslint-plugin-react-hooks@4.6.0(eslint@8.50.0):
+ /eslint-plugin-react-hooks@4.6.0(eslint@8.55.0):
resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==}
engines: {node: '>=10'}
peerDependencies:
eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0
dependencies:
- eslint: 8.50.0
+ eslint: 8.55.0
dev: true
- /eslint-plugin-react@7.33.2(eslint@8.50.0):
+ /eslint-plugin-react@7.33.2(eslint@8.55.0):
resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==}
engines: {node: '>=4'}
peerDependencies:
@@ -1951,7 +2528,7 @@ packages:
array.prototype.tosorted: 1.1.2
doctrine: 2.1.0
es-iterator-helpers: 1.0.15
- eslint: 8.50.0
+ eslint: 8.55.0
estraverse: 5.3.0
jsx-ast-utils: 3.3.5
minimatch: 3.1.2
@@ -1960,11 +2537,31 @@ packages:
object.hasown: 1.1.3
object.values: 1.1.7
prop-types: 15.8.1
- resolve: 2.0.0-next.4
+ resolve: 2.0.0-next.5
semver: 6.3.1
string.prototype.matchall: 4.0.10
dev: true
+ /eslint-plugin-unused-imports@3.0.0(@typescript-eslint/eslint-plugin@6.14.0)(eslint@8.55.0):
+ resolution: {integrity: sha512-sduiswLJfZHeeBJ+MQaG+xYzSWdRXoSw61DpU13mzWumCkR0ufD0HmO4kdNokjrkluMHpj/7PJeN35pgbhW3kw==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ '@typescript-eslint/eslint-plugin': ^6.0.0
+ eslint: ^8.0.0
+ peerDependenciesMeta:
+ '@typescript-eslint/eslint-plugin':
+ optional: true
+ dependencies:
+ '@typescript-eslint/eslint-plugin': 6.14.0(@typescript-eslint/parser@6.14.0)(eslint@8.55.0)(typescript@5.3.3)
+ eslint: 8.55.0
+ eslint-rule-composer: 0.3.0
+ dev: true
+
+ /eslint-rule-composer@0.3.0:
+ resolution: {integrity: sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==}
+ engines: {node: '>=4.0.0'}
+ dev: true
+
/eslint-scope@7.2.2:
resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -1978,18 +2575,19 @@ packages:
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true
- /eslint@8.50.0:
- resolution: {integrity: sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg==}
+ /eslint@8.55.0:
+ resolution: {integrity: sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
hasBin: true
dependencies:
- '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0)
- '@eslint-community/regexpp': 4.9.1
- '@eslint/eslintrc': 2.1.2
- '@eslint/js': 8.50.0
- '@humanwhocodes/config-array': 0.11.11
+ '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0)
+ '@eslint-community/regexpp': 4.10.0
+ '@eslint/eslintrc': 2.1.4
+ '@eslint/js': 8.55.0
+ '@humanwhocodes/config-array': 0.11.13
'@humanwhocodes/module-importer': 1.0.1
'@nodelib/fs.walk': 1.2.8
+ '@ungap/structured-clone': 1.2.0
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.3
@@ -2005,9 +2603,9 @@ packages:
file-entry-cache: 6.0.1
find-up: 5.0.0
glob-parent: 6.0.2
- globals: 13.22.0
+ globals: 13.24.0
graphemer: 1.4.0
- ignore: 5.2.4
+ ignore: 5.3.0
imurmurhash: 0.1.4
is-glob: 4.0.3
is-path-inside: 3.0.3
@@ -2028,8 +2626,8 @@ packages:
resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies:
- acorn: 8.10.0
- acorn-jsx: 5.3.2(acorn@8.10.0)
+ acorn: 8.11.2
+ acorn-jsx: 5.3.2(acorn@8.11.2)
eslint-visitor-keys: 3.4.3
dev: true
@@ -2072,18 +2670,12 @@ packages:
strip-final-newline: 2.0.0
dev: true
- /ext@1.7.0:
- resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==}
- dependencies:
- type: 2.7.2
- dev: false
-
/fast-deep-equal@3.1.3:
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
dev: true
- /fast-glob@3.3.1:
- resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==}
+ /fast-glob@3.3.2:
+ resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
engines: {node: '>=8.6.0'}
dependencies:
'@nodelib/fs.stat': 2.0.5
@@ -2113,7 +2705,7 @@ packages:
resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
engines: {node: ^10.12.0 || >=12.0.0}
dependencies:
- flat-cache: 3.1.0
+ flat-cache: 3.2.0
dev: true
/fill-range@7.0.1:
@@ -2147,12 +2739,12 @@ packages:
path-exists: 4.0.0
dev: true
- /flat-cache@3.1.0:
- resolution: {integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==}
- engines: {node: '>=12.0.0'}
+ /flat-cache@3.2.0:
+ resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==}
+ engines: {node: ^10.12.0 || >=12.0.0}
dependencies:
flatted: 3.2.9
- keyv: 4.5.3
+ keyv: 4.5.4
rimraf: 3.0.2
dev: true
@@ -2170,8 +2762,8 @@ packages:
resolution: {integrity: sha512-bLq+KgbiXdTEoT1zcARrWEpa5z6A/8b7PcDW7Gef3NSisQ+VS7ll2Xbf1E+xsgik0rWub/8u0qP/iTTjj+PhxQ==}
dev: true
- /fraction.js@4.3.6:
- resolution: {integrity: sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg==}
+ /fraction.js@4.3.7:
+ resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==}
dev: true
/fs-constants@1.0.0:
@@ -2184,7 +2776,7 @@ packages:
dependencies:
graceful-fs: 4.2.11
jsonfile: 6.1.0
- universalify: 2.0.0
+ universalify: 2.0.1
dev: true
/fs-jetpack@5.1.0:
@@ -2203,17 +2795,16 @@ packages:
requiresBuild: true
optional: true
- /function-bind@1.1.1:
- resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
- dev: true
+ /function-bind@1.1.2:
+ resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
/function.prototype.name@1.1.6:
resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==}
engines: {node: '>= 0.4'}
dependencies:
- call-bind: 1.0.2
+ call-bind: 1.0.5
define-properties: 1.2.1
- es-abstract: 1.22.2
+ es-abstract: 1.22.3
functions-have-names: 1.2.3
dev: true
@@ -2221,15 +2812,20 @@ packages:
resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
dev: true
- /get-intrinsic@1.2.1:
- resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==}
+ /get-intrinsic@1.2.2:
+ resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==}
dependencies:
- function-bind: 1.1.1
- has: 1.0.4
+ function-bind: 1.1.2
has-proto: 1.0.1
has-symbols: 1.0.3
+ hasown: 2.0.0
dev: true
+ /get-nonce@1.0.1:
+ resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==}
+ engines: {node: '>=6'}
+ dev: false
+
/get-stream@6.0.1:
resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
engines: {node: '>=10'}
@@ -2239,8 +2835,8 @@ packages:
resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==}
engines: {node: '>= 0.4'}
dependencies:
- call-bind: 1.0.2
- get-intrinsic: 1.2.1
+ call-bind: 1.0.5
+ get-intrinsic: 1.2.2
dev: true
/get-tsconfig@4.7.2:
@@ -2315,8 +2911,8 @@ packages:
ini: 2.0.0
dev: true
- /globals@13.22.0:
- resolution: {integrity: sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==}
+ /globals@13.24.0:
+ resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
engines: {node: '>=8'}
dependencies:
type-fest: 0.20.2
@@ -2335,8 +2931,8 @@ packages:
dependencies:
array-union: 2.1.0
dir-glob: 3.0.1
- fast-glob: 3.3.1
- ignore: 5.2.4
+ fast-glob: 3.3.2
+ ignore: 5.3.0
merge2: 1.4.1
slash: 3.0.0
dev: true
@@ -2344,7 +2940,7 @@ packages:
/gopd@1.0.1:
resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
dependencies:
- get-intrinsic: 1.2.1
+ get-intrinsic: 1.2.2
dev: true
/graceful-fs@4.2.11:
@@ -2368,10 +2964,10 @@ packages:
engines: {node: '>=8'}
dev: true
- /has-property-descriptors@1.0.0:
- resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==}
+ /has-property-descriptors@1.0.1:
+ resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==}
dependencies:
- get-intrinsic: 1.2.1
+ get-intrinsic: 1.2.2
dev: true
/has-proto@1.0.1:
@@ -2391,10 +2987,6 @@ packages:
has-symbols: 1.0.3
dev: true
- /has@1.0.4:
- resolution: {integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==}
- engines: {node: '>= 0.4.0'}
-
/hasha@5.2.2:
resolution: {integrity: sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==}
engines: {node: '>=8'}
@@ -2403,6 +2995,12 @@ packages:
type-fest: 0.8.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
+
/header-case@2.0.4:
resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==}
dependencies:
@@ -2450,8 +3048,8 @@ packages:
minimatch: 5.1.6
dev: true
- /ignore@5.2.4:
- resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==}
+ /ignore@5.3.0:
+ resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==}
engines: {node: '>= 4'}
dev: true
@@ -2487,20 +3085,26 @@ packages:
engines: {node: '>=10'}
dev: true
- /internal-slot@1.0.5:
- resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==}
+ /internal-slot@1.0.6:
+ resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==}
engines: {node: '>= 0.4'}
dependencies:
- get-intrinsic: 1.2.1
- has: 1.0.4
+ get-intrinsic: 1.2.2
+ hasown: 2.0.0
side-channel: 1.0.4
dev: true
+ /invariant@2.2.4:
+ resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==}
+ dependencies:
+ loose-envify: 1.4.0
+ dev: false
+
/is-array-buffer@3.0.2:
resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==}
dependencies:
- call-bind: 1.0.2
- get-intrinsic: 1.2.1
+ call-bind: 1.0.5
+ get-intrinsic: 1.2.2
is-typed-array: 1.1.12
dev: true
@@ -2531,7 +3135,7 @@ packages:
resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==}
engines: {node: '>= 0.4'}
dependencies:
- call-bind: 1.0.2
+ call-bind: 1.0.5
has-tostringtag: 1.0.0
dev: true
@@ -2540,10 +3144,10 @@ packages:
engines: {node: '>= 0.4'}
dev: true
- /is-core-module@2.13.0:
- resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==}
+ /is-core-module@2.13.1:
+ resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==}
dependencies:
- has: 1.0.4
+ hasown: 2.0.0
/is-date-object@1.0.5:
resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
@@ -2565,7 +3169,7 @@ packages:
/is-finalizationregistry@1.0.2:
resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==}
dependencies:
- call-bind: 1.0.2
+ call-bind: 1.0.5
dev: true
/is-fullwidth-code-point@3.0.0:
@@ -2620,7 +3224,7 @@ packages:
resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
engines: {node: '>= 0.4'}
dependencies:
- call-bind: 1.0.2
+ call-bind: 1.0.5
has-tostringtag: 1.0.0
dev: true
@@ -2631,7 +3235,7 @@ packages:
/is-shared-array-buffer@1.0.2:
resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==}
dependencies:
- call-bind: 1.0.2
+ call-bind: 1.0.5
dev: true
/is-stream@2.0.1:
@@ -2657,13 +3261,9 @@ packages:
resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==}
engines: {node: '>= 0.4'}
dependencies:
- which-typed-array: 1.1.11
+ which-typed-array: 1.1.13
dev: true
- /is-typedarray@1.0.0:
- resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==}
- dev: false
-
/is-weakmap@2.0.1:
resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==}
dev: true
@@ -2671,18 +3271,18 @@ packages:
/is-weakref@1.0.2:
resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==}
dependencies:
- call-bind: 1.0.2
+ call-bind: 1.0.5
dev: true
/is-weakset@2.0.2:
resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==}
dependencies:
- call-bind: 1.0.2
- get-intrinsic: 1.2.1
+ call-bind: 1.0.5
+ get-intrinsic: 1.2.2
dev: true
- /is-what@4.1.15:
- resolution: {integrity: sha512-uKua1wfy3Yt+YqsD6mTUEa2zSi3G1oPlqTflgaPJ7z63vUGN5pxFpnQfeSLMFnJDEsdvOtkp1rUWkYjB4YfhgA==}
+ /is-what@4.1.16:
+ resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==}
engines: {node: '>=12.13'}
dev: false
@@ -2714,18 +3314,18 @@ packages:
resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==}
dependencies:
define-properties: 1.2.1
- get-intrinsic: 1.2.1
+ get-intrinsic: 1.2.2
has-symbols: 1.0.3
reflect.getprototypeof: 1.0.4
set-function-name: 2.0.1
dev: true
- /jiti@1.20.0:
- resolution: {integrity: sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==}
+ /jiti@1.21.0:
+ resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==}
hasBin: true
- /jose@4.15.2:
- resolution: {integrity: sha512-IY73F228OXRl9ar3jJagh7Vnuhj/GzBunPiZP13K0lOl7Am9SoWW3kEzq3MCllJMTtZqHTiDXQvoRd4U95aU6A==}
+ /jose@4.15.4:
+ resolution: {integrity: sha512-W+oqK4H+r5sITxfxpSU+MMdr/YSWGvgZMQDIsNoBDGGy4i7GBPTtvFKibQzW06n3U3TqHjhvBJsirShsEJ6eeQ==}
dev: false
/js-tokens@4.0.0:
@@ -2764,7 +3364,7 @@ packages:
/jsonfile@6.1.0:
resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
dependencies:
- universalify: 2.0.0
+ universalify: 2.0.1
optionalDependencies:
graceful-fs: 4.2.11
dev: true
@@ -2775,12 +3375,12 @@ packages:
dependencies:
array-includes: 3.1.7
array.prototype.flat: 1.3.2
- object.assign: 4.1.4
+ object.assign: 4.1.5
object.values: 1.1.7
dev: true
- /keyv@4.5.3:
- resolution: {integrity: sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==}
+ /keyv@4.5.4:
+ resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
dependencies:
json-buffer: 3.0.1
dev: true
@@ -2799,8 +3399,9 @@ packages:
resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==}
dev: true
- /language-tags@1.0.5:
- resolution: {integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==}
+ /language-tags@1.0.9:
+ resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==}
+ engines: {node: '>=0.10'}
dependencies:
language-subtag-registry: 0.3.22
dev: true
@@ -2824,6 +3425,10 @@ packages:
resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
engines: {node: '>=10'}
+ /lilconfig@3.0.0:
+ resolution: {integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==}
+ engines: {node: '>=14'}
+
/lines-and-columns@1.2.4:
resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
@@ -2940,10 +3545,6 @@ packages:
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
dev: true
- /ms@2.0.0:
- resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
- dev: false
-
/ms@2.1.2:
resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
dev: true
@@ -2959,8 +3560,8 @@ packages:
object-assign: 4.1.1
thenify-all: 1.6.0
- /nanoid@3.3.6:
- resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==}
+ /nanoid@3.3.7:
+ resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
@@ -2973,25 +3574,21 @@ packages:
engines: {node: '>=10'}
dev: true
- /next-themes@0.2.1(next@13.5.4)(react-dom@18.2.0)(react@18.2.0):
+ /next-themes@0.2.1(next@14.0.4)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==}
peerDependencies:
next: '*'
react: '*'
react-dom: '*'
dependencies:
- next: 13.5.4(react-dom@18.2.0)(react@18.2.0)
+ next: 14.0.4(react-dom@18.2.0)(react@18.2.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
dev: false
- /next-tick@1.1.0:
- resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==}
- dev: false
-
- /next@13.5.4(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-+93un5S779gho8y9ASQhb/bTkQF17FNQOtXLKAj3lsNgltEcF0C5PMLLncDmH+8X1EnJH1kbqAERa29nRXqhjA==}
- engines: {node: '>=16.14.0'}
+ /next@14.0.4(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-qbwypnM7327SadwFtxXnQdGiKpkuhaRLE2uq62/nRul9cj9KhQ5LhHmlziTNqUidZotw/Q1I9OjirBROdUJNgA==}
+ engines: {node: '>=18.17.0'}
hasBin: true
peerDependencies:
'@opentelemetry/api': ^1.1.0
@@ -3004,25 +3601,26 @@ packages:
sass:
optional: true
dependencies:
- '@next/env': 13.5.4
+ '@next/env': 14.0.4
'@swc/helpers': 0.5.2
busboy: 1.6.0
- caniuse-lite: 1.0.30001543
+ caniuse-lite: 1.0.30001570
+ graceful-fs: 4.2.11
postcss: 8.4.31
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
styled-jsx: 5.1.1(react@18.2.0)
watchpack: 2.4.0
optionalDependencies:
- '@next/swc-darwin-arm64': 13.5.4
- '@next/swc-darwin-x64': 13.5.4
- '@next/swc-linux-arm64-gnu': 13.5.4
- '@next/swc-linux-arm64-musl': 13.5.4
- '@next/swc-linux-x64-gnu': 13.5.4
- '@next/swc-linux-x64-musl': 13.5.4
- '@next/swc-win32-arm64-msvc': 13.5.4
- '@next/swc-win32-ia32-msvc': 13.5.4
- '@next/swc-win32-x64-msvc': 13.5.4
+ '@next/swc-darwin-arm64': 14.0.4
+ '@next/swc-darwin-x64': 14.0.4
+ '@next/swc-linux-arm64-gnu': 14.0.4
+ '@next/swc-linux-arm64-musl': 14.0.4
+ '@next/swc-linux-x64-gnu': 14.0.4
+ '@next/swc-linux-x64-musl': 14.0.4
+ '@next/swc-win32-arm64-msvc': 14.0.4
+ '@next/swc-win32-ia32-msvc': 14.0.4
+ '@next/swc-win32-x64-msvc': 14.0.4
transitivePeerDependencies:
- '@babel/core'
- babel-plugin-macros
@@ -3047,20 +3645,15 @@ packages:
whatwg-url: 5.0.0
dev: true
- /node-gyp-build@4.6.1:
- resolution: {integrity: sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ==}
- hasBin: true
- dev: false
-
- /node-releases@2.0.13:
- resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==}
+ /node-releases@2.0.14:
+ resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==}
dev: true
/normalize-package-data@2.5.0:
resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==}
dependencies:
hosted-git-info: 2.8.9
- resolve: 1.22.6
+ resolve: 1.22.2
semver: 5.7.2
validate-npm-package-license: 3.0.4
dev: true
@@ -3112,8 +3705,8 @@ packages:
resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
engines: {node: '>= 6'}
- /object-inspect@1.12.3:
- resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==}
+ /object-inspect@1.13.1:
+ resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==}
dev: true
/object-keys@1.1.1:
@@ -3121,11 +3714,11 @@ packages:
engines: {node: '>= 0.4'}
dev: true
- /object.assign@4.1.4:
- resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==}
+ /object.assign@4.1.5:
+ resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==}
engines: {node: '>= 0.4'}
dependencies:
- call-bind: 1.0.2
+ call-bind: 1.0.5
define-properties: 1.2.1
has-symbols: 1.0.3
object-keys: 1.1.1
@@ -3135,43 +3728,43 @@ packages:
resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==}
engines: {node: '>= 0.4'}
dependencies:
- call-bind: 1.0.2
+ call-bind: 1.0.5
define-properties: 1.2.1
- es-abstract: 1.22.2
+ es-abstract: 1.22.3
dev: true
/object.fromentries@2.0.7:
resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==}
engines: {node: '>= 0.4'}
dependencies:
- call-bind: 1.0.2
+ call-bind: 1.0.5
define-properties: 1.2.1
- es-abstract: 1.22.2
+ es-abstract: 1.22.3
dev: true
/object.groupby@1.0.1:
resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==}
dependencies:
- call-bind: 1.0.2
+ call-bind: 1.0.5
define-properties: 1.2.1
- es-abstract: 1.22.2
- get-intrinsic: 1.2.1
+ es-abstract: 1.22.3
+ get-intrinsic: 1.2.2
dev: true
/object.hasown@1.1.3:
resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==}
dependencies:
define-properties: 1.2.1
- es-abstract: 1.22.2
+ es-abstract: 1.22.3
dev: true
/object.values@1.1.7:
resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==}
engines: {node: '>= 0.4'}
dependencies:
- call-bind: 1.0.2
+ call-bind: 1.0.5
define-properties: 1.2.1
- es-abstract: 1.22.2
+ es-abstract: 1.22.3
dev: true
/once@1.4.0:
@@ -3284,7 +3877,7 @@ packages:
resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
engines: {node: '>=8'}
dependencies:
- '@babel/code-frame': 7.22.13
+ '@babel/code-frame': 7.23.5
error-ex: 1.3.2
json-parse-even-better-errors: 2.3.1
lines-and-columns: 1.2.4
@@ -3353,28 +3946,28 @@ packages:
engines: {node: '>=4'}
dev: true
- /postcss-import@15.1.0(postcss@8.4.31):
+ /postcss-import@15.1.0(postcss@8.4.32):
resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
engines: {node: '>=14.0.0'}
peerDependencies:
postcss: ^8.0.0
dependencies:
- postcss: 8.4.31
+ postcss: 8.4.32
postcss-value-parser: 4.2.0
read-cache: 1.0.0
- resolve: 1.22.6
+ resolve: 1.22.8
- /postcss-js@4.0.1(postcss@8.4.31):
+ /postcss-js@4.0.1(postcss@8.4.32):
resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
engines: {node: ^12 || ^14 || >= 16}
peerDependencies:
postcss: ^8.4.21
dependencies:
camelcase-css: 2.0.1
- postcss: 8.4.31
+ postcss: 8.4.32
- /postcss-load-config@4.0.1(postcss@8.4.31):
- resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==}
+ /postcss-load-config@4.0.2(postcss@8.4.32):
+ resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==}
engines: {node: '>= 14'}
peerDependencies:
postcss: '>=8.0.9'
@@ -3385,17 +3978,17 @@ packages:
ts-node:
optional: true
dependencies:
- lilconfig: 2.1.0
- postcss: 8.4.31
- yaml: 2.3.2
+ lilconfig: 3.0.0
+ postcss: 8.4.32
+ yaml: 2.3.4
- /postcss-nested@6.0.1(postcss@8.4.31):
+ /postcss-nested@6.0.1(postcss@8.4.32):
resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==}
engines: {node: '>=12.0'}
peerDependencies:
postcss: ^8.2.14
dependencies:
- postcss: 8.4.31
+ postcss: 8.4.32
postcss-selector-parser: 6.0.13
/postcss-selector-parser@6.0.13:
@@ -3412,7 +4005,16 @@ packages:
resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==}
engines: {node: ^10 || ^12 || >=14}
dependencies:
- nanoid: 3.3.6
+ nanoid: 3.3.7
+ picocolors: 1.0.0
+ source-map-js: 1.0.2
+ dev: false
+
+ /postcss@8.4.32:
+ resolution: {integrity: sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==}
+ engines: {node: ^10 || ^12 || >=14}
+ dependencies:
+ nanoid: 3.3.7
picocolors: 1.0.0
source-map-js: 1.0.2
@@ -3421,14 +4023,13 @@ packages:
engines: {node: '>= 0.8.0'}
dev: true
- /prettier-plugin-tailwindcss@0.5.5(prettier@3.0.3):
- resolution: {integrity: sha512-voy0CjWv/CM8yeaduv5ZwovovpTGMR5LbzlhGF+LtEvMJt9wBeVTVnW781hL38R/RcDXCJwN2rolsgr94B/n0Q==}
+ /prettier-plugin-tailwindcss@0.5.9(prettier@3.1.1):
+ resolution: {integrity: sha512-9x3t1s2Cjbut2QiP+O0mDqV3gLXTe2CgRlQDgucopVkUdw26sQi53p/q4qvGxMLBDfk/dcTV57Aa/zYwz9l8Ew==}
engines: {node: '>=14.21.3'}
peerDependencies:
'@ianvs/prettier-plugin-sort-imports': '*'
'@prettier/plugin-pug': '*'
'@shopify/prettier-plugin-liquid': '*'
- '@shufo/prettier-plugin-blade': '*'
'@trivago/prettier-plugin-sort-imports': '*'
prettier: ^3.0
prettier-plugin-astro: '*'
@@ -3448,8 +4049,6 @@ packages:
optional: true
'@shopify/prettier-plugin-liquid':
optional: true
- '@shufo/prettier-plugin-blade':
- optional: true
'@trivago/prettier-plugin-sort-imports':
optional: true
prettier-plugin-astro:
@@ -3473,11 +4072,11 @@ packages:
prettier-plugin-twig-melody:
optional: true
dependencies:
- prettier: 3.0.3
+ prettier: 3.1.1
dev: true
- /prettier@3.0.3:
- resolution: {integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==}
+ /prettier@3.1.1:
+ resolution: {integrity: sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==}
engines: {node: '>=14'}
hasBin: true
dev: true
@@ -3496,13 +4095,13 @@ packages:
- supports-color
dev: true
- /prisma@5.4.0:
- resolution: {integrity: sha512-69rlao0RJ4JcLnJ6VwUS89qhRAdMawby7u10OOkpxZC9RZkDdLIpMj+7zafH2NqEk9roplbmfiAR5FseR7H8fg==}
+ /prisma@5.7.0:
+ resolution: {integrity: sha512-0rcfXO2ErmGAtxnuTNHQT9ztL0zZheQjOI/VNJzdq87C3TlGPQtMqtM+KCwU6XtmkoEr7vbCQqA7HF9IY0ST+Q==}
engines: {node: '>=16.13'}
hasBin: true
requiresBuild: true
dependencies:
- '@prisma/engines': 5.4.0
+ '@prisma/engines': 5.7.0
/process-nextick-args@2.0.1:
resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
@@ -3529,8 +4128,8 @@ packages:
react-is: 16.13.1
dev: true
- /punycode@2.3.0:
- resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==}
+ /punycode@2.3.1:
+ resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
engines: {node: '>=6'}
dev: true
@@ -3547,10 +4146,54 @@ packages:
scheduler: 0.23.0
dev: false
+ /react-hook-form@7.49.2(react@18.2.0):
+ resolution: {integrity: sha512-TZcnSc17+LPPVpMRIDNVITY6w20deMdNi6iehTFLV1x8SqThXGwu93HjlUVU09pzFgZH7qZOvLMM7UYf2ShAHA==}
+ engines: {node: '>=18', pnpm: '8'}
+ peerDependencies:
+ react: ^16.8.0 || ^17 || ^18
+ dependencies:
+ react: 18.2.0
+ dev: false
+
/react-is@16.13.1:
resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
dev: true
+ /react-remove-scroll-bar@2.3.4(@types/react@18.2.45)(react@18.2.0):
+ resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@types/react': 18.2.45
+ react: 18.2.0
+ react-style-singleton: 2.2.1(@types/react@18.2.45)(react@18.2.0)
+ tslib: 2.6.2
+ dev: false
+
+ /react-remove-scroll@2.5.5(@types/react@18.2.45)(react@18.2.0):
+ resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@types/react': 18.2.45
+ react: 18.2.0
+ react-remove-scroll-bar: 2.3.4(@types/react@18.2.45)(react@18.2.0)
+ react-style-singleton: 2.2.1(@types/react@18.2.45)(react@18.2.0)
+ tslib: 2.6.2
+ use-callback-ref: 1.3.0(@types/react@18.2.45)(react@18.2.0)
+ use-sidecar: 1.1.2(@types/react@18.2.45)(react@18.2.0)
+ dev: false
+
/react-ssr-prepass@1.5.0(react@18.2.0):
resolution: {integrity: sha512-yFNHrlVEReVYKsLI5lF05tZoHveA5pGzjFbFJY/3pOqqjGOmMmqx83N4hIjN2n6E1AOa+eQEUxs3CgRnPmT0RQ==}
peerDependencies:
@@ -3559,6 +4202,23 @@ packages:
react: 18.2.0
dev: false
+ /react-style-singleton@2.2.1(@types/react@18.2.45)(react@18.2.0):
+ resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@types/react': 18.2.45
+ get-nonce: 1.0.1
+ invariant: 2.2.4
+ react: 18.2.0
+ tslib: 2.6.2
+ dev: false
+
/react@18.2.0:
resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==}
engines: {node: '>=0.10.0'}
@@ -3584,7 +4244,7 @@ packages:
resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==}
engines: {node: '>=8'}
dependencies:
- '@types/normalize-package-data': 2.4.2
+ '@types/normalize-package-data': 2.4.4
normalize-package-data: 2.5.0
parse-json: 5.2.0
type-fest: 0.6.0
@@ -3627,10 +4287,10 @@ packages:
resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==}
engines: {node: '>= 0.4'}
dependencies:
- call-bind: 1.0.2
+ call-bind: 1.0.5
define-properties: 1.2.1
- es-abstract: 1.22.2
- get-intrinsic: 1.2.1
+ es-abstract: 1.22.3
+ get-intrinsic: 1.2.2
globalthis: 1.0.3
which-builtin-type: 1.1.3
dev: true
@@ -3642,7 +4302,7 @@ packages:
resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==}
engines: {node: '>= 0.4'}
dependencies:
- call-bind: 1.0.2
+ call-bind: 1.0.5
define-properties: 1.2.1
set-function-name: 2.0.1
dev: true
@@ -3665,24 +4325,24 @@ packages:
resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==}
hasBin: true
dependencies:
- is-core-module: 2.13.0
+ is-core-module: 2.13.1
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
dev: true
- /resolve@1.22.6:
- resolution: {integrity: sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==}
+ /resolve@1.22.8:
+ resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
hasBin: true
dependencies:
- is-core-module: 2.13.0
+ is-core-module: 2.13.1
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
- /resolve@2.0.0-next.4:
- resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==}
+ /resolve@2.0.0-next.5:
+ resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==}
hasBin: true
dependencies:
- is-core-module: 2.13.0
+ is-core-module: 2.13.1
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
dev: true
@@ -3712,8 +4372,8 @@ packages:
resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==}
engines: {node: '>=0.4'}
dependencies:
- call-bind: 1.0.2
- get-intrinsic: 1.2.1
+ call-bind: 1.0.5
+ get-intrinsic: 1.2.2
has-symbols: 1.0.3
isarray: 2.0.5
dev: true
@@ -3729,8 +4389,8 @@ packages:
/safe-regex-test@1.0.0:
resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==}
dependencies:
- call-bind: 1.0.2
- get-intrinsic: 1.2.1
+ call-bind: 1.0.5
+ get-intrinsic: 1.2.2
is-regex: 1.1.4
dev: true
@@ -3766,17 +4426,31 @@ packages:
upper-case-first: 2.0.2
dev: true
+ /server-only@0.0.1:
+ resolution: {integrity: sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==}
+ dev: false
+
/set-cookie-parser@2.6.0:
resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==}
dev: false
+ /set-function-length@1.1.1:
+ resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ define-data-property: 1.1.1
+ get-intrinsic: 1.2.2
+ gopd: 1.0.1
+ has-property-descriptors: 1.0.1
+ dev: true
+
/set-function-name@2.0.1:
resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==}
engines: {node: '>= 0.4'}
dependencies:
- define-data-property: 1.1.0
+ define-data-property: 1.1.1
functions-have-names: 1.2.3
- has-property-descriptors: 1.0.0
+ has-property-descriptors: 1.0.1
dev: true
/shebang-command@2.0.0:
@@ -3794,9 +4468,9 @@ packages:
/side-channel@1.0.4:
resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
dependencies:
- call-bind: 1.0.2
- get-intrinsic: 1.2.1
- object-inspect: 1.12.3
+ call-bind: 1.0.5
+ get-intrinsic: 1.2.2
+ object-inspect: 1.13.1
dev: true
/signal-exit@3.0.7:
@@ -3836,7 +4510,7 @@ packages:
resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==}
dependencies:
spdx-expression-parse: 3.0.1
- spdx-license-ids: 3.0.15
+ spdx-license-ids: 3.0.16
dev: true
/spdx-exceptions@2.3.0:
@@ -3847,13 +4521,18 @@ packages:
resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==}
dependencies:
spdx-exceptions: 2.3.0
- spdx-license-ids: 3.0.15
+ spdx-license-ids: 3.0.16
dev: true
- /spdx-license-ids@3.0.15:
- resolution: {integrity: sha512-lpT8hSQp9jAKp9mhtBU4Xjon8LPGBvLIuBiSVhMEtmLecTh2mO0tlqrAMp47tBXzMr13NJMQ2lf7RpQGLJ3HsQ==}
+ /spdx-license-ids@3.0.16:
+ resolution: {integrity: sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==}
dev: true
+ /stable@0.1.8:
+ resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==}
+ deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility'
+ dev: false
+
/streamsearch@1.1.0:
resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==}
engines: {node: '>=10.0.0'}
@@ -3871,12 +4550,12 @@ packages:
/string.prototype.matchall@4.0.10:
resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==}
dependencies:
- call-bind: 1.0.2
+ call-bind: 1.0.5
define-properties: 1.2.1
- es-abstract: 1.22.2
- get-intrinsic: 1.2.1
+ es-abstract: 1.22.3
+ get-intrinsic: 1.2.2
has-symbols: 1.0.3
- internal-slot: 1.0.5
+ internal-slot: 1.0.6
regexp.prototype.flags: 1.5.1
set-function-name: 2.0.1
side-channel: 1.0.4
@@ -3886,25 +4565,25 @@ packages:
resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==}
engines: {node: '>= 0.4'}
dependencies:
- call-bind: 1.0.2
+ call-bind: 1.0.5
define-properties: 1.2.1
- es-abstract: 1.22.2
+ es-abstract: 1.22.3
dev: true
/string.prototype.trimend@1.0.7:
resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==}
dependencies:
- call-bind: 1.0.2
+ call-bind: 1.0.5
define-properties: 1.2.1
- es-abstract: 1.22.2
+ es-abstract: 1.22.3
dev: true
/string.prototype.trimstart@1.0.7:
resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==}
dependencies:
- call-bind: 1.0.2
+ call-bind: 1.0.5
define-properties: 1.2.1
- es-abstract: 1.22.2
+ es-abstract: 1.22.3
dev: true
/string_decoder@1.1.1:
@@ -4015,16 +4694,16 @@ packages:
resolution: {integrity: sha512-3mFKyCo/MBcgyOTlrY8T7odzZFx+w+qKSMAmdFzRvqBfLlSigU6TZnlFHK0lkMwj9Bj8OYU+9yW9lmGuS0QEnQ==}
dev: false
- /tailwindcss-animate@1.0.7(tailwindcss@3.3.3):
+ /tailwindcss-animate@1.0.7(tailwindcss@3.3.6):
resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==}
peerDependencies:
tailwindcss: '>=3.0.0 || insiders'
dependencies:
- tailwindcss: 3.3.3
+ tailwindcss: 3.3.6
dev: false
- /tailwindcss@3.3.3:
- resolution: {integrity: sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==}
+ /tailwindcss@3.3.6:
+ resolution: {integrity: sha512-AKjF7qbbLvLaPieoKeTjG1+FyNZT6KaJMJPFeQyLfIp7l82ggH1fbHJSsYIvnbTFQOlkh+gBYpyby5GT1LIdLw==}
engines: {node: '>=14.0.0'}
hasBin: true
dependencies:
@@ -4033,22 +4712,22 @@ packages:
chokidar: 3.5.3
didyoumean: 1.2.2
dlv: 1.1.3
- fast-glob: 3.3.1
+ fast-glob: 3.3.2
glob-parent: 6.0.2
is-glob: 4.0.3
- jiti: 1.20.0
+ jiti: 1.21.0
lilconfig: 2.1.0
micromatch: 4.0.5
normalize-path: 3.0.0
object-hash: 3.0.0
picocolors: 1.0.0
- postcss: 8.4.31
- postcss-import: 15.1.0(postcss@8.4.31)
- postcss-js: 4.0.1(postcss@8.4.31)
- postcss-load-config: 4.0.1(postcss@8.4.31)
- postcss-nested: 6.0.1(postcss@8.4.31)
+ postcss: 8.4.32
+ postcss-import: 15.1.0(postcss@8.4.32)
+ postcss-js: 4.0.1(postcss@8.4.32)
+ postcss-load-config: 4.0.2(postcss@8.4.32)
+ postcss-nested: 6.0.1(postcss@8.4.32)
postcss-selector-parser: 6.0.13
- resolve: 1.22.6
+ resolve: 1.22.8
sucrase: 3.34.0
transitivePeerDependencies:
- ts-node
@@ -4140,13 +4819,13 @@ packages:
/tr46@0.0.3:
resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
- /ts-api-utils@1.0.3(typescript@5.2.2):
+ /ts-api-utils@1.0.3(typescript@5.3.3):
resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==}
engines: {node: '>=16.13.0'}
peerDependencies:
typescript: '>=4.2.0'
dependencies:
- typescript: 5.2.2
+ typescript: 5.3.3
dev: true
/ts-interface-checker@0.1.13:
@@ -4156,8 +4835,8 @@ packages:
resolution: {integrity: sha512-pefrkcd4lmIVR0LA49Imjf9DYLK8vtWhqBPA3Ya1ir8xCW0O2yjL9dsCVvI7pCodLC5q7smNpEtDR2yVulQxOg==}
dev: true
- /tsconfig-paths@3.14.2:
- resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==}
+ /tsconfig-paths@3.15.0:
+ resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==}
dependencies:
'@types/json5': 0.0.29
json5: 1.0.2
@@ -4200,20 +4879,12 @@ packages:
engines: {node: '>=8'}
dev: true
- /type@1.2.0:
- resolution: {integrity: sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==}
- dev: false
-
- /type@2.7.2:
- resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==}
- dev: false
-
/typed-array-buffer@1.0.0:
resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==}
engines: {node: '>= 0.4'}
dependencies:
- call-bind: 1.0.2
- get-intrinsic: 1.2.1
+ call-bind: 1.0.5
+ get-intrinsic: 1.2.2
is-typed-array: 1.1.12
dev: true
@@ -4221,7 +4892,7 @@ packages:
resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==}
engines: {node: '>= 0.4'}
dependencies:
- call-bind: 1.0.2
+ call-bind: 1.0.5
for-each: 0.3.3
has-proto: 1.0.1
is-typed-array: 1.1.12
@@ -4232,7 +4903,7 @@ packages:
engines: {node: '>= 0.4'}
dependencies:
available-typed-arrays: 1.0.5
- call-bind: 1.0.2
+ call-bind: 1.0.5
for-each: 0.3.3
has-proto: 1.0.1
is-typed-array: 1.1.12
@@ -4241,31 +4912,28 @@ packages:
/typed-array-length@1.0.4:
resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==}
dependencies:
- call-bind: 1.0.2
+ call-bind: 1.0.5
for-each: 0.3.3
is-typed-array: 1.1.12
dev: true
- /typedarray-to-buffer@3.1.5:
- resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==}
- dependencies:
- is-typedarray: 1.0.0
- dev: false
-
- /typescript@5.2.2:
- resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==}
+ /typescript@5.3.3:
+ resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==}
engines: {node: '>=14.17'}
hasBin: true
/unbox-primitive@1.0.2:
resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
dependencies:
- call-bind: 1.0.2
+ call-bind: 1.0.5
has-bigints: 1.0.2
has-symbols: 1.0.3
which-boxed-primitive: 1.0.2
dev: true
+ /undici-types@5.26.5:
+ resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
+
/unique-string@2.0.0:
resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==}
engines: {node: '>=8'}
@@ -4273,18 +4941,18 @@ packages:
crypto-random-string: 2.0.0
dev: true
- /universalify@2.0.0:
- resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==}
+ /universalify@2.0.1:
+ resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
engines: {node: '>= 10.0.0'}
dev: true
- /update-browserslist-db@1.0.13(browserslist@4.22.1):
+ /update-browserslist-db@1.0.13(browserslist@4.22.2):
resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==}
hasBin: true
peerDependencies:
browserslist: '>= 4.21.0'
dependencies:
- browserslist: 4.22.1
+ browserslist: 4.22.2
escalade: 3.1.1
picocolors: 1.0.0
dev: true
@@ -4304,23 +4972,46 @@ packages:
/uri-js@4.4.1:
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
dependencies:
- punycode: 2.3.0
+ punycode: 2.3.1
dev: true
- /use-sync-external-store@1.2.0(react@18.2.0):
- resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==}
+ /use-callback-ref@1.3.0(@types/react@18.2.45)(react@18.2.0):
+ resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@types/react': 18.2.45
+ react: 18.2.0
+ tslib: 2.6.2
+ dev: false
+
+ /use-sidecar@1.1.2(@types/react@18.2.45)(react@18.2.0):
+ resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==}
+ engines: {node: '>=10'}
peerDependencies:
+ '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0
react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
dependencies:
+ '@types/react': 18.2.45
+ detect-node-es: 1.1.0
react: 18.2.0
+ tslib: 2.6.2
dev: false
- /utf-8-validate@5.0.10:
- resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==}
- engines: {node: '>=6.14.2'}
- requiresBuild: true
+ /use-sync-external-store@1.2.0(react@18.2.0):
+ resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
dependencies:
- node-gyp-build: 4.6.1
+ react: 18.2.0
dev: false
/util-deprecate@1.0.2:
@@ -4355,20 +5046,6 @@ packages:
/webidl-conversions@3.0.1:
resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
- /websocket@1.0.34:
- resolution: {integrity: sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==}
- engines: {node: '>=4.0.0'}
- dependencies:
- bufferutil: 4.0.7
- debug: 2.6.9
- es5-ext: 0.10.62
- typedarray-to-buffer: 3.1.5
- utf-8-validate: 5.0.10
- yaeti: 0.0.6
- transitivePeerDependencies:
- - supports-color
- dev: false
-
/whatwg-url@5.0.0:
resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
dependencies:
@@ -4400,7 +5077,7 @@ packages:
isarray: 2.0.5
which-boxed-primitive: 1.0.2
which-collection: 1.0.1
- which-typed-array: 1.1.11
+ which-typed-array: 1.1.13
dev: true
/which-collection@1.0.1:
@@ -4412,12 +5089,12 @@ packages:
is-weakset: 2.0.2
dev: true
- /which-typed-array@1.1.11:
- resolution: {integrity: sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==}
+ /which-typed-array@1.1.13:
+ resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==}
engines: {node: '>= 0.4'}
dependencies:
available-typed-arrays: 1.0.5
- call-bind: 1.0.2
+ call-bind: 1.0.5
for-each: 0.3.3
gopd: 1.0.1
has-tostringtag: 1.0.0
@@ -4434,17 +5111,25 @@ packages:
/wrappy@1.0.2:
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
- /yaeti@0.0.6:
- resolution: {integrity: sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==}
- engines: {node: '>=0.10.32'}
+ /ws@8.15.1:
+ resolution: {integrity: sha512-W5OZiCjXEmk0yZ66ZN82beM5Sz7l7coYxpRkzS+p9PP+ToQry8szKh+61eNktr7EA9DOwvFGhfC605jDHbP6QQ==}
+ engines: {node: '>=10.0.0'}
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: '>=5.0.2'
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
dev: false
/yallist@4.0.0:
resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
dev: true
- /yaml@2.3.2:
- resolution: {integrity: sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==}
+ /yaml@2.3.4:
+ resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==}
engines: {node: '>= 14'}
/yocto-queue@0.1.0:
@@ -4461,6 +5146,6 @@ packages:
readable-stream: 3.6.2
dev: true
- /zod@3.22.3:
- resolution: {integrity: sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug==}
+ /zod@3.22.4:
+ resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==}
dev: false
diff --git a/prisma/schema.prisma b/prisma/schema.prisma
index 1308760..76cd126 100644
--- a/prisma/schema.prisma
+++ b/prisma/schema.prisma
@@ -289,7 +289,7 @@ model Users {
model Profiles {
id String @id @db.Uuid
updatedAt DateTime? @map("updated_at") @db.Timestamptz(6)
- username String? @unique
+ email String? @unique
fullName String? @map("full_name")
avatarUrl String? @map("avatar_url")
users Users @relation(fields: [id], references: [id], onDelete: Cascade, onUpdate: NoAction)
diff --git a/src/app/(auth)/_components/DevLoginButtons.tsx b/src/app/(auth)/_components/DevLoginButtons.tsx
new file mode 100644
index 0000000..0518157
--- /dev/null
+++ b/src/app/(auth)/_components/DevLoginButtons.tsx
@@ -0,0 +1,33 @@
+"use client";
+
+import { supabase } from "~/server/supabase/supabaseClient";
+
+const testAccounts = [
+ { email: "random@gmail.com", password: "testPassword" },
+ { email: "random2@gmail.com", password: "testPassword2" },
+];
+
+export const DevLoginButtons = () => {
+ return (
+
+ {testAccounts.map((account, index) => (
+
+
+
+
+ ))}
+
+ );
+};
diff --git a/src/app/(auth)/layout.tsx b/src/app/(auth)/layout.tsx
new file mode 100644
index 0000000..1c39f67
--- /dev/null
+++ b/src/app/(auth)/layout.tsx
@@ -0,0 +1,8 @@
+import { type PropsWithChildren } from "react";
+import { PublicRoute } from "~/components/PublicRoute/PublicRoute";
+
+const Layout = async ({ children }: PropsWithChildren) => {
+ return {children};
+};
+
+export default Layout;
diff --git a/src/app/(auth)/login/page.tsx b/src/app/(auth)/login/page.tsx
new file mode 100644
index 0000000..1d2d33e
--- /dev/null
+++ b/src/app/(auth)/login/page.tsx
@@ -0,0 +1,55 @@
+"use client";
+
+import { type Provider } from "@supabase/supabase-js";
+import { Icons } from "~/components/Icons";
+import { Button } from "~/components/ui/button";
+import { supabase } from "~/server/supabase/supabaseClient";
+import { DevLoginButtons } from "../_components/DevLoginButtons";
+
+const Page = () => {
+ const signInWithOauth = (provider: Provider) => {
+ void supabase().auth.signInWithOAuth({
+ provider: provider,
+ });
+ };
+
+ return (
+
+
+
+
+ Login
+
+
+
+
+
+
+
+
+ {process.env.NEXT_PUBLIC_VERCEL_ENV !== "production" && (
+
+ )}
+
+ );
+};
+
+export default Page;
diff --git a/src/app/(authenticatedRoutes)/authenticated/page.tsx b/src/app/(authenticatedRoutes)/authenticated/page.tsx
new file mode 100644
index 0000000..0aac1bd
--- /dev/null
+++ b/src/app/(authenticatedRoutes)/authenticated/page.tsx
@@ -0,0 +1,24 @@
+"use client";
+
+import { api } from "~/trpc/react";
+
+const AuthenticatedExample = () => {
+ const { data } = api.auth.getProfile.useQuery();
+
+ return (
+
+
+
+ Authenticated Route Example
+
+
+
User Information
+
Email: {data?.email}
+
Name: {data?.fullName}
+
+
+
+ );
+};
+
+export default AuthenticatedExample;
diff --git a/src/app/(authenticatedRoutes)/layout.tsx b/src/app/(authenticatedRoutes)/layout.tsx
index a95193c..9f0463f 100644
--- a/src/app/(authenticatedRoutes)/layout.tsx
+++ b/src/app/(authenticatedRoutes)/layout.tsx
@@ -1,10 +1,13 @@
-import { withPrivateRoute } from "~/providers/AuthProvider/withPrivateRoute";
-import { api } from "~/utils/api";
+import { type PropsWithChildren } from "react";
+import { PrefetchTRPCQuery } from "~/components/PrefetchTRPCQuery/PrefetchTRPCQuery";
+import { PrivateRoute } from "~/components/PrivateRoute/PrivateRoute";
-function RootLayout({ children }: { children: React.ReactNode }) {
- return <>{children}>;
+export default function Layout({ children }: PropsWithChildren) {
+ return (
+
+
+ {children}
+
+
+ );
}
-
-const Layout = withPrivateRoute(RootLayout);
-
-export default api.withTRPC(Layout);
diff --git a/src/app/_components/ServerDataStreaming.tsx b/src/app/_components/ServerDataStreaming.tsx
new file mode 100644
index 0000000..94a3061
--- /dev/null
+++ b/src/app/_components/ServerDataStreaming.tsx
@@ -0,0 +1,9 @@
+import { api } from "~/trpc/server";
+
+export async function ServerDataStreaming() {
+ const data = await api.example.hello.query({ text: "from tRPC" });
+
+ await new Promise((resolve) => setTimeout(resolve, 1000));
+
+ return {data.greeting}
;
+}
diff --git a/src/app/api/trpc/[trpc]/route.ts b/src/app/api/trpc/[trpc]/route.ts
new file mode 100644
index 0000000..f540f04
--- /dev/null
+++ b/src/app/api/trpc/[trpc]/route.ts
@@ -0,0 +1,34 @@
+import { fetchRequestHandler } from "@trpc/server/adapters/fetch";
+import { type NextRequest } from "next/server";
+import { env } from "~/env.mjs";
+
+import { appRouter } from "~/server/api/root";
+import { createTRPCContext } from "~/server/api/trpc";
+
+/**
+ * This wraps the `createTRPCContext` helper and provides the required context for the tRPC API when
+ * handling a HTTP request (e.g. when you make requests from Client Components).
+ */
+const createContext = async (req: NextRequest) => {
+ return createTRPCContext({
+ headers: req.headers,
+ });
+};
+
+const handler = (req: NextRequest) =>
+ fetchRequestHandler({
+ endpoint: "/api/trpc",
+ req,
+ router: appRouter,
+ createContext: () => createContext(req),
+ onError:
+ env.NODE_ENV === "development"
+ ? ({ path, error }) => {
+ console.error(
+ `❌ tRPC failed on ${path ?? ""}: ${error.message}`,
+ );
+ }
+ : undefined,
+ });
+
+export { handler as GET, handler as POST };
diff --git a/src/app/layout.tsx b/src/app/layout.tsx
index f8f36b8..0227e1c 100644
--- a/src/app/layout.tsx
+++ b/src/app/layout.tsx
@@ -1,25 +1,51 @@
import { TailwindIndicator } from "~/components/TailwindIndicator";
import { Providers } from "~/providers";
import "~/styles/globals.css";
+import { cn } from "~/utils/cn";
+import { Roboto } from "next/font/google";
+import { Toaster } from "~/components/ui/toaster";
+import { getServerUser } from "~/utils/auth";
+import { AuthProvider } from "~/providers/AuthProvider/AuthProvider";
+import { TRPCReactProvider } from "~/trpc/react";
+import { headers } from "next/headers";
export const metadata = {
title: "t3-app-dir-supabase",
description: "Boilerplate for t3-app-dir-supabase.",
};
-function RootLayout({ children }: { children: React.ReactNode }) {
+const font = Roboto({
+ weight: ["100", "300", "400", "500", "700", "900"],
+ subsets: ["latin"],
+});
+
+async function RootLayout({ children }: { children: React.ReactNode }) {
+ const user = await getServerUser();
+
return (
<>
-
-
- {children}
+
+
+
+
+ {children}
+
+
+
+
>
);
}
+
export default RootLayout;
diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx
deleted file mode 100644
index a619606..0000000
--- a/src/app/login/page.tsx
+++ /dev/null
@@ -1,40 +0,0 @@
-"use client";
-
-import { env } from "~/env.mjs";
-import { supabase } from "~/server/supabase/supabaseClient";
-
-const testAccounts = [
- { email: "account1@gmail.com", password: "testPassword1" },
- { email: "account2@gmail.com", password: "testPassword2" },
-];
-
-const Page = () => {
- return (
-
- {env.NODE_ENV === "development" && (
-
- {testAccounts.map((account, index) => (
-
-
-
-
- ))}
-
- )}
-
- );
-};
-
-export default Page;
diff --git a/src/app/page.tsx b/src/app/page.tsx
index 386a01f..62dcd9a 100644
--- a/src/app/page.tsx
+++ b/src/app/page.tsx
@@ -1,17 +1,22 @@
-"use client";
-
import Link from "next/link";
-import { api } from "~/utils";
-
-const Homepage = () => {
- const hello = api.example.hello.useQuery({ text: "from tRPC" });
+import { Suspense } from "react";
+import { ServerDataStreaming } from "./_components/ServerDataStreaming";
+const Homepage = async () => {
return (
-
- Create T3 App
-
+
+
+ Nextjs 14 App router starter
+
+
+ Based On
+
+
+ Create T3 App
+
+
{
-
- {hello.data ? hello.data.greeting : "Loading tRPC query..."}
-
+
+
+ Login
+
+
+ Authenticated Route Example
+
+
+ Streaming TRPC Query...
+ }
+ >
+
+
);
diff --git a/src/components/FormInput/FormInput.tsx b/src/components/FormInput/FormInput.tsx
new file mode 100644
index 0000000..a815e4a
--- /dev/null
+++ b/src/components/FormInput/FormInput.tsx
@@ -0,0 +1,23 @@
+import {
+ FormControl,
+ FormDescription,
+ FormItem,
+ FormLabel,
+ FormMessage,
+} from "../ui/form";
+
+export type FormInputProps = {
+ label?: string;
+ description?: string;
+ children: React.ReactNode;
+};
+
+export const FormInput = ({ label, description, children }: FormInputProps) => (
+
+ {label && {label}}
+ {children}
+ {description && {description}}
+
+
+
+);
diff --git a/src/components/Icons/Icons.tsx b/src/components/Icons/Icons.tsx
new file mode 100644
index 0000000..6cbb1b2
--- /dev/null
+++ b/src/components/Icons/Icons.tsx
@@ -0,0 +1,158 @@
+import {
+ AlertTriangle,
+ ArrowRight,
+ Check,
+ ChevronLeft,
+ ChevronRight,
+ Command,
+ CreditCard,
+ File,
+ FileText,
+ HelpCircle,
+ Image,
+ Laptop,
+ Loader2,
+ type LucideProps,
+ Moon,
+ MoreVertical,
+ Pizza,
+ Plus,
+ Settings,
+ SunMedium,
+ Trash,
+ Twitter,
+ User,
+ X,
+ Zap,
+ Palette,
+ Truck,
+ AlignHorizontalDistributeCenter,
+ Type,
+ Construction,
+ type LucideIcon,
+ Settings2,
+ Edit,
+ Star,
+ Sparkle,
+ MonitorSmartphone,
+ Scaling,
+ Sparkles,
+ Download,
+ Menu,
+ Facebook,
+ Instagram,
+ Linkedin,
+ Youtube,
+ Lock,
+ Flag,
+ Languages,
+} from "lucide-react";
+
+export type Icon = LucideIcon;
+
+export const Icons = {
+ languages: Languages,
+ logo: Command,
+ close: X,
+ spinner: Loader2,
+ chevronLeft: ChevronLeft,
+ chevronRight: ChevronRight,
+ trash: Trash,
+ post: FileText,
+ page: File,
+ media: Image,
+ settings: Settings,
+ billing: CreditCard,
+ ellipsis: MoreVertical,
+ add: Plus,
+ warning: AlertTriangle,
+ user: User,
+ arrowRight: ArrowRight,
+ help: HelpCircle,
+ pizza: Pizza,
+ sun: SunMedium,
+ moon: Moon,
+ laptop: Laptop,
+ zap: Zap,
+ palette: Palette,
+ truck: Truck,
+ type: Type,
+ customize: AlignHorizontalDistributeCenter,
+ construction: Construction,
+ settings2: Settings2,
+ edit: Edit,
+ star: Star,
+ sparkle: Sparkle,
+ devices: MonitorSmartphone,
+ scaling: Scaling,
+ sparkles: Sparkles,
+ download: Download,
+ menu: Menu,
+ facebook: Facebook,
+ instagram: Instagram,
+ linkedin: Linkedin,
+ youtube: Youtube,
+ lock: Lock,
+ flag: Flag,
+ gitHub: ({ ...props }) => (
+
+ ),
+ google: ({ ...props }: LucideProps) => (
+
+ ),
+ discord: ({ ...props }: LucideProps) => (
+
+ ),
+ twitter: Twitter,
+ check: Check,
+};
diff --git a/src/components/Icons/index.ts b/src/components/Icons/index.ts
new file mode 100644
index 0000000..55ed36b
--- /dev/null
+++ b/src/components/Icons/index.ts
@@ -0,0 +1 @@
+export * from "./Icons";
diff --git a/src/components/Loading/Loading.tsx b/src/components/Loading/Loading.tsx
new file mode 100644
index 0000000..9766416
--- /dev/null
+++ b/src/components/Loading/Loading.tsx
@@ -0,0 +1,19 @@
+import React from "react";
+import { Icons } from "../Icons/Icons";
+import { type LucideProps } from "lucide-react";
+import { cn } from "~/utils/cn";
+
+export const Spinner = ({ className, ...props }: LucideProps) => (
+
+);
+
+export const LoadingScreen = () => {
+ return (
+
+
+
+ );
+};
diff --git a/src/components/Loading/index.ts b/src/components/Loading/index.ts
new file mode 100644
index 0000000..618e384
--- /dev/null
+++ b/src/components/Loading/index.ts
@@ -0,0 +1 @@
+export * from "./Loading";
diff --git a/src/components/PrefetchTRPCQuery/PrefetchTRPCQuery.tsx b/src/components/PrefetchTRPCQuery/PrefetchTRPCQuery.tsx
new file mode 100644
index 0000000..3e63ba0
--- /dev/null
+++ b/src/components/PrefetchTRPCQuery/PrefetchTRPCQuery.tsx
@@ -0,0 +1,56 @@
+import { Hydrate, dehydrate } from "@tanstack/react-query";
+import { api as serverApi } from "~/trpc/server";
+import { getServerQueryClient } from "~/utils/getQueryClient";
+import { type RouterInputs } from "~/trpc/shared";
+
+type AccessPaths = {
+ [K in keyof T]: {
+ [L in keyof T[K]]: `${string & K}.${string & L}`;
+ }[keyof T[K]];
+}[keyof T];
+
+type ValueTypeAt = P extends `${infer K}.${infer L}`
+ ? K extends keyof T
+ ? L extends keyof T[K]
+ ? T[K][L]
+ : never
+ : never
+ : never;
+
+type ParamsType> = ValueTypeAt<
+ RouterInputs,
+ T
+> extends void | undefined
+ ? { params?: undefined }
+ : { params: ValueTypeAt };
+
+export const PrefetchTRPCQuery = async >({
+ children,
+ queryName,
+ params = undefined,
+}: {
+ children: React.ReactNode;
+ queryName: T;
+} & ParamsType) => {
+ const queryClient = getServerQueryClient();
+ const [router, procedure] = queryName.split(".");
+
+ try {
+ // Just let the frontend handle it if it fails
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
+ // @ts-ignore
+ const data = await serverApi[router][procedure].query(params);
+
+ await queryClient.prefetchQuery(
+ [[router, procedure], { input: params, type: "query" }],
+ () => data,
+ );
+ const dehydratedState = dehydrate(queryClient);
+
+ return {children};
+ } catch (e) {
+ console.error(e, "PrefetchTRPCQuery failed");
+
+ return <>{children}>;
+ }
+};
diff --git a/src/components/PrivateRoute/PrivateRoute.tsx b/src/components/PrivateRoute/PrivateRoute.tsx
new file mode 100644
index 0000000..1219852
--- /dev/null
+++ b/src/components/PrivateRoute/PrivateRoute.tsx
@@ -0,0 +1,11 @@
+import { type PropsWithChildren } from "react";
+import { getServerUser } from "~/utils/auth";
+import { PrivateRouteBase } from "./PrivateRouteBase";
+
+export const PrivateRoute = async ({ children }: PropsWithChildren) => {
+ const user = await getServerUser();
+
+ if (!user) return null; // Prevent server side render of authorized page
+
+ return {children};
+};
diff --git a/src/components/PrivateRoute/PrivateRouteBase.tsx b/src/components/PrivateRoute/PrivateRouteBase.tsx
new file mode 100644
index 0000000..86b4e48
--- /dev/null
+++ b/src/components/PrivateRoute/PrivateRouteBase.tsx
@@ -0,0 +1,8 @@
+"use client";
+
+import { type PropsWithChildren } from "react";
+import { withPrivateRoute } from "~/providers/AuthProvider/withPrivateRoute";
+
+const PrivateRouteBaseComponent = ({ children }: PropsWithChildren) => children;
+
+export const PrivateRouteBase = withPrivateRoute(PrivateRouteBaseComponent);
diff --git a/src/components/PublicRoute/PublicRoute.tsx b/src/components/PublicRoute/PublicRoute.tsx
new file mode 100644
index 0000000..435f924
--- /dev/null
+++ b/src/components/PublicRoute/PublicRoute.tsx
@@ -0,0 +1,8 @@
+"use client";
+
+import { withPublicRoute } from "~/providers/AuthProvider/withPublicRoute";
+
+const PublicRouteComponent = ({ children }: { children: React.ReactNode }) =>
+ children;
+
+export const PublicRoute = withPublicRoute(PublicRouteComponent);
diff --git a/src/components/ui/button.tsx b/src/components/ui/button.tsx
index 890a864..13a761f 100644
--- a/src/components/ui/button.tsx
+++ b/src/components/ui/button.tsx
@@ -1,11 +1,10 @@
-import * as React from "react"
-import { Slot } from "@radix-ui/react-slot"
-import { cva, type VariantProps } from "class-variance-authority"
-
-import { cn } from "~/utils"
+import * as React from "react";
+import { type VariantProps, cva } from "class-variance-authority";
+import { cn } from "~/utils/cn";
+import { Spinner } from "../Loading";
const buttonVariants = cva(
- "inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
+ "inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none ring-offset-background",
{
variants: {
variant: {
@@ -13,44 +12,52 @@ const buttonVariants = cva(
destructive:
"bg-destructive text-destructive-foreground hover:bg-destructive/90",
outline:
- "border border-input bg-background hover:bg-accent hover:text-accent-foreground",
+ "border border-input hover:bg-accent hover:text-accent-foreground",
secondary:
"bg-secondary text-secondary-foreground hover:bg-secondary/80",
ghost: "hover:bg-accent hover:text-accent-foreground",
- link: "text-primary underline-offset-4 hover:underline",
+ link: "underline-offset-4 hover:underline text-primary",
+ premium:
+ "font-bold bg-clip-padding border-[2px] before:-m-[2px] rounded-md before:rounded-md border-transparent bg-white dark:bg-secondary text-primary hover:before:bg-gradient-to-r hover:before:from-pink-500 hover:before:to-purple-500 before:bg-gradient-to-r before:from-purple-500 before:to-pink-500 hover:bg-white/90 dark:hover:bg-secondary/90 relative before:content before:absolute before:z-[-1] before:inset-0 before:bg-primary before:transition-opacity before:duration-500 before:delay-100 hover:before:opacity-100",
},
size: {
- default: "h-10 px-4 py-2",
- sm: "h-9 rounded-md px-3",
- lg: "h-11 rounded-md px-8",
- icon: "h-10 w-10",
+ default: "h-10 py-2 px-4",
+ sm: "h-9 px-3 rounded-md",
+ lg: "h-11 px-8 rounded-md",
},
},
defaultVariants: {
variant: "default",
size: "default",
},
- }
-)
+ },
+);
export interface ButtonProps
extends React.ButtonHTMLAttributes,
VariantProps {
- asChild?: boolean
+ loading?: boolean;
}
const Button = React.forwardRef(
- ({ className, variant, size, asChild = false, ...props }, ref) => {
- const Comp = asChild ? Slot : "button"
+ ({ className, variant, size, children, loading, ...props }, ref) => {
return (
-
- )
- }
-)
-Button.displayName = "Button"
+ >
+ {loading && }
+ {loading ? {children} : children}
+
+ );
+ },
+);
+
+Button.displayName = "Button";
-export { Button, buttonVariants }
+export { Button, buttonVariants };
diff --git a/src/components/ui/dropdown-menu.tsx b/src/components/ui/dropdown-menu.tsx
new file mode 100644
index 0000000..e4c3d38
--- /dev/null
+++ b/src/components/ui/dropdown-menu.tsx
@@ -0,0 +1,209 @@
+"use client";
+
+import * as React from "react";
+import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
+import { Check, ChevronRight, Circle } from "lucide-react";
+
+import { cn } from "~/utils/cn";
+
+const DropdownMenu = DropdownMenuPrimitive.Root;
+
+const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
+
+const DropdownMenuGroup = DropdownMenuPrimitive.Group;
+
+const DropdownMenuPortal = DropdownMenuPrimitive.Portal;
+
+const DropdownMenuSub = DropdownMenuPrimitive.Sub;
+
+const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
+
+const DropdownMenuSubTrigger = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef & {
+ inset?: boolean;
+ }
+>(({ className, inset, children, ...props }, ref) => (
+
+ {children}
+
+
+));
+
+DropdownMenuSubTrigger.displayName =
+ DropdownMenuPrimitive.SubTrigger.displayName;
+
+const DropdownMenuSubContent = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+));
+
+DropdownMenuSubContent.displayName =
+ DropdownMenuPrimitive.SubContent.displayName;
+
+const DropdownMenuContent = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, sideOffset = 4, ...props }, ref) => (
+
+
+
+));
+
+DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
+
+const DropdownMenuItem = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef & {
+ inset?: boolean;
+ }
+>(({ className, inset, ...props }, ref) => (
+
+));
+
+DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
+
+const DropdownMenuCheckboxItem = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, children, checked, ...props }, ref) => (
+
+
+
+
+
+
+ {children}
+
+));
+
+DropdownMenuCheckboxItem.displayName =
+ DropdownMenuPrimitive.CheckboxItem.displayName;
+
+const DropdownMenuRadioItem = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, children, ...props }, ref) => (
+
+
+
+
+
+
+ {children}
+
+));
+
+DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
+
+const DropdownMenuLabel = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef & {
+ inset?: boolean;
+ }
+>(({ className, inset, ...props }, ref) => (
+
+));
+
+DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
+
+const DropdownMenuSeparator = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+));
+
+DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;
+
+const DropdownMenuShortcut = ({
+ className,
+ ...props
+}: React.HTMLAttributes) => {
+ return (
+
+ );
+};
+
+DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
+
+export {
+ DropdownMenu,
+ DropdownMenuTrigger,
+ DropdownMenuContent,
+ DropdownMenuItem,
+ DropdownMenuCheckboxItem,
+ DropdownMenuRadioItem,
+ DropdownMenuLabel,
+ DropdownMenuSeparator,
+ DropdownMenuShortcut,
+ DropdownMenuGroup,
+ DropdownMenuPortal,
+ DropdownMenuSub,
+ DropdownMenuSubContent,
+ DropdownMenuSubTrigger,
+ DropdownMenuRadioGroup,
+};
diff --git a/src/components/ui/form.tsx b/src/components/ui/form.tsx
new file mode 100644
index 0000000..8806ac3
--- /dev/null
+++ b/src/components/ui/form.tsx
@@ -0,0 +1,182 @@
+import * as React from "react";
+import type * as LabelPrimitive from "@radix-ui/react-label";
+import { Slot } from "@radix-ui/react-slot";
+import {
+ Controller,
+ type ControllerProps,
+ type FieldPath,
+ type FieldValues,
+ FormProvider,
+ useFormContext,
+} from "react-hook-form";
+
+import { cn } from "~/utils/cn";
+import { Label } from "~/components/ui/label";
+
+const Form = FormProvider;
+
+type FormFieldContextValue<
+ TFieldValues extends FieldValues = FieldValues,
+ TName extends FieldPath = FieldPath,
+> = {
+ name: TName;
+};
+
+const FormFieldContext = React.createContext(
+ {} as FormFieldContextValue,
+);
+
+const FormField = <
+ TFieldValues extends FieldValues = FieldValues,
+ TName extends FieldPath = FieldPath,
+>({
+ ...props
+}: ControllerProps) => {
+ return (
+
+
+
+ );
+};
+
+const useFormField = () => {
+ const fieldContext = React.useContext(FormFieldContext);
+ const itemContext = React.useContext(FormItemContext);
+ const { getFieldState, formState } = useFormContext();
+
+ const fieldState = getFieldState(fieldContext.name, formState);
+
+ if (!fieldContext) {
+ throw new Error("useFormField should be used within ");
+ }
+
+ const { id } = itemContext;
+
+ return {
+ id,
+ name: fieldContext.name,
+ formItemId: `${id}-form-item`,
+ formDescriptionId: `${id}-form-item-description`,
+ formMessageId: `${id}-form-item-message`,
+ ...fieldState,
+ };
+};
+
+type FormItemContextValue = {
+ id: string;
+};
+
+const FormItemContext = React.createContext(
+ {} as FormItemContextValue,
+);
+
+const FormItem = React.forwardRef<
+ HTMLDivElement,
+ React.HTMLAttributes
+>(({ className, ...props }, ref) => {
+ const id = React.useId();
+
+ return (
+
+
+
+ );
+});
+
+FormItem.displayName = "FormItem";
+
+const FormLabel = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => {
+ const { error, formItemId } = useFormField();
+
+ return (
+
+ );
+});
+
+FormLabel.displayName = "FormLabel";
+
+const FormControl = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ ...props }, ref) => {
+ const { error, formItemId, formDescriptionId, formMessageId } =
+ useFormField();
+
+ return (
+
+ );
+});
+
+FormControl.displayName = "FormControl";
+
+const FormDescription = React.forwardRef<
+ HTMLParagraphElement,
+ React.HTMLAttributes
+>(({ className, ...props }, ref) => {
+ const { formDescriptionId } = useFormField();
+
+ return (
+
+ );
+});
+
+FormDescription.displayName = "FormDescription";
+
+const FormMessage = React.forwardRef<
+ HTMLParagraphElement,
+ React.HTMLAttributes
+>(({ className, children, ...props }, ref) => {
+ const { error, formMessageId } = useFormField();
+ const body = error ? String(error?.message) : children;
+
+ if (!body) {
+ return null;
+ }
+
+ return (
+
+ {body}
+
+ );
+});
+
+FormMessage.displayName = "FormMessage";
+
+export {
+ useFormField,
+ Form,
+ FormItem,
+ FormLabel,
+ FormControl,
+ FormDescription,
+ FormMessage,
+ FormField,
+};
diff --git a/src/components/ui/input.tsx b/src/components/ui/input.tsx
new file mode 100644
index 0000000..cafc56b
--- /dev/null
+++ b/src/components/ui/input.tsx
@@ -0,0 +1,26 @@
+import * as React from "react";
+
+import { cn } from "~/utils/cn";
+
+export interface InputProps
+ extends React.InputHTMLAttributes {}
+
+const Input = React.forwardRef(
+ ({ className, type, ...props }, ref) => {
+ return (
+
+ );
+ },
+);
+
+Input.displayName = "Input";
+
+export { Input };
diff --git a/src/components/ui/label.tsx b/src/components/ui/label.tsx
new file mode 100644
index 0000000..2a33921
--- /dev/null
+++ b/src/components/ui/label.tsx
@@ -0,0 +1,27 @@
+"use client";
+
+import * as React from "react";
+import * as LabelPrimitive from "@radix-ui/react-label";
+import { cva, type VariantProps } from "class-variance-authority";
+
+import { cn } from "~/utils/cn";
+
+const labelVariants = cva(
+ "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
+);
+
+const Label = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef &
+ VariantProps
+>(({ className, ...props }, ref) => (
+
+));
+
+Label.displayName = LabelPrimitive.Root.displayName;
+
+export { Label };
diff --git a/src/components/ui/toast.tsx b/src/components/ui/toast.tsx
new file mode 100644
index 0000000..52b478a
--- /dev/null
+++ b/src/components/ui/toast.tsx
@@ -0,0 +1,133 @@
+import * as React from "react";
+import * as ToastPrimitives from "@radix-ui/react-toast";
+import { cva, type VariantProps } from "class-variance-authority";
+import { X } from "lucide-react";
+
+import { cn } from "~/utils/cn";
+
+const ToastProvider = ToastPrimitives.Provider;
+
+const ToastViewport = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+));
+
+ToastViewport.displayName = ToastPrimitives.Viewport.displayName;
+
+const toastVariants = cva(
+ "group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full",
+ {
+ variants: {
+ variant: {
+ default: "border bg-background text-foreground",
+ destructive:
+ "destructive group border-destructive bg-destructive text-destructive-foreground",
+ },
+ },
+ defaultVariants: {
+ variant: "default",
+ },
+ },
+);
+
+const Toast = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef &
+ VariantProps
+>(({ className, variant, ...props }, ref) => {
+ return (
+
+ );
+});
+
+Toast.displayName = ToastPrimitives.Root.displayName;
+
+const ToastAction = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+));
+
+ToastAction.displayName = ToastPrimitives.Action.displayName;
+
+const ToastClose = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+
+
+));
+
+ToastClose.displayName = ToastPrimitives.Close.displayName;
+
+const ToastTitle = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+));
+
+ToastTitle.displayName = ToastPrimitives.Title.displayName;
+
+const ToastDescription = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+));
+
+ToastDescription.displayName = ToastPrimitives.Description.displayName;
+
+type ToastProps = React.ComponentPropsWithoutRef;
+
+type ToastActionElement = React.ReactElement;
+
+export {
+ type ToastProps,
+ type ToastActionElement,
+ ToastProvider,
+ ToastViewport,
+ Toast,
+ ToastTitle,
+ ToastDescription,
+ ToastClose,
+ ToastAction,
+};
diff --git a/src/components/ui/toaster.tsx b/src/components/ui/toaster.tsx
new file mode 100644
index 0000000..93a9f12
--- /dev/null
+++ b/src/components/ui/toaster.tsx
@@ -0,0 +1,35 @@
+"use client";
+
+import {
+ Toast,
+ ToastClose,
+ ToastDescription,
+ ToastProvider,
+ ToastTitle,
+ ToastViewport,
+} from "~/components/ui/toast";
+import { useToast } from "~/components/ui/use-toast";
+
+export function Toaster() {
+ const { toasts } = useToast();
+
+ return (
+
+ {toasts.map(function ({ id, title, description, action, ...props }) {
+ return (
+
+
+ {title && {title}}
+ {description && (
+ {description}
+ )}
+
+ {action}
+
+
+ );
+ })}
+
+
+ );
+}
diff --git a/src/components/ui/use-toast.ts b/src/components/ui/use-toast.ts
new file mode 100644
index 0000000..ab930fe
--- /dev/null
+++ b/src/components/ui/use-toast.ts
@@ -0,0 +1,194 @@
+// Inspired by react-hot-toast library
+import * as React from "react";
+
+import type { ToastActionElement, ToastProps } from "~/components/ui/toast";
+
+const TOAST_LIMIT = 1;
+const TOAST_REMOVE_DELAY = 1000000;
+
+type ToasterToast = ToastProps & {
+ id: string;
+ title?: React.ReactNode;
+ description?: React.ReactNode;
+ action?: ToastActionElement;
+};
+
+const actionTypes = {
+ ADD_TOAST: "ADD_TOAST",
+ UPDATE_TOAST: "UPDATE_TOAST",
+ DISMISS_TOAST: "DISMISS_TOAST",
+ REMOVE_TOAST: "REMOVE_TOAST",
+} as const;
+
+let count = 0;
+
+function genId() {
+ count = (count + 1) % Number.MAX_VALUE;
+
+ return count.toString();
+}
+
+type ActionType = typeof actionTypes;
+
+type Action =
+ | {
+ type: ActionType["ADD_TOAST"];
+ toast: ToasterToast;
+ }
+ | {
+ type: ActionType["UPDATE_TOAST"];
+ toast: Partial;
+ }
+ | {
+ type: ActionType["DISMISS_TOAST"];
+ toastId?: ToasterToast["id"];
+ }
+ | {
+ type: ActionType["REMOVE_TOAST"];
+ toastId?: ToasterToast["id"];
+ };
+
+interface State {
+ toasts: ToasterToast[];
+}
+
+const toastTimeouts = new Map>();
+
+const addToRemoveQueue = (toastId: string) => {
+ if (toastTimeouts.has(toastId)) {
+ return;
+ }
+
+ const timeout = setTimeout(() => {
+ toastTimeouts.delete(toastId);
+ dispatch({
+ type: "REMOVE_TOAST",
+ toastId: toastId,
+ });
+ }, TOAST_REMOVE_DELAY);
+
+ toastTimeouts.set(toastId, timeout);
+};
+
+export const reducer = (state: State, action: Action): State => {
+ switch (action.type) {
+ case "ADD_TOAST":
+ return {
+ ...state,
+ toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),
+ };
+
+ case "UPDATE_TOAST":
+ return {
+ ...state,
+ toasts: state.toasts.map((t) =>
+ t.id === action.toast.id ? { ...t, ...action.toast } : t,
+ ),
+ };
+
+ case "DISMISS_TOAST": {
+ const { toastId } = action;
+
+ // ! Side effects ! - This could be extracted into a dismissToast() action,
+ // but I'll keep it here for simplicity
+ if (toastId) {
+ addToRemoveQueue(toastId);
+ } else {
+ state.toasts.forEach((tst) => {
+ addToRemoveQueue(tst.id);
+ });
+ }
+
+ return {
+ ...state,
+ toasts: state.toasts.map((t) =>
+ t.id === toastId || toastId === undefined
+ ? {
+ ...t,
+ open: false,
+ }
+ : t,
+ ),
+ };
+ }
+
+ case "REMOVE_TOAST":
+ if (action.toastId === undefined) {
+ return {
+ ...state,
+ toasts: [],
+ };
+ }
+
+ return {
+ ...state,
+ toasts: state.toasts.filter((t) => t.id !== action.toastId),
+ };
+ }
+};
+
+const listeners: Array<(state: State) => void> = [];
+
+let memoryState: State = { toasts: [] };
+
+function dispatch(action: Action) {
+ memoryState = reducer(memoryState, action);
+ listeners.forEach((listener) => {
+ listener(memoryState);
+ });
+}
+
+type Toast = Omit;
+
+function toast({ ...props }: Toast) {
+ const id = genId();
+
+ const update = (updateProps: ToasterToast) =>
+ dispatch({
+ type: "UPDATE_TOAST",
+ toast: { ...updateProps, id },
+ });
+ const dismiss = () => dispatch({ type: "DISMISS_TOAST", toastId: id });
+
+ dispatch({
+ type: "ADD_TOAST",
+ toast: {
+ ...props,
+ id,
+ open: true,
+ onOpenChange: (open) => {
+ if (!open) dismiss();
+ },
+ },
+ });
+
+ return {
+ id: id,
+ dismiss,
+ update,
+ };
+}
+
+function useToast() {
+ const [state, setState] = React.useState(memoryState);
+
+ React.useEffect(() => {
+ listeners.push(setState);
+
+ return () => {
+ const index = listeners.indexOf(setState);
+
+ if (index > -1) {
+ listeners.splice(index, 1);
+ }
+ };
+ }, [state]);
+
+ return {
+ ...state,
+ toast,
+ dismiss: (toastId?: string) => dispatch({ type: "DISMISS_TOAST", toastId }),
+ };
+}
+
+export { useToast, toast };
diff --git a/src/pages/api/trpc/[trpc].ts b/src/pages/api/trpc/[trpc].ts
deleted file mode 100644
index af81d92..0000000
--- a/src/pages/api/trpc/[trpc].ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import { createNextApiHandler } from "@trpc/server/adapters/next";
-
-import { env } from "~/env.mjs";
-import { appRouter } from "~/server/api/root";
-import { createTRPCContext } from "~/server/api/trpc";
-
-// export API handler
-export default createNextApiHandler({
- router: appRouter,
- createContext: createTRPCContext,
- onError:
- env.NODE_ENV === "development"
- ? ({ path, error }) => {
- console.error(
- `❌ tRPC failed on ${path ?? ""}: ${error.message}`
- );
- }
- : undefined,
-});
diff --git a/src/providers/AuthProvider/AuthProvider.tsx b/src/providers/AuthProvider/AuthProvider.tsx
index 300654e..2d85dc0 100644
--- a/src/providers/AuthProvider/AuthProvider.tsx
+++ b/src/providers/AuthProvider/AuthProvider.tsx
@@ -1,7 +1,16 @@
-import React, { createContext, useContext, useEffect, useState } from "react";
+"use client";
+
+import React, {
+ type ReactNode,
+ createContext,
+ useContext,
+ useEffect,
+ useState,
+} from "react";
import { type Session, type User } from "@supabase/supabase-js";
import { supabase } from "~/server/supabase/supabaseClient";
+import { ReactQueryDevtools } from "@tanstack/react-query-devtools";
export const AuthContext = createContext<{
user: User | null;
@@ -10,14 +19,37 @@ export const AuthContext = createContext<{
}>({
user: null,
session: null,
- isLoading: true,
+ isLoading: false,
});
-// eslint-disable-next-line @typescript-eslint/no-explicit-any
-export const AuthProvider = (props: any) => {
- const [userSession, setUserSession] = useState(null);
- const [user, setUser] = useState(null);
- const [isLoading, setIsloading] = useState(true);
+const setCookies = (session: Session | null) => {
+ if (session) {
+ const maxAge = 100 * 365 * 24 * 60 * 60; // 100 years, never expires
+
+ document.cookie = `access-token=${session.access_token}; path=/; max-age=${maxAge}; SameSite=Lax; secure`;
+ document.cookie = `refresh-token=${session.refresh_token}; path=/; max-age=${maxAge}; SameSite=Lax; secure`;
+ } else {
+ const expires = new Date(0).toUTCString();
+
+ document.cookie = `access-token=; path=/; expires=${expires}; SameSite=Lax; secure`;
+ document.cookie = `refresh-token=; path=/; expires=${expires}; SameSite=Lax; secure`;
+ }
+};
+
+export const AuthProvider = ({
+ user: initialUser,
+ session: initialSession,
+ children,
+}: {
+ user: User | null;
+ session: Session | null;
+ children: ReactNode;
+}) => {
+ const [userSession, setUserSession] = useState(
+ initialSession,
+ );
+ const [user, setUser] = useState(initialUser);
+ const [isLoading, setIsLoading] = useState(!initialUser);
useEffect(() => {
void supabase()
@@ -25,14 +57,16 @@ export const AuthProvider = (props: any) => {
.then(({ data: { session } }) => {
setUserSession(session);
setUser(session?.user ?? null);
- setIsloading(false);
+ setCookies(session);
+ setIsLoading(false);
});
const { data: authListener } = supabase().auth.onAuthStateChange(
(event, session) => {
setUserSession(session);
setUser(session?.user ?? null);
- setIsloading(false);
+ setCookies(session);
+ setIsLoading(false);
},
);
@@ -42,17 +76,25 @@ export const AuthProvider = (props: any) => {
}, []);
const value = {
- userSession,
+ session: userSession,
user,
isLoading,
};
- return ;
+
+ return (
+
+ {children}
+
+
+ );
};
export const useUser = () => {
const context = useContext(AuthContext);
+
if (context === undefined) {
throw new Error("useUser must be used within a AuthContextProvider.");
}
+
return context;
};
diff --git a/src/providers/AuthProvider/withPrivateRoute.tsx b/src/providers/AuthProvider/withPrivateRoute.tsx
index e8303da..ff9b38f 100644
--- a/src/providers/AuthProvider/withPrivateRoute.tsx
+++ b/src/providers/AuthProvider/withPrivateRoute.tsx
@@ -3,7 +3,6 @@
import { useRouter } from "next/navigation";
import { useEffect } from "react";
import { useUser } from "~/providers/AuthProvider/AuthProvider";
-import { api } from "~/utils/api";
export const withPrivateRoute = (
WrappedComponent: React.FunctionComponent,
@@ -12,16 +11,15 @@ export const withPrivateRoute = (
const router = useRouter();
const { user, isLoading } = useUser();
- const { isLoading: isProfileLoading } = api.auth.getProfile.useQuery();
- const isUserDataLoaded = !isLoading && !isProfileLoading;
+
useEffect(() => {
- if (!user && isUserDataLoaded) {
+ if (!user && !isLoading) {
router.push("/login");
}
- }, [user, isUserDataLoaded, router]);
+ }, [user, router, isLoading]);
+
+ if (!user) return null;
- // TODO: Add loading component
- if (!user || !isUserDataLoaded) return Loading...
;
return ;
};
diff --git a/src/providers/AuthProvider/withPublicRoute.tsx b/src/providers/AuthProvider/withPublicRoute.tsx
index 5db1de9..b87acf5 100644
--- a/src/providers/AuthProvider/withPublicRoute.tsx
+++ b/src/providers/AuthProvider/withPublicRoute.tsx
@@ -4,6 +4,7 @@ import React, { useEffect } from "react";
import { useRouter } from "next/navigation";
import { useUser } from "~/providers/AuthProvider/AuthProvider";
+import { LoadingScreen } from "~/components/Loading";
export const withPublicRoute = (
WrappedComponent: React.FunctionComponent,
@@ -15,11 +16,11 @@ export const withPublicRoute = (
useEffect(() => {
if (user && isUserDataLoaded) {
- router.push("/dashboard");
+ router.push("/");
}
}, [user, isUserDataLoaded, router]);
- if (user ?? !isUserDataLoaded) return Loading...
;
+ if (user ?? !isUserDataLoaded) return ;
return ;
};
diff --git a/src/providers/index.tsx b/src/providers/index.tsx
index 85807b5..93487ba 100644
--- a/src/providers/index.tsx
+++ b/src/providers/index.tsx
@@ -1,25 +1,20 @@
"use client";
import { ThemeProvider } from "next-themes";
-import { AuthProvider } from "./AuthProvider/AuthProvider";
import {
AnalyticsProvider,
UmamiAnalyticsProvider,
} from "./AnalyticsProvider/AnalyticsProvider";
-import { api } from "~/utils";
import React, { type PropsWithChildren } from "react";
-function ProvidersBase({ children }: { children: React.ReactNode }) {
+export function Providers({ children }: PropsWithChildren) {
return (
-
-
+ <>
+
{children}
-
+ >
);
}
-export const Providers = api.withTRPC(
- ProvidersBase,
-) as React.FC;
diff --git a/src/server/api/trpc.ts b/src/server/api/trpc.ts
index 3933290..b7e7022 100644
--- a/src/server/api/trpc.ts
+++ b/src/server/api/trpc.ts
@@ -7,7 +7,6 @@
* need to use are documented accordingly near the end.
*/
import { TRPCError, initTRPC } from "@trpc/server";
-import { type CreateNextContextOptions } from "@trpc/server/adapters/next";
import superjson from "superjson";
import { ZodError } from "zod";
@@ -20,13 +19,15 @@ import { getUserAsAdmin } from "../supabase/supabaseClient";
*
* @see https://trpc.io/docs/context
*/
-export const createTRPCContext = async (_opts: CreateNextContextOptions) => {
- const req = _opts.req;
- const { user } = req.headers.authorization
- ? await getUserAsAdmin(req.headers.authorization)
- : { user: null };
+export const createTRPCContext = async (opts: { headers: Headers }) => {
+ const headers = opts.headers;
+ const authToken = headers.get("authorization");
+
+ const { user } = authToken ? await getUserAsAdmin(authToken) : { user: null };
+
return {
+ ...opts,
db,
user,
};
@@ -82,6 +83,7 @@ const enforceUserIsAuthed = t.middleware(async ({ ctx, next }) => {
code: "UNAUTHORIZED",
});
}
+
return next({
ctx: {
user: ctx.user,
diff --git a/src/server/supabase/supabaseClient.ts b/src/server/supabase/supabaseClient.ts
index f30c8e6..1a33add 100644
--- a/src/server/supabase/supabaseClient.ts
+++ b/src/server/supabase/supabaseClient.ts
@@ -28,12 +28,9 @@ export const getUserAsAdmin = async (token: string) => {
const { data, error } = await getServiceSupabase().auth.getUser(token);
if (error) {
+ console.error(error);
throw error;
}
return data;
};
-
-export const storageBucketsNames = {
- portfolioFiles: "portfolio-files",
-};
diff --git a/src/server/supabase/supabaseTypes.ts b/src/server/supabase/supabaseTypes.ts
index 3c17d6f..7a23c2b 100644
--- a/src/server/supabase/supabaseTypes.ts
+++ b/src/server/supabase/supabaseTypes.ts
@@ -4,259 +4,258 @@ export type Json =
| boolean
| null
| { [key: string]: Json | undefined }
- | Json[]
+ | Json[];
export interface Database {
graphql_public: {
Tables: {
- [_ in never]: never
- }
+ [_ in never]: never;
+ };
Views: {
- [_ in never]: never
- }
+ [_ in never]: never;
+ };
Functions: {
graphql: {
Args: {
- operationName?: string
- query?: string
- variables?: Json
- extensions?: Json
- }
- Returns: Json
- }
- }
+ operationName?: string;
+ query?: string;
+ variables?: Json;
+ extensions?: Json;
+ };
+ Returns: Json;
+ };
+ };
Enums: {
- [_ in never]: never
- }
+ [_ in never]: never;
+ };
CompositeTypes: {
- [_ in never]: never
- }
- }
+ [_ in never]: never;
+ };
+ };
public: {
Tables: {
profiles: {
Row: {
- avatar_url: string | null
- full_name: string | null
- id: string
- updated_at: string | null
- username: string | null
- }
+ avatar_url: string | null;
+ email: string | null;
+ full_name: string | null;
+ id: string;
+ updated_at: string | null;
+ };
Insert: {
- avatar_url?: string | null
- full_name?: string | null
- id: string
- updated_at?: string | null
- username?: string | null
- }
+ avatar_url?: string | null;
+ email?: string | null;
+ full_name?: string | null;
+ id: string;
+ updated_at?: string | null;
+ };
Update: {
- avatar_url?: string | null
- full_name?: string | null
- id?: string
- updated_at?: string | null
- username?: string | null
- }
+ avatar_url?: string | null;
+ email?: string | null;
+ full_name?: string | null;
+ id?: string;
+ updated_at?: string | null;
+ };
Relationships: [
{
- foreignKeyName: "profiles_id_fkey"
- columns: ["id"]
- referencedRelation: "users"
- referencedColumns: ["id"]
- }
- ]
- }
- }
+ foreignKeyName: "profiles_id_fkey";
+ columns: ["id"];
+ referencedRelation: "users";
+ referencedColumns: ["id"];
+ },
+ ];
+ };
+ };
Views: {
- [_ in never]: never
- }
+ [_ in never]: never;
+ };
Functions: {
- [_ in never]: never
- }
+ [_ in never]: never;
+ };
Enums: {
- [_ in never]: never
- }
+ [_ in never]: never;
+ };
CompositeTypes: {
- [_ in never]: never
- }
- }
+ [_ in never]: never;
+ };
+ };
storage: {
Tables: {
buckets: {
Row: {
- allowed_mime_types: string[] | null
- avif_autodetection: boolean | null
- created_at: string | null
- file_size_limit: number | null
- id: string
- name: string
- owner: string | null
- public: boolean | null
- updated_at: string | null
- }
+ allowed_mime_types: string[] | null;
+ avif_autodetection: boolean | null;
+ created_at: string | null;
+ file_size_limit: number | null;
+ id: string;
+ name: string;
+ owner: string | null;
+ public: boolean | null;
+ updated_at: string | null;
+ };
Insert: {
- allowed_mime_types?: string[] | null
- avif_autodetection?: boolean | null
- created_at?: string | null
- file_size_limit?: number | null
- id: string
- name: string
- owner?: string | null
- public?: boolean | null
- updated_at?: string | null
- }
+ allowed_mime_types?: string[] | null;
+ avif_autodetection?: boolean | null;
+ created_at?: string | null;
+ file_size_limit?: number | null;
+ id: string;
+ name: string;
+ owner?: string | null;
+ public?: boolean | null;
+ updated_at?: string | null;
+ };
Update: {
- allowed_mime_types?: string[] | null
- avif_autodetection?: boolean | null
- created_at?: string | null
- file_size_limit?: number | null
- id?: string
- name?: string
- owner?: string | null
- public?: boolean | null
- updated_at?: string | null
- }
+ allowed_mime_types?: string[] | null;
+ avif_autodetection?: boolean | null;
+ created_at?: string | null;
+ file_size_limit?: number | null;
+ id?: string;
+ name?: string;
+ owner?: string | null;
+ public?: boolean | null;
+ updated_at?: string | null;
+ };
Relationships: [
{
- foreignKeyName: "buckets_owner_fkey"
- columns: ["owner"]
- referencedRelation: "users"
- referencedColumns: ["id"]
- }
- ]
- }
+ foreignKeyName: "buckets_owner_fkey";
+ columns: ["owner"];
+ referencedRelation: "users";
+ referencedColumns: ["id"];
+ },
+ ];
+ };
migrations: {
Row: {
- executed_at: string | null
- hash: string
- id: number
- name: string
- }
+ executed_at: string | null;
+ hash: string;
+ id: number;
+ name: string;
+ };
Insert: {
- executed_at?: string | null
- hash: string
- id: number
- name: string
- }
+ executed_at?: string | null;
+ hash: string;
+ id: number;
+ name: string;
+ };
Update: {
- executed_at?: string | null
- hash?: string
- id?: number
- name?: string
- }
- Relationships: []
- }
+ executed_at?: string | null;
+ hash?: string;
+ id?: number;
+ name?: string;
+ };
+ Relationships: [];
+ };
objects: {
Row: {
- bucket_id: string | null
- created_at: string | null
- id: string
- last_accessed_at: string | null
- metadata: Json | null
- name: string | null
- owner: string | null
- path_tokens: string[] | null
- updated_at: string | null
- version: string | null
- }
+ bucket_id: string | null;
+ created_at: string | null;
+ id: string;
+ last_accessed_at: string | null;
+ metadata: Json | null;
+ name: string | null;
+ owner: string | null;
+ path_tokens: string[] | null;
+ updated_at: string | null;
+ version: string | null;
+ };
Insert: {
- bucket_id?: string | null
- created_at?: string | null
- id?: string
- last_accessed_at?: string | null
- metadata?: Json | null
- name?: string | null
- owner?: string | null
- path_tokens?: string[] | null
- updated_at?: string | null
- version?: string | null
- }
+ bucket_id?: string | null;
+ created_at?: string | null;
+ id?: string;
+ last_accessed_at?: string | null;
+ metadata?: Json | null;
+ name?: string | null;
+ owner?: string | null;
+ path_tokens?: string[] | null;
+ updated_at?: string | null;
+ version?: string | null;
+ };
Update: {
- bucket_id?: string | null
- created_at?: string | null
- id?: string
- last_accessed_at?: string | null
- metadata?: Json | null
- name?: string | null
- owner?: string | null
- path_tokens?: string[] | null
- updated_at?: string | null
- version?: string | null
- }
+ bucket_id?: string | null;
+ created_at?: string | null;
+ id?: string;
+ last_accessed_at?: string | null;
+ metadata?: Json | null;
+ name?: string | null;
+ owner?: string | null;
+ path_tokens?: string[] | null;
+ updated_at?: string | null;
+ version?: string | null;
+ };
Relationships: [
{
- foreignKeyName: "objects_bucketId_fkey"
- columns: ["bucket_id"]
- referencedRelation: "buckets"
- referencedColumns: ["id"]
- }
- ]
- }
- }
+ foreignKeyName: "objects_bucketId_fkey";
+ columns: ["bucket_id"];
+ referencedRelation: "buckets";
+ referencedColumns: ["id"];
+ },
+ ];
+ };
+ };
Views: {
- [_ in never]: never
- }
+ [_ in never]: never;
+ };
Functions: {
can_insert_object: {
Args: {
- bucketid: string
- name: string
- owner: string
- metadata: Json
- }
- Returns: undefined
- }
+ bucketid: string;
+ name: string;
+ owner: string;
+ metadata: Json;
+ };
+ Returns: undefined;
+ };
extension: {
Args: {
- name: string
- }
- Returns: string
- }
+ name: string;
+ };
+ Returns: string;
+ };
filename: {
Args: {
- name: string
- }
- Returns: string
- }
+ name: string;
+ };
+ Returns: string;
+ };
foldername: {
Args: {
- name: string
- }
- Returns: unknown
- }
+ name: string;
+ };
+ Returns: unknown;
+ };
get_size_by_bucket: {
- Args: Record
+ Args: Record;
Returns: {
- size: number
- bucket_id: string
- }[]
- }
+ size: number;
+ bucket_id: string;
+ }[];
+ };
search: {
Args: {
- prefix: string
- bucketname: string
- limits?: number
- levels?: number
- offsets?: number
- search?: string
- sortcolumn?: string
- sortorder?: string
- }
+ prefix: string;
+ bucketname: string;
+ limits?: number;
+ levels?: number;
+ offsets?: number;
+ search?: string;
+ sortcolumn?: string;
+ sortorder?: string;
+ };
Returns: {
- name: string
- id: string
- updated_at: string
- created_at: string
- last_accessed_at: string
- metadata: Json
- }[]
- }
- }
+ name: string;
+ id: string;
+ updated_at: string;
+ created_at: string;
+ last_accessed_at: string;
+ metadata: Json;
+ }[];
+ };
+ };
Enums: {
- [_ in never]: never
- }
+ [_ in never]: never;
+ };
CompositeTypes: {
- [_ in never]: never
- }
- }
+ [_ in never]: never;
+ };
+ };
}
-
diff --git a/src/styles/globals.css b/src/styles/globals.css
index 6a75725..2ada6b8 100644
--- a/src/styles/globals.css
+++ b/src/styles/globals.css
@@ -1,71 +1,54 @@
@tailwind base;
@tailwind components;
@tailwind utilities;
-
+
@layer base {
:root {
--background: 0 0% 100%;
--foreground: 222.2 84% 4.9%;
-
--card: 0 0% 100%;
--card-foreground: 222.2 84% 4.9%;
-
--popover: 0 0% 100%;
--popover-foreground: 222.2 84% 4.9%;
-
--primary: 222.2 47.4% 11.2%;
--primary-foreground: 210 40% 98%;
-
--secondary: 210 40% 96.1%;
--secondary-foreground: 222.2 47.4% 11.2%;
-
--muted: 210 40% 96.1%;
--muted-foreground: 215.4 16.3% 46.9%;
-
--accent: 210 40% 96.1%;
--accent-foreground: 222.2 47.4% 11.2%;
-
--destructive: 0 84.2% 60.2%;
--destructive-foreground: 210 40% 98%;
-
--border: 214.3 31.8% 91.4%;
--input: 214.3 31.8% 91.4%;
--ring: 222.2 84% 4.9%;
-
--radius: 0.5rem;
}
-
+
.dark {
--background: 222.2 84% 4.9%;
--foreground: 210 40% 98%;
-
--card: 222.2 84% 4.9%;
--card-foreground: 210 40% 98%;
-
--popover: 222.2 84% 4.9%;
--popover-foreground: 210 40% 98%;
-
--primary: 210 40% 98%;
--primary-foreground: 222.2 47.4% 11.2%;
-
--secondary: 217.2 32.6% 17.5%;
--secondary-foreground: 210 40% 98%;
-
--muted: 217.2 32.6% 17.5%;
--muted-foreground: 215 20.2% 65.1%;
-
--accent: 217.2 32.6% 17.5%;
--accent-foreground: 210 40% 98%;
-
--destructive: 0 62.8% 30.6%;
--destructive-foreground: 210 40% 98%;
-
--border: 217.2 32.6% 17.5%;
--input: 217.2 32.6% 17.5%;
- --ring: 212.7 26.8% 83.9%;
+ --ring: 212.7 26.8% 83.9;
}
}
-
+
@layer base {
* {
@apply border-border;
@@ -73,4 +56,4 @@
body {
@apply bg-background text-foreground;
}
-}
\ No newline at end of file
+}
diff --git a/src/trpc/react.tsx b/src/trpc/react.tsx
new file mode 100644
index 0000000..b79e1ea
--- /dev/null
+++ b/src/trpc/react.tsx
@@ -0,0 +1,75 @@
+"use client";
+
+import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
+import { loggerLink, unstable_httpBatchStreamLink } from "@trpc/client";
+import { createTRPCReact } from "@trpc/react-query";
+import { useState } from "react";
+
+import { type AppRouter } from "~/server/api/root";
+import { getUrl, transformer } from "./shared";
+import { supabase } from "~/server/supabase/supabaseClient";
+
+export const api = createTRPCReact({
+ overrides: {
+ useMutation: {
+ /**
+ * This function is called whenever a `.useMutation` succeeds
+ **/
+ async onSuccess(opts) {
+ /**
+ * @note that order here matters:
+ * The order here allows route changes in `onSuccess` without
+ * having a flash of content change whilst redirecting.
+ **/
+ // Calls the `onSuccess` defined in the `useQuery()`-options:
+ await opts.originalFn();
+ // Invalidate all queries in the react-query cache:
+ await opts.queryClient.invalidateQueries();
+ },
+ },
+ },
+});
+
+export function TRPCReactProvider(props: {
+ children: React.ReactNode;
+ headers: Headers;
+}) {
+ const [queryClient] = useState(() => new QueryClient());
+
+ const [trpcClient] = useState(() =>
+ api.createClient({
+ transformer,
+
+ links: [
+ loggerLink({
+ enabled: (op) =>
+ process.env.NODE_ENV === "development" ||
+ (op.direction === "down" && op.result instanceof Error),
+ }),
+ unstable_httpBatchStreamLink({
+ url: getUrl(),
+ async headers() {
+ const heads = new Map(props.headers);
+ const { data } = await supabase().auth.getSession();
+
+ if (data.session) {
+ heads.set("authorization", data.session.access_token);
+ }
+
+ heads.set("x-trpc-source", "react");
+
+ return Object.fromEntries(heads);
+ },
+ }),
+ ],
+ }),
+ );
+
+ return (
+
+
+ {props.children}
+
+
+ );
+}
diff --git a/src/trpc/server.ts b/src/trpc/server.ts
new file mode 100644
index 0000000..2201966
--- /dev/null
+++ b/src/trpc/server.ts
@@ -0,0 +1,73 @@
+import {
+ createTRPCProxyClient,
+ loggerLink,
+ TRPCClientError,
+} from "@trpc/client";
+import { cookies, headers } from "next/headers";
+
+import { appRouter } from "~/server/api/root";
+import { transformer } from "./shared";
+import { cache } from "react";
+import { createTRPCContext } from "~/server/api/trpc";
+import { observable } from "@trpc/server/observable";
+import { callProcedure } from "@trpc/server";
+import { type TRPCErrorResponse } from "@trpc/server/rpc";
+
+/**
+ * This wraps the `createTRPCContext` helper and provides the required context for the tRPC API when
+ * handling a tRPC call from a React Server Component.
+ */
+const createContext = cache(() => {
+ const heads = new Headers(headers());
+ const ckies = cookies();
+ const mappedCookies = new Map(ckies);
+ const accessToken = mappedCookies.get("access-token")?.value;
+
+ if (accessToken) {
+ heads.set("authorization", accessToken);
+ }
+
+ heads.set("x-trpc-source", "rsc");
+ heads.set("cookie", ckies.toString());
+
+ return createTRPCContext({
+ headers: heads,
+ });
+});
+
+export const api = createTRPCProxyClient({
+ transformer,
+ links: [
+ loggerLink({
+ enabled: (op) =>
+ process.env.NODE_ENV === "development" ||
+ (op.direction === "down" && op.result instanceof Error),
+ }),
+ /**
+ * Custom RSC link that invokes procedures directly in the server component Don't be too afraid
+ * about the complexity here, it's just wrapping `callProcedure` with an observable to make it a
+ * valid ending link for tRPC.
+ */
+ () =>
+ ({ op }) =>
+ observable((observer) => {
+ createContext()
+ .then((ctx) => {
+ return callProcedure({
+ procedures: appRouter._def.procedures,
+ path: op.path,
+ rawInput: op.input,
+ ctx,
+ type: op.type,
+ });
+ })
+ .then((data) => {
+ observer.next({ result: { data } });
+ observer.complete();
+ })
+ .catch((cause: TRPCErrorResponse) => {
+ observer.error(TRPCClientError.from(cause));
+ });
+ }),
+ ],
+});
diff --git a/src/trpc/shared.ts b/src/trpc/shared.ts
new file mode 100644
index 0000000..96ef2a6
--- /dev/null
+++ b/src/trpc/shared.ts
@@ -0,0 +1,31 @@
+import { type inferRouterInputs, type inferRouterOutputs } from "@trpc/server";
+import superjson from "superjson";
+
+import { type AppRouter } from "~/server/api/root";
+
+export const transformer = superjson;
+
+function getBaseUrl() {
+ if (typeof window !== "undefined") return "";
+ if (process.env.VERCEL_URL) return `https://${process.env.VERCEL_URL}`;
+
+ return `http://localhost:${process.env.PORT ?? 3000}`;
+}
+
+export function getUrl() {
+ return getBaseUrl() + "/api/trpc";
+}
+
+/**
+ * Inference helper for inputs.
+ *
+ * @example type HelloInput = RouterInputs['example']['hello']
+ */
+export type RouterInputs = inferRouterInputs;
+
+/**
+ * Inference helper for outputs.
+ *
+ * @example type HelloOutput = RouterOutputs['example']['hello']
+ */
+export type RouterOutputs = inferRouterOutputs;
diff --git a/src/utils/api.ts b/src/utils/api.ts
deleted file mode 100644
index f4f4ad5..0000000
--- a/src/utils/api.ts
+++ /dev/null
@@ -1,68 +0,0 @@
-/**
- * This is the client-side entrypoint for your tRPC API. It is used to create the `api` object which
- * contains the Next.js App-wrapper, as well as your type-safe React Query hooks.
- *
- * We also create a few inference helpers for input and output types.
- */
-import { httpBatchLink, loggerLink } from "@trpc/client";
-import { createTRPCNext } from "@trpc/next";
-import { type inferRouterInputs, type inferRouterOutputs } from "@trpc/server";
-import superjson from "superjson";
-
-import { type AppRouter } from "~/server/api/root";
-
-const getBaseUrl = () => {
- if (typeof window !== "undefined") return ""; // browser should use relative url
- if (process.env.VERCEL_URL) return `https://${process.env.VERCEL_URL}`; // SSR should use vercel url
- return `http://localhost:${process.env.PORT ?? 3000}`; // dev SSR should use localhost
-};
-
-/** A set of type-safe react-query hooks for your tRPC API. */
-export const api = createTRPCNext({
- config() {
- return {
- /**
- * Transformer used for data de-serialization from the server.
- *
- * @see https://trpc.io/docs/data-transformers
- */
- transformer: superjson,
-
- /**
- * Links used to determine request flow from client to server.
- *
- * @see https://trpc.io/docs/links
- */
- links: [
- loggerLink({
- enabled: (opts) =>
- process.env.NODE_ENV === "development" ||
- (opts.direction === "down" && opts.result instanceof Error),
- }),
- httpBatchLink({
- url: `${getBaseUrl()}/api/trpc`,
- }),
- ],
- };
- },
- /**
- * Whether tRPC should await queries when server rendering pages.
- *
- * @see https://trpc.io/docs/nextjs#ssr-boolean-default-false
- */
- ssr: false,
-});
-
-/**
- * Inference helper for inputs.
- *
- * @example type HelloInput = RouterInputs['example']['hello']
- */
-export type RouterInputs = inferRouterInputs;
-
-/**
- * Inference helper for outputs.
- *
- * @example type HelloOutput = RouterOutputs['example']['hello']
- */
-export type RouterOutputs = inferRouterOutputs;
diff --git a/src/utils/auth.ts b/src/utils/auth.ts
new file mode 100644
index 0000000..19b02a1
--- /dev/null
+++ b/src/utils/auth.ts
@@ -0,0 +1,31 @@
+import { cache } from "react";
+import { cookies } from "next/headers";
+import { supabase } from "~/server/supabase/supabaseClient";
+
+export const getServerUser = cache(async () => {
+ const ckies = cookies();
+ const mappedCookies = new Map(ckies);
+ const accessToken = mappedCookies.get("access-token")?.value;
+ const refreshToken = mappedCookies.get("refresh-token")?.value;
+
+ if (!accessToken || !refreshToken) {
+ return {
+ user: null,
+ session: null,
+ };
+ }
+
+ const { error, data } = await supabase().auth.setSession({
+ access_token: accessToken,
+ refresh_token: refreshToken,
+ });
+
+ if (error) {
+ return {
+ user: null,
+ session: null,
+ };
+ }
+
+ return data;
+});
diff --git a/src/utils/utils.ts b/src/utils/cn.ts
similarity index 100%
rename from src/utils/utils.ts
rename to src/utils/cn.ts
diff --git a/src/utils/getQueryClient.ts b/src/utils/getQueryClient.ts
new file mode 100644
index 0000000..b937d23
--- /dev/null
+++ b/src/utils/getQueryClient.ts
@@ -0,0 +1,4 @@
+import { QueryClient } from "@tanstack/react-query";
+import { cache } from "react";
+
+export const getServerQueryClient = cache(() => new QueryClient());
diff --git a/src/utils/index.ts b/src/utils/index.ts
deleted file mode 100644
index 60c7878..0000000
--- a/src/utils/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export * from "./utils";
-export * from "./api";
diff --git a/supabase/config.toml b/supabase/config.toml
index 39eb6fb..bd335d5 100644
--- a/supabase/config.toml
+++ b/supabase/config.toml
@@ -1,6 +1,6 @@
# A string used to distinguish different Supabase projects on the same host. Defaults to the working
# directory name when running `supabase init`.
-project_id = "PROJECT_NAME"
+project_id = "APP_NAME"
[api]
# Port to use for the API URL.
diff --git a/supabase/migrations/20231004185846_initial_profiles.sql b/supabase/migrations/20231004185846_initial_profiles.sql
index 88cd78b..e351cb0 100644
--- a/supabase/migrations/20231004185846_initial_profiles.sql
+++ b/supabase/migrations/20231004185846_initial_profiles.sql
@@ -1,7 +1,7 @@
create table "public"."profiles" (
"id" uuid not null,
"updated_at" timestamp with time zone,
- "username" text,
+ "email" text,
"full_name" text,
"avatar_url" text
);
@@ -11,7 +11,7 @@ alter table "public"."profiles" enable row level security;
CREATE UNIQUE INDEX profiles_pkey ON public.profiles USING btree (id);
-CREATE UNIQUE INDEX profiles_username_key ON public.profiles USING btree (username);
+CREATE UNIQUE INDEX profiles_email_key ON public.profiles USING btree (email);
alter table "public"."profiles" add constraint "profiles_pkey" PRIMARY KEY using index "profiles_pkey";
@@ -19,11 +19,7 @@ alter table "public"."profiles" add constraint "profiles_id_fkey" FOREIGN KEY (i
alter table "public"."profiles" validate constraint "profiles_id_fkey";
-alter table "public"."profiles" add constraint "profiles_username_key" UNIQUE using index "profiles_username_key";
-
-alter table "public"."profiles" add constraint "username_length" CHECK ((char_length(username) >= 3)) not valid;
-
-alter table "public"."profiles" validate constraint "username_length";
+alter table "public"."profiles" add constraint "profiles_email_key" UNIQUE using index "profiles_email_key";
set check_function_bodies = off;
@@ -33,13 +29,16 @@ CREATE OR REPLACE FUNCTION public.handle_new_user()
SECURITY DEFINER
AS $function$
begin
- insert into public.profiles (id, full_name, avatar_url)
- values (new.id, new.raw_user_meta_data->>'full_name', new.raw_user_meta_data->>'avatar_url');
+ insert into public.profiles (id, full_name, email)
+ values (new.id, new.raw_user_meta_data->>'full_name', new.email);
return new;
end;
$function$
;
-
+create trigger on_auth_user_created
+ after insert on auth.users
+ for each row execute procedure public.handle_new_user();
+
create policy "Public profiles are viewable by everyone."
on "public"."profiles"
as permissive
diff --git a/tailwind.config.ts b/tailwind.config.ts
index 3eb7f91..a9f52fa 100644
--- a/tailwind.config.ts
+++ b/tailwind.config.ts
@@ -1,12 +1,8 @@
import { type Config } from "tailwindcss";
+
export default {
darkMode: ["class"],
- content: [
- "./pages/**/*.{ts,tsx}",
- "./components/**/*.{ts,tsx}",
- "./app/**/*.{ts,tsx}",
- "./src/**/*.{ts,tsx}",
- ],
+ content: ["src/**/*.{ts,tsx}"],
theme: {
container: {
center: true,
diff --git a/tsconfig.json b/tsconfig.json
index bf347be..08e6589 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -1,11 +1,7 @@
{
"compilerOptions": {
"target": "es2017",
- "lib": [
- "dom",
- "dom.iterable",
- "esnext"
- ],
+ "lib": ["dom", "dom.iterable", "esnext"],
"allowJs": true,
"checkJs": true,
"skipLibCheck": true,
@@ -22,9 +18,7 @@
"noUncheckedIndexedAccess": true,
"baseUrl": ".",
"paths": {
- "~/*": [
- "./src/*"
- ]
+ "~/*": ["./src/*"]
},
"plugins": [
{
@@ -41,7 +35,5 @@
"**/*.mjs",
".next/types/**/*.ts"
],
- "exclude": [
- "node_modules"
- ]
+ "exclude": ["node_modules"]
}