├── .gitignore
├── LICENSE
├── README.md
├── app
├── actions.ts
├── favicon.ico
├── globals.css
├── layout.tsx
├── page.tsx
└── todo-list.tsx
├── drizzle.config.ts
├── lib
└── db
│ ├── drizzle.ts
│ ├── migrate.ts
│ ├── migrations
│ ├── 0000_bitter_talisman.sql
│ └── meta
│ │ ├── 0000_snapshot.json
│ │ └── _journal.json
│ ├── queries.ts
│ ├── schema.ts
│ ├── seed.ts
│ └── setup.ts
├── next.config.ts
├── package.json
├── pnpm-lock.yaml
├── postcss.config.mjs
└── tsconfig.json
/.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 | .yarn/install-state.gz
8 |
9 | # testing
10 | /coverage
11 |
12 | # next.js
13 | /.next/
14 | /out/
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 | # env files
29 | .env*
30 |
31 | # vercel
32 | .vercel
33 |
34 | # typescript
35 | *.tsbuildinfo
36 | next-env.d.ts
37 | .vscode
38 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2024 Vercel, Inc.
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Next.js and Postgres Starter Template
2 |
3 | ## Tech Stack
4 |
5 | - **Framework**: [Next.js](https://nextjs.org/)
6 | - **Database**: [Postgres](https://www.postgresql.org/)
7 | - **ORM**: [Drizzle](https://orm.drizzle.team/)
8 |
9 | ## Getting Started
10 |
11 | ```bash
12 | git clone https://github.com/vercel/postgres-next-starter
13 | cd postgres-next-starter
14 | pnpm install
15 | ```
16 |
17 | ## Running Locally
18 |
19 | Use the included setup script to create your `.env` file:
20 |
21 | ```bash
22 | pnpm db:setup
23 | ```
24 |
25 | Then, run the database migrations and seed the database:
26 |
27 | ```bash
28 | pnpm db:generate
29 | pnpm db:migrate
30 | pnpm db:seed
31 | ```
32 |
33 | Finally, run the Next.js development server:
34 |
35 | ```bash
36 | pnpm dev
37 | ```
38 |
39 | Open [http://localhost:3000](http://localhost:3000) in your browser to see the app in action.
40 |
--------------------------------------------------------------------------------
/app/actions.ts:
--------------------------------------------------------------------------------
1 | 'use server';
2 |
3 | import { revalidatePath } from 'next/cache';
4 | import { eq } from 'drizzle-orm';
5 | import { db } from '@/lib/db/drizzle';
6 | import { todos } from '@/lib/db/schema';
7 |
8 | export async function addTodo(_: any, formData: FormData) {
9 | const text = formData.get('todo') as string;
10 |
11 | if (text.trim()) {
12 | await db.insert(todos).values({ text });
13 | revalidatePath('/');
14 | return { message: 'Todo added successfully', input: '' };
15 | }
16 |
17 | return { message: 'Todo cannot be empty', input: text };
18 | }
19 |
20 | export async function deleteTodo(_: any, formData: FormData) {
21 | const id = formData.get('id') as string;
22 |
23 | await db.delete(todos).where(eq(todos.id, id));
24 |
25 | revalidatePath('/');
26 | return { message: 'Todo deleted successfully' };
27 | }
28 |
--------------------------------------------------------------------------------
/app/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/vercel/postgres-next-starter/ed1c083b4477e096e7904473008eab1734a154df/app/favicon.ico
--------------------------------------------------------------------------------
/app/globals.css:
--------------------------------------------------------------------------------
1 | @import 'tailwindcss';
2 |
3 | @theme {
4 | --font-family-sans: 'Geist', sans-serif;
5 | }
6 |
--------------------------------------------------------------------------------
/app/layout.tsx:
--------------------------------------------------------------------------------
1 | import type { Metadata } from 'next';
2 | import { Geist_Mono } from 'next/font/google';
3 | import './globals.css';
4 |
5 | const geistMono = Geist_Mono({ subsets: ['latin'] });
6 |
7 | export const metadata: Metadata = {
8 | title: 'Todo List',
9 | description: 'A simple todo list application',
10 | };
11 |
12 | export default function RootLayout({
13 | children,
14 | }: {
15 | children: React.ReactNode;
16 | }) {
17 | return (
18 |
19 |
20 | {children}
21 |
22 |
23 | );
24 | }
25 |
--------------------------------------------------------------------------------
/app/page.tsx:
--------------------------------------------------------------------------------
1 | import { getTodos } from '@/lib/db/queries';
2 | import TodoList from './todo-list';
3 |
4 | // This will be replaced by 'use cache' soon
5 | export const dynamic = 'force-static';
6 |
7 | export default async function Home() {
8 | const todos = await getTodos();
9 |
10 | return (
11 |
12 |
13 |
14 | Postgres Starter
15 |
16 |
17 |
18 |
19 | );
20 | }
21 |
--------------------------------------------------------------------------------
/app/todo-list.tsx:
--------------------------------------------------------------------------------
1 | 'use client';
2 |
3 | import { useActionState } from 'react';
4 | import { addTodo, deleteTodo } from './actions';
5 | import { Loader2, Plus, Trash2 } from 'lucide-react';
6 | import { Todo } from '@/lib/db/queries';
7 |
8 | export default function TodoList({ initialTodos }: { initialTodos: Todo[] }) {
9 | const [addState, addAction, isAddPending] = useActionState(addTodo, {
10 | input: '',
11 | message: '',
12 | });
13 | const [_, deleteAction] = useActionState(deleteTodo, {
14 | message: '',
15 | });
16 |
17 | return (
18 |
19 |
39 | {addState.message && (
40 |
{addState.message}
41 | )}
42 |
43 | {initialTodos.map((todo) => (
44 | -
48 | {todo.text}
49 |
58 |
59 | ))}
60 |
61 |
62 | );
63 | }
64 |
--------------------------------------------------------------------------------
/drizzle.config.ts:
--------------------------------------------------------------------------------
1 | import type { Config } from 'drizzle-kit';
2 |
3 | export default {
4 | schema: './lib/db/schema.ts',
5 | out: './lib/db/migrations',
6 | dialect: 'postgresql',
7 | dbCredentials: {
8 | url: process.env.POSTGRES_URL!,
9 | },
10 | } satisfies Config;
11 |
--------------------------------------------------------------------------------
/lib/db/drizzle.ts:
--------------------------------------------------------------------------------
1 | import { drizzle } from 'drizzle-orm/postgres-js';
2 | import postgres from 'postgres';
3 | import * as schema from './schema';
4 | import dotenv from 'dotenv';
5 |
6 | dotenv.config();
7 |
8 | if (!process.env.POSTGRES_URL) {
9 | throw new Error('POSTGRES_URL environment variable is not set');
10 | }
11 |
12 | export const client = postgres(process.env.POSTGRES_URL);
13 | export const db = drizzle(client, { schema });
14 |
--------------------------------------------------------------------------------
/lib/db/migrate.ts:
--------------------------------------------------------------------------------
1 | import dotenv from 'dotenv';
2 | import path from 'path';
3 | import { migrate } from 'drizzle-orm/postgres-js/migrator';
4 | import { client, db } from './drizzle';
5 |
6 | dotenv.config();
7 |
8 | async function main() {
9 | await migrate(db, {
10 | migrationsFolder: path.join(process.cwd(), '/lib/db/migrations'),
11 | });
12 | console.log(`Migrations complete`);
13 | await client.end();
14 | }
15 |
16 | main();
17 |
--------------------------------------------------------------------------------
/lib/db/migrations/0000_bitter_talisman.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE IF NOT EXISTS "todos" (
2 | "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
3 | "text" varchar(255) NOT NULL,
4 | "created_at" timestamp DEFAULT now() NOT NULL,
5 | "updated_at" timestamp DEFAULT now() NOT NULL
6 | );
7 |
--------------------------------------------------------------------------------
/lib/db/migrations/meta/0000_snapshot.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": "9038895f-cfe9-48b6-91dc-34962fbfe396",
3 | "prevId": "00000000-0000-0000-0000-000000000000",
4 | "version": "7",
5 | "dialect": "postgresql",
6 | "tables": {
7 | "public.todos": {
8 | "name": "todos",
9 | "schema": "",
10 | "columns": {
11 | "id": {
12 | "name": "id",
13 | "type": "uuid",
14 | "primaryKey": true,
15 | "notNull": true,
16 | "default": "gen_random_uuid()"
17 | },
18 | "text": {
19 | "name": "text",
20 | "type": "varchar(255)",
21 | "primaryKey": false,
22 | "notNull": true
23 | },
24 | "created_at": {
25 | "name": "created_at",
26 | "type": "timestamp",
27 | "primaryKey": false,
28 | "notNull": true,
29 | "default": "now()"
30 | },
31 | "updated_at": {
32 | "name": "updated_at",
33 | "type": "timestamp",
34 | "primaryKey": false,
35 | "notNull": true,
36 | "default": "now()"
37 | }
38 | },
39 | "indexes": {},
40 | "foreignKeys": {},
41 | "compositePrimaryKeys": {},
42 | "uniqueConstraints": {},
43 | "policies": {},
44 | "checkConstraints": {},
45 | "isRLSEnabled": false
46 | }
47 | },
48 | "enums": {},
49 | "schemas": {},
50 | "sequences": {},
51 | "roles": {},
52 | "policies": {},
53 | "views": {},
54 | "_meta": {
55 | "columns": {},
56 | "schemas": {},
57 | "tables": {}
58 | }
59 | }
--------------------------------------------------------------------------------
/lib/db/migrations/meta/_journal.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "7",
3 | "dialect": "postgresql",
4 | "entries": [
5 | {
6 | "idx": 0,
7 | "version": "7",
8 | "when": 1733332502118,
9 | "tag": "0000_bitter_talisman",
10 | "breakpoints": true
11 | }
12 | ]
13 | }
--------------------------------------------------------------------------------
/lib/db/queries.ts:
--------------------------------------------------------------------------------
1 | import { db } from './drizzle';
2 | import { todos } from './schema';
3 | import { InferSelectModel } from 'drizzle-orm';
4 |
5 | export type Todo = InferSelectModel;
6 |
7 | export async function getTodos() {
8 | return db
9 | .select({
10 | id: todos.id,
11 | text: todos.text,
12 | createdAt: todos.createdAt,
13 | updatedAt: todos.updatedAt,
14 | })
15 | .from(todos);
16 | }
17 |
--------------------------------------------------------------------------------
/lib/db/schema.ts:
--------------------------------------------------------------------------------
1 | import { pgTable, varchar, timestamp, uuid } from 'drizzle-orm/pg-core';
2 |
3 | export const todos = pgTable('todos', {
4 | id: uuid('id').defaultRandom().primaryKey(),
5 | text: varchar('text', { length: 255 }).notNull(),
6 | createdAt: timestamp('created_at').defaultNow().notNull(),
7 | updatedAt: timestamp('updated_at').defaultNow().notNull(),
8 | });
9 |
--------------------------------------------------------------------------------
/lib/db/seed.ts:
--------------------------------------------------------------------------------
1 | import { db } from './drizzle';
2 | import { todos } from './schema';
3 | import { seed } from 'drizzle-seed';
4 |
5 | async function main() {
6 | await seed(db, { todos }).refine((f) => ({
7 | todos: {
8 | columns: {
9 | text: f.loremIpsum(),
10 | },
11 | count: 5,
12 | },
13 | }));
14 | process.exit();
15 | }
16 |
17 | main();
18 |
--------------------------------------------------------------------------------
/lib/db/setup.ts:
--------------------------------------------------------------------------------
1 | import { exec } from 'node:child_process';
2 | import { promises as fs } from 'node:fs';
3 | import { promisify } from 'node:util';
4 | import readline from 'node:readline';
5 | import path from 'node:path';
6 |
7 | const execAsync = promisify(exec);
8 |
9 | function question(query: string): Promise {
10 | const rl = readline.createInterface({
11 | input: process.stdin,
12 | output: process.stdout,
13 | });
14 |
15 | return new Promise((resolve) =>
16 | rl.question(query, (ans) => {
17 | rl.close();
18 | resolve(ans);
19 | })
20 | );
21 | }
22 |
23 | async function getPostgresURL(): Promise {
24 | console.log('Step 1: Setting up Postgres');
25 | const dbChoice = await question(
26 | 'Do you want to use a local Postgres instance with Docker (L) or a remote Postgres instance (R)? (L/R): '
27 | );
28 |
29 | if (dbChoice.toLowerCase() === 'l') {
30 | console.log('Setting up local Postgres instance with Docker...');
31 | await setupLocalPostgres();
32 | return 'postgres://postgres:postgres@localhost:54322/postgres';
33 | } else {
34 | console.log(
35 | 'You can find Postgres databases at: https://vercel.com/marketplace?category=databases'
36 | );
37 | return await question('Enter your POSTGRES_URL: ');
38 | }
39 | }
40 |
41 | async function setupLocalPostgres() {
42 | console.log('Checking if Docker is installed...');
43 | try {
44 | await execAsync('docker --version');
45 | console.log('Docker is installed.');
46 | } catch (error) {
47 | console.error(
48 | 'Docker is not installed. Please install Docker and try again.'
49 | );
50 | console.log(
51 | 'To install Docker, visit: https://docs.docker.com/get-docker/'
52 | );
53 | process.exit(1);
54 | }
55 |
56 | console.log('Creating docker-compose.yml file...');
57 | const dockerComposeContent = `
58 | services:
59 | postgres:
60 | image: postgres:16.4-alpine
61 | container_name: music_player_postgres
62 | environment:
63 | POSTGRES_DB: postgres
64 | POSTGRES_USER: postgres
65 | POSTGRES_PASSWORD: postgres
66 | ports:
67 | - "54322:5432"
68 | volumes:
69 | - postgres_data:/var/lib/postgresql/data
70 |
71 | volumes:
72 | postgres_data:
73 | `;
74 |
75 | await fs.writeFile(
76 | path.join(process.cwd(), 'docker-compose.yml'),
77 | dockerComposeContent
78 | );
79 | console.log('docker-compose.yml file created.');
80 |
81 | console.log('Starting Docker container with `docker compose up -d`...');
82 | try {
83 | await execAsync('docker compose up -d');
84 | console.log('Docker container started successfully.');
85 | } catch (error) {
86 | console.error(
87 | 'Failed to start Docker container. Please check your Docker installation and try again.'
88 | );
89 | process.exit(1);
90 | }
91 | }
92 |
93 | async function writeEnvFile(envVars: Record) {
94 | console.log('Step 3: Writing environment variables to .env');
95 | const envContent = Object.entries(envVars)
96 | .map(([key, value]) => `${key}=${value}`)
97 | .join('\n');
98 |
99 | await fs.writeFile(path.join(process.cwd(), '.env'), envContent);
100 | console.log('.env file created with the necessary variables.');
101 | }
102 |
103 | async function main() {
104 | const POSTGRES_URL = await getPostgresURL();
105 |
106 | await writeEnvFile({
107 | POSTGRES_URL,
108 | });
109 |
110 | console.log('🎉 Setup completed successfully!');
111 | }
112 |
113 | main().catch(console.error);
114 |
--------------------------------------------------------------------------------
/next.config.ts:
--------------------------------------------------------------------------------
1 | import type { NextConfig } from 'next';
2 |
3 | const nextConfig: NextConfig = {};
4 |
5 | export default nextConfig;
6 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "private": true,
3 | "scripts": {
4 | "dev": "next dev --turbopack",
5 | "build": "next build",
6 | "start": "next start",
7 | "db:setup": "npx tsx lib/db/setup.ts",
8 | "db:seed": "npx tsx lib/db/seed.ts",
9 | "db:generate": "drizzle-kit generate",
10 | "db:migrate": "npx tsx lib/db/migrate.ts",
11 | "db:studio": "drizzle-kit studio"
12 | },
13 | "dependencies": {
14 | "@tailwindcss/postcss": "4.0.0-beta.4",
15 | "@types/node": "^22.10.1",
16 | "@types/react": "npm:types-react@19.0.0-rc.1",
17 | "@types/react-dom": "npm:types-react-dom@19.0.0-rc.1",
18 | "dotenv": "^16.4.7",
19 | "drizzle-kit": "^0.28.1",
20 | "drizzle-orm": "^0.36.4",
21 | "drizzle-seed": "^0.1.2",
22 | "lucide-react": "^0.465.0",
23 | "next": "15.0.4-canary.36",
24 | "postgres": "^3.4.5",
25 | "react": "19.0.0-rc-2d16326d-20240930",
26 | "react-dom": "19.0.0-rc-2d16326d-20240930",
27 | "tailwindcss": "4.0.0-beta.4",
28 | "typescript": "^5.7.2",
29 | "zod": "^3.23.8"
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '9.0'
2 |
3 | settings:
4 | autoInstallPeers: true
5 | excludeLinksFromLockfile: false
6 |
7 | importers:
8 |
9 | .:
10 | dependencies:
11 | '@tailwindcss/postcss':
12 | specifier: 4.0.0-beta.4
13 | version: 4.0.0-beta.4
14 | '@types/node':
15 | specifier: ^22.10.1
16 | version: 22.10.1
17 | '@types/react':
18 | specifier: npm:types-react@19.0.0-rc.1
19 | version: types-react@19.0.0-rc.1
20 | '@types/react-dom':
21 | specifier: npm:types-react-dom@19.0.0-rc.1
22 | version: types-react-dom@19.0.0-rc.1
23 | dotenv:
24 | specifier: ^16.4.7
25 | version: 16.4.7
26 | drizzle-kit:
27 | specifier: ^0.28.1
28 | version: 0.28.1
29 | drizzle-orm:
30 | specifier: ^0.36.4
31 | version: 0.36.4(postgres@3.4.5)(react@19.0.0-rc-2d16326d-20240930)(types-react@19.0.0-rc.1)
32 | drizzle-seed:
33 | specifier: ^0.1.2
34 | version: 0.1.2(drizzle-orm@0.36.4(postgres@3.4.5)(react@19.0.0-rc-2d16326d-20240930)(types-react@19.0.0-rc.1))
35 | lucide-react:
36 | specifier: ^0.465.0
37 | version: 0.465.0(react@19.0.0-rc-2d16326d-20240930)
38 | next:
39 | specifier: 15.0.4-canary.36
40 | version: 15.0.4-canary.36(react-dom@19.0.0-rc-2d16326d-20240930(react@19.0.0-rc-2d16326d-20240930))(react@19.0.0-rc-2d16326d-20240930)
41 | postgres:
42 | specifier: ^3.4.5
43 | version: 3.4.5
44 | react:
45 | specifier: 19.0.0-rc-2d16326d-20240930
46 | version: 19.0.0-rc-2d16326d-20240930
47 | react-dom:
48 | specifier: 19.0.0-rc-2d16326d-20240930
49 | version: 19.0.0-rc-2d16326d-20240930(react@19.0.0-rc-2d16326d-20240930)
50 | tailwindcss:
51 | specifier: 4.0.0-beta.4
52 | version: 4.0.0-beta.4
53 | typescript:
54 | specifier: ^5.7.2
55 | version: 5.7.2
56 | zod:
57 | specifier: ^3.23.8
58 | version: 3.23.8
59 |
60 | packages:
61 |
62 | '@alloc/quick-lru@5.2.0':
63 | resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
64 | engines: {node: '>=10'}
65 |
66 | '@drizzle-team/brocli@0.10.2':
67 | resolution: {integrity: sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w==}
68 |
69 | '@emnapi/runtime@1.3.1':
70 | resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==}
71 |
72 | '@esbuild-kit/core-utils@3.3.2':
73 | resolution: {integrity: sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==}
74 | deprecated: 'Merged into tsx: https://tsx.is'
75 |
76 | '@esbuild-kit/esm-loader@2.6.5':
77 | resolution: {integrity: sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==}
78 | deprecated: 'Merged into tsx: https://tsx.is'
79 |
80 | '@esbuild/aix-ppc64@0.19.12':
81 | resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==}
82 | engines: {node: '>=12'}
83 | cpu: [ppc64]
84 | os: [aix]
85 |
86 | '@esbuild/android-arm64@0.18.20':
87 | resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==}
88 | engines: {node: '>=12'}
89 | cpu: [arm64]
90 | os: [android]
91 |
92 | '@esbuild/android-arm64@0.19.12':
93 | resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==}
94 | engines: {node: '>=12'}
95 | cpu: [arm64]
96 | os: [android]
97 |
98 | '@esbuild/android-arm@0.18.20':
99 | resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==}
100 | engines: {node: '>=12'}
101 | cpu: [arm]
102 | os: [android]
103 |
104 | '@esbuild/android-arm@0.19.12':
105 | resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==}
106 | engines: {node: '>=12'}
107 | cpu: [arm]
108 | os: [android]
109 |
110 | '@esbuild/android-x64@0.18.20':
111 | resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==}
112 | engines: {node: '>=12'}
113 | cpu: [x64]
114 | os: [android]
115 |
116 | '@esbuild/android-x64@0.19.12':
117 | resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==}
118 | engines: {node: '>=12'}
119 | cpu: [x64]
120 | os: [android]
121 |
122 | '@esbuild/darwin-arm64@0.18.20':
123 | resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==}
124 | engines: {node: '>=12'}
125 | cpu: [arm64]
126 | os: [darwin]
127 |
128 | '@esbuild/darwin-arm64@0.19.12':
129 | resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==}
130 | engines: {node: '>=12'}
131 | cpu: [arm64]
132 | os: [darwin]
133 |
134 | '@esbuild/darwin-x64@0.18.20':
135 | resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==}
136 | engines: {node: '>=12'}
137 | cpu: [x64]
138 | os: [darwin]
139 |
140 | '@esbuild/darwin-x64@0.19.12':
141 | resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==}
142 | engines: {node: '>=12'}
143 | cpu: [x64]
144 | os: [darwin]
145 |
146 | '@esbuild/freebsd-arm64@0.18.20':
147 | resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==}
148 | engines: {node: '>=12'}
149 | cpu: [arm64]
150 | os: [freebsd]
151 |
152 | '@esbuild/freebsd-arm64@0.19.12':
153 | resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==}
154 | engines: {node: '>=12'}
155 | cpu: [arm64]
156 | os: [freebsd]
157 |
158 | '@esbuild/freebsd-x64@0.18.20':
159 | resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==}
160 | engines: {node: '>=12'}
161 | cpu: [x64]
162 | os: [freebsd]
163 |
164 | '@esbuild/freebsd-x64@0.19.12':
165 | resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==}
166 | engines: {node: '>=12'}
167 | cpu: [x64]
168 | os: [freebsd]
169 |
170 | '@esbuild/linux-arm64@0.18.20':
171 | resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==}
172 | engines: {node: '>=12'}
173 | cpu: [arm64]
174 | os: [linux]
175 |
176 | '@esbuild/linux-arm64@0.19.12':
177 | resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==}
178 | engines: {node: '>=12'}
179 | cpu: [arm64]
180 | os: [linux]
181 |
182 | '@esbuild/linux-arm@0.18.20':
183 | resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==}
184 | engines: {node: '>=12'}
185 | cpu: [arm]
186 | os: [linux]
187 |
188 | '@esbuild/linux-arm@0.19.12':
189 | resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==}
190 | engines: {node: '>=12'}
191 | cpu: [arm]
192 | os: [linux]
193 |
194 | '@esbuild/linux-ia32@0.18.20':
195 | resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==}
196 | engines: {node: '>=12'}
197 | cpu: [ia32]
198 | os: [linux]
199 |
200 | '@esbuild/linux-ia32@0.19.12':
201 | resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==}
202 | engines: {node: '>=12'}
203 | cpu: [ia32]
204 | os: [linux]
205 |
206 | '@esbuild/linux-loong64@0.18.20':
207 | resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==}
208 | engines: {node: '>=12'}
209 | cpu: [loong64]
210 | os: [linux]
211 |
212 | '@esbuild/linux-loong64@0.19.12':
213 | resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==}
214 | engines: {node: '>=12'}
215 | cpu: [loong64]
216 | os: [linux]
217 |
218 | '@esbuild/linux-mips64el@0.18.20':
219 | resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==}
220 | engines: {node: '>=12'}
221 | cpu: [mips64el]
222 | os: [linux]
223 |
224 | '@esbuild/linux-mips64el@0.19.12':
225 | resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==}
226 | engines: {node: '>=12'}
227 | cpu: [mips64el]
228 | os: [linux]
229 |
230 | '@esbuild/linux-ppc64@0.18.20':
231 | resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==}
232 | engines: {node: '>=12'}
233 | cpu: [ppc64]
234 | os: [linux]
235 |
236 | '@esbuild/linux-ppc64@0.19.12':
237 | resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==}
238 | engines: {node: '>=12'}
239 | cpu: [ppc64]
240 | os: [linux]
241 |
242 | '@esbuild/linux-riscv64@0.18.20':
243 | resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==}
244 | engines: {node: '>=12'}
245 | cpu: [riscv64]
246 | os: [linux]
247 |
248 | '@esbuild/linux-riscv64@0.19.12':
249 | resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==}
250 | engines: {node: '>=12'}
251 | cpu: [riscv64]
252 | os: [linux]
253 |
254 | '@esbuild/linux-s390x@0.18.20':
255 | resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==}
256 | engines: {node: '>=12'}
257 | cpu: [s390x]
258 | os: [linux]
259 |
260 | '@esbuild/linux-s390x@0.19.12':
261 | resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==}
262 | engines: {node: '>=12'}
263 | cpu: [s390x]
264 | os: [linux]
265 |
266 | '@esbuild/linux-x64@0.18.20':
267 | resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==}
268 | engines: {node: '>=12'}
269 | cpu: [x64]
270 | os: [linux]
271 |
272 | '@esbuild/linux-x64@0.19.12':
273 | resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==}
274 | engines: {node: '>=12'}
275 | cpu: [x64]
276 | os: [linux]
277 |
278 | '@esbuild/netbsd-x64@0.18.20':
279 | resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==}
280 | engines: {node: '>=12'}
281 | cpu: [x64]
282 | os: [netbsd]
283 |
284 | '@esbuild/netbsd-x64@0.19.12':
285 | resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==}
286 | engines: {node: '>=12'}
287 | cpu: [x64]
288 | os: [netbsd]
289 |
290 | '@esbuild/openbsd-x64@0.18.20':
291 | resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==}
292 | engines: {node: '>=12'}
293 | cpu: [x64]
294 | os: [openbsd]
295 |
296 | '@esbuild/openbsd-x64@0.19.12':
297 | resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==}
298 | engines: {node: '>=12'}
299 | cpu: [x64]
300 | os: [openbsd]
301 |
302 | '@esbuild/sunos-x64@0.18.20':
303 | resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==}
304 | engines: {node: '>=12'}
305 | cpu: [x64]
306 | os: [sunos]
307 |
308 | '@esbuild/sunos-x64@0.19.12':
309 | resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==}
310 | engines: {node: '>=12'}
311 | cpu: [x64]
312 | os: [sunos]
313 |
314 | '@esbuild/win32-arm64@0.18.20':
315 | resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==}
316 | engines: {node: '>=12'}
317 | cpu: [arm64]
318 | os: [win32]
319 |
320 | '@esbuild/win32-arm64@0.19.12':
321 | resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==}
322 | engines: {node: '>=12'}
323 | cpu: [arm64]
324 | os: [win32]
325 |
326 | '@esbuild/win32-ia32@0.18.20':
327 | resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==}
328 | engines: {node: '>=12'}
329 | cpu: [ia32]
330 | os: [win32]
331 |
332 | '@esbuild/win32-ia32@0.19.12':
333 | resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==}
334 | engines: {node: '>=12'}
335 | cpu: [ia32]
336 | os: [win32]
337 |
338 | '@esbuild/win32-x64@0.18.20':
339 | resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==}
340 | engines: {node: '>=12'}
341 | cpu: [x64]
342 | os: [win32]
343 |
344 | '@esbuild/win32-x64@0.19.12':
345 | resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==}
346 | engines: {node: '>=12'}
347 | cpu: [x64]
348 | os: [win32]
349 |
350 | '@img/sharp-darwin-arm64@0.33.5':
351 | resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==}
352 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
353 | cpu: [arm64]
354 | os: [darwin]
355 |
356 | '@img/sharp-darwin-x64@0.33.5':
357 | resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==}
358 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
359 | cpu: [x64]
360 | os: [darwin]
361 |
362 | '@img/sharp-libvips-darwin-arm64@1.0.4':
363 | resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==}
364 | cpu: [arm64]
365 | os: [darwin]
366 |
367 | '@img/sharp-libvips-darwin-x64@1.0.4':
368 | resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==}
369 | cpu: [x64]
370 | os: [darwin]
371 |
372 | '@img/sharp-libvips-linux-arm64@1.0.4':
373 | resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==}
374 | cpu: [arm64]
375 | os: [linux]
376 |
377 | '@img/sharp-libvips-linux-arm@1.0.5':
378 | resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==}
379 | cpu: [arm]
380 | os: [linux]
381 |
382 | '@img/sharp-libvips-linux-s390x@1.0.4':
383 | resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==}
384 | cpu: [s390x]
385 | os: [linux]
386 |
387 | '@img/sharp-libvips-linux-x64@1.0.4':
388 | resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==}
389 | cpu: [x64]
390 | os: [linux]
391 |
392 | '@img/sharp-libvips-linuxmusl-arm64@1.0.4':
393 | resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==}
394 | cpu: [arm64]
395 | os: [linux]
396 |
397 | '@img/sharp-libvips-linuxmusl-x64@1.0.4':
398 | resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==}
399 | cpu: [x64]
400 | os: [linux]
401 |
402 | '@img/sharp-linux-arm64@0.33.5':
403 | resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==}
404 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
405 | cpu: [arm64]
406 | os: [linux]
407 |
408 | '@img/sharp-linux-arm@0.33.5':
409 | resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==}
410 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
411 | cpu: [arm]
412 | os: [linux]
413 |
414 | '@img/sharp-linux-s390x@0.33.5':
415 | resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==}
416 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
417 | cpu: [s390x]
418 | os: [linux]
419 |
420 | '@img/sharp-linux-x64@0.33.5':
421 | resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==}
422 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
423 | cpu: [x64]
424 | os: [linux]
425 |
426 | '@img/sharp-linuxmusl-arm64@0.33.5':
427 | resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==}
428 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
429 | cpu: [arm64]
430 | os: [linux]
431 |
432 | '@img/sharp-linuxmusl-x64@0.33.5':
433 | resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==}
434 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
435 | cpu: [x64]
436 | os: [linux]
437 |
438 | '@img/sharp-wasm32@0.33.5':
439 | resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==}
440 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
441 | cpu: [wasm32]
442 |
443 | '@img/sharp-win32-ia32@0.33.5':
444 | resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==}
445 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
446 | cpu: [ia32]
447 | os: [win32]
448 |
449 | '@img/sharp-win32-x64@0.33.5':
450 | resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==}
451 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
452 | cpu: [x64]
453 | os: [win32]
454 |
455 | '@next/env@15.0.4-canary.36':
456 | resolution: {integrity: sha512-i6UHO8KRU9Cw69VncF5xyv//rJiHFC+YVMbMzSlEDv/1/1AFIhKIlbkiDb8wqidrg6QOeMmPhFr6rtTkCu2XWg==}
457 |
458 | '@next/swc-darwin-arm64@15.0.4-canary.36':
459 | resolution: {integrity: sha512-FBXqE9wFakbmBZLxFGcSJOnOWc0Ms9nlT6jlTJmt70/BcZQnKvoN83j3pudPua7ajo03spAljP0I6ZsG6T1KFg==}
460 | engines: {node: '>= 10'}
461 | cpu: [arm64]
462 | os: [darwin]
463 |
464 | '@next/swc-darwin-x64@15.0.4-canary.36':
465 | resolution: {integrity: sha512-TVer2dAVIpwAQwX5oCW4VvhAkC4+qjVfXqyfaXHmhZp2DthsnbbsfMOZXUZwtU6c9GkPb5EwPSr+70slHs7eog==}
466 | engines: {node: '>= 10'}
467 | cpu: [x64]
468 | os: [darwin]
469 |
470 | '@next/swc-linux-arm64-gnu@15.0.4-canary.36':
471 | resolution: {integrity: sha512-QXMXcQ+6uPZ1v0tUyiPiFBMQ8xkpLxlmCUwHrtCYeIq2ZkrlG1bBjrPcCupAJYWKr0FolQYnWm1QguJljyANqw==}
472 | engines: {node: '>= 10'}
473 | cpu: [arm64]
474 | os: [linux]
475 |
476 | '@next/swc-linux-arm64-musl@15.0.4-canary.36':
477 | resolution: {integrity: sha512-RX3UbT9YZF/BLsDTUejE7v/Qadvy018cZKBs4swBH32BJrjNoe7EfN/xFpK7t0MN4tgjcYVe0C1ja7ljkjMG4Q==}
478 | engines: {node: '>= 10'}
479 | cpu: [arm64]
480 | os: [linux]
481 |
482 | '@next/swc-linux-x64-gnu@15.0.4-canary.36':
483 | resolution: {integrity: sha512-ReZ1gGYBiEik3OPTTwGpAX3S1meklcdItNCHq6NKGCLA+OTUmIbSSWVy4+d3yrtflcUSUQMfA9FHn2ljufPndQ==}
484 | engines: {node: '>= 10'}
485 | cpu: [x64]
486 | os: [linux]
487 |
488 | '@next/swc-linux-x64-musl@15.0.4-canary.36':
489 | resolution: {integrity: sha512-SZszQaH0L8UvDLeOA9kHcwaZ/kRrYjum/5CvHdD9ag9D8N5if63hCzyqI9wq5Ujmkk7JWdLLgU43Wjs/r2lcYw==}
490 | engines: {node: '>= 10'}
491 | cpu: [x64]
492 | os: [linux]
493 |
494 | '@next/swc-win32-arm64-msvc@15.0.4-canary.36':
495 | resolution: {integrity: sha512-B9oy+mgYeABnJfYcu0Xz//hZ4qj2177aT1D3+vjtHFePMh/bbTDnWXThO7BdfqBbHMTl1Bd17jwv8vYfKRLB7g==}
496 | engines: {node: '>= 10'}
497 | cpu: [arm64]
498 | os: [win32]
499 |
500 | '@next/swc-win32-x64-msvc@15.0.4-canary.36':
501 | resolution: {integrity: sha512-/0Sj8knfVb7lEwcgputR3IOWyO0yEA2PdyyTN2bG7efC4xb2zzaE7L5m+2D7u0JCFo+O3wNpZzBGMtmxVyIzHw==}
502 | engines: {node: '>= 10'}
503 | cpu: [x64]
504 | os: [win32]
505 |
506 | '@swc/counter@0.1.3':
507 | resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==}
508 |
509 | '@swc/helpers@0.5.13':
510 | resolution: {integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==}
511 |
512 | '@tailwindcss/node@4.0.0-beta.4':
513 | resolution: {integrity: sha512-NAPhQ6BcjXUqI+QFtzYHTcoqX4ACGNZl69NfMIDCCTvmPZ761sdvX8cy3LyeJEZDyfyoBT5vzjzfWeNZR7Y+KA==}
514 |
515 | '@tailwindcss/oxide-android-arm64@4.0.0-beta.4':
516 | resolution: {integrity: sha512-r/MBScgeBZXE1xkZ+mw8/QybAlTOEzSJ6Jo9W9YCaqy+6S0Iaeo6CmwOPBrtX4/nlHm/v3hcmQWnaeJDQJMkTg==}
517 | engines: {node: '>= 10'}
518 | cpu: [arm64]
519 | os: [android]
520 |
521 | '@tailwindcss/oxide-darwin-arm64@4.0.0-beta.4':
522 | resolution: {integrity: sha512-snm+1FmjU59X/2kCgryBlbGYEwJ945cC48XkN78pZIxYn/V7LNukGvDlIKgVJ6GxU4iiac7pk149ZyFZ7Ukj4Q==}
523 | engines: {node: '>= 10'}
524 | cpu: [arm64]
525 | os: [darwin]
526 |
527 | '@tailwindcss/oxide-darwin-x64@4.0.0-beta.4':
528 | resolution: {integrity: sha512-BRbp+1WSExBCHnBK3EmTmmweM04UhpegOjjQbWDADrklhNU7juYNiu/4RN7A74ndweeopKuYB8gvMrdGlAEeuA==}
529 | engines: {node: '>= 10'}
530 | cpu: [x64]
531 | os: [darwin]
532 |
533 | '@tailwindcss/oxide-freebsd-x64@4.0.0-beta.4':
534 | resolution: {integrity: sha512-HO6cclVvp1JueqleUfYpLFK41lnI/5/oqwkftZQ5LNF0fwp8sQm2cEh7GTCj2hwTIUnHbxmSmrg1MZL1/yoVgA==}
535 | engines: {node: '>= 10'}
536 | cpu: [x64]
537 | os: [freebsd]
538 |
539 | '@tailwindcss/oxide-linux-arm-gnueabihf@4.0.0-beta.4':
540 | resolution: {integrity: sha512-Z6xUcakkJZGySTce0QqfbNdLRK4cUNmilvDd69q+8Ep+Vxqy+x5bkCweAf7b+lJsUe6mjclT2EP1ouMvqegnQQ==}
541 | engines: {node: '>= 10'}
542 | cpu: [arm]
543 | os: [linux]
544 |
545 | '@tailwindcss/oxide-linux-arm64-gnu@4.0.0-beta.4':
546 | resolution: {integrity: sha512-hr9AbxrsAXWjZp8iIcQes7eIfMnSgUS6qA/SbcxFfvmte/BHUSuSxa21OZpFRVYFcQ/BIqLA1hU27fvfZZq4JQ==}
547 | engines: {node: '>= 10'}
548 | cpu: [arm64]
549 | os: [linux]
550 |
551 | '@tailwindcss/oxide-linux-arm64-musl@4.0.0-beta.4':
552 | resolution: {integrity: sha512-b//iI94Eo29LqzAOBfFt1m3bM1CF9NU3K59o3ikAwM6kdxmPQoc7TBpcrEh3lKomJ1Ejj0M95022YqksY7O8gQ==}
553 | engines: {node: '>= 10'}
554 | cpu: [arm64]
555 | os: [linux]
556 |
557 | '@tailwindcss/oxide-linux-x64-gnu@4.0.0-beta.4':
558 | resolution: {integrity: sha512-xqK6amSCZpEpWbuN0WYDlaOir7n2NjD2jtnVZ5eWpnw4kkjzu0kmVqN9PaWdejZUKVfvEy7Ldbmcos9MpQhi4g==}
559 | engines: {node: '>= 10'}
560 | cpu: [x64]
561 | os: [linux]
562 |
563 | '@tailwindcss/oxide-linux-x64-musl@4.0.0-beta.4':
564 | resolution: {integrity: sha512-9V3CtBJ+oBxeppvBUvfZ2NbsrgKkLDIVrF4jUcpj3Md4rdpW6mIRWxqzEY1uT9JZlFr4YmVx6Auax+32BUtD2A==}
565 | engines: {node: '>= 10'}
566 | cpu: [x64]
567 | os: [linux]
568 |
569 | '@tailwindcss/oxide-win32-arm64-msvc@4.0.0-beta.4':
570 | resolution: {integrity: sha512-MYfGNg1nikym/F2aCx0ni5ZWKsChVwWTsjgmDo9ZOiqhWE/7yeX0Ej+lugEh4gPHyUpcMbeTZySZx0OJ8o+X1Q==}
571 | engines: {node: '>= 10'}
572 | cpu: [arm64]
573 | os: [win32]
574 |
575 | '@tailwindcss/oxide-win32-x64-msvc@4.0.0-beta.4':
576 | resolution: {integrity: sha512-hCMihksJD5odhAm+SLFNk75etPRK+QjyMIPMryUI7na6kvB8OaTH4gRBIO27GvRk2q1Zm2sqn4JoYy2auuoAAA==}
577 | engines: {node: '>= 10'}
578 | cpu: [x64]
579 | os: [win32]
580 |
581 | '@tailwindcss/oxide@4.0.0-beta.4':
582 | resolution: {integrity: sha512-yYZ069LXAEOrQt3SwYV+PhwsGBM0qo7ofsOF5BDrju9Nsz+X0z9NCF9fvc6zJ11wX1bSVuiyLbwIS4P9rVT8hg==}
583 | engines: {node: '>= 10'}
584 |
585 | '@tailwindcss/postcss@4.0.0-beta.4':
586 | resolution: {integrity: sha512-nZZKXG/SRf4+8udSThSMbCduQRen60kWtlkxwLUNpKlJWBkWF7vy/ybJzfgCXwEFxBLuNsnm89o42I3XoifAIw==}
587 |
588 | '@types/node@22.10.1':
589 | resolution: {integrity: sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==}
590 |
591 | '@types/prop-types@15.7.13':
592 | resolution: {integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==}
593 |
594 | '@types/react@18.3.12':
595 | resolution: {integrity: sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==}
596 |
597 | buffer-from@1.1.2:
598 | resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
599 |
600 | busboy@1.6.0:
601 | resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==}
602 | engines: {node: '>=10.16.0'}
603 |
604 | caniuse-lite@1.0.30001686:
605 | resolution: {integrity: sha512-Y7deg0Aergpa24M3qLC5xjNklnKnhsmSyR/V89dLZ1n0ucJIFNs7PgR2Yfa/Zf6W79SbBicgtGxZr2juHkEUIA==}
606 |
607 | client-only@0.0.1:
608 | resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==}
609 |
610 | color-convert@2.0.1:
611 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
612 | engines: {node: '>=7.0.0'}
613 |
614 | color-name@1.1.4:
615 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
616 |
617 | color-string@1.9.1:
618 | resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==}
619 |
620 | color@4.2.3:
621 | resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==}
622 | engines: {node: '>=12.5.0'}
623 |
624 | csstype@3.1.3:
625 | resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
626 |
627 | debug@4.3.7:
628 | resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==}
629 | engines: {node: '>=6.0'}
630 | peerDependencies:
631 | supports-color: '*'
632 | peerDependenciesMeta:
633 | supports-color:
634 | optional: true
635 |
636 | detect-libc@1.0.3:
637 | resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==}
638 | engines: {node: '>=0.10'}
639 | hasBin: true
640 |
641 | detect-libc@2.0.3:
642 | resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==}
643 | engines: {node: '>=8'}
644 |
645 | dotenv@16.4.7:
646 | resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==}
647 | engines: {node: '>=12'}
648 |
649 | drizzle-kit@0.28.1:
650 | resolution: {integrity: sha512-JimOV+ystXTWMgZkLHYHf2w3oS28hxiH1FR0dkmJLc7GHzdGJoJAQtQS5DRppnabsRZwE2U1F6CuezVBgmsBBQ==}
651 | hasBin: true
652 |
653 | drizzle-orm@0.36.4:
654 | resolution: {integrity: sha512-1OZY3PXD7BR00Gl61UUOFihslDldfH4NFRH2MbP54Yxi0G/PKn4HfO65JYZ7c16DeP3SpM3Aw+VXVG9j6CRSXA==}
655 | peerDependencies:
656 | '@aws-sdk/client-rds-data': '>=3'
657 | '@cloudflare/workers-types': '>=3'
658 | '@electric-sql/pglite': '>=0.2.0'
659 | '@libsql/client': '>=0.10.0'
660 | '@libsql/client-wasm': '>=0.10.0'
661 | '@neondatabase/serverless': '>=0.10.0'
662 | '@op-engineering/op-sqlite': '>=2'
663 | '@opentelemetry/api': ^1.4.1
664 | '@planetscale/database': '>=1'
665 | '@prisma/client': '*'
666 | '@tidbcloud/serverless': '*'
667 | '@types/better-sqlite3': '*'
668 | '@types/pg': '*'
669 | '@types/react': '>=18'
670 | '@types/sql.js': '*'
671 | '@vercel/postgres': '>=0.8.0'
672 | '@xata.io/client': '*'
673 | better-sqlite3: '>=7'
674 | bun-types: '*'
675 | expo-sqlite: '>=14.0.0'
676 | knex: '*'
677 | kysely: '*'
678 | mysql2: '>=2'
679 | pg: '>=8'
680 | postgres: '>=3'
681 | prisma: '*'
682 | react: '>=18'
683 | sql.js: '>=1'
684 | sqlite3: '>=5'
685 | peerDependenciesMeta:
686 | '@aws-sdk/client-rds-data':
687 | optional: true
688 | '@cloudflare/workers-types':
689 | optional: true
690 | '@electric-sql/pglite':
691 | optional: true
692 | '@libsql/client':
693 | optional: true
694 | '@libsql/client-wasm':
695 | optional: true
696 | '@neondatabase/serverless':
697 | optional: true
698 | '@op-engineering/op-sqlite':
699 | optional: true
700 | '@opentelemetry/api':
701 | optional: true
702 | '@planetscale/database':
703 | optional: true
704 | '@prisma/client':
705 | optional: true
706 | '@tidbcloud/serverless':
707 | optional: true
708 | '@types/better-sqlite3':
709 | optional: true
710 | '@types/pg':
711 | optional: true
712 | '@types/react':
713 | optional: true
714 | '@types/sql.js':
715 | optional: true
716 | '@vercel/postgres':
717 | optional: true
718 | '@xata.io/client':
719 | optional: true
720 | better-sqlite3:
721 | optional: true
722 | bun-types:
723 | optional: true
724 | expo-sqlite:
725 | optional: true
726 | knex:
727 | optional: true
728 | kysely:
729 | optional: true
730 | mysql2:
731 | optional: true
732 | pg:
733 | optional: true
734 | postgres:
735 | optional: true
736 | prisma:
737 | optional: true
738 | react:
739 | optional: true
740 | sql.js:
741 | optional: true
742 | sqlite3:
743 | optional: true
744 |
745 | drizzle-seed@0.1.2:
746 | resolution: {integrity: sha512-F7+1tK/f5SHXK75ISH1zKUZWslW18dr9gbYB9tQHx7t5Wm82481OE5HGKFIjWuGV1VS0eFVr7+uXl8PFwPJjPA==}
747 | peerDependencies:
748 | drizzle-orm: '>=0.36.4'
749 | peerDependenciesMeta:
750 | drizzle-orm:
751 | optional: true
752 |
753 | enhanced-resolve@5.17.1:
754 | resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==}
755 | engines: {node: '>=10.13.0'}
756 |
757 | esbuild-register@3.6.0:
758 | resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==}
759 | peerDependencies:
760 | esbuild: '>=0.12 <1'
761 |
762 | esbuild@0.18.20:
763 | resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==}
764 | engines: {node: '>=12'}
765 | hasBin: true
766 |
767 | esbuild@0.19.12:
768 | resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==}
769 | engines: {node: '>=12'}
770 | hasBin: true
771 |
772 | get-tsconfig@4.8.1:
773 | resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==}
774 |
775 | graceful-fs@4.2.11:
776 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
777 |
778 | is-arrayish@0.3.2:
779 | resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
780 |
781 | jiti@2.4.1:
782 | resolution: {integrity: sha512-yPBThwecp1wS9DmoA4x4KR2h3QoslacnDR8ypuFM962kI4/456Iy1oHx2RAgh4jfZNdn0bctsdadceiBUgpU1g==}
783 | hasBin: true
784 |
785 | lightningcss-darwin-arm64@1.28.2:
786 | resolution: {integrity: sha512-/8cPSqZiusHSS+WQz0W4NuaqFjquys1x+NsdN/XOHb+idGHJSoJ7SoQTVl3DZuAgtPZwFZgRfb/vd1oi8uX6+g==}
787 | engines: {node: '>= 12.0.0'}
788 | cpu: [arm64]
789 | os: [darwin]
790 |
791 | lightningcss-darwin-x64@1.28.2:
792 | resolution: {integrity: sha512-R7sFrXlgKjvoEG8umpVt/yutjxOL0z8KWf0bfPT3cYMOW4470xu5qSHpFdIOpRWwl3FKNMUdbKtMUjYt0h2j4g==}
793 | engines: {node: '>= 12.0.0'}
794 | cpu: [x64]
795 | os: [darwin]
796 |
797 | lightningcss-freebsd-x64@1.28.2:
798 | resolution: {integrity: sha512-l2qrCT+x7crAY+lMIxtgvV10R8VurzHAoUZJaVFSlHrN8kRLTvEg9ObojIDIexqWJQvJcVVV3vfzsEynpiuvgA==}
799 | engines: {node: '>= 12.0.0'}
800 | cpu: [x64]
801 | os: [freebsd]
802 |
803 | lightningcss-linux-arm-gnueabihf@1.28.2:
804 | resolution: {integrity: sha512-DKMzpICBEKnL53X14rF7hFDu8KKALUJtcKdFUCW5YOlGSiwRSgVoRjM97wUm/E0NMPkzrTi/rxfvt7ruNK8meg==}
805 | engines: {node: '>= 12.0.0'}
806 | cpu: [arm]
807 | os: [linux]
808 |
809 | lightningcss-linux-arm64-gnu@1.28.2:
810 | resolution: {integrity: sha512-nhfjYkfymWZSxdtTNMWyhFk2ImUm0X7NAgJWFwnsYPOfmtWQEapzG/DXZTfEfMjSzERNUNJoQjPAbdqgB+sjiw==}
811 | engines: {node: '>= 12.0.0'}
812 | cpu: [arm64]
813 | os: [linux]
814 |
815 | lightningcss-linux-arm64-musl@1.28.2:
816 | resolution: {integrity: sha512-1SPG1ZTNnphWvAv8RVOymlZ8BDtAg69Hbo7n4QxARvkFVCJAt0cgjAw1Fox0WEhf4PwnyoOBaVH0Z5YNgzt4dA==}
817 | engines: {node: '>= 12.0.0'}
818 | cpu: [arm64]
819 | os: [linux]
820 |
821 | lightningcss-linux-x64-gnu@1.28.2:
822 | resolution: {integrity: sha512-ZhQy0FcO//INWUdo/iEdbefntTdpPVQ0XJwwtdbBuMQe+uxqZoytm9M+iqR9O5noWFaxK+nbS2iR/I80Q2Ofpg==}
823 | engines: {node: '>= 12.0.0'}
824 | cpu: [x64]
825 | os: [linux]
826 |
827 | lightningcss-linux-x64-musl@1.28.2:
828 | resolution: {integrity: sha512-alb/j1NMrgQmSFyzTbN1/pvMPM+gdDw7YBuQ5VSgcFDypN3Ah0BzC2dTZbzwzaMdUVDszX6zH5MzjfVN1oGuww==}
829 | engines: {node: '>= 12.0.0'}
830 | cpu: [x64]
831 | os: [linux]
832 |
833 | lightningcss-win32-arm64-msvc@1.28.2:
834 | resolution: {integrity: sha512-WnwcjcBeAt0jGdjlgbT9ANf30pF0C/QMb1XnLnH272DQU8QXh+kmpi24R55wmWBwaTtNAETZ+m35ohyeMiNt+g==}
835 | engines: {node: '>= 12.0.0'}
836 | cpu: [arm64]
837 | os: [win32]
838 |
839 | lightningcss-win32-x64-msvc@1.28.2:
840 | resolution: {integrity: sha512-3piBifyT3avz22o6mDKywQC/OisH2yDK+caHWkiMsF82i3m5wDBadyCjlCQ5VNgzYkxrWZgiaxHDdd5uxsi0/A==}
841 | engines: {node: '>= 12.0.0'}
842 | cpu: [x64]
843 | os: [win32]
844 |
845 | lightningcss@1.28.2:
846 | resolution: {integrity: sha512-ePLRrbt3fgjXI5VFZOLbvkLD5ZRuxGKm+wJ3ujCqBtL3NanDHPo/5zicR5uEKAPiIjBYF99BM4K4okvMznjkVA==}
847 | engines: {node: '>= 12.0.0'}
848 |
849 | lucide-react@0.465.0:
850 | resolution: {integrity: sha512-uV7WEqbwaCcc+QjAxIhAvkAr3kgwkkYID3XptCHll72/F7NZlk6ONmJYpk+Xqx5Q0r/8wiOjz73H1BYbl8Z8iw==}
851 | peerDependencies:
852 | react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc
853 |
854 | ms@2.1.3:
855 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
856 |
857 | nanoid@3.3.8:
858 | resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==}
859 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
860 | hasBin: true
861 |
862 | next@15.0.4-canary.36:
863 | resolution: {integrity: sha512-ebOl41j6m0MR2Pgznwp4ld8QZoa3/kBxODkizinaNySnuWL8exsIHVHi2aVlegJXDvU19DAXFqftrSmt7mxINA==}
864 | engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0}
865 | hasBin: true
866 | peerDependencies:
867 | '@opentelemetry/api': ^1.1.0
868 | '@playwright/test': ^1.41.2
869 | babel-plugin-react-compiler: '*'
870 | react: ^18.2.0 || 19.0.0-rc-b01722d5-20241114
871 | react-dom: ^18.2.0 || 19.0.0-rc-b01722d5-20241114
872 | sass: ^1.3.0
873 | peerDependenciesMeta:
874 | '@opentelemetry/api':
875 | optional: true
876 | '@playwright/test':
877 | optional: true
878 | babel-plugin-react-compiler:
879 | optional: true
880 | sass:
881 | optional: true
882 |
883 | picocolors@1.1.1:
884 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
885 |
886 | postcss@8.4.31:
887 | resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==}
888 | engines: {node: ^10 || ^12 || >=14}
889 |
890 | postcss@8.4.49:
891 | resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==}
892 | engines: {node: ^10 || ^12 || >=14}
893 |
894 | postgres@3.4.5:
895 | resolution: {integrity: sha512-cDWgoah1Gez9rN3H4165peY9qfpEo+SA61oQv65O3cRUE1pOEoJWwddwcqKE8XZYjbblOJlYDlLV4h67HrEVDg==}
896 | engines: {node: '>=12'}
897 |
898 | pure-rand@6.1.0:
899 | resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==}
900 |
901 | react-dom@19.0.0-rc-2d16326d-20240930:
902 | resolution: {integrity: sha512-eBmzUwg2n0SkG+LFoQbRM/b6GyKSDFDnUEPWS+Oepbv6O6XCLSEzoJzPu7bFgNzL0tOA8gjjtP4ZJChcasldqA==}
903 | peerDependencies:
904 | react: 19.0.0-rc-2d16326d-20240930
905 |
906 | react@19.0.0-rc-2d16326d-20240930:
907 | resolution: {integrity: sha512-XeaCnXQ5lZoOtPaVZPDEcx2TUDDt6JPIEviTKhIBkQNAYKcQkAT6SPbEqxC2KqkLPnilvPi9zz+c8iikstrwRg==}
908 | engines: {node: '>=0.10.0'}
909 |
910 | resolve-pkg-maps@1.0.0:
911 | resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
912 |
913 | scheduler@0.25.0-rc-2d16326d-20240930:
914 | resolution: {integrity: sha512-P0lFGsD0rOhDQR2AA3ls0MYXeWnw/Tuu5bERwBC92DXSASB/493N9LQKe4AuCwVC671tjktLckGAxghUqJq7yg==}
915 |
916 | semver@7.6.3:
917 | resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==}
918 | engines: {node: '>=10'}
919 | hasBin: true
920 |
921 | sharp@0.33.5:
922 | resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==}
923 | engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
924 |
925 | simple-swizzle@0.2.2:
926 | resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==}
927 |
928 | source-map-js@1.2.1:
929 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
930 | engines: {node: '>=0.10.0'}
931 |
932 | source-map-support@0.5.21:
933 | resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
934 |
935 | source-map@0.6.1:
936 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
937 | engines: {node: '>=0.10.0'}
938 |
939 | streamsearch@1.1.0:
940 | resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==}
941 | engines: {node: '>=10.0.0'}
942 |
943 | styled-jsx@5.1.6:
944 | resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==}
945 | engines: {node: '>= 12.0.0'}
946 | peerDependencies:
947 | '@babel/core': '*'
948 | babel-plugin-macros: '*'
949 | react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0'
950 | peerDependenciesMeta:
951 | '@babel/core':
952 | optional: true
953 | babel-plugin-macros:
954 | optional: true
955 |
956 | tailwindcss@4.0.0-beta.4:
957 | resolution: {integrity: sha512-mkjpwMyaHCa3L5HmRjYyY8w8D+7brxwbM7YQxH8QeEFtCURd5fvdHIC9TEpIaL1X49vhl8cuOFY6Nhi6sCsI5w==}
958 |
959 | tapable@2.2.1:
960 | resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
961 | engines: {node: '>=6'}
962 |
963 | tslib@2.8.1:
964 | resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
965 |
966 | types-react-dom@19.0.0-rc.1:
967 | resolution: {integrity: sha512-VSLZJl8VXCD0fAWp7DUTFUDCcZ8DVXOQmjhJMD03odgeFmu14ZQJHCXeETm3BEAhJqfgJaFkLnGkQv88sRx0fQ==}
968 |
969 | types-react@19.0.0-rc.1:
970 | resolution: {integrity: sha512-RshndUfqTW6K3STLPis8BtAYCGOkMbtvYsi90gmVNDZBXUyUc5juf2PE9LfS/JmOlUIRO8cWTS/1MTnmhjDqyQ==}
971 |
972 | typescript@5.7.2:
973 | resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==}
974 | engines: {node: '>=14.17'}
975 | hasBin: true
976 |
977 | undici-types@6.20.0:
978 | resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==}
979 |
980 | zod@3.23.8:
981 | resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==}
982 |
983 | snapshots:
984 |
985 | '@alloc/quick-lru@5.2.0': {}
986 |
987 | '@drizzle-team/brocli@0.10.2': {}
988 |
989 | '@emnapi/runtime@1.3.1':
990 | dependencies:
991 | tslib: 2.8.1
992 | optional: true
993 |
994 | '@esbuild-kit/core-utils@3.3.2':
995 | dependencies:
996 | esbuild: 0.18.20
997 | source-map-support: 0.5.21
998 |
999 | '@esbuild-kit/esm-loader@2.6.5':
1000 | dependencies:
1001 | '@esbuild-kit/core-utils': 3.3.2
1002 | get-tsconfig: 4.8.1
1003 |
1004 | '@esbuild/aix-ppc64@0.19.12':
1005 | optional: true
1006 |
1007 | '@esbuild/android-arm64@0.18.20':
1008 | optional: true
1009 |
1010 | '@esbuild/android-arm64@0.19.12':
1011 | optional: true
1012 |
1013 | '@esbuild/android-arm@0.18.20':
1014 | optional: true
1015 |
1016 | '@esbuild/android-arm@0.19.12':
1017 | optional: true
1018 |
1019 | '@esbuild/android-x64@0.18.20':
1020 | optional: true
1021 |
1022 | '@esbuild/android-x64@0.19.12':
1023 | optional: true
1024 |
1025 | '@esbuild/darwin-arm64@0.18.20':
1026 | optional: true
1027 |
1028 | '@esbuild/darwin-arm64@0.19.12':
1029 | optional: true
1030 |
1031 | '@esbuild/darwin-x64@0.18.20':
1032 | optional: true
1033 |
1034 | '@esbuild/darwin-x64@0.19.12':
1035 | optional: true
1036 |
1037 | '@esbuild/freebsd-arm64@0.18.20':
1038 | optional: true
1039 |
1040 | '@esbuild/freebsd-arm64@0.19.12':
1041 | optional: true
1042 |
1043 | '@esbuild/freebsd-x64@0.18.20':
1044 | optional: true
1045 |
1046 | '@esbuild/freebsd-x64@0.19.12':
1047 | optional: true
1048 |
1049 | '@esbuild/linux-arm64@0.18.20':
1050 | optional: true
1051 |
1052 | '@esbuild/linux-arm64@0.19.12':
1053 | optional: true
1054 |
1055 | '@esbuild/linux-arm@0.18.20':
1056 | optional: true
1057 |
1058 | '@esbuild/linux-arm@0.19.12':
1059 | optional: true
1060 |
1061 | '@esbuild/linux-ia32@0.18.20':
1062 | optional: true
1063 |
1064 | '@esbuild/linux-ia32@0.19.12':
1065 | optional: true
1066 |
1067 | '@esbuild/linux-loong64@0.18.20':
1068 | optional: true
1069 |
1070 | '@esbuild/linux-loong64@0.19.12':
1071 | optional: true
1072 |
1073 | '@esbuild/linux-mips64el@0.18.20':
1074 | optional: true
1075 |
1076 | '@esbuild/linux-mips64el@0.19.12':
1077 | optional: true
1078 |
1079 | '@esbuild/linux-ppc64@0.18.20':
1080 | optional: true
1081 |
1082 | '@esbuild/linux-ppc64@0.19.12':
1083 | optional: true
1084 |
1085 | '@esbuild/linux-riscv64@0.18.20':
1086 | optional: true
1087 |
1088 | '@esbuild/linux-riscv64@0.19.12':
1089 | optional: true
1090 |
1091 | '@esbuild/linux-s390x@0.18.20':
1092 | optional: true
1093 |
1094 | '@esbuild/linux-s390x@0.19.12':
1095 | optional: true
1096 |
1097 | '@esbuild/linux-x64@0.18.20':
1098 | optional: true
1099 |
1100 | '@esbuild/linux-x64@0.19.12':
1101 | optional: true
1102 |
1103 | '@esbuild/netbsd-x64@0.18.20':
1104 | optional: true
1105 |
1106 | '@esbuild/netbsd-x64@0.19.12':
1107 | optional: true
1108 |
1109 | '@esbuild/openbsd-x64@0.18.20':
1110 | optional: true
1111 |
1112 | '@esbuild/openbsd-x64@0.19.12':
1113 | optional: true
1114 |
1115 | '@esbuild/sunos-x64@0.18.20':
1116 | optional: true
1117 |
1118 | '@esbuild/sunos-x64@0.19.12':
1119 | optional: true
1120 |
1121 | '@esbuild/win32-arm64@0.18.20':
1122 | optional: true
1123 |
1124 | '@esbuild/win32-arm64@0.19.12':
1125 | optional: true
1126 |
1127 | '@esbuild/win32-ia32@0.18.20':
1128 | optional: true
1129 |
1130 | '@esbuild/win32-ia32@0.19.12':
1131 | optional: true
1132 |
1133 | '@esbuild/win32-x64@0.18.20':
1134 | optional: true
1135 |
1136 | '@esbuild/win32-x64@0.19.12':
1137 | optional: true
1138 |
1139 | '@img/sharp-darwin-arm64@0.33.5':
1140 | optionalDependencies:
1141 | '@img/sharp-libvips-darwin-arm64': 1.0.4
1142 | optional: true
1143 |
1144 | '@img/sharp-darwin-x64@0.33.5':
1145 | optionalDependencies:
1146 | '@img/sharp-libvips-darwin-x64': 1.0.4
1147 | optional: true
1148 |
1149 | '@img/sharp-libvips-darwin-arm64@1.0.4':
1150 | optional: true
1151 |
1152 | '@img/sharp-libvips-darwin-x64@1.0.4':
1153 | optional: true
1154 |
1155 | '@img/sharp-libvips-linux-arm64@1.0.4':
1156 | optional: true
1157 |
1158 | '@img/sharp-libvips-linux-arm@1.0.5':
1159 | optional: true
1160 |
1161 | '@img/sharp-libvips-linux-s390x@1.0.4':
1162 | optional: true
1163 |
1164 | '@img/sharp-libvips-linux-x64@1.0.4':
1165 | optional: true
1166 |
1167 | '@img/sharp-libvips-linuxmusl-arm64@1.0.4':
1168 | optional: true
1169 |
1170 | '@img/sharp-libvips-linuxmusl-x64@1.0.4':
1171 | optional: true
1172 |
1173 | '@img/sharp-linux-arm64@0.33.5':
1174 | optionalDependencies:
1175 | '@img/sharp-libvips-linux-arm64': 1.0.4
1176 | optional: true
1177 |
1178 | '@img/sharp-linux-arm@0.33.5':
1179 | optionalDependencies:
1180 | '@img/sharp-libvips-linux-arm': 1.0.5
1181 | optional: true
1182 |
1183 | '@img/sharp-linux-s390x@0.33.5':
1184 | optionalDependencies:
1185 | '@img/sharp-libvips-linux-s390x': 1.0.4
1186 | optional: true
1187 |
1188 | '@img/sharp-linux-x64@0.33.5':
1189 | optionalDependencies:
1190 | '@img/sharp-libvips-linux-x64': 1.0.4
1191 | optional: true
1192 |
1193 | '@img/sharp-linuxmusl-arm64@0.33.5':
1194 | optionalDependencies:
1195 | '@img/sharp-libvips-linuxmusl-arm64': 1.0.4
1196 | optional: true
1197 |
1198 | '@img/sharp-linuxmusl-x64@0.33.5':
1199 | optionalDependencies:
1200 | '@img/sharp-libvips-linuxmusl-x64': 1.0.4
1201 | optional: true
1202 |
1203 | '@img/sharp-wasm32@0.33.5':
1204 | dependencies:
1205 | '@emnapi/runtime': 1.3.1
1206 | optional: true
1207 |
1208 | '@img/sharp-win32-ia32@0.33.5':
1209 | optional: true
1210 |
1211 | '@img/sharp-win32-x64@0.33.5':
1212 | optional: true
1213 |
1214 | '@next/env@15.0.4-canary.36': {}
1215 |
1216 | '@next/swc-darwin-arm64@15.0.4-canary.36':
1217 | optional: true
1218 |
1219 | '@next/swc-darwin-x64@15.0.4-canary.36':
1220 | optional: true
1221 |
1222 | '@next/swc-linux-arm64-gnu@15.0.4-canary.36':
1223 | optional: true
1224 |
1225 | '@next/swc-linux-arm64-musl@15.0.4-canary.36':
1226 | optional: true
1227 |
1228 | '@next/swc-linux-x64-gnu@15.0.4-canary.36':
1229 | optional: true
1230 |
1231 | '@next/swc-linux-x64-musl@15.0.4-canary.36':
1232 | optional: true
1233 |
1234 | '@next/swc-win32-arm64-msvc@15.0.4-canary.36':
1235 | optional: true
1236 |
1237 | '@next/swc-win32-x64-msvc@15.0.4-canary.36':
1238 | optional: true
1239 |
1240 | '@swc/counter@0.1.3': {}
1241 |
1242 | '@swc/helpers@0.5.13':
1243 | dependencies:
1244 | tslib: 2.8.1
1245 |
1246 | '@tailwindcss/node@4.0.0-beta.4':
1247 | dependencies:
1248 | enhanced-resolve: 5.17.1
1249 | jiti: 2.4.1
1250 | tailwindcss: 4.0.0-beta.4
1251 |
1252 | '@tailwindcss/oxide-android-arm64@4.0.0-beta.4':
1253 | optional: true
1254 |
1255 | '@tailwindcss/oxide-darwin-arm64@4.0.0-beta.4':
1256 | optional: true
1257 |
1258 | '@tailwindcss/oxide-darwin-x64@4.0.0-beta.4':
1259 | optional: true
1260 |
1261 | '@tailwindcss/oxide-freebsd-x64@4.0.0-beta.4':
1262 | optional: true
1263 |
1264 | '@tailwindcss/oxide-linux-arm-gnueabihf@4.0.0-beta.4':
1265 | optional: true
1266 |
1267 | '@tailwindcss/oxide-linux-arm64-gnu@4.0.0-beta.4':
1268 | optional: true
1269 |
1270 | '@tailwindcss/oxide-linux-arm64-musl@4.0.0-beta.4':
1271 | optional: true
1272 |
1273 | '@tailwindcss/oxide-linux-x64-gnu@4.0.0-beta.4':
1274 | optional: true
1275 |
1276 | '@tailwindcss/oxide-linux-x64-musl@4.0.0-beta.4':
1277 | optional: true
1278 |
1279 | '@tailwindcss/oxide-win32-arm64-msvc@4.0.0-beta.4':
1280 | optional: true
1281 |
1282 | '@tailwindcss/oxide-win32-x64-msvc@4.0.0-beta.4':
1283 | optional: true
1284 |
1285 | '@tailwindcss/oxide@4.0.0-beta.4':
1286 | optionalDependencies:
1287 | '@tailwindcss/oxide-android-arm64': 4.0.0-beta.4
1288 | '@tailwindcss/oxide-darwin-arm64': 4.0.0-beta.4
1289 | '@tailwindcss/oxide-darwin-x64': 4.0.0-beta.4
1290 | '@tailwindcss/oxide-freebsd-x64': 4.0.0-beta.4
1291 | '@tailwindcss/oxide-linux-arm-gnueabihf': 4.0.0-beta.4
1292 | '@tailwindcss/oxide-linux-arm64-gnu': 4.0.0-beta.4
1293 | '@tailwindcss/oxide-linux-arm64-musl': 4.0.0-beta.4
1294 | '@tailwindcss/oxide-linux-x64-gnu': 4.0.0-beta.4
1295 | '@tailwindcss/oxide-linux-x64-musl': 4.0.0-beta.4
1296 | '@tailwindcss/oxide-win32-arm64-msvc': 4.0.0-beta.4
1297 | '@tailwindcss/oxide-win32-x64-msvc': 4.0.0-beta.4
1298 |
1299 | '@tailwindcss/postcss@4.0.0-beta.4':
1300 | dependencies:
1301 | '@alloc/quick-lru': 5.2.0
1302 | '@tailwindcss/node': 4.0.0-beta.4
1303 | '@tailwindcss/oxide': 4.0.0-beta.4
1304 | lightningcss: 1.28.2
1305 | postcss: 8.4.49
1306 | tailwindcss: 4.0.0-beta.4
1307 |
1308 | '@types/node@22.10.1':
1309 | dependencies:
1310 | undici-types: 6.20.0
1311 |
1312 | '@types/prop-types@15.7.13': {}
1313 |
1314 | '@types/react@18.3.12':
1315 | dependencies:
1316 | '@types/prop-types': 15.7.13
1317 | csstype: 3.1.3
1318 |
1319 | buffer-from@1.1.2: {}
1320 |
1321 | busboy@1.6.0:
1322 | dependencies:
1323 | streamsearch: 1.1.0
1324 |
1325 | caniuse-lite@1.0.30001686: {}
1326 |
1327 | client-only@0.0.1: {}
1328 |
1329 | color-convert@2.0.1:
1330 | dependencies:
1331 | color-name: 1.1.4
1332 | optional: true
1333 |
1334 | color-name@1.1.4:
1335 | optional: true
1336 |
1337 | color-string@1.9.1:
1338 | dependencies:
1339 | color-name: 1.1.4
1340 | simple-swizzle: 0.2.2
1341 | optional: true
1342 |
1343 | color@4.2.3:
1344 | dependencies:
1345 | color-convert: 2.0.1
1346 | color-string: 1.9.1
1347 | optional: true
1348 |
1349 | csstype@3.1.3: {}
1350 |
1351 | debug@4.3.7:
1352 | dependencies:
1353 | ms: 2.1.3
1354 |
1355 | detect-libc@1.0.3: {}
1356 |
1357 | detect-libc@2.0.3:
1358 | optional: true
1359 |
1360 | dotenv@16.4.7: {}
1361 |
1362 | drizzle-kit@0.28.1:
1363 | dependencies:
1364 | '@drizzle-team/brocli': 0.10.2
1365 | '@esbuild-kit/esm-loader': 2.6.5
1366 | esbuild: 0.19.12
1367 | esbuild-register: 3.6.0(esbuild@0.19.12)
1368 | transitivePeerDependencies:
1369 | - supports-color
1370 |
1371 | drizzle-orm@0.36.4(postgres@3.4.5)(react@19.0.0-rc-2d16326d-20240930)(types-react@19.0.0-rc.1):
1372 | optionalDependencies:
1373 | '@types/react': types-react@19.0.0-rc.1
1374 | postgres: 3.4.5
1375 | react: 19.0.0-rc-2d16326d-20240930
1376 |
1377 | drizzle-seed@0.1.2(drizzle-orm@0.36.4(postgres@3.4.5)(react@19.0.0-rc-2d16326d-20240930)(types-react@19.0.0-rc.1)):
1378 | dependencies:
1379 | pure-rand: 6.1.0
1380 | optionalDependencies:
1381 | drizzle-orm: 0.36.4(postgres@3.4.5)(react@19.0.0-rc-2d16326d-20240930)(types-react@19.0.0-rc.1)
1382 |
1383 | enhanced-resolve@5.17.1:
1384 | dependencies:
1385 | graceful-fs: 4.2.11
1386 | tapable: 2.2.1
1387 |
1388 | esbuild-register@3.6.0(esbuild@0.19.12):
1389 | dependencies:
1390 | debug: 4.3.7
1391 | esbuild: 0.19.12
1392 | transitivePeerDependencies:
1393 | - supports-color
1394 |
1395 | esbuild@0.18.20:
1396 | optionalDependencies:
1397 | '@esbuild/android-arm': 0.18.20
1398 | '@esbuild/android-arm64': 0.18.20
1399 | '@esbuild/android-x64': 0.18.20
1400 | '@esbuild/darwin-arm64': 0.18.20
1401 | '@esbuild/darwin-x64': 0.18.20
1402 | '@esbuild/freebsd-arm64': 0.18.20
1403 | '@esbuild/freebsd-x64': 0.18.20
1404 | '@esbuild/linux-arm': 0.18.20
1405 | '@esbuild/linux-arm64': 0.18.20
1406 | '@esbuild/linux-ia32': 0.18.20
1407 | '@esbuild/linux-loong64': 0.18.20
1408 | '@esbuild/linux-mips64el': 0.18.20
1409 | '@esbuild/linux-ppc64': 0.18.20
1410 | '@esbuild/linux-riscv64': 0.18.20
1411 | '@esbuild/linux-s390x': 0.18.20
1412 | '@esbuild/linux-x64': 0.18.20
1413 | '@esbuild/netbsd-x64': 0.18.20
1414 | '@esbuild/openbsd-x64': 0.18.20
1415 | '@esbuild/sunos-x64': 0.18.20
1416 | '@esbuild/win32-arm64': 0.18.20
1417 | '@esbuild/win32-ia32': 0.18.20
1418 | '@esbuild/win32-x64': 0.18.20
1419 |
1420 | esbuild@0.19.12:
1421 | optionalDependencies:
1422 | '@esbuild/aix-ppc64': 0.19.12
1423 | '@esbuild/android-arm': 0.19.12
1424 | '@esbuild/android-arm64': 0.19.12
1425 | '@esbuild/android-x64': 0.19.12
1426 | '@esbuild/darwin-arm64': 0.19.12
1427 | '@esbuild/darwin-x64': 0.19.12
1428 | '@esbuild/freebsd-arm64': 0.19.12
1429 | '@esbuild/freebsd-x64': 0.19.12
1430 | '@esbuild/linux-arm': 0.19.12
1431 | '@esbuild/linux-arm64': 0.19.12
1432 | '@esbuild/linux-ia32': 0.19.12
1433 | '@esbuild/linux-loong64': 0.19.12
1434 | '@esbuild/linux-mips64el': 0.19.12
1435 | '@esbuild/linux-ppc64': 0.19.12
1436 | '@esbuild/linux-riscv64': 0.19.12
1437 | '@esbuild/linux-s390x': 0.19.12
1438 | '@esbuild/linux-x64': 0.19.12
1439 | '@esbuild/netbsd-x64': 0.19.12
1440 | '@esbuild/openbsd-x64': 0.19.12
1441 | '@esbuild/sunos-x64': 0.19.12
1442 | '@esbuild/win32-arm64': 0.19.12
1443 | '@esbuild/win32-ia32': 0.19.12
1444 | '@esbuild/win32-x64': 0.19.12
1445 |
1446 | get-tsconfig@4.8.1:
1447 | dependencies:
1448 | resolve-pkg-maps: 1.0.0
1449 |
1450 | graceful-fs@4.2.11: {}
1451 |
1452 | is-arrayish@0.3.2:
1453 | optional: true
1454 |
1455 | jiti@2.4.1: {}
1456 |
1457 | lightningcss-darwin-arm64@1.28.2:
1458 | optional: true
1459 |
1460 | lightningcss-darwin-x64@1.28.2:
1461 | optional: true
1462 |
1463 | lightningcss-freebsd-x64@1.28.2:
1464 | optional: true
1465 |
1466 | lightningcss-linux-arm-gnueabihf@1.28.2:
1467 | optional: true
1468 |
1469 | lightningcss-linux-arm64-gnu@1.28.2:
1470 | optional: true
1471 |
1472 | lightningcss-linux-arm64-musl@1.28.2:
1473 | optional: true
1474 |
1475 | lightningcss-linux-x64-gnu@1.28.2:
1476 | optional: true
1477 |
1478 | lightningcss-linux-x64-musl@1.28.2:
1479 | optional: true
1480 |
1481 | lightningcss-win32-arm64-msvc@1.28.2:
1482 | optional: true
1483 |
1484 | lightningcss-win32-x64-msvc@1.28.2:
1485 | optional: true
1486 |
1487 | lightningcss@1.28.2:
1488 | dependencies:
1489 | detect-libc: 1.0.3
1490 | optionalDependencies:
1491 | lightningcss-darwin-arm64: 1.28.2
1492 | lightningcss-darwin-x64: 1.28.2
1493 | lightningcss-freebsd-x64: 1.28.2
1494 | lightningcss-linux-arm-gnueabihf: 1.28.2
1495 | lightningcss-linux-arm64-gnu: 1.28.2
1496 | lightningcss-linux-arm64-musl: 1.28.2
1497 | lightningcss-linux-x64-gnu: 1.28.2
1498 | lightningcss-linux-x64-musl: 1.28.2
1499 | lightningcss-win32-arm64-msvc: 1.28.2
1500 | lightningcss-win32-x64-msvc: 1.28.2
1501 |
1502 | lucide-react@0.465.0(react@19.0.0-rc-2d16326d-20240930):
1503 | dependencies:
1504 | react: 19.0.0-rc-2d16326d-20240930
1505 |
1506 | ms@2.1.3: {}
1507 |
1508 | nanoid@3.3.8: {}
1509 |
1510 | next@15.0.4-canary.36(react-dom@19.0.0-rc-2d16326d-20240930(react@19.0.0-rc-2d16326d-20240930))(react@19.0.0-rc-2d16326d-20240930):
1511 | dependencies:
1512 | '@next/env': 15.0.4-canary.36
1513 | '@swc/counter': 0.1.3
1514 | '@swc/helpers': 0.5.13
1515 | busboy: 1.6.0
1516 | caniuse-lite: 1.0.30001686
1517 | postcss: 8.4.31
1518 | react: 19.0.0-rc-2d16326d-20240930
1519 | react-dom: 19.0.0-rc-2d16326d-20240930(react@19.0.0-rc-2d16326d-20240930)
1520 | styled-jsx: 5.1.6(react@19.0.0-rc-2d16326d-20240930)
1521 | optionalDependencies:
1522 | '@next/swc-darwin-arm64': 15.0.4-canary.36
1523 | '@next/swc-darwin-x64': 15.0.4-canary.36
1524 | '@next/swc-linux-arm64-gnu': 15.0.4-canary.36
1525 | '@next/swc-linux-arm64-musl': 15.0.4-canary.36
1526 | '@next/swc-linux-x64-gnu': 15.0.4-canary.36
1527 | '@next/swc-linux-x64-musl': 15.0.4-canary.36
1528 | '@next/swc-win32-arm64-msvc': 15.0.4-canary.36
1529 | '@next/swc-win32-x64-msvc': 15.0.4-canary.36
1530 | sharp: 0.33.5
1531 | transitivePeerDependencies:
1532 | - '@babel/core'
1533 | - babel-plugin-macros
1534 |
1535 | picocolors@1.1.1: {}
1536 |
1537 | postcss@8.4.31:
1538 | dependencies:
1539 | nanoid: 3.3.8
1540 | picocolors: 1.1.1
1541 | source-map-js: 1.2.1
1542 |
1543 | postcss@8.4.49:
1544 | dependencies:
1545 | nanoid: 3.3.8
1546 | picocolors: 1.1.1
1547 | source-map-js: 1.2.1
1548 |
1549 | postgres@3.4.5: {}
1550 |
1551 | pure-rand@6.1.0: {}
1552 |
1553 | react-dom@19.0.0-rc-2d16326d-20240930(react@19.0.0-rc-2d16326d-20240930):
1554 | dependencies:
1555 | react: 19.0.0-rc-2d16326d-20240930
1556 | scheduler: 0.25.0-rc-2d16326d-20240930
1557 |
1558 | react@19.0.0-rc-2d16326d-20240930: {}
1559 |
1560 | resolve-pkg-maps@1.0.0: {}
1561 |
1562 | scheduler@0.25.0-rc-2d16326d-20240930: {}
1563 |
1564 | semver@7.6.3:
1565 | optional: true
1566 |
1567 | sharp@0.33.5:
1568 | dependencies:
1569 | color: 4.2.3
1570 | detect-libc: 2.0.3
1571 | semver: 7.6.3
1572 | optionalDependencies:
1573 | '@img/sharp-darwin-arm64': 0.33.5
1574 | '@img/sharp-darwin-x64': 0.33.5
1575 | '@img/sharp-libvips-darwin-arm64': 1.0.4
1576 | '@img/sharp-libvips-darwin-x64': 1.0.4
1577 | '@img/sharp-libvips-linux-arm': 1.0.5
1578 | '@img/sharp-libvips-linux-arm64': 1.0.4
1579 | '@img/sharp-libvips-linux-s390x': 1.0.4
1580 | '@img/sharp-libvips-linux-x64': 1.0.4
1581 | '@img/sharp-libvips-linuxmusl-arm64': 1.0.4
1582 | '@img/sharp-libvips-linuxmusl-x64': 1.0.4
1583 | '@img/sharp-linux-arm': 0.33.5
1584 | '@img/sharp-linux-arm64': 0.33.5
1585 | '@img/sharp-linux-s390x': 0.33.5
1586 | '@img/sharp-linux-x64': 0.33.5
1587 | '@img/sharp-linuxmusl-arm64': 0.33.5
1588 | '@img/sharp-linuxmusl-x64': 0.33.5
1589 | '@img/sharp-wasm32': 0.33.5
1590 | '@img/sharp-win32-ia32': 0.33.5
1591 | '@img/sharp-win32-x64': 0.33.5
1592 | optional: true
1593 |
1594 | simple-swizzle@0.2.2:
1595 | dependencies:
1596 | is-arrayish: 0.3.2
1597 | optional: true
1598 |
1599 | source-map-js@1.2.1: {}
1600 |
1601 | source-map-support@0.5.21:
1602 | dependencies:
1603 | buffer-from: 1.1.2
1604 | source-map: 0.6.1
1605 |
1606 | source-map@0.6.1: {}
1607 |
1608 | streamsearch@1.1.0: {}
1609 |
1610 | styled-jsx@5.1.6(react@19.0.0-rc-2d16326d-20240930):
1611 | dependencies:
1612 | client-only: 0.0.1
1613 | react: 19.0.0-rc-2d16326d-20240930
1614 |
1615 | tailwindcss@4.0.0-beta.4: {}
1616 |
1617 | tapable@2.2.1: {}
1618 |
1619 | tslib@2.8.1: {}
1620 |
1621 | types-react-dom@19.0.0-rc.1:
1622 | dependencies:
1623 | '@types/react': 18.3.12
1624 |
1625 | types-react@19.0.0-rc.1:
1626 | dependencies:
1627 | csstype: 3.1.3
1628 |
1629 | typescript@5.7.2: {}
1630 |
1631 | undici-types@6.20.0: {}
1632 |
1633 | zod@3.23.8: {}
1634 |
--------------------------------------------------------------------------------
/postcss.config.mjs:
--------------------------------------------------------------------------------
1 | /** @type {import('postcss-load-config').Config} */
2 | export default {
3 | plugins: {
4 | '@tailwindcss/postcss': {},
5 | },
6 | };
7 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ESNext",
4 | "lib": [
5 | "dom",
6 | "dom.iterable",
7 | "esnext"
8 | ],
9 | "allowJs": true,
10 | "skipLibCheck": true,
11 | "strict": true,
12 | "noEmit": true,
13 | "esModuleInterop": true,
14 | "module": "esnext",
15 | "moduleResolution": "bundler",
16 | "resolveJsonModule": true,
17 | "isolatedModules": true,
18 | "jsx": "preserve",
19 | "incremental": true,
20 | "baseUrl": ".",
21 | "plugins": [
22 | {
23 | "name": "next"
24 | }
25 | ],
26 | "paths": {
27 | "@/*": [
28 | "./*"
29 | ]
30 | }
31 | },
32 | "include": [
33 | "next-env.d.ts",
34 | "**/*.ts",
35 | "**/*.tsx",
36 | ".next/types/**/*.ts"
37 | ],
38 | "exclude": [
39 | "node_modules"
40 | ]
41 | }
42 |
--------------------------------------------------------------------------------