this repo has no description
0
fork

Configure Feed

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

feat: db + auth

+1678 -130
+94
auth-schema.ts
··· 1 + import { relations } from "drizzle-orm"; 2 + import { pgTable, text, timestamp, boolean, index } from "drizzle-orm/pg-core"; 3 + 4 + export const user = pgTable("user", { 5 + id: text("id").primaryKey(), 6 + name: text("name").notNull(), 7 + email: text("email").notNull().unique(), 8 + emailVerified: boolean("email_verified").default(false).notNull(), 9 + image: text("image"), 10 + createdAt: timestamp("created_at").defaultNow().notNull(), 11 + updatedAt: timestamp("updated_at") 12 + .defaultNow() 13 + .$onUpdate(() => /* @__PURE__ */ new Date()) 14 + .notNull(), 15 + isAnonymous: boolean("is_anonymous").default(false), 16 + }); 17 + 18 + export const session = pgTable( 19 + "session", 20 + { 21 + id: text("id").primaryKey(), 22 + expiresAt: timestamp("expires_at").notNull(), 23 + token: text("token").notNull().unique(), 24 + createdAt: timestamp("created_at").defaultNow().notNull(), 25 + updatedAt: timestamp("updated_at") 26 + .$onUpdate(() => /* @__PURE__ */ new Date()) 27 + .notNull(), 28 + ipAddress: text("ip_address"), 29 + userAgent: text("user_agent"), 30 + userId: text("user_id") 31 + .notNull() 32 + .references(() => user.id, { onDelete: "cascade" }), 33 + }, 34 + (table) => [index("session_userId_idx").on(table.userId)], 35 + ); 36 + 37 + export const account = pgTable( 38 + "account", 39 + { 40 + id: text("id").primaryKey(), 41 + accountId: text("account_id").notNull(), 42 + providerId: text("provider_id").notNull(), 43 + userId: text("user_id") 44 + .notNull() 45 + .references(() => user.id, { onDelete: "cascade" }), 46 + accessToken: text("access_token"), 47 + refreshToken: text("refresh_token"), 48 + idToken: text("id_token"), 49 + accessTokenExpiresAt: timestamp("access_token_expires_at"), 50 + refreshTokenExpiresAt: timestamp("refresh_token_expires_at"), 51 + scope: text("scope"), 52 + password: text("password"), 53 + createdAt: timestamp("created_at").defaultNow().notNull(), 54 + updatedAt: timestamp("updated_at") 55 + .$onUpdate(() => /* @__PURE__ */ new Date()) 56 + .notNull(), 57 + }, 58 + (table) => [index("account_userId_idx").on(table.userId)], 59 + ); 60 + 61 + export const verification = pgTable( 62 + "verification", 63 + { 64 + id: text("id").primaryKey(), 65 + identifier: text("identifier").notNull(), 66 + value: text("value").notNull(), 67 + expiresAt: timestamp("expires_at").notNull(), 68 + createdAt: timestamp("created_at").defaultNow().notNull(), 69 + updatedAt: timestamp("updated_at") 70 + .defaultNow() 71 + .$onUpdate(() => /* @__PURE__ */ new Date()) 72 + .notNull(), 73 + }, 74 + (table) => [index("verification_identifier_idx").on(table.identifier)], 75 + ); 76 + 77 + export const userRelations = relations(user, ({ many }) => ({ 78 + sessions: many(session), 79 + accounts: many(account), 80 + })); 81 + 82 + export const sessionRelations = relations(session, ({ one }) => ({ 83 + user: one(user, { 84 + fields: [session.userId], 85 + references: [user.id], 86 + }), 87 + })); 88 + 89 + export const accountRelations = relations(account, ({ one }) => ({ 90 + user: one(user, { 91 + fields: [account.userId], 92 + references: [user.id], 93 + }), 94 + }));
+14
drizzle.config.ts
··· 1 + import { config } from "dotenv"; 2 + import { defineConfig } from "drizzle-kit"; 3 + 4 + config({ path: ".env.development.local" }); 5 + 6 + const connection = new URL(process.env.DATABASE_URL!); 7 + connection.pathname = "vouch"; 8 + 9 + export default defineConfig({ 10 + out: "./drizzle", 11 + schema: "./src/db/schema.ts", 12 + dialect: "postgresql", 13 + dbCredentials: { url: connection.toString() }, 14 + });
+16 -10
package.json
··· 13 13 "@base-ui/react": "^1.1.0", 14 14 "@hugeicons/core-free-icons": "^3.1.1", 15 15 "@hugeicons/react": "^1.1.5", 16 + "@neondatabase/serverless": "^1.0.2", 17 + "better-auth": "^1.4.18", 16 18 "class-variance-authority": "^0.7.1", 17 19 "clsx": "^2.1.1", 20 + "dotenv": "^17.2.4", 21 + "drizzle-orm": "^0.45.1", 18 22 "next": "16.1.6", 19 23 "next-themes": "^0.4.6", 20 - "react": "19.2.3", 21 - "react-dom": "19.2.3", 24 + "react": "19.2.4", 25 + "react-dom": "19.2.4", 22 26 "shadcn": "^3.8.4", 23 27 "tailwind-merge": "^3.4.0", 24 28 "tw-animate-css": "^1.4.0" 25 29 }, 26 30 "devDependencies": { 27 - "@biomejs/biome": "2.2.0", 28 - "@tailwindcss/postcss": "^4", 29 - "@types/node": "^20", 30 - "@types/react": "^19", 31 - "@types/react-dom": "^19", 31 + "@biomejs/biome": "2.3.14", 32 + "@tailwindcss/postcss": "^4.1.18", 33 + "@types/node": "^25.2.2", 34 + "@types/react": "^19.2.13", 35 + "@types/react-dom": "^19.2.3", 32 36 "babel-plugin-react-compiler": "1.0.0", 33 - "tailwindcss": "^4", 34 - "typescript": "^5" 37 + "drizzle-kit": "^0.31.9", 38 + "tailwindcss": "^4.1.18", 39 + "tsx": "^4.21.0", 40 + "typescript": "^5.9.3" 35 41 } 36 - } 42 + }
+1365 -116
pnpm-lock.yaml
··· 10 10 dependencies: 11 11 '@base-ui/react': 12 12 specifier: ^1.1.0 13 - version: 1.1.0(@types/react@19.2.13)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) 13 + version: 1.1.0(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) 14 14 '@hugeicons/core-free-icons': 15 15 specifier: ^3.1.1 16 16 version: 3.1.1 17 17 '@hugeicons/react': 18 18 specifier: ^1.1.5 19 - version: 1.1.5(react@19.2.3) 19 + version: 1.1.5(react@19.2.4) 20 + '@neondatabase/serverless': 21 + specifier: ^1.0.2 22 + version: 1.0.2 23 + better-auth: 24 + specifier: ^1.4.18 25 + version: 1.4.18(drizzle-kit@0.31.9)(drizzle-orm@0.45.1(@neondatabase/serverless@1.0.2)(@types/pg@8.16.0)(kysely@0.28.11))(next@16.1.6(@babel/core@7.29.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4) 20 26 class-variance-authority: 21 27 specifier: ^0.7.1 22 28 version: 0.7.1 23 29 clsx: 24 30 specifier: ^2.1.1 25 31 version: 2.1.1 32 + dotenv: 33 + specifier: ^17.2.4 34 + version: 17.2.4 35 + drizzle-orm: 36 + specifier: ^0.45.1 37 + version: 0.45.1(@neondatabase/serverless@1.0.2)(@types/pg@8.16.0)(kysely@0.28.11) 26 38 next: 27 39 specifier: 16.1.6 28 - version: 16.1.6(@babel/core@7.29.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) 40 + version: 16.1.6(@babel/core@7.29.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) 29 41 next-themes: 30 42 specifier: ^0.4.6 31 - version: 0.4.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) 43 + version: 0.4.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) 32 44 react: 33 - specifier: 19.2.3 34 - version: 19.2.3 45 + specifier: 19.2.4 46 + version: 19.2.4 35 47 react-dom: 36 - specifier: 19.2.3 37 - version: 19.2.3(react@19.2.3) 48 + specifier: 19.2.4 49 + version: 19.2.4(react@19.2.4) 38 50 shadcn: 39 51 specifier: ^3.8.4 40 - version: 3.8.4(@types/node@20.19.33)(typescript@5.9.3) 52 + version: 3.8.4(@types/node@25.2.2)(typescript@5.9.3) 41 53 tailwind-merge: 42 54 specifier: ^3.4.0 43 55 version: 3.4.0 ··· 46 58 version: 1.4.0 47 59 devDependencies: 48 60 '@biomejs/biome': 49 - specifier: 2.2.0 50 - version: 2.2.0 61 + specifier: 2.3.14 62 + version: 2.3.14 51 63 '@tailwindcss/postcss': 52 - specifier: ^4 64 + specifier: ^4.1.18 53 65 version: 4.1.18 54 66 '@types/node': 55 - specifier: ^20 56 - version: 20.19.33 67 + specifier: ^25.2.2 68 + version: 25.2.2 57 69 '@types/react': 58 - specifier: ^19 70 + specifier: ^19.2.13 59 71 version: 19.2.13 60 72 '@types/react-dom': 61 - specifier: ^19 73 + specifier: ^19.2.3 62 74 version: 19.2.3(@types/react@19.2.13) 63 75 babel-plugin-react-compiler: 64 76 specifier: 1.0.0 65 77 version: 1.0.0 78 + drizzle-kit: 79 + specifier: ^0.31.9 80 + version: 0.31.9 66 81 tailwindcss: 67 - specifier: ^4 82 + specifier: ^4.1.18 68 83 version: 4.1.18 84 + tsx: 85 + specifier: ^4.21.0 86 + version: 4.21.0 69 87 typescript: 70 - specifier: ^5 88 + specifier: ^5.9.3 71 89 version: 5.9.3 72 90 73 91 packages: ··· 234 252 '@types/react': 235 253 optional: true 236 254 237 - '@biomejs/biome@2.2.0': 238 - resolution: {integrity: sha512-3On3RSYLsX+n9KnoSgfoYlckYBoU6VRM22cw1gB4Y0OuUVSYd/O/2saOJMrA4HFfA1Ff0eacOvMN1yAAvHtzIw==} 255 + '@better-auth/core@1.4.18': 256 + resolution: {integrity: sha512-q+awYgC7nkLEBdx2sW0iJjkzgSHlIxGnOpsN1r/O1+a4m7osJNHtfK2mKJSL1I+GfNyIlxJF8WvD/NLuYMpmcg==} 257 + peerDependencies: 258 + '@better-auth/utils': 0.3.0 259 + '@better-fetch/fetch': 1.1.21 260 + better-call: 1.1.8 261 + jose: ^6.1.0 262 + kysely: ^0.28.5 263 + nanostores: ^1.0.1 264 + 265 + '@better-auth/telemetry@1.4.18': 266 + resolution: {integrity: sha512-e5rDF8S4j3Um/0LIVATL2in9dL4lfO2fr2v1Wio4qTMRbfxqnUDTa+6SZtwdeJrbc4O+a3c+IyIpjG9Q/6GpfQ==} 267 + peerDependencies: 268 + '@better-auth/core': 1.4.18 269 + 270 + '@better-auth/utils@0.3.0': 271 + resolution: {integrity: sha512-W+Adw6ZA6mgvnSnhOki270rwJ42t4XzSK6YWGF//BbVXL6SwCLWfyzBc1lN2m/4RM28KubdBKQ4X5VMoLRNPQw==} 272 + 273 + '@better-fetch/fetch@1.1.21': 274 + resolution: {integrity: sha512-/ImESw0sskqlVR94jB+5+Pxjf+xBwDZF/N5+y2/q4EqD7IARUTSpPfIo8uf39SYpCxyOCtbyYpUrZ3F/k0zT4A==} 275 + 276 + '@biomejs/biome@2.3.14': 277 + resolution: {integrity: sha512-QMT6QviX0WqXJCaiqVMiBUCr5WRQ1iFSjvOLoTk6auKukJMvnMzWucXpwZB0e8F00/1/BsS9DzcKgWH+CLqVuA==} 239 278 engines: {node: '>=14.21.3'} 240 279 hasBin: true 241 280 242 - '@biomejs/cli-darwin-arm64@2.2.0': 243 - resolution: {integrity: sha512-zKbwUUh+9uFmWfS8IFxmVD6XwqFcENjZvEyfOxHs1epjdH3wyyMQG80FGDsmauPwS2r5kXdEM0v/+dTIA9FXAg==} 281 + '@biomejs/cli-darwin-arm64@2.3.14': 282 + resolution: {integrity: sha512-UJGPpvWJMkLxSRtpCAKfKh41Q4JJXisvxZL8ChN1eNW3m/WlPFJ6EFDCE7YfUb4XS8ZFi3C1dFpxUJ0Ety5n+A==} 244 283 engines: {node: '>=14.21.3'} 245 284 cpu: [arm64] 246 285 os: [darwin] 247 286 248 - '@biomejs/cli-darwin-x64@2.2.0': 249 - resolution: {integrity: sha512-+OmT4dsX2eTfhD5crUOPw3RPhaR+SKVspvGVmSdZ9y9O/AgL8pla6T4hOn1q+VAFBHuHhsdxDRJgFCSC7RaMOw==} 287 + '@biomejs/cli-darwin-x64@2.3.14': 288 + resolution: {integrity: sha512-PNkLNQG6RLo8lG7QoWe/hhnMxJIt1tEimoXpGQjwS/dkdNiKBLPv4RpeQl8o3s1OKI3ZOR5XPiYtmbGGHAOnLA==} 250 289 engines: {node: '>=14.21.3'} 251 290 cpu: [x64] 252 291 os: [darwin] 253 292 254 - '@biomejs/cli-linux-arm64-musl@2.2.0': 255 - resolution: {integrity: sha512-egKpOa+4FL9YO+SMUMLUvf543cprjevNc3CAgDNFLcjknuNMcZ0GLJYa3EGTCR2xIkIUJDVneBV3O9OcIlCEZQ==} 293 + '@biomejs/cli-linux-arm64-musl@2.3.14': 294 + resolution: {integrity: sha512-LInRbXhYujtL3sH2TMCH/UBwJZsoGwfQjBrMfl84CD4hL/41C/EU5mldqf1yoFpsI0iPWuU83U+nB2TUUypWeg==} 256 295 engines: {node: '>=14.21.3'} 257 296 cpu: [arm64] 258 297 os: [linux] 259 298 260 - '@biomejs/cli-linux-arm64@2.2.0': 261 - resolution: {integrity: sha512-6eoRdF2yW5FnW9Lpeivh7Mayhq0KDdaDMYOJnH9aT02KuSIX5V1HmWJCQQPwIQbhDh68Zrcpl8inRlTEan0SXw==} 299 + '@biomejs/cli-linux-arm64@2.3.14': 300 + resolution: {integrity: sha512-KT67FKfzIw6DNnUNdYlBg+eU24Go3n75GWK6NwU4+yJmDYFe9i/MjiI+U/iEzKvo0g7G7MZqoyrhIYuND2w8QQ==} 262 301 engines: {node: '>=14.21.3'} 263 302 cpu: [arm64] 264 303 os: [linux] 265 304 266 - '@biomejs/cli-linux-x64-musl@2.2.0': 267 - resolution: {integrity: sha512-I5J85yWwUWpgJyC1CcytNSGusu2p9HjDnOPAFG4Y515hwRD0jpR9sT9/T1cKHtuCvEQ/sBvx+6zhz9l9wEJGAg==} 305 + '@biomejs/cli-linux-x64-musl@2.3.14': 306 + resolution: {integrity: sha512-KQU7EkbBBuHPW3/rAcoiVmhlPtDSGOGRPv9js7qJVpYTzjQmVR+C9Rfcz+ti8YCH+zT1J52tuBybtP4IodjxZQ==} 268 307 engines: {node: '>=14.21.3'} 269 308 cpu: [x64] 270 309 os: [linux] 271 310 272 - '@biomejs/cli-linux-x64@2.2.0': 273 - resolution: {integrity: sha512-5UmQx/OZAfJfi25zAnAGHUMuOd+LOsliIt119x2soA2gLggQYrVPA+2kMUxR6Mw5M1deUF/AWWP2qpxgH7Nyfw==} 311 + '@biomejs/cli-linux-x64@2.3.14': 312 + resolution: {integrity: sha512-ZsZzQsl9U+wxFrGGS4f6UxREUlgHwmEfu1IrXlgNFrNnd5Th6lIJr8KmSzu/+meSa9f4rzFrbEW9LBBA6ScoMA==} 274 313 engines: {node: '>=14.21.3'} 275 314 cpu: [x64] 276 315 os: [linux] 277 316 278 - '@biomejs/cli-win32-arm64@2.2.0': 279 - resolution: {integrity: sha512-n9a1/f2CwIDmNMNkFs+JI0ZjFnMO0jdOyGNtihgUNFnlmd84yIYY2KMTBmMV58ZlVHjgmY5Y6E1hVTnSRieggA==} 317 + '@biomejs/cli-win32-arm64@2.3.14': 318 + resolution: {integrity: sha512-+IKYkj/pUBbnRf1G1+RlyA3LWiDgra1xpS7H2g4BuOzzRbRB+hmlw0yFsLprHhbbt7jUzbzAbAjK/Pn0FDnh1A==} 280 319 engines: {node: '>=14.21.3'} 281 320 cpu: [arm64] 282 321 os: [win32] 283 322 284 - '@biomejs/cli-win32-x64@2.2.0': 285 - resolution: {integrity: sha512-Nawu5nHjP/zPKTIryh2AavzTc/KEg4um/MxWdXW0A6P/RZOyIpa7+QSjeXwAwX/utJGaCoXRPWtF3m5U/bB3Ww==} 323 + '@biomejs/cli-win32-x64@2.3.14': 324 + resolution: {integrity: sha512-oizCjdyQ3WJEswpb3Chdngeat56rIdSYK12JI3iI11Mt5T5EXcZ7WLuowzEaFPNJ3zmOQFliMN8QY1Pi+qsfdQ==} 286 325 engines: {node: '>=14.21.3'} 287 326 cpu: [x64] 288 327 os: [win32] ··· 291 330 resolution: {integrity: sha512-CaQcc8JvtzQhUSm9877b6V4Tb7HCotkcyud9X2YwdqtQKwgljkMRwU96fVYKnzN3V0Hj74oP7Es+vZ0mS+Aa1w==} 292 331 hasBin: true 293 332 333 + '@drizzle-team/brocli@0.10.2': 334 + resolution: {integrity: sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w==} 335 + 294 336 '@ecies/ciphers@0.2.5': 295 337 resolution: {integrity: sha512-GalEZH4JgOMHYYcYmVqnFirFsjZHeoGMDt9IxEnM9F7GRUUyUksJ7Ou53L83WHJq3RWKD3AcBpo0iQh0oMpf8A==} 296 338 engines: {bun: '>=1', deno: '>=2', node: '>=16'} ··· 300 342 '@emnapi/runtime@1.8.1': 301 343 resolution: {integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==} 302 344 345 + '@esbuild-kit/core-utils@3.3.2': 346 + resolution: {integrity: sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==} 347 + deprecated: 'Merged into tsx: https://tsx.is' 348 + 349 + '@esbuild-kit/esm-loader@2.6.5': 350 + resolution: {integrity: sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==} 351 + deprecated: 'Merged into tsx: https://tsx.is' 352 + 353 + '@esbuild/aix-ppc64@0.25.12': 354 + resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} 355 + engines: {node: '>=18'} 356 + cpu: [ppc64] 357 + os: [aix] 358 + 359 + '@esbuild/aix-ppc64@0.27.3': 360 + resolution: {integrity: sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==} 361 + engines: {node: '>=18'} 362 + cpu: [ppc64] 363 + os: [aix] 364 + 365 + '@esbuild/android-arm64@0.18.20': 366 + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} 367 + engines: {node: '>=12'} 368 + cpu: [arm64] 369 + os: [android] 370 + 371 + '@esbuild/android-arm64@0.25.12': 372 + resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} 373 + engines: {node: '>=18'} 374 + cpu: [arm64] 375 + os: [android] 376 + 377 + '@esbuild/android-arm64@0.27.3': 378 + resolution: {integrity: sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==} 379 + engines: {node: '>=18'} 380 + cpu: [arm64] 381 + os: [android] 382 + 383 + '@esbuild/android-arm@0.18.20': 384 + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} 385 + engines: {node: '>=12'} 386 + cpu: [arm] 387 + os: [android] 388 + 389 + '@esbuild/android-arm@0.25.12': 390 + resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} 391 + engines: {node: '>=18'} 392 + cpu: [arm] 393 + os: [android] 394 + 395 + '@esbuild/android-arm@0.27.3': 396 + resolution: {integrity: sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==} 397 + engines: {node: '>=18'} 398 + cpu: [arm] 399 + os: [android] 400 + 401 + '@esbuild/android-x64@0.18.20': 402 + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} 403 + engines: {node: '>=12'} 404 + cpu: [x64] 405 + os: [android] 406 + 407 + '@esbuild/android-x64@0.25.12': 408 + resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} 409 + engines: {node: '>=18'} 410 + cpu: [x64] 411 + os: [android] 412 + 413 + '@esbuild/android-x64@0.27.3': 414 + resolution: {integrity: sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==} 415 + engines: {node: '>=18'} 416 + cpu: [x64] 417 + os: [android] 418 + 419 + '@esbuild/darwin-arm64@0.18.20': 420 + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} 421 + engines: {node: '>=12'} 422 + cpu: [arm64] 423 + os: [darwin] 424 + 425 + '@esbuild/darwin-arm64@0.25.12': 426 + resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} 427 + engines: {node: '>=18'} 428 + cpu: [arm64] 429 + os: [darwin] 430 + 431 + '@esbuild/darwin-arm64@0.27.3': 432 + resolution: {integrity: sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==} 433 + engines: {node: '>=18'} 434 + cpu: [arm64] 435 + os: [darwin] 436 + 437 + '@esbuild/darwin-x64@0.18.20': 438 + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} 439 + engines: {node: '>=12'} 440 + cpu: [x64] 441 + os: [darwin] 442 + 443 + '@esbuild/darwin-x64@0.25.12': 444 + resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} 445 + engines: {node: '>=18'} 446 + cpu: [x64] 447 + os: [darwin] 448 + 449 + '@esbuild/darwin-x64@0.27.3': 450 + resolution: {integrity: sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==} 451 + engines: {node: '>=18'} 452 + cpu: [x64] 453 + os: [darwin] 454 + 455 + '@esbuild/freebsd-arm64@0.18.20': 456 + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} 457 + engines: {node: '>=12'} 458 + cpu: [arm64] 459 + os: [freebsd] 460 + 461 + '@esbuild/freebsd-arm64@0.25.12': 462 + resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} 463 + engines: {node: '>=18'} 464 + cpu: [arm64] 465 + os: [freebsd] 466 + 467 + '@esbuild/freebsd-arm64@0.27.3': 468 + resolution: {integrity: sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==} 469 + engines: {node: '>=18'} 470 + cpu: [arm64] 471 + os: [freebsd] 472 + 473 + '@esbuild/freebsd-x64@0.18.20': 474 + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} 475 + engines: {node: '>=12'} 476 + cpu: [x64] 477 + os: [freebsd] 478 + 479 + '@esbuild/freebsd-x64@0.25.12': 480 + resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} 481 + engines: {node: '>=18'} 482 + cpu: [x64] 483 + os: [freebsd] 484 + 485 + '@esbuild/freebsd-x64@0.27.3': 486 + resolution: {integrity: sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==} 487 + engines: {node: '>=18'} 488 + cpu: [x64] 489 + os: [freebsd] 490 + 491 + '@esbuild/linux-arm64@0.18.20': 492 + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} 493 + engines: {node: '>=12'} 494 + cpu: [arm64] 495 + os: [linux] 496 + 497 + '@esbuild/linux-arm64@0.25.12': 498 + resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} 499 + engines: {node: '>=18'} 500 + cpu: [arm64] 501 + os: [linux] 502 + 503 + '@esbuild/linux-arm64@0.27.3': 504 + resolution: {integrity: sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==} 505 + engines: {node: '>=18'} 506 + cpu: [arm64] 507 + os: [linux] 508 + 509 + '@esbuild/linux-arm@0.18.20': 510 + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} 511 + engines: {node: '>=12'} 512 + cpu: [arm] 513 + os: [linux] 514 + 515 + '@esbuild/linux-arm@0.25.12': 516 + resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} 517 + engines: {node: '>=18'} 518 + cpu: [arm] 519 + os: [linux] 520 + 521 + '@esbuild/linux-arm@0.27.3': 522 + resolution: {integrity: sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==} 523 + engines: {node: '>=18'} 524 + cpu: [arm] 525 + os: [linux] 526 + 527 + '@esbuild/linux-ia32@0.18.20': 528 + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} 529 + engines: {node: '>=12'} 530 + cpu: [ia32] 531 + os: [linux] 532 + 533 + '@esbuild/linux-ia32@0.25.12': 534 + resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} 535 + engines: {node: '>=18'} 536 + cpu: [ia32] 537 + os: [linux] 538 + 539 + '@esbuild/linux-ia32@0.27.3': 540 + resolution: {integrity: sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==} 541 + engines: {node: '>=18'} 542 + cpu: [ia32] 543 + os: [linux] 544 + 545 + '@esbuild/linux-loong64@0.18.20': 546 + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} 547 + engines: {node: '>=12'} 548 + cpu: [loong64] 549 + os: [linux] 550 + 551 + '@esbuild/linux-loong64@0.25.12': 552 + resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} 553 + engines: {node: '>=18'} 554 + cpu: [loong64] 555 + os: [linux] 556 + 557 + '@esbuild/linux-loong64@0.27.3': 558 + resolution: {integrity: sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==} 559 + engines: {node: '>=18'} 560 + cpu: [loong64] 561 + os: [linux] 562 + 563 + '@esbuild/linux-mips64el@0.18.20': 564 + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} 565 + engines: {node: '>=12'} 566 + cpu: [mips64el] 567 + os: [linux] 568 + 569 + '@esbuild/linux-mips64el@0.25.12': 570 + resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} 571 + engines: {node: '>=18'} 572 + cpu: [mips64el] 573 + os: [linux] 574 + 575 + '@esbuild/linux-mips64el@0.27.3': 576 + resolution: {integrity: sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==} 577 + engines: {node: '>=18'} 578 + cpu: [mips64el] 579 + os: [linux] 580 + 581 + '@esbuild/linux-ppc64@0.18.20': 582 + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} 583 + engines: {node: '>=12'} 584 + cpu: [ppc64] 585 + os: [linux] 586 + 587 + '@esbuild/linux-ppc64@0.25.12': 588 + resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} 589 + engines: {node: '>=18'} 590 + cpu: [ppc64] 591 + os: [linux] 592 + 593 + '@esbuild/linux-ppc64@0.27.3': 594 + resolution: {integrity: sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==} 595 + engines: {node: '>=18'} 596 + cpu: [ppc64] 597 + os: [linux] 598 + 599 + '@esbuild/linux-riscv64@0.18.20': 600 + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} 601 + engines: {node: '>=12'} 602 + cpu: [riscv64] 603 + os: [linux] 604 + 605 + '@esbuild/linux-riscv64@0.25.12': 606 + resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} 607 + engines: {node: '>=18'} 608 + cpu: [riscv64] 609 + os: [linux] 610 + 611 + '@esbuild/linux-riscv64@0.27.3': 612 + resolution: {integrity: sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==} 613 + engines: {node: '>=18'} 614 + cpu: [riscv64] 615 + os: [linux] 616 + 617 + '@esbuild/linux-s390x@0.18.20': 618 + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} 619 + engines: {node: '>=12'} 620 + cpu: [s390x] 621 + os: [linux] 622 + 623 + '@esbuild/linux-s390x@0.25.12': 624 + resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} 625 + engines: {node: '>=18'} 626 + cpu: [s390x] 627 + os: [linux] 628 + 629 + '@esbuild/linux-s390x@0.27.3': 630 + resolution: {integrity: sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==} 631 + engines: {node: '>=18'} 632 + cpu: [s390x] 633 + os: [linux] 634 + 635 + '@esbuild/linux-x64@0.18.20': 636 + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} 637 + engines: {node: '>=12'} 638 + cpu: [x64] 639 + os: [linux] 640 + 641 + '@esbuild/linux-x64@0.25.12': 642 + resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} 643 + engines: {node: '>=18'} 644 + cpu: [x64] 645 + os: [linux] 646 + 647 + '@esbuild/linux-x64@0.27.3': 648 + resolution: {integrity: sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==} 649 + engines: {node: '>=18'} 650 + cpu: [x64] 651 + os: [linux] 652 + 653 + '@esbuild/netbsd-arm64@0.25.12': 654 + resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} 655 + engines: {node: '>=18'} 656 + cpu: [arm64] 657 + os: [netbsd] 658 + 659 + '@esbuild/netbsd-arm64@0.27.3': 660 + resolution: {integrity: sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==} 661 + engines: {node: '>=18'} 662 + cpu: [arm64] 663 + os: [netbsd] 664 + 665 + '@esbuild/netbsd-x64@0.18.20': 666 + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} 667 + engines: {node: '>=12'} 668 + cpu: [x64] 669 + os: [netbsd] 670 + 671 + '@esbuild/netbsd-x64@0.25.12': 672 + resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} 673 + engines: {node: '>=18'} 674 + cpu: [x64] 675 + os: [netbsd] 676 + 677 + '@esbuild/netbsd-x64@0.27.3': 678 + resolution: {integrity: sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==} 679 + engines: {node: '>=18'} 680 + cpu: [x64] 681 + os: [netbsd] 682 + 683 + '@esbuild/openbsd-arm64@0.25.12': 684 + resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} 685 + engines: {node: '>=18'} 686 + cpu: [arm64] 687 + os: [openbsd] 688 + 689 + '@esbuild/openbsd-arm64@0.27.3': 690 + resolution: {integrity: sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==} 691 + engines: {node: '>=18'} 692 + cpu: [arm64] 693 + os: [openbsd] 694 + 695 + '@esbuild/openbsd-x64@0.18.20': 696 + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} 697 + engines: {node: '>=12'} 698 + cpu: [x64] 699 + os: [openbsd] 700 + 701 + '@esbuild/openbsd-x64@0.25.12': 702 + resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} 703 + engines: {node: '>=18'} 704 + cpu: [x64] 705 + os: [openbsd] 706 + 707 + '@esbuild/openbsd-x64@0.27.3': 708 + resolution: {integrity: sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==} 709 + engines: {node: '>=18'} 710 + cpu: [x64] 711 + os: [openbsd] 712 + 713 + '@esbuild/openharmony-arm64@0.25.12': 714 + resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} 715 + engines: {node: '>=18'} 716 + cpu: [arm64] 717 + os: [openharmony] 718 + 719 + '@esbuild/openharmony-arm64@0.27.3': 720 + resolution: {integrity: sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==} 721 + engines: {node: '>=18'} 722 + cpu: [arm64] 723 + os: [openharmony] 724 + 725 + '@esbuild/sunos-x64@0.18.20': 726 + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} 727 + engines: {node: '>=12'} 728 + cpu: [x64] 729 + os: [sunos] 730 + 731 + '@esbuild/sunos-x64@0.25.12': 732 + resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} 733 + engines: {node: '>=18'} 734 + cpu: [x64] 735 + os: [sunos] 736 + 737 + '@esbuild/sunos-x64@0.27.3': 738 + resolution: {integrity: sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==} 739 + engines: {node: '>=18'} 740 + cpu: [x64] 741 + os: [sunos] 742 + 743 + '@esbuild/win32-arm64@0.18.20': 744 + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} 745 + engines: {node: '>=12'} 746 + cpu: [arm64] 747 + os: [win32] 748 + 749 + '@esbuild/win32-arm64@0.25.12': 750 + resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} 751 + engines: {node: '>=18'} 752 + cpu: [arm64] 753 + os: [win32] 754 + 755 + '@esbuild/win32-arm64@0.27.3': 756 + resolution: {integrity: sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==} 757 + engines: {node: '>=18'} 758 + cpu: [arm64] 759 + os: [win32] 760 + 761 + '@esbuild/win32-ia32@0.18.20': 762 + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} 763 + engines: {node: '>=12'} 764 + cpu: [ia32] 765 + os: [win32] 766 + 767 + '@esbuild/win32-ia32@0.25.12': 768 + resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} 769 + engines: {node: '>=18'} 770 + cpu: [ia32] 771 + os: [win32] 772 + 773 + '@esbuild/win32-ia32@0.27.3': 774 + resolution: {integrity: sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==} 775 + engines: {node: '>=18'} 776 + cpu: [ia32] 777 + os: [win32] 778 + 779 + '@esbuild/win32-x64@0.18.20': 780 + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} 781 + engines: {node: '>=12'} 782 + cpu: [x64] 783 + os: [win32] 784 + 785 + '@esbuild/win32-x64@0.25.12': 786 + resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} 787 + engines: {node: '>=18'} 788 + cpu: [x64] 789 + os: [win32] 790 + 791 + '@esbuild/win32-x64@0.27.3': 792 + resolution: {integrity: sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==} 793 + engines: {node: '>=18'} 794 + cpu: [x64] 795 + os: [win32] 796 + 303 797 '@floating-ui/core@1.7.4': 304 798 resolution: {integrity: sha512-C3HlIdsBxszvm5McXlB8PeOEWfBhcGBTZGkGlWc2U0KFY5IwG5OQEuQ8rq52DZmcHDlPLd+YFBK+cZcytwIFWg==} 305 799 ··· 539 1033 resolution: {integrity: sha512-7G0Uf0yK3f2bjElBLGHIQzgRgMESczOMyYVasq1XK8P5HaXtlW4eQhz9MBL+TQILZLaruq+ClGId+hH0w4jvWw==} 540 1034 engines: {node: '>=18'} 541 1035 1036 + '@neondatabase/serverless@1.0.2': 1037 + resolution: {integrity: sha512-I5sbpSIAHiB+b6UttofhrN/UJXII+4tZPAq1qugzwCwLIL8EZLV7F/JyHUrEIiGgQpEXzpnjlJ+zwcEhheGvCw==} 1038 + engines: {node: '>=19.0.0'} 1039 + 542 1040 '@next/env@16.1.6': 543 1041 resolution: {integrity: sha512-N1ySLuZjnAtN3kFnwhAwPvZah8RJxKasD7x1f8shFqhncnWZn4JMfg37diLNuoHsLAlrDfM3g4mawVdtAG8XLQ==} 544 1042 ··· 594 1092 resolution: {integrity: sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==} 595 1093 engines: {node: ^14.21.3 || >=16} 596 1094 1095 + '@noble/ciphers@2.1.1': 1096 + resolution: {integrity: sha512-bysYuiVfhxNJuldNXlFEitTVdNnYUc+XNJZd7Qm2a5j1vZHgY+fazadNFWFaMK/2vye0JVlxV3gHmC0WDfAOQw==} 1097 + engines: {node: '>= 20.19.0'} 1098 + 597 1099 '@noble/curves@1.9.7': 598 1100 resolution: {integrity: sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==} 599 1101 engines: {node: ^14.21.3 || >=16} ··· 601 1103 '@noble/hashes@1.8.0': 602 1104 resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} 603 1105 engines: {node: ^14.21.3 || >=16} 1106 + 1107 + '@noble/hashes@2.0.1': 1108 + resolution: {integrity: sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw==} 1109 + engines: {node: '>= 20.19.0'} 604 1110 605 1111 '@nodelib/fs.scandir@2.1.5': 606 1112 resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} ··· 630 1136 resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} 631 1137 engines: {node: '>=18'} 632 1138 1139 + '@standard-schema/spec@1.1.0': 1140 + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} 1141 + 633 1142 '@swc/helpers@0.5.15': 634 1143 resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} 635 1144 ··· 724 1233 '@ts-morph/common@0.27.0': 725 1234 resolution: {integrity: sha512-Wf29UqxWDpc+i61k3oIOzcUfQt79PIT9y/MWfAGlrkjg6lBC1hwDECLXPVJAhWjiGbfBCxZd65F/LIZF3+jeJQ==} 726 1235 727 - '@types/node@20.19.33': 728 - resolution: {integrity: sha512-Rs1bVAIdBs5gbTIKza/tgpMuG1k3U/UMJLWecIMxNdJFDMzcM5LOiLVRYh3PilWEYDIeUDv7bpiHPLPsbydGcw==} 1236 + '@types/node@22.19.10': 1237 + resolution: {integrity: sha512-tF5VOugLS/EuDlTBijk0MqABfP8UxgYazTLo3uIn3b4yJgg26QRbVYJYsDtHrjdDUIRfP70+VfhTTc+CE1yskw==} 1238 + 1239 + '@types/node@25.2.2': 1240 + resolution: {integrity: sha512-BkmoP5/FhRYek5izySdkOneRyXYN35I860MFAGupTdebyE66uZaR+bXLHq8k4DirE5DwQi3NuhvRU1jqTVwUrQ==} 1241 + 1242 + '@types/pg@8.16.0': 1243 + resolution: {integrity: sha512-RmhMd/wD+CF8Dfo+cVIy3RR5cl8CyfXQ0tGgW6XBL8L4LM/UTEbNXYRbLwU6w+CgrKBNbrQWt4FUtTfaU5jSYQ==} 729 1244 730 1245 '@types/react-dom@19.2.3': 731 1246 resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==} ··· 790 1305 resolution: {integrity: sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==} 791 1306 hasBin: true 792 1307 1308 + better-auth@1.4.18: 1309 + resolution: {integrity: sha512-bnyifLWBPcYVltH3RhS7CM62MoelEqC6Q+GnZwfiDWNfepXoQZBjEvn4urcERC7NTKgKq5zNBM8rvPvRBa6xcg==} 1310 + peerDependencies: 1311 + '@lynx-js/react': '*' 1312 + '@prisma/client': ^5.0.0 || ^6.0.0 || ^7.0.0 1313 + '@sveltejs/kit': ^2.0.0 1314 + '@tanstack/react-start': ^1.0.0 1315 + '@tanstack/solid-start': ^1.0.0 1316 + better-sqlite3: ^12.0.0 1317 + drizzle-kit: '>=0.31.4' 1318 + drizzle-orm: '>=0.41.0' 1319 + mongodb: ^6.0.0 || ^7.0.0 1320 + mysql2: ^3.0.0 1321 + next: ^14.0.0 || ^15.0.0 || ^16.0.0 1322 + pg: ^8.0.0 1323 + prisma: ^5.0.0 || ^6.0.0 || ^7.0.0 1324 + react: ^18.0.0 || ^19.0.0 1325 + react-dom: ^18.0.0 || ^19.0.0 1326 + solid-js: ^1.0.0 1327 + svelte: ^4.0.0 || ^5.0.0 1328 + vitest: ^2.0.0 || ^3.0.0 || ^4.0.0 1329 + vue: ^3.0.0 1330 + peerDependenciesMeta: 1331 + '@lynx-js/react': 1332 + optional: true 1333 + '@prisma/client': 1334 + optional: true 1335 + '@sveltejs/kit': 1336 + optional: true 1337 + '@tanstack/react-start': 1338 + optional: true 1339 + '@tanstack/solid-start': 1340 + optional: true 1341 + better-sqlite3: 1342 + optional: true 1343 + drizzle-kit: 1344 + optional: true 1345 + drizzle-orm: 1346 + optional: true 1347 + mongodb: 1348 + optional: true 1349 + mysql2: 1350 + optional: true 1351 + next: 1352 + optional: true 1353 + pg: 1354 + optional: true 1355 + prisma: 1356 + optional: true 1357 + react: 1358 + optional: true 1359 + react-dom: 1360 + optional: true 1361 + solid-js: 1362 + optional: true 1363 + svelte: 1364 + optional: true 1365 + vitest: 1366 + optional: true 1367 + vue: 1368 + optional: true 1369 + 1370 + better-call@1.1.8: 1371 + resolution: {integrity: sha512-XMQ2rs6FNXasGNfMjzbyroSwKwYbZ/T3IxruSS6U2MJRsSYh3wYtG3o6H00ZlKZ/C/UPOAD97tqgQJNsxyeTXw==} 1372 + peerDependencies: 1373 + zod: ^4.0.0 1374 + peerDependenciesMeta: 1375 + zod: 1376 + optional: true 1377 + 793 1378 body-parser@2.2.2: 794 1379 resolution: {integrity: sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==} 795 1380 engines: {node: '>=18'} ··· 802 1387 resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} 803 1388 engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 804 1389 hasBin: true 1390 + 1391 + buffer-from@1.1.2: 1392 + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} 805 1393 806 1394 bundle-name@4.1.0: 807 1395 resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} ··· 959 1547 resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} 960 1548 engines: {node: '>=12'} 961 1549 1550 + defu@6.1.4: 1551 + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} 1552 + 962 1553 depd@2.0.0: 963 1554 resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} 964 1555 engines: {node: '>= 0.8'} ··· 975 1566 resolution: {integrity: sha512-mudtfb4zRB4bVvdj0xRo+e6duH1csJRM8IukBqfTRvHotn9+LBXB8ynAidP9zHqoRC/fsllXgk4kCKlR21fIhw==} 976 1567 engines: {node: '>=12'} 977 1568 1569 + drizzle-kit@0.31.9: 1570 + resolution: {integrity: sha512-GViD3IgsXn7trFyBUUHyTFBpH/FsHTxYJ66qdbVggxef4UBPHRYxQaRzYLTuekYnk9i5FIEL9pbBIwMqX/Uwrg==} 1571 + hasBin: true 1572 + 1573 + drizzle-orm@0.45.1: 1574 + resolution: {integrity: sha512-Te0FOdKIistGNPMq2jscdqngBRfBpC8uMFVwqjf6gtTVJHIQ/dosgV/CLBU2N4ZJBsXL5savCba9b0YJskKdcA==} 1575 + peerDependencies: 1576 + '@aws-sdk/client-rds-data': '>=3' 1577 + '@cloudflare/workers-types': '>=4' 1578 + '@electric-sql/pglite': '>=0.2.0' 1579 + '@libsql/client': '>=0.10.0' 1580 + '@libsql/client-wasm': '>=0.10.0' 1581 + '@neondatabase/serverless': '>=0.10.0' 1582 + '@op-engineering/op-sqlite': '>=2' 1583 + '@opentelemetry/api': ^1.4.1 1584 + '@planetscale/database': '>=1.13' 1585 + '@prisma/client': '*' 1586 + '@tidbcloud/serverless': '*' 1587 + '@types/better-sqlite3': '*' 1588 + '@types/pg': '*' 1589 + '@types/sql.js': '*' 1590 + '@upstash/redis': '>=1.34.7' 1591 + '@vercel/postgres': '>=0.8.0' 1592 + '@xata.io/client': '*' 1593 + better-sqlite3: '>=7' 1594 + bun-types: '*' 1595 + expo-sqlite: '>=14.0.0' 1596 + gel: '>=2' 1597 + knex: '*' 1598 + kysely: '*' 1599 + mysql2: '>=2' 1600 + pg: '>=8' 1601 + postgres: '>=3' 1602 + prisma: '*' 1603 + sql.js: '>=1' 1604 + sqlite3: '>=5' 1605 + peerDependenciesMeta: 1606 + '@aws-sdk/client-rds-data': 1607 + optional: true 1608 + '@cloudflare/workers-types': 1609 + optional: true 1610 + '@electric-sql/pglite': 1611 + optional: true 1612 + '@libsql/client': 1613 + optional: true 1614 + '@libsql/client-wasm': 1615 + optional: true 1616 + '@neondatabase/serverless': 1617 + optional: true 1618 + '@op-engineering/op-sqlite': 1619 + optional: true 1620 + '@opentelemetry/api': 1621 + optional: true 1622 + '@planetscale/database': 1623 + optional: true 1624 + '@prisma/client': 1625 + optional: true 1626 + '@tidbcloud/serverless': 1627 + optional: true 1628 + '@types/better-sqlite3': 1629 + optional: true 1630 + '@types/pg': 1631 + optional: true 1632 + '@types/sql.js': 1633 + optional: true 1634 + '@upstash/redis': 1635 + optional: true 1636 + '@vercel/postgres': 1637 + optional: true 1638 + '@xata.io/client': 1639 + optional: true 1640 + better-sqlite3: 1641 + optional: true 1642 + bun-types: 1643 + optional: true 1644 + expo-sqlite: 1645 + optional: true 1646 + gel: 1647 + optional: true 1648 + knex: 1649 + optional: true 1650 + kysely: 1651 + optional: true 1652 + mysql2: 1653 + optional: true 1654 + pg: 1655 + optional: true 1656 + postgres: 1657 + optional: true 1658 + prisma: 1659 + optional: true 1660 + sql.js: 1661 + optional: true 1662 + sqlite3: 1663 + optional: true 1664 + 978 1665 dunder-proto@1.0.1: 979 1666 resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} 980 1667 engines: {node: '>= 0.4'} ··· 1021 1708 es-object-atoms@1.1.1: 1022 1709 resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} 1023 1710 engines: {node: '>= 0.4'} 1711 + 1712 + esbuild-register@3.6.0: 1713 + resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==} 1714 + peerDependencies: 1715 + esbuild: '>=0.12 <1' 1716 + 1717 + esbuild@0.18.20: 1718 + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} 1719 + engines: {node: '>=12'} 1720 + hasBin: true 1721 + 1722 + esbuild@0.25.12: 1723 + resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} 1724 + engines: {node: '>=18'} 1725 + hasBin: true 1726 + 1727 + esbuild@0.27.3: 1728 + resolution: {integrity: sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==} 1729 + engines: {node: '>=18'} 1730 + hasBin: true 1024 1731 1025 1732 escalade@3.2.0: 1026 1733 resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} ··· 1117 1824 fs-extra@11.3.3: 1118 1825 resolution: {integrity: sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==} 1119 1826 engines: {node: '>=14.14'} 1827 + 1828 + fsevents@2.3.3: 1829 + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 1830 + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1831 + os: [darwin] 1120 1832 1121 1833 function-bind@1.1.2: 1122 1834 resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} ··· 1159 1871 resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} 1160 1872 engines: {node: '>=18'} 1161 1873 1874 + get-tsconfig@4.13.6: 1875 + resolution: {integrity: sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==} 1876 + 1162 1877 glob-parent@5.1.2: 1163 1878 resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1164 1879 engines: {node: '>= 6'} ··· 1306 2021 isexe@2.0.0: 1307 2022 resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1308 2023 1309 - isexe@3.1.4: 1310 - resolution: {integrity: sha512-jCErc4h4RnTPjFq53G4whhjAMbUAqinGrCrTT4dmMNyi4zTthK+wphqbRLJtL4BN/Mq7Zzltr0m/b1X0m7PGFQ==} 1311 - engines: {node: '>=20'} 2024 + isexe@3.1.5: 2025 + resolution: {integrity: sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==} 2026 + engines: {node: '>=18'} 1312 2027 1313 2028 jiti@2.6.1: 1314 2029 resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} ··· 1354 2069 resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} 1355 2070 engines: {node: '>=6'} 1356 2071 2072 + kysely@0.28.11: 2073 + resolution: {integrity: sha512-zpGIFg0HuoC893rIjYX1BETkVWdDnzTzF5e0kWXJFg5lE0k1/LfNWBejrcnOFu8Q2Rfq/hTDTU7XLUM8QOrpzg==} 2074 + engines: {node: '>=20.0.0'} 2075 + 1357 2076 lightningcss-android-arm64@1.30.2: 1358 2077 resolution: {integrity: sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==} 1359 2078 engines: {node: '>= 12.0.0'} ··· 1505 2224 engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1506 2225 hasBin: true 1507 2226 2227 + nanostores@1.1.0: 2228 + resolution: {integrity: sha512-yJBmDJr18xy47dbNVlHcgdPrulSn1nhSE6Ns9vTG+Nx9VPT6iV1MD6aQFp/t52zpf82FhLLTXAXr30NuCnxvwA==} 2229 + engines: {node: ^20.0.0 || >=22.0.0} 2230 + 1508 2231 negotiator@1.0.0: 1509 2232 resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} 1510 2233 engines: {node: '>= 0.6'} ··· 1630 2353 path-to-regexp@8.3.0: 1631 2354 resolution: {integrity: sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==} 1632 2355 2356 + pg-int8@1.0.1: 2357 + resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} 2358 + engines: {node: '>=4.0.0'} 2359 + 2360 + pg-protocol@1.11.0: 2361 + resolution: {integrity: sha512-pfsxk2M9M3BuGgDOfuy37VNRRX3jmKgMjcvAcWqNDpZSf4cUmv8HSOl5ViRQFsfARFn0KuUQTgLxVMbNq5NW3g==} 2362 + 2363 + pg-types@2.2.0: 2364 + resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} 2365 + engines: {node: '>=4'} 2366 + 1633 2367 picocolors@1.1.1: 1634 2368 resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 1635 2369 ··· 1657 2391 resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} 1658 2392 engines: {node: ^10 || ^12 || >=14} 1659 2393 2394 + postgres-array@2.0.0: 2395 + resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} 2396 + engines: {node: '>=4'} 2397 + 2398 + postgres-bytea@1.0.1: 2399 + resolution: {integrity: sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==} 2400 + engines: {node: '>=0.10.0'} 2401 + 2402 + postgres-date@1.0.7: 2403 + resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} 2404 + engines: {node: '>=0.10.0'} 2405 + 2406 + postgres-interval@1.2.0: 2407 + resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} 2408 + engines: {node: '>=0.10.0'} 2409 + 1660 2410 powershell-utils@0.1.0: 1661 2411 resolution: {integrity: sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==} 1662 2412 engines: {node: '>=20'} ··· 1688 2438 resolution: {integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==} 1689 2439 engines: {node: '>= 0.10'} 1690 2440 1691 - react-dom@19.2.3: 1692 - resolution: {integrity: sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==} 2441 + react-dom@19.2.4: 2442 + resolution: {integrity: sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==} 1693 2443 peerDependencies: 1694 - react: ^19.2.3 2444 + react: ^19.2.4 1695 2445 1696 - react@19.2.3: 1697 - resolution: {integrity: sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==} 2446 + react@19.2.4: 2447 + resolution: {integrity: sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==} 1698 2448 engines: {node: '>=0.10.0'} 1699 2449 1700 2450 recast@0.23.11: ··· 1716 2466 resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1717 2467 engines: {node: '>=4'} 1718 2468 2469 + resolve-pkg-maps@1.0.0: 2470 + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} 2471 + 1719 2472 restore-cursor@5.1.0: 1720 2473 resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} 1721 2474 engines: {node: '>=18'} ··· 1727 2480 resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} 1728 2481 engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1729 2482 2483 + rou3@0.7.12: 2484 + resolution: {integrity: sha512-iFE4hLDuloSWcD7mjdCDhx2bKcIsYbtOTpfH5MHHLSKMOUyjqQXTeZVa289uuwEGEKFoE/BAPbhaU4B774nceg==} 2485 + 1730 2486 router@2.2.0: 1731 2487 resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} 1732 2488 engines: {node: '>= 18'} ··· 1760 2516 serve-static@2.2.1: 1761 2517 resolution: {integrity: sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==} 1762 2518 engines: {node: '>= 18'} 2519 + 2520 + set-cookie-parser@2.7.2: 2521 + resolution: {integrity: sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==} 1763 2522 1764 2523 setprototypeof@1.2.0: 1765 2524 resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} ··· 1810 2569 resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 1811 2570 engines: {node: '>=0.10.0'} 1812 2571 2572 + source-map-support@0.5.21: 2573 + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} 2574 + 1813 2575 source-map@0.6.1: 1814 2576 resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 1815 2577 engines: {node: '>=0.10.0'} ··· 1894 2656 resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} 1895 2657 engines: {node: '>=18'} 1896 2658 1897 - tldts-core@7.0.22: 1898 - resolution: {integrity: sha512-KgbTDC5wzlL6j/x6np6wCnDSMUq4kucHNm00KXPbfNzmllCmtmvtykJHfmgdHntwIeupW04y8s1N/43S1PkQDw==} 2659 + tldts-core@7.0.23: 2660 + resolution: {integrity: sha512-0g9vrtDQLrNIiCj22HSe9d4mLVG3g5ph5DZ8zCKBr4OtrspmNB6ss7hVyzArAeE88ceZocIEGkyW1Ime7fxPtQ==} 1899 2661 1900 - tldts@7.0.22: 1901 - resolution: {integrity: sha512-nqpKFC53CgopKPjT6Wfb6tpIcZXHcI6G37hesvikhx0EmUGPkZrujRyAjgnmp1SHNgpQfKVanZ+KfpANFt2Hxw==} 2662 + tldts@7.0.23: 2663 + resolution: {integrity: sha512-ASdhgQIBSay0R/eXggAkQ53G4nTJqTXqC2kbaBbdDwM7SkjyZyO0OaaN1/FH7U/yCeqOHDwFO5j8+Os/IS1dXw==} 1902 2664 hasBin: true 1903 2665 1904 2666 to-regex-range@5.0.1: ··· 1922 2684 1923 2685 tslib@2.8.1: 1924 2686 resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} 2687 + 2688 + tsx@4.21.0: 2689 + resolution: {integrity: sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==} 2690 + engines: {node: '>=18.0.0'} 2691 + hasBin: true 1925 2692 1926 2693 tw-animate-css@1.4.0: 1927 2694 resolution: {integrity: sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ==} ··· 1942 2709 undici-types@6.21.0: 1943 2710 resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} 1944 2711 2712 + undici-types@7.16.0: 2713 + resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} 2714 + 1945 2715 unicorn-magic@0.3.0: 1946 2716 resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} 1947 2717 engines: {node: '>=18'} ··· 2008 2778 resolution: {integrity: sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==} 2009 2779 engines: {node: '>=20'} 2010 2780 2781 + xtend@4.0.2: 2782 + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} 2783 + engines: {node: '>=0.4'} 2784 + 2011 2785 y18n@5.0.8: 2012 2786 resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} 2013 2787 engines: {node: '>=10'} ··· 2038 2812 2039 2813 zod@3.25.76: 2040 2814 resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} 2815 + 2816 + zod@4.3.6: 2817 + resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==} 2041 2818 2042 2819 snapshots: 2043 2820 ··· 2238 3015 '@babel/helper-string-parser': 7.27.1 2239 3016 '@babel/helper-validator-identifier': 7.28.5 2240 3017 2241 - '@base-ui/react@1.1.0(@types/react@19.2.13)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': 3018 + '@base-ui/react@1.1.0(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': 2242 3019 dependencies: 2243 3020 '@babel/runtime': 7.28.6 2244 - '@base-ui/utils': 0.2.4(@types/react@19.2.13)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) 2245 - '@floating-ui/react-dom': 2.1.7(react-dom@19.2.3(react@19.2.3))(react@19.2.3) 3021 + '@base-ui/utils': 0.2.4(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) 3022 + '@floating-ui/react-dom': 2.1.7(react-dom@19.2.4(react@19.2.4))(react@19.2.4) 2246 3023 '@floating-ui/utils': 0.2.10 2247 - react: 19.2.3 2248 - react-dom: 19.2.3(react@19.2.3) 3024 + react: 19.2.4 3025 + react-dom: 19.2.4(react@19.2.4) 2249 3026 reselect: 5.1.1 2250 3027 tabbable: 6.4.0 2251 - use-sync-external-store: 1.6.0(react@19.2.3) 3028 + use-sync-external-store: 1.6.0(react@19.2.4) 2252 3029 optionalDependencies: 2253 3030 '@types/react': 19.2.13 2254 3031 2255 - '@base-ui/utils@0.2.4(@types/react@19.2.13)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': 3032 + '@base-ui/utils@0.2.4(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': 2256 3033 dependencies: 2257 3034 '@babel/runtime': 7.28.6 2258 3035 '@floating-ui/utils': 0.2.10 2259 - react: 19.2.3 2260 - react-dom: 19.2.3(react@19.2.3) 3036 + react: 19.2.4 3037 + react-dom: 19.2.4(react@19.2.4) 2261 3038 reselect: 5.1.1 2262 - use-sync-external-store: 1.6.0(react@19.2.3) 3039 + use-sync-external-store: 1.6.0(react@19.2.4) 2263 3040 optionalDependencies: 2264 3041 '@types/react': 19.2.13 2265 3042 2266 - '@biomejs/biome@2.2.0': 3043 + '@better-auth/core@1.4.18(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.21)(better-call@1.1.8(zod@3.25.76))(jose@6.1.3)(kysely@0.28.11)(nanostores@1.1.0)': 3044 + dependencies: 3045 + '@better-auth/utils': 0.3.0 3046 + '@better-fetch/fetch': 1.1.21 3047 + '@standard-schema/spec': 1.1.0 3048 + better-call: 1.1.8(zod@4.3.6) 3049 + jose: 6.1.3 3050 + kysely: 0.28.11 3051 + nanostores: 1.1.0 3052 + zod: 4.3.6 3053 + 3054 + '@better-auth/telemetry@1.4.18(@better-auth/core@1.4.18(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.21)(better-call@1.1.8(zod@3.25.76))(jose@6.1.3)(kysely@0.28.11)(nanostores@1.1.0))': 3055 + dependencies: 3056 + '@better-auth/core': 1.4.18(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.21)(better-call@1.1.8(zod@3.25.76))(jose@6.1.3)(kysely@0.28.11)(nanostores@1.1.0) 3057 + '@better-auth/utils': 0.3.0 3058 + '@better-fetch/fetch': 1.1.21 3059 + 3060 + '@better-auth/utils@0.3.0': {} 3061 + 3062 + '@better-fetch/fetch@1.1.21': {} 3063 + 3064 + '@biomejs/biome@2.3.14': 2267 3065 optionalDependencies: 2268 - '@biomejs/cli-darwin-arm64': 2.2.0 2269 - '@biomejs/cli-darwin-x64': 2.2.0 2270 - '@biomejs/cli-linux-arm64': 2.2.0 2271 - '@biomejs/cli-linux-arm64-musl': 2.2.0 2272 - '@biomejs/cli-linux-x64': 2.2.0 2273 - '@biomejs/cli-linux-x64-musl': 2.2.0 2274 - '@biomejs/cli-win32-arm64': 2.2.0 2275 - '@biomejs/cli-win32-x64': 2.2.0 3066 + '@biomejs/cli-darwin-arm64': 2.3.14 3067 + '@biomejs/cli-darwin-x64': 2.3.14 3068 + '@biomejs/cli-linux-arm64': 2.3.14 3069 + '@biomejs/cli-linux-arm64-musl': 2.3.14 3070 + '@biomejs/cli-linux-x64': 2.3.14 3071 + '@biomejs/cli-linux-x64-musl': 2.3.14 3072 + '@biomejs/cli-win32-arm64': 2.3.14 3073 + '@biomejs/cli-win32-x64': 2.3.14 2276 3074 2277 - '@biomejs/cli-darwin-arm64@2.2.0': 3075 + '@biomejs/cli-darwin-arm64@2.3.14': 2278 3076 optional: true 2279 3077 2280 - '@biomejs/cli-darwin-x64@2.2.0': 3078 + '@biomejs/cli-darwin-x64@2.3.14': 2281 3079 optional: true 2282 3080 2283 - '@biomejs/cli-linux-arm64-musl@2.2.0': 3081 + '@biomejs/cli-linux-arm64-musl@2.3.14': 2284 3082 optional: true 2285 3083 2286 - '@biomejs/cli-linux-arm64@2.2.0': 3084 + '@biomejs/cli-linux-arm64@2.3.14': 2287 3085 optional: true 2288 3086 2289 - '@biomejs/cli-linux-x64-musl@2.2.0': 3087 + '@biomejs/cli-linux-x64-musl@2.3.14': 2290 3088 optional: true 2291 3089 2292 - '@biomejs/cli-linux-x64@2.2.0': 3090 + '@biomejs/cli-linux-x64@2.3.14': 2293 3091 optional: true 2294 3092 2295 - '@biomejs/cli-win32-arm64@2.2.0': 3093 + '@biomejs/cli-win32-arm64@2.3.14': 2296 3094 optional: true 2297 3095 2298 - '@biomejs/cli-win32-x64@2.2.0': 3096 + '@biomejs/cli-win32-x64@2.3.14': 2299 3097 optional: true 2300 3098 2301 3099 '@dotenvx/dotenvx@1.52.0': ··· 2310 3108 picomatch: 4.0.3 2311 3109 which: 4.0.0 2312 3110 3111 + '@drizzle-team/brocli@0.10.2': {} 3112 + 2313 3113 '@ecies/ciphers@0.2.5(@noble/ciphers@1.3.0)': 2314 3114 dependencies: 2315 3115 '@noble/ciphers': 1.3.0 ··· 2319 3119 tslib: 2.8.1 2320 3120 optional: true 2321 3121 3122 + '@esbuild-kit/core-utils@3.3.2': 3123 + dependencies: 3124 + esbuild: 0.18.20 3125 + source-map-support: 0.5.21 3126 + 3127 + '@esbuild-kit/esm-loader@2.6.5': 3128 + dependencies: 3129 + '@esbuild-kit/core-utils': 3.3.2 3130 + get-tsconfig: 4.13.6 3131 + 3132 + '@esbuild/aix-ppc64@0.25.12': 3133 + optional: true 3134 + 3135 + '@esbuild/aix-ppc64@0.27.3': 3136 + optional: true 3137 + 3138 + '@esbuild/android-arm64@0.18.20': 3139 + optional: true 3140 + 3141 + '@esbuild/android-arm64@0.25.12': 3142 + optional: true 3143 + 3144 + '@esbuild/android-arm64@0.27.3': 3145 + optional: true 3146 + 3147 + '@esbuild/android-arm@0.18.20': 3148 + optional: true 3149 + 3150 + '@esbuild/android-arm@0.25.12': 3151 + optional: true 3152 + 3153 + '@esbuild/android-arm@0.27.3': 3154 + optional: true 3155 + 3156 + '@esbuild/android-x64@0.18.20': 3157 + optional: true 3158 + 3159 + '@esbuild/android-x64@0.25.12': 3160 + optional: true 3161 + 3162 + '@esbuild/android-x64@0.27.3': 3163 + optional: true 3164 + 3165 + '@esbuild/darwin-arm64@0.18.20': 3166 + optional: true 3167 + 3168 + '@esbuild/darwin-arm64@0.25.12': 3169 + optional: true 3170 + 3171 + '@esbuild/darwin-arm64@0.27.3': 3172 + optional: true 3173 + 3174 + '@esbuild/darwin-x64@0.18.20': 3175 + optional: true 3176 + 3177 + '@esbuild/darwin-x64@0.25.12': 3178 + optional: true 3179 + 3180 + '@esbuild/darwin-x64@0.27.3': 3181 + optional: true 3182 + 3183 + '@esbuild/freebsd-arm64@0.18.20': 3184 + optional: true 3185 + 3186 + '@esbuild/freebsd-arm64@0.25.12': 3187 + optional: true 3188 + 3189 + '@esbuild/freebsd-arm64@0.27.3': 3190 + optional: true 3191 + 3192 + '@esbuild/freebsd-x64@0.18.20': 3193 + optional: true 3194 + 3195 + '@esbuild/freebsd-x64@0.25.12': 3196 + optional: true 3197 + 3198 + '@esbuild/freebsd-x64@0.27.3': 3199 + optional: true 3200 + 3201 + '@esbuild/linux-arm64@0.18.20': 3202 + optional: true 3203 + 3204 + '@esbuild/linux-arm64@0.25.12': 3205 + optional: true 3206 + 3207 + '@esbuild/linux-arm64@0.27.3': 3208 + optional: true 3209 + 3210 + '@esbuild/linux-arm@0.18.20': 3211 + optional: true 3212 + 3213 + '@esbuild/linux-arm@0.25.12': 3214 + optional: true 3215 + 3216 + '@esbuild/linux-arm@0.27.3': 3217 + optional: true 3218 + 3219 + '@esbuild/linux-ia32@0.18.20': 3220 + optional: true 3221 + 3222 + '@esbuild/linux-ia32@0.25.12': 3223 + optional: true 3224 + 3225 + '@esbuild/linux-ia32@0.27.3': 3226 + optional: true 3227 + 3228 + '@esbuild/linux-loong64@0.18.20': 3229 + optional: true 3230 + 3231 + '@esbuild/linux-loong64@0.25.12': 3232 + optional: true 3233 + 3234 + '@esbuild/linux-loong64@0.27.3': 3235 + optional: true 3236 + 3237 + '@esbuild/linux-mips64el@0.18.20': 3238 + optional: true 3239 + 3240 + '@esbuild/linux-mips64el@0.25.12': 3241 + optional: true 3242 + 3243 + '@esbuild/linux-mips64el@0.27.3': 3244 + optional: true 3245 + 3246 + '@esbuild/linux-ppc64@0.18.20': 3247 + optional: true 3248 + 3249 + '@esbuild/linux-ppc64@0.25.12': 3250 + optional: true 3251 + 3252 + '@esbuild/linux-ppc64@0.27.3': 3253 + optional: true 3254 + 3255 + '@esbuild/linux-riscv64@0.18.20': 3256 + optional: true 3257 + 3258 + '@esbuild/linux-riscv64@0.25.12': 3259 + optional: true 3260 + 3261 + '@esbuild/linux-riscv64@0.27.3': 3262 + optional: true 3263 + 3264 + '@esbuild/linux-s390x@0.18.20': 3265 + optional: true 3266 + 3267 + '@esbuild/linux-s390x@0.25.12': 3268 + optional: true 3269 + 3270 + '@esbuild/linux-s390x@0.27.3': 3271 + optional: true 3272 + 3273 + '@esbuild/linux-x64@0.18.20': 3274 + optional: true 3275 + 3276 + '@esbuild/linux-x64@0.25.12': 3277 + optional: true 3278 + 3279 + '@esbuild/linux-x64@0.27.3': 3280 + optional: true 3281 + 3282 + '@esbuild/netbsd-arm64@0.25.12': 3283 + optional: true 3284 + 3285 + '@esbuild/netbsd-arm64@0.27.3': 3286 + optional: true 3287 + 3288 + '@esbuild/netbsd-x64@0.18.20': 3289 + optional: true 3290 + 3291 + '@esbuild/netbsd-x64@0.25.12': 3292 + optional: true 3293 + 3294 + '@esbuild/netbsd-x64@0.27.3': 3295 + optional: true 3296 + 3297 + '@esbuild/openbsd-arm64@0.25.12': 3298 + optional: true 3299 + 3300 + '@esbuild/openbsd-arm64@0.27.3': 3301 + optional: true 3302 + 3303 + '@esbuild/openbsd-x64@0.18.20': 3304 + optional: true 3305 + 3306 + '@esbuild/openbsd-x64@0.25.12': 3307 + optional: true 3308 + 3309 + '@esbuild/openbsd-x64@0.27.3': 3310 + optional: true 3311 + 3312 + '@esbuild/openharmony-arm64@0.25.12': 3313 + optional: true 3314 + 3315 + '@esbuild/openharmony-arm64@0.27.3': 3316 + optional: true 3317 + 3318 + '@esbuild/sunos-x64@0.18.20': 3319 + optional: true 3320 + 3321 + '@esbuild/sunos-x64@0.25.12': 3322 + optional: true 3323 + 3324 + '@esbuild/sunos-x64@0.27.3': 3325 + optional: true 3326 + 3327 + '@esbuild/win32-arm64@0.18.20': 3328 + optional: true 3329 + 3330 + '@esbuild/win32-arm64@0.25.12': 3331 + optional: true 3332 + 3333 + '@esbuild/win32-arm64@0.27.3': 3334 + optional: true 3335 + 3336 + '@esbuild/win32-ia32@0.18.20': 3337 + optional: true 3338 + 3339 + '@esbuild/win32-ia32@0.25.12': 3340 + optional: true 3341 + 3342 + '@esbuild/win32-ia32@0.27.3': 3343 + optional: true 3344 + 3345 + '@esbuild/win32-x64@0.18.20': 3346 + optional: true 3347 + 3348 + '@esbuild/win32-x64@0.25.12': 3349 + optional: true 3350 + 3351 + '@esbuild/win32-x64@0.27.3': 3352 + optional: true 3353 + 2322 3354 '@floating-ui/core@1.7.4': 2323 3355 dependencies: 2324 3356 '@floating-ui/utils': 0.2.10 ··· 2328 3360 '@floating-ui/core': 1.7.4 2329 3361 '@floating-ui/utils': 0.2.10 2330 3362 2331 - '@floating-ui/react-dom@2.1.7(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': 3363 + '@floating-ui/react-dom@2.1.7(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': 2332 3364 dependencies: 2333 3365 '@floating-ui/dom': 1.7.5 2334 - react: 19.2.3 2335 - react-dom: 19.2.3(react@19.2.3) 3366 + react: 19.2.4 3367 + react-dom: 19.2.4(react@19.2.4) 2336 3368 2337 3369 '@floating-ui/utils@0.2.10': {} 2338 3370 ··· 2342 3374 2343 3375 '@hugeicons/core-free-icons@3.1.1': {} 2344 3376 2345 - '@hugeicons/react@1.1.5(react@19.2.3)': 3377 + '@hugeicons/react@1.1.5(react@19.2.4)': 2346 3378 dependencies: 2347 - react: 19.2.3 3379 + react: 19.2.4 2348 3380 2349 3381 '@img/colour@1.0.0': 2350 3382 optional: true ··· 2445 3477 2446 3478 '@inquirer/ansi@1.0.2': {} 2447 3479 2448 - '@inquirer/confirm@5.1.21(@types/node@20.19.33)': 3480 + '@inquirer/confirm@5.1.21(@types/node@25.2.2)': 2449 3481 dependencies: 2450 - '@inquirer/core': 10.3.2(@types/node@20.19.33) 2451 - '@inquirer/type': 3.0.10(@types/node@20.19.33) 3482 + '@inquirer/core': 10.3.2(@types/node@25.2.2) 3483 + '@inquirer/type': 3.0.10(@types/node@25.2.2) 2452 3484 optionalDependencies: 2453 - '@types/node': 20.19.33 3485 + '@types/node': 25.2.2 2454 3486 2455 - '@inquirer/core@10.3.2(@types/node@20.19.33)': 3487 + '@inquirer/core@10.3.2(@types/node@25.2.2)': 2456 3488 dependencies: 2457 3489 '@inquirer/ansi': 1.0.2 2458 3490 '@inquirer/figures': 1.0.15 2459 - '@inquirer/type': 3.0.10(@types/node@20.19.33) 3491 + '@inquirer/type': 3.0.10(@types/node@25.2.2) 2460 3492 cli-width: 4.1.0 2461 3493 mute-stream: 2.0.0 2462 3494 signal-exit: 4.1.0 2463 3495 wrap-ansi: 6.2.0 2464 3496 yoctocolors-cjs: 2.1.3 2465 3497 optionalDependencies: 2466 - '@types/node': 20.19.33 3498 + '@types/node': 25.2.2 2467 3499 2468 3500 '@inquirer/figures@1.0.15': {} 2469 3501 2470 - '@inquirer/type@3.0.10(@types/node@20.19.33)': 3502 + '@inquirer/type@3.0.10(@types/node@25.2.2)': 2471 3503 optionalDependencies: 2472 - '@types/node': 20.19.33 3504 + '@types/node': 25.2.2 2473 3505 2474 3506 '@isaacs/balanced-match@4.0.1': {} 2475 3507 ··· 2527 3559 outvariant: 1.4.3 2528 3560 strict-event-emitter: 0.5.1 2529 3561 3562 + '@neondatabase/serverless@1.0.2': 3563 + dependencies: 3564 + '@types/node': 22.19.10 3565 + '@types/pg': 8.16.0 3566 + 2530 3567 '@next/env@16.1.6': {} 2531 3568 2532 3569 '@next/swc-darwin-arm64@16.1.6': ··· 2554 3591 optional: true 2555 3592 2556 3593 '@noble/ciphers@1.3.0': {} 3594 + 3595 + '@noble/ciphers@2.1.1': {} 2557 3596 2558 3597 '@noble/curves@1.9.7': 2559 3598 dependencies: ··· 2561 3600 2562 3601 '@noble/hashes@1.8.0': {} 2563 3602 3603 + '@noble/hashes@2.0.1': {} 3604 + 2564 3605 '@nodelib/fs.scandir@2.1.5': 2565 3606 dependencies: 2566 3607 '@nodelib/fs.stat': 2.0.5 ··· 2585 3626 '@sec-ant/readable-stream@0.4.1': {} 2586 3627 2587 3628 '@sindresorhus/merge-streams@4.0.0': {} 3629 + 3630 + '@standard-schema/spec@1.1.0': {} 2588 3631 2589 3632 '@swc/helpers@0.5.15': 2590 3633 dependencies: ··· 2665 3708 minimatch: 10.1.2 2666 3709 path-browserify: 1.0.1 2667 3710 2668 - '@types/node@20.19.33': 3711 + '@types/node@22.19.10': 2669 3712 dependencies: 2670 3713 undici-types: 6.21.0 2671 3714 3715 + '@types/node@25.2.2': 3716 + dependencies: 3717 + undici-types: 7.16.0 3718 + 3719 + '@types/pg@8.16.0': 3720 + dependencies: 3721 + '@types/node': 25.2.2 3722 + pg-protocol: 1.11.0 3723 + pg-types: 2.2.0 3724 + 2672 3725 '@types/react-dom@19.2.3(@types/react@19.2.13)': 2673 3726 dependencies: 2674 3727 '@types/react': 19.2.13 ··· 2721 3774 2722 3775 baseline-browser-mapping@2.9.19: {} 2723 3776 3777 + better-auth@1.4.18(drizzle-kit@0.31.9)(drizzle-orm@0.45.1(@neondatabase/serverless@1.0.2)(@types/pg@8.16.0)(kysely@0.28.11))(next@16.1.6(@babel/core@7.29.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4): 3778 + dependencies: 3779 + '@better-auth/core': 1.4.18(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.21)(better-call@1.1.8(zod@3.25.76))(jose@6.1.3)(kysely@0.28.11)(nanostores@1.1.0) 3780 + '@better-auth/telemetry': 1.4.18(@better-auth/core@1.4.18(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.21)(better-call@1.1.8(zod@3.25.76))(jose@6.1.3)(kysely@0.28.11)(nanostores@1.1.0)) 3781 + '@better-auth/utils': 0.3.0 3782 + '@better-fetch/fetch': 1.1.21 3783 + '@noble/ciphers': 2.1.1 3784 + '@noble/hashes': 2.0.1 3785 + better-call: 1.1.8(zod@4.3.6) 3786 + defu: 6.1.4 3787 + jose: 6.1.3 3788 + kysely: 0.28.11 3789 + nanostores: 1.1.0 3790 + zod: 4.3.6 3791 + optionalDependencies: 3792 + drizzle-kit: 0.31.9 3793 + drizzle-orm: 0.45.1(@neondatabase/serverless@1.0.2)(@types/pg@8.16.0)(kysely@0.28.11) 3794 + next: 16.1.6(@babel/core@7.29.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) 3795 + react: 19.2.4 3796 + react-dom: 19.2.4(react@19.2.4) 3797 + 3798 + better-call@1.1.8(zod@4.3.6): 3799 + dependencies: 3800 + '@better-auth/utils': 0.3.0 3801 + '@better-fetch/fetch': 1.1.21 3802 + rou3: 0.7.12 3803 + set-cookie-parser: 2.7.2 3804 + optionalDependencies: 3805 + zod: 4.3.6 3806 + 2724 3807 body-parser@2.2.2: 2725 3808 dependencies: 2726 3809 bytes: 3.1.2 ··· 2746 3829 electron-to-chromium: 1.5.286 2747 3830 node-releases: 2.0.27 2748 3831 update-browserslist-db: 1.2.3(browserslist@4.28.1) 3832 + 3833 + buffer-from@1.1.2: {} 2749 3834 2750 3835 bundle-name@4.1.0: 2751 3836 dependencies: ··· 2858 3943 2859 3944 define-lazy-prop@3.0.0: {} 2860 3945 3946 + defu@6.1.4: {} 3947 + 2861 3948 depd@2.0.0: {} 2862 3949 2863 3950 detect-libc@2.1.2: {} ··· 2866 3953 2867 3954 dotenv@17.2.4: {} 2868 3955 3956 + drizzle-kit@0.31.9: 3957 + dependencies: 3958 + '@drizzle-team/brocli': 0.10.2 3959 + '@esbuild-kit/esm-loader': 2.6.5 3960 + esbuild: 0.25.12 3961 + esbuild-register: 3.6.0(esbuild@0.25.12) 3962 + transitivePeerDependencies: 3963 + - supports-color 3964 + 3965 + drizzle-orm@0.45.1(@neondatabase/serverless@1.0.2)(@types/pg@8.16.0)(kysely@0.28.11): 3966 + optionalDependencies: 3967 + '@neondatabase/serverless': 1.0.2 3968 + '@types/pg': 8.16.0 3969 + kysely: 0.28.11 3970 + 2869 3971 dunder-proto@1.0.1: 2870 3972 dependencies: 2871 3973 call-bind-apply-helpers: 1.0.2 ··· 2908 4010 dependencies: 2909 4011 es-errors: 1.3.0 2910 4012 4013 + esbuild-register@3.6.0(esbuild@0.25.12): 4014 + dependencies: 4015 + debug: 4.4.3 4016 + esbuild: 0.25.12 4017 + transitivePeerDependencies: 4018 + - supports-color 4019 + 4020 + esbuild@0.18.20: 4021 + optionalDependencies: 4022 + '@esbuild/android-arm': 0.18.20 4023 + '@esbuild/android-arm64': 0.18.20 4024 + '@esbuild/android-x64': 0.18.20 4025 + '@esbuild/darwin-arm64': 0.18.20 4026 + '@esbuild/darwin-x64': 0.18.20 4027 + '@esbuild/freebsd-arm64': 0.18.20 4028 + '@esbuild/freebsd-x64': 0.18.20 4029 + '@esbuild/linux-arm': 0.18.20 4030 + '@esbuild/linux-arm64': 0.18.20 4031 + '@esbuild/linux-ia32': 0.18.20 4032 + '@esbuild/linux-loong64': 0.18.20 4033 + '@esbuild/linux-mips64el': 0.18.20 4034 + '@esbuild/linux-ppc64': 0.18.20 4035 + '@esbuild/linux-riscv64': 0.18.20 4036 + '@esbuild/linux-s390x': 0.18.20 4037 + '@esbuild/linux-x64': 0.18.20 4038 + '@esbuild/netbsd-x64': 0.18.20 4039 + '@esbuild/openbsd-x64': 0.18.20 4040 + '@esbuild/sunos-x64': 0.18.20 4041 + '@esbuild/win32-arm64': 0.18.20 4042 + '@esbuild/win32-ia32': 0.18.20 4043 + '@esbuild/win32-x64': 0.18.20 4044 + 4045 + esbuild@0.25.12: 4046 + optionalDependencies: 4047 + '@esbuild/aix-ppc64': 0.25.12 4048 + '@esbuild/android-arm': 0.25.12 4049 + '@esbuild/android-arm64': 0.25.12 4050 + '@esbuild/android-x64': 0.25.12 4051 + '@esbuild/darwin-arm64': 0.25.12 4052 + '@esbuild/darwin-x64': 0.25.12 4053 + '@esbuild/freebsd-arm64': 0.25.12 4054 + '@esbuild/freebsd-x64': 0.25.12 4055 + '@esbuild/linux-arm': 0.25.12 4056 + '@esbuild/linux-arm64': 0.25.12 4057 + '@esbuild/linux-ia32': 0.25.12 4058 + '@esbuild/linux-loong64': 0.25.12 4059 + '@esbuild/linux-mips64el': 0.25.12 4060 + '@esbuild/linux-ppc64': 0.25.12 4061 + '@esbuild/linux-riscv64': 0.25.12 4062 + '@esbuild/linux-s390x': 0.25.12 4063 + '@esbuild/linux-x64': 0.25.12 4064 + '@esbuild/netbsd-arm64': 0.25.12 4065 + '@esbuild/netbsd-x64': 0.25.12 4066 + '@esbuild/openbsd-arm64': 0.25.12 4067 + '@esbuild/openbsd-x64': 0.25.12 4068 + '@esbuild/openharmony-arm64': 0.25.12 4069 + '@esbuild/sunos-x64': 0.25.12 4070 + '@esbuild/win32-arm64': 0.25.12 4071 + '@esbuild/win32-ia32': 0.25.12 4072 + '@esbuild/win32-x64': 0.25.12 4073 + 4074 + esbuild@0.27.3: 4075 + optionalDependencies: 4076 + '@esbuild/aix-ppc64': 0.27.3 4077 + '@esbuild/android-arm': 0.27.3 4078 + '@esbuild/android-arm64': 0.27.3 4079 + '@esbuild/android-x64': 0.27.3 4080 + '@esbuild/darwin-arm64': 0.27.3 4081 + '@esbuild/darwin-x64': 0.27.3 4082 + '@esbuild/freebsd-arm64': 0.27.3 4083 + '@esbuild/freebsd-x64': 0.27.3 4084 + '@esbuild/linux-arm': 0.27.3 4085 + '@esbuild/linux-arm64': 0.27.3 4086 + '@esbuild/linux-ia32': 0.27.3 4087 + '@esbuild/linux-loong64': 0.27.3 4088 + '@esbuild/linux-mips64el': 0.27.3 4089 + '@esbuild/linux-ppc64': 0.27.3 4090 + '@esbuild/linux-riscv64': 0.27.3 4091 + '@esbuild/linux-s390x': 0.27.3 4092 + '@esbuild/linux-x64': 0.27.3 4093 + '@esbuild/netbsd-arm64': 0.27.3 4094 + '@esbuild/netbsd-x64': 0.27.3 4095 + '@esbuild/openbsd-arm64': 0.27.3 4096 + '@esbuild/openbsd-x64': 0.27.3 4097 + '@esbuild/openharmony-arm64': 0.27.3 4098 + '@esbuild/sunos-x64': 0.27.3 4099 + '@esbuild/win32-arm64': 0.27.3 4100 + '@esbuild/win32-ia32': 0.27.3 4101 + '@esbuild/win32-x64': 0.27.3 4102 + 2911 4103 escalade@3.2.0: {} 2912 4104 2913 4105 escape-html@1.0.3: {} ··· 3045 4237 jsonfile: 6.2.0 3046 4238 universalify: 2.0.1 3047 4239 4240 + fsevents@2.3.3: 4241 + optional: true 4242 + 3048 4243 function-bind@1.1.2: {} 3049 4244 3050 4245 fuzzysort@3.1.0: {} ··· 3083 4278 dependencies: 3084 4279 '@sec-ant/readable-stream': 0.4.1 3085 4280 is-stream: 4.0.1 4281 + 4282 + get-tsconfig@4.13.6: 4283 + dependencies: 4284 + resolve-pkg-maps: 1.0.0 3086 4285 3087 4286 glob-parent@5.1.2: 3088 4287 dependencies: ··· 3186 4385 3187 4386 isexe@2.0.0: {} 3188 4387 3189 - isexe@3.1.4: {} 4388 + isexe@3.1.5: {} 3190 4389 3191 4390 jiti@2.6.1: {} 3192 4391 ··· 3217 4416 kleur@3.0.3: {} 3218 4417 3219 4418 kleur@4.1.5: {} 4419 + 4420 + kysely@0.28.11: {} 3220 4421 3221 4422 lightningcss-android-arm64@1.30.2: 3222 4423 optional: true ··· 3315 4516 3316 4517 ms@2.1.3: {} 3317 4518 3318 - msw@2.12.9(@types/node@20.19.33)(typescript@5.9.3): 4519 + msw@2.12.9(@types/node@25.2.2)(typescript@5.9.3): 3319 4520 dependencies: 3320 - '@inquirer/confirm': 5.1.21(@types/node@20.19.33) 4521 + '@inquirer/confirm': 5.1.21(@types/node@25.2.2) 3321 4522 '@mswjs/interceptors': 0.41.2 3322 4523 '@open-draft/deferred-promise': 2.2.0 3323 4524 '@types/statuses': 2.0.6 ··· 3344 4545 3345 4546 nanoid@3.3.11: {} 3346 4547 4548 + nanostores@1.1.0: {} 4549 + 3347 4550 negotiator@1.0.0: {} 3348 4551 3349 - next-themes@0.4.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3): 4552 + next-themes@0.4.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4): 3350 4553 dependencies: 3351 - react: 19.2.3 3352 - react-dom: 19.2.3(react@19.2.3) 4554 + react: 19.2.4 4555 + react-dom: 19.2.4(react@19.2.4) 3353 4556 3354 - next@16.1.6(@babel/core@7.29.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3): 4557 + next@16.1.6(@babel/core@7.29.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4): 3355 4558 dependencies: 3356 4559 '@next/env': 16.1.6 3357 4560 '@swc/helpers': 0.5.15 3358 4561 baseline-browser-mapping: 2.9.19 3359 4562 caniuse-lite: 1.0.30001769 3360 4563 postcss: 8.4.31 3361 - react: 19.2.3 3362 - react-dom: 19.2.3(react@19.2.3) 3363 - styled-jsx: 5.1.6(@babel/core@7.29.0)(react@19.2.3) 4564 + react: 19.2.4 4565 + react-dom: 19.2.4(react@19.2.4) 4566 + styled-jsx: 5.1.6(@babel/core@7.29.0)(react@19.2.4) 3364 4567 optionalDependencies: 3365 4568 '@next/swc-darwin-arm64': 16.1.6 3366 4569 '@next/swc-darwin-x64': 16.1.6 ··· 3467 4670 3468 4671 path-to-regexp@8.3.0: {} 3469 4672 4673 + pg-int8@1.0.1: {} 4674 + 4675 + pg-protocol@1.11.0: {} 4676 + 4677 + pg-types@2.2.0: 4678 + dependencies: 4679 + pg-int8: 1.0.1 4680 + postgres-array: 2.0.0 4681 + postgres-bytea: 1.0.1 4682 + postgres-date: 1.0.7 4683 + postgres-interval: 1.2.0 4684 + 3470 4685 picocolors@1.1.1: {} 3471 4686 3472 4687 picomatch@2.3.1: {} ··· 3492 4707 picocolors: 1.1.1 3493 4708 source-map-js: 1.2.1 3494 4709 4710 + postgres-array@2.0.0: {} 4711 + 4712 + postgres-bytea@1.0.1: {} 4713 + 4714 + postgres-date@1.0.7: {} 4715 + 4716 + postgres-interval@1.2.0: 4717 + dependencies: 4718 + xtend: 4.0.2 4719 + 3495 4720 powershell-utils@0.1.0: {} 3496 4721 3497 4722 pretty-ms@9.3.0: ··· 3523 4748 iconv-lite: 0.7.2 3524 4749 unpipe: 1.0.0 3525 4750 3526 - react-dom@19.2.3(react@19.2.3): 4751 + react-dom@19.2.4(react@19.2.4): 3527 4752 dependencies: 3528 - react: 19.2.3 4753 + react: 19.2.4 3529 4754 scheduler: 0.27.0 3530 4755 3531 - react@19.2.3: {} 4756 + react@19.2.4: {} 3532 4757 3533 4758 recast@0.23.11: 3534 4759 dependencies: ··· 3546 4771 3547 4772 resolve-from@4.0.0: {} 3548 4773 4774 + resolve-pkg-maps@1.0.0: {} 4775 + 3549 4776 restore-cursor@5.1.0: 3550 4777 dependencies: 3551 4778 onetime: 7.0.0 ··· 3554 4781 rettime@0.10.1: {} 3555 4782 3556 4783 reusify@1.1.0: {} 4784 + 4785 + rou3@0.7.12: {} 3557 4786 3558 4787 router@2.2.0: 3559 4788 dependencies: ··· 3605 4834 transitivePeerDependencies: 3606 4835 - supports-color 3607 4836 4837 + set-cookie-parser@2.7.2: {} 4838 + 3608 4839 setprototypeof@1.2.0: {} 3609 4840 3610 - shadcn@3.8.4(@types/node@20.19.33)(typescript@5.9.3): 4841 + shadcn@3.8.4(@types/node@25.2.2)(typescript@5.9.3): 3611 4842 dependencies: 3612 4843 '@antfu/ni': 25.0.0 3613 4844 '@babel/core': 7.29.0 ··· 3629 4860 fuzzysort: 3.1.0 3630 4861 https-proxy-agent: 7.0.6 3631 4862 kleur: 4.1.5 3632 - msw: 2.12.9(@types/node@20.19.33)(typescript@5.9.3) 4863 + msw: 2.12.9(@types/node@25.2.2)(typescript@5.9.3) 3633 4864 node-fetch: 3.3.2 3634 4865 open: 11.0.0 3635 4866 ora: 8.2.0 ··· 3725 4956 3726 4957 source-map-js@1.2.1: {} 3727 4958 4959 + source-map-support@0.5.21: 4960 + dependencies: 4961 + buffer-from: 1.1.2 4962 + source-map: 0.6.1 4963 + 3728 4964 source-map@0.6.1: {} 3729 4965 3730 4966 statuses@2.0.2: {} ··· 3765 5001 3766 5002 strip-final-newline@4.0.0: {} 3767 5003 3768 - styled-jsx@5.1.6(@babel/core@7.29.0)(react@19.2.3): 5004 + styled-jsx@5.1.6(@babel/core@7.29.0)(react@19.2.4): 3769 5005 dependencies: 3770 5006 client-only: 0.0.1 3771 - react: 19.2.3 5007 + react: 19.2.4 3772 5008 optionalDependencies: 3773 5009 '@babel/core': 7.29.0 3774 5010 ··· 3786 5022 3787 5023 tinyexec@1.0.2: {} 3788 5024 3789 - tldts-core@7.0.22: {} 5025 + tldts-core@7.0.23: {} 3790 5026 3791 - tldts@7.0.22: 5027 + tldts@7.0.23: 3792 5028 dependencies: 3793 - tldts-core: 7.0.22 5029 + tldts-core: 7.0.23 3794 5030 3795 5031 to-regex-range@5.0.1: 3796 5032 dependencies: ··· 3800 5036 3801 5037 tough-cookie@6.0.0: 3802 5038 dependencies: 3803 - tldts: 7.0.22 5039 + tldts: 7.0.23 3804 5040 3805 5041 ts-morph@26.0.0: 3806 5042 dependencies: ··· 3815 5051 3816 5052 tslib@2.8.1: {} 3817 5053 5054 + tsx@4.21.0: 5055 + dependencies: 5056 + esbuild: 0.27.3 5057 + get-tsconfig: 4.13.6 5058 + optionalDependencies: 5059 + fsevents: 2.3.3 5060 + 3818 5061 tw-animate-css@1.4.0: {} 3819 5062 3820 5063 type-fest@5.4.4: ··· 3831 5074 3832 5075 undici-types@6.21.0: {} 3833 5076 5077 + undici-types@7.16.0: {} 5078 + 3834 5079 unicorn-magic@0.3.0: {} 3835 5080 3836 5081 universalify@2.0.1: {} ··· 3845 5090 escalade: 3.2.0 3846 5091 picocolors: 1.1.1 3847 5092 3848 - use-sync-external-store@1.6.0(react@19.2.3): 5093 + use-sync-external-store@1.6.0(react@19.2.4): 3849 5094 dependencies: 3850 - react: 19.2.3 5095 + react: 19.2.4 3851 5096 3852 5097 util-deprecate@1.0.2: {} 3853 5098 ··· 3863 5108 3864 5109 which@4.0.0: 3865 5110 dependencies: 3866 - isexe: 3.1.4 5111 + isexe: 3.1.5 3867 5112 3868 5113 wrap-ansi@6.2.0: 3869 5114 dependencies: ··· 3883 5128 dependencies: 3884 5129 is-wsl: 3.1.0 3885 5130 powershell-utils: 0.1.0 5131 + 5132 + xtend@4.0.2: {} 3886 5133 3887 5134 y18n@5.0.8: {} 3888 5135 ··· 3909 5156 zod: 3.25.76 3910 5157 3911 5158 zod@3.25.76: {} 5159 + 5160 + zod@4.3.6: {}
+4
src/app/api/auth/[...all]/route.ts
··· 1 + import { toNextJsHandler } from "better-auth/next-js"; 2 + import { auth } from "@/lib/auth"; 3 + 4 + export const { POST, GET } = toNextJsHandler(auth);
+4 -4
src/app/auth/page.tsx
··· 21 21 <FieldGroup> 22 22 <div className="flex flex-col items-center gap-2"> 23 23 <HugeiconsIcon icon={TicketStarIcon} className="size-6" /> 24 - <h1 className="text-xl font-bold">Welcome to Vouch.</h1> 24 + <h1 className="text-xl font-bold">Welcome to Vouch</h1> 25 25 <FieldDescription> 26 - Sign in to your account to continue. 26 + Sign in to continue 27 27 </FieldDescription> 28 28 </div> 29 29 <Field> ··· 51 51 </Field> 52 52 </FieldGroup> 53 53 </form> 54 - {/* <FieldDescription className="px-6 text-center"> 54 + <FieldDescription className="px-6 text-center"> 55 55 By clicking continue, you agree to our <a href="#">Terms of Service</a> and <a href="#">Privacy Policy</a>. 56 - </FieldDescription> */} 56 + </FieldDescription> 57 57 </div> 58 58 ); 59 59 }
+94
src/db/auth-schema.ts
··· 1 + import { relations } from "drizzle-orm"; 2 + import { pgTable, text, timestamp, boolean, index } from "drizzle-orm/pg-core"; 3 + 4 + export const user = pgTable("user", { 5 + id: text("id").primaryKey(), 6 + name: text("name").notNull(), 7 + email: text("email").notNull().unique(), 8 + emailVerified: boolean("email_verified").default(false).notNull(), 9 + image: text("image"), 10 + createdAt: timestamp("created_at").defaultNow().notNull(), 11 + updatedAt: timestamp("updated_at") 12 + .defaultNow() 13 + .$onUpdate(() => /* @__PURE__ */ new Date()) 14 + .notNull(), 15 + isAnonymous: boolean("is_anonymous").default(false), 16 + }); 17 + 18 + export const session = pgTable( 19 + "session", 20 + { 21 + id: text("id").primaryKey(), 22 + expiresAt: timestamp("expires_at").notNull(), 23 + token: text("token").notNull().unique(), 24 + createdAt: timestamp("created_at").defaultNow().notNull(), 25 + updatedAt: timestamp("updated_at") 26 + .$onUpdate(() => /* @__PURE__ */ new Date()) 27 + .notNull(), 28 + ipAddress: text("ip_address"), 29 + userAgent: text("user_agent"), 30 + userId: text("user_id") 31 + .notNull() 32 + .references(() => user.id, { onDelete: "cascade" }), 33 + }, 34 + (table) => [index("session_userId_idx").on(table.userId)], 35 + ); 36 + 37 + export const account = pgTable( 38 + "account", 39 + { 40 + id: text("id").primaryKey(), 41 + accountId: text("account_id").notNull(), 42 + providerId: text("provider_id").notNull(), 43 + userId: text("user_id") 44 + .notNull() 45 + .references(() => user.id, { onDelete: "cascade" }), 46 + accessToken: text("access_token"), 47 + refreshToken: text("refresh_token"), 48 + idToken: text("id_token"), 49 + accessTokenExpiresAt: timestamp("access_token_expires_at"), 50 + refreshTokenExpiresAt: timestamp("refresh_token_expires_at"), 51 + scope: text("scope"), 52 + password: text("password"), 53 + createdAt: timestamp("created_at").defaultNow().notNull(), 54 + updatedAt: timestamp("updated_at") 55 + .$onUpdate(() => /* @__PURE__ */ new Date()) 56 + .notNull(), 57 + }, 58 + (table) => [index("account_userId_idx").on(table.userId)], 59 + ); 60 + 61 + export const verification = pgTable( 62 + "verification", 63 + { 64 + id: text("id").primaryKey(), 65 + identifier: text("identifier").notNull(), 66 + value: text("value").notNull(), 67 + expiresAt: timestamp("expires_at").notNull(), 68 + createdAt: timestamp("created_at").defaultNow().notNull(), 69 + updatedAt: timestamp("updated_at") 70 + .defaultNow() 71 + .$onUpdate(() => /* @__PURE__ */ new Date()) 72 + .notNull(), 73 + }, 74 + (table) => [index("verification_identifier_idx").on(table.identifier)], 75 + ); 76 + 77 + export const userRelations = relations(user, ({ many }) => ({ 78 + sessions: many(session), 79 + accounts: many(account), 80 + })); 81 + 82 + export const sessionRelations = relations(session, ({ one }) => ({ 83 + user: one(user, { 84 + fields: [session.userId], 85 + references: [user.id], 86 + }), 87 + })); 88 + 89 + export const accountRelations = relations(account, ({ one }) => ({ 90 + user: one(user, { 91 + fields: [account.userId], 92 + references: [user.id], 93 + }), 94 + }));
+12
src/db/schema.ts
··· 1 + import { integer, pgTable, text, varchar } from "drizzle-orm/pg-core"; 2 + import { user } from "./auth-schema"; 3 + 4 + export const like = pgTable("like", { 5 + id: integer().primaryKey().generatedAlwaysAsIdentity(), 6 + userId: text() 7 + .notNull() 8 + .references(() => user.id), 9 + slug: varchar().notNull(), 10 + }); 11 + 12 + export * from "./auth-schema";
+7
src/lib/auth-client.ts
··· 1 + import { anonymousClient } from "better-auth/client/plugins"; 2 + import { createAuthClient } from "better-auth/react"; 3 + 4 + export const authClient = createAuthClient({ 5 + baseURL: process.env.NEXT_PUBLIC_BETTER_AUTH_URL, 6 + plugins: [anonymousClient()], 7 + });
+14
src/lib/auth.ts
··· 1 + import { betterAuth } from "better-auth"; 2 + import { drizzleAdapter } from "better-auth/adapters/drizzle"; 3 + import { anonymous } from "better-auth/plugins"; 4 + 5 + import * as schema from "@/db/schema"; 6 + import { db } from "@/lib/db"; 7 + 8 + export const auth = betterAuth({ 9 + database: drizzleAdapter(db, { 10 + provider: "pg", 11 + schema, 12 + }), 13 + plugins: [anonymous()], 14 + });
+8
src/lib/db.ts
··· 1 + import { drizzle } from "drizzle-orm/neon-http"; 2 + 3 + import * as schema from "@/db/schema"; 4 + 5 + const connection = new URL(process.env.DATABASE_URL!); 6 + connection.pathname = "vouch"; 7 + 8 + export const db = drizzle(connection.toString(), { schema });
+46
src/lib/like.ts
··· 1 + "use server"; 2 + 3 + import { and, count, eq } from "drizzle-orm"; 4 + import { headers } from "next/headers"; 5 + 6 + import { like } from "@/db/schema"; 7 + import { auth } from "@/lib/auth"; 8 + import { db } from "@/lib/db"; 9 + 10 + async function getUserId() { 11 + const data = await auth.api.getSession({ headers: await headers() }); 12 + return data?.user.id ?? null; 13 + } 14 + 15 + export async function isLiked(slug: string) { 16 + const userId = await getUserId(); 17 + if (!userId) return false; 18 + 19 + const existing = await db.query.like.findFirst({ 20 + where: and(eq(like.userId, userId), eq(like.slug, slug)), 21 + columns: { id: true }, 22 + }); 23 + 24 + return !!existing; 25 + } 26 + 27 + export async function toggleLike(slug: string) { 28 + const userId = await getUserId(); 29 + if (!userId) return; 30 + 31 + const deleted = await db 32 + .delete(like) 33 + .where(and(eq(like.userId, userId), eq(like.slug, slug))) 34 + .returning({ id: like.id }); 35 + 36 + if (deleted.length === 0) 37 + await db.insert(like).values({ slug, userId }).onConflictDoNothing(); 38 + } 39 + 40 + export async function getlikeCount(slug: string) { 41 + const res = await db 42 + .select({ value: count() }) 43 + .from(like) 44 + .where(eq(like.slug, slug)); 45 + return res[0]?.value ?? 0; 46 + }