├── .env.example ├── .gitignore ├── README.md ├── app ├── api │ ├── middleware.ts │ └── users │ │ ├── [id] │ │ └── route.ts │ │ └── route.ts ├── favicon.ico ├── globals.css ├── layout.tsx └── page.tsx ├── lib ├── drizzle.ts └── seed.ts ├── package.json ├── pnpm-lock.yaml ├── postcss.config.js ├── public ├── github.svg ├── next.svg └── vercel.svg ├── tailwind.config.ts └── tsconfig.json /.env.example: -------------------------------------------------------------------------------- 1 | POSTGRES_URL= 2 | POSTGRES_URL_NON_POOLING= 3 | POSTGRES_USER= 4 | POSTGRES_HOST= 5 | POSTGRES_PASSWORD= 6 | POSTGRES_DATABASE= -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # next.js 12 | /.next/ 13 | /out/ 14 | next-env.d.ts 15 | 16 | # production 17 | /build 18 | 19 | # misc 20 | .DS_Store 21 | *.pem 22 | 23 | # debug 24 | npm-debug.log* 25 | yarn-debug.log* 26 | yarn-error.log* 27 | 28 | # local env files 29 | .env 30 | .env*.local 31 | 32 | # vercel 33 | .vercel 34 | 35 | # Turborepo 36 | .turbo 37 | 38 | # typescript 39 | *.tsbuildinfo 40 | 41 | .vscode -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Next.js SPA + Neon Postgres + Drizzle 2 | 3 | ## Demo 4 | 5 | https://next-spa-drizzle.vercel.app/ 6 | 7 | ## Endpoints 8 | 9 | ### `/users` 10 | 11 | | Method | Description | Request Body | cURL Example | 12 | | ------ | ------------- | ----------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | 13 | | GET | Get all users | - | `curl https://next-spa-drizzle.vercel.app/api/users` | 14 | | POST | Create a user | `{ "name": "string", "email": "string" }` | `curl -X POST https://next-spa-drizzle.vercel.app/api/users -H "Content-Type: application/json" -d '{"name":"John Doe","email":"john@example.com"}'` | 15 | | PATCH | Update a user | `{ "id": number, ...updateData }` | `curl -X PATCH https://next-spa-drizzle.vercel.app/api/users -H "Content-Type: application/json" -d '{"id":1,"name":"John Updated"}'` | 16 | | DELETE | Delete a user | `{ "id": number }` | `curl -X DELETE https://next-spa-drizzle.vercel.app/api/users -H "Content-Type: application/json" -d '{"id":1}'` | 17 | 18 | ### `/users/[id]` 19 | 20 | | Method | Description | URL Params | Request Body | cURL Example | 21 | | ------ | ---------------------- | ---------- | ----------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | 22 | | GET | Get a specific user | id=number | - | `curl https://next-spa-drizzle.vercel.app/api/users/1` | 23 | | PATCH | Update a specific user | id=number | `{ "name": "string", "email": "string" }` | `curl -X PATCH https://next-spa-drizzle.vercel.app/api/users/1 -H "Content-Type: application/json" -d '{"name":"John Updated"}'` | 24 | | DELETE | Delete a specific user | id=number | - | `curl -X DELETE https://next-spa-drizzle.vercel.app/api/users/1` | 25 | -------------------------------------------------------------------------------- /app/api/middleware.ts: -------------------------------------------------------------------------------- 1 | import { NextRequest, NextResponse } from 'next/server'; 2 | 3 | type RouteHandler> = ( 4 | req: NextRequest, 5 | ctx: { params: T } 6 | ) => Promise | Response; 7 | 8 | export function withMiddleware>( 9 | handler: RouteHandler 10 | ): RouteHandler { 11 | return async (req: NextRequest, ctx: { params: T }) => { 12 | try { 13 | console.log(`Middleware: Request to ${req.method} ${req.url}`); 14 | 15 | // Check if the request is coming from an allowed origin 16 | if (!isAllowedOrigin(req)) { 17 | return NextResponse.json({ error: 'Forbidden' }, { status: 403 }); 18 | } 19 | 20 | // Placeholder for authentication logic 21 | const isAuthenticated = await checkAuth(req); 22 | if (!isAuthenticated) { 23 | return NextResponse.json({ error: 'Unauthorized' }, { status: 401 }); 24 | } 25 | 26 | // Call the original handler 27 | const result = await handler(req, ctx); 28 | 29 | // Log after executing the handler 30 | console.log(`Middleware: Completed ${req.method} ${req.url}`); 31 | 32 | return result; 33 | } catch (error) { 34 | console.error( 35 | `Middleware: Error in route handler: ${req.method} ${req.url}`, 36 | error 37 | ); 38 | return NextResponse.json( 39 | { error: 'Internal Server Error' }, 40 | { status: 500 } 41 | ); 42 | } 43 | }; 44 | } 45 | 46 | function isAllowedOrigin(req: NextRequest): boolean { 47 | const referer = req.headers.get('referer'); 48 | const host = req.headers.get('host'); 49 | 50 | // Allow requests from the same origin 51 | if (referer && host) { 52 | const refererUrl = new URL(referer); 53 | return refererUrl.host === host; 54 | } 55 | 56 | if (process.env.NODE_ENV === 'development' && host?.includes('localhost')) { 57 | return true; 58 | } 59 | 60 | return false; 61 | } 62 | 63 | async function checkAuth(req: NextRequest): Promise { 64 | // Placeholder authentication logic 65 | // You can implement your actual auth check here 66 | const authToken = req.headers.get('authorization'); 67 | return true; // For now, always return true 68 | } 69 | -------------------------------------------------------------------------------- /app/api/users/[id]/route.ts: -------------------------------------------------------------------------------- 1 | import { db, users } from '@/lib/drizzle'; 2 | import { eq } from 'drizzle-orm'; 3 | import { withMiddleware } from '../../middleware'; 4 | import { NextRequest } from 'next/server'; 5 | 6 | export const GET = withMiddleware<{ id: string }>( 7 | async (request: NextRequest, { params }: { params: { id: string } }) => { 8 | let user = await db 9 | .select() 10 | .from(users) 11 | .where(eq(users.id, Number(params.id))); 12 | 13 | if (user.length === 0) { 14 | return Response.json({ error: 'User not found' }, { status: 404 }); 15 | } 16 | 17 | return Response.json(user[0]); 18 | } 19 | ); 20 | 21 | export const PATCH = withMiddleware<{ id: string }>( 22 | async (request: NextRequest, { params }: { params: { id: string } }) => { 23 | let updateData = await request.json(); 24 | let updatedUser = await db 25 | .update(users) 26 | .set(updateData) 27 | .where(eq(users.id, Number(params.id))) 28 | .returning(); 29 | 30 | if (updatedUser.length === 0) { 31 | return Response.json({ error: 'User not found' }, { status: 404 }); 32 | } 33 | 34 | return Response.json(updatedUser[0]); 35 | } 36 | ); 37 | 38 | export const DELETE = withMiddleware<{ id: string }>( 39 | async (request: NextRequest, { params }: { params: { id: string } }) => { 40 | let deletedUser = await db 41 | .delete(users) 42 | .where(eq(users.id, Number(params.id))) 43 | .returning(); 44 | 45 | if (deletedUser.length === 0) { 46 | return Response.json({ error: 'User not found' }, { status: 404 }); 47 | } 48 | 49 | return Response.json({ message: 'User deleted successfully' }); 50 | } 51 | ); 52 | -------------------------------------------------------------------------------- /app/api/users/route.ts: -------------------------------------------------------------------------------- 1 | import { db, users } from '@/lib/drizzle'; 2 | import { eq } from 'drizzle-orm'; 3 | import { withMiddleware } from '../middleware'; 4 | import { NextRequest } from 'next/server'; 5 | 6 | export const GET = withMiddleware(async () => { 7 | let allUsers = await db.select().from(users); 8 | return Response.json(allUsers); 9 | }); 10 | 11 | export const POST = withMiddleware(async (request: NextRequest) => { 12 | let userData = await request.json(); 13 | let newUser = await db.insert(users).values(userData).returning(); 14 | return Response.json(newUser[0], { status: 201 }); 15 | }); 16 | 17 | export const PATCH = withMiddleware(async (request: NextRequest) => { 18 | let { id, ...updateData } = await request.json(); 19 | let updatedUser = await db 20 | .update(users) 21 | .set(updateData) 22 | .where(eq(users.id, id)) 23 | .returning(); 24 | 25 | if (updatedUser.length === 0) { 26 | return Response.json({ error: 'User not found' }, { status: 404 }); 27 | } 28 | 29 | return Response.json(updatedUser[0]); 30 | }); 31 | 32 | export const DELETE = withMiddleware(async (request: NextRequest) => { 33 | let { id } = await request.json(); 34 | let deletedUser = await db.delete(users).where(eq(users.id, id)).returning(); 35 | 36 | if (deletedUser.length === 0) { 37 | return Response.json({ error: 'User not found' }, { status: 404 }); 38 | } 39 | 40 | return Response.json({ message: 'User deleted successfully' }); 41 | }); 42 | -------------------------------------------------------------------------------- /app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vercel-labs/next-spa-drizzle/b64dc67c497ad5197a2b55ede3b734e75c538943/app/favicon.ico -------------------------------------------------------------------------------- /app/globals.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | -------------------------------------------------------------------------------- /app/layout.tsx: -------------------------------------------------------------------------------- 1 | import './globals.css'; 2 | 3 | export const metadata = { 4 | title: 'Next.js SPA + Neon Postgres + Drizzle', 5 | }; 6 | 7 | export default function RootLayout({ 8 | children, 9 | }: { 10 | children: React.ReactNode; 11 | }) { 12 | return ( 13 | 14 | {children} 15 | 16 | ); 17 | } 18 | -------------------------------------------------------------------------------- /app/page.tsx: -------------------------------------------------------------------------------- 1 | 'use client'; 2 | 3 | import { users } from '@/lib/drizzle'; 4 | import { useState, useEffect } from 'react'; 5 | 6 | type User = typeof users.$inferSelect; 7 | 8 | export default function UserList() { 9 | const [users, setUsers] = useState([]); 10 | const [loading, setLoading] = useState(true); 11 | 12 | useEffect(() => { 13 | async function fetchUsers() { 14 | try { 15 | const response = await fetch('/api/users'); 16 | const data = await response.json(); 17 | setUsers(data); 18 | } catch (error) { 19 | console.error('Error fetching users:', error); 20 | } 21 | 22 | setLoading(false); 23 | } 24 | 25 | fetchUsers(); 26 | }, []); 27 | 28 | return ( 29 |
30 |

Users

31 | {loading &&

Loading users...

} 32 | {!loading && users.length === 0 &&

No users found.

} 33 | {!loading && users.length > 0 && ( 34 |
    35 | {users.map((user: User) => ( 36 |
  • 37 | {user.name} ({user.email}) 38 |
  • 39 | ))} 40 |
41 | )} 42 |
43 | ); 44 | } 45 | -------------------------------------------------------------------------------- /lib/drizzle.ts: -------------------------------------------------------------------------------- 1 | import { 2 | pgTable, 3 | serial, 4 | text, 5 | timestamp, 6 | uniqueIndex, 7 | } from 'drizzle-orm/pg-core'; 8 | import { InferSelectModel, InferInsertModel } from 'drizzle-orm'; 9 | import { sql } from '@vercel/postgres'; 10 | import { drizzle } from 'drizzle-orm/vercel-postgres'; 11 | 12 | export const users = pgTable( 13 | 'users', 14 | { 15 | id: serial('id').primaryKey(), 16 | name: text('name').notNull(), 17 | email: text('email').notNull(), 18 | createdAt: timestamp('createdAt').defaultNow().notNull(), 19 | }, 20 | (users) => { 21 | return { 22 | uniqueIdx: uniqueIndex('unique_idx').on(users.email), 23 | }; 24 | } 25 | ); 26 | 27 | export type User = InferSelectModel; 28 | export type NewUser = InferInsertModel; 29 | 30 | // Connect to Vercel Postgres 31 | export const db = drizzle(sql); 32 | -------------------------------------------------------------------------------- /lib/seed.ts: -------------------------------------------------------------------------------- 1 | import { sql } from '@vercel/postgres'; 2 | import { db } from '@/lib/drizzle'; 3 | import { users, User } from './drizzle'; 4 | 5 | export async function seed() { 6 | const createTable = await sql.query(` 7 | CREATE TABLE IF NOT EXISTS users ( 8 | id SERIAL PRIMARY KEY, 9 | name VARCHAR(255) NOT NULL, 10 | email VARCHAR(255) UNIQUE NOT NULL, 11 | image VARCHAR(255), 12 | "createdAt" TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP 13 | ); 14 | `); 15 | console.log(`Created "users" table`); 16 | 17 | const insertedUsers: User[] = await db 18 | .insert(users) 19 | .values([ 20 | { 21 | name: 'Nuno Maduro', 22 | email: 'nuno@gmail.com', 23 | }, 24 | { 25 | name: 'Fernando Daciuk', 26 | email: 'fernando@gmail.com', 27 | }, 28 | ]) 29 | .returning(); 30 | 31 | console.log(`Seeded ${insertedUsers.length} users`); 32 | 33 | return { 34 | createTable, 35 | insertedUsers, 36 | }; 37 | } 38 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "scripts": { 4 | "dev": "next dev --turbo", 5 | "build": "next build", 6 | "start": "next start" 7 | }, 8 | "dependencies": { 9 | "@types/node": "22.2.0", 10 | "@types/react": "18.3.3", 11 | "@types/react-dom": "18.3.0", 12 | "@vercel/postgres": "0.9.0", 13 | "autoprefixer": "10.4.20", 14 | "drizzle-kit": "^0.24.0", 15 | "drizzle-orm": "^0.33.0", 16 | "next": "14.2.5", 17 | "postcss": "8.4.41", 18 | "react": "18.3.1", 19 | "react-dom": "18.3.1", 20 | "tailwindcss": "3.4.9", 21 | "typescript": "5.5.4" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | '@types/node': 12 | specifier: 22.2.0 13 | version: 22.2.0 14 | '@types/react': 15 | specifier: 18.3.3 16 | version: 18.3.3 17 | '@types/react-dom': 18 | specifier: 18.3.0 19 | version: 18.3.0 20 | '@vercel/postgres': 21 | specifier: 0.9.0 22 | version: 0.9.0 23 | autoprefixer: 24 | specifier: 10.4.20 25 | version: 10.4.20(postcss@8.4.41) 26 | drizzle-kit: 27 | specifier: ^0.24.0 28 | version: 0.24.0 29 | drizzle-orm: 30 | specifier: ^0.33.0 31 | version: 0.33.0(@neondatabase/serverless@0.9.4)(@types/pg@8.11.6)(@types/react@18.3.3)(@vercel/postgres@0.9.0)(react@18.3.1) 32 | next: 33 | specifier: 14.2.5 34 | version: 14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 35 | postcss: 36 | specifier: 8.4.41 37 | version: 8.4.41 38 | react: 39 | specifier: 18.3.1 40 | version: 18.3.1 41 | react-dom: 42 | specifier: 18.3.1 43 | version: 18.3.1(react@18.3.1) 44 | tailwindcss: 45 | specifier: 3.4.9 46 | version: 3.4.9 47 | typescript: 48 | specifier: 5.5.4 49 | version: 5.5.4 50 | 51 | packages: 52 | 53 | '@alloc/quick-lru@5.2.0': 54 | resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} 55 | engines: {node: '>=10'} 56 | 57 | '@drizzle-team/brocli@0.8.2': 58 | resolution: {integrity: sha512-zTrFENsqGvOkBOuHDC1pXCkDXNd2UhP4lI3gYGhQ1R1SPeAAfqzPsV1dcpMy4uNU6kB5VpU5NGhvwxVNETR02A==} 59 | 60 | '@esbuild-kit/core-utils@3.3.2': 61 | resolution: {integrity: sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==} 62 | 63 | '@esbuild-kit/esm-loader@2.6.5': 64 | resolution: {integrity: sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==} 65 | 66 | '@esbuild/aix-ppc64@0.19.12': 67 | resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} 68 | engines: {node: '>=12'} 69 | cpu: [ppc64] 70 | os: [aix] 71 | 72 | '@esbuild/android-arm64@0.18.20': 73 | resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} 74 | engines: {node: '>=12'} 75 | cpu: [arm64] 76 | os: [android] 77 | 78 | '@esbuild/android-arm64@0.19.12': 79 | resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} 80 | engines: {node: '>=12'} 81 | cpu: [arm64] 82 | os: [android] 83 | 84 | '@esbuild/android-arm@0.18.20': 85 | resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} 86 | engines: {node: '>=12'} 87 | cpu: [arm] 88 | os: [android] 89 | 90 | '@esbuild/android-arm@0.19.12': 91 | resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} 92 | engines: {node: '>=12'} 93 | cpu: [arm] 94 | os: [android] 95 | 96 | '@esbuild/android-x64@0.18.20': 97 | resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} 98 | engines: {node: '>=12'} 99 | cpu: [x64] 100 | os: [android] 101 | 102 | '@esbuild/android-x64@0.19.12': 103 | resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} 104 | engines: {node: '>=12'} 105 | cpu: [x64] 106 | os: [android] 107 | 108 | '@esbuild/darwin-arm64@0.18.20': 109 | resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} 110 | engines: {node: '>=12'} 111 | cpu: [arm64] 112 | os: [darwin] 113 | 114 | '@esbuild/darwin-arm64@0.19.12': 115 | resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} 116 | engines: {node: '>=12'} 117 | cpu: [arm64] 118 | os: [darwin] 119 | 120 | '@esbuild/darwin-x64@0.18.20': 121 | resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} 122 | engines: {node: '>=12'} 123 | cpu: [x64] 124 | os: [darwin] 125 | 126 | '@esbuild/darwin-x64@0.19.12': 127 | resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} 128 | engines: {node: '>=12'} 129 | cpu: [x64] 130 | os: [darwin] 131 | 132 | '@esbuild/freebsd-arm64@0.18.20': 133 | resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} 134 | engines: {node: '>=12'} 135 | cpu: [arm64] 136 | os: [freebsd] 137 | 138 | '@esbuild/freebsd-arm64@0.19.12': 139 | resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} 140 | engines: {node: '>=12'} 141 | cpu: [arm64] 142 | os: [freebsd] 143 | 144 | '@esbuild/freebsd-x64@0.18.20': 145 | resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} 146 | engines: {node: '>=12'} 147 | cpu: [x64] 148 | os: [freebsd] 149 | 150 | '@esbuild/freebsd-x64@0.19.12': 151 | resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} 152 | engines: {node: '>=12'} 153 | cpu: [x64] 154 | os: [freebsd] 155 | 156 | '@esbuild/linux-arm64@0.18.20': 157 | resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} 158 | engines: {node: '>=12'} 159 | cpu: [arm64] 160 | os: [linux] 161 | 162 | '@esbuild/linux-arm64@0.19.12': 163 | resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} 164 | engines: {node: '>=12'} 165 | cpu: [arm64] 166 | os: [linux] 167 | 168 | '@esbuild/linux-arm@0.18.20': 169 | resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} 170 | engines: {node: '>=12'} 171 | cpu: [arm] 172 | os: [linux] 173 | 174 | '@esbuild/linux-arm@0.19.12': 175 | resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} 176 | engines: {node: '>=12'} 177 | cpu: [arm] 178 | os: [linux] 179 | 180 | '@esbuild/linux-ia32@0.18.20': 181 | resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} 182 | engines: {node: '>=12'} 183 | cpu: [ia32] 184 | os: [linux] 185 | 186 | '@esbuild/linux-ia32@0.19.12': 187 | resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} 188 | engines: {node: '>=12'} 189 | cpu: [ia32] 190 | os: [linux] 191 | 192 | '@esbuild/linux-loong64@0.18.20': 193 | resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} 194 | engines: {node: '>=12'} 195 | cpu: [loong64] 196 | os: [linux] 197 | 198 | '@esbuild/linux-loong64@0.19.12': 199 | resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} 200 | engines: {node: '>=12'} 201 | cpu: [loong64] 202 | os: [linux] 203 | 204 | '@esbuild/linux-mips64el@0.18.20': 205 | resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} 206 | engines: {node: '>=12'} 207 | cpu: [mips64el] 208 | os: [linux] 209 | 210 | '@esbuild/linux-mips64el@0.19.12': 211 | resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} 212 | engines: {node: '>=12'} 213 | cpu: [mips64el] 214 | os: [linux] 215 | 216 | '@esbuild/linux-ppc64@0.18.20': 217 | resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} 218 | engines: {node: '>=12'} 219 | cpu: [ppc64] 220 | os: [linux] 221 | 222 | '@esbuild/linux-ppc64@0.19.12': 223 | resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} 224 | engines: {node: '>=12'} 225 | cpu: [ppc64] 226 | os: [linux] 227 | 228 | '@esbuild/linux-riscv64@0.18.20': 229 | resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} 230 | engines: {node: '>=12'} 231 | cpu: [riscv64] 232 | os: [linux] 233 | 234 | '@esbuild/linux-riscv64@0.19.12': 235 | resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} 236 | engines: {node: '>=12'} 237 | cpu: [riscv64] 238 | os: [linux] 239 | 240 | '@esbuild/linux-s390x@0.18.20': 241 | resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} 242 | engines: {node: '>=12'} 243 | cpu: [s390x] 244 | os: [linux] 245 | 246 | '@esbuild/linux-s390x@0.19.12': 247 | resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} 248 | engines: {node: '>=12'} 249 | cpu: [s390x] 250 | os: [linux] 251 | 252 | '@esbuild/linux-x64@0.18.20': 253 | resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} 254 | engines: {node: '>=12'} 255 | cpu: [x64] 256 | os: [linux] 257 | 258 | '@esbuild/linux-x64@0.19.12': 259 | resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} 260 | engines: {node: '>=12'} 261 | cpu: [x64] 262 | os: [linux] 263 | 264 | '@esbuild/netbsd-x64@0.18.20': 265 | resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} 266 | engines: {node: '>=12'} 267 | cpu: [x64] 268 | os: [netbsd] 269 | 270 | '@esbuild/netbsd-x64@0.19.12': 271 | resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} 272 | engines: {node: '>=12'} 273 | cpu: [x64] 274 | os: [netbsd] 275 | 276 | '@esbuild/openbsd-x64@0.18.20': 277 | resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} 278 | engines: {node: '>=12'} 279 | cpu: [x64] 280 | os: [openbsd] 281 | 282 | '@esbuild/openbsd-x64@0.19.12': 283 | resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} 284 | engines: {node: '>=12'} 285 | cpu: [x64] 286 | os: [openbsd] 287 | 288 | '@esbuild/sunos-x64@0.18.20': 289 | resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} 290 | engines: {node: '>=12'} 291 | cpu: [x64] 292 | os: [sunos] 293 | 294 | '@esbuild/sunos-x64@0.19.12': 295 | resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} 296 | engines: {node: '>=12'} 297 | cpu: [x64] 298 | os: [sunos] 299 | 300 | '@esbuild/win32-arm64@0.18.20': 301 | resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} 302 | engines: {node: '>=12'} 303 | cpu: [arm64] 304 | os: [win32] 305 | 306 | '@esbuild/win32-arm64@0.19.12': 307 | resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} 308 | engines: {node: '>=12'} 309 | cpu: [arm64] 310 | os: [win32] 311 | 312 | '@esbuild/win32-ia32@0.18.20': 313 | resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} 314 | engines: {node: '>=12'} 315 | cpu: [ia32] 316 | os: [win32] 317 | 318 | '@esbuild/win32-ia32@0.19.12': 319 | resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} 320 | engines: {node: '>=12'} 321 | cpu: [ia32] 322 | os: [win32] 323 | 324 | '@esbuild/win32-x64@0.18.20': 325 | resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} 326 | engines: {node: '>=12'} 327 | cpu: [x64] 328 | os: [win32] 329 | 330 | '@esbuild/win32-x64@0.19.12': 331 | resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} 332 | engines: {node: '>=12'} 333 | cpu: [x64] 334 | os: [win32] 335 | 336 | '@isaacs/cliui@8.0.2': 337 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} 338 | engines: {node: '>=12'} 339 | 340 | '@jridgewell/gen-mapping@0.3.5': 341 | resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} 342 | engines: {node: '>=6.0.0'} 343 | 344 | '@jridgewell/resolve-uri@3.1.2': 345 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 346 | engines: {node: '>=6.0.0'} 347 | 348 | '@jridgewell/set-array@1.2.1': 349 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} 350 | engines: {node: '>=6.0.0'} 351 | 352 | '@jridgewell/sourcemap-codec@1.5.0': 353 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} 354 | 355 | '@jridgewell/trace-mapping@0.3.25': 356 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} 357 | 358 | '@neondatabase/serverless@0.9.4': 359 | resolution: {integrity: sha512-D0AXgJh6xkf+XTlsO7iwE2Q1w8981E1cLCPAALMU2YKtkF/1SF6BiAzYARZFYo175ON+b1RNIy9TdSFHm5nteg==} 360 | 361 | '@next/env@14.2.5': 362 | resolution: {integrity: sha512-/zZGkrTOsraVfYjGP8uM0p6r0BDT6xWpkjdVbcz66PJVSpwXX3yNiRycxAuDfBKGWBrZBXRuK/YVlkNgxHGwmA==} 363 | 364 | '@next/swc-darwin-arm64@14.2.5': 365 | resolution: {integrity: sha512-/9zVxJ+K9lrzSGli1///ujyRfon/ZneeZ+v4ptpiPoOU+GKZnm8Wj8ELWU1Pm7GHltYRBklmXMTUqM/DqQ99FQ==} 366 | engines: {node: '>= 10'} 367 | cpu: [arm64] 368 | os: [darwin] 369 | 370 | '@next/swc-darwin-x64@14.2.5': 371 | resolution: {integrity: sha512-vXHOPCwfDe9qLDuq7U1OYM2wUY+KQ4Ex6ozwsKxp26BlJ6XXbHleOUldenM67JRyBfVjv371oneEvYd3H2gNSA==} 372 | engines: {node: '>= 10'} 373 | cpu: [x64] 374 | os: [darwin] 375 | 376 | '@next/swc-linux-arm64-gnu@14.2.5': 377 | resolution: {integrity: sha512-vlhB8wI+lj8q1ExFW8lbWutA4M2ZazQNvMWuEDqZcuJJc78iUnLdPPunBPX8rC4IgT6lIx/adB+Cwrl99MzNaA==} 378 | engines: {node: '>= 10'} 379 | cpu: [arm64] 380 | os: [linux] 381 | 382 | '@next/swc-linux-arm64-musl@14.2.5': 383 | resolution: {integrity: sha512-NpDB9NUR2t0hXzJJwQSGu1IAOYybsfeB+LxpGsXrRIb7QOrYmidJz3shzY8cM6+rO4Aojuef0N/PEaX18pi9OA==} 384 | engines: {node: '>= 10'} 385 | cpu: [arm64] 386 | os: [linux] 387 | 388 | '@next/swc-linux-x64-gnu@14.2.5': 389 | resolution: {integrity: sha512-8XFikMSxWleYNryWIjiCX+gU201YS+erTUidKdyOVYi5qUQo/gRxv/3N1oZFCgqpesN6FPeqGM72Zve+nReVXQ==} 390 | engines: {node: '>= 10'} 391 | cpu: [x64] 392 | os: [linux] 393 | 394 | '@next/swc-linux-x64-musl@14.2.5': 395 | resolution: {integrity: sha512-6QLwi7RaYiQDcRDSU/os40r5o06b5ue7Jsk5JgdRBGGp8l37RZEh9JsLSM8QF0YDsgcosSeHjglgqi25+m04IQ==} 396 | engines: {node: '>= 10'} 397 | cpu: [x64] 398 | os: [linux] 399 | 400 | '@next/swc-win32-arm64-msvc@14.2.5': 401 | resolution: {integrity: sha512-1GpG2VhbspO+aYoMOQPQiqc/tG3LzmsdBH0LhnDS3JrtDx2QmzXe0B6mSZZiN3Bq7IOMXxv1nlsjzoS1+9mzZw==} 402 | engines: {node: '>= 10'} 403 | cpu: [arm64] 404 | os: [win32] 405 | 406 | '@next/swc-win32-ia32-msvc@14.2.5': 407 | resolution: {integrity: sha512-Igh9ZlxwvCDsu6438FXlQTHlRno4gFpJzqPjSIBZooD22tKeI4fE/YMRoHVJHmrQ2P5YL1DoZ0qaOKkbeFWeMg==} 408 | engines: {node: '>= 10'} 409 | cpu: [ia32] 410 | os: [win32] 411 | 412 | '@next/swc-win32-x64-msvc@14.2.5': 413 | resolution: {integrity: sha512-tEQ7oinq1/CjSG9uSTerca3v4AZ+dFa+4Yu6ihaG8Ud8ddqLQgFGcnwYls13H5X5CPDPZJdYxyeMui6muOLd4g==} 414 | engines: {node: '>= 10'} 415 | cpu: [x64] 416 | os: [win32] 417 | 418 | '@nodelib/fs.scandir@2.1.5': 419 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 420 | engines: {node: '>= 8'} 421 | 422 | '@nodelib/fs.stat@2.0.5': 423 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 424 | engines: {node: '>= 8'} 425 | 426 | '@nodelib/fs.walk@1.2.8': 427 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 428 | engines: {node: '>= 8'} 429 | 430 | '@pkgjs/parseargs@0.11.0': 431 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} 432 | engines: {node: '>=14'} 433 | 434 | '@swc/counter@0.1.3': 435 | resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} 436 | 437 | '@swc/helpers@0.5.5': 438 | resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} 439 | 440 | '@types/node@22.2.0': 441 | resolution: {integrity: sha512-bm6EG6/pCpkxDf/0gDNDdtDILMOHgaQBVOJGdwsqClnxA3xL6jtMv76rLBc006RVMWbmaf0xbmom4Z/5o2nRkQ==} 442 | 443 | '@types/pg@8.11.6': 444 | resolution: {integrity: sha512-/2WmmBXHLsfRqzfHW7BNZ8SbYzE8OSk7i3WjFYvfgRHj7S1xj+16Je5fUKv3lVdVzk/zn9TXOqf+avFCFIE0yQ==} 445 | 446 | '@types/prop-types@15.7.12': 447 | resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} 448 | 449 | '@types/react-dom@18.3.0': 450 | resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==} 451 | 452 | '@types/react@18.3.3': 453 | resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==} 454 | 455 | '@vercel/postgres@0.9.0': 456 | resolution: {integrity: sha512-WiI2g3+ce2g1u1gP41MoDj2DsMuQQ+us7vHobysRixKECGaLHpfTI7DuVZmHU087ozRAGr3GocSyqmWLLo+fig==} 457 | engines: {node: '>=14.6'} 458 | 459 | ansi-regex@5.0.1: 460 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 461 | engines: {node: '>=8'} 462 | 463 | ansi-regex@6.0.1: 464 | resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} 465 | engines: {node: '>=12'} 466 | 467 | ansi-styles@4.3.0: 468 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 469 | engines: {node: '>=8'} 470 | 471 | ansi-styles@6.2.1: 472 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 473 | engines: {node: '>=12'} 474 | 475 | any-promise@1.3.0: 476 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} 477 | 478 | anymatch@3.1.3: 479 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 480 | engines: {node: '>= 8'} 481 | 482 | arg@5.0.2: 483 | resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} 484 | 485 | autoprefixer@10.4.20: 486 | resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} 487 | engines: {node: ^10 || ^12 || >=14} 488 | hasBin: true 489 | peerDependencies: 490 | postcss: ^8.1.0 491 | 492 | balanced-match@1.0.2: 493 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 494 | 495 | binary-extensions@2.3.0: 496 | resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} 497 | engines: {node: '>=8'} 498 | 499 | brace-expansion@2.0.1: 500 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 501 | 502 | braces@3.0.3: 503 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 504 | engines: {node: '>=8'} 505 | 506 | browserslist@4.23.3: 507 | resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} 508 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 509 | hasBin: true 510 | 511 | buffer-from@1.1.2: 512 | resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} 513 | 514 | bufferutil@4.0.8: 515 | resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} 516 | engines: {node: '>=6.14.2'} 517 | 518 | busboy@1.6.0: 519 | resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} 520 | engines: {node: '>=10.16.0'} 521 | 522 | camelcase-css@2.0.1: 523 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} 524 | engines: {node: '>= 6'} 525 | 526 | caniuse-lite@1.0.30001651: 527 | resolution: {integrity: sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==} 528 | 529 | chokidar@3.6.0: 530 | resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} 531 | engines: {node: '>= 8.10.0'} 532 | 533 | client-only@0.0.1: 534 | resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} 535 | 536 | color-convert@2.0.1: 537 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 538 | engines: {node: '>=7.0.0'} 539 | 540 | color-name@1.1.4: 541 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 542 | 543 | commander@4.1.1: 544 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} 545 | engines: {node: '>= 6'} 546 | 547 | cross-spawn@7.0.3: 548 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 549 | engines: {node: '>= 8'} 550 | 551 | cssesc@3.0.0: 552 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 553 | engines: {node: '>=4'} 554 | hasBin: true 555 | 556 | csstype@3.1.3: 557 | resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} 558 | 559 | debug@4.3.6: 560 | resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} 561 | engines: {node: '>=6.0'} 562 | peerDependencies: 563 | supports-color: '*' 564 | peerDependenciesMeta: 565 | supports-color: 566 | optional: true 567 | 568 | didyoumean@1.2.2: 569 | resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} 570 | 571 | dlv@1.1.3: 572 | resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} 573 | 574 | drizzle-kit@0.24.0: 575 | resolution: {integrity: sha512-rUl5Rf5HLOVkAwHEVEi8xgulIRWzoys0q77RHGCxv5e9v8AI3JGFg7Ug5K1kn513RwNZbuNJMUKOXo0j8kPRgg==} 576 | hasBin: true 577 | 578 | drizzle-orm@0.33.0: 579 | resolution: {integrity: sha512-SHy72R2Rdkz0LEq0PSG/IdvnT3nGiWuRk+2tXZQ90GVq/XQhpCzu/EFT3V2rox+w8MlkBQxifF8pCStNYnERfA==} 580 | peerDependencies: 581 | '@aws-sdk/client-rds-data': '>=3' 582 | '@cloudflare/workers-types': '>=3' 583 | '@electric-sql/pglite': '>=0.1.1' 584 | '@libsql/client': '*' 585 | '@neondatabase/serverless': '>=0.1' 586 | '@op-engineering/op-sqlite': '>=2' 587 | '@opentelemetry/api': ^1.4.1 588 | '@planetscale/database': '>=1' 589 | '@prisma/client': '*' 590 | '@tidbcloud/serverless': '*' 591 | '@types/better-sqlite3': '*' 592 | '@types/pg': '*' 593 | '@types/react': '>=18' 594 | '@types/sql.js': '*' 595 | '@vercel/postgres': '>=0.8.0' 596 | '@xata.io/client': '*' 597 | better-sqlite3: '>=7' 598 | bun-types: '*' 599 | expo-sqlite: '>=13.2.0' 600 | knex: '*' 601 | kysely: '*' 602 | mysql2: '>=2' 603 | pg: '>=8' 604 | postgres: '>=3' 605 | prisma: '*' 606 | react: '>=18' 607 | sql.js: '>=1' 608 | sqlite3: '>=5' 609 | peerDependenciesMeta: 610 | '@aws-sdk/client-rds-data': 611 | optional: true 612 | '@cloudflare/workers-types': 613 | optional: true 614 | '@electric-sql/pglite': 615 | optional: true 616 | '@libsql/client': 617 | optional: true 618 | '@neondatabase/serverless': 619 | optional: true 620 | '@op-engineering/op-sqlite': 621 | optional: true 622 | '@opentelemetry/api': 623 | optional: true 624 | '@planetscale/database': 625 | optional: true 626 | '@prisma/client': 627 | optional: true 628 | '@tidbcloud/serverless': 629 | optional: true 630 | '@types/better-sqlite3': 631 | optional: true 632 | '@types/pg': 633 | optional: true 634 | '@types/react': 635 | optional: true 636 | '@types/sql.js': 637 | optional: true 638 | '@vercel/postgres': 639 | optional: true 640 | '@xata.io/client': 641 | optional: true 642 | better-sqlite3: 643 | optional: true 644 | bun-types: 645 | optional: true 646 | expo-sqlite: 647 | optional: true 648 | knex: 649 | optional: true 650 | kysely: 651 | optional: true 652 | mysql2: 653 | optional: true 654 | pg: 655 | optional: true 656 | postgres: 657 | optional: true 658 | prisma: 659 | optional: true 660 | react: 661 | optional: true 662 | sql.js: 663 | optional: true 664 | sqlite3: 665 | optional: true 666 | 667 | eastasianwidth@0.2.0: 668 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 669 | 670 | electron-to-chromium@1.5.6: 671 | resolution: {integrity: sha512-jwXWsM5RPf6j9dPYzaorcBSUg6AiqocPEyMpkchkvntaH9HGfOOMZwxMJjDY/XEs3T5dM7uyH1VhRMkqUU9qVw==} 672 | 673 | emoji-regex@8.0.0: 674 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 675 | 676 | emoji-regex@9.2.2: 677 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 678 | 679 | esbuild-register@3.6.0: 680 | resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==} 681 | peerDependencies: 682 | esbuild: '>=0.12 <1' 683 | 684 | esbuild@0.18.20: 685 | resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} 686 | engines: {node: '>=12'} 687 | hasBin: true 688 | 689 | esbuild@0.19.12: 690 | resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} 691 | engines: {node: '>=12'} 692 | hasBin: true 693 | 694 | escalade@3.1.2: 695 | resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} 696 | engines: {node: '>=6'} 697 | 698 | fast-glob@3.3.2: 699 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} 700 | engines: {node: '>=8.6.0'} 701 | 702 | fastq@1.17.1: 703 | resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} 704 | 705 | fill-range@7.1.1: 706 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 707 | engines: {node: '>=8'} 708 | 709 | foreground-child@3.3.0: 710 | resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} 711 | engines: {node: '>=14'} 712 | 713 | fraction.js@4.3.7: 714 | resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} 715 | 716 | fsevents@2.3.3: 717 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 718 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 719 | os: [darwin] 720 | 721 | function-bind@1.1.2: 722 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 723 | 724 | get-tsconfig@4.7.6: 725 | resolution: {integrity: sha512-ZAqrLlu18NbDdRaHq+AKXzAmqIUPswPWKUchfytdAjiRFnCe5ojG2bstg6mRiZabkKfCoL/e98pbBELIV/YCeA==} 726 | 727 | glob-parent@5.1.2: 728 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 729 | engines: {node: '>= 6'} 730 | 731 | glob-parent@6.0.2: 732 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 733 | engines: {node: '>=10.13.0'} 734 | 735 | glob@10.4.5: 736 | resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} 737 | hasBin: true 738 | 739 | graceful-fs@4.2.11: 740 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 741 | 742 | hasown@2.0.2: 743 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} 744 | engines: {node: '>= 0.4'} 745 | 746 | is-binary-path@2.1.0: 747 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 748 | engines: {node: '>=8'} 749 | 750 | is-core-module@2.15.0: 751 | resolution: {integrity: sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==} 752 | engines: {node: '>= 0.4'} 753 | 754 | is-extglob@2.1.1: 755 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 756 | engines: {node: '>=0.10.0'} 757 | 758 | is-fullwidth-code-point@3.0.0: 759 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 760 | engines: {node: '>=8'} 761 | 762 | is-glob@4.0.3: 763 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 764 | engines: {node: '>=0.10.0'} 765 | 766 | is-number@7.0.0: 767 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 768 | engines: {node: '>=0.12.0'} 769 | 770 | isexe@2.0.0: 771 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 772 | 773 | jackspeak@3.4.3: 774 | resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} 775 | 776 | jiti@1.21.6: 777 | resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} 778 | hasBin: true 779 | 780 | js-tokens@4.0.0: 781 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 782 | 783 | lilconfig@2.1.0: 784 | resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} 785 | engines: {node: '>=10'} 786 | 787 | lilconfig@3.1.2: 788 | resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} 789 | engines: {node: '>=14'} 790 | 791 | lines-and-columns@1.2.4: 792 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 793 | 794 | loose-envify@1.4.0: 795 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 796 | hasBin: true 797 | 798 | lru-cache@10.4.3: 799 | resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} 800 | 801 | merge2@1.4.1: 802 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 803 | engines: {node: '>= 8'} 804 | 805 | micromatch@4.0.7: 806 | resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} 807 | engines: {node: '>=8.6'} 808 | 809 | minimatch@9.0.5: 810 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 811 | engines: {node: '>=16 || 14 >=14.17'} 812 | 813 | minipass@7.1.2: 814 | resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} 815 | engines: {node: '>=16 || 14 >=14.17'} 816 | 817 | ms@2.1.2: 818 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 819 | 820 | mz@2.7.0: 821 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 822 | 823 | nanoid@3.3.7: 824 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} 825 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 826 | hasBin: true 827 | 828 | next@14.2.5: 829 | resolution: {integrity: sha512-0f8aRfBVL+mpzfBjYfQuLWh2WyAwtJXCRfkPF4UJ5qd2YwrHczsrSzXU4tRMV0OAxR8ZJZWPFn6uhSC56UTsLA==} 830 | engines: {node: '>=18.17.0'} 831 | hasBin: true 832 | peerDependencies: 833 | '@opentelemetry/api': ^1.1.0 834 | '@playwright/test': ^1.41.2 835 | react: ^18.2.0 836 | react-dom: ^18.2.0 837 | sass: ^1.3.0 838 | peerDependenciesMeta: 839 | '@opentelemetry/api': 840 | optional: true 841 | '@playwright/test': 842 | optional: true 843 | sass: 844 | optional: true 845 | 846 | node-gyp-build@4.8.1: 847 | resolution: {integrity: sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==} 848 | hasBin: true 849 | 850 | node-releases@2.0.18: 851 | resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} 852 | 853 | normalize-path@3.0.0: 854 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 855 | engines: {node: '>=0.10.0'} 856 | 857 | normalize-range@0.1.2: 858 | resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} 859 | engines: {node: '>=0.10.0'} 860 | 861 | object-assign@4.1.1: 862 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 863 | engines: {node: '>=0.10.0'} 864 | 865 | object-hash@3.0.0: 866 | resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} 867 | engines: {node: '>= 6'} 868 | 869 | obuf@1.1.2: 870 | resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} 871 | 872 | package-json-from-dist@1.0.0: 873 | resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} 874 | 875 | path-key@3.1.1: 876 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 877 | engines: {node: '>=8'} 878 | 879 | path-parse@1.0.7: 880 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 881 | 882 | path-scurry@1.11.1: 883 | resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} 884 | engines: {node: '>=16 || 14 >=14.18'} 885 | 886 | pg-int8@1.0.1: 887 | resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} 888 | engines: {node: '>=4.0.0'} 889 | 890 | pg-numeric@1.0.2: 891 | resolution: {integrity: sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw==} 892 | engines: {node: '>=4'} 893 | 894 | pg-protocol@1.6.1: 895 | resolution: {integrity: sha512-jPIlvgoD63hrEuihvIg+tJhoGjUsLPn6poJY9N5CnlPd91c2T18T/9zBtLxZSb1EhYxBRoZJtzScCaWlYLtktg==} 896 | 897 | pg-types@4.0.2: 898 | resolution: {integrity: sha512-cRL3JpS3lKMGsKaWndugWQoLOCoP+Cic8oseVcbr0qhPzYD5DWXK+RZ9LY9wxRf7RQia4SCwQlXk0q6FCPrVng==} 899 | engines: {node: '>=10'} 900 | 901 | picocolors@1.0.1: 902 | resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} 903 | 904 | picomatch@2.3.1: 905 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 906 | engines: {node: '>=8.6'} 907 | 908 | pify@2.3.0: 909 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} 910 | engines: {node: '>=0.10.0'} 911 | 912 | pirates@4.0.6: 913 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} 914 | engines: {node: '>= 6'} 915 | 916 | postcss-import@15.1.0: 917 | resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} 918 | engines: {node: '>=14.0.0'} 919 | peerDependencies: 920 | postcss: ^8.0.0 921 | 922 | postcss-js@4.0.1: 923 | resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} 924 | engines: {node: ^12 || ^14 || >= 16} 925 | peerDependencies: 926 | postcss: ^8.4.21 927 | 928 | postcss-load-config@4.0.2: 929 | resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} 930 | engines: {node: '>= 14'} 931 | peerDependencies: 932 | postcss: '>=8.0.9' 933 | ts-node: '>=9.0.0' 934 | peerDependenciesMeta: 935 | postcss: 936 | optional: true 937 | ts-node: 938 | optional: true 939 | 940 | postcss-nested@6.2.0: 941 | resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} 942 | engines: {node: '>=12.0'} 943 | peerDependencies: 944 | postcss: ^8.2.14 945 | 946 | postcss-selector-parser@6.1.2: 947 | resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} 948 | engines: {node: '>=4'} 949 | 950 | postcss-value-parser@4.2.0: 951 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 952 | 953 | postcss@8.4.31: 954 | resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} 955 | engines: {node: ^10 || ^12 || >=14} 956 | 957 | postcss@8.4.41: 958 | resolution: {integrity: sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==} 959 | engines: {node: ^10 || ^12 || >=14} 960 | 961 | postgres-array@3.0.2: 962 | resolution: {integrity: sha512-6faShkdFugNQCLwucjPcY5ARoW1SlbnrZjmGl0IrrqewpvxvhSLHimCVzqeuULCbG0fQv7Dtk1yDbG3xv7Veog==} 963 | engines: {node: '>=12'} 964 | 965 | postgres-bytea@3.0.0: 966 | resolution: {integrity: sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw==} 967 | engines: {node: '>= 6'} 968 | 969 | postgres-date@2.1.0: 970 | resolution: {integrity: sha512-K7Juri8gtgXVcDfZttFKVmhglp7epKb1K4pgrkLxehjqkrgPhfG6OO8LHLkfaqkbpjNRnra018XwAr1yQFWGcA==} 971 | engines: {node: '>=12'} 972 | 973 | postgres-interval@3.0.0: 974 | resolution: {integrity: sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw==} 975 | engines: {node: '>=12'} 976 | 977 | postgres-range@1.1.4: 978 | resolution: {integrity: sha512-i/hbxIE9803Alj/6ytL7UHQxRvZkI9O4Sy+J3HGc4F4oo/2eQAjTSNJ0bfxyse3bH0nuVesCk+3IRLaMtG3H6w==} 979 | 980 | queue-microtask@1.2.3: 981 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 982 | 983 | react-dom@18.3.1: 984 | resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} 985 | peerDependencies: 986 | react: ^18.3.1 987 | 988 | react@18.3.1: 989 | resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} 990 | engines: {node: '>=0.10.0'} 991 | 992 | read-cache@1.0.0: 993 | resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} 994 | 995 | readdirp@3.6.0: 996 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 997 | engines: {node: '>=8.10.0'} 998 | 999 | resolve-pkg-maps@1.0.0: 1000 | resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} 1001 | 1002 | resolve@1.22.8: 1003 | resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} 1004 | hasBin: true 1005 | 1006 | reusify@1.0.4: 1007 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 1008 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1009 | 1010 | run-parallel@1.2.0: 1011 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1012 | 1013 | scheduler@0.23.2: 1014 | resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} 1015 | 1016 | shebang-command@2.0.0: 1017 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1018 | engines: {node: '>=8'} 1019 | 1020 | shebang-regex@3.0.0: 1021 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1022 | engines: {node: '>=8'} 1023 | 1024 | signal-exit@4.1.0: 1025 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 1026 | engines: {node: '>=14'} 1027 | 1028 | source-map-js@1.2.0: 1029 | resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} 1030 | engines: {node: '>=0.10.0'} 1031 | 1032 | source-map-support@0.5.21: 1033 | resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} 1034 | 1035 | source-map@0.6.1: 1036 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 1037 | engines: {node: '>=0.10.0'} 1038 | 1039 | streamsearch@1.1.0: 1040 | resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} 1041 | engines: {node: '>=10.0.0'} 1042 | 1043 | string-width@4.2.3: 1044 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 1045 | engines: {node: '>=8'} 1046 | 1047 | string-width@5.1.2: 1048 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} 1049 | engines: {node: '>=12'} 1050 | 1051 | strip-ansi@6.0.1: 1052 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1053 | engines: {node: '>=8'} 1054 | 1055 | strip-ansi@7.1.0: 1056 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 1057 | engines: {node: '>=12'} 1058 | 1059 | styled-jsx@5.1.1: 1060 | resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} 1061 | engines: {node: '>= 12.0.0'} 1062 | peerDependencies: 1063 | '@babel/core': '*' 1064 | babel-plugin-macros: '*' 1065 | react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' 1066 | peerDependenciesMeta: 1067 | '@babel/core': 1068 | optional: true 1069 | babel-plugin-macros: 1070 | optional: true 1071 | 1072 | sucrase@3.35.0: 1073 | resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} 1074 | engines: {node: '>=16 || 14 >=14.17'} 1075 | hasBin: true 1076 | 1077 | supports-preserve-symlinks-flag@1.0.0: 1078 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 1079 | engines: {node: '>= 0.4'} 1080 | 1081 | tailwindcss@3.4.9: 1082 | resolution: {integrity: sha512-1SEOvRr6sSdV5IDf9iC+NU4dhwdqzF4zKKq3sAbasUWHEM6lsMhX+eNN5gkPx1BvLFEnZQEUFbXnGj8Qlp83Pg==} 1083 | engines: {node: '>=14.0.0'} 1084 | hasBin: true 1085 | 1086 | thenify-all@1.6.0: 1087 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} 1088 | engines: {node: '>=0.8'} 1089 | 1090 | thenify@3.3.1: 1091 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 1092 | 1093 | to-regex-range@5.0.1: 1094 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1095 | engines: {node: '>=8.0'} 1096 | 1097 | ts-interface-checker@0.1.13: 1098 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 1099 | 1100 | tslib@2.6.3: 1101 | resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} 1102 | 1103 | typescript@5.5.4: 1104 | resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} 1105 | engines: {node: '>=14.17'} 1106 | hasBin: true 1107 | 1108 | undici-types@6.13.0: 1109 | resolution: {integrity: sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg==} 1110 | 1111 | update-browserslist-db@1.1.0: 1112 | resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} 1113 | hasBin: true 1114 | peerDependencies: 1115 | browserslist: '>= 4.21.0' 1116 | 1117 | utf-8-validate@6.0.4: 1118 | resolution: {integrity: sha512-xu9GQDeFp+eZ6LnCywXN/zBancWvOpUMzgjLPSjy4BRHSmTelvn2E0DG0o1sTiw5hkCKBHo8rwSKncfRfv2EEQ==} 1119 | engines: {node: '>=6.14.2'} 1120 | 1121 | util-deprecate@1.0.2: 1122 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 1123 | 1124 | which@2.0.2: 1125 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1126 | engines: {node: '>= 8'} 1127 | hasBin: true 1128 | 1129 | wrap-ansi@7.0.0: 1130 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 1131 | engines: {node: '>=10'} 1132 | 1133 | wrap-ansi@8.1.0: 1134 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} 1135 | engines: {node: '>=12'} 1136 | 1137 | ws@8.18.0: 1138 | resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} 1139 | engines: {node: '>=10.0.0'} 1140 | peerDependencies: 1141 | bufferutil: ^4.0.1 1142 | utf-8-validate: '>=5.0.2' 1143 | peerDependenciesMeta: 1144 | bufferutil: 1145 | optional: true 1146 | utf-8-validate: 1147 | optional: true 1148 | 1149 | yaml@2.5.0: 1150 | resolution: {integrity: sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==} 1151 | engines: {node: '>= 14'} 1152 | hasBin: true 1153 | 1154 | snapshots: 1155 | 1156 | '@alloc/quick-lru@5.2.0': {} 1157 | 1158 | '@drizzle-team/brocli@0.8.2': {} 1159 | 1160 | '@esbuild-kit/core-utils@3.3.2': 1161 | dependencies: 1162 | esbuild: 0.18.20 1163 | source-map-support: 0.5.21 1164 | 1165 | '@esbuild-kit/esm-loader@2.6.5': 1166 | dependencies: 1167 | '@esbuild-kit/core-utils': 3.3.2 1168 | get-tsconfig: 4.7.6 1169 | 1170 | '@esbuild/aix-ppc64@0.19.12': 1171 | optional: true 1172 | 1173 | '@esbuild/android-arm64@0.18.20': 1174 | optional: true 1175 | 1176 | '@esbuild/android-arm64@0.19.12': 1177 | optional: true 1178 | 1179 | '@esbuild/android-arm@0.18.20': 1180 | optional: true 1181 | 1182 | '@esbuild/android-arm@0.19.12': 1183 | optional: true 1184 | 1185 | '@esbuild/android-x64@0.18.20': 1186 | optional: true 1187 | 1188 | '@esbuild/android-x64@0.19.12': 1189 | optional: true 1190 | 1191 | '@esbuild/darwin-arm64@0.18.20': 1192 | optional: true 1193 | 1194 | '@esbuild/darwin-arm64@0.19.12': 1195 | optional: true 1196 | 1197 | '@esbuild/darwin-x64@0.18.20': 1198 | optional: true 1199 | 1200 | '@esbuild/darwin-x64@0.19.12': 1201 | optional: true 1202 | 1203 | '@esbuild/freebsd-arm64@0.18.20': 1204 | optional: true 1205 | 1206 | '@esbuild/freebsd-arm64@0.19.12': 1207 | optional: true 1208 | 1209 | '@esbuild/freebsd-x64@0.18.20': 1210 | optional: true 1211 | 1212 | '@esbuild/freebsd-x64@0.19.12': 1213 | optional: true 1214 | 1215 | '@esbuild/linux-arm64@0.18.20': 1216 | optional: true 1217 | 1218 | '@esbuild/linux-arm64@0.19.12': 1219 | optional: true 1220 | 1221 | '@esbuild/linux-arm@0.18.20': 1222 | optional: true 1223 | 1224 | '@esbuild/linux-arm@0.19.12': 1225 | optional: true 1226 | 1227 | '@esbuild/linux-ia32@0.18.20': 1228 | optional: true 1229 | 1230 | '@esbuild/linux-ia32@0.19.12': 1231 | optional: true 1232 | 1233 | '@esbuild/linux-loong64@0.18.20': 1234 | optional: true 1235 | 1236 | '@esbuild/linux-loong64@0.19.12': 1237 | optional: true 1238 | 1239 | '@esbuild/linux-mips64el@0.18.20': 1240 | optional: true 1241 | 1242 | '@esbuild/linux-mips64el@0.19.12': 1243 | optional: true 1244 | 1245 | '@esbuild/linux-ppc64@0.18.20': 1246 | optional: true 1247 | 1248 | '@esbuild/linux-ppc64@0.19.12': 1249 | optional: true 1250 | 1251 | '@esbuild/linux-riscv64@0.18.20': 1252 | optional: true 1253 | 1254 | '@esbuild/linux-riscv64@0.19.12': 1255 | optional: true 1256 | 1257 | '@esbuild/linux-s390x@0.18.20': 1258 | optional: true 1259 | 1260 | '@esbuild/linux-s390x@0.19.12': 1261 | optional: true 1262 | 1263 | '@esbuild/linux-x64@0.18.20': 1264 | optional: true 1265 | 1266 | '@esbuild/linux-x64@0.19.12': 1267 | optional: true 1268 | 1269 | '@esbuild/netbsd-x64@0.18.20': 1270 | optional: true 1271 | 1272 | '@esbuild/netbsd-x64@0.19.12': 1273 | optional: true 1274 | 1275 | '@esbuild/openbsd-x64@0.18.20': 1276 | optional: true 1277 | 1278 | '@esbuild/openbsd-x64@0.19.12': 1279 | optional: true 1280 | 1281 | '@esbuild/sunos-x64@0.18.20': 1282 | optional: true 1283 | 1284 | '@esbuild/sunos-x64@0.19.12': 1285 | optional: true 1286 | 1287 | '@esbuild/win32-arm64@0.18.20': 1288 | optional: true 1289 | 1290 | '@esbuild/win32-arm64@0.19.12': 1291 | optional: true 1292 | 1293 | '@esbuild/win32-ia32@0.18.20': 1294 | optional: true 1295 | 1296 | '@esbuild/win32-ia32@0.19.12': 1297 | optional: true 1298 | 1299 | '@esbuild/win32-x64@0.18.20': 1300 | optional: true 1301 | 1302 | '@esbuild/win32-x64@0.19.12': 1303 | optional: true 1304 | 1305 | '@isaacs/cliui@8.0.2': 1306 | dependencies: 1307 | string-width: 5.1.2 1308 | string-width-cjs: string-width@4.2.3 1309 | strip-ansi: 7.1.0 1310 | strip-ansi-cjs: strip-ansi@6.0.1 1311 | wrap-ansi: 8.1.0 1312 | wrap-ansi-cjs: wrap-ansi@7.0.0 1313 | 1314 | '@jridgewell/gen-mapping@0.3.5': 1315 | dependencies: 1316 | '@jridgewell/set-array': 1.2.1 1317 | '@jridgewell/sourcemap-codec': 1.5.0 1318 | '@jridgewell/trace-mapping': 0.3.25 1319 | 1320 | '@jridgewell/resolve-uri@3.1.2': {} 1321 | 1322 | '@jridgewell/set-array@1.2.1': {} 1323 | 1324 | '@jridgewell/sourcemap-codec@1.5.0': {} 1325 | 1326 | '@jridgewell/trace-mapping@0.3.25': 1327 | dependencies: 1328 | '@jridgewell/resolve-uri': 3.1.2 1329 | '@jridgewell/sourcemap-codec': 1.5.0 1330 | 1331 | '@neondatabase/serverless@0.9.4': 1332 | dependencies: 1333 | '@types/pg': 8.11.6 1334 | 1335 | '@next/env@14.2.5': {} 1336 | 1337 | '@next/swc-darwin-arm64@14.2.5': 1338 | optional: true 1339 | 1340 | '@next/swc-darwin-x64@14.2.5': 1341 | optional: true 1342 | 1343 | '@next/swc-linux-arm64-gnu@14.2.5': 1344 | optional: true 1345 | 1346 | '@next/swc-linux-arm64-musl@14.2.5': 1347 | optional: true 1348 | 1349 | '@next/swc-linux-x64-gnu@14.2.5': 1350 | optional: true 1351 | 1352 | '@next/swc-linux-x64-musl@14.2.5': 1353 | optional: true 1354 | 1355 | '@next/swc-win32-arm64-msvc@14.2.5': 1356 | optional: true 1357 | 1358 | '@next/swc-win32-ia32-msvc@14.2.5': 1359 | optional: true 1360 | 1361 | '@next/swc-win32-x64-msvc@14.2.5': 1362 | optional: true 1363 | 1364 | '@nodelib/fs.scandir@2.1.5': 1365 | dependencies: 1366 | '@nodelib/fs.stat': 2.0.5 1367 | run-parallel: 1.2.0 1368 | 1369 | '@nodelib/fs.stat@2.0.5': {} 1370 | 1371 | '@nodelib/fs.walk@1.2.8': 1372 | dependencies: 1373 | '@nodelib/fs.scandir': 2.1.5 1374 | fastq: 1.17.1 1375 | 1376 | '@pkgjs/parseargs@0.11.0': 1377 | optional: true 1378 | 1379 | '@swc/counter@0.1.3': {} 1380 | 1381 | '@swc/helpers@0.5.5': 1382 | dependencies: 1383 | '@swc/counter': 0.1.3 1384 | tslib: 2.6.3 1385 | 1386 | '@types/node@22.2.0': 1387 | dependencies: 1388 | undici-types: 6.13.0 1389 | 1390 | '@types/pg@8.11.6': 1391 | dependencies: 1392 | '@types/node': 22.2.0 1393 | pg-protocol: 1.6.1 1394 | pg-types: 4.0.2 1395 | 1396 | '@types/prop-types@15.7.12': {} 1397 | 1398 | '@types/react-dom@18.3.0': 1399 | dependencies: 1400 | '@types/react': 18.3.3 1401 | 1402 | '@types/react@18.3.3': 1403 | dependencies: 1404 | '@types/prop-types': 15.7.12 1405 | csstype: 3.1.3 1406 | 1407 | '@vercel/postgres@0.9.0': 1408 | dependencies: 1409 | '@neondatabase/serverless': 0.9.4 1410 | bufferutil: 4.0.8 1411 | utf-8-validate: 6.0.4 1412 | ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@6.0.4) 1413 | 1414 | ansi-regex@5.0.1: {} 1415 | 1416 | ansi-regex@6.0.1: {} 1417 | 1418 | ansi-styles@4.3.0: 1419 | dependencies: 1420 | color-convert: 2.0.1 1421 | 1422 | ansi-styles@6.2.1: {} 1423 | 1424 | any-promise@1.3.0: {} 1425 | 1426 | anymatch@3.1.3: 1427 | dependencies: 1428 | normalize-path: 3.0.0 1429 | picomatch: 2.3.1 1430 | 1431 | arg@5.0.2: {} 1432 | 1433 | autoprefixer@10.4.20(postcss@8.4.41): 1434 | dependencies: 1435 | browserslist: 4.23.3 1436 | caniuse-lite: 1.0.30001651 1437 | fraction.js: 4.3.7 1438 | normalize-range: 0.1.2 1439 | picocolors: 1.0.1 1440 | postcss: 8.4.41 1441 | postcss-value-parser: 4.2.0 1442 | 1443 | balanced-match@1.0.2: {} 1444 | 1445 | binary-extensions@2.3.0: {} 1446 | 1447 | brace-expansion@2.0.1: 1448 | dependencies: 1449 | balanced-match: 1.0.2 1450 | 1451 | braces@3.0.3: 1452 | dependencies: 1453 | fill-range: 7.1.1 1454 | 1455 | browserslist@4.23.3: 1456 | dependencies: 1457 | caniuse-lite: 1.0.30001651 1458 | electron-to-chromium: 1.5.6 1459 | node-releases: 2.0.18 1460 | update-browserslist-db: 1.1.0(browserslist@4.23.3) 1461 | 1462 | buffer-from@1.1.2: {} 1463 | 1464 | bufferutil@4.0.8: 1465 | dependencies: 1466 | node-gyp-build: 4.8.1 1467 | 1468 | busboy@1.6.0: 1469 | dependencies: 1470 | streamsearch: 1.1.0 1471 | 1472 | camelcase-css@2.0.1: {} 1473 | 1474 | caniuse-lite@1.0.30001651: {} 1475 | 1476 | chokidar@3.6.0: 1477 | dependencies: 1478 | anymatch: 3.1.3 1479 | braces: 3.0.3 1480 | glob-parent: 5.1.2 1481 | is-binary-path: 2.1.0 1482 | is-glob: 4.0.3 1483 | normalize-path: 3.0.0 1484 | readdirp: 3.6.0 1485 | optionalDependencies: 1486 | fsevents: 2.3.3 1487 | 1488 | client-only@0.0.1: {} 1489 | 1490 | color-convert@2.0.1: 1491 | dependencies: 1492 | color-name: 1.1.4 1493 | 1494 | color-name@1.1.4: {} 1495 | 1496 | commander@4.1.1: {} 1497 | 1498 | cross-spawn@7.0.3: 1499 | dependencies: 1500 | path-key: 3.1.1 1501 | shebang-command: 2.0.0 1502 | which: 2.0.2 1503 | 1504 | cssesc@3.0.0: {} 1505 | 1506 | csstype@3.1.3: {} 1507 | 1508 | debug@4.3.6: 1509 | dependencies: 1510 | ms: 2.1.2 1511 | 1512 | didyoumean@1.2.2: {} 1513 | 1514 | dlv@1.1.3: {} 1515 | 1516 | drizzle-kit@0.24.0: 1517 | dependencies: 1518 | '@drizzle-team/brocli': 0.8.2 1519 | '@esbuild-kit/esm-loader': 2.6.5 1520 | esbuild: 0.19.12 1521 | esbuild-register: 3.6.0(esbuild@0.19.12) 1522 | transitivePeerDependencies: 1523 | - supports-color 1524 | 1525 | drizzle-orm@0.33.0(@neondatabase/serverless@0.9.4)(@types/pg@8.11.6)(@types/react@18.3.3)(@vercel/postgres@0.9.0)(react@18.3.1): 1526 | optionalDependencies: 1527 | '@neondatabase/serverless': 0.9.4 1528 | '@types/pg': 8.11.6 1529 | '@types/react': 18.3.3 1530 | '@vercel/postgres': 0.9.0 1531 | react: 18.3.1 1532 | 1533 | eastasianwidth@0.2.0: {} 1534 | 1535 | electron-to-chromium@1.5.6: {} 1536 | 1537 | emoji-regex@8.0.0: {} 1538 | 1539 | emoji-regex@9.2.2: {} 1540 | 1541 | esbuild-register@3.6.0(esbuild@0.19.12): 1542 | dependencies: 1543 | debug: 4.3.6 1544 | esbuild: 0.19.12 1545 | transitivePeerDependencies: 1546 | - supports-color 1547 | 1548 | esbuild@0.18.20: 1549 | optionalDependencies: 1550 | '@esbuild/android-arm': 0.18.20 1551 | '@esbuild/android-arm64': 0.18.20 1552 | '@esbuild/android-x64': 0.18.20 1553 | '@esbuild/darwin-arm64': 0.18.20 1554 | '@esbuild/darwin-x64': 0.18.20 1555 | '@esbuild/freebsd-arm64': 0.18.20 1556 | '@esbuild/freebsd-x64': 0.18.20 1557 | '@esbuild/linux-arm': 0.18.20 1558 | '@esbuild/linux-arm64': 0.18.20 1559 | '@esbuild/linux-ia32': 0.18.20 1560 | '@esbuild/linux-loong64': 0.18.20 1561 | '@esbuild/linux-mips64el': 0.18.20 1562 | '@esbuild/linux-ppc64': 0.18.20 1563 | '@esbuild/linux-riscv64': 0.18.20 1564 | '@esbuild/linux-s390x': 0.18.20 1565 | '@esbuild/linux-x64': 0.18.20 1566 | '@esbuild/netbsd-x64': 0.18.20 1567 | '@esbuild/openbsd-x64': 0.18.20 1568 | '@esbuild/sunos-x64': 0.18.20 1569 | '@esbuild/win32-arm64': 0.18.20 1570 | '@esbuild/win32-ia32': 0.18.20 1571 | '@esbuild/win32-x64': 0.18.20 1572 | 1573 | esbuild@0.19.12: 1574 | optionalDependencies: 1575 | '@esbuild/aix-ppc64': 0.19.12 1576 | '@esbuild/android-arm': 0.19.12 1577 | '@esbuild/android-arm64': 0.19.12 1578 | '@esbuild/android-x64': 0.19.12 1579 | '@esbuild/darwin-arm64': 0.19.12 1580 | '@esbuild/darwin-x64': 0.19.12 1581 | '@esbuild/freebsd-arm64': 0.19.12 1582 | '@esbuild/freebsd-x64': 0.19.12 1583 | '@esbuild/linux-arm': 0.19.12 1584 | '@esbuild/linux-arm64': 0.19.12 1585 | '@esbuild/linux-ia32': 0.19.12 1586 | '@esbuild/linux-loong64': 0.19.12 1587 | '@esbuild/linux-mips64el': 0.19.12 1588 | '@esbuild/linux-ppc64': 0.19.12 1589 | '@esbuild/linux-riscv64': 0.19.12 1590 | '@esbuild/linux-s390x': 0.19.12 1591 | '@esbuild/linux-x64': 0.19.12 1592 | '@esbuild/netbsd-x64': 0.19.12 1593 | '@esbuild/openbsd-x64': 0.19.12 1594 | '@esbuild/sunos-x64': 0.19.12 1595 | '@esbuild/win32-arm64': 0.19.12 1596 | '@esbuild/win32-ia32': 0.19.12 1597 | '@esbuild/win32-x64': 0.19.12 1598 | 1599 | escalade@3.1.2: {} 1600 | 1601 | fast-glob@3.3.2: 1602 | dependencies: 1603 | '@nodelib/fs.stat': 2.0.5 1604 | '@nodelib/fs.walk': 1.2.8 1605 | glob-parent: 5.1.2 1606 | merge2: 1.4.1 1607 | micromatch: 4.0.7 1608 | 1609 | fastq@1.17.1: 1610 | dependencies: 1611 | reusify: 1.0.4 1612 | 1613 | fill-range@7.1.1: 1614 | dependencies: 1615 | to-regex-range: 5.0.1 1616 | 1617 | foreground-child@3.3.0: 1618 | dependencies: 1619 | cross-spawn: 7.0.3 1620 | signal-exit: 4.1.0 1621 | 1622 | fraction.js@4.3.7: {} 1623 | 1624 | fsevents@2.3.3: 1625 | optional: true 1626 | 1627 | function-bind@1.1.2: {} 1628 | 1629 | get-tsconfig@4.7.6: 1630 | dependencies: 1631 | resolve-pkg-maps: 1.0.0 1632 | 1633 | glob-parent@5.1.2: 1634 | dependencies: 1635 | is-glob: 4.0.3 1636 | 1637 | glob-parent@6.0.2: 1638 | dependencies: 1639 | is-glob: 4.0.3 1640 | 1641 | glob@10.4.5: 1642 | dependencies: 1643 | foreground-child: 3.3.0 1644 | jackspeak: 3.4.3 1645 | minimatch: 9.0.5 1646 | minipass: 7.1.2 1647 | package-json-from-dist: 1.0.0 1648 | path-scurry: 1.11.1 1649 | 1650 | graceful-fs@4.2.11: {} 1651 | 1652 | hasown@2.0.2: 1653 | dependencies: 1654 | function-bind: 1.1.2 1655 | 1656 | is-binary-path@2.1.0: 1657 | dependencies: 1658 | binary-extensions: 2.3.0 1659 | 1660 | is-core-module@2.15.0: 1661 | dependencies: 1662 | hasown: 2.0.2 1663 | 1664 | is-extglob@2.1.1: {} 1665 | 1666 | is-fullwidth-code-point@3.0.0: {} 1667 | 1668 | is-glob@4.0.3: 1669 | dependencies: 1670 | is-extglob: 2.1.1 1671 | 1672 | is-number@7.0.0: {} 1673 | 1674 | isexe@2.0.0: {} 1675 | 1676 | jackspeak@3.4.3: 1677 | dependencies: 1678 | '@isaacs/cliui': 8.0.2 1679 | optionalDependencies: 1680 | '@pkgjs/parseargs': 0.11.0 1681 | 1682 | jiti@1.21.6: {} 1683 | 1684 | js-tokens@4.0.0: {} 1685 | 1686 | lilconfig@2.1.0: {} 1687 | 1688 | lilconfig@3.1.2: {} 1689 | 1690 | lines-and-columns@1.2.4: {} 1691 | 1692 | loose-envify@1.4.0: 1693 | dependencies: 1694 | js-tokens: 4.0.0 1695 | 1696 | lru-cache@10.4.3: {} 1697 | 1698 | merge2@1.4.1: {} 1699 | 1700 | micromatch@4.0.7: 1701 | dependencies: 1702 | braces: 3.0.3 1703 | picomatch: 2.3.1 1704 | 1705 | minimatch@9.0.5: 1706 | dependencies: 1707 | brace-expansion: 2.0.1 1708 | 1709 | minipass@7.1.2: {} 1710 | 1711 | ms@2.1.2: {} 1712 | 1713 | mz@2.7.0: 1714 | dependencies: 1715 | any-promise: 1.3.0 1716 | object-assign: 4.1.1 1717 | thenify-all: 1.6.0 1718 | 1719 | nanoid@3.3.7: {} 1720 | 1721 | next@14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1): 1722 | dependencies: 1723 | '@next/env': 14.2.5 1724 | '@swc/helpers': 0.5.5 1725 | busboy: 1.6.0 1726 | caniuse-lite: 1.0.30001651 1727 | graceful-fs: 4.2.11 1728 | postcss: 8.4.31 1729 | react: 18.3.1 1730 | react-dom: 18.3.1(react@18.3.1) 1731 | styled-jsx: 5.1.1(react@18.3.1) 1732 | optionalDependencies: 1733 | '@next/swc-darwin-arm64': 14.2.5 1734 | '@next/swc-darwin-x64': 14.2.5 1735 | '@next/swc-linux-arm64-gnu': 14.2.5 1736 | '@next/swc-linux-arm64-musl': 14.2.5 1737 | '@next/swc-linux-x64-gnu': 14.2.5 1738 | '@next/swc-linux-x64-musl': 14.2.5 1739 | '@next/swc-win32-arm64-msvc': 14.2.5 1740 | '@next/swc-win32-ia32-msvc': 14.2.5 1741 | '@next/swc-win32-x64-msvc': 14.2.5 1742 | transitivePeerDependencies: 1743 | - '@babel/core' 1744 | - babel-plugin-macros 1745 | 1746 | node-gyp-build@4.8.1: {} 1747 | 1748 | node-releases@2.0.18: {} 1749 | 1750 | normalize-path@3.0.0: {} 1751 | 1752 | normalize-range@0.1.2: {} 1753 | 1754 | object-assign@4.1.1: {} 1755 | 1756 | object-hash@3.0.0: {} 1757 | 1758 | obuf@1.1.2: {} 1759 | 1760 | package-json-from-dist@1.0.0: {} 1761 | 1762 | path-key@3.1.1: {} 1763 | 1764 | path-parse@1.0.7: {} 1765 | 1766 | path-scurry@1.11.1: 1767 | dependencies: 1768 | lru-cache: 10.4.3 1769 | minipass: 7.1.2 1770 | 1771 | pg-int8@1.0.1: {} 1772 | 1773 | pg-numeric@1.0.2: {} 1774 | 1775 | pg-protocol@1.6.1: {} 1776 | 1777 | pg-types@4.0.2: 1778 | dependencies: 1779 | pg-int8: 1.0.1 1780 | pg-numeric: 1.0.2 1781 | postgres-array: 3.0.2 1782 | postgres-bytea: 3.0.0 1783 | postgres-date: 2.1.0 1784 | postgres-interval: 3.0.0 1785 | postgres-range: 1.1.4 1786 | 1787 | picocolors@1.0.1: {} 1788 | 1789 | picomatch@2.3.1: {} 1790 | 1791 | pify@2.3.0: {} 1792 | 1793 | pirates@4.0.6: {} 1794 | 1795 | postcss-import@15.1.0(postcss@8.4.41): 1796 | dependencies: 1797 | postcss: 8.4.41 1798 | postcss-value-parser: 4.2.0 1799 | read-cache: 1.0.0 1800 | resolve: 1.22.8 1801 | 1802 | postcss-js@4.0.1(postcss@8.4.41): 1803 | dependencies: 1804 | camelcase-css: 2.0.1 1805 | postcss: 8.4.41 1806 | 1807 | postcss-load-config@4.0.2(postcss@8.4.41): 1808 | dependencies: 1809 | lilconfig: 3.1.2 1810 | yaml: 2.5.0 1811 | optionalDependencies: 1812 | postcss: 8.4.41 1813 | 1814 | postcss-nested@6.2.0(postcss@8.4.41): 1815 | dependencies: 1816 | postcss: 8.4.41 1817 | postcss-selector-parser: 6.1.2 1818 | 1819 | postcss-selector-parser@6.1.2: 1820 | dependencies: 1821 | cssesc: 3.0.0 1822 | util-deprecate: 1.0.2 1823 | 1824 | postcss-value-parser@4.2.0: {} 1825 | 1826 | postcss@8.4.31: 1827 | dependencies: 1828 | nanoid: 3.3.7 1829 | picocolors: 1.0.1 1830 | source-map-js: 1.2.0 1831 | 1832 | postcss@8.4.41: 1833 | dependencies: 1834 | nanoid: 3.3.7 1835 | picocolors: 1.0.1 1836 | source-map-js: 1.2.0 1837 | 1838 | postgres-array@3.0.2: {} 1839 | 1840 | postgres-bytea@3.0.0: 1841 | dependencies: 1842 | obuf: 1.1.2 1843 | 1844 | postgres-date@2.1.0: {} 1845 | 1846 | postgres-interval@3.0.0: {} 1847 | 1848 | postgres-range@1.1.4: {} 1849 | 1850 | queue-microtask@1.2.3: {} 1851 | 1852 | react-dom@18.3.1(react@18.3.1): 1853 | dependencies: 1854 | loose-envify: 1.4.0 1855 | react: 18.3.1 1856 | scheduler: 0.23.2 1857 | 1858 | react@18.3.1: 1859 | dependencies: 1860 | loose-envify: 1.4.0 1861 | 1862 | read-cache@1.0.0: 1863 | dependencies: 1864 | pify: 2.3.0 1865 | 1866 | readdirp@3.6.0: 1867 | dependencies: 1868 | picomatch: 2.3.1 1869 | 1870 | resolve-pkg-maps@1.0.0: {} 1871 | 1872 | resolve@1.22.8: 1873 | dependencies: 1874 | is-core-module: 2.15.0 1875 | path-parse: 1.0.7 1876 | supports-preserve-symlinks-flag: 1.0.0 1877 | 1878 | reusify@1.0.4: {} 1879 | 1880 | run-parallel@1.2.0: 1881 | dependencies: 1882 | queue-microtask: 1.2.3 1883 | 1884 | scheduler@0.23.2: 1885 | dependencies: 1886 | loose-envify: 1.4.0 1887 | 1888 | shebang-command@2.0.0: 1889 | dependencies: 1890 | shebang-regex: 3.0.0 1891 | 1892 | shebang-regex@3.0.0: {} 1893 | 1894 | signal-exit@4.1.0: {} 1895 | 1896 | source-map-js@1.2.0: {} 1897 | 1898 | source-map-support@0.5.21: 1899 | dependencies: 1900 | buffer-from: 1.1.2 1901 | source-map: 0.6.1 1902 | 1903 | source-map@0.6.1: {} 1904 | 1905 | streamsearch@1.1.0: {} 1906 | 1907 | string-width@4.2.3: 1908 | dependencies: 1909 | emoji-regex: 8.0.0 1910 | is-fullwidth-code-point: 3.0.0 1911 | strip-ansi: 6.0.1 1912 | 1913 | string-width@5.1.2: 1914 | dependencies: 1915 | eastasianwidth: 0.2.0 1916 | emoji-regex: 9.2.2 1917 | strip-ansi: 7.1.0 1918 | 1919 | strip-ansi@6.0.1: 1920 | dependencies: 1921 | ansi-regex: 5.0.1 1922 | 1923 | strip-ansi@7.1.0: 1924 | dependencies: 1925 | ansi-regex: 6.0.1 1926 | 1927 | styled-jsx@5.1.1(react@18.3.1): 1928 | dependencies: 1929 | client-only: 0.0.1 1930 | react: 18.3.1 1931 | 1932 | sucrase@3.35.0: 1933 | dependencies: 1934 | '@jridgewell/gen-mapping': 0.3.5 1935 | commander: 4.1.1 1936 | glob: 10.4.5 1937 | lines-and-columns: 1.2.4 1938 | mz: 2.7.0 1939 | pirates: 4.0.6 1940 | ts-interface-checker: 0.1.13 1941 | 1942 | supports-preserve-symlinks-flag@1.0.0: {} 1943 | 1944 | tailwindcss@3.4.9: 1945 | dependencies: 1946 | '@alloc/quick-lru': 5.2.0 1947 | arg: 5.0.2 1948 | chokidar: 3.6.0 1949 | didyoumean: 1.2.2 1950 | dlv: 1.1.3 1951 | fast-glob: 3.3.2 1952 | glob-parent: 6.0.2 1953 | is-glob: 4.0.3 1954 | jiti: 1.21.6 1955 | lilconfig: 2.1.0 1956 | micromatch: 4.0.7 1957 | normalize-path: 3.0.0 1958 | object-hash: 3.0.0 1959 | picocolors: 1.0.1 1960 | postcss: 8.4.41 1961 | postcss-import: 15.1.0(postcss@8.4.41) 1962 | postcss-js: 4.0.1(postcss@8.4.41) 1963 | postcss-load-config: 4.0.2(postcss@8.4.41) 1964 | postcss-nested: 6.2.0(postcss@8.4.41) 1965 | postcss-selector-parser: 6.1.2 1966 | resolve: 1.22.8 1967 | sucrase: 3.35.0 1968 | transitivePeerDependencies: 1969 | - ts-node 1970 | 1971 | thenify-all@1.6.0: 1972 | dependencies: 1973 | thenify: 3.3.1 1974 | 1975 | thenify@3.3.1: 1976 | dependencies: 1977 | any-promise: 1.3.0 1978 | 1979 | to-regex-range@5.0.1: 1980 | dependencies: 1981 | is-number: 7.0.0 1982 | 1983 | ts-interface-checker@0.1.13: {} 1984 | 1985 | tslib@2.6.3: {} 1986 | 1987 | typescript@5.5.4: {} 1988 | 1989 | undici-types@6.13.0: {} 1990 | 1991 | update-browserslist-db@1.1.0(browserslist@4.23.3): 1992 | dependencies: 1993 | browserslist: 4.23.3 1994 | escalade: 3.1.2 1995 | picocolors: 1.0.1 1996 | 1997 | utf-8-validate@6.0.4: 1998 | dependencies: 1999 | node-gyp-build: 4.8.1 2000 | 2001 | util-deprecate@1.0.2: {} 2002 | 2003 | which@2.0.2: 2004 | dependencies: 2005 | isexe: 2.0.0 2006 | 2007 | wrap-ansi@7.0.0: 2008 | dependencies: 2009 | ansi-styles: 4.3.0 2010 | string-width: 4.2.3 2011 | strip-ansi: 6.0.1 2012 | 2013 | wrap-ansi@8.1.0: 2014 | dependencies: 2015 | ansi-styles: 6.2.1 2016 | string-width: 5.1.2 2017 | strip-ansi: 7.1.0 2018 | 2019 | ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@6.0.4): 2020 | optionalDependencies: 2021 | bufferutil: 4.0.8 2022 | utf-8-validate: 6.0.4 2023 | 2024 | yaml@2.5.0: {} 2025 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /public/github.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/next.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/vercel.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tailwind.config.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | content: ['./components/**/*.{js,ts,jsx,tsx}', './app/**/*.{js,ts,jsx,tsx}'], 3 | theme: { 4 | extend: {}, 5 | }, 6 | plugins: [], 7 | }; 8 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "lib": ["dom", "dom.iterable", "esnext"], 5 | "allowJs": true, 6 | "skipLibCheck": true, 7 | "strict": true, 8 | "forceConsistentCasingInFileNames": true, 9 | "noEmit": true, 10 | "esModuleInterop": true, 11 | "module": "esnext", 12 | "moduleResolution": "node", 13 | "resolveJsonModule": true, 14 | "isolatedModules": true, 15 | "jsx": "preserve", 16 | "incremental": true, 17 | "baseUrl": ".", 18 | "plugins": [ 19 | { 20 | "name": "next" 21 | } 22 | ], 23 | "paths": { 24 | "@/*": ["./*"] 25 | } 26 | }, 27 | "include": [ 28 | "next-env.d.ts", 29 | "**/*.ts", 30 | "**/*.tsx", 31 | ".next/types/**/*.ts", 32 | "lib/seed.ts" 33 | ], 34 | "exclude": ["node_modules"] 35 | } 36 | --------------------------------------------------------------------------------