My personal site. theclashfruit.me
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

feat: db, posts api

+1661 -15
+37
.drizzle/0000_silent_cammi.sql
··· 1 + CREATE TABLE "comments" ( 2 + "id" bigint PRIMARY KEY NOT NULL, 3 + "post_id" bigint, 4 + "parent_id" bigint, 5 + "author_id" bigint, 6 + "display_name" varchar(64), 7 + "content" text NOT NULL 8 + ); 9 + --> statement-breakpoint 10 + CREATE TABLE "posts" ( 11 + "id" bigint PRIMARY KEY NOT NULL, 12 + "author_id" bigint, 13 + "slug" varchar(128) NOT NULL, 14 + "title" varchar(256) NOT NULL, 15 + "content" text NOT NULL, 16 + "published_at" timestamp DEFAULT now() NOT NULL, 17 + "updated_at" timestamp DEFAULT now() NOT NULL, 18 + CONSTRAINT "posts_slug_unique" UNIQUE("slug") 19 + ); 20 + --> statement-breakpoint 21 + CREATE TABLE "users" ( 22 + "id" bigint PRIMARY KEY NOT NULL, 23 + "username" varchar(32) NOT NULL, 24 + "display_name" varchar(64), 25 + "email" varchar(320) NOT NULL, 26 + "password" varchar(72) NOT NULL, 27 + "avatar" varchar(40), 28 + "permissions" integer DEFAULT 0 NOT NULL, 29 + CONSTRAINT "users_username_unique" UNIQUE("username"), 30 + CONSTRAINT "users_email_unique" UNIQUE("email"), 31 + CONSTRAINT "users_password_unique" UNIQUE("password") 32 + ); 33 + --> statement-breakpoint 34 + ALTER TABLE "comments" ADD CONSTRAINT "comments_post_id_posts_id_fk" FOREIGN KEY ("post_id") REFERENCES "public"."posts"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint 35 + ALTER TABLE "comments" ADD CONSTRAINT "comments_parent_id_comments_id_fk" FOREIGN KEY ("parent_id") REFERENCES "public"."comments"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint 36 + ALTER TABLE "comments" ADD CONSTRAINT "comments_author_id_users_id_fk" FOREIGN KEY ("author_id") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint 37 + ALTER TABLE "posts" ADD CONSTRAINT "posts_author_id_users_id_fk" FOREIGN KEY ("author_id") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action;
+265
.drizzle/meta/0000_snapshot.json
··· 1 + { 2 + "id": "7a7dc3ca-7ef1-47fb-b857-9f130f2b2287", 3 + "prevId": "00000000-0000-0000-0000-000000000000", 4 + "version": "7", 5 + "dialect": "postgresql", 6 + "tables": { 7 + "public.comments": { 8 + "name": "comments", 9 + "schema": "", 10 + "columns": { 11 + "id": { 12 + "name": "id", 13 + "type": "bigint", 14 + "primaryKey": true, 15 + "notNull": true 16 + }, 17 + "post_id": { 18 + "name": "post_id", 19 + "type": "bigint", 20 + "primaryKey": false, 21 + "notNull": false 22 + }, 23 + "parent_id": { 24 + "name": "parent_id", 25 + "type": "bigint", 26 + "primaryKey": false, 27 + "notNull": false 28 + }, 29 + "author_id": { 30 + "name": "author_id", 31 + "type": "bigint", 32 + "primaryKey": false, 33 + "notNull": false 34 + }, 35 + "display_name": { 36 + "name": "display_name", 37 + "type": "varchar(64)", 38 + "primaryKey": false, 39 + "notNull": false 40 + }, 41 + "content": { 42 + "name": "content", 43 + "type": "text", 44 + "primaryKey": false, 45 + "notNull": true 46 + } 47 + }, 48 + "indexes": {}, 49 + "foreignKeys": { 50 + "comments_post_id_posts_id_fk": { 51 + "name": "comments_post_id_posts_id_fk", 52 + "tableFrom": "comments", 53 + "tableTo": "posts", 54 + "columnsFrom": [ 55 + "post_id" 56 + ], 57 + "columnsTo": [ 58 + "id" 59 + ], 60 + "onDelete": "no action", 61 + "onUpdate": "no action" 62 + }, 63 + "comments_parent_id_comments_id_fk": { 64 + "name": "comments_parent_id_comments_id_fk", 65 + "tableFrom": "comments", 66 + "tableTo": "comments", 67 + "columnsFrom": [ 68 + "parent_id" 69 + ], 70 + "columnsTo": [ 71 + "id" 72 + ], 73 + "onDelete": "no action", 74 + "onUpdate": "no action" 75 + }, 76 + "comments_author_id_users_id_fk": { 77 + "name": "comments_author_id_users_id_fk", 78 + "tableFrom": "comments", 79 + "tableTo": "users", 80 + "columnsFrom": [ 81 + "author_id" 82 + ], 83 + "columnsTo": [ 84 + "id" 85 + ], 86 + "onDelete": "no action", 87 + "onUpdate": "no action" 88 + } 89 + }, 90 + "compositePrimaryKeys": {}, 91 + "uniqueConstraints": {}, 92 + "policies": {}, 93 + "checkConstraints": {}, 94 + "isRLSEnabled": false 95 + }, 96 + "public.posts": { 97 + "name": "posts", 98 + "schema": "", 99 + "columns": { 100 + "id": { 101 + "name": "id", 102 + "type": "bigint", 103 + "primaryKey": true, 104 + "notNull": true 105 + }, 106 + "author_id": { 107 + "name": "author_id", 108 + "type": "bigint", 109 + "primaryKey": false, 110 + "notNull": false 111 + }, 112 + "slug": { 113 + "name": "slug", 114 + "type": "varchar(128)", 115 + "primaryKey": false, 116 + "notNull": true 117 + }, 118 + "title": { 119 + "name": "title", 120 + "type": "varchar(256)", 121 + "primaryKey": false, 122 + "notNull": true 123 + }, 124 + "content": { 125 + "name": "content", 126 + "type": "text", 127 + "primaryKey": false, 128 + "notNull": true 129 + }, 130 + "published_at": { 131 + "name": "published_at", 132 + "type": "timestamp", 133 + "primaryKey": false, 134 + "notNull": true, 135 + "default": "now()" 136 + }, 137 + "updated_at": { 138 + "name": "updated_at", 139 + "type": "timestamp", 140 + "primaryKey": false, 141 + "notNull": true, 142 + "default": "now()" 143 + } 144 + }, 145 + "indexes": {}, 146 + "foreignKeys": { 147 + "posts_author_id_users_id_fk": { 148 + "name": "posts_author_id_users_id_fk", 149 + "tableFrom": "posts", 150 + "tableTo": "users", 151 + "columnsFrom": [ 152 + "author_id" 153 + ], 154 + "columnsTo": [ 155 + "id" 156 + ], 157 + "onDelete": "no action", 158 + "onUpdate": "no action" 159 + } 160 + }, 161 + "compositePrimaryKeys": {}, 162 + "uniqueConstraints": { 163 + "posts_slug_unique": { 164 + "name": "posts_slug_unique", 165 + "nullsNotDistinct": false, 166 + "columns": [ 167 + "slug" 168 + ] 169 + } 170 + }, 171 + "policies": {}, 172 + "checkConstraints": {}, 173 + "isRLSEnabled": false 174 + }, 175 + "public.users": { 176 + "name": "users", 177 + "schema": "", 178 + "columns": { 179 + "id": { 180 + "name": "id", 181 + "type": "bigint", 182 + "primaryKey": true, 183 + "notNull": true 184 + }, 185 + "username": { 186 + "name": "username", 187 + "type": "varchar(32)", 188 + "primaryKey": false, 189 + "notNull": true 190 + }, 191 + "display_name": { 192 + "name": "display_name", 193 + "type": "varchar(64)", 194 + "primaryKey": false, 195 + "notNull": false 196 + }, 197 + "email": { 198 + "name": "email", 199 + "type": "varchar(320)", 200 + "primaryKey": false, 201 + "notNull": true 202 + }, 203 + "password": { 204 + "name": "password", 205 + "type": "varchar(72)", 206 + "primaryKey": false, 207 + "notNull": true 208 + }, 209 + "avatar": { 210 + "name": "avatar", 211 + "type": "varchar(40)", 212 + "primaryKey": false, 213 + "notNull": false 214 + }, 215 + "permissions": { 216 + "name": "permissions", 217 + "type": "integer", 218 + "primaryKey": false, 219 + "notNull": true, 220 + "default": 0 221 + } 222 + }, 223 + "indexes": {}, 224 + "foreignKeys": {}, 225 + "compositePrimaryKeys": {}, 226 + "uniqueConstraints": { 227 + "users_username_unique": { 228 + "name": "users_username_unique", 229 + "nullsNotDistinct": false, 230 + "columns": [ 231 + "username" 232 + ] 233 + }, 234 + "users_email_unique": { 235 + "name": "users_email_unique", 236 + "nullsNotDistinct": false, 237 + "columns": [ 238 + "email" 239 + ] 240 + }, 241 + "users_password_unique": { 242 + "name": "users_password_unique", 243 + "nullsNotDistinct": false, 244 + "columns": [ 245 + "password" 246 + ] 247 + } 248 + }, 249 + "policies": {}, 250 + "checkConstraints": {}, 251 + "isRLSEnabled": false 252 + } 253 + }, 254 + "enums": {}, 255 + "schemas": {}, 256 + "sequences": {}, 257 + "roles": {}, 258 + "policies": {}, 259 + "views": {}, 260 + "_meta": { 261 + "columns": {}, 262 + "schemas": {}, 263 + "tables": {} 264 + } 265 + }
+13
.drizzle/meta/_journal.json
··· 1 + { 2 + "version": "7", 3 + "dialect": "postgresql", 4 + "entries": [ 5 + { 6 + "idx": 0, 7 + "version": "7", 8 + "when": 1773845940841, 9 + "tag": "0000_silent_cammi", 10 + "breakpoints": true 11 + } 12 + ] 13 + }
+34
.drizzle/relations.ts
··· 1 + import { relations } from "drizzle-orm/relations"; 2 + import { users, posts, comments } from "./schema"; 3 + 4 + export const postsRelations = relations(posts, ({one, many}) => ({ 5 + user: one(users, { 6 + fields: [posts.authorId], 7 + references: [users.id] 8 + }), 9 + comments: many(comments), 10 + })); 11 + 12 + export const usersRelations = relations(users, ({many}) => ({ 13 + posts: many(posts), 14 + comments: many(comments), 15 + })); 16 + 17 + export const commentsRelations = relations(comments, ({one, many}) => ({ 18 + post: one(posts, { 19 + fields: [comments.postId], 20 + references: [posts.id] 21 + }), 22 + comment: one(comments, { 23 + fields: [comments.parentId], 24 + references: [comments.id], 25 + relationName: "comments_parentId_comments_id" 26 + }), 27 + comments: many(comments, { 28 + relationName: "comments_parentId_comments_id" 29 + }), 30 + user: one(users, { 31 + fields: [comments.authorId], 32 + references: [users.id] 33 + }), 34 + }));
+67
.drizzle/schema.ts
··· 1 + import { pgTable, foreignKey, unique, bigint, varchar, text, timestamp, integer } from "drizzle-orm/pg-core" 2 + import { sql } from "drizzle-orm" 3 + 4 + 5 + 6 + export const posts = pgTable("posts", { 7 + // You can use { mode: "bigint" } if numbers are exceeding js number limitations 8 + id: bigint({ mode: "number" }).primaryKey().notNull(), 9 + // You can use { mode: "bigint" } if numbers are exceeding js number limitations 10 + authorId: bigint("author_id", { mode: "number" }), 11 + slug: varchar({ length: 128 }).notNull(), 12 + title: varchar({ length: 256 }).notNull(), 13 + content: text().notNull(), 14 + publishedAt: timestamp("published_at", { mode: 'string' }).defaultNow().notNull(), 15 + updatedAt: timestamp("updated_at", { mode: 'string' }).defaultNow().notNull(), 16 + }, (table) => [ 17 + foreignKey({ 18 + columns: [table.authorId], 19 + foreignColumns: [users.id], 20 + name: "posts_author_id_users_id_fk" 21 + }), 22 + unique("posts_slug_unique").on(table.slug), 23 + ]); 24 + 25 + export const comments = pgTable("comments", { 26 + // You can use { mode: "bigint" } if numbers are exceeding js number limitations 27 + id: bigint({ mode: "number" }).primaryKey().notNull(), 28 + // You can use { mode: "bigint" } if numbers are exceeding js number limitations 29 + postId: bigint("post_id", { mode: "number" }), 30 + // You can use { mode: "bigint" } if numbers are exceeding js number limitations 31 + parentId: bigint("parent_id", { mode: "number" }), 32 + // You can use { mode: "bigint" } if numbers are exceeding js number limitations 33 + authorId: bigint("author_id", { mode: "number" }), 34 + displayName: varchar("display_name", { length: 64 }), 35 + content: text().notNull(), 36 + }, (table) => [ 37 + foreignKey({ 38 + columns: [table.postId], 39 + foreignColumns: [posts.id], 40 + name: "comments_post_id_posts_id_fk" 41 + }), 42 + foreignKey({ 43 + columns: [table.parentId], 44 + foreignColumns: [table.id], 45 + name: "comments_parent_id_comments_id_fk" 46 + }), 47 + foreignKey({ 48 + columns: [table.authorId], 49 + foreignColumns: [users.id], 50 + name: "comments_author_id_users_id_fk" 51 + }), 52 + ]); 53 + 54 + export const users = pgTable("users", { 55 + // You can use { mode: "bigint" } if numbers are exceeding js number limitations 56 + id: bigint({ mode: "number" }).primaryKey().notNull(), 57 + username: varchar({ length: 32 }).notNull(), 58 + displayName: varchar("display_name", { length: 64 }), 59 + email: varchar({ length: 320 }).notNull(), 60 + password: varchar({ length: 72 }).notNull(), 61 + avatar: varchar({ length: 40 }), 62 + permissions: integer().default(0).notNull(), 63 + }, (table) => [ 64 + unique("users_username_unique").on(table.username), 65 + unique("users_email_unique").on(table.email), 66 + unique("users_password_unique").on(table.password), 67 + ]);
+18 -14
app/(main)/links/page.tsx
··· 12 12 href: string; 13 13 } 14 14 15 - const buttons: ButtonLink[] = [ 16 - { 17 - title: 'Volpeon', 18 - img: 'https://volpeon.ink/_assets/btn1.svg', 19 - href: 'https://volpeon.ink/' 20 - }, 21 - { 22 - title: 'Pebble', 23 - img: 'https://pebble.pet/button.gif', 24 - href: 'https://pebble.pet/' 25 - } 26 - ]; 27 - 28 15 export const metadata: Metadata = { 29 16 title: 'Links' 30 17 }; 31 18 32 - export default function LinksPage() { 19 + export default function Links() { 20 + const buttons: ButtonLink[] = [ 21 + { 22 + title: 'Volpeon', 23 + img: 'https://volpeon.ink/_assets/btn1.svg', 24 + href: 'https://volpeon.ink/' 25 + }, 26 + { 27 + title: 'Pebble', 28 + img: 'https://pebble.pet/button.gif', 29 + href: 'https://pebble.pet/' 30 + } 31 + ]; 32 + 33 + buttons.sort((a, b) => { 34 + return a.title.localeCompare(b.title); 35 + }) 36 + 33 37 return ( 34 38 <> 35 39 <h3>Socials</h3>
+13
app/api/route.ts
··· 1 + export const dynamic = 'force-static'; 2 + 3 + export async function GET() { 4 + return Response.json({ 5 + latest: 'v1', 6 + versions: { 7 + v1: { 8 + version: '1.0.0', 9 + changelog: 'Initial Release' 10 + } 11 + } 12 + }); 13 + }
+43
app/api/v1/post/route.ts
··· 1 + import { db } from '@/lib/db/drizzle'; 2 + import { postsTable } from '@/lib/db/schema'; 3 + 4 + import { count, ilike, or } from 'drizzle-orm'; 5 + 6 + import { NextRequest } from 'next/server'; 7 + 8 + export async function GET(req: NextRequest) { 9 + const { offset, limit, query } = { 10 + offset: parseInt(req.nextUrl.searchParams.get('offset') || '0'), 11 + limit: parseInt(req.nextUrl.searchParams.get('limit') || '10'), 12 + query: req.nextUrl.searchParams.get('query') || '' 13 + }; 14 + 15 + const total = await db 16 + .select({ count: count() }) 17 + .from(postsTable) 18 + .where( 19 + or( 20 + ilike(postsTable.title, `%${query}%`), 21 + ilike(postsTable.content, `%${query}%`) 22 + ) 23 + ); 24 + 25 + const posts = await db 26 + .select() 27 + .from(postsTable) 28 + .where( 29 + or( 30 + ilike(postsTable.title, `%${query}%`), 31 + ilike(postsTable.content, `%${query}%`) 32 + ) 33 + ) 34 + .offset(offset >= 0 ? offset : 0) 35 + .limit(limit <= 100 ? (limit >= 1 ? limit : 1) : 100); 36 + 37 + return Response.json({ 38 + posts, 39 + offset, 40 + limit, 41 + total: total[0].count 42 + }); 43 + }
+11
drizzle.config.ts
··· 1 + import { defineConfig } from 'drizzle-kit'; 2 + 3 + export default defineConfig({ 4 + out: './.drizzle', 5 + schema: './lib/db/schema.ts', 6 + dialect: 'postgresql', 7 + dbCredentials: { 8 + url: process.env.DATABASE_URL! 9 + }, 10 + casing: 'snake_case' 11 + });
+7
lib/db/drizzle.ts
··· 1 + import { drizzle } from 'drizzle-orm/node-postgres'; 2 + 3 + export const db = drizzle({ 4 + connection: process.env.DATABASE_URL!, 5 + casing: 'snake_case', 6 + logger: true 7 + });
+60
lib/db/schema.ts
··· 1 + import { 2 + integer, 3 + pgTable, 4 + text, 5 + timestamp, 6 + varchar 7 + } from 'drizzle-orm/pg-core'; 8 + 9 + import { snowflake } from '@/lib/db/types/snowflake'; 10 + import { snowflakeGenerator } from '@/lib/snowflake'; 11 + 12 + export const usersTable = pgTable('users', { 13 + id: snowflake() 14 + .primaryKey() 15 + .$defaultFn(() => snowflakeGenerator.nextId()), 16 + 17 + username: varchar({ length: 32 }).unique().notNull(), 18 + displayName: varchar({ length: 64 }), 19 + 20 + email: varchar({ length: 320 }).unique().notNull(), 21 + password: varchar({ length: 72 }).unique().notNull(), 22 + 23 + avatar: varchar({ length: 40 }), 24 + 25 + permissions: integer().default(0).notNull() 26 + }); 27 + 28 + export const postsTable = pgTable('posts', { 29 + id: snowflake() 30 + .primaryKey() 31 + .$defaultFn(() => snowflakeGenerator.nextId()), 32 + 33 + author: snowflake('author_id').references(() => usersTable.id), 34 + 35 + slug: varchar({ length: 128 }).unique().notNull(), 36 + title: varchar({ length: 256 }).notNull(), 37 + 38 + content: text().notNull(), 39 + 40 + publishedAt: timestamp().notNull().defaultNow(), 41 + updatedAt: timestamp() 42 + .notNull() 43 + .defaultNow() 44 + .$onUpdate(() => new Date()) 45 + }); 46 + 47 + export const commentsTable = pgTable('comments', { 48 + id: snowflake() 49 + .primaryKey() 50 + .$defaultFn(() => snowflakeGenerator.nextId()), 51 + 52 + post: snowflake('post_id').references(() => postsTable.id), 53 + // eslint-disable-next-line @typescript-eslint/no-explicit-any 54 + parent: snowflake('parent_id').references((): any => commentsTable.id), 55 + author: snowflake('author_id').references(() => usersTable.id), 56 + 57 + displayName: varchar({ length: 64 }), 58 + 59 + content: text().notNull() 60 + });
+17
lib/db/types/snowflake.ts
··· 1 + import { customType } from 'drizzle-orm/pg-core'; 2 + 3 + export interface SnowflakeConfig { 4 + epoch?: number; 5 + } 6 + 7 + export const snowflake = customType<{ 8 + data: bigint; 9 + driverData: string; 10 + config?: SnowflakeConfig; 11 + }>({ 12 + dataType() { 13 + return 'bigint'; 14 + }, 15 + fromDriver: (value: string) => BigInt(value), 16 + toDriver: (value: bigint) => value.toString() 17 + });
+14
lib/snowflake.ts
··· 1 + import { Snowflake } from '@se-oss/snowflake-sequence'; 2 + 3 + const nodeId = parseInt(process.env.SNOWFLAKE_NODE_ID || '0', 10); 4 + 5 + if (isNaN(nodeId) || nodeId < 0 || nodeId > 1023) { 6 + throw new Error( 7 + 'Invalid SNOWFLAKE_NODE_ID. Must be an integer between 0 and 1023.' 8 + ); 9 + } 10 + 11 + export const snowflakeGenerator = new Snowflake({ 12 + nodeId: nodeId, 13 + epoch: 1772323200 14 + });
+4
package.json
··· 14 14 "@mdx-js/loader": "^3.1.1", 15 15 "@mdx-js/react": "^3.1.1", 16 16 "@next/mdx": "^16.1.6", 17 + "@se-oss/snowflake-sequence": "^1.0.0", 17 18 "@svgr/webpack": "^8.1.0", 18 19 "@types/mdx": "^2.0.13", 19 20 "@wooorm/starry-night": "^3.9.0", 21 + "drizzle-orm": "^0.45.1", 20 22 "lucide-react": "^0.577.0", 21 23 "next": "16.1.6", 24 + "pg": "^8.20.0", 22 25 "react": "19.2.3", 23 26 "react-dom": "19.2.3", 24 27 "rehype-starry-night": "^2.2.0", ··· 28 31 "@types/node": "^20", 29 32 "@types/react": "^19", 30 33 "@types/react-dom": "^19", 34 + "drizzle-kit": "^0.31.10", 31 35 "eslint": "^9", 32 36 "eslint-config-next": "16.1.6", 33 37 "eslint-config-prettier": "^10.1.8",
+1057
pnpm-lock.yaml
··· 23 23 '@next/mdx': 24 24 specifier: ^16.1.6 25 25 version: 16.1.6(@mdx-js/loader@3.1.1)(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.3)) 26 + '@se-oss/snowflake-sequence': 27 + specifier: ^1.0.0 28 + version: 1.0.0 26 29 '@svgr/webpack': 27 30 specifier: ^8.1.0 28 31 version: 8.1.0(typescript@5.9.3) ··· 32 35 '@wooorm/starry-night': 33 36 specifier: ^3.9.0 34 37 version: 3.9.0 38 + drizzle-orm: 39 + specifier: ^0.45.1 40 + version: 0.45.1(pg@8.20.0) 35 41 lucide-react: 36 42 specifier: ^0.577.0 37 43 version: 0.577.0(react@19.2.3) 38 44 next: 39 45 specifier: 16.1.6 40 46 version: 16.1.6(@babel/core@7.29.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.98.0) 47 + pg: 48 + specifier: ^8.20.0 49 + version: 8.20.0 41 50 react: 42 51 specifier: 19.2.3 43 52 version: 19.2.3 ··· 60 69 '@types/react-dom': 61 70 specifier: ^19 62 71 version: 19.2.3(@types/react@19.2.14) 72 + drizzle-kit: 73 + specifier: ^0.31.10 74 + version: 0.31.10 63 75 eslint: 64 76 specifier: ^9 65 77 version: 9.39.4 ··· 629 641 resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} 630 642 engines: {node: '>=6.9.0'} 631 643 644 + '@drizzle-team/brocli@0.10.2': 645 + resolution: {integrity: sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w==} 646 + 632 647 '@emnapi/core@1.9.0': 633 648 resolution: {integrity: sha512-0DQ98G9ZQZOxfUcQn1waV2yS8aWdZ6kJMbYCJB3oUBecjWYO1fqJ+a1DRfPF3O5JEkwqwP1A9QEN/9mYm2Yd0w==} 634 649 ··· 638 653 '@emnapi/wasi-threads@1.2.0': 639 654 resolution: {integrity: sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==} 640 655 656 + '@esbuild-kit/core-utils@3.3.2': 657 + resolution: {integrity: sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==} 658 + deprecated: 'Merged into tsx: https://tsx.is' 659 + 660 + '@esbuild-kit/esm-loader@2.6.5': 661 + resolution: {integrity: sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==} 662 + deprecated: 'Merged into tsx: https://tsx.is' 663 + 664 + '@esbuild/aix-ppc64@0.25.12': 665 + resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} 666 + engines: {node: '>=18'} 667 + cpu: [ppc64] 668 + os: [aix] 669 + 670 + '@esbuild/aix-ppc64@0.27.4': 671 + resolution: {integrity: sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==} 672 + engines: {node: '>=18'} 673 + cpu: [ppc64] 674 + os: [aix] 675 + 676 + '@esbuild/android-arm64@0.18.20': 677 + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} 678 + engines: {node: '>=12'} 679 + cpu: [arm64] 680 + os: [android] 681 + 682 + '@esbuild/android-arm64@0.25.12': 683 + resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} 684 + engines: {node: '>=18'} 685 + cpu: [arm64] 686 + os: [android] 687 + 688 + '@esbuild/android-arm64@0.27.4': 689 + resolution: {integrity: sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw==} 690 + engines: {node: '>=18'} 691 + cpu: [arm64] 692 + os: [android] 693 + 694 + '@esbuild/android-arm@0.18.20': 695 + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} 696 + engines: {node: '>=12'} 697 + cpu: [arm] 698 + os: [android] 699 + 700 + '@esbuild/android-arm@0.25.12': 701 + resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} 702 + engines: {node: '>=18'} 703 + cpu: [arm] 704 + os: [android] 705 + 706 + '@esbuild/android-arm@0.27.4': 707 + resolution: {integrity: sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ==} 708 + engines: {node: '>=18'} 709 + cpu: [arm] 710 + os: [android] 711 + 712 + '@esbuild/android-x64@0.18.20': 713 + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} 714 + engines: {node: '>=12'} 715 + cpu: [x64] 716 + os: [android] 717 + 718 + '@esbuild/android-x64@0.25.12': 719 + resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} 720 + engines: {node: '>=18'} 721 + cpu: [x64] 722 + os: [android] 723 + 724 + '@esbuild/android-x64@0.27.4': 725 + resolution: {integrity: sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw==} 726 + engines: {node: '>=18'} 727 + cpu: [x64] 728 + os: [android] 729 + 730 + '@esbuild/darwin-arm64@0.18.20': 731 + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} 732 + engines: {node: '>=12'} 733 + cpu: [arm64] 734 + os: [darwin] 735 + 736 + '@esbuild/darwin-arm64@0.25.12': 737 + resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} 738 + engines: {node: '>=18'} 739 + cpu: [arm64] 740 + os: [darwin] 741 + 742 + '@esbuild/darwin-arm64@0.27.4': 743 + resolution: {integrity: sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ==} 744 + engines: {node: '>=18'} 745 + cpu: [arm64] 746 + os: [darwin] 747 + 748 + '@esbuild/darwin-x64@0.18.20': 749 + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} 750 + engines: {node: '>=12'} 751 + cpu: [x64] 752 + os: [darwin] 753 + 754 + '@esbuild/darwin-x64@0.25.12': 755 + resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} 756 + engines: {node: '>=18'} 757 + cpu: [x64] 758 + os: [darwin] 759 + 760 + '@esbuild/darwin-x64@0.27.4': 761 + resolution: {integrity: sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw==} 762 + engines: {node: '>=18'} 763 + cpu: [x64] 764 + os: [darwin] 765 + 766 + '@esbuild/freebsd-arm64@0.18.20': 767 + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} 768 + engines: {node: '>=12'} 769 + cpu: [arm64] 770 + os: [freebsd] 771 + 772 + '@esbuild/freebsd-arm64@0.25.12': 773 + resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} 774 + engines: {node: '>=18'} 775 + cpu: [arm64] 776 + os: [freebsd] 777 + 778 + '@esbuild/freebsd-arm64@0.27.4': 779 + resolution: {integrity: sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw==} 780 + engines: {node: '>=18'} 781 + cpu: [arm64] 782 + os: [freebsd] 783 + 784 + '@esbuild/freebsd-x64@0.18.20': 785 + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} 786 + engines: {node: '>=12'} 787 + cpu: [x64] 788 + os: [freebsd] 789 + 790 + '@esbuild/freebsd-x64@0.25.12': 791 + resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} 792 + engines: {node: '>=18'} 793 + cpu: [x64] 794 + os: [freebsd] 795 + 796 + '@esbuild/freebsd-x64@0.27.4': 797 + resolution: {integrity: sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ==} 798 + engines: {node: '>=18'} 799 + cpu: [x64] 800 + os: [freebsd] 801 + 802 + '@esbuild/linux-arm64@0.18.20': 803 + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} 804 + engines: {node: '>=12'} 805 + cpu: [arm64] 806 + os: [linux] 807 + 808 + '@esbuild/linux-arm64@0.25.12': 809 + resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} 810 + engines: {node: '>=18'} 811 + cpu: [arm64] 812 + os: [linux] 813 + 814 + '@esbuild/linux-arm64@0.27.4': 815 + resolution: {integrity: sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA==} 816 + engines: {node: '>=18'} 817 + cpu: [arm64] 818 + os: [linux] 819 + 820 + '@esbuild/linux-arm@0.18.20': 821 + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} 822 + engines: {node: '>=12'} 823 + cpu: [arm] 824 + os: [linux] 825 + 826 + '@esbuild/linux-arm@0.25.12': 827 + resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} 828 + engines: {node: '>=18'} 829 + cpu: [arm] 830 + os: [linux] 831 + 832 + '@esbuild/linux-arm@0.27.4': 833 + resolution: {integrity: sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg==} 834 + engines: {node: '>=18'} 835 + cpu: [arm] 836 + os: [linux] 837 + 838 + '@esbuild/linux-ia32@0.18.20': 839 + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} 840 + engines: {node: '>=12'} 841 + cpu: [ia32] 842 + os: [linux] 843 + 844 + '@esbuild/linux-ia32@0.25.12': 845 + resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} 846 + engines: {node: '>=18'} 847 + cpu: [ia32] 848 + os: [linux] 849 + 850 + '@esbuild/linux-ia32@0.27.4': 851 + resolution: {integrity: sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA==} 852 + engines: {node: '>=18'} 853 + cpu: [ia32] 854 + os: [linux] 855 + 856 + '@esbuild/linux-loong64@0.18.20': 857 + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} 858 + engines: {node: '>=12'} 859 + cpu: [loong64] 860 + os: [linux] 861 + 862 + '@esbuild/linux-loong64@0.25.12': 863 + resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} 864 + engines: {node: '>=18'} 865 + cpu: [loong64] 866 + os: [linux] 867 + 868 + '@esbuild/linux-loong64@0.27.4': 869 + resolution: {integrity: sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA==} 870 + engines: {node: '>=18'} 871 + cpu: [loong64] 872 + os: [linux] 873 + 874 + '@esbuild/linux-mips64el@0.18.20': 875 + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} 876 + engines: {node: '>=12'} 877 + cpu: [mips64el] 878 + os: [linux] 879 + 880 + '@esbuild/linux-mips64el@0.25.12': 881 + resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} 882 + engines: {node: '>=18'} 883 + cpu: [mips64el] 884 + os: [linux] 885 + 886 + '@esbuild/linux-mips64el@0.27.4': 887 + resolution: {integrity: sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw==} 888 + engines: {node: '>=18'} 889 + cpu: [mips64el] 890 + os: [linux] 891 + 892 + '@esbuild/linux-ppc64@0.18.20': 893 + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} 894 + engines: {node: '>=12'} 895 + cpu: [ppc64] 896 + os: [linux] 897 + 898 + '@esbuild/linux-ppc64@0.25.12': 899 + resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} 900 + engines: {node: '>=18'} 901 + cpu: [ppc64] 902 + os: [linux] 903 + 904 + '@esbuild/linux-ppc64@0.27.4': 905 + resolution: {integrity: sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA==} 906 + engines: {node: '>=18'} 907 + cpu: [ppc64] 908 + os: [linux] 909 + 910 + '@esbuild/linux-riscv64@0.18.20': 911 + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} 912 + engines: {node: '>=12'} 913 + cpu: [riscv64] 914 + os: [linux] 915 + 916 + '@esbuild/linux-riscv64@0.25.12': 917 + resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} 918 + engines: {node: '>=18'} 919 + cpu: [riscv64] 920 + os: [linux] 921 + 922 + '@esbuild/linux-riscv64@0.27.4': 923 + resolution: {integrity: sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw==} 924 + engines: {node: '>=18'} 925 + cpu: [riscv64] 926 + os: [linux] 927 + 928 + '@esbuild/linux-s390x@0.18.20': 929 + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} 930 + engines: {node: '>=12'} 931 + cpu: [s390x] 932 + os: [linux] 933 + 934 + '@esbuild/linux-s390x@0.25.12': 935 + resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} 936 + engines: {node: '>=18'} 937 + cpu: [s390x] 938 + os: [linux] 939 + 940 + '@esbuild/linux-s390x@0.27.4': 941 + resolution: {integrity: sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA==} 942 + engines: {node: '>=18'} 943 + cpu: [s390x] 944 + os: [linux] 945 + 946 + '@esbuild/linux-x64@0.18.20': 947 + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} 948 + engines: {node: '>=12'} 949 + cpu: [x64] 950 + os: [linux] 951 + 952 + '@esbuild/linux-x64@0.25.12': 953 + resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} 954 + engines: {node: '>=18'} 955 + cpu: [x64] 956 + os: [linux] 957 + 958 + '@esbuild/linux-x64@0.27.4': 959 + resolution: {integrity: sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA==} 960 + engines: {node: '>=18'} 961 + cpu: [x64] 962 + os: [linux] 963 + 964 + '@esbuild/netbsd-arm64@0.25.12': 965 + resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} 966 + engines: {node: '>=18'} 967 + cpu: [arm64] 968 + os: [netbsd] 969 + 970 + '@esbuild/netbsd-arm64@0.27.4': 971 + resolution: {integrity: sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q==} 972 + engines: {node: '>=18'} 973 + cpu: [arm64] 974 + os: [netbsd] 975 + 976 + '@esbuild/netbsd-x64@0.18.20': 977 + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} 978 + engines: {node: '>=12'} 979 + cpu: [x64] 980 + os: [netbsd] 981 + 982 + '@esbuild/netbsd-x64@0.25.12': 983 + resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} 984 + engines: {node: '>=18'} 985 + cpu: [x64] 986 + os: [netbsd] 987 + 988 + '@esbuild/netbsd-x64@0.27.4': 989 + resolution: {integrity: sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg==} 990 + engines: {node: '>=18'} 991 + cpu: [x64] 992 + os: [netbsd] 993 + 994 + '@esbuild/openbsd-arm64@0.25.12': 995 + resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} 996 + engines: {node: '>=18'} 997 + cpu: [arm64] 998 + os: [openbsd] 999 + 1000 + '@esbuild/openbsd-arm64@0.27.4': 1001 + resolution: {integrity: sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow==} 1002 + engines: {node: '>=18'} 1003 + cpu: [arm64] 1004 + os: [openbsd] 1005 + 1006 + '@esbuild/openbsd-x64@0.18.20': 1007 + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} 1008 + engines: {node: '>=12'} 1009 + cpu: [x64] 1010 + os: [openbsd] 1011 + 1012 + '@esbuild/openbsd-x64@0.25.12': 1013 + resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} 1014 + engines: {node: '>=18'} 1015 + cpu: [x64] 1016 + os: [openbsd] 1017 + 1018 + '@esbuild/openbsd-x64@0.27.4': 1019 + resolution: {integrity: sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ==} 1020 + engines: {node: '>=18'} 1021 + cpu: [x64] 1022 + os: [openbsd] 1023 + 1024 + '@esbuild/openharmony-arm64@0.25.12': 1025 + resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} 1026 + engines: {node: '>=18'} 1027 + cpu: [arm64] 1028 + os: [openharmony] 1029 + 1030 + '@esbuild/openharmony-arm64@0.27.4': 1031 + resolution: {integrity: sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg==} 1032 + engines: {node: '>=18'} 1033 + cpu: [arm64] 1034 + os: [openharmony] 1035 + 1036 + '@esbuild/sunos-x64@0.18.20': 1037 + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} 1038 + engines: {node: '>=12'} 1039 + cpu: [x64] 1040 + os: [sunos] 1041 + 1042 + '@esbuild/sunos-x64@0.25.12': 1043 + resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} 1044 + engines: {node: '>=18'} 1045 + cpu: [x64] 1046 + os: [sunos] 1047 + 1048 + '@esbuild/sunos-x64@0.27.4': 1049 + resolution: {integrity: sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g==} 1050 + engines: {node: '>=18'} 1051 + cpu: [x64] 1052 + os: [sunos] 1053 + 1054 + '@esbuild/win32-arm64@0.18.20': 1055 + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} 1056 + engines: {node: '>=12'} 1057 + cpu: [arm64] 1058 + os: [win32] 1059 + 1060 + '@esbuild/win32-arm64@0.25.12': 1061 + resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} 1062 + engines: {node: '>=18'} 1063 + cpu: [arm64] 1064 + os: [win32] 1065 + 1066 + '@esbuild/win32-arm64@0.27.4': 1067 + resolution: {integrity: sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg==} 1068 + engines: {node: '>=18'} 1069 + cpu: [arm64] 1070 + os: [win32] 1071 + 1072 + '@esbuild/win32-ia32@0.18.20': 1073 + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} 1074 + engines: {node: '>=12'} 1075 + cpu: [ia32] 1076 + os: [win32] 1077 + 1078 + '@esbuild/win32-ia32@0.25.12': 1079 + resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} 1080 + engines: {node: '>=18'} 1081 + cpu: [ia32] 1082 + os: [win32] 1083 + 1084 + '@esbuild/win32-ia32@0.27.4': 1085 + resolution: {integrity: sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw==} 1086 + engines: {node: '>=18'} 1087 + cpu: [ia32] 1088 + os: [win32] 1089 + 1090 + '@esbuild/win32-x64@0.18.20': 1091 + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} 1092 + engines: {node: '>=12'} 1093 + cpu: [x64] 1094 + os: [win32] 1095 + 1096 + '@esbuild/win32-x64@0.25.12': 1097 + resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} 1098 + engines: {node: '>=18'} 1099 + cpu: [x64] 1100 + os: [win32] 1101 + 1102 + '@esbuild/win32-x64@0.27.4': 1103 + resolution: {integrity: sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg==} 1104 + engines: {node: '>=18'} 1105 + cpu: [x64] 1106 + os: [win32] 1107 + 641 1108 '@eslint-community/eslint-utils@4.9.1': 642 1109 resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} 643 1110 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} ··· 1066 1533 '@rtsao/scc@1.1.0': 1067 1534 resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} 1068 1535 1536 + '@se-oss/snowflake-sequence@1.0.0': 1537 + resolution: {integrity: sha512-ChnNOipQdmKqJ9sYguN2wZVW3Pw8P6pnfMtKcXEP3Jta572q8GTQ1Dawc58I7ZK842J6imf+MHBLEmz8Vl3SUg==} 1538 + 1069 1539 '@svgr/babel-plugin-add-jsx-attribute@8.0.0': 1070 1540 resolution: {integrity: sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==} 1071 1541 engines: {node: '>=14'} ··· 1490 1960 engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 1491 1961 hasBin: true 1492 1962 1963 + buffer-from@1.1.2: 1964 + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} 1965 + 1493 1966 call-bind-apply-helpers@1.0.2: 1494 1967 resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} 1495 1968 engines: {node: '>= 0.4'} ··· 1681 2154 dot-case@3.0.4: 1682 2155 resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} 1683 2156 2157 + drizzle-kit@0.31.10: 2158 + resolution: {integrity: sha512-7OZcmQUrdGI+DUNNsKBn1aW8qSoKuTH7d0mYgSP8bAzdFzKoovxEFnoGQp2dVs82EOJeYycqRtciopszwUf8bw==} 2159 + hasBin: true 2160 + 2161 + drizzle-orm@0.45.1: 2162 + resolution: {integrity: sha512-Te0FOdKIistGNPMq2jscdqngBRfBpC8uMFVwqjf6gtTVJHIQ/dosgV/CLBU2N4ZJBsXL5savCba9b0YJskKdcA==} 2163 + peerDependencies: 2164 + '@aws-sdk/client-rds-data': '>=3' 2165 + '@cloudflare/workers-types': '>=4' 2166 + '@electric-sql/pglite': '>=0.2.0' 2167 + '@libsql/client': '>=0.10.0' 2168 + '@libsql/client-wasm': '>=0.10.0' 2169 + '@neondatabase/serverless': '>=0.10.0' 2170 + '@op-engineering/op-sqlite': '>=2' 2171 + '@opentelemetry/api': ^1.4.1 2172 + '@planetscale/database': '>=1.13' 2173 + '@prisma/client': '*' 2174 + '@tidbcloud/serverless': '*' 2175 + '@types/better-sqlite3': '*' 2176 + '@types/pg': '*' 2177 + '@types/sql.js': '*' 2178 + '@upstash/redis': '>=1.34.7' 2179 + '@vercel/postgres': '>=0.8.0' 2180 + '@xata.io/client': '*' 2181 + better-sqlite3: '>=7' 2182 + bun-types: '*' 2183 + expo-sqlite: '>=14.0.0' 2184 + gel: '>=2' 2185 + knex: '*' 2186 + kysely: '*' 2187 + mysql2: '>=2' 2188 + pg: '>=8' 2189 + postgres: '>=3' 2190 + prisma: '*' 2191 + sql.js: '>=1' 2192 + sqlite3: '>=5' 2193 + peerDependenciesMeta: 2194 + '@aws-sdk/client-rds-data': 2195 + optional: true 2196 + '@cloudflare/workers-types': 2197 + optional: true 2198 + '@electric-sql/pglite': 2199 + optional: true 2200 + '@libsql/client': 2201 + optional: true 2202 + '@libsql/client-wasm': 2203 + optional: true 2204 + '@neondatabase/serverless': 2205 + optional: true 2206 + '@op-engineering/op-sqlite': 2207 + optional: true 2208 + '@opentelemetry/api': 2209 + optional: true 2210 + '@planetscale/database': 2211 + optional: true 2212 + '@prisma/client': 2213 + optional: true 2214 + '@tidbcloud/serverless': 2215 + optional: true 2216 + '@types/better-sqlite3': 2217 + optional: true 2218 + '@types/pg': 2219 + optional: true 2220 + '@types/sql.js': 2221 + optional: true 2222 + '@upstash/redis': 2223 + optional: true 2224 + '@vercel/postgres': 2225 + optional: true 2226 + '@xata.io/client': 2227 + optional: true 2228 + better-sqlite3: 2229 + optional: true 2230 + bun-types: 2231 + optional: true 2232 + expo-sqlite: 2233 + optional: true 2234 + gel: 2235 + optional: true 2236 + knex: 2237 + optional: true 2238 + kysely: 2239 + optional: true 2240 + mysql2: 2241 + optional: true 2242 + pg: 2243 + optional: true 2244 + postgres: 2245 + optional: true 2246 + prisma: 2247 + optional: true 2248 + sql.js: 2249 + optional: true 2250 + sqlite3: 2251 + optional: true 2252 + 1684 2253 dunder-proto@1.0.1: 1685 2254 resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} 1686 2255 engines: {node: '>= 0.4'} ··· 1735 2304 1736 2305 esast-util-from-js@2.0.1: 1737 2306 resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==} 2307 + 2308 + esbuild@0.18.20: 2309 + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} 2310 + engines: {node: '>=12'} 2311 + hasBin: true 2312 + 2313 + esbuild@0.25.12: 2314 + resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} 2315 + engines: {node: '>=18'} 2316 + hasBin: true 2317 + 2318 + esbuild@0.27.4: 2319 + resolution: {integrity: sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==} 2320 + engines: {node: '>=18'} 2321 + hasBin: true 1738 2322 1739 2323 escalade@3.2.0: 1740 2324 resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} ··· 1941 2525 for-each@0.3.5: 1942 2526 resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} 1943 2527 engines: {node: '>= 0.4'} 2528 + 2529 + fsevents@2.3.3: 2530 + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 2531 + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 2532 + os: [darwin] 1944 2533 1945 2534 function-bind@1.1.2: 1946 2535 resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} ··· 2561 3150 resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 2562 3151 engines: {node: '>=8'} 2563 3152 3153 + pg-cloudflare@1.3.0: 3154 + resolution: {integrity: sha512-6lswVVSztmHiRtD6I8hw4qP/nDm1EJbKMRhf3HCYaqud7frGysPv7FYJ5noZQdhQtN2xJnimfMtvQq21pdbzyQ==} 3155 + 3156 + pg-connection-string@2.12.0: 3157 + resolution: {integrity: sha512-U7qg+bpswf3Cs5xLzRqbXbQl85ng0mfSV/J0nnA31MCLgvEaAo7CIhmeyrmJpOr7o+zm0rXK+hNnT5l9RHkCkQ==} 3158 + 3159 + pg-int8@1.0.1: 3160 + resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} 3161 + engines: {node: '>=4.0.0'} 3162 + 3163 + pg-pool@3.13.0: 3164 + resolution: {integrity: sha512-gB+R+Xud1gLFuRD/QgOIgGOBE2KCQPaPwkzBBGC9oG69pHTkhQeIuejVIk3/cnDyX39av2AxomQiyPT13WKHQA==} 3165 + peerDependencies: 3166 + pg: '>=8.0' 3167 + 3168 + pg-protocol@1.13.0: 3169 + resolution: {integrity: sha512-zzdvXfS6v89r6v7OcFCHfHlyG/wvry1ALxZo4LqgUoy7W9xhBDMaqOuMiF3qEV45VqsN6rdlcehHrfDtlCPc8w==} 3170 + 3171 + pg-types@2.2.0: 3172 + resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} 3173 + engines: {node: '>=4'} 3174 + 3175 + pg@8.20.0: 3176 + resolution: {integrity: sha512-ldhMxz2r8fl/6QkXnBD3CR9/xg694oT6DZQ2s6c/RI28OjtSOpxnPrUCGOBJ46RCUxcWdx3p6kw/xnDHjKvaRA==} 3177 + engines: {node: '>= 16.0.0'} 3178 + peerDependencies: 3179 + pg-native: '>=3.0.1' 3180 + peerDependenciesMeta: 3181 + pg-native: 3182 + optional: true 3183 + 3184 + pgpass@1.0.5: 3185 + resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} 3186 + 2564 3187 picocolors@1.1.1: 2565 3188 resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 2566 3189 ··· 2580 3203 resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} 2581 3204 engines: {node: ^10 || ^12 || >=14} 2582 3205 3206 + postgres-array@2.0.0: 3207 + resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} 3208 + engines: {node: '>=4'} 3209 + 3210 + postgres-bytea@1.0.1: 3211 + resolution: {integrity: sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==} 3212 + engines: {node: '>=0.10.0'} 3213 + 3214 + postgres-date@1.0.7: 3215 + resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} 3216 + engines: {node: '>=0.10.0'} 3217 + 3218 + postgres-interval@1.2.0: 3219 + resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} 3220 + engines: {node: '>=0.10.0'} 3221 + 2583 3222 prelude-ls@1.2.1: 2584 3223 resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 2585 3224 engines: {node: '>= 0.8.0'} ··· 2777 3416 resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 2778 3417 engines: {node: '>=0.10.0'} 2779 3418 3419 + source-map-support@0.5.21: 3420 + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} 3421 + 3422 + source-map@0.6.1: 3423 + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 3424 + engines: {node: '>=0.10.0'} 3425 + 2780 3426 source-map@0.7.6: 2781 3427 resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} 2782 3428 engines: {node: '>= 12'} 2783 3429 2784 3430 space-separated-tokens@2.0.2: 2785 3431 resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} 3432 + 3433 + split2@4.2.0: 3434 + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} 3435 + engines: {node: '>= 10.x'} 2786 3436 2787 3437 stable-hash@0.0.5: 2788 3438 resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==} ··· 2885 3535 2886 3536 tslib@2.8.1: 2887 3537 resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} 3538 + 3539 + tsx@4.21.0: 3540 + resolution: {integrity: sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==} 3541 + engines: {node: '>=18.0.0'} 3542 + hasBin: true 2888 3543 2889 3544 type-check@0.4.0: 2890 3545 resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} ··· 3010 3665 word-wrap@1.2.5: 3011 3666 resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 3012 3667 engines: {node: '>=0.10.0'} 3668 + 3669 + xtend@4.0.2: 3670 + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} 3671 + engines: {node: '>=0.4'} 3013 3672 3014 3673 yallist@3.1.1: 3015 3674 resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} ··· 3761 4420 dependencies: 3762 4421 '@babel/helper-string-parser': 7.27.1 3763 4422 '@babel/helper-validator-identifier': 7.28.5 4423 + 4424 + '@drizzle-team/brocli@0.10.2': {} 3764 4425 3765 4426 '@emnapi/core@1.9.0': 3766 4427 dependencies: ··· 3778 4439 tslib: 2.8.1 3779 4440 optional: true 3780 4441 4442 + '@esbuild-kit/core-utils@3.3.2': 4443 + dependencies: 4444 + esbuild: 0.18.20 4445 + source-map-support: 0.5.21 4446 + 4447 + '@esbuild-kit/esm-loader@2.6.5': 4448 + dependencies: 4449 + '@esbuild-kit/core-utils': 3.3.2 4450 + get-tsconfig: 4.13.6 4451 + 4452 + '@esbuild/aix-ppc64@0.25.12': 4453 + optional: true 4454 + 4455 + '@esbuild/aix-ppc64@0.27.4': 4456 + optional: true 4457 + 4458 + '@esbuild/android-arm64@0.18.20': 4459 + optional: true 4460 + 4461 + '@esbuild/android-arm64@0.25.12': 4462 + optional: true 4463 + 4464 + '@esbuild/android-arm64@0.27.4': 4465 + optional: true 4466 + 4467 + '@esbuild/android-arm@0.18.20': 4468 + optional: true 4469 + 4470 + '@esbuild/android-arm@0.25.12': 4471 + optional: true 4472 + 4473 + '@esbuild/android-arm@0.27.4': 4474 + optional: true 4475 + 4476 + '@esbuild/android-x64@0.18.20': 4477 + optional: true 4478 + 4479 + '@esbuild/android-x64@0.25.12': 4480 + optional: true 4481 + 4482 + '@esbuild/android-x64@0.27.4': 4483 + optional: true 4484 + 4485 + '@esbuild/darwin-arm64@0.18.20': 4486 + optional: true 4487 + 4488 + '@esbuild/darwin-arm64@0.25.12': 4489 + optional: true 4490 + 4491 + '@esbuild/darwin-arm64@0.27.4': 4492 + optional: true 4493 + 4494 + '@esbuild/darwin-x64@0.18.20': 4495 + optional: true 4496 + 4497 + '@esbuild/darwin-x64@0.25.12': 4498 + optional: true 4499 + 4500 + '@esbuild/darwin-x64@0.27.4': 4501 + optional: true 4502 + 4503 + '@esbuild/freebsd-arm64@0.18.20': 4504 + optional: true 4505 + 4506 + '@esbuild/freebsd-arm64@0.25.12': 4507 + optional: true 4508 + 4509 + '@esbuild/freebsd-arm64@0.27.4': 4510 + optional: true 4511 + 4512 + '@esbuild/freebsd-x64@0.18.20': 4513 + optional: true 4514 + 4515 + '@esbuild/freebsd-x64@0.25.12': 4516 + optional: true 4517 + 4518 + '@esbuild/freebsd-x64@0.27.4': 4519 + optional: true 4520 + 4521 + '@esbuild/linux-arm64@0.18.20': 4522 + optional: true 4523 + 4524 + '@esbuild/linux-arm64@0.25.12': 4525 + optional: true 4526 + 4527 + '@esbuild/linux-arm64@0.27.4': 4528 + optional: true 4529 + 4530 + '@esbuild/linux-arm@0.18.20': 4531 + optional: true 4532 + 4533 + '@esbuild/linux-arm@0.25.12': 4534 + optional: true 4535 + 4536 + '@esbuild/linux-arm@0.27.4': 4537 + optional: true 4538 + 4539 + '@esbuild/linux-ia32@0.18.20': 4540 + optional: true 4541 + 4542 + '@esbuild/linux-ia32@0.25.12': 4543 + optional: true 4544 + 4545 + '@esbuild/linux-ia32@0.27.4': 4546 + optional: true 4547 + 4548 + '@esbuild/linux-loong64@0.18.20': 4549 + optional: true 4550 + 4551 + '@esbuild/linux-loong64@0.25.12': 4552 + optional: true 4553 + 4554 + '@esbuild/linux-loong64@0.27.4': 4555 + optional: true 4556 + 4557 + '@esbuild/linux-mips64el@0.18.20': 4558 + optional: true 4559 + 4560 + '@esbuild/linux-mips64el@0.25.12': 4561 + optional: true 4562 + 4563 + '@esbuild/linux-mips64el@0.27.4': 4564 + optional: true 4565 + 4566 + '@esbuild/linux-ppc64@0.18.20': 4567 + optional: true 4568 + 4569 + '@esbuild/linux-ppc64@0.25.12': 4570 + optional: true 4571 + 4572 + '@esbuild/linux-ppc64@0.27.4': 4573 + optional: true 4574 + 4575 + '@esbuild/linux-riscv64@0.18.20': 4576 + optional: true 4577 + 4578 + '@esbuild/linux-riscv64@0.25.12': 4579 + optional: true 4580 + 4581 + '@esbuild/linux-riscv64@0.27.4': 4582 + optional: true 4583 + 4584 + '@esbuild/linux-s390x@0.18.20': 4585 + optional: true 4586 + 4587 + '@esbuild/linux-s390x@0.25.12': 4588 + optional: true 4589 + 4590 + '@esbuild/linux-s390x@0.27.4': 4591 + optional: true 4592 + 4593 + '@esbuild/linux-x64@0.18.20': 4594 + optional: true 4595 + 4596 + '@esbuild/linux-x64@0.25.12': 4597 + optional: true 4598 + 4599 + '@esbuild/linux-x64@0.27.4': 4600 + optional: true 4601 + 4602 + '@esbuild/netbsd-arm64@0.25.12': 4603 + optional: true 4604 + 4605 + '@esbuild/netbsd-arm64@0.27.4': 4606 + optional: true 4607 + 4608 + '@esbuild/netbsd-x64@0.18.20': 4609 + optional: true 4610 + 4611 + '@esbuild/netbsd-x64@0.25.12': 4612 + optional: true 4613 + 4614 + '@esbuild/netbsd-x64@0.27.4': 4615 + optional: true 4616 + 4617 + '@esbuild/openbsd-arm64@0.25.12': 4618 + optional: true 4619 + 4620 + '@esbuild/openbsd-arm64@0.27.4': 4621 + optional: true 4622 + 4623 + '@esbuild/openbsd-x64@0.18.20': 4624 + optional: true 4625 + 4626 + '@esbuild/openbsd-x64@0.25.12': 4627 + optional: true 4628 + 4629 + '@esbuild/openbsd-x64@0.27.4': 4630 + optional: true 4631 + 4632 + '@esbuild/openharmony-arm64@0.25.12': 4633 + optional: true 4634 + 4635 + '@esbuild/openharmony-arm64@0.27.4': 4636 + optional: true 4637 + 4638 + '@esbuild/sunos-x64@0.18.20': 4639 + optional: true 4640 + 4641 + '@esbuild/sunos-x64@0.25.12': 4642 + optional: true 4643 + 4644 + '@esbuild/sunos-x64@0.27.4': 4645 + optional: true 4646 + 4647 + '@esbuild/win32-arm64@0.18.20': 4648 + optional: true 4649 + 4650 + '@esbuild/win32-arm64@0.25.12': 4651 + optional: true 4652 + 4653 + '@esbuild/win32-arm64@0.27.4': 4654 + optional: true 4655 + 4656 + '@esbuild/win32-ia32@0.18.20': 4657 + optional: true 4658 + 4659 + '@esbuild/win32-ia32@0.25.12': 4660 + optional: true 4661 + 4662 + '@esbuild/win32-ia32@0.27.4': 4663 + optional: true 4664 + 4665 + '@esbuild/win32-x64@0.18.20': 4666 + optional: true 4667 + 4668 + '@esbuild/win32-x64@0.25.12': 4669 + optional: true 4670 + 4671 + '@esbuild/win32-x64@0.27.4': 4672 + optional: true 4673 + 3781 4674 '@eslint-community/eslint-utils@4.9.1(eslint@9.39.4)': 3782 4675 dependencies: 3783 4676 eslint: 9.39.4 ··· 4120 5013 optional: true 4121 5014 4122 5015 '@rtsao/scc@1.1.0': {} 5016 + 5017 + '@se-oss/snowflake-sequence@1.0.0': {} 4123 5018 4124 5019 '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.29.0)': 4125 5020 dependencies: ··· 4580 5475 electron-to-chromium: 1.5.313 4581 5476 node-releases: 2.0.36 4582 5477 update-browserslist-db: 1.2.3(browserslist@4.28.1) 5478 + 5479 + buffer-from@1.1.2: {} 4583 5480 4584 5481 call-bind-apply-helpers@1.0.2: 4585 5482 dependencies: ··· 4770 5667 no-case: 3.0.4 4771 5668 tslib: 2.8.1 4772 5669 5670 + drizzle-kit@0.31.10: 5671 + dependencies: 5672 + '@drizzle-team/brocli': 0.10.2 5673 + '@esbuild-kit/esm-loader': 2.6.5 5674 + esbuild: 0.25.12 5675 + tsx: 4.21.0 5676 + 5677 + drizzle-orm@0.45.1(pg@8.20.0): 5678 + optionalDependencies: 5679 + pg: 8.20.0 5680 + 4773 5681 dunder-proto@1.0.1: 4774 5682 dependencies: 4775 5683 call-bind-apply-helpers: 1.0.2 ··· 4902 5810 esast-util-from-estree: 2.0.0 4903 5811 vfile-message: 4.0.3 4904 5812 5813 + esbuild@0.18.20: 5814 + optionalDependencies: 5815 + '@esbuild/android-arm': 0.18.20 5816 + '@esbuild/android-arm64': 0.18.20 5817 + '@esbuild/android-x64': 0.18.20 5818 + '@esbuild/darwin-arm64': 0.18.20 5819 + '@esbuild/darwin-x64': 0.18.20 5820 + '@esbuild/freebsd-arm64': 0.18.20 5821 + '@esbuild/freebsd-x64': 0.18.20 5822 + '@esbuild/linux-arm': 0.18.20 5823 + '@esbuild/linux-arm64': 0.18.20 5824 + '@esbuild/linux-ia32': 0.18.20 5825 + '@esbuild/linux-loong64': 0.18.20 5826 + '@esbuild/linux-mips64el': 0.18.20 5827 + '@esbuild/linux-ppc64': 0.18.20 5828 + '@esbuild/linux-riscv64': 0.18.20 5829 + '@esbuild/linux-s390x': 0.18.20 5830 + '@esbuild/linux-x64': 0.18.20 5831 + '@esbuild/netbsd-x64': 0.18.20 5832 + '@esbuild/openbsd-x64': 0.18.20 5833 + '@esbuild/sunos-x64': 0.18.20 5834 + '@esbuild/win32-arm64': 0.18.20 5835 + '@esbuild/win32-ia32': 0.18.20 5836 + '@esbuild/win32-x64': 0.18.20 5837 + 5838 + esbuild@0.25.12: 5839 + optionalDependencies: 5840 + '@esbuild/aix-ppc64': 0.25.12 5841 + '@esbuild/android-arm': 0.25.12 5842 + '@esbuild/android-arm64': 0.25.12 5843 + '@esbuild/android-x64': 0.25.12 5844 + '@esbuild/darwin-arm64': 0.25.12 5845 + '@esbuild/darwin-x64': 0.25.12 5846 + '@esbuild/freebsd-arm64': 0.25.12 5847 + '@esbuild/freebsd-x64': 0.25.12 5848 + '@esbuild/linux-arm': 0.25.12 5849 + '@esbuild/linux-arm64': 0.25.12 5850 + '@esbuild/linux-ia32': 0.25.12 5851 + '@esbuild/linux-loong64': 0.25.12 5852 + '@esbuild/linux-mips64el': 0.25.12 5853 + '@esbuild/linux-ppc64': 0.25.12 5854 + '@esbuild/linux-riscv64': 0.25.12 5855 + '@esbuild/linux-s390x': 0.25.12 5856 + '@esbuild/linux-x64': 0.25.12 5857 + '@esbuild/netbsd-arm64': 0.25.12 5858 + '@esbuild/netbsd-x64': 0.25.12 5859 + '@esbuild/openbsd-arm64': 0.25.12 5860 + '@esbuild/openbsd-x64': 0.25.12 5861 + '@esbuild/openharmony-arm64': 0.25.12 5862 + '@esbuild/sunos-x64': 0.25.12 5863 + '@esbuild/win32-arm64': 0.25.12 5864 + '@esbuild/win32-ia32': 0.25.12 5865 + '@esbuild/win32-x64': 0.25.12 5866 + 5867 + esbuild@0.27.4: 5868 + optionalDependencies: 5869 + '@esbuild/aix-ppc64': 0.27.4 5870 + '@esbuild/android-arm': 0.27.4 5871 + '@esbuild/android-arm64': 0.27.4 5872 + '@esbuild/android-x64': 0.27.4 5873 + '@esbuild/darwin-arm64': 0.27.4 5874 + '@esbuild/darwin-x64': 0.27.4 5875 + '@esbuild/freebsd-arm64': 0.27.4 5876 + '@esbuild/freebsd-x64': 0.27.4 5877 + '@esbuild/linux-arm': 0.27.4 5878 + '@esbuild/linux-arm64': 0.27.4 5879 + '@esbuild/linux-ia32': 0.27.4 5880 + '@esbuild/linux-loong64': 0.27.4 5881 + '@esbuild/linux-mips64el': 0.27.4 5882 + '@esbuild/linux-ppc64': 0.27.4 5883 + '@esbuild/linux-riscv64': 0.27.4 5884 + '@esbuild/linux-s390x': 0.27.4 5885 + '@esbuild/linux-x64': 0.27.4 5886 + '@esbuild/netbsd-arm64': 0.27.4 5887 + '@esbuild/netbsd-x64': 0.27.4 5888 + '@esbuild/openbsd-arm64': 0.27.4 5889 + '@esbuild/openbsd-x64': 0.27.4 5890 + '@esbuild/openharmony-arm64': 0.27.4 5891 + '@esbuild/sunos-x64': 0.27.4 5892 + '@esbuild/win32-arm64': 0.27.4 5893 + '@esbuild/win32-ia32': 0.27.4 5894 + '@esbuild/win32-x64': 0.27.4 5895 + 4905 5896 escalade@3.2.0: {} 4906 5897 4907 5898 escape-string-regexp@4.0.0: {} ··· 5194 6185 dependencies: 5195 6186 is-callable: 1.2.7 5196 6187 6188 + fsevents@2.3.3: 6189 + optional: true 6190 + 5197 6191 function-bind@1.1.2: {} 5198 6192 5199 6193 function.prototype.name@1.1.8: ··· 6050 7044 6051 7045 path-type@4.0.0: {} 6052 7046 7047 + pg-cloudflare@1.3.0: 7048 + optional: true 7049 + 7050 + pg-connection-string@2.12.0: {} 7051 + 7052 + pg-int8@1.0.1: {} 7053 + 7054 + pg-pool@3.13.0(pg@8.20.0): 7055 + dependencies: 7056 + pg: 8.20.0 7057 + 7058 + pg-protocol@1.13.0: {} 7059 + 7060 + pg-types@2.2.0: 7061 + dependencies: 7062 + pg-int8: 1.0.1 7063 + postgres-array: 2.0.0 7064 + postgres-bytea: 1.0.1 7065 + postgres-date: 1.0.7 7066 + postgres-interval: 1.2.0 7067 + 7068 + pg@8.20.0: 7069 + dependencies: 7070 + pg-connection-string: 2.12.0 7071 + pg-pool: 3.13.0(pg@8.20.0) 7072 + pg-protocol: 1.13.0 7073 + pg-types: 2.2.0 7074 + pgpass: 1.0.5 7075 + optionalDependencies: 7076 + pg-cloudflare: 1.3.0 7077 + 7078 + pgpass@1.0.5: 7079 + dependencies: 7080 + split2: 4.2.0 7081 + 6053 7082 picocolors@1.1.1: {} 6054 7083 6055 7084 picomatch@2.3.1: {} ··· 6063 7092 nanoid: 3.3.11 6064 7093 picocolors: 1.1.1 6065 7094 source-map-js: 1.2.1 7095 + 7096 + postgres-array@2.0.0: {} 7097 + 7098 + postgres-bytea@1.0.1: {} 7099 + 7100 + postgres-date@1.0.7: {} 7101 + 7102 + postgres-interval@1.2.0: 7103 + dependencies: 7104 + xtend: 4.0.2 6066 7105 6067 7106 prelude-ls@1.2.1: {} 6068 7107 ··· 6357 7396 6358 7397 source-map-js@1.2.1: {} 6359 7398 7399 + source-map-support@0.5.21: 7400 + dependencies: 7401 + buffer-from: 1.1.2 7402 + source-map: 0.6.1 7403 + 7404 + source-map@0.6.1: {} 7405 + 6360 7406 source-map@0.7.6: {} 6361 7407 6362 7408 space-separated-tokens@2.0.2: {} 7409 + 7410 + split2@4.2.0: {} 6363 7411 6364 7412 stable-hash@0.0.5: {} 6365 7413 ··· 6485 7533 strip-bom: 3.0.0 6486 7534 6487 7535 tslib@2.8.1: {} 7536 + 7537 + tsx@4.21.0: 7538 + dependencies: 7539 + esbuild: 0.27.4 7540 + get-tsconfig: 4.13.6 7541 + optionalDependencies: 7542 + fsevents: 2.3.3 6488 7543 6489 7544 type-check@0.4.0: 6490 7545 dependencies: ··· 6687 7742 isexe: 2.0.0 6688 7743 6689 7744 word-wrap@1.2.5: {} 7745 + 7746 + xtend@4.0.2: {} 6690 7747 6691 7748 yallist@3.1.1: {} 6692 7749
+1 -1
tsconfig.json
··· 1 1 { 2 2 "compilerOptions": { 3 - "target": "ES2017", 3 + "target": "ES2020", 4 4 "lib": ["dom", "dom.iterable", "esnext"], 5 5 "allowJs": true, 6 6 "skipLibCheck": true,