mirror your GitHub repos to tangled.org automatically
1

Configure Feed

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

feat: add neon postgres and drizzle with initial schema

+1723 -107
+14
drizzle.config.ts
··· 1 + import process from 'node:process' 2 + import { defineConfig } from 'drizzle-kit' 3 + 4 + export default defineConfig({ 5 + dialect: 'postgresql', 6 + schema: './server/db/schema.ts', 7 + out: './server/db/migrations', 8 + dbCredentials: { 9 + url: process.env.NUXT_DATABASE_URL ?? '', 10 + }, 11 + casing: 'snake_case', 12 + strict: true, 13 + verbose: true, 14 + })
+4 -1
nuxt.config.ts
··· 9 9 '@nuxt/test-utils', 10 10 ], 11 11 devtools: { enabled: true }, 12 + runtimeConfig: { 13 + databaseUrl: '', 14 + }, 12 15 typescript: { 13 16 nodeTsConfig: { 14 17 include: ['../vite.config.ts'], 15 - } 18 + }, 16 19 }, 17 20 app: { 18 21 head: {
+6
package.json
··· 17 17 "generate": "nuxt generate", 18 18 "preview": "nuxt preview", 19 19 "postinstall": "nuxt prepare && simple-git-hooks", 20 + "db:generate": "drizzle-kit generate", 21 + "db:migrate": "drizzle-kit migrate", 22 + "db:studio": "drizzle-kit studio", 20 23 "test:types": "vue-tsc -b --noEmit", 21 24 "test": "vp test", 22 25 "test:watch": "vp test watch", ··· 28 31 "test:browser:update": "docker run --rm --network host -v $(pwd):/work/ -v /tmp/playwright-node-modules:/work/node_modules -w /work/ -it mcr.microsoft.com/playwright:v1.59.1-noble bash -c 'corepack enable && pnpm i && pnpm playwright test test/browser --update-snapshots'" 29 32 }, 30 33 "dependencies": { 34 + "@neondatabase/serverless": "^1.1.0", 31 35 "@nuxt/fonts": "^0.14.0", 32 36 "@nuxt/image": "^2.0.0", 33 37 "@nuxt/scripts": "^1.0.6", 34 38 "@nuxtjs/html-validator": "^2.1.0", 39 + "drizzle-orm": "^0.45.2", 35 40 "nuxt": "^4.4.4", 36 41 "nuxt-og-image": "^6.4.11", 37 42 "rolldown": "^1.0.0-rc.18", ··· 45 50 "@stylistic/eslint-plugin": "^5.10.0", 46 51 "@vitest/coverage-v8": "^4.1.5", 47 52 "@vue/test-utils": "2.4.10", 53 + "drizzle-kit": "^0.31.10", 48 54 "happy-dom": "20.9.0", 49 55 "nano-staged": "^1.0.2", 50 56 "playwright-core": "^1.59.1",
+775 -106
pnpm-lock.yaml
··· 12 12 13 13 .: 14 14 dependencies: 15 + '@neondatabase/serverless': 16 + specifier: ^1.1.0 17 + version: 1.1.0 15 18 '@nuxt/fonts': 16 19 specifier: ^0.14.0 17 - version: 0.14.0(db0@0.3.4)(ioredis@5.10.1)(magicast@0.5.2)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4)) 20 + version: 0.14.0(db0@0.3.4(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0)))(ioredis@5.10.1)(magicast@0.5.2)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4)) 18 21 '@nuxt/image': 19 22 specifier: ^2.0.0 20 - version: 2.0.0(db0@0.3.4)(ioredis@5.10.1)(magicast@0.5.2)(srvx@0.11.15) 23 + version: 2.0.0(db0@0.3.4(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0)))(ioredis@5.10.1)(magicast@0.5.2)(srvx@0.11.15) 21 24 '@nuxt/scripts': 22 25 specifier: ^1.0.6 23 - version: 1.0.6(@unhead/vue@2.1.13(vue@3.5.33(typescript@6.0.3)))(db0@0.3.4)(ioredis@5.10.1)(magicast@0.5.2)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(vue@3.5.33(typescript@6.0.3)) 26 + version: 1.0.6(@unhead/vue@2.1.13(vue@3.5.33(typescript@6.0.3)))(db0@0.3.4(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0)))(ioredis@5.10.1)(magicast@0.5.2)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4))(vue@3.5.33(typescript@6.0.3)) 24 27 '@nuxtjs/html-validator': 25 28 specifier: ^2.1.0 26 29 version: 2.1.0(@voidzero-dev/vite-plus-test@0.1.20)(magicast@0.5.2) 30 + drizzle-orm: 31 + specifier: ^0.45.2 32 + version: 0.45.2(@neondatabase/serverless@1.1.0) 27 33 nuxt: 28 34 specifier: ^4.4.4 29 - version: 4.4.4(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@parcel/watcher@2.5.6)(@types/node@25.6.0)(@vue/compiler-sfc@3.5.33)(cac@6.7.14)(db0@0.3.4)(esbuild@0.28.0)(eslint@10.3.0(jiti@2.6.1))(ioredis@5.10.1)(magicast@0.5.2)(optionator@0.9.4)(oxlint@1.61.0(oxlint-tsgolint@0.22.0))(rolldown@1.0.0-rc.18)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.18)(rollup@4.60.2))(rollup@4.60.2)(srvx@0.11.15)(terser@5.46.2)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(vue-tsc@3.2.7(typescript@6.0.3))(yaml@2.8.4) 35 + version: 4.4.4(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@parcel/watcher@2.5.6)(@types/node@25.6.0)(@vue/compiler-sfc@3.5.33)(cac@6.7.14)(db0@0.3.4(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0)))(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0))(esbuild@0.28.0)(eslint@10.3.0(jiti@2.6.1))(ioredis@5.10.1)(magicast@0.5.2)(optionator@0.9.4)(oxlint@1.61.0(oxlint-tsgolint@0.22.0))(rolldown@1.0.0-rc.18)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.18)(rollup@4.60.2))(rollup@4.60.2)(srvx@0.11.15)(terser@5.46.2)(tsx@4.21.0)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4))(vue-tsc@3.2.7(typescript@6.0.3))(yaml@2.8.4) 30 36 nuxt-og-image: 31 37 specifier: ^6.4.11 32 - version: 6.4.11(36817eef02f5946d0e9e065b544e9114) 38 + version: 6.4.11(ea4a24142c8db751653c3d93ffc3a1c4) 33 39 rolldown: 34 40 specifier: ^1.0.0-rc.18 35 41 version: 1.0.0-rc.18 36 42 vite-plus: 37 43 specifier: 0.1.20 38 - version: 0.1.20(@types/node@25.6.0)(@vitest/coverage-v8@4.1.5)(esbuild@0.28.0)(happy-dom@20.9.0)(jiti@2.6.1)(terser@5.46.2)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(yaml@2.8.4) 44 + version: 0.1.20(@types/node@25.6.0)(@vitest/coverage-v8@4.1.5)(esbuild@0.28.0)(happy-dom@20.9.0)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4))(yaml@2.8.4) 39 45 vue: 40 46 specifier: 3.5.33 41 47 version: 3.5.33(typescript@6.0.3) ··· 45 51 devDependencies: 46 52 '@nuxt/test-utils': 47 53 specifier: 4.0.3 48 - version: 4.0.3(@playwright/test@1.59.1)(@voidzero-dev/vite-plus-test@0.1.20)(@vue/test-utils@2.4.10(@vue/compiler-dom@3.5.33)(@vue/server-renderer@3.5.33(vue@3.5.33(typescript@6.0.3)))(vue@3.5.33(typescript@6.0.3)))(crossws@0.4.5(srvx@0.11.15))(happy-dom@20.9.0)(magicast@0.5.2)(playwright-core@1.59.1)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4)) 54 + version: 4.0.3(@playwright/test@1.59.1)(@voidzero-dev/vite-plus-test@0.1.20)(@vue/test-utils@2.4.10(@vue/compiler-dom@3.5.33)(@vue/server-renderer@3.5.33(vue@3.5.33(typescript@6.0.3)))(vue@3.5.33(typescript@6.0.3)))(crossws@0.4.5(srvx@0.11.15))(happy-dom@20.9.0)(magicast@0.5.2)(playwright-core@1.59.1)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4)) 49 55 '@playwright/test': 50 56 specifier: 1.59.1 51 57 version: 1.59.1 ··· 58 64 '@vue/test-utils': 59 65 specifier: 2.4.10 60 66 version: 2.4.10(@vue/compiler-dom@3.5.33)(@vue/server-renderer@3.5.33(vue@3.5.33(typescript@6.0.3)))(vue@3.5.33(typescript@6.0.3)) 67 + drizzle-kit: 68 + specifier: ^0.31.10 69 + version: 0.31.10 61 70 happy-dom: 62 71 specifier: 20.9.0 63 72 version: 20.9.0 ··· 75 84 version: 6.0.3 76 85 vitest: 77 86 specifier: npm:@voidzero-dev/vite-plus-test@0.1.20 78 - version: '@voidzero-dev/vite-plus-test@0.1.20(@types/node@25.6.0)(@vitest/coverage-v8@4.1.5)(esbuild@0.28.0)(happy-dom@20.9.0)(jiti@2.6.1)(terser@5.46.2)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(yaml@2.8.4)' 87 + version: '@voidzero-dev/vite-plus-test@0.1.20(@types/node@25.6.0)(@vitest/coverage-v8@4.1.5)(esbuild@0.28.0)(happy-dom@20.9.0)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4))(yaml@2.8.4)' 79 88 vue-tsc: 80 89 specifier: 3.2.7 81 90 version: 3.2.7(typescript@6.0.3) ··· 246 255 '@colordx/core@5.4.3': 247 256 resolution: {integrity: sha512-kIxYSfA5T8HXjav55UaaH/o/cKivF6jCCGIb8eqtcsfI46wsvlSiT8jMDyrl779qLec3c2c2oHBZo4oAhvbjrQ==} 248 257 258 + '@drizzle-team/brocli@0.10.2': 259 + resolution: {integrity: sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w==} 260 + 249 261 '@dxup/nuxt@0.4.1': 250 262 resolution: {integrity: sha512-gtYffW6OfWNvoLW+XD3Mx/K8uUq08PMGLYJoDxc92EzZAWqR0FhcR5iaLm5r/OxyGTKz+P5f5Y7Aoir9+SjYaw==} 251 263 peerDependencies: ··· 266 278 '@emnapi/wasi-threads@1.2.1': 267 279 resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} 268 280 281 + '@esbuild-kit/core-utils@3.3.2': 282 + resolution: {integrity: sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==} 283 + deprecated: 'Merged into tsx: https://tsx.is' 284 + 285 + '@esbuild-kit/esm-loader@2.6.5': 286 + resolution: {integrity: sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==} 287 + deprecated: 'Merged into tsx: https://tsx.is' 288 + 289 + '@esbuild/aix-ppc64@0.25.12': 290 + resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} 291 + engines: {node: '>=18'} 292 + cpu: [ppc64] 293 + os: [aix] 294 + 269 295 '@esbuild/aix-ppc64@0.27.7': 270 296 resolution: {integrity: sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==} 271 297 engines: {node: '>=18'} ··· 278 304 cpu: [ppc64] 279 305 os: [aix] 280 306 307 + '@esbuild/android-arm64@0.18.20': 308 + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} 309 + engines: {node: '>=12'} 310 + cpu: [arm64] 311 + os: [android] 312 + 313 + '@esbuild/android-arm64@0.25.12': 314 + resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} 315 + engines: {node: '>=18'} 316 + cpu: [arm64] 317 + os: [android] 318 + 281 319 '@esbuild/android-arm64@0.27.7': 282 320 resolution: {integrity: sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==} 283 321 engines: {node: '>=18'} ··· 290 328 cpu: [arm64] 291 329 os: [android] 292 330 331 + '@esbuild/android-arm@0.18.20': 332 + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} 333 + engines: {node: '>=12'} 334 + cpu: [arm] 335 + os: [android] 336 + 337 + '@esbuild/android-arm@0.25.12': 338 + resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} 339 + engines: {node: '>=18'} 340 + cpu: [arm] 341 + os: [android] 342 + 293 343 '@esbuild/android-arm@0.27.7': 294 344 resolution: {integrity: sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==} 295 345 engines: {node: '>=18'} ··· 302 352 cpu: [arm] 303 353 os: [android] 304 354 355 + '@esbuild/android-x64@0.18.20': 356 + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} 357 + engines: {node: '>=12'} 358 + cpu: [x64] 359 + os: [android] 360 + 361 + '@esbuild/android-x64@0.25.12': 362 + resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} 363 + engines: {node: '>=18'} 364 + cpu: [x64] 365 + os: [android] 366 + 305 367 '@esbuild/android-x64@0.27.7': 306 368 resolution: {integrity: sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==} 307 369 engines: {node: '>=18'} ··· 314 376 cpu: [x64] 315 377 os: [android] 316 378 379 + '@esbuild/darwin-arm64@0.18.20': 380 + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} 381 + engines: {node: '>=12'} 382 + cpu: [arm64] 383 + os: [darwin] 384 + 385 + '@esbuild/darwin-arm64@0.25.12': 386 + resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} 387 + engines: {node: '>=18'} 388 + cpu: [arm64] 389 + os: [darwin] 390 + 317 391 '@esbuild/darwin-arm64@0.27.7': 318 392 resolution: {integrity: sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==} 319 393 engines: {node: '>=18'} ··· 326 400 cpu: [arm64] 327 401 os: [darwin] 328 402 403 + '@esbuild/darwin-x64@0.18.20': 404 + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} 405 + engines: {node: '>=12'} 406 + cpu: [x64] 407 + os: [darwin] 408 + 409 + '@esbuild/darwin-x64@0.25.12': 410 + resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} 411 + engines: {node: '>=18'} 412 + cpu: [x64] 413 + os: [darwin] 414 + 329 415 '@esbuild/darwin-x64@0.27.7': 330 416 resolution: {integrity: sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==} 331 417 engines: {node: '>=18'} ··· 338 424 cpu: [x64] 339 425 os: [darwin] 340 426 427 + '@esbuild/freebsd-arm64@0.18.20': 428 + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} 429 + engines: {node: '>=12'} 430 + cpu: [arm64] 431 + os: [freebsd] 432 + 433 + '@esbuild/freebsd-arm64@0.25.12': 434 + resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} 435 + engines: {node: '>=18'} 436 + cpu: [arm64] 437 + os: [freebsd] 438 + 341 439 '@esbuild/freebsd-arm64@0.27.7': 342 440 resolution: {integrity: sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==} 343 441 engines: {node: '>=18'} ··· 350 448 cpu: [arm64] 351 449 os: [freebsd] 352 450 451 + '@esbuild/freebsd-x64@0.18.20': 452 + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} 453 + engines: {node: '>=12'} 454 + cpu: [x64] 455 + os: [freebsd] 456 + 457 + '@esbuild/freebsd-x64@0.25.12': 458 + resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} 459 + engines: {node: '>=18'} 460 + cpu: [x64] 461 + os: [freebsd] 462 + 353 463 '@esbuild/freebsd-x64@0.27.7': 354 464 resolution: {integrity: sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==} 355 465 engines: {node: '>=18'} ··· 362 472 cpu: [x64] 363 473 os: [freebsd] 364 474 475 + '@esbuild/linux-arm64@0.18.20': 476 + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} 477 + engines: {node: '>=12'} 478 + cpu: [arm64] 479 + os: [linux] 480 + 481 + '@esbuild/linux-arm64@0.25.12': 482 + resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} 483 + engines: {node: '>=18'} 484 + cpu: [arm64] 485 + os: [linux] 486 + 365 487 '@esbuild/linux-arm64@0.27.7': 366 488 resolution: {integrity: sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==} 367 489 engines: {node: '>=18'} ··· 374 496 cpu: [arm64] 375 497 os: [linux] 376 498 499 + '@esbuild/linux-arm@0.18.20': 500 + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} 501 + engines: {node: '>=12'} 502 + cpu: [arm] 503 + os: [linux] 504 + 505 + '@esbuild/linux-arm@0.25.12': 506 + resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} 507 + engines: {node: '>=18'} 508 + cpu: [arm] 509 + os: [linux] 510 + 377 511 '@esbuild/linux-arm@0.27.7': 378 512 resolution: {integrity: sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==} 379 513 engines: {node: '>=18'} ··· 386 520 cpu: [arm] 387 521 os: [linux] 388 522 523 + '@esbuild/linux-ia32@0.18.20': 524 + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} 525 + engines: {node: '>=12'} 526 + cpu: [ia32] 527 + os: [linux] 528 + 529 + '@esbuild/linux-ia32@0.25.12': 530 + resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} 531 + engines: {node: '>=18'} 532 + cpu: [ia32] 533 + os: [linux] 534 + 389 535 '@esbuild/linux-ia32@0.27.7': 390 536 resolution: {integrity: sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==} 391 537 engines: {node: '>=18'} ··· 398 544 cpu: [ia32] 399 545 os: [linux] 400 546 547 + '@esbuild/linux-loong64@0.18.20': 548 + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} 549 + engines: {node: '>=12'} 550 + cpu: [loong64] 551 + os: [linux] 552 + 553 + '@esbuild/linux-loong64@0.25.12': 554 + resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} 555 + engines: {node: '>=18'} 556 + cpu: [loong64] 557 + os: [linux] 558 + 401 559 '@esbuild/linux-loong64@0.27.7': 402 560 resolution: {integrity: sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==} 403 561 engines: {node: '>=18'} ··· 410 568 cpu: [loong64] 411 569 os: [linux] 412 570 571 + '@esbuild/linux-mips64el@0.18.20': 572 + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} 573 + engines: {node: '>=12'} 574 + cpu: [mips64el] 575 + os: [linux] 576 + 577 + '@esbuild/linux-mips64el@0.25.12': 578 + resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} 579 + engines: {node: '>=18'} 580 + cpu: [mips64el] 581 + os: [linux] 582 + 413 583 '@esbuild/linux-mips64el@0.27.7': 414 584 resolution: {integrity: sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==} 415 585 engines: {node: '>=18'} ··· 422 592 cpu: [mips64el] 423 593 os: [linux] 424 594 595 + '@esbuild/linux-ppc64@0.18.20': 596 + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} 597 + engines: {node: '>=12'} 598 + cpu: [ppc64] 599 + os: [linux] 600 + 601 + '@esbuild/linux-ppc64@0.25.12': 602 + resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} 603 + engines: {node: '>=18'} 604 + cpu: [ppc64] 605 + os: [linux] 606 + 425 607 '@esbuild/linux-ppc64@0.27.7': 426 608 resolution: {integrity: sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==} 427 609 engines: {node: '>=18'} ··· 434 616 cpu: [ppc64] 435 617 os: [linux] 436 618 619 + '@esbuild/linux-riscv64@0.18.20': 620 + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} 621 + engines: {node: '>=12'} 622 + cpu: [riscv64] 623 + os: [linux] 624 + 625 + '@esbuild/linux-riscv64@0.25.12': 626 + resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} 627 + engines: {node: '>=18'} 628 + cpu: [riscv64] 629 + os: [linux] 630 + 437 631 '@esbuild/linux-riscv64@0.27.7': 438 632 resolution: {integrity: sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==} 439 633 engines: {node: '>=18'} ··· 446 640 cpu: [riscv64] 447 641 os: [linux] 448 642 643 + '@esbuild/linux-s390x@0.18.20': 644 + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} 645 + engines: {node: '>=12'} 646 + cpu: [s390x] 647 + os: [linux] 648 + 649 + '@esbuild/linux-s390x@0.25.12': 650 + resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} 651 + engines: {node: '>=18'} 652 + cpu: [s390x] 653 + os: [linux] 654 + 449 655 '@esbuild/linux-s390x@0.27.7': 450 656 resolution: {integrity: sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==} 451 657 engines: {node: '>=18'} ··· 456 662 resolution: {integrity: sha512-SCfR0HN8CEEjnYnySJTd2cw0k9OHB/YFzt5zgJEwa+wL/T/raGWYMBqwDNAC6dqFKmJYZoQBRfHjgwLHGSrn3Q==} 457 663 engines: {node: '>=18'} 458 664 cpu: [s390x] 665 + os: [linux] 666 + 667 + '@esbuild/linux-x64@0.18.20': 668 + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} 669 + engines: {node: '>=12'} 670 + cpu: [x64] 671 + os: [linux] 672 + 673 + '@esbuild/linux-x64@0.25.12': 674 + resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} 675 + engines: {node: '>=18'} 676 + cpu: [x64] 459 677 os: [linux] 460 678 461 679 '@esbuild/linux-x64@0.27.7': ··· 470 688 cpu: [x64] 471 689 os: [linux] 472 690 691 + '@esbuild/netbsd-arm64@0.25.12': 692 + resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} 693 + engines: {node: '>=18'} 694 + cpu: [arm64] 695 + os: [netbsd] 696 + 473 697 '@esbuild/netbsd-arm64@0.27.7': 474 698 resolution: {integrity: sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==} 475 699 engines: {node: '>=18'} ··· 482 706 cpu: [arm64] 483 707 os: [netbsd] 484 708 709 + '@esbuild/netbsd-x64@0.18.20': 710 + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} 711 + engines: {node: '>=12'} 712 + cpu: [x64] 713 + os: [netbsd] 714 + 715 + '@esbuild/netbsd-x64@0.25.12': 716 + resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} 717 + engines: {node: '>=18'} 718 + cpu: [x64] 719 + os: [netbsd] 720 + 485 721 '@esbuild/netbsd-x64@0.27.7': 486 722 resolution: {integrity: sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==} 487 723 engines: {node: '>=18'} ··· 494 730 cpu: [x64] 495 731 os: [netbsd] 496 732 733 + '@esbuild/openbsd-arm64@0.25.12': 734 + resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} 735 + engines: {node: '>=18'} 736 + cpu: [arm64] 737 + os: [openbsd] 738 + 497 739 '@esbuild/openbsd-arm64@0.27.7': 498 740 resolution: {integrity: sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==} 499 741 engines: {node: '>=18'} ··· 506 748 cpu: [arm64] 507 749 os: [openbsd] 508 750 751 + '@esbuild/openbsd-x64@0.18.20': 752 + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} 753 + engines: {node: '>=12'} 754 + cpu: [x64] 755 + os: [openbsd] 756 + 757 + '@esbuild/openbsd-x64@0.25.12': 758 + resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} 759 + engines: {node: '>=18'} 760 + cpu: [x64] 761 + os: [openbsd] 762 + 509 763 '@esbuild/openbsd-x64@0.27.7': 510 764 resolution: {integrity: sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==} 511 765 engines: {node: '>=18'} ··· 518 772 cpu: [x64] 519 773 os: [openbsd] 520 774 775 + '@esbuild/openharmony-arm64@0.25.12': 776 + resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} 777 + engines: {node: '>=18'} 778 + cpu: [arm64] 779 + os: [openharmony] 780 + 521 781 '@esbuild/openharmony-arm64@0.27.7': 522 782 resolution: {integrity: sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==} 523 783 engines: {node: '>=18'} ··· 530 790 cpu: [arm64] 531 791 os: [openharmony] 532 792 793 + '@esbuild/sunos-x64@0.18.20': 794 + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} 795 + engines: {node: '>=12'} 796 + cpu: [x64] 797 + os: [sunos] 798 + 799 + '@esbuild/sunos-x64@0.25.12': 800 + resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} 801 + engines: {node: '>=18'} 802 + cpu: [x64] 803 + os: [sunos] 804 + 533 805 '@esbuild/sunos-x64@0.27.7': 534 806 resolution: {integrity: sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==} 535 807 engines: {node: '>=18'} ··· 542 814 cpu: [x64] 543 815 os: [sunos] 544 816 817 + '@esbuild/win32-arm64@0.18.20': 818 + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} 819 + engines: {node: '>=12'} 820 + cpu: [arm64] 821 + os: [win32] 822 + 823 + '@esbuild/win32-arm64@0.25.12': 824 + resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} 825 + engines: {node: '>=18'} 826 + cpu: [arm64] 827 + os: [win32] 828 + 545 829 '@esbuild/win32-arm64@0.27.7': 546 830 resolution: {integrity: sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==} 547 831 engines: {node: '>=18'} ··· 552 836 resolution: {integrity: sha512-Q9StnDmQ/enxnpxCCLSg0oo4+34B9TdXpuyPeTedN/6+iXBJ4J+zwfQI28u/Jl40nOYAxGoNi7mFP40RUtkmUA==} 553 837 engines: {node: '>=18'} 554 838 cpu: [arm64] 839 + os: [win32] 840 + 841 + '@esbuild/win32-ia32@0.18.20': 842 + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} 843 + engines: {node: '>=12'} 844 + cpu: [ia32] 845 + os: [win32] 846 + 847 + '@esbuild/win32-ia32@0.25.12': 848 + resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} 849 + engines: {node: '>=18'} 850 + cpu: [ia32] 555 851 os: [win32] 556 852 557 853 '@esbuild/win32-ia32@0.27.7': ··· 564 860 resolution: {integrity: sha512-zF3ag/gfiCe6U2iczcRzSYJKH1DCI+ByzSENHlM2FcDbEeo5Zd2C86Aq0tKUYAJJ1obRP84ymxIAksZUcdztHA==} 565 861 engines: {node: '>=18'} 566 862 cpu: [ia32] 863 + os: [win32] 864 + 865 + '@esbuild/win32-x64@0.18.20': 866 + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} 867 + engines: {node: '>=12'} 868 + cpu: [x64] 869 + os: [win32] 870 + 871 + '@esbuild/win32-x64@0.25.12': 872 + resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} 873 + engines: {node: '>=18'} 874 + cpu: [x64] 567 875 os: [win32] 568 876 569 877 '@esbuild/win32-x64@0.27.7': ··· 834 1142 peerDependencies: 835 1143 '@emnapi/core': ^1.7.1 836 1144 '@emnapi/runtime': ^1.7.1 1145 + 1146 + '@neondatabase/serverless@1.1.0': 1147 + resolution: {integrity: sha512-r3ZZhRjEcfEdKIZnoB1RusNgvHuaBRqfCzV4Gi+5A9yUX0S4HTws/ASWqt13wL4y4I+0rqsWGdA2w7EQXHi3+Q==} 1148 + engines: {node: '>=19.0.0'} 837 1149 838 1150 '@nodelib/fs.scandir@2.1.5': 839 1151 resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} ··· 3060 3372 resolution: {integrity: sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw==} 3061 3373 engines: {node: '>=12'} 3062 3374 3375 + drizzle-kit@0.31.10: 3376 + resolution: {integrity: sha512-7OZcmQUrdGI+DUNNsKBn1aW8qSoKuTH7d0mYgSP8bAzdFzKoovxEFnoGQp2dVs82EOJeYycqRtciopszwUf8bw==} 3377 + hasBin: true 3378 + 3379 + drizzle-orm@0.45.2: 3380 + resolution: {integrity: sha512-kY0BSaTNYWnoDMVoyY8uxmyHjpJW1geOmBMdSSicKo9CIIWkSxMIj2rkeSR51b8KAPB7m+qysjuHme5nKP+E5Q==} 3381 + peerDependencies: 3382 + '@aws-sdk/client-rds-data': '>=3' 3383 + '@cloudflare/workers-types': '>=4' 3384 + '@electric-sql/pglite': '>=0.2.0' 3385 + '@libsql/client': '>=0.10.0' 3386 + '@libsql/client-wasm': '>=0.10.0' 3387 + '@neondatabase/serverless': '>=0.10.0' 3388 + '@op-engineering/op-sqlite': '>=2' 3389 + '@opentelemetry/api': ^1.4.1 3390 + '@planetscale/database': '>=1.13' 3391 + '@prisma/client': '*' 3392 + '@tidbcloud/serverless': '*' 3393 + '@types/better-sqlite3': '*' 3394 + '@types/pg': '*' 3395 + '@types/sql.js': '*' 3396 + '@upstash/redis': '>=1.34.7' 3397 + '@vercel/postgres': '>=0.8.0' 3398 + '@xata.io/client': '*' 3399 + better-sqlite3: '>=7' 3400 + bun-types: '*' 3401 + expo-sqlite: '>=14.0.0' 3402 + gel: '>=2' 3403 + knex: '*' 3404 + kysely: '*' 3405 + mysql2: '>=2' 3406 + pg: '>=8' 3407 + postgres: '>=3' 3408 + prisma: '*' 3409 + sql.js: '>=1' 3410 + sqlite3: '>=5' 3411 + peerDependenciesMeta: 3412 + '@aws-sdk/client-rds-data': 3413 + optional: true 3414 + '@cloudflare/workers-types': 3415 + optional: true 3416 + '@electric-sql/pglite': 3417 + optional: true 3418 + '@libsql/client': 3419 + optional: true 3420 + '@libsql/client-wasm': 3421 + optional: true 3422 + '@neondatabase/serverless': 3423 + optional: true 3424 + '@op-engineering/op-sqlite': 3425 + optional: true 3426 + '@opentelemetry/api': 3427 + optional: true 3428 + '@planetscale/database': 3429 + optional: true 3430 + '@prisma/client': 3431 + optional: true 3432 + '@tidbcloud/serverless': 3433 + optional: true 3434 + '@types/better-sqlite3': 3435 + optional: true 3436 + '@types/pg': 3437 + optional: true 3438 + '@types/sql.js': 3439 + optional: true 3440 + '@upstash/redis': 3441 + optional: true 3442 + '@vercel/postgres': 3443 + optional: true 3444 + '@xata.io/client': 3445 + optional: true 3446 + better-sqlite3: 3447 + optional: true 3448 + bun-types: 3449 + optional: true 3450 + expo-sqlite: 3451 + optional: true 3452 + gel: 3453 + optional: true 3454 + knex: 3455 + optional: true 3456 + kysely: 3457 + optional: true 3458 + mysql2: 3459 + optional: true 3460 + pg: 3461 + optional: true 3462 + postgres: 3463 + optional: true 3464 + prisma: 3465 + optional: true 3466 + sql.js: 3467 + optional: true 3468 + sqlite3: 3469 + optional: true 3470 + 3063 3471 duplexer@0.1.2: 3064 3472 resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} 3065 3473 ··· 3113 3521 3114 3522 es-module-lexer@2.1.0: 3115 3523 resolution: {integrity: sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==} 3524 + 3525 + esbuild@0.18.20: 3526 + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} 3527 + engines: {node: '>=12'} 3528 + hasBin: true 3529 + 3530 + esbuild@0.25.12: 3531 + resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} 3532 + engines: {node: '>=18'} 3533 + hasBin: true 3116 3534 3117 3535 esbuild@0.27.7: 3118 3536 resolution: {integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==} ··· 3362 3780 get-stream@8.0.1: 3363 3781 resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} 3364 3782 engines: {node: '>=16'} 3783 + 3784 + get-tsconfig@4.14.0: 3785 + resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==} 3365 3786 3366 3787 giget@3.2.0: 3367 3788 resolution: {integrity: sha512-GvHTWcykIR/fP8cj8dMpuMMkvaeJfPvYnhq0oW+chSeIr+ldX21ifU2Ms6KBoyKZQZmVaUAAhQ2EZ68KJF8a7A==} ··· 4470 4891 resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 4471 4892 engines: {node: '>=8'} 4472 4893 4894 + resolve-pkg-maps@1.0.0: 4895 + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} 4896 + 4473 4897 resolve@1.22.12: 4474 4898 resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==} 4475 4899 engines: {node: '>= 0.4'} ··· 4774 5198 tslib@2.8.1: 4775 5199 resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} 4776 5200 5201 + tsx@4.21.0: 5202 + resolution: {integrity: sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==} 5203 + engines: {node: '>=18.0.0'} 5204 + hasBin: true 5205 + 4777 5206 type-check@0.4.0: 4778 5207 resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 4779 5208 engines: {node: '>= 0.8.0'} ··· 5412 5841 5413 5842 '@colordx/core@5.4.3': {} 5414 5843 5844 + '@drizzle-team/brocli@0.10.2': {} 5845 + 5415 5846 '@dxup/nuxt@0.4.1(magicast@0.5.2)(typescript@6.0.3)': 5416 5847 dependencies: 5417 5848 '@dxup/unimport': 0.1.2 ··· 5442 5873 tslib: 2.8.1 5443 5874 optional: true 5444 5875 5876 + '@esbuild-kit/core-utils@3.3.2': 5877 + dependencies: 5878 + esbuild: 0.18.20 5879 + source-map-support: 0.5.21 5880 + 5881 + '@esbuild-kit/esm-loader@2.6.5': 5882 + dependencies: 5883 + '@esbuild-kit/core-utils': 3.3.2 5884 + get-tsconfig: 4.14.0 5885 + 5886 + '@esbuild/aix-ppc64@0.25.12': 5887 + optional: true 5888 + 5445 5889 '@esbuild/aix-ppc64@0.27.7': 5446 5890 optional: true 5447 5891 5448 5892 '@esbuild/aix-ppc64@0.28.0': 5893 + optional: true 5894 + 5895 + '@esbuild/android-arm64@0.18.20': 5896 + optional: true 5897 + 5898 + '@esbuild/android-arm64@0.25.12': 5449 5899 optional: true 5450 5900 5451 5901 '@esbuild/android-arm64@0.27.7': 5452 5902 optional: true 5453 5903 5454 5904 '@esbuild/android-arm64@0.28.0': 5905 + optional: true 5906 + 5907 + '@esbuild/android-arm@0.18.20': 5908 + optional: true 5909 + 5910 + '@esbuild/android-arm@0.25.12': 5455 5911 optional: true 5456 5912 5457 5913 '@esbuild/android-arm@0.27.7': ··· 5460 5916 '@esbuild/android-arm@0.28.0': 5461 5917 optional: true 5462 5918 5919 + '@esbuild/android-x64@0.18.20': 5920 + optional: true 5921 + 5922 + '@esbuild/android-x64@0.25.12': 5923 + optional: true 5924 + 5463 5925 '@esbuild/android-x64@0.27.7': 5464 5926 optional: true 5465 5927 5466 5928 '@esbuild/android-x64@0.28.0': 5467 5929 optional: true 5468 5930 5931 + '@esbuild/darwin-arm64@0.18.20': 5932 + optional: true 5933 + 5934 + '@esbuild/darwin-arm64@0.25.12': 5935 + optional: true 5936 + 5469 5937 '@esbuild/darwin-arm64@0.27.7': 5470 5938 optional: true 5471 5939 5472 5940 '@esbuild/darwin-arm64@0.28.0': 5473 5941 optional: true 5474 5942 5943 + '@esbuild/darwin-x64@0.18.20': 5944 + optional: true 5945 + 5946 + '@esbuild/darwin-x64@0.25.12': 5947 + optional: true 5948 + 5475 5949 '@esbuild/darwin-x64@0.27.7': 5476 5950 optional: true 5477 5951 5478 5952 '@esbuild/darwin-x64@0.28.0': 5479 5953 optional: true 5480 5954 5955 + '@esbuild/freebsd-arm64@0.18.20': 5956 + optional: true 5957 + 5958 + '@esbuild/freebsd-arm64@0.25.12': 5959 + optional: true 5960 + 5481 5961 '@esbuild/freebsd-arm64@0.27.7': 5482 5962 optional: true 5483 5963 5484 5964 '@esbuild/freebsd-arm64@0.28.0': 5485 5965 optional: true 5486 5966 5967 + '@esbuild/freebsd-x64@0.18.20': 5968 + optional: true 5969 + 5970 + '@esbuild/freebsd-x64@0.25.12': 5971 + optional: true 5972 + 5487 5973 '@esbuild/freebsd-x64@0.27.7': 5488 5974 optional: true 5489 5975 5490 5976 '@esbuild/freebsd-x64@0.28.0': 5491 5977 optional: true 5492 5978 5979 + '@esbuild/linux-arm64@0.18.20': 5980 + optional: true 5981 + 5982 + '@esbuild/linux-arm64@0.25.12': 5983 + optional: true 5984 + 5493 5985 '@esbuild/linux-arm64@0.27.7': 5494 5986 optional: true 5495 5987 5496 5988 '@esbuild/linux-arm64@0.28.0': 5497 5989 optional: true 5498 5990 5991 + '@esbuild/linux-arm@0.18.20': 5992 + optional: true 5993 + 5994 + '@esbuild/linux-arm@0.25.12': 5995 + optional: true 5996 + 5499 5997 '@esbuild/linux-arm@0.27.7': 5500 5998 optional: true 5501 5999 5502 6000 '@esbuild/linux-arm@0.28.0': 5503 6001 optional: true 5504 6002 6003 + '@esbuild/linux-ia32@0.18.20': 6004 + optional: true 6005 + 6006 + '@esbuild/linux-ia32@0.25.12': 6007 + optional: true 6008 + 5505 6009 '@esbuild/linux-ia32@0.27.7': 5506 6010 optional: true 5507 6011 5508 6012 '@esbuild/linux-ia32@0.28.0': 5509 6013 optional: true 5510 6014 6015 + '@esbuild/linux-loong64@0.18.20': 6016 + optional: true 6017 + 6018 + '@esbuild/linux-loong64@0.25.12': 6019 + optional: true 6020 + 5511 6021 '@esbuild/linux-loong64@0.27.7': 5512 6022 optional: true 5513 6023 5514 6024 '@esbuild/linux-loong64@0.28.0': 6025 + optional: true 6026 + 6027 + '@esbuild/linux-mips64el@0.18.20': 6028 + optional: true 6029 + 6030 + '@esbuild/linux-mips64el@0.25.12': 5515 6031 optional: true 5516 6032 5517 6033 '@esbuild/linux-mips64el@0.27.7': 5518 6034 optional: true 5519 6035 5520 6036 '@esbuild/linux-mips64el@0.28.0': 6037 + optional: true 6038 + 6039 + '@esbuild/linux-ppc64@0.18.20': 6040 + optional: true 6041 + 6042 + '@esbuild/linux-ppc64@0.25.12': 5521 6043 optional: true 5522 6044 5523 6045 '@esbuild/linux-ppc64@0.27.7': ··· 5526 6048 '@esbuild/linux-ppc64@0.28.0': 5527 6049 optional: true 5528 6050 6051 + '@esbuild/linux-riscv64@0.18.20': 6052 + optional: true 6053 + 6054 + '@esbuild/linux-riscv64@0.25.12': 6055 + optional: true 6056 + 5529 6057 '@esbuild/linux-riscv64@0.27.7': 5530 6058 optional: true 5531 6059 5532 6060 '@esbuild/linux-riscv64@0.28.0': 5533 6061 optional: true 5534 6062 6063 + '@esbuild/linux-s390x@0.18.20': 6064 + optional: true 6065 + 6066 + '@esbuild/linux-s390x@0.25.12': 6067 + optional: true 6068 + 5535 6069 '@esbuild/linux-s390x@0.27.7': 5536 6070 optional: true 5537 6071 5538 6072 '@esbuild/linux-s390x@0.28.0': 5539 6073 optional: true 5540 6074 6075 + '@esbuild/linux-x64@0.18.20': 6076 + optional: true 6077 + 6078 + '@esbuild/linux-x64@0.25.12': 6079 + optional: true 6080 + 5541 6081 '@esbuild/linux-x64@0.27.7': 5542 6082 optional: true 5543 6083 5544 6084 '@esbuild/linux-x64@0.28.0': 5545 6085 optional: true 5546 6086 6087 + '@esbuild/netbsd-arm64@0.25.12': 6088 + optional: true 6089 + 5547 6090 '@esbuild/netbsd-arm64@0.27.7': 5548 6091 optional: true 5549 6092 5550 6093 '@esbuild/netbsd-arm64@0.28.0': 5551 6094 optional: true 5552 6095 6096 + '@esbuild/netbsd-x64@0.18.20': 6097 + optional: true 6098 + 6099 + '@esbuild/netbsd-x64@0.25.12': 6100 + optional: true 6101 + 5553 6102 '@esbuild/netbsd-x64@0.27.7': 5554 6103 optional: true 5555 6104 5556 6105 '@esbuild/netbsd-x64@0.28.0': 5557 6106 optional: true 5558 6107 6108 + '@esbuild/openbsd-arm64@0.25.12': 6109 + optional: true 6110 + 5559 6111 '@esbuild/openbsd-arm64@0.27.7': 5560 6112 optional: true 5561 6113 5562 6114 '@esbuild/openbsd-arm64@0.28.0': 5563 6115 optional: true 5564 6116 6117 + '@esbuild/openbsd-x64@0.18.20': 6118 + optional: true 6119 + 6120 + '@esbuild/openbsd-x64@0.25.12': 6121 + optional: true 6122 + 5565 6123 '@esbuild/openbsd-x64@0.27.7': 5566 6124 optional: true 5567 6125 5568 6126 '@esbuild/openbsd-x64@0.28.0': 5569 6127 optional: true 5570 6128 6129 + '@esbuild/openharmony-arm64@0.25.12': 6130 + optional: true 6131 + 5571 6132 '@esbuild/openharmony-arm64@0.27.7': 5572 6133 optional: true 5573 6134 5574 6135 '@esbuild/openharmony-arm64@0.28.0': 6136 + optional: true 6137 + 6138 + '@esbuild/sunos-x64@0.18.20': 6139 + optional: true 6140 + 6141 + '@esbuild/sunos-x64@0.25.12': 5575 6142 optional: true 5576 6143 5577 6144 '@esbuild/sunos-x64@0.27.7': 5578 6145 optional: true 5579 6146 5580 6147 '@esbuild/sunos-x64@0.28.0': 6148 + optional: true 6149 + 6150 + '@esbuild/win32-arm64@0.18.20': 6151 + optional: true 6152 + 6153 + '@esbuild/win32-arm64@0.25.12': 5581 6154 optional: true 5582 6155 5583 6156 '@esbuild/win32-arm64@0.27.7': ··· 5586 6159 '@esbuild/win32-arm64@0.28.0': 5587 6160 optional: true 5588 6161 6162 + '@esbuild/win32-ia32@0.18.20': 6163 + optional: true 6164 + 6165 + '@esbuild/win32-ia32@0.25.12': 6166 + optional: true 6167 + 5589 6168 '@esbuild/win32-ia32@0.27.7': 5590 6169 optional: true 5591 6170 5592 6171 '@esbuild/win32-ia32@0.28.0': 6172 + optional: true 6173 + 6174 + '@esbuild/win32-x64@0.18.20': 6175 + optional: true 6176 + 6177 + '@esbuild/win32-x64@0.25.12': 5593 6178 optional: true 5594 6179 5595 6180 '@esbuild/win32-x64@0.27.7': ··· 5815 6400 '@tybys/wasm-util': 0.10.2 5816 6401 optional: true 5817 6402 6403 + '@neondatabase/serverless@1.1.0': {} 6404 + 5818 6405 '@nodelib/fs.scandir@2.1.5': 5819 6406 dependencies: 5820 6407 '@nodelib/fs.stat': 2.0.5 ··· 5867 6454 5868 6455 '@nuxt/devalue@2.0.2': {} 5869 6456 5870 - '@nuxt/devtools-kit@2.7.0(magicast@0.5.2)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))': 6457 + '@nuxt/devtools-kit@2.7.0(magicast@0.5.2)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4))': 5871 6458 dependencies: 5872 6459 '@nuxt/kit': 3.21.4(magicast@0.5.2) 5873 6460 execa: 8.0.1 5874 - vite: 7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4) 6461 + vite: 7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4) 5875 6462 transitivePeerDependencies: 5876 6463 - magicast 5877 6464 5878 - '@nuxt/devtools-kit@3.2.4(magicast@0.5.2)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))': 6465 + '@nuxt/devtools-kit@3.2.4(magicast@0.5.2)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4))': 5879 6466 dependencies: 5880 6467 '@nuxt/kit': 4.4.4(magicast@0.5.2) 5881 6468 execa: 8.0.1 5882 - vite: 7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4) 6469 + vite: 7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4) 5883 6470 transitivePeerDependencies: 5884 6471 - magicast 5885 6472 5886 - '@nuxt/devtools-kit@4.0.0-alpha.3(magicast@0.5.2)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))': 6473 + '@nuxt/devtools-kit@4.0.0-alpha.3(magicast@0.5.2)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4))': 5887 6474 dependencies: 5888 6475 '@nuxt/kit': 4.4.4(magicast@0.5.2) 5889 6476 tinyexec: 1.1.2 5890 - vite: 7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4) 6477 + vite: 7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4) 5891 6478 transitivePeerDependencies: 5892 6479 - magicast 5893 6480 ··· 5902 6489 pkg-types: 2.3.1 5903 6490 semver: 7.7.4 5904 6491 5905 - '@nuxt/devtools@3.2.4(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(vue@3.5.33(typescript@6.0.3))': 6492 + '@nuxt/devtools@3.2.4(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4))(vue@3.5.33(typescript@6.0.3))': 5906 6493 dependencies: 5907 - '@nuxt/devtools-kit': 3.2.4(magicast@0.5.2)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4)) 6494 + '@nuxt/devtools-kit': 3.2.4(magicast@0.5.2)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4)) 5908 6495 '@nuxt/devtools-wizard': 3.2.4 5909 6496 '@nuxt/kit': 4.4.4(magicast@0.5.2) 5910 6497 '@vue/devtools-core': 8.1.1(vue@3.5.33(typescript@6.0.3)) ··· 5932 6519 sirv: 3.0.2 5933 6520 structured-clone-es: 2.0.0 5934 6521 tinyglobby: 0.2.16 5935 - vite: 7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4) 5936 - vite-plugin-inspect: 11.3.3(@nuxt/kit@4.4.4(magicast@0.5.2))(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4)) 5937 - vite-plugin-vue-tracer: 1.3.0(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(vue@3.5.33(typescript@6.0.3)) 6522 + vite: 7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4) 6523 + vite-plugin-inspect: 11.3.3(@nuxt/kit@4.4.4(magicast@0.5.2))(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4)) 6524 + vite-plugin-vue-tracer: 1.3.0(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4))(vue@3.5.33(typescript@6.0.3)) 5938 6525 which: 6.0.1 5939 6526 ws: 8.20.0 5940 6527 transitivePeerDependencies: ··· 5943 6530 - utf-8-validate 5944 6531 - vue 5945 6532 5946 - '@nuxt/fonts@0.14.0(db0@0.3.4)(ioredis@5.10.1)(magicast@0.5.2)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))': 6533 + '@nuxt/fonts@0.14.0(db0@0.3.4(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0)))(ioredis@5.10.1)(magicast@0.5.2)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4))': 5947 6534 dependencies: 5948 - '@nuxt/devtools-kit': 3.2.4(magicast@0.5.2)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4)) 6535 + '@nuxt/devtools-kit': 3.2.4(magicast@0.5.2)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4)) 5949 6536 '@nuxt/kit': 4.4.4(magicast@0.5.2) 5950 6537 consola: 3.4.2 5951 6538 defu: 6.1.7 5952 - fontless: 0.2.1(db0@0.3.4)(ioredis@5.10.1)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4)) 6539 + fontless: 0.2.1(db0@0.3.4(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0)))(ioredis@5.10.1)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4)) 5953 6540 h3: 1.15.11 5954 6541 magic-regexp: 0.10.0 5955 6542 ofetch: 1.5.1 ··· 5959 6546 ufo: 1.6.4 5960 6547 unifont: 0.7.4 5961 6548 unplugin: 3.0.0 5962 - unstorage: 1.17.5(db0@0.3.4)(ioredis@5.10.1) 6549 + unstorage: 1.17.5(db0@0.3.4(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0)))(ioredis@5.10.1) 5963 6550 transitivePeerDependencies: 5964 6551 - '@azure/app-configuration' 5965 6552 - '@azure/cosmos' ··· 5983 6570 - uploadthing 5984 6571 - vite 5985 6572 5986 - '@nuxt/image@2.0.0(db0@0.3.4)(ioredis@5.10.1)(magicast@0.5.2)(srvx@0.11.15)': 6573 + '@nuxt/image@2.0.0(db0@0.3.4(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0)))(ioredis@5.10.1)(magicast@0.5.2)(srvx@0.11.15)': 5987 6574 dependencies: 5988 6575 '@nuxt/kit': 4.4.4(magicast@0.5.2) 5989 6576 consola: 3.4.2 ··· 5996 6583 std-env: 3.10.0 5997 6584 ufo: 1.6.4 5998 6585 optionalDependencies: 5999 - ipx: 3.1.1(db0@0.3.4)(ioredis@5.10.1)(srvx@0.11.15) 6586 + ipx: 3.1.1(db0@0.3.4(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0)))(ioredis@5.10.1)(srvx@0.11.15) 6000 6587 transitivePeerDependencies: 6001 6588 - '@azure/app-configuration' 6002 6589 - '@azure/cosmos' ··· 6071 6658 transitivePeerDependencies: 6072 6659 - magicast 6073 6660 6074 - '@nuxt/nitro-server@4.4.4(@babel/core@7.29.0)(db0@0.3.4)(ioredis@5.10.1)(magicast@0.5.2)(nuxt@4.4.4(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@parcel/watcher@2.5.6)(@types/node@25.6.0)(@vue/compiler-sfc@3.5.33)(cac@6.7.14)(db0@0.3.4)(esbuild@0.28.0)(eslint@10.3.0(jiti@2.6.1))(ioredis@5.10.1)(magicast@0.5.2)(optionator@0.9.4)(oxlint@1.61.0(oxlint-tsgolint@0.22.0))(rolldown@1.0.0-rc.18)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.18)(rollup@4.60.2))(rollup@4.60.2)(srvx@0.11.15)(terser@5.46.2)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(vue-tsc@3.2.7(typescript@6.0.3))(yaml@2.8.4))(oxc-parser@0.128.0)(rolldown@1.0.0-rc.18)(srvx@0.11.15)(typescript@6.0.3)': 6661 + '@nuxt/nitro-server@4.4.4(@babel/core@7.29.0)(db0@0.3.4(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0)))(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0))(ioredis@5.10.1)(magicast@0.5.2)(nuxt@4.4.4(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@parcel/watcher@2.5.6)(@types/node@25.6.0)(@vue/compiler-sfc@3.5.33)(cac@6.7.14)(db0@0.3.4(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0)))(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0))(esbuild@0.28.0)(eslint@10.3.0(jiti@2.6.1))(ioredis@5.10.1)(magicast@0.5.2)(optionator@0.9.4)(oxlint@1.61.0(oxlint-tsgolint@0.22.0))(rolldown@1.0.0-rc.18)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.18)(rollup@4.60.2))(rollup@4.60.2)(srvx@0.11.15)(terser@5.46.2)(tsx@4.21.0)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4))(vue-tsc@3.2.7(typescript@6.0.3))(yaml@2.8.4))(oxc-parser@0.128.0)(rolldown@1.0.0-rc.18)(srvx@0.11.15)(typescript@6.0.3)': 6075 6662 dependencies: 6076 6663 '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0) 6077 6664 '@nuxt/devalue': 2.0.2 ··· 6089 6676 impound: 1.1.5 6090 6677 klona: 2.0.6 6091 6678 mocked-exports: 0.1.1 6092 - nitropack: 2.13.4(oxc-parser@0.128.0)(rolldown@1.0.0-rc.18)(srvx@0.11.15) 6093 - nuxt: 4.4.4(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@parcel/watcher@2.5.6)(@types/node@25.6.0)(@vue/compiler-sfc@3.5.33)(cac@6.7.14)(db0@0.3.4)(esbuild@0.28.0)(eslint@10.3.0(jiti@2.6.1))(ioredis@5.10.1)(magicast@0.5.2)(optionator@0.9.4)(oxlint@1.61.0(oxlint-tsgolint@0.22.0))(rolldown@1.0.0-rc.18)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.18)(rollup@4.60.2))(rollup@4.60.2)(srvx@0.11.15)(terser@5.46.2)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(vue-tsc@3.2.7(typescript@6.0.3))(yaml@2.8.4) 6679 + nitropack: 2.13.4(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0))(oxc-parser@0.128.0)(rolldown@1.0.0-rc.18)(srvx@0.11.15) 6680 + nuxt: 4.4.4(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@parcel/watcher@2.5.6)(@types/node@25.6.0)(@vue/compiler-sfc@3.5.33)(cac@6.7.14)(db0@0.3.4(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0)))(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0))(esbuild@0.28.0)(eslint@10.3.0(jiti@2.6.1))(ioredis@5.10.1)(magicast@0.5.2)(optionator@0.9.4)(oxlint@1.61.0(oxlint-tsgolint@0.22.0))(rolldown@1.0.0-rc.18)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.18)(rollup@4.60.2))(rollup@4.60.2)(srvx@0.11.15)(terser@5.46.2)(tsx@4.21.0)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4))(vue-tsc@3.2.7(typescript@6.0.3))(yaml@2.8.4) 6094 6681 nypm: 0.6.6 6095 6682 ohash: 2.0.11 6096 6683 pathe: 2.0.3 ··· 6098 6685 std-env: 4.1.0 6099 6686 ufo: 1.6.4 6100 6687 unctx: 2.5.0 6101 - unstorage: 1.17.5(db0@0.3.4)(ioredis@5.10.1) 6688 + unstorage: 1.17.5(db0@0.3.4(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0)))(ioredis@5.10.1) 6102 6689 vue: 3.5.33(typescript@6.0.3) 6103 6690 vue-bundle-renderer: 2.2.0 6104 6691 vue-devtools-stub: 0.1.0 ··· 6149 6736 pkg-types: 2.3.1 6150 6737 std-env: 4.1.0 6151 6738 6152 - '@nuxt/scripts@1.0.6(@unhead/vue@2.1.13(vue@3.5.33(typescript@6.0.3)))(db0@0.3.4)(ioredis@5.10.1)(magicast@0.5.2)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(vue@3.5.33(typescript@6.0.3))': 6739 + '@nuxt/scripts@1.0.6(@unhead/vue@2.1.13(vue@3.5.33(typescript@6.0.3)))(db0@0.3.4(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0)))(ioredis@5.10.1)(magicast@0.5.2)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4))(vue@3.5.33(typescript@6.0.3))': 6153 6740 dependencies: 6154 - '@nuxt/devtools-kit': 3.2.4(magicast@0.5.2)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4)) 6741 + '@nuxt/devtools-kit': 3.2.4(magicast@0.5.2)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4)) 6155 6742 '@nuxt/kit': 4.4.4(magicast@0.5.2) 6156 6743 '@unhead/vue': 2.1.13(vue@3.5.33(typescript@6.0.3)) 6157 6744 '@vueuse/core': 14.3.0(vue@3.5.33(typescript@6.0.3)) ··· 6171 6758 ufo: 1.6.4 6172 6759 ultrahtml: 1.6.0 6173 6760 unplugin: 3.0.0 6174 - unstorage: 1.17.5(db0@0.3.4)(ioredis@5.10.1) 6761 + unstorage: 1.17.5(db0@0.3.4(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0)))(ioredis@5.10.1) 6175 6762 valibot: 1.3.1(typescript@6.0.3) 6176 6763 transitivePeerDependencies: 6177 6764 - '@azure/app-configuration' ··· 6207 6794 rc9: 3.0.1 6208 6795 std-env: 4.1.0 6209 6796 6210 - '@nuxt/test-utils@4.0.3(@playwright/test@1.59.1)(@voidzero-dev/vite-plus-test@0.1.20)(@vue/test-utils@2.4.10(@vue/compiler-dom@3.5.33)(@vue/server-renderer@3.5.33(vue@3.5.33(typescript@6.0.3)))(vue@3.5.33(typescript@6.0.3)))(crossws@0.4.5(srvx@0.11.15))(happy-dom@20.9.0)(magicast@0.5.2)(playwright-core@1.59.1)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))': 6797 + '@nuxt/test-utils@4.0.3(@playwright/test@1.59.1)(@voidzero-dev/vite-plus-test@0.1.20)(@vue/test-utils@2.4.10(@vue/compiler-dom@3.5.33)(@vue/server-renderer@3.5.33(vue@3.5.33(typescript@6.0.3)))(vue@3.5.33(typescript@6.0.3)))(crossws@0.4.5(srvx@0.11.15))(happy-dom@20.9.0)(magicast@0.5.2)(playwright-core@1.59.1)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4))': 6211 6798 dependencies: 6212 6799 '@clack/prompts': 1.2.0 6213 - '@nuxt/devtools-kit': 2.7.0(magicast@0.5.2)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4)) 6800 + '@nuxt/devtools-kit': 2.7.0(magicast@0.5.2)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4)) 6214 6801 '@nuxt/kit': 3.21.4(magicast@0.5.2) 6215 6802 c12: 3.3.4(magicast@0.5.2) 6216 6803 consola: 3.4.2 ··· 6236 6823 tinyexec: 1.1.2 6237 6824 ufo: 1.6.4 6238 6825 unplugin: 3.0.0 6239 - vitest-environment-nuxt: 2.0.0(@playwright/test@1.59.1)(@voidzero-dev/vite-plus-test@0.1.20)(@vue/test-utils@2.4.10(@vue/compiler-dom@3.5.33)(@vue/server-renderer@3.5.33(vue@3.5.33(typescript@6.0.3)))(vue@3.5.33(typescript@6.0.3)))(crossws@0.4.5(srvx@0.11.15))(happy-dom@20.9.0)(magicast@0.5.2)(playwright-core@1.59.1)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4)) 6826 + vitest-environment-nuxt: 2.0.0(@playwright/test@1.59.1)(@voidzero-dev/vite-plus-test@0.1.20)(@vue/test-utils@2.4.10(@vue/compiler-dom@3.5.33)(@vue/server-renderer@3.5.33(vue@3.5.33(typescript@6.0.3)))(vue@3.5.33(typescript@6.0.3)))(crossws@0.4.5(srvx@0.11.15))(happy-dom@20.9.0)(magicast@0.5.2)(playwright-core@1.59.1)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4)) 6240 6827 vue: 3.5.33(typescript@6.0.3) 6241 6828 optionalDependencies: 6242 6829 '@playwright/test': 1.59.1 6243 6830 '@vue/test-utils': 2.4.10(@vue/compiler-dom@3.5.33)(@vue/server-renderer@3.5.33(vue@3.5.33(typescript@6.0.3)))(vue@3.5.33(typescript@6.0.3)) 6244 6831 happy-dom: 20.9.0 6245 6832 playwright-core: 1.59.1 6246 - vitest: '@voidzero-dev/vite-plus-test@0.1.20(@types/node@25.6.0)(@vitest/coverage-v8@4.1.5)(esbuild@0.28.0)(happy-dom@20.9.0)(jiti@2.6.1)(terser@5.46.2)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(yaml@2.8.4)' 6833 + vitest: '@voidzero-dev/vite-plus-test@0.1.20(@types/node@25.6.0)(@vitest/coverage-v8@4.1.5)(esbuild@0.28.0)(happy-dom@20.9.0)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4))(yaml@2.8.4)' 6247 6834 transitivePeerDependencies: 6248 6835 - crossws 6249 6836 - magicast 6250 6837 - typescript 6251 6838 - vite 6252 6839 6253 - ? '@nuxt/vite-builder@4.4.4(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@types/node@25.6.0)(esbuild@0.28.0)(eslint@10.3.0(jiti@2.6.1))(magicast@0.5.2)(nuxt@4.4.4(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@parcel/watcher@2.5.6)(@types/node@25.6.0)(@vue/compiler-sfc@3.5.33)(cac@6.7.14)(db0@0.3.4)(esbuild@0.28.0)(eslint@10.3.0(jiti@2.6.1))(ioredis@5.10.1)(magicast@0.5.2)(optionator@0.9.4)(oxlint@1.61.0(oxlint-tsgolint@0.22.0))(rolldown@1.0.0-rc.18)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.18)(rollup@4.60.2))(rollup@4.60.2)(srvx@0.11.15)(terser@5.46.2)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(vue-tsc@3.2.7(typescript@6.0.3))(yaml@2.8.4))(optionator@0.9.4)(oxlint@1.61.0(oxlint-tsgolint@0.22.0))(rolldown@1.0.0-rc.18)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.18)(rollup@4.60.2))(rollup@4.60.2)(terser@5.46.2)(typescript@6.0.3)(vue-tsc@3.2.7(typescript@6.0.3))(vue@3.5.33(typescript@6.0.3))(yaml@2.8.4)' 6254 - : dependencies: 6840 + '@nuxt/vite-builder@4.4.4(28264294504fc5bb34607a4fbd2f89d6)': 6841 + dependencies: 6255 6842 '@nuxt/kit': 4.4.4(magicast@0.5.2) 6256 6843 '@rollup/plugin-replace': 6.0.3(rollup@4.60.2) 6257 - '@vitejs/plugin-vue': 6.0.6(@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.46.2)(typescript@6.0.3)(yaml@2.8.4))(vue@3.5.33(typescript@6.0.3)) 6258 - '@vitejs/plugin-vue-jsx': 5.1.5(@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.46.2)(typescript@6.0.3)(yaml@2.8.4))(vue@3.5.33(typescript@6.0.3)) 6844 + '@vitejs/plugin-vue': 6.0.6(@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.4))(vue@3.5.33(typescript@6.0.3)) 6845 + '@vitejs/plugin-vue-jsx': 5.1.5(@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.4))(vue@3.5.33(typescript@6.0.3)) 6259 6846 autoprefixer: 10.5.0(postcss@8.5.13) 6260 6847 consola: 3.4.2 6261 6848 cssnano: 7.1.8(postcss@8.5.13) ··· 6268 6855 magic-string: 0.30.21 6269 6856 mlly: 1.8.2 6270 6857 mocked-exports: 0.1.1 6271 - nuxt: 4.4.4(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@parcel/watcher@2.5.6)(@types/node@25.6.0)(@vue/compiler-sfc@3.5.33)(cac@6.7.14)(db0@0.3.4)(esbuild@0.28.0)(eslint@10.3.0(jiti@2.6.1))(ioredis@5.10.1)(magicast@0.5.2)(optionator@0.9.4)(oxlint@1.61.0(oxlint-tsgolint@0.22.0))(rolldown@1.0.0-rc.18)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.18)(rollup@4.60.2))(rollup@4.60.2)(srvx@0.11.15)(terser@5.46.2)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(vue-tsc@3.2.7(typescript@6.0.3))(yaml@2.8.4) 6858 + nuxt: 4.4.4(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@parcel/watcher@2.5.6)(@types/node@25.6.0)(@vue/compiler-sfc@3.5.33)(cac@6.7.14)(db0@0.3.4(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0)))(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0))(esbuild@0.28.0)(eslint@10.3.0(jiti@2.6.1))(ioredis@5.10.1)(magicast@0.5.2)(optionator@0.9.4)(oxlint@1.61.0(oxlint-tsgolint@0.22.0))(rolldown@1.0.0-rc.18)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.18)(rollup@4.60.2))(rollup@4.60.2)(srvx@0.11.15)(terser@5.46.2)(tsx@4.21.0)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4))(vue-tsc@3.2.7(typescript@6.0.3))(yaml@2.8.4) 6272 6859 nypm: 0.6.6 6273 6860 pathe: 2.0.3 6274 6861 pkg-types: 2.3.1 ··· 6277 6864 std-env: 4.1.0 6278 6865 ufo: 1.6.4 6279 6866 unenv: 2.0.0-rc.24 6280 - vite: '@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.46.2)(typescript@6.0.3)(yaml@2.8.4)' 6281 - vite-node: 5.3.0(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.46.2)(typescript@6.0.3)(yaml@2.8.4) 6282 - vite-plugin-checker: 0.13.0(@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.46.2)(typescript@6.0.3)(yaml@2.8.4))(eslint@10.3.0(jiti@2.6.1))(optionator@0.9.4)(oxlint@1.61.0(oxlint-tsgolint@0.22.0))(typescript@6.0.3)(vue-tsc@3.2.7(typescript@6.0.3)) 6867 + vite: '@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.4)' 6868 + vite-node: 5.3.0(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.4) 6869 + vite-plugin-checker: 0.13.0(@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.4))(eslint@10.3.0(jiti@2.6.1))(optionator@0.9.4)(oxlint@1.61.0(oxlint-tsgolint@0.22.0))(typescript@6.0.3)(vue-tsc@3.2.7(typescript@6.0.3)) 6283 6870 vue: 3.5.33(typescript@6.0.3) 6284 6871 vue-bundle-renderer: 2.2.0 6285 6872 optionalDependencies: ··· 7085 7672 - rollup 7086 7673 - supports-color 7087 7674 7088 - '@vitejs/plugin-vue-jsx@5.1.5(@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.46.2)(typescript@6.0.3)(yaml@2.8.4))(vue@3.5.33(typescript@6.0.3))': 7675 + '@vitejs/plugin-vue-jsx@5.1.5(@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.4))(vue@3.5.33(typescript@6.0.3))': 7089 7676 dependencies: 7090 7677 '@babel/core': 7.29.0 7091 7678 '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0) 7092 7679 '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.29.0) 7093 7680 '@rolldown/pluginutils': 1.0.0-rc.18 7094 7681 '@vue/babel-plugin-jsx': 2.0.1(@babel/core@7.29.0) 7095 - vite: '@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.46.2)(typescript@6.0.3)(yaml@2.8.4)' 7682 + vite: '@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.4)' 7096 7683 vue: 3.5.33(typescript@6.0.3) 7097 7684 transitivePeerDependencies: 7098 7685 - supports-color 7099 7686 7100 - '@vitejs/plugin-vue@6.0.6(@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.46.2)(typescript@6.0.3)(yaml@2.8.4))(vue@3.5.33(typescript@6.0.3))': 7687 + '@vitejs/plugin-vue@6.0.6(@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.4))(vue@3.5.33(typescript@6.0.3))': 7101 7688 dependencies: 7102 7689 '@rolldown/pluginutils': 1.0.0-rc.13 7103 - vite: '@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.46.2)(typescript@6.0.3)(yaml@2.8.4)' 7690 + vite: '@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.4)' 7104 7691 vue: 3.5.33(typescript@6.0.3) 7105 7692 7106 - '@vitest/browser@4.1.5(@voidzero-dev/vite-plus-test@0.1.20)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))': 7693 + '@vitest/browser@4.1.5(@voidzero-dev/vite-plus-test@0.1.20)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4))': 7107 7694 dependencies: 7108 7695 '@blazediff/core': 1.9.1 7109 - '@vitest/mocker': 4.1.5(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4)) 7696 + '@vitest/mocker': 4.1.5(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4)) 7110 7697 '@vitest/utils': 4.1.5 7111 7698 magic-string: 0.30.21 7112 7699 pngjs: 7.0.0 7113 7700 sirv: 3.0.2 7114 7701 tinyrainbow: 3.1.0 7115 - vitest: '@voidzero-dev/vite-plus-test@0.1.20(@types/node@25.6.0)(@vitest/coverage-v8@4.1.5)(esbuild@0.28.0)(happy-dom@20.9.0)(jiti@2.6.1)(terser@5.46.2)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(yaml@2.8.4)' 7702 + vitest: '@voidzero-dev/vite-plus-test@0.1.20(@types/node@25.6.0)(@vitest/coverage-v8@4.1.5)(esbuild@0.28.0)(happy-dom@20.9.0)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4))(yaml@2.8.4)' 7116 7703 ws: 8.20.0 7117 7704 transitivePeerDependencies: 7118 7705 - bufferutil ··· 7133 7720 obug: 2.1.1 7134 7721 std-env: 4.1.0 7135 7722 tinyrainbow: 3.1.0 7136 - vitest: '@voidzero-dev/vite-plus-test@0.1.20(@types/node@25.6.0)(@vitest/coverage-v8@4.1.5)(esbuild@0.28.0)(happy-dom@20.9.0)(jiti@2.6.1)(terser@5.46.2)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(yaml@2.8.4)' 7723 + vitest: '@voidzero-dev/vite-plus-test@0.1.20(@types/node@25.6.0)(@vitest/coverage-v8@4.1.5)(esbuild@0.28.0)(happy-dom@20.9.0)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4))(yaml@2.8.4)' 7137 7724 optionalDependencies: 7138 - '@vitest/browser': 4.1.5(@voidzero-dev/vite-plus-test@0.1.20)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4)) 7725 + '@vitest/browser': 4.1.5(@voidzero-dev/vite-plus-test@0.1.20)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4)) 7139 7726 7140 - '@vitest/mocker@4.1.5(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))': 7727 + '@vitest/mocker@4.1.5(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4))': 7141 7728 dependencies: 7142 7729 '@vitest/spy': 4.1.5 7143 7730 estree-walker: 3.0.3 7144 7731 magic-string: 0.30.21 7145 7732 optionalDependencies: 7146 - vite: 7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4) 7733 + vite: 7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4) 7147 7734 optional: true 7148 7735 7149 7736 '@vitest/pretty-format@4.1.5': ··· 7159 7746 convert-source-map: 2.0.0 7160 7747 tinyrainbow: 3.1.0 7161 7748 7162 - '@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.46.2)(typescript@6.0.3)(yaml@2.8.4)': 7749 + '@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.4)': 7163 7750 dependencies: 7164 7751 '@oxc-project/runtime': 0.127.0 7165 7752 '@oxc-project/types': 0.127.0 ··· 7171 7758 fsevents: 2.3.3 7172 7759 jiti: 2.6.1 7173 7760 terser: 5.46.2 7761 + tsx: 4.21.0 7174 7762 typescript: 6.0.3 7175 7763 yaml: 2.8.4 7176 7764 ··· 7192 7780 '@voidzero-dev/vite-plus-linux-x64-musl@0.1.20': 7193 7781 optional: true 7194 7782 7195 - '@voidzero-dev/vite-plus-test@0.1.20(@types/node@25.6.0)(@vitest/coverage-v8@4.1.5)(esbuild@0.28.0)(happy-dom@20.9.0)(jiti@2.6.1)(terser@5.46.2)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(yaml@2.8.4)': 7783 + '@voidzero-dev/vite-plus-test@0.1.20(@types/node@25.6.0)(@vitest/coverage-v8@4.1.5)(esbuild@0.28.0)(happy-dom@20.9.0)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4))(yaml@2.8.4)': 7196 7784 dependencies: 7197 7785 '@standard-schema/spec': 1.1.0 7198 7786 '@types/chai': 5.2.3 7199 - '@voidzero-dev/vite-plus-core': 0.1.20(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.46.2)(typescript@6.0.3)(yaml@2.8.4) 7787 + '@voidzero-dev/vite-plus-core': 0.1.20(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.4) 7200 7788 es-module-lexer: 1.7.0 7201 7789 obug: 2.1.1 7202 7790 pixelmatch: 7.2.0 ··· 7206 7794 tinybench: 2.9.0 7207 7795 tinyexec: 1.1.2 7208 7796 tinyglobby: 0.2.16 7209 - vite: 7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4) 7797 + vite: 7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4) 7210 7798 ws: 8.20.0 7211 7799 optionalDependencies: 7212 7800 '@types/node': 25.6.0 ··· 7798 8386 7799 8387 culori@4.0.2: {} 7800 8388 7801 - db0@0.3.4: {} 8389 + db0@0.3.4(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0)): 8390 + optionalDependencies: 8391 + drizzle-orm: 0.45.2(@neondatabase/serverless@1.1.0) 7802 8392 7803 8393 debug@4.4.3: 7804 8394 dependencies: ··· 7855 8445 7856 8446 dotenv@17.4.2: {} 7857 8447 8448 + drizzle-kit@0.31.10: 8449 + dependencies: 8450 + '@drizzle-team/brocli': 0.10.2 8451 + '@esbuild-kit/esm-loader': 2.6.5 8452 + esbuild: 0.25.12 8453 + tsx: 4.21.0 8454 + 8455 + drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0): 8456 + optionalDependencies: 8457 + '@neondatabase/serverless': 1.1.0 8458 + 7858 8459 duplexer@0.1.2: {} 7859 8460 7860 8461 eastasianwidth@0.2.0: {} ··· 7892 8493 7893 8494 es-module-lexer@2.1.0: {} 7894 8495 8496 + esbuild@0.18.20: 8497 + optionalDependencies: 8498 + '@esbuild/android-arm': 0.18.20 8499 + '@esbuild/android-arm64': 0.18.20 8500 + '@esbuild/android-x64': 0.18.20 8501 + '@esbuild/darwin-arm64': 0.18.20 8502 + '@esbuild/darwin-x64': 0.18.20 8503 + '@esbuild/freebsd-arm64': 0.18.20 8504 + '@esbuild/freebsd-x64': 0.18.20 8505 + '@esbuild/linux-arm': 0.18.20 8506 + '@esbuild/linux-arm64': 0.18.20 8507 + '@esbuild/linux-ia32': 0.18.20 8508 + '@esbuild/linux-loong64': 0.18.20 8509 + '@esbuild/linux-mips64el': 0.18.20 8510 + '@esbuild/linux-ppc64': 0.18.20 8511 + '@esbuild/linux-riscv64': 0.18.20 8512 + '@esbuild/linux-s390x': 0.18.20 8513 + '@esbuild/linux-x64': 0.18.20 8514 + '@esbuild/netbsd-x64': 0.18.20 8515 + '@esbuild/openbsd-x64': 0.18.20 8516 + '@esbuild/sunos-x64': 0.18.20 8517 + '@esbuild/win32-arm64': 0.18.20 8518 + '@esbuild/win32-ia32': 0.18.20 8519 + '@esbuild/win32-x64': 0.18.20 8520 + 8521 + esbuild@0.25.12: 8522 + optionalDependencies: 8523 + '@esbuild/aix-ppc64': 0.25.12 8524 + '@esbuild/android-arm': 0.25.12 8525 + '@esbuild/android-arm64': 0.25.12 8526 + '@esbuild/android-x64': 0.25.12 8527 + '@esbuild/darwin-arm64': 0.25.12 8528 + '@esbuild/darwin-x64': 0.25.12 8529 + '@esbuild/freebsd-arm64': 0.25.12 8530 + '@esbuild/freebsd-x64': 0.25.12 8531 + '@esbuild/linux-arm': 0.25.12 8532 + '@esbuild/linux-arm64': 0.25.12 8533 + '@esbuild/linux-ia32': 0.25.12 8534 + '@esbuild/linux-loong64': 0.25.12 8535 + '@esbuild/linux-mips64el': 0.25.12 8536 + '@esbuild/linux-ppc64': 0.25.12 8537 + '@esbuild/linux-riscv64': 0.25.12 8538 + '@esbuild/linux-s390x': 0.25.12 8539 + '@esbuild/linux-x64': 0.25.12 8540 + '@esbuild/netbsd-arm64': 0.25.12 8541 + '@esbuild/netbsd-x64': 0.25.12 8542 + '@esbuild/openbsd-arm64': 0.25.12 8543 + '@esbuild/openbsd-x64': 0.25.12 8544 + '@esbuild/openharmony-arm64': 0.25.12 8545 + '@esbuild/sunos-x64': 0.25.12 8546 + '@esbuild/win32-arm64': 0.25.12 8547 + '@esbuild/win32-ia32': 0.25.12 8548 + '@esbuild/win32-x64': 0.25.12 8549 + 7895 8550 esbuild@0.27.7: 7896 8551 optionalDependencies: 7897 8552 '@esbuild/aix-ppc64': 0.27.7 ··· 8150 8805 dependencies: 8151 8806 tiny-inflate: 1.0.3 8152 8807 8153 - fontless@0.2.1(db0@0.3.4)(ioredis@5.10.1)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4)): 8808 + fontless@0.2.1(db0@0.3.4(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0)))(ioredis@5.10.1)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4)): 8154 8809 dependencies: 8155 8810 consola: 3.4.2 8156 8811 css-tree: 3.2.1 ··· 8164 8819 pathe: 2.0.3 8165 8820 ufo: 1.6.4 8166 8821 unifont: 0.7.4 8167 - unstorage: 1.17.5(db0@0.3.4)(ioredis@5.10.1) 8822 + unstorage: 1.17.5(db0@0.3.4(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0)))(ioredis@5.10.1) 8168 8823 optionalDependencies: 8169 - vite: 7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4) 8824 + vite: 7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4) 8170 8825 transitivePeerDependencies: 8171 8826 - '@azure/app-configuration' 8172 8827 - '@azure/cosmos' ··· 8218 8873 get-port-please@3.2.0: {} 8219 8874 8220 8875 get-stream@8.0.1: {} 8876 + 8877 + get-tsconfig@4.14.0: 8878 + dependencies: 8879 + resolve-pkg-maps: 1.0.0 8221 8880 8222 8881 giget@3.2.0: {} 8223 8882 ··· 8317 8976 prompts: 2.4.2 8318 8977 semver: 7.7.4 8319 8978 optionalDependencies: 8320 - vitest: '@voidzero-dev/vite-plus-test@0.1.20(@types/node@25.6.0)(@vitest/coverage-v8@4.1.5)(esbuild@0.28.0)(happy-dom@20.9.0)(jiti@2.6.1)(terser@5.46.2)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(yaml@2.8.4)' 8979 + vitest: '@voidzero-dev/vite-plus-test@0.1.20(@types/node@25.6.0)(@vitest/coverage-v8@4.1.5)(esbuild@0.28.0)(happy-dom@20.9.0)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4))(yaml@2.8.4)' 8321 8980 8322 8981 http-errors@2.0.1: 8323 8982 dependencies: ··· 8378 9037 transitivePeerDependencies: 8379 9038 - supports-color 8380 9039 8381 - ipx@3.1.1(db0@0.3.4)(ioredis@5.10.1)(srvx@0.11.15): 9040 + ipx@3.1.1(db0@0.3.4(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0)))(ioredis@5.10.1)(srvx@0.11.15): 8382 9041 dependencies: 8383 9042 '@fastify/accept-negotiator': 2.0.1 8384 9043 citty: 0.1.6 ··· 8394 9053 sharp: 0.34.5 8395 9054 svgo: 4.0.1 8396 9055 ufo: 1.6.4 8397 - unstorage: 1.17.5(db0@0.3.4)(ioredis@5.10.1) 9056 + unstorage: 1.17.5(db0@0.3.4(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0)))(ioredis@5.10.1) 8398 9057 xss: 1.0.15 8399 9058 transitivePeerDependencies: 8400 9059 - '@azure/app-configuration' ··· 8756 9415 8757 9416 natural-compare@1.4.0: {} 8758 9417 8759 - nitropack@2.13.4(oxc-parser@0.128.0)(rolldown@1.0.0-rc.18)(srvx@0.11.15): 9418 + nitropack@2.13.4(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0))(oxc-parser@0.128.0)(rolldown@1.0.0-rc.18)(srvx@0.11.15): 8760 9419 dependencies: 8761 9420 '@cloudflare/kv-asset-handler': 0.4.2 8762 9421 '@rollup/plugin-alias': 6.0.0(rollup@4.60.2) ··· 8777 9436 cookie-es: 2.0.1 8778 9437 croner: 10.0.1 8779 9438 crossws: 0.3.5 8780 - db0: 0.3.4 9439 + db0: 0.3.4(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0)) 8781 9440 defu: 6.1.7 8782 9441 destr: 2.0.5 8783 9442 dot-prop: 10.1.0 ··· 8823 9482 unenv: 2.0.0-rc.24 8824 9483 unimport: 6.2.0(oxc-parser@0.128.0) 8825 9484 unplugin-utils: 0.3.1 8826 - unstorage: 1.17.5(db0@0.3.4)(ioredis@5.10.1) 9485 + unstorage: 1.17.5(db0@0.3.4(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0)))(ioredis@5.10.1) 8827 9486 untyped: 2.0.0 8828 9487 unwasm: 0.5.3 8829 9488 youch: 4.1.1 ··· 8900 9559 dependencies: 8901 9560 boolbase: 1.0.0 8902 9561 8903 - nuxt-og-image@6.4.11(36817eef02f5946d0e9e065b544e9114): 9562 + nuxt-og-image@6.4.11(ea4a24142c8db751653c3d93ffc3a1c4): 8904 9563 dependencies: 8905 9564 '@clack/prompts': 1.3.0 8906 9565 '@nuxt/kit': 4.4.4(magicast@0.5.2) ··· 8916 9575 magic-string: 0.30.21 8917 9576 magicast: 0.5.2 8918 9577 mocked-exports: 0.1.1 8919 - nuxt-site-config: 4.0.8(@nuxt/schema@4.4.4)(magicast@0.5.2)(nuxt@4.4.4(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@parcel/watcher@2.5.6)(@types/node@25.6.0)(@vue/compiler-sfc@3.5.33)(cac@6.7.14)(db0@0.3.4)(esbuild@0.28.0)(eslint@10.3.0(jiti@2.6.1))(ioredis@5.10.1)(magicast@0.5.2)(optionator@0.9.4)(oxlint@1.61.0(oxlint-tsgolint@0.22.0))(rolldown@1.0.0-rc.18)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.18)(rollup@4.60.2))(rollup@4.60.2)(srvx@0.11.15)(terser@5.46.2)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(vue-tsc@3.2.7(typescript@6.0.3))(yaml@2.8.4))(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(vue@3.5.33(typescript@6.0.3)) 8920 - nuxtseo-shared: 5.1.3(ee9b3b2ea5c0db61211f3ef554b28e86) 9578 + nuxt-site-config: 4.0.8(@nuxt/schema@4.4.4)(magicast@0.5.2)(nuxt@4.4.4(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@parcel/watcher@2.5.6)(@types/node@25.6.0)(@vue/compiler-sfc@3.5.33)(cac@6.7.14)(db0@0.3.4(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0)))(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0))(esbuild@0.28.0)(eslint@10.3.0(jiti@2.6.1))(ioredis@5.10.1)(magicast@0.5.2)(optionator@0.9.4)(oxlint@1.61.0(oxlint-tsgolint@0.22.0))(rolldown@1.0.0-rc.18)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.18)(rollup@4.60.2))(rollup@4.60.2)(srvx@0.11.15)(terser@5.46.2)(tsx@4.21.0)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4))(vue-tsc@3.2.7(typescript@6.0.3))(yaml@2.8.4))(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4))(vue@3.5.33(typescript@6.0.3)) 9579 + nuxtseo-shared: 5.1.3(524f84012e9d72beb906744b155b32ec) 8921 9580 nypm: 0.6.6 8922 9581 ofetch: 1.5.1 8923 9582 ohash: 2.0.11 ··· 8933 9592 ufo: 1.6.4 8934 9593 ultrahtml: 1.6.0 8935 9594 unplugin: 3.0.0 8936 - unstorage: 1.17.5(db0@0.3.4)(ioredis@5.10.1) 9595 + unstorage: 1.17.5(db0@0.3.4(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0)))(ioredis@5.10.1) 8937 9596 optionalDependencies: 8938 9597 '@resvg/resvg-js': 2.6.2 8939 9598 '@resvg/resvg-wasm': 2.6.2 8940 - fontless: 0.2.1(db0@0.3.4)(ioredis@5.10.1)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4)) 9599 + fontless: 0.2.1(db0@0.3.4(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0)))(ioredis@5.10.1)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4)) 8941 9600 playwright-core: 1.59.1 8942 9601 sharp: 0.34.5 8943 9602 unifont: 0.7.4 ··· 8959 9618 - magicast 8960 9619 - vue 8961 9620 8962 - nuxt-site-config@4.0.8(@nuxt/schema@4.4.4)(magicast@0.5.2)(nuxt@4.4.4(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@parcel/watcher@2.5.6)(@types/node@25.6.0)(@vue/compiler-sfc@3.5.33)(cac@6.7.14)(db0@0.3.4)(esbuild@0.28.0)(eslint@10.3.0(jiti@2.6.1))(ioredis@5.10.1)(magicast@0.5.2)(optionator@0.9.4)(oxlint@1.61.0(oxlint-tsgolint@0.22.0))(rolldown@1.0.0-rc.18)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.18)(rollup@4.60.2))(rollup@4.60.2)(srvx@0.11.15)(terser@5.46.2)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(vue-tsc@3.2.7(typescript@6.0.3))(yaml@2.8.4))(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(vue@3.5.33(typescript@6.0.3)): 9621 + nuxt-site-config@4.0.8(@nuxt/schema@4.4.4)(magicast@0.5.2)(nuxt@4.4.4(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@parcel/watcher@2.5.6)(@types/node@25.6.0)(@vue/compiler-sfc@3.5.33)(cac@6.7.14)(db0@0.3.4(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0)))(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0))(esbuild@0.28.0)(eslint@10.3.0(jiti@2.6.1))(ioredis@5.10.1)(magicast@0.5.2)(optionator@0.9.4)(oxlint@1.61.0(oxlint-tsgolint@0.22.0))(rolldown@1.0.0-rc.18)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.18)(rollup@4.60.2))(rollup@4.60.2)(srvx@0.11.15)(terser@5.46.2)(tsx@4.21.0)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4))(vue-tsc@3.2.7(typescript@6.0.3))(yaml@2.8.4))(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4))(vue@3.5.33(typescript@6.0.3)): 8963 9622 dependencies: 8964 9623 '@nuxt/kit': 4.4.4(magicast@0.5.2) 8965 9624 h3: 1.15.11 8966 9625 nuxt-site-config-kit: 4.0.8(magicast@0.5.2)(vue@3.5.33(typescript@6.0.3)) 8967 - nuxtseo-shared: 5.1.3(ee9b3b2ea5c0db61211f3ef554b28e86) 9626 + nuxtseo-shared: 5.1.3(524f84012e9d72beb906744b155b32ec) 8968 9627 pathe: 2.0.3 8969 9628 pkg-types: 2.3.1 8970 9629 site-config-stack: 4.0.8(vue@3.5.33(typescript@6.0.3)) ··· 8977 9636 - vue 8978 9637 - zod 8979 9638 8980 - nuxt@4.4.4(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@parcel/watcher@2.5.6)(@types/node@25.6.0)(@vue/compiler-sfc@3.5.33)(cac@6.7.14)(db0@0.3.4)(esbuild@0.28.0)(eslint@10.3.0(jiti@2.6.1))(ioredis@5.10.1)(magicast@0.5.2)(optionator@0.9.4)(oxlint@1.61.0(oxlint-tsgolint@0.22.0))(rolldown@1.0.0-rc.18)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.18)(rollup@4.60.2))(rollup@4.60.2)(srvx@0.11.15)(terser@5.46.2)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(vue-tsc@3.2.7(typescript@6.0.3))(yaml@2.8.4): 9639 + nuxt@4.4.4(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@parcel/watcher@2.5.6)(@types/node@25.6.0)(@vue/compiler-sfc@3.5.33)(cac@6.7.14)(db0@0.3.4(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0)))(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0))(esbuild@0.28.0)(eslint@10.3.0(jiti@2.6.1))(ioredis@5.10.1)(magicast@0.5.2)(optionator@0.9.4)(oxlint@1.61.0(oxlint-tsgolint@0.22.0))(rolldown@1.0.0-rc.18)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.18)(rollup@4.60.2))(rollup@4.60.2)(srvx@0.11.15)(terser@5.46.2)(tsx@4.21.0)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4))(vue-tsc@3.2.7(typescript@6.0.3))(yaml@2.8.4): 8981 9640 dependencies: 8982 9641 '@dxup/nuxt': 0.4.1(magicast@0.5.2)(typescript@6.0.3) 8983 9642 '@nuxt/cli': 3.35.1(@nuxt/schema@4.4.4)(cac@6.7.14)(magicast@0.5.2) 8984 - '@nuxt/devtools': 3.2.4(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(vue@3.5.33(typescript@6.0.3)) 9643 + '@nuxt/devtools': 3.2.4(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4))(vue@3.5.33(typescript@6.0.3)) 8985 9644 '@nuxt/kit': 4.4.4(magicast@0.5.2) 8986 - '@nuxt/nitro-server': 4.4.4(@babel/core@7.29.0)(db0@0.3.4)(ioredis@5.10.1)(magicast@0.5.2)(nuxt@4.4.4(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@parcel/watcher@2.5.6)(@types/node@25.6.0)(@vue/compiler-sfc@3.5.33)(cac@6.7.14)(db0@0.3.4)(esbuild@0.28.0)(eslint@10.3.0(jiti@2.6.1))(ioredis@5.10.1)(magicast@0.5.2)(optionator@0.9.4)(oxlint@1.61.0(oxlint-tsgolint@0.22.0))(rolldown@1.0.0-rc.18)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.18)(rollup@4.60.2))(rollup@4.60.2)(srvx@0.11.15)(terser@5.46.2)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(vue-tsc@3.2.7(typescript@6.0.3))(yaml@2.8.4))(oxc-parser@0.128.0)(rolldown@1.0.0-rc.18)(srvx@0.11.15)(typescript@6.0.3) 9645 + '@nuxt/nitro-server': 4.4.4(@babel/core@7.29.0)(db0@0.3.4(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0)))(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0))(ioredis@5.10.1)(magicast@0.5.2)(nuxt@4.4.4(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@parcel/watcher@2.5.6)(@types/node@25.6.0)(@vue/compiler-sfc@3.5.33)(cac@6.7.14)(db0@0.3.4(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0)))(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0))(esbuild@0.28.0)(eslint@10.3.0(jiti@2.6.1))(ioredis@5.10.1)(magicast@0.5.2)(optionator@0.9.4)(oxlint@1.61.0(oxlint-tsgolint@0.22.0))(rolldown@1.0.0-rc.18)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.18)(rollup@4.60.2))(rollup@4.60.2)(srvx@0.11.15)(terser@5.46.2)(tsx@4.21.0)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4))(vue-tsc@3.2.7(typescript@6.0.3))(yaml@2.8.4))(oxc-parser@0.128.0)(rolldown@1.0.0-rc.18)(srvx@0.11.15)(typescript@6.0.3) 8987 9646 '@nuxt/schema': 4.4.4 8988 9647 '@nuxt/telemetry': 2.8.0(@nuxt/kit@4.4.4(magicast@0.5.2)) 8989 - '@nuxt/vite-builder': 4.4.4(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@types/node@25.6.0)(esbuild@0.28.0)(eslint@10.3.0(jiti@2.6.1))(magicast@0.5.2)(nuxt@4.4.4(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@parcel/watcher@2.5.6)(@types/node@25.6.0)(@vue/compiler-sfc@3.5.33)(cac@6.7.14)(db0@0.3.4)(esbuild@0.28.0)(eslint@10.3.0(jiti@2.6.1))(ioredis@5.10.1)(magicast@0.5.2)(optionator@0.9.4)(oxlint@1.61.0(oxlint-tsgolint@0.22.0))(rolldown@1.0.0-rc.18)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.18)(rollup@4.60.2))(rollup@4.60.2)(srvx@0.11.15)(terser@5.46.2)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(vue-tsc@3.2.7(typescript@6.0.3))(yaml@2.8.4))(optionator@0.9.4)(oxlint@1.61.0(oxlint-tsgolint@0.22.0))(rolldown@1.0.0-rc.18)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.18)(rollup@4.60.2))(rollup@4.60.2)(terser@5.46.2)(typescript@6.0.3)(vue-tsc@3.2.7(typescript@6.0.3))(vue@3.5.33(typescript@6.0.3))(yaml@2.8.4) 9648 + '@nuxt/vite-builder': 4.4.4(28264294504fc5bb34607a4fbd2f89d6) 8990 9649 '@unhead/vue': 2.1.13(vue@3.5.33(typescript@6.0.3)) 8991 9650 '@vue/shared': 3.5.33 8992 9651 chokidar: 5.0.0 ··· 9112 9771 - xml2js 9113 9772 - yaml 9114 9773 9115 - nuxtseo-shared@5.1.3(ee9b3b2ea5c0db61211f3ef554b28e86): 9774 + nuxtseo-shared@5.1.3(524f84012e9d72beb906744b155b32ec): 9116 9775 dependencies: 9117 9776 '@clack/prompts': 1.3.0 9118 - '@nuxt/devtools-kit': 4.0.0-alpha.3(magicast@0.5.2)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4)) 9777 + '@nuxt/devtools-kit': 4.0.0-alpha.3(magicast@0.5.2)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4)) 9119 9778 '@nuxt/kit': 4.4.4(magicast@0.5.2) 9120 9779 '@nuxt/schema': 4.4.4 9121 9780 birpc: 4.0.0 9122 9781 consola: 3.4.2 9123 9782 defu: 6.1.7 9124 - nuxt: 4.4.4(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@parcel/watcher@2.5.6)(@types/node@25.6.0)(@vue/compiler-sfc@3.5.33)(cac@6.7.14)(db0@0.3.4)(esbuild@0.28.0)(eslint@10.3.0(jiti@2.6.1))(ioredis@5.10.1)(magicast@0.5.2)(optionator@0.9.4)(oxlint@1.61.0(oxlint-tsgolint@0.22.0))(rolldown@1.0.0-rc.18)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.18)(rollup@4.60.2))(rollup@4.60.2)(srvx@0.11.15)(terser@5.46.2)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(vue-tsc@3.2.7(typescript@6.0.3))(yaml@2.8.4) 9783 + nuxt: 4.4.4(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@parcel/watcher@2.5.6)(@types/node@25.6.0)(@vue/compiler-sfc@3.5.33)(cac@6.7.14)(db0@0.3.4(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0)))(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0))(esbuild@0.28.0)(eslint@10.3.0(jiti@2.6.1))(ioredis@5.10.1)(magicast@0.5.2)(optionator@0.9.4)(oxlint@1.61.0(oxlint-tsgolint@0.22.0))(rolldown@1.0.0-rc.18)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.18)(rollup@4.60.2))(rollup@4.60.2)(srvx@0.11.15)(terser@5.46.2)(tsx@4.21.0)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4))(vue-tsc@3.2.7(typescript@6.0.3))(yaml@2.8.4) 9125 9784 ofetch: 1.5.1 9126 9785 pathe: 2.0.3 9127 9786 pkg-types: 2.3.1 ··· 9131 9790 ufo: 1.6.4 9132 9791 vue: 3.5.33(typescript@6.0.3) 9133 9792 optionalDependencies: 9134 - nuxt-site-config: 4.0.8(@nuxt/schema@4.4.4)(magicast@0.5.2)(nuxt@4.4.4(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@parcel/watcher@2.5.6)(@types/node@25.6.0)(@vue/compiler-sfc@3.5.33)(cac@6.7.14)(db0@0.3.4)(esbuild@0.28.0)(eslint@10.3.0(jiti@2.6.1))(ioredis@5.10.1)(magicast@0.5.2)(optionator@0.9.4)(oxlint@1.61.0(oxlint-tsgolint@0.22.0))(rolldown@1.0.0-rc.18)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.18)(rollup@4.60.2))(rollup@4.60.2)(srvx@0.11.15)(terser@5.46.2)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(vue-tsc@3.2.7(typescript@6.0.3))(yaml@2.8.4))(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(vue@3.5.33(typescript@6.0.3)) 9793 + nuxt-site-config: 4.0.8(@nuxt/schema@4.4.4)(magicast@0.5.2)(nuxt@4.4.4(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@parcel/watcher@2.5.6)(@types/node@25.6.0)(@vue/compiler-sfc@3.5.33)(cac@6.7.14)(db0@0.3.4(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0)))(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0))(esbuild@0.28.0)(eslint@10.3.0(jiti@2.6.1))(ioredis@5.10.1)(magicast@0.5.2)(optionator@0.9.4)(oxlint@1.61.0(oxlint-tsgolint@0.22.0))(rolldown@1.0.0-rc.18)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.0-rc.18)(rollup@4.60.2))(rollup@4.60.2)(srvx@0.11.15)(terser@5.46.2)(tsx@4.21.0)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4))(vue-tsc@3.2.7(typescript@6.0.3))(yaml@2.8.4))(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4))(vue@3.5.33(typescript@6.0.3)) 9135 9794 transitivePeerDependencies: 9136 9795 - magicast 9137 9796 - vite ··· 9633 10292 9634 10293 resolve-from@5.0.0: {} 9635 10294 10295 + resolve-pkg-maps@1.0.0: {} 10296 + 9636 10297 resolve@1.22.12: 9637 10298 dependencies: 9638 10299 es-errors: 1.3.0 ··· 10003 10664 tslib@2.8.1: 10004 10665 optional: true 10005 10666 10667 + tsx@4.21.0: 10668 + dependencies: 10669 + esbuild: 0.27.7 10670 + get-tsconfig: 4.14.0 10671 + optionalDependencies: 10672 + fsevents: 2.3.3 10673 + 10006 10674 type-check@0.4.0: 10007 10675 dependencies: 10008 10676 prelude-ls: 1.2.1 ··· 10090 10758 escape-string-regexp: 5.0.0 10091 10759 ufo: 1.6.4 10092 10760 10093 - unstorage@1.17.5(db0@0.3.4)(ioredis@5.10.1): 10761 + unstorage@1.17.5(db0@0.3.4(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0)))(ioredis@5.10.1): 10094 10762 dependencies: 10095 10763 anymatch: 3.1.3 10096 10764 chokidar: 5.0.0 ··· 10101 10769 ofetch: 1.5.1 10102 10770 ufo: 1.6.4 10103 10771 optionalDependencies: 10104 - db0: 0.3.4 10772 + db0: 0.3.4(drizzle-orm@0.45.2(@neondatabase/serverless@1.1.0)) 10105 10773 ioredis: 5.10.1 10106 10774 10107 10775 untun@0.1.3: ··· 10145 10813 optionalDependencies: 10146 10814 typescript: 6.0.3 10147 10815 10148 - vite-dev-rpc@1.1.0(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4)): 10816 + vite-dev-rpc@1.1.0(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4)): 10149 10817 dependencies: 10150 10818 birpc: 2.9.0 10151 - vite: 7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4) 10152 - vite-hot-client: 2.2.0(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4)) 10819 + vite: 7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4) 10820 + vite-hot-client: 2.2.0(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4)) 10153 10821 10154 - vite-hot-client@2.2.0(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4)): 10822 + vite-hot-client@2.2.0(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4)): 10155 10823 dependencies: 10156 - vite: 7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4) 10824 + vite: 7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4) 10157 10825 10158 - vite-node@5.3.0(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.46.2)(typescript@6.0.3)(yaml@2.8.4): 10826 + vite-node@5.3.0(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.4): 10159 10827 dependencies: 10160 10828 cac: 6.7.14 10161 10829 es-module-lexer: 2.1.0 10162 10830 obug: 2.1.1 10163 10831 pathe: 2.0.3 10164 - vite: '@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.46.2)(typescript@6.0.3)(yaml@2.8.4)' 10832 + vite: '@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.4)' 10165 10833 transitivePeerDependencies: 10166 10834 - '@arethetypeswrong/core' 10167 10835 - '@tsdown/css' ··· 10182 10850 - unplugin-unused 10183 10851 - yaml 10184 10852 10185 - vite-plugin-checker@0.13.0(@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.46.2)(typescript@6.0.3)(yaml@2.8.4))(eslint@10.3.0(jiti@2.6.1))(optionator@0.9.4)(oxlint@1.61.0(oxlint-tsgolint@0.22.0))(typescript@6.0.3)(vue-tsc@3.2.7(typescript@6.0.3)): 10853 + vite-plugin-checker@0.13.0(@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.4))(eslint@10.3.0(jiti@2.6.1))(optionator@0.9.4)(oxlint@1.61.0(oxlint-tsgolint@0.22.0))(typescript@6.0.3)(vue-tsc@3.2.7(typescript@6.0.3)): 10186 10854 dependencies: 10187 10855 '@babel/code-frame': 7.29.0 10188 10856 chokidar: 4.0.3 ··· 10192 10860 proper-lockfile: 4.1.2 10193 10861 tiny-invariant: 1.3.3 10194 10862 tinyglobby: 0.2.16 10195 - vite: '@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.46.2)(typescript@6.0.3)(yaml@2.8.4)' 10863 + vite: '@voidzero-dev/vite-plus-core@0.1.20(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.4)' 10196 10864 vscode-uri: 3.1.0 10197 10865 optionalDependencies: 10198 10866 eslint: 10.3.0(jiti@2.6.1) ··· 10201 10869 typescript: 6.0.3 10202 10870 vue-tsc: 3.2.7(typescript@6.0.3) 10203 10871 10204 - vite-plugin-inspect@11.3.3(@nuxt/kit@4.4.4(magicast@0.5.2))(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4)): 10872 + vite-plugin-inspect@11.3.3(@nuxt/kit@4.4.4(magicast@0.5.2))(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4)): 10205 10873 dependencies: 10206 10874 ansis: 4.2.0 10207 10875 debug: 4.4.3 ··· 10211 10879 perfect-debounce: 2.1.0 10212 10880 sirv: 3.0.2 10213 10881 unplugin-utils: 0.3.1 10214 - vite: 7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4) 10215 - vite-dev-rpc: 1.1.0(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4)) 10882 + vite: 7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4) 10883 + vite-dev-rpc: 1.1.0(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4)) 10216 10884 optionalDependencies: 10217 10885 '@nuxt/kit': 4.4.4(magicast@0.5.2) 10218 10886 transitivePeerDependencies: 10219 10887 - supports-color 10220 10888 10221 - vite-plugin-vue-tracer@1.3.0(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(vue@3.5.33(typescript@6.0.3)): 10889 + vite-plugin-vue-tracer@1.3.0(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4))(vue@3.5.33(typescript@6.0.3)): 10222 10890 dependencies: 10223 10891 estree-walker: 3.0.3 10224 10892 exsolve: 1.0.8 10225 10893 magic-string: 0.30.21 10226 10894 pathe: 2.0.3 10227 10895 source-map-js: 1.2.1 10228 - vite: 7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4) 10896 + vite: 7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4) 10229 10897 vue: 3.5.33(typescript@6.0.3) 10230 10898 10231 - vite-plus@0.1.20(@types/node@25.6.0)(@vitest/coverage-v8@4.1.5)(esbuild@0.28.0)(happy-dom@20.9.0)(jiti@2.6.1)(terser@5.46.2)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(yaml@2.8.4): 10899 + vite-plus@0.1.20(@types/node@25.6.0)(@vitest/coverage-v8@4.1.5)(esbuild@0.28.0)(happy-dom@20.9.0)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4))(yaml@2.8.4): 10232 10900 dependencies: 10233 10901 '@oxc-project/types': 0.127.0 10234 - '@voidzero-dev/vite-plus-core': 0.1.20(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.46.2)(typescript@6.0.3)(yaml@2.8.4) 10235 - '@voidzero-dev/vite-plus-test': 0.1.20(@types/node@25.6.0)(@vitest/coverage-v8@4.1.5)(esbuild@0.28.0)(happy-dom@20.9.0)(jiti@2.6.1)(terser@5.46.2)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4))(yaml@2.8.4) 10902 + '@voidzero-dev/vite-plus-core': 0.1.20(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(typescript@6.0.3)(yaml@2.8.4) 10903 + '@voidzero-dev/vite-plus-test': 0.1.20(@types/node@25.6.0)(@vitest/coverage-v8@4.1.5)(esbuild@0.28.0)(happy-dom@20.9.0)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4))(yaml@2.8.4) 10236 10904 oxfmt: 0.46.0 10237 10905 oxlint: 1.61.0(oxlint-tsgolint@0.22.0) 10238 10906 oxlint-tsgolint: 0.22.0 ··· 10275 10943 - vite 10276 10944 - yaml 10277 10945 10278 - vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4): 10946 + vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4): 10279 10947 dependencies: 10280 10948 esbuild: 0.27.7 10281 10949 fdir: 6.5.0(picomatch@4.0.4) ··· 10289 10957 jiti: 2.6.1 10290 10958 lightningcss: 1.32.0 10291 10959 terser: 5.46.2 10960 + tsx: 4.21.0 10292 10961 yaml: 2.8.4 10293 10962 10294 - vitest-environment-nuxt@2.0.0(@playwright/test@1.59.1)(@voidzero-dev/vite-plus-test@0.1.20)(@vue/test-utils@2.4.10(@vue/compiler-dom@3.5.33)(@vue/server-renderer@3.5.33(vue@3.5.33(typescript@6.0.3)))(vue@3.5.33(typescript@6.0.3)))(crossws@0.4.5(srvx@0.11.15))(happy-dom@20.9.0)(magicast@0.5.2)(playwright-core@1.59.1)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4)): 10963 + vitest-environment-nuxt@2.0.0(@playwright/test@1.59.1)(@voidzero-dev/vite-plus-test@0.1.20)(@vue/test-utils@2.4.10(@vue/compiler-dom@3.5.33)(@vue/server-renderer@3.5.33(vue@3.5.33(typescript@6.0.3)))(vue@3.5.33(typescript@6.0.3)))(crossws@0.4.5(srvx@0.11.15))(happy-dom@20.9.0)(magicast@0.5.2)(playwright-core@1.59.1)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4)): 10295 10964 dependencies: 10296 - '@nuxt/test-utils': 4.0.3(@playwright/test@1.59.1)(@voidzero-dev/vite-plus-test@0.1.20)(@vue/test-utils@2.4.10(@vue/compiler-dom@3.5.33)(@vue/server-renderer@3.5.33(vue@3.5.33(typescript@6.0.3)))(vue@3.5.33(typescript@6.0.3)))(crossws@0.4.5(srvx@0.11.15))(happy-dom@20.9.0)(magicast@0.5.2)(playwright-core@1.59.1)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(yaml@2.8.4)) 10965 + '@nuxt/test-utils': 4.0.3(@playwright/test@1.59.1)(@voidzero-dev/vite-plus-test@0.1.20)(@vue/test-utils@2.4.10(@vue/compiler-dom@3.5.33)(@vue/server-renderer@3.5.33(vue@3.5.33(typescript@6.0.3)))(vue@3.5.33(typescript@6.0.3)))(crossws@0.4.5(srvx@0.11.15))(happy-dom@20.9.0)(magicast@0.5.2)(playwright-core@1.59.1)(typescript@6.0.3)(vite@7.3.2(@types/node@25.6.0)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.4)) 10297 10966 transitivePeerDependencies: 10298 10967 - '@cucumber/cucumber' 10299 10968 - '@jest/globals'
+97
server/db/migrations/0000_initial.sql
··· 1 + CREATE TABLE "atproto_session" ( 2 + "sub" text PRIMARY KEY NOT NULL, 3 + "value_ciphertext" "bytea" NOT NULL, 4 + "value_nonce" "bytea" NOT NULL, 5 + "created_at" timestamp with time zone DEFAULT now() NOT NULL, 6 + "updated_at" timestamp with time zone 7 + ); 8 + --> statement-breakpoint 9 + CREATE TABLE "atproto_state" ( 10 + "key" text PRIMARY KEY NOT NULL, 11 + "value_ciphertext" "bytea" NOT NULL, 12 + "value_nonce" "bytea" NOT NULL, 13 + "created_at" timestamp with time zone DEFAULT now() NOT NULL 14 + ); 15 + --> statement-breakpoint 16 + CREATE TABLE "installation" ( 17 + "id" bigint PRIMARY KEY NOT NULL, 18 + "account_login" text NOT NULL, 19 + "account_id" bigint NOT NULL, 20 + "account_type" text NOT NULL, 21 + "suspended_at" timestamp with time zone, 22 + "created_at" timestamp with time zone DEFAULT now() NOT NULL, 23 + CONSTRAINT "installation_account_type_chk" CHECK ("installation"."account_type" in ('User','Organization')) 24 + ); 25 + --> statement-breakpoint 26 + CREATE TABLE "job" ( 27 + "id" bigserial PRIMARY KEY NOT NULL, 28 + "kind" text NOT NULL, 29 + "payload" jsonb NOT NULL, 30 + "attempts" integer DEFAULT 0 NOT NULL, 31 + "run_after" timestamp with time zone DEFAULT now() NOT NULL, 32 + "locked_by" text, 33 + "locked_until" timestamp with time zone, 34 + "status" text DEFAULT 'queued' NOT NULL, 35 + "last_error" text, 36 + "created_at" timestamp with time zone DEFAULT now() NOT NULL, 37 + "updated_at" timestamp with time zone, 38 + CONSTRAINT "job_status_chk" CHECK ("job"."status" in ('queued','running','done','failed')) 39 + ); 40 + --> statement-breakpoint 41 + CREATE TABLE "repo_mapping" ( 42 + "id" bigserial PRIMARY KEY NOT NULL, 43 + "installation_id" bigint NOT NULL, 44 + "github_repo_id" bigint NOT NULL, 45 + "github_full_name" text NOT NULL, 46 + "tangled_repo_did" text, 47 + "tangled_full_name" text, 48 + "knot" text, 49 + "primary_side" text DEFAULT 'github' NOT NULL, 50 + "last_synced_refs" jsonb DEFAULT '{}'::jsonb NOT NULL, 51 + "status" text DEFAULT 'pending' NOT NULL, 52 + "last_error" text, 53 + "disabled_at" timestamp with time zone, 54 + "created_at" timestamp with time zone DEFAULT now() NOT NULL, 55 + "updated_at" timestamp with time zone, 56 + CONSTRAINT "repo_mapping_installation_repo_unq" UNIQUE("installation_id","github_repo_id"), 57 + CONSTRAINT "repo_mapping_primary_side_chk" CHECK ("repo_mapping"."primary_side" in ('github','tangled')), 58 + CONSTRAINT "repo_mapping_status_chk" CHECK ("repo_mapping"."status" in ('pending','enrolling','active','error')) 59 + ); 60 + --> statement-breakpoint 61 + CREATE TABLE "ssh_key" ( 62 + "id" bigserial PRIMARY KEY NOT NULL, 63 + "installation_id" bigint NOT NULL, 64 + "did" text NOT NULL, 65 + "public_key" text NOT NULL, 66 + "private_key_ciphertext" "bytea" NOT NULL, 67 + "private_key_nonce" "bytea" NOT NULL, 68 + "tangled_key_rkey" text, 69 + "created_at" timestamp with time zone DEFAULT now() NOT NULL, 70 + "rotated_at" timestamp with time zone, 71 + CONSTRAINT "ssh_key_installation_did_unq" UNIQUE("installation_id","did") 72 + ); 73 + --> statement-breakpoint 74 + CREATE TABLE "user_identity" ( 75 + "did" text PRIMARY KEY NOT NULL, 76 + "handle" text, 77 + "installation_id" bigint, 78 + "created_at" timestamp with time zone DEFAULT now() NOT NULL, 79 + "updated_at" timestamp with time zone 80 + ); 81 + --> statement-breakpoint 82 + CREATE TABLE "webhook_event" ( 83 + "delivery_id" uuid PRIMARY KEY NOT NULL, 84 + "source" text NOT NULL, 85 + "event" text NOT NULL, 86 + "received_at" timestamp with time zone DEFAULT now() NOT NULL, 87 + "processed_at" timestamp with time zone, 88 + CONSTRAINT "webhook_event_source_chk" CHECK ("webhook_event"."source" in ('github','tangled')) 89 + ); 90 + --> statement-breakpoint 91 + ALTER TABLE "repo_mapping" ADD CONSTRAINT "repo_mapping_installation_id_installation_id_fk" FOREIGN KEY ("installation_id") REFERENCES "public"."installation"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint 92 + ALTER TABLE "ssh_key" ADD CONSTRAINT "ssh_key_installation_id_installation_id_fk" FOREIGN KEY ("installation_id") REFERENCES "public"."installation"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint 93 + ALTER TABLE "user_identity" ADD CONSTRAINT "user_identity_installation_id_installation_id_fk" FOREIGN KEY ("installation_id") REFERENCES "public"."installation"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint 94 + CREATE INDEX "job_status_run_after_idx" ON "job" USING btree ("status","run_after");--> statement-breakpoint 95 + CREATE INDEX "repo_mapping_installation_idx" ON "repo_mapping" USING btree ("installation_id");--> statement-breakpoint 96 + CREATE INDEX "ssh_key_installation_idx" ON "ssh_key" USING btree ("installation_id");--> statement-breakpoint 97 + CREATE INDEX "user_identity_installation_idx" ON "user_identity" USING btree ("installation_id");
+645
server/db/migrations/meta/0000_snapshot.json
··· 1 + { 2 + "id": "193eacb9-82ee-487b-a19c-0bb1448f0b5a", 3 + "prevId": "00000000-0000-0000-0000-000000000000", 4 + "version": "7", 5 + "dialect": "postgresql", 6 + "tables": { 7 + "public.atproto_session": { 8 + "name": "atproto_session", 9 + "schema": "", 10 + "columns": { 11 + "sub": { 12 + "name": "sub", 13 + "type": "text", 14 + "primaryKey": true, 15 + "notNull": true 16 + }, 17 + "value_ciphertext": { 18 + "name": "value_ciphertext", 19 + "type": "bytea", 20 + "primaryKey": false, 21 + "notNull": true 22 + }, 23 + "value_nonce": { 24 + "name": "value_nonce", 25 + "type": "bytea", 26 + "primaryKey": false, 27 + "notNull": true 28 + }, 29 + "created_at": { 30 + "name": "created_at", 31 + "type": "timestamp with time zone", 32 + "primaryKey": false, 33 + "notNull": true, 34 + "default": "now()" 35 + }, 36 + "updated_at": { 37 + "name": "updated_at", 38 + "type": "timestamp with time zone", 39 + "primaryKey": false, 40 + "notNull": false 41 + } 42 + }, 43 + "indexes": {}, 44 + "foreignKeys": {}, 45 + "compositePrimaryKeys": {}, 46 + "uniqueConstraints": {}, 47 + "policies": {}, 48 + "checkConstraints": {}, 49 + "isRLSEnabled": false 50 + }, 51 + "public.atproto_state": { 52 + "name": "atproto_state", 53 + "schema": "", 54 + "columns": { 55 + "key": { 56 + "name": "key", 57 + "type": "text", 58 + "primaryKey": true, 59 + "notNull": true 60 + }, 61 + "value_ciphertext": { 62 + "name": "value_ciphertext", 63 + "type": "bytea", 64 + "primaryKey": false, 65 + "notNull": true 66 + }, 67 + "value_nonce": { 68 + "name": "value_nonce", 69 + "type": "bytea", 70 + "primaryKey": false, 71 + "notNull": true 72 + }, 73 + "created_at": { 74 + "name": "created_at", 75 + "type": "timestamp with time zone", 76 + "primaryKey": false, 77 + "notNull": true, 78 + "default": "now()" 79 + } 80 + }, 81 + "indexes": {}, 82 + "foreignKeys": {}, 83 + "compositePrimaryKeys": {}, 84 + "uniqueConstraints": {}, 85 + "policies": {}, 86 + "checkConstraints": {}, 87 + "isRLSEnabled": false 88 + }, 89 + "public.installation": { 90 + "name": "installation", 91 + "schema": "", 92 + "columns": { 93 + "id": { 94 + "name": "id", 95 + "type": "bigint", 96 + "primaryKey": true, 97 + "notNull": true 98 + }, 99 + "account_login": { 100 + "name": "account_login", 101 + "type": "text", 102 + "primaryKey": false, 103 + "notNull": true 104 + }, 105 + "account_id": { 106 + "name": "account_id", 107 + "type": "bigint", 108 + "primaryKey": false, 109 + "notNull": true 110 + }, 111 + "account_type": { 112 + "name": "account_type", 113 + "type": "text", 114 + "primaryKey": false, 115 + "notNull": true 116 + }, 117 + "suspended_at": { 118 + "name": "suspended_at", 119 + "type": "timestamp with time zone", 120 + "primaryKey": false, 121 + "notNull": false 122 + }, 123 + "created_at": { 124 + "name": "created_at", 125 + "type": "timestamp with time zone", 126 + "primaryKey": false, 127 + "notNull": true, 128 + "default": "now()" 129 + } 130 + }, 131 + "indexes": {}, 132 + "foreignKeys": {}, 133 + "compositePrimaryKeys": {}, 134 + "uniqueConstraints": {}, 135 + "policies": {}, 136 + "checkConstraints": { 137 + "installation_account_type_chk": { 138 + "name": "installation_account_type_chk", 139 + "value": "\"installation\".\"account_type\" in ('User','Organization')" 140 + } 141 + }, 142 + "isRLSEnabled": false 143 + }, 144 + "public.job": { 145 + "name": "job", 146 + "schema": "", 147 + "columns": { 148 + "id": { 149 + "name": "id", 150 + "type": "bigserial", 151 + "primaryKey": true, 152 + "notNull": true 153 + }, 154 + "kind": { 155 + "name": "kind", 156 + "type": "text", 157 + "primaryKey": false, 158 + "notNull": true 159 + }, 160 + "payload": { 161 + "name": "payload", 162 + "type": "jsonb", 163 + "primaryKey": false, 164 + "notNull": true 165 + }, 166 + "attempts": { 167 + "name": "attempts", 168 + "type": "integer", 169 + "primaryKey": false, 170 + "notNull": true, 171 + "default": 0 172 + }, 173 + "run_after": { 174 + "name": "run_after", 175 + "type": "timestamp with time zone", 176 + "primaryKey": false, 177 + "notNull": true, 178 + "default": "now()" 179 + }, 180 + "locked_by": { 181 + "name": "locked_by", 182 + "type": "text", 183 + "primaryKey": false, 184 + "notNull": false 185 + }, 186 + "locked_until": { 187 + "name": "locked_until", 188 + "type": "timestamp with time zone", 189 + "primaryKey": false, 190 + "notNull": false 191 + }, 192 + "status": { 193 + "name": "status", 194 + "type": "text", 195 + "primaryKey": false, 196 + "notNull": true, 197 + "default": "'queued'" 198 + }, 199 + "last_error": { 200 + "name": "last_error", 201 + "type": "text", 202 + "primaryKey": false, 203 + "notNull": false 204 + }, 205 + "created_at": { 206 + "name": "created_at", 207 + "type": "timestamp with time zone", 208 + "primaryKey": false, 209 + "notNull": true, 210 + "default": "now()" 211 + }, 212 + "updated_at": { 213 + "name": "updated_at", 214 + "type": "timestamp with time zone", 215 + "primaryKey": false, 216 + "notNull": false 217 + } 218 + }, 219 + "indexes": { 220 + "job_status_run_after_idx": { 221 + "name": "job_status_run_after_idx", 222 + "columns": [ 223 + { 224 + "expression": "status", 225 + "isExpression": false, 226 + "asc": true, 227 + "nulls": "last" 228 + }, 229 + { 230 + "expression": "run_after", 231 + "isExpression": false, 232 + "asc": true, 233 + "nulls": "last" 234 + } 235 + ], 236 + "isUnique": false, 237 + "concurrently": false, 238 + "method": "btree", 239 + "with": {} 240 + } 241 + }, 242 + "foreignKeys": {}, 243 + "compositePrimaryKeys": {}, 244 + "uniqueConstraints": {}, 245 + "policies": {}, 246 + "checkConstraints": { 247 + "job_status_chk": { 248 + "name": "job_status_chk", 249 + "value": "\"job\".\"status\" in ('queued','running','done','failed')" 250 + } 251 + }, 252 + "isRLSEnabled": false 253 + }, 254 + "public.repo_mapping": { 255 + "name": "repo_mapping", 256 + "schema": "", 257 + "columns": { 258 + "id": { 259 + "name": "id", 260 + "type": "bigserial", 261 + "primaryKey": true, 262 + "notNull": true 263 + }, 264 + "installation_id": { 265 + "name": "installation_id", 266 + "type": "bigint", 267 + "primaryKey": false, 268 + "notNull": true 269 + }, 270 + "github_repo_id": { 271 + "name": "github_repo_id", 272 + "type": "bigint", 273 + "primaryKey": false, 274 + "notNull": true 275 + }, 276 + "github_full_name": { 277 + "name": "github_full_name", 278 + "type": "text", 279 + "primaryKey": false, 280 + "notNull": true 281 + }, 282 + "tangled_repo_did": { 283 + "name": "tangled_repo_did", 284 + "type": "text", 285 + "primaryKey": false, 286 + "notNull": false 287 + }, 288 + "tangled_full_name": { 289 + "name": "tangled_full_name", 290 + "type": "text", 291 + "primaryKey": false, 292 + "notNull": false 293 + }, 294 + "knot": { 295 + "name": "knot", 296 + "type": "text", 297 + "primaryKey": false, 298 + "notNull": false 299 + }, 300 + "primary_side": { 301 + "name": "primary_side", 302 + "type": "text", 303 + "primaryKey": false, 304 + "notNull": true, 305 + "default": "'github'" 306 + }, 307 + "last_synced_refs": { 308 + "name": "last_synced_refs", 309 + "type": "jsonb", 310 + "primaryKey": false, 311 + "notNull": true, 312 + "default": "'{}'::jsonb" 313 + }, 314 + "status": { 315 + "name": "status", 316 + "type": "text", 317 + "primaryKey": false, 318 + "notNull": true, 319 + "default": "'pending'" 320 + }, 321 + "last_error": { 322 + "name": "last_error", 323 + "type": "text", 324 + "primaryKey": false, 325 + "notNull": false 326 + }, 327 + "disabled_at": { 328 + "name": "disabled_at", 329 + "type": "timestamp with time zone", 330 + "primaryKey": false, 331 + "notNull": false 332 + }, 333 + "created_at": { 334 + "name": "created_at", 335 + "type": "timestamp with time zone", 336 + "primaryKey": false, 337 + "notNull": true, 338 + "default": "now()" 339 + }, 340 + "updated_at": { 341 + "name": "updated_at", 342 + "type": "timestamp with time zone", 343 + "primaryKey": false, 344 + "notNull": false 345 + } 346 + }, 347 + "indexes": { 348 + "repo_mapping_installation_idx": { 349 + "name": "repo_mapping_installation_idx", 350 + "columns": [ 351 + { 352 + "expression": "installation_id", 353 + "isExpression": false, 354 + "asc": true, 355 + "nulls": "last" 356 + } 357 + ], 358 + "isUnique": false, 359 + "concurrently": false, 360 + "method": "btree", 361 + "with": {} 362 + } 363 + }, 364 + "foreignKeys": { 365 + "repo_mapping_installation_id_installation_id_fk": { 366 + "name": "repo_mapping_installation_id_installation_id_fk", 367 + "tableFrom": "repo_mapping", 368 + "tableTo": "installation", 369 + "columnsFrom": [ 370 + "installation_id" 371 + ], 372 + "columnsTo": [ 373 + "id" 374 + ], 375 + "onDelete": "cascade", 376 + "onUpdate": "no action" 377 + } 378 + }, 379 + "compositePrimaryKeys": {}, 380 + "uniqueConstraints": { 381 + "repo_mapping_installation_repo_unq": { 382 + "name": "repo_mapping_installation_repo_unq", 383 + "nullsNotDistinct": false, 384 + "columns": [ 385 + "installation_id", 386 + "github_repo_id" 387 + ] 388 + } 389 + }, 390 + "policies": {}, 391 + "checkConstraints": { 392 + "repo_mapping_primary_side_chk": { 393 + "name": "repo_mapping_primary_side_chk", 394 + "value": "\"repo_mapping\".\"primary_side\" in ('github','tangled')" 395 + }, 396 + "repo_mapping_status_chk": { 397 + "name": "repo_mapping_status_chk", 398 + "value": "\"repo_mapping\".\"status\" in ('pending','enrolling','active','error')" 399 + } 400 + }, 401 + "isRLSEnabled": false 402 + }, 403 + "public.ssh_key": { 404 + "name": "ssh_key", 405 + "schema": "", 406 + "columns": { 407 + "id": { 408 + "name": "id", 409 + "type": "bigserial", 410 + "primaryKey": true, 411 + "notNull": true 412 + }, 413 + "installation_id": { 414 + "name": "installation_id", 415 + "type": "bigint", 416 + "primaryKey": false, 417 + "notNull": true 418 + }, 419 + "did": { 420 + "name": "did", 421 + "type": "text", 422 + "primaryKey": false, 423 + "notNull": true 424 + }, 425 + "public_key": { 426 + "name": "public_key", 427 + "type": "text", 428 + "primaryKey": false, 429 + "notNull": true 430 + }, 431 + "private_key_ciphertext": { 432 + "name": "private_key_ciphertext", 433 + "type": "bytea", 434 + "primaryKey": false, 435 + "notNull": true 436 + }, 437 + "private_key_nonce": { 438 + "name": "private_key_nonce", 439 + "type": "bytea", 440 + "primaryKey": false, 441 + "notNull": true 442 + }, 443 + "tangled_key_rkey": { 444 + "name": "tangled_key_rkey", 445 + "type": "text", 446 + "primaryKey": false, 447 + "notNull": false 448 + }, 449 + "created_at": { 450 + "name": "created_at", 451 + "type": "timestamp with time zone", 452 + "primaryKey": false, 453 + "notNull": true, 454 + "default": "now()" 455 + }, 456 + "rotated_at": { 457 + "name": "rotated_at", 458 + "type": "timestamp with time zone", 459 + "primaryKey": false, 460 + "notNull": false 461 + } 462 + }, 463 + "indexes": { 464 + "ssh_key_installation_idx": { 465 + "name": "ssh_key_installation_idx", 466 + "columns": [ 467 + { 468 + "expression": "installation_id", 469 + "isExpression": false, 470 + "asc": true, 471 + "nulls": "last" 472 + } 473 + ], 474 + "isUnique": false, 475 + "concurrently": false, 476 + "method": "btree", 477 + "with": {} 478 + } 479 + }, 480 + "foreignKeys": { 481 + "ssh_key_installation_id_installation_id_fk": { 482 + "name": "ssh_key_installation_id_installation_id_fk", 483 + "tableFrom": "ssh_key", 484 + "tableTo": "installation", 485 + "columnsFrom": [ 486 + "installation_id" 487 + ], 488 + "columnsTo": [ 489 + "id" 490 + ], 491 + "onDelete": "cascade", 492 + "onUpdate": "no action" 493 + } 494 + }, 495 + "compositePrimaryKeys": {}, 496 + "uniqueConstraints": { 497 + "ssh_key_installation_did_unq": { 498 + "name": "ssh_key_installation_did_unq", 499 + "nullsNotDistinct": false, 500 + "columns": [ 501 + "installation_id", 502 + "did" 503 + ] 504 + } 505 + }, 506 + "policies": {}, 507 + "checkConstraints": {}, 508 + "isRLSEnabled": false 509 + }, 510 + "public.user_identity": { 511 + "name": "user_identity", 512 + "schema": "", 513 + "columns": { 514 + "did": { 515 + "name": "did", 516 + "type": "text", 517 + "primaryKey": true, 518 + "notNull": true 519 + }, 520 + "handle": { 521 + "name": "handle", 522 + "type": "text", 523 + "primaryKey": false, 524 + "notNull": false 525 + }, 526 + "installation_id": { 527 + "name": "installation_id", 528 + "type": "bigint", 529 + "primaryKey": false, 530 + "notNull": false 531 + }, 532 + "created_at": { 533 + "name": "created_at", 534 + "type": "timestamp with time zone", 535 + "primaryKey": false, 536 + "notNull": true, 537 + "default": "now()" 538 + }, 539 + "updated_at": { 540 + "name": "updated_at", 541 + "type": "timestamp with time zone", 542 + "primaryKey": false, 543 + "notNull": false 544 + } 545 + }, 546 + "indexes": { 547 + "user_identity_installation_idx": { 548 + "name": "user_identity_installation_idx", 549 + "columns": [ 550 + { 551 + "expression": "installation_id", 552 + "isExpression": false, 553 + "asc": true, 554 + "nulls": "last" 555 + } 556 + ], 557 + "isUnique": false, 558 + "concurrently": false, 559 + "method": "btree", 560 + "with": {} 561 + } 562 + }, 563 + "foreignKeys": { 564 + "user_identity_installation_id_installation_id_fk": { 565 + "name": "user_identity_installation_id_installation_id_fk", 566 + "tableFrom": "user_identity", 567 + "tableTo": "installation", 568 + "columnsFrom": [ 569 + "installation_id" 570 + ], 571 + "columnsTo": [ 572 + "id" 573 + ], 574 + "onDelete": "cascade", 575 + "onUpdate": "no action" 576 + } 577 + }, 578 + "compositePrimaryKeys": {}, 579 + "uniqueConstraints": {}, 580 + "policies": {}, 581 + "checkConstraints": {}, 582 + "isRLSEnabled": false 583 + }, 584 + "public.webhook_event": { 585 + "name": "webhook_event", 586 + "schema": "", 587 + "columns": { 588 + "delivery_id": { 589 + "name": "delivery_id", 590 + "type": "uuid", 591 + "primaryKey": true, 592 + "notNull": true 593 + }, 594 + "source": { 595 + "name": "source", 596 + "type": "text", 597 + "primaryKey": false, 598 + "notNull": true 599 + }, 600 + "event": { 601 + "name": "event", 602 + "type": "text", 603 + "primaryKey": false, 604 + "notNull": true 605 + }, 606 + "received_at": { 607 + "name": "received_at", 608 + "type": "timestamp with time zone", 609 + "primaryKey": false, 610 + "notNull": true, 611 + "default": "now()" 612 + }, 613 + "processed_at": { 614 + "name": "processed_at", 615 + "type": "timestamp with time zone", 616 + "primaryKey": false, 617 + "notNull": false 618 + } 619 + }, 620 + "indexes": {}, 621 + "foreignKeys": {}, 622 + "compositePrimaryKeys": {}, 623 + "uniqueConstraints": {}, 624 + "policies": {}, 625 + "checkConstraints": { 626 + "webhook_event_source_chk": { 627 + "name": "webhook_event_source_chk", 628 + "value": "\"webhook_event\".\"source\" in ('github','tangled')" 629 + } 630 + }, 631 + "isRLSEnabled": false 632 + } 633 + }, 634 + "enums": {}, 635 + "schemas": {}, 636 + "sequences": {}, 637 + "roles": {}, 638 + "policies": {}, 639 + "views": {}, 640 + "_meta": { 641 + "columns": {}, 642 + "schemas": {}, 643 + "tables": {} 644 + } 645 + }
+13
server/db/migrations/meta/_journal.json
··· 1 + { 2 + "version": "7", 3 + "dialect": "postgresql", 4 + "entries": [ 5 + { 6 + "idx": 0, 7 + "version": "7", 8 + "when": 1777890810058, 9 + "tag": "0000_initial", 10 + "breakpoints": true 11 + } 12 + ] 13 + }
+151
server/db/schema.ts
··· 1 + import { sql } from 'drizzle-orm' 2 + import { 3 + bigint, 4 + bigserial, 5 + check, 6 + customType, 7 + index, 8 + integer, 9 + jsonb, 10 + pgTable, 11 + text, 12 + timestamp, 13 + unique, 14 + uuid, 15 + } from 'drizzle-orm/pg-core' 16 + 17 + const bytea = customType<{ data: Buffer, notNull: false, default: false }>({ 18 + dataType() { 19 + return 'bytea' 20 + }, 21 + }) 22 + 23 + export const installation = pgTable('installation', { 24 + id: bigint('id', { mode: 'number' }).primaryKey(), 25 + // Cache of GitHub's account.login at last webhook; can drift if the user/org 26 + // is renamed. Refresh on every webhook. Never use as a join key — join on 27 + // accountId, which is stable. 28 + accountLogin: text('account_login').notNull(), 29 + accountId: bigint('account_id', { mode: 'number' }).notNull(), 30 + accountType: text('account_type').notNull(), 31 + // Set when GitHub fires installation.suspend; cleared on installation.unsuspend. 32 + // The worker refuses to process jobs for suspended installs. 33 + suspendedAt: timestamp('suspended_at', { withTimezone: true }), 34 + createdAt: timestamp('created_at', { withTimezone: true }).defaultNow().notNull(), 35 + }, table => [ 36 + check('installation_account_type_chk', sql`${table.accountType} in ('User','Organization')`), 37 + ]) 38 + 39 + export const userIdentity = pgTable('user_identity', { 40 + did: text('did').primaryKey(), 41 + handle: text('handle'), 42 + installationId: bigint('installation_id', { mode: 'number' }) 43 + .references(() => installation.id, { onDelete: 'cascade' }), 44 + createdAt: timestamp('created_at', { withTimezone: true }).defaultNow().notNull(), 45 + updatedAt: timestamp('updated_at', { withTimezone: true }), 46 + }, table => [ 47 + index('user_identity_installation_idx').on(table.installationId), 48 + ]) 49 + 50 + export const sshKey = pgTable('ssh_key', { 51 + id: bigserial('id', { mode: 'number' }).primaryKey(), 52 + installationId: bigint('installation_id', { mode: 'number' }).notNull() 53 + .references(() => installation.id, { onDelete: 'cascade' }), 54 + did: text('did').notNull(), 55 + publicKey: text('public_key').notNull(), 56 + privateKeyCiphertext: bytea('private_key_ciphertext').notNull(), 57 + privateKeyNonce: bytea('private_key_nonce').notNull(), 58 + tangledKeyRkey: text('tangled_key_rkey'), 59 + createdAt: timestamp('created_at', { withTimezone: true }).defaultNow().notNull(), 60 + rotatedAt: timestamp('rotated_at', { withTimezone: true }), 61 + }, table => [ 62 + unique('ssh_key_installation_did_unq').on(table.installationId, table.did), 63 + index('ssh_key_installation_idx').on(table.installationId), 64 + ]) 65 + 66 + export const repoMapping = pgTable('repo_mapping', { 67 + id: bigserial('id', { mode: 'number' }).primaryKey(), 68 + installationId: bigint('installation_id', { mode: 'number' }).notNull() 69 + .references(() => installation.id, { onDelete: 'cascade' }), 70 + githubRepoId: bigint('github_repo_id', { mode: 'number' }).notNull(), 71 + // Cache of `<owner>/<name>` at last webhook; renames update this. Display only; 72 + // never join on it. Stable identity is githubRepoId. 73 + githubFullName: text('github_full_name').notNull(), 74 + tangledRepoDid: text('tangled_repo_did'), 75 + tangledFullName: text('tangled_full_name'), 76 + knot: text('knot'), 77 + primarySide: text('primary_side').notNull().default('github'), 78 + // Loop-avoidance state: { 'refs/heads/main': '<sha>', ... }. Updated after a 79 + // successful push to the replica side. See PLAN.md "Loop avoidance". 80 + lastSyncedRefs: jsonb('last_synced_refs').notNull().default(sql`'{}'::jsonb`), 81 + status: text('status').notNull().default('pending'), 82 + lastError: text('last_error'), 83 + // User-initiated stop. Worker skips jobs for repos with disabledAt set. 84 + // Preserves the row (and its status) so we can resume on re-enable. 85 + disabledAt: timestamp('disabled_at', { withTimezone: true }), 86 + createdAt: timestamp('created_at', { withTimezone: true }).defaultNow().notNull(), 87 + updatedAt: timestamp('updated_at', { withTimezone: true }), 88 + }, table => [ 89 + unique('repo_mapping_installation_repo_unq').on(table.installationId, table.githubRepoId), 90 + index('repo_mapping_installation_idx').on(table.installationId), 91 + check('repo_mapping_primary_side_chk', sql`${table.primarySide} in ('github','tangled')`), 92 + check('repo_mapping_status_chk', sql`${table.status} in ('pending','enrolling','active','error')`), 93 + ]) 94 + 95 + // Hand-rolled queue. Worker claim pattern: SELECT ... FOR UPDATE SKIP LOCKED. 96 + // 97 + // IMPORTANT: payload is a *minimal envelope* like 98 + // { deliveryId, installationId, githubRepoId, ref, before, after, kind }. 99 + // Do NOT store full webhook bodies here — they contain unbounded user-controlled 100 + // input (commit messages, descriptions, branch names). Re-fetch from the GitHub 101 + // API at job run time using the installation token; that gives us fresh data on 102 + // retry too. 103 + export const job = pgTable('job', { 104 + id: bigserial('id', { mode: 'number' }).primaryKey(), 105 + kind: text('kind').notNull(), 106 + payload: jsonb('payload').notNull(), 107 + attempts: integer('attempts').notNull().default(0), 108 + runAfter: timestamp('run_after', { withTimezone: true }).defaultNow().notNull(), 109 + lockedBy: text('locked_by'), 110 + lockedUntil: timestamp('locked_until', { withTimezone: true }), 111 + status: text('status').notNull().default('queued'), 112 + lastError: text('last_error'), 113 + createdAt: timestamp('created_at', { withTimezone: true }).defaultNow().notNull(), 114 + updatedAt: timestamp('updated_at', { withTimezone: true }), 115 + }, table => [ 116 + index('job_status_run_after_idx').on(table.status, table.runAfter), 117 + check('job_status_chk', sql`${table.status} in ('queued','running','done','failed')`), 118 + ]) 119 + 120 + // Idempotency + audit trail for incoming webhooks. Keyed by X-GitHub-Delivery so 121 + // redeliveries are free-on-conflict. Intentionally has no `payload` column — see 122 + // the note on `job` above; we do not persist webhook bodies. 123 + export const webhookEvent = pgTable('webhook_event', { 124 + deliveryId: uuid('delivery_id').primaryKey(), 125 + source: text('source').notNull(), 126 + event: text('event').notNull(), 127 + receivedAt: timestamp('received_at', { withTimezone: true }).defaultNow().notNull(), 128 + processedAt: timestamp('processed_at', { withTimezone: true }), 129 + }, table => [ 130 + check('webhook_event_source_chk', sql`${table.source} in ('github','tangled')`), 131 + ]) 132 + 133 + // AT Protocol OAuth stores. The values are encrypted at rest (libsodium sealed 134 + // box) because they contain access tokens, refresh tokens, and the DPoP private 135 + // key for the user's PDS. The encryption layer wraps the OAuth library's store 136 + // interface (encrypt in set, decrypt in get); see commit 9 (`feat: generate 137 + // per-install ssh key and publish publickey record`) for the shared helper. 138 + export const atprotoState = pgTable('atproto_state', { 139 + key: text('key').primaryKey(), 140 + valueCiphertext: bytea('value_ciphertext').notNull(), 141 + valueNonce: bytea('value_nonce').notNull(), 142 + createdAt: timestamp('created_at', { withTimezone: true }).defaultNow().notNull(), 143 + }) 144 + 145 + export const atprotoSession = pgTable('atproto_session', { 146 + sub: text('sub').primaryKey(), 147 + valueCiphertext: bytea('value_ciphertext').notNull(), 148 + valueNonce: bytea('value_nonce').notNull(), 149 + createdAt: timestamp('created_at', { withTimezone: true }).defaultNow().notNull(), 150 + updatedAt: timestamp('updated_at', { withTimezone: true }), 151 + })
+18
server/utils/db.ts
··· 1 + import { neon } from '@neondatabase/serverless' 2 + import { drizzle } from 'drizzle-orm/neon-http' 3 + import * as schema from '../db/schema' 4 + 5 + let _db: ReturnType<typeof drizzle<typeof schema>> | undefined 6 + 7 + export function useDb() { 8 + if (_db) return _db 9 + const { databaseUrl } = useRuntimeConfig() 10 + if (!databaseUrl) { 11 + throw new Error('NUXT_DATABASE_URL is not set') 12 + } 13 + const client = neon(databaseUrl) 14 + _db = drizzle(client, { schema }) 15 + return _db 16 + } 17 + 18 + export { schema }