WIP: Another at:// production from me
1
fork

Configure Feed

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

changed to postgres for drizzle

+546 -191
+1 -1
drizzle.config.ts
··· 4 4 5 5 export default defineConfig({ 6 6 schema: './src/lib/server/db/schema.ts', 7 - dialect: 'sqlite', 7 + dialect: 'postgresql', 8 8 dbCredentials: { url: process.env.DATABASE_URL }, 9 9 verbose: true, 10 10 strict: true
-14
drizzle/0000_cultured_thor_girl.sql
··· 1 - CREATE TABLE `key_value_store` ( 2 - `key` text PRIMARY KEY NOT NULL, 3 - `value` text, 4 - `storeName` text, 5 - `createdAt` integer 6 - ); 7 - --> statement-breakpoint 8 - CREATE TABLE `session_store` ( 9 - `id` text PRIMARY KEY NOT NULL, 10 - `did` text NOT NULL, 11 - `handle` text NOT NULL, 12 - `createdAt` integer NOT NULL, 13 - `expiresAt` integer NOT NULL 14 - );
+4
drizzle/0000_nervous_freak.sql
··· 1 + CREATE TABLE "test" ( 2 + "id" integer PRIMARY KEY GENERATED ALWAYS AS IDENTITY (sequence name "test_id_seq" INCREMENT BY 1 MINVALUE 1 MAXVALUE 2147483647 START WITH 1 CACHE 1), 3 + "name" varchar NOT NULL 4 + );
+32 -78
drizzle/meta/0000_snapshot.json
··· 1 1 { 2 - "version": "6", 3 - "dialect": "sqlite", 4 - "id": "a1fafe21-58d6-4360-80a9-ab14cdefb1d6", 2 + "id": "b5b82b54-3237-45a5-b53d-72f531d83653", 5 3 "prevId": "00000000-0000-0000-0000-000000000000", 4 + "version": "7", 5 + "dialect": "postgresql", 6 6 "tables": { 7 - "key_value_store": { 8 - "name": "key_value_store", 9 - "columns": { 10 - "key": { 11 - "name": "key", 12 - "type": "text", 13 - "primaryKey": true, 14 - "notNull": true, 15 - "autoincrement": false 16 - }, 17 - "value": { 18 - "name": "value", 19 - "type": "text", 20 - "primaryKey": false, 21 - "notNull": false, 22 - "autoincrement": false 23 - }, 24 - "storeName": { 25 - "name": "storeName", 26 - "type": "text", 27 - "primaryKey": false, 28 - "notNull": false, 29 - "autoincrement": false 30 - }, 31 - "createdAt": { 32 - "name": "createdAt", 33 - "type": "integer", 34 - "primaryKey": false, 35 - "notNull": false, 36 - "autoincrement": false 37 - } 38 - }, 39 - "indexes": {}, 40 - "foreignKeys": {}, 41 - "compositePrimaryKeys": {}, 42 - "uniqueConstraints": {}, 43 - "checkConstraints": {} 44 - }, 45 - "session_store": { 46 - "name": "session_store", 7 + "public.test": { 8 + "name": "test", 9 + "schema": "", 47 10 "columns": { 48 11 "id": { 49 12 "name": "id", 50 - "type": "text", 51 - "primaryKey": true, 52 - "notNull": true, 53 - "autoincrement": false 54 - }, 55 - "did": { 56 - "name": "did", 57 - "type": "text", 58 - "primaryKey": false, 59 - "notNull": true, 60 - "autoincrement": false 61 - }, 62 - "handle": { 63 - "name": "handle", 64 - "type": "text", 65 - "primaryKey": false, 66 - "notNull": true, 67 - "autoincrement": false 68 - }, 69 - "createdAt": { 70 - "name": "createdAt", 71 13 "type": "integer", 72 - "primaryKey": false, 14 + "primaryKey": true, 73 15 "notNull": true, 74 - "autoincrement": false 16 + "identity": { 17 + "type": "always", 18 + "name": "test_id_seq", 19 + "schema": "public", 20 + "increment": "1", 21 + "startWith": "1", 22 + "minValue": "1", 23 + "maxValue": "2147483647", 24 + "cache": "1", 25 + "cycle": false 26 + } 75 27 }, 76 - "expiresAt": { 77 - "name": "expiresAt", 78 - "type": "integer", 28 + "name": { 29 + "name": "name", 30 + "type": "varchar", 79 31 "primaryKey": false, 80 - "notNull": true, 81 - "autoincrement": false 32 + "notNull": true 82 33 } 83 34 }, 84 35 "indexes": {}, 85 36 "foreignKeys": {}, 86 37 "compositePrimaryKeys": {}, 87 38 "uniqueConstraints": {}, 88 - "checkConstraints": {} 39 + "policies": {}, 40 + "checkConstraints": {}, 41 + "isRLSEnabled": false 89 42 } 90 43 }, 44 + "enums": {}, 45 + "schemas": {}, 46 + "sequences": {}, 47 + "roles": {}, 48 + "policies": {}, 91 49 "views": {}, 92 - "enums": {}, 93 50 "_meta": { 51 + "columns": {}, 94 52 "schemas": {}, 95 - "tables": {}, 96 - "columns": {} 97 - }, 98 - "internal": { 99 - "indexes": {} 53 + "tables": {} 100 54 } 101 55 }
+4 -4
drizzle/meta/_journal.json
··· 1 1 { 2 2 "version": "7", 3 - "dialect": "sqlite", 3 + "dialect": "postgresql", 4 4 "entries": [ 5 5 { 6 6 "idx": 0, 7 - "version": "6", 8 - "when": 1765476251050, 9 - "tag": "0000_cultured_thor_girl", 7 + "version": "7", 8 + "when": 1765827212209, 9 + "tag": "0000_nervous_freak", 10 10 "breakpoints": true 11 11 } 12 12 ]
+3 -2
package.json
··· 24 24 "@sveltejs/adapter-auto": "^7.0.0", 25 25 "@sveltejs/kit": "^2.48.5", 26 26 "@sveltejs/vite-plugin-svelte": "^6.2.1", 27 - "@types/better-sqlite3": "^7.6.13", 28 27 "@types/node": "^24", 28 + "@types/pg": "^8.16.0", 29 29 "dotenv": "^17.2.3", 30 30 "drizzle-kit": "^0.31.7", 31 31 "drizzle-orm": "^0.44.7", ··· 34 34 "globals": "^16.5.0", 35 35 "svelte": "^5.43.8", 36 36 "svelte-check": "^4.3.4", 37 + "tsx": "^4.21.0", 37 38 "typescript": "^5.9.3", 38 39 "typescript-eslint": "^8.47.0", 39 40 "vite": "^7.2.2" ··· 51 52 "@oslojs/encoding": "^1.1.0", 52 53 "@sveltejs/adapter-node": "^5.4.0", 53 54 "@valkey/valkey-glide": "^2.2.1", 54 - "better-sqlite3": "12.4.1", 55 55 "node-schedule": "^2.1.1", 56 + "pg": "^8.16.3", 56 57 "pino": "^10.1.0" 57 58 }, 58 59 "optionalDependencies": {
+475 -46
pnpm-lock.yaml
··· 40 40 version: 1.1.0 41 41 '@sveltejs/adapter-node': 42 42 specifier: ^5.4.0 43 - version: 5.4.0(@sveltejs/kit@2.49.2(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2)))(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2))) 43 + version: 5.4.0(@sveltejs/kit@2.49.2(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2)(tsx@4.21.0)))(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2)(tsx@4.21.0))) 44 44 '@valkey/valkey-glide': 45 45 specifier: ^2.2.1 46 46 version: 2.2.1 47 - better-sqlite3: 48 - specifier: 12.4.1 49 - version: 12.4.1 50 47 node-schedule: 51 48 specifier: ^2.1.1 52 49 version: 2.1.1 50 + pg: 51 + specifier: ^8.16.3 52 + version: 8.16.3 53 53 pino: 54 54 specifier: ^10.1.0 55 55 version: 10.1.0 ··· 62 62 version: 9.39.1 63 63 '@sveltejs/adapter-auto': 64 64 specifier: ^7.0.0 65 - version: 7.0.0(@sveltejs/kit@2.49.2(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2)))(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2))) 65 + version: 7.0.0(@sveltejs/kit@2.49.2(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2)(tsx@4.21.0)))(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2)(tsx@4.21.0))) 66 66 '@sveltejs/kit': 67 67 specifier: ^2.48.5 68 - version: 2.49.2(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2)))(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2)) 68 + version: 2.49.2(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2)(tsx@4.21.0)))(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2)(tsx@4.21.0)) 69 69 '@sveltejs/vite-plugin-svelte': 70 70 specifier: ^6.2.1 71 - version: 6.2.1(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2)) 72 - '@types/better-sqlite3': 73 - specifier: ^7.6.13 74 - version: 7.6.13 71 + version: 6.2.1(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2)(tsx@4.21.0)) 75 72 '@types/node': 76 73 specifier: ^24 77 74 version: 24.10.2 75 + '@types/pg': 76 + specifier: ^8.16.0 77 + version: 8.16.0 78 78 dotenv: 79 79 specifier: ^17.2.3 80 80 version: 17.2.3 ··· 83 83 version: 0.31.8 84 84 drizzle-orm: 85 85 specifier: ^0.44.7 86 - version: 0.44.7(@types/better-sqlite3@7.6.13)(better-sqlite3@12.4.1) 86 + version: 0.44.7(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.4.1)(pg@8.16.3) 87 87 eslint: 88 88 specifier: ^9.39.1 89 89 version: 9.39.1 ··· 99 99 svelte-check: 100 100 specifier: ^4.3.4 101 101 version: 4.3.4(picomatch@4.0.3)(svelte@5.45.8)(typescript@5.9.3) 102 + tsx: 103 + specifier: ^4.21.0 104 + version: 4.21.0 102 105 typescript: 103 106 specifier: ^5.9.3 104 107 version: 5.9.3 ··· 107 110 version: 8.49.0(eslint@9.39.1)(typescript@5.9.3) 108 111 vite: 109 112 specifier: ^7.2.2 110 - version: 7.2.7(@types/node@24.10.2) 113 + version: 7.2.7(@types/node@24.10.2)(tsx@4.21.0) 111 114 optionalDependencies: 112 115 '@rollup/rollup-linux-x64-musl': 113 116 specifier: ^4.52.5 ··· 227 230 228 231 '@esbuild/aix-ppc64@0.25.12': 229 232 resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} 233 + engines: {node: '>=18'} 234 + cpu: [ppc64] 235 + os: [aix] 236 + 237 + '@esbuild/aix-ppc64@0.27.1': 238 + resolution: {integrity: sha512-HHB50pdsBX6k47S4u5g/CaLjqS3qwaOVE5ILsq64jyzgMhLuCuZ8rGzM9yhsAjfjkbgUPMzZEPa7DAp7yz6vuA==} 230 239 engines: {node: '>=18'} 231 240 cpu: [ppc64] 232 241 os: [aix] ··· 243 252 cpu: [arm64] 244 253 os: [android] 245 254 255 + '@esbuild/android-arm64@0.27.1': 256 + resolution: {integrity: sha512-45fuKmAJpxnQWixOGCrS+ro4Uvb4Re9+UTieUY2f8AEc+t7d4AaZ6eUJ3Hva7dtrxAAWHtlEFsXFMAgNnGU9uQ==} 257 + engines: {node: '>=18'} 258 + cpu: [arm64] 259 + os: [android] 260 + 246 261 '@esbuild/android-arm@0.18.20': 247 262 resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} 248 263 engines: {node: '>=12'} ··· 255 270 cpu: [arm] 256 271 os: [android] 257 272 273 + '@esbuild/android-arm@0.27.1': 274 + resolution: {integrity: sha512-kFqa6/UcaTbGm/NncN9kzVOODjhZW8e+FRdSeypWe6j33gzclHtwlANs26JrupOntlcWmB0u8+8HZo8s7thHvg==} 275 + engines: {node: '>=18'} 276 + cpu: [arm] 277 + os: [android] 278 + 258 279 '@esbuild/android-x64@0.18.20': 259 280 resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} 260 281 engines: {node: '>=12'} ··· 267 288 cpu: [x64] 268 289 os: [android] 269 290 291 + '@esbuild/android-x64@0.27.1': 292 + resolution: {integrity: sha512-LBEpOz0BsgMEeHgenf5aqmn/lLNTFXVfoWMUox8CtWWYK9X4jmQzWjoGoNb8lmAYml/tQ/Ysvm8q7szu7BoxRQ==} 293 + engines: {node: '>=18'} 294 + cpu: [x64] 295 + os: [android] 296 + 270 297 '@esbuild/darwin-arm64@0.18.20': 271 298 resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} 272 299 engines: {node: '>=12'} ··· 275 302 276 303 '@esbuild/darwin-arm64@0.25.12': 277 304 resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} 305 + engines: {node: '>=18'} 306 + cpu: [arm64] 307 + os: [darwin] 308 + 309 + '@esbuild/darwin-arm64@0.27.1': 310 + resolution: {integrity: sha512-veg7fL8eMSCVKL7IW4pxb54QERtedFDfY/ASrumK/SbFsXnRazxY4YykN/THYqFnFwJ0aVjiUrVG2PwcdAEqQQ==} 278 311 engines: {node: '>=18'} 279 312 cpu: [arm64] 280 313 os: [darwin] ··· 291 324 cpu: [x64] 292 325 os: [darwin] 293 326 327 + '@esbuild/darwin-x64@0.27.1': 328 + resolution: {integrity: sha512-+3ELd+nTzhfWb07Vol7EZ+5PTbJ/u74nC6iv4/lwIU99Ip5uuY6QoIf0Hn4m2HoV0qcnRivN3KSqc+FyCHjoVQ==} 329 + engines: {node: '>=18'} 330 + cpu: [x64] 331 + os: [darwin] 332 + 294 333 '@esbuild/freebsd-arm64@0.18.20': 295 334 resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} 296 335 engines: {node: '>=12'} ··· 303 342 cpu: [arm64] 304 343 os: [freebsd] 305 344 345 + '@esbuild/freebsd-arm64@0.27.1': 346 + resolution: {integrity: sha512-/8Rfgns4XD9XOSXlzUDepG8PX+AVWHliYlUkFI3K3GB6tqbdjYqdhcb4BKRd7C0BhZSoaCxhv8kTcBrcZWP+xg==} 347 + engines: {node: '>=18'} 348 + cpu: [arm64] 349 + os: [freebsd] 350 + 306 351 '@esbuild/freebsd-x64@0.18.20': 307 352 resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} 308 353 engines: {node: '>=12'} ··· 311 356 312 357 '@esbuild/freebsd-x64@0.25.12': 313 358 resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} 359 + engines: {node: '>=18'} 360 + cpu: [x64] 361 + os: [freebsd] 362 + 363 + '@esbuild/freebsd-x64@0.27.1': 364 + resolution: {integrity: sha512-GITpD8dK9C+r+5yRT/UKVT36h/DQLOHdwGVwwoHidlnA168oD3uxA878XloXebK4Ul3gDBBIvEdL7go9gCUFzQ==} 314 365 engines: {node: '>=18'} 315 366 cpu: [x64] 316 367 os: [freebsd] ··· 327 378 cpu: [arm64] 328 379 os: [linux] 329 380 381 + '@esbuild/linux-arm64@0.27.1': 382 + resolution: {integrity: sha512-W9//kCrh/6in9rWIBdKaMtuTTzNj6jSeG/haWBADqLLa9P8O5YSRDzgD5y9QBok4AYlzS6ARHifAb75V6G670Q==} 383 + engines: {node: '>=18'} 384 + cpu: [arm64] 385 + os: [linux] 386 + 330 387 '@esbuild/linux-arm@0.18.20': 331 388 resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} 332 389 engines: {node: '>=12'} ··· 339 396 cpu: [arm] 340 397 os: [linux] 341 398 399 + '@esbuild/linux-arm@0.27.1': 400 + resolution: {integrity: sha512-ieMID0JRZY/ZeCrsFQ3Y3NlHNCqIhTprJfDgSB3/lv5jJZ8FX3hqPyXWhe+gvS5ARMBJ242PM+VNz/ctNj//eA==} 401 + engines: {node: '>=18'} 402 + cpu: [arm] 403 + os: [linux] 404 + 342 405 '@esbuild/linux-ia32@0.18.20': 343 406 resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} 344 407 engines: {node: '>=12'} ··· 351 414 cpu: [ia32] 352 415 os: [linux] 353 416 417 + '@esbuild/linux-ia32@0.27.1': 418 + resolution: {integrity: sha512-VIUV4z8GD8rtSVMfAj1aXFahsi/+tcoXXNYmXgzISL+KB381vbSTNdeZHHHIYqFyXcoEhu9n5cT+05tRv13rlw==} 419 + engines: {node: '>=18'} 420 + cpu: [ia32] 421 + os: [linux] 422 + 354 423 '@esbuild/linux-loong64@0.18.20': 355 424 resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} 356 425 engines: {node: '>=12'} ··· 359 428 360 429 '@esbuild/linux-loong64@0.25.12': 361 430 resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} 431 + engines: {node: '>=18'} 432 + cpu: [loong64] 433 + os: [linux] 434 + 435 + '@esbuild/linux-loong64@0.27.1': 436 + resolution: {integrity: sha512-l4rfiiJRN7sTNI//ff65zJ9z8U+k6zcCg0LALU5iEWzY+a1mVZ8iWC1k5EsNKThZ7XCQ6YWtsZ8EWYm7r1UEsg==} 362 437 engines: {node: '>=18'} 363 438 cpu: [loong64] 364 439 os: [linux] ··· 375 450 cpu: [mips64el] 376 451 os: [linux] 377 452 453 + '@esbuild/linux-mips64el@0.27.1': 454 + resolution: {integrity: sha512-U0bEuAOLvO/DWFdygTHWY8C067FXz+UbzKgxYhXC0fDieFa0kDIra1FAhsAARRJbvEyso8aAqvPdNxzWuStBnA==} 455 + engines: {node: '>=18'} 456 + cpu: [mips64el] 457 + os: [linux] 458 + 378 459 '@esbuild/linux-ppc64@0.18.20': 379 460 resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} 380 461 engines: {node: '>=12'} ··· 387 468 cpu: [ppc64] 388 469 os: [linux] 389 470 471 + '@esbuild/linux-ppc64@0.27.1': 472 + resolution: {integrity: sha512-NzdQ/Xwu6vPSf/GkdmRNsOfIeSGnh7muundsWItmBsVpMoNPVpM61qNzAVY3pZ1glzzAxLR40UyYM23eaDDbYQ==} 473 + engines: {node: '>=18'} 474 + cpu: [ppc64] 475 + os: [linux] 476 + 390 477 '@esbuild/linux-riscv64@0.18.20': 391 478 resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} 392 479 engines: {node: '>=12'} ··· 399 486 cpu: [riscv64] 400 487 os: [linux] 401 488 489 + '@esbuild/linux-riscv64@0.27.1': 490 + resolution: {integrity: sha512-7zlw8p3IApcsN7mFw0O1Z1PyEk6PlKMu18roImfl3iQHTnr/yAfYv6s4hXPidbDoI2Q0pW+5xeoM4eTCC0UdrQ==} 491 + engines: {node: '>=18'} 492 + cpu: [riscv64] 493 + os: [linux] 494 + 402 495 '@esbuild/linux-s390x@0.18.20': 403 496 resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} 404 497 engines: {node: '>=12'} ··· 407 500 408 501 '@esbuild/linux-s390x@0.25.12': 409 502 resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} 503 + engines: {node: '>=18'} 504 + cpu: [s390x] 505 + os: [linux] 506 + 507 + '@esbuild/linux-s390x@0.27.1': 508 + resolution: {integrity: sha512-cGj5wli+G+nkVQdZo3+7FDKC25Uh4ZVwOAK6A06Hsvgr8WqBBuOy/1s+PUEd/6Je+vjfm6stX0kmib5b/O2Ykw==} 410 509 engines: {node: '>=18'} 411 510 cpu: [s390x] 412 511 os: [linux] ··· 423 522 cpu: [x64] 424 523 os: [linux] 425 524 525 + '@esbuild/linux-x64@0.27.1': 526 + resolution: {integrity: sha512-z3H/HYI9MM0HTv3hQZ81f+AKb+yEoCRlUby1F80vbQ5XdzEMyY/9iNlAmhqiBKw4MJXwfgsh7ERGEOhrM1niMA==} 527 + engines: {node: '>=18'} 528 + cpu: [x64] 529 + os: [linux] 530 + 426 531 '@esbuild/netbsd-arm64@0.25.12': 427 532 resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} 428 533 engines: {node: '>=18'} 429 534 cpu: [arm64] 430 535 os: [netbsd] 431 536 537 + '@esbuild/netbsd-arm64@0.27.1': 538 + resolution: {integrity: sha512-wzC24DxAvk8Em01YmVXyjl96Mr+ecTPyOuADAvjGg+fyBpGmxmcr2E5ttf7Im8D0sXZihpxzO1isus8MdjMCXQ==} 539 + engines: {node: '>=18'} 540 + cpu: [arm64] 541 + os: [netbsd] 542 + 432 543 '@esbuild/netbsd-x64@0.18.20': 433 544 resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} 434 545 engines: {node: '>=12'} ··· 441 552 cpu: [x64] 442 553 os: [netbsd] 443 554 555 + '@esbuild/netbsd-x64@0.27.1': 556 + resolution: {integrity: sha512-1YQ8ybGi2yIXswu6eNzJsrYIGFpnlzEWRl6iR5gMgmsrR0FcNoV1m9k9sc3PuP5rUBLshOZylc9nqSgymI+TYg==} 557 + engines: {node: '>=18'} 558 + cpu: [x64] 559 + os: [netbsd] 560 + 444 561 '@esbuild/openbsd-arm64@0.25.12': 445 562 resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} 563 + engines: {node: '>=18'} 564 + cpu: [arm64] 565 + os: [openbsd] 566 + 567 + '@esbuild/openbsd-arm64@0.27.1': 568 + resolution: {integrity: sha512-5Z+DzLCrq5wmU7RDaMDe2DVXMRm2tTDvX2KU14JJVBN2CT/qov7XVix85QoJqHltpvAOZUAc3ndU56HSMWrv8g==} 446 569 engines: {node: '>=18'} 447 570 cpu: [arm64] 448 571 os: [openbsd] ··· 459 582 cpu: [x64] 460 583 os: [openbsd] 461 584 585 + '@esbuild/openbsd-x64@0.27.1': 586 + resolution: {integrity: sha512-Q73ENzIdPF5jap4wqLtsfh8YbYSZ8Q0wnxplOlZUOyZy7B4ZKW8DXGWgTCZmF8VWD7Tciwv5F4NsRf6vYlZtqg==} 587 + engines: {node: '>=18'} 588 + cpu: [x64] 589 + os: [openbsd] 590 + 462 591 '@esbuild/openharmony-arm64@0.25.12': 463 592 resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} 464 593 engines: {node: '>=18'} 465 594 cpu: [arm64] 466 595 os: [openharmony] 467 596 597 + '@esbuild/openharmony-arm64@0.27.1': 598 + resolution: {integrity: sha512-ajbHrGM/XiK+sXM0JzEbJAen+0E+JMQZ2l4RR4VFwvV9JEERx+oxtgkpoKv1SevhjavK2z2ReHk32pjzktWbGg==} 599 + engines: {node: '>=18'} 600 + cpu: [arm64] 601 + os: [openharmony] 602 + 468 603 '@esbuild/sunos-x64@0.18.20': 469 604 resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} 470 605 engines: {node: '>=12'} ··· 477 612 cpu: [x64] 478 613 os: [sunos] 479 614 615 + '@esbuild/sunos-x64@0.27.1': 616 + resolution: {integrity: sha512-IPUW+y4VIjuDVn+OMzHc5FV4GubIwPnsz6ubkvN8cuhEqH81NovB53IUlrlBkPMEPxvNnf79MGBoz8rZ2iW8HA==} 617 + engines: {node: '>=18'} 618 + cpu: [x64] 619 + os: [sunos] 620 + 480 621 '@esbuild/win32-arm64@0.18.20': 481 622 resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} 482 623 engines: {node: '>=12'} ··· 485 626 486 627 '@esbuild/win32-arm64@0.25.12': 487 628 resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} 629 + engines: {node: '>=18'} 630 + cpu: [arm64] 631 + os: [win32] 632 + 633 + '@esbuild/win32-arm64@0.27.1': 634 + resolution: {integrity: sha512-RIVRWiljWA6CdVu8zkWcRmGP7iRRIIwvhDKem8UMBjPql2TXM5PkDVvvrzMtj1V+WFPB4K7zkIGM7VzRtFkjdg==} 488 635 engines: {node: '>=18'} 489 636 cpu: [arm64] 490 637 os: [win32] ··· 501 648 cpu: [ia32] 502 649 os: [win32] 503 650 651 + '@esbuild/win32-ia32@0.27.1': 652 + resolution: {integrity: sha512-2BR5M8CPbptC1AK5JbJT1fWrHLvejwZidKx3UMSF0ecHMa+smhi16drIrCEggkgviBwLYd5nwrFLSl5Kho96RQ==} 653 + engines: {node: '>=18'} 654 + cpu: [ia32] 655 + os: [win32] 656 + 504 657 '@esbuild/win32-x64@0.18.20': 505 658 resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} 506 659 engines: {node: '>=12'} ··· 513 666 cpu: [x64] 514 667 os: [win32] 515 668 669 + '@esbuild/win32-x64@0.27.1': 670 + resolution: {integrity: sha512-d5X6RMYv6taIymSk8JBP+nxv8DQAMY6A51GPgusqLdK9wBz5wWIXy1KjTck6HnjE9hqJzJRdk+1p/t5soSbCtw==} 671 + engines: {node: '>=18'} 672 + cpu: [x64] 673 + os: [win32] 674 + 516 675 '@eslint-community/eslint-utils@4.9.0': 517 676 resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} 518 677 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} ··· 854 1013 855 1014 '@types/node@24.10.2': 856 1015 resolution: {integrity: sha512-WOhQTZ4G8xZ1tjJTvKOpyEVSGgOTvJAfDK3FNFgELyaTpzhdgHVHeqW8V+UJvzF5BT+/B54T/1S2K6gd9c7bbA==} 1016 + 1017 + '@types/pg@8.16.0': 1018 + resolution: {integrity: sha512-RmhMd/wD+CF8Dfo+cVIy3RR5cl8CyfXQ0tGgW6XBL8L4LM/UTEbNXYRbLwU6w+CgrKBNbrQWt4FUtTfaU5jSYQ==} 857 1019 858 1020 '@types/resolve@1.20.2': 859 1021 resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} ··· 1222 1384 engines: {node: '>=18'} 1223 1385 hasBin: true 1224 1386 1387 + esbuild@0.27.1: 1388 + resolution: {integrity: sha512-yY35KZckJJuVVPXpvjgxiCuVEJT67F6zDeVTv4rizyPrfGBUpZQsvmxnN+C371c2esD/hNMjj4tpBhuueLN7aA==} 1389 + engines: {node: '>=18'} 1390 + hasBin: true 1391 + 1225 1392 escape-string-regexp@4.0.0: 1226 1393 resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 1227 1394 engines: {node: '>=10'} ··· 1576 1743 path-parse@1.0.7: 1577 1744 resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1578 1745 1746 + pg-cloudflare@1.2.7: 1747 + resolution: {integrity: sha512-YgCtzMH0ptvZJslLM1ffsY4EuGaU0cx4XSdXLRFae8bPP4dS5xL1tNB3k2o/N64cHJpwU7dxKli/nZ2lUa5fLg==} 1748 + 1749 + pg-connection-string@2.9.1: 1750 + resolution: {integrity: sha512-nkc6NpDcvPVpZXxrreI/FOtX3XemeLl8E0qFr6F2Lrm/I8WOnaWNhIPK2Z7OHpw7gh5XJThi6j6ppgNoaT1w4w==} 1751 + 1752 + pg-int8@1.0.1: 1753 + resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} 1754 + engines: {node: '>=4.0.0'} 1755 + 1756 + pg-pool@3.10.1: 1757 + resolution: {integrity: sha512-Tu8jMlcX+9d8+QVzKIvM/uJtp07PKr82IUOYEphaWcoBhIYkoHpLXN3qO59nAI11ripznDsEzEv8nUxBVWajGg==} 1758 + peerDependencies: 1759 + pg: '>=8.0' 1760 + 1761 + pg-protocol@1.10.3: 1762 + resolution: {integrity: sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ==} 1763 + 1764 + pg-types@2.2.0: 1765 + resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} 1766 + engines: {node: '>=4'} 1767 + 1768 + pg@8.16.3: 1769 + resolution: {integrity: sha512-enxc1h0jA/aq5oSDMvqyW3q89ra6XIIDZgCX9vkMrnz5DFTw/Ny3Li2lFQ+pt3L6MCgm/5o2o8HW9hiJji+xvw==} 1770 + engines: {node: '>= 16.0.0'} 1771 + peerDependencies: 1772 + pg-native: '>=3.0.1' 1773 + peerDependenciesMeta: 1774 + pg-native: 1775 + optional: true 1776 + 1777 + pgpass@1.0.5: 1778 + resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} 1779 + 1579 1780 picocolors@1.1.1: 1580 1781 resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 1581 1782 ··· 1635 1836 resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} 1636 1837 engines: {node: ^10 || ^12 || >=14} 1637 1838 1839 + postgres-array@2.0.0: 1840 + resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} 1841 + engines: {node: '>=4'} 1842 + 1843 + postgres-bytea@1.0.0: 1844 + resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==} 1845 + engines: {node: '>=0.10.0'} 1846 + 1847 + postgres-date@1.0.7: 1848 + resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} 1849 + engines: {node: '>=0.10.0'} 1850 + 1851 + postgres-interval@1.2.0: 1852 + resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} 1853 + engines: {node: '>=0.10.0'} 1854 + 1638 1855 prebuild-install@7.1.3: 1639 1856 resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==} 1640 1857 engines: {node: '>=10'} ··· 1840 2057 tslib@2.8.1: 1841 2058 resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} 1842 2059 2060 + tsx@4.21.0: 2061 + resolution: {integrity: sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==} 2062 + engines: {node: '>=18.0.0'} 2063 + hasBin: true 2064 + 1843 2065 tunnel-agent@0.6.0: 1844 2066 resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} 1845 2067 ··· 1937 2159 1938 2160 wrappy@1.0.2: 1939 2161 resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 2162 + 2163 + xtend@4.0.2: 2164 + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} 2165 + engines: {node: '>=0.4'} 1940 2166 1941 2167 yaml@1.10.2: 1942 2168 resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} ··· 2157 2383 '@esbuild/aix-ppc64@0.25.12': 2158 2384 optional: true 2159 2385 2386 + '@esbuild/aix-ppc64@0.27.1': 2387 + optional: true 2388 + 2160 2389 '@esbuild/android-arm64@0.18.20': 2161 2390 optional: true 2162 2391 2163 2392 '@esbuild/android-arm64@0.25.12': 2393 + optional: true 2394 + 2395 + '@esbuild/android-arm64@0.27.1': 2164 2396 optional: true 2165 2397 2166 2398 '@esbuild/android-arm@0.18.20': ··· 2169 2401 '@esbuild/android-arm@0.25.12': 2170 2402 optional: true 2171 2403 2404 + '@esbuild/android-arm@0.27.1': 2405 + optional: true 2406 + 2172 2407 '@esbuild/android-x64@0.18.20': 2173 2408 optional: true 2174 2409 2175 2410 '@esbuild/android-x64@0.25.12': 2176 2411 optional: true 2177 2412 2413 + '@esbuild/android-x64@0.27.1': 2414 + optional: true 2415 + 2178 2416 '@esbuild/darwin-arm64@0.18.20': 2179 2417 optional: true 2180 2418 2181 2419 '@esbuild/darwin-arm64@0.25.12': 2182 2420 optional: true 2183 2421 2422 + '@esbuild/darwin-arm64@0.27.1': 2423 + optional: true 2424 + 2184 2425 '@esbuild/darwin-x64@0.18.20': 2185 2426 optional: true 2186 2427 2187 2428 '@esbuild/darwin-x64@0.25.12': 2188 2429 optional: true 2189 2430 2431 + '@esbuild/darwin-x64@0.27.1': 2432 + optional: true 2433 + 2190 2434 '@esbuild/freebsd-arm64@0.18.20': 2191 2435 optional: true 2192 2436 2193 2437 '@esbuild/freebsd-arm64@0.25.12': 2194 2438 optional: true 2195 2439 2440 + '@esbuild/freebsd-arm64@0.27.1': 2441 + optional: true 2442 + 2196 2443 '@esbuild/freebsd-x64@0.18.20': 2197 2444 optional: true 2198 2445 2199 2446 '@esbuild/freebsd-x64@0.25.12': 2447 + optional: true 2448 + 2449 + '@esbuild/freebsd-x64@0.27.1': 2200 2450 optional: true 2201 2451 2202 2452 '@esbuild/linux-arm64@0.18.20': ··· 2205 2455 '@esbuild/linux-arm64@0.25.12': 2206 2456 optional: true 2207 2457 2458 + '@esbuild/linux-arm64@0.27.1': 2459 + optional: true 2460 + 2208 2461 '@esbuild/linux-arm@0.18.20': 2209 2462 optional: true 2210 2463 2211 2464 '@esbuild/linux-arm@0.25.12': 2212 2465 optional: true 2213 2466 2467 + '@esbuild/linux-arm@0.27.1': 2468 + optional: true 2469 + 2214 2470 '@esbuild/linux-ia32@0.18.20': 2215 2471 optional: true 2216 2472 2217 2473 '@esbuild/linux-ia32@0.25.12': 2218 2474 optional: true 2219 2475 2476 + '@esbuild/linux-ia32@0.27.1': 2477 + optional: true 2478 + 2220 2479 '@esbuild/linux-loong64@0.18.20': 2221 2480 optional: true 2222 2481 2223 2482 '@esbuild/linux-loong64@0.25.12': 2483 + optional: true 2484 + 2485 + '@esbuild/linux-loong64@0.27.1': 2224 2486 optional: true 2225 2487 2226 2488 '@esbuild/linux-mips64el@0.18.20': ··· 2229 2491 '@esbuild/linux-mips64el@0.25.12': 2230 2492 optional: true 2231 2493 2494 + '@esbuild/linux-mips64el@0.27.1': 2495 + optional: true 2496 + 2232 2497 '@esbuild/linux-ppc64@0.18.20': 2233 2498 optional: true 2234 2499 2235 2500 '@esbuild/linux-ppc64@0.25.12': 2236 2501 optional: true 2237 2502 2503 + '@esbuild/linux-ppc64@0.27.1': 2504 + optional: true 2505 + 2238 2506 '@esbuild/linux-riscv64@0.18.20': 2239 2507 optional: true 2240 2508 2241 2509 '@esbuild/linux-riscv64@0.25.12': 2242 2510 optional: true 2243 2511 2512 + '@esbuild/linux-riscv64@0.27.1': 2513 + optional: true 2514 + 2244 2515 '@esbuild/linux-s390x@0.18.20': 2245 2516 optional: true 2246 2517 2247 2518 '@esbuild/linux-s390x@0.25.12': 2519 + optional: true 2520 + 2521 + '@esbuild/linux-s390x@0.27.1': 2248 2522 optional: true 2249 2523 2250 2524 '@esbuild/linux-x64@0.18.20': ··· 2253 2527 '@esbuild/linux-x64@0.25.12': 2254 2528 optional: true 2255 2529 2530 + '@esbuild/linux-x64@0.27.1': 2531 + optional: true 2532 + 2256 2533 '@esbuild/netbsd-arm64@0.25.12': 2257 2534 optional: true 2258 2535 2536 + '@esbuild/netbsd-arm64@0.27.1': 2537 + optional: true 2538 + 2259 2539 '@esbuild/netbsd-x64@0.18.20': 2260 2540 optional: true 2261 2541 2262 2542 '@esbuild/netbsd-x64@0.25.12': 2263 2543 optional: true 2264 2544 2545 + '@esbuild/netbsd-x64@0.27.1': 2546 + optional: true 2547 + 2265 2548 '@esbuild/openbsd-arm64@0.25.12': 2549 + optional: true 2550 + 2551 + '@esbuild/openbsd-arm64@0.27.1': 2266 2552 optional: true 2267 2553 2268 2554 '@esbuild/openbsd-x64@0.18.20': ··· 2271 2557 '@esbuild/openbsd-x64@0.25.12': 2272 2558 optional: true 2273 2559 2560 + '@esbuild/openbsd-x64@0.27.1': 2561 + optional: true 2562 + 2274 2563 '@esbuild/openharmony-arm64@0.25.12': 2275 2564 optional: true 2276 2565 2566 + '@esbuild/openharmony-arm64@0.27.1': 2567 + optional: true 2568 + 2277 2569 '@esbuild/sunos-x64@0.18.20': 2278 2570 optional: true 2279 2571 2280 2572 '@esbuild/sunos-x64@0.25.12': 2281 2573 optional: true 2282 2574 2575 + '@esbuild/sunos-x64@0.27.1': 2576 + optional: true 2577 + 2283 2578 '@esbuild/win32-arm64@0.18.20': 2284 2579 optional: true 2285 2580 2286 2581 '@esbuild/win32-arm64@0.25.12': 2582 + optional: true 2583 + 2584 + '@esbuild/win32-arm64@0.27.1': 2287 2585 optional: true 2288 2586 2289 2587 '@esbuild/win32-ia32@0.18.20': ··· 2292 2590 '@esbuild/win32-ia32@0.25.12': 2293 2591 optional: true 2294 2592 2593 + '@esbuild/win32-ia32@0.27.1': 2594 + optional: true 2595 + 2295 2596 '@esbuild/win32-x64@0.18.20': 2296 2597 optional: true 2297 2598 2298 2599 '@esbuild/win32-x64@0.25.12': 2299 2600 optional: true 2300 2601 2602 + '@esbuild/win32-x64@0.27.1': 2603 + optional: true 2604 + 2301 2605 '@eslint-community/eslint-utils@4.9.0(eslint@9.39.1)': 2302 2606 dependencies: 2303 2607 eslint: 9.39.1 ··· 2534 2838 dependencies: 2535 2839 acorn: 8.15.0 2536 2840 2537 - '@sveltejs/adapter-auto@7.0.0(@sveltejs/kit@2.49.2(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2)))(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2)))': 2841 + '@sveltejs/adapter-auto@7.0.0(@sveltejs/kit@2.49.2(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2)(tsx@4.21.0)))(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2)(tsx@4.21.0)))': 2538 2842 dependencies: 2539 - '@sveltejs/kit': 2.49.2(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2)))(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2)) 2843 + '@sveltejs/kit': 2.49.2(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2)(tsx@4.21.0)))(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2)(tsx@4.21.0)) 2540 2844 2541 - '@sveltejs/adapter-node@5.4.0(@sveltejs/kit@2.49.2(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2)))(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2)))': 2845 + '@sveltejs/adapter-node@5.4.0(@sveltejs/kit@2.49.2(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2)(tsx@4.21.0)))(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2)(tsx@4.21.0)))': 2542 2846 dependencies: 2543 2847 '@rollup/plugin-commonjs': 28.0.9(rollup@4.53.3) 2544 2848 '@rollup/plugin-json': 6.1.0(rollup@4.53.3) 2545 2849 '@rollup/plugin-node-resolve': 16.0.3(rollup@4.53.3) 2546 - '@sveltejs/kit': 2.49.2(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2)))(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2)) 2850 + '@sveltejs/kit': 2.49.2(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2)(tsx@4.21.0)))(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2)(tsx@4.21.0)) 2547 2851 rollup: 4.53.3 2548 2852 2549 - '@sveltejs/kit@2.49.2(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2)))(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2))': 2853 + '@sveltejs/kit@2.49.2(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2)(tsx@4.21.0)))(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2)(tsx@4.21.0))': 2550 2854 dependencies: 2551 2855 '@standard-schema/spec': 1.0.0 2552 2856 '@sveltejs/acorn-typescript': 1.0.8(acorn@8.15.0) 2553 - '@sveltejs/vite-plugin-svelte': 6.2.1(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2)) 2857 + '@sveltejs/vite-plugin-svelte': 6.2.1(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2)(tsx@4.21.0)) 2554 2858 '@types/cookie': 0.6.0 2555 2859 acorn: 8.15.0 2556 2860 cookie: 0.6.0 ··· 2563 2867 set-cookie-parser: 2.7.2 2564 2868 sirv: 3.0.2 2565 2869 svelte: 5.45.8 2566 - vite: 7.2.7(@types/node@24.10.2) 2870 + vite: 7.2.7(@types/node@24.10.2)(tsx@4.21.0) 2567 2871 2568 - '@sveltejs/vite-plugin-svelte-inspector@5.0.1(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2)))(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2))': 2872 + '@sveltejs/vite-plugin-svelte-inspector@5.0.1(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2)(tsx@4.21.0)))(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2)(tsx@4.21.0))': 2569 2873 dependencies: 2570 - '@sveltejs/vite-plugin-svelte': 6.2.1(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2)) 2874 + '@sveltejs/vite-plugin-svelte': 6.2.1(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2)(tsx@4.21.0)) 2571 2875 debug: 4.4.3 2572 2876 svelte: 5.45.8 2573 - vite: 7.2.7(@types/node@24.10.2) 2877 + vite: 7.2.7(@types/node@24.10.2)(tsx@4.21.0) 2574 2878 transitivePeerDependencies: 2575 2879 - supports-color 2576 2880 2577 - '@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2))': 2881 + '@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2)(tsx@4.21.0))': 2578 2882 dependencies: 2579 - '@sveltejs/vite-plugin-svelte-inspector': 5.0.1(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2)))(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2)) 2883 + '@sveltejs/vite-plugin-svelte-inspector': 5.0.1(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2)(tsx@4.21.0)))(svelte@5.45.8)(vite@7.2.7(@types/node@24.10.2)(tsx@4.21.0)) 2580 2884 debug: 4.4.3 2581 2885 deepmerge: 4.3.1 2582 2886 magic-string: 0.30.21 2583 2887 svelte: 5.45.8 2584 - vite: 7.2.7(@types/node@24.10.2) 2585 - vitefu: 1.1.1(vite@7.2.7(@types/node@24.10.2)) 2888 + vite: 7.2.7(@types/node@24.10.2)(tsx@4.21.0) 2889 + vitefu: 1.1.1(vite@7.2.7(@types/node@24.10.2)(tsx@4.21.0)) 2586 2890 transitivePeerDependencies: 2587 2891 - supports-color 2588 2892 2589 2893 '@types/better-sqlite3@7.6.13': 2590 2894 dependencies: 2591 2895 '@types/node': 24.10.2 2896 + optional: true 2592 2897 2593 2898 '@types/cookie@0.6.0': {} 2594 2899 ··· 2600 2905 dependencies: 2601 2906 undici-types: 7.16.0 2602 2907 2908 + '@types/pg@8.16.0': 2909 + dependencies: 2910 + '@types/node': 24.10.2 2911 + pg-protocol: 1.10.3 2912 + pg-types: 2.2.0 2913 + 2603 2914 '@types/resolve@1.20.2': {} 2604 2915 2605 2916 '@typescript-eslint/eslint-plugin@8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3)': ··· 2762 3073 dependencies: 2763 3074 bindings: 1.5.0 2764 3075 prebuild-install: 7.1.3 3076 + optional: true 2765 3077 2766 3078 bindings@1.5.0: 2767 3079 dependencies: 2768 3080 file-uri-to-path: 1.0.0 3081 + optional: true 2769 3082 2770 3083 bl@4.1.0: 2771 3084 dependencies: 2772 3085 buffer: 5.7.1 2773 3086 inherits: 2.0.4 2774 3087 readable-stream: 3.6.2 3088 + optional: true 2775 3089 2776 3090 brace-expansion@1.1.12: 2777 3091 dependencies: ··· 2788 3102 dependencies: 2789 3103 base64-js: 1.5.1 2790 3104 ieee754: 1.2.1 3105 + optional: true 2791 3106 2792 3107 buffer@6.0.3: 2793 3108 dependencies: ··· 2805 3120 dependencies: 2806 3121 readdirp: 4.1.2 2807 3122 2808 - chownr@1.1.4: {} 3123 + chownr@1.1.4: 3124 + optional: true 2809 3125 2810 3126 clsx@2.1.1: {} 2811 3127 ··· 2842 3158 decompress-response@6.0.0: 2843 3159 dependencies: 2844 3160 mimic-response: 3.1.0 3161 + optional: true 2845 3162 2846 - deep-extend@0.6.0: {} 3163 + deep-extend@0.6.0: 3164 + optional: true 2847 3165 2848 3166 deep-is@0.1.4: {} 2849 3167 2850 3168 deepmerge@4.3.1: {} 2851 3169 2852 - detect-libc@2.1.2: {} 3170 + detect-libc@2.1.2: 3171 + optional: true 2853 3172 2854 3173 devalue@5.6.0: {} 2855 3174 ··· 2864 3183 transitivePeerDependencies: 2865 3184 - supports-color 2866 3185 2867 - drizzle-orm@0.44.7(@types/better-sqlite3@7.6.13)(better-sqlite3@12.4.1): 3186 + drizzle-orm@0.44.7(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.4.1)(pg@8.16.3): 2868 3187 optionalDependencies: 2869 3188 '@types/better-sqlite3': 7.6.13 3189 + '@types/pg': 8.16.0 2870 3190 better-sqlite3: 12.4.1 3191 + pg: 8.16.3 2871 3192 2872 3193 end-of-stream@1.4.5: 2873 3194 dependencies: 2874 3195 once: 1.4.0 3196 + optional: true 2875 3197 2876 3198 esbuild-register@3.6.0(esbuild@0.25.12): 2877 3199 dependencies: ··· 2934 3256 '@esbuild/win32-ia32': 0.25.12 2935 3257 '@esbuild/win32-x64': 0.25.12 2936 3258 3259 + esbuild@0.27.1: 3260 + optionalDependencies: 3261 + '@esbuild/aix-ppc64': 0.27.1 3262 + '@esbuild/android-arm': 0.27.1 3263 + '@esbuild/android-arm64': 0.27.1 3264 + '@esbuild/android-x64': 0.27.1 3265 + '@esbuild/darwin-arm64': 0.27.1 3266 + '@esbuild/darwin-x64': 0.27.1 3267 + '@esbuild/freebsd-arm64': 0.27.1 3268 + '@esbuild/freebsd-x64': 0.27.1 3269 + '@esbuild/linux-arm': 0.27.1 3270 + '@esbuild/linux-arm64': 0.27.1 3271 + '@esbuild/linux-ia32': 0.27.1 3272 + '@esbuild/linux-loong64': 0.27.1 3273 + '@esbuild/linux-mips64el': 0.27.1 3274 + '@esbuild/linux-ppc64': 0.27.1 3275 + '@esbuild/linux-riscv64': 0.27.1 3276 + '@esbuild/linux-s390x': 0.27.1 3277 + '@esbuild/linux-x64': 0.27.1 3278 + '@esbuild/netbsd-arm64': 0.27.1 3279 + '@esbuild/netbsd-x64': 0.27.1 3280 + '@esbuild/openbsd-arm64': 0.27.1 3281 + '@esbuild/openbsd-x64': 0.27.1 3282 + '@esbuild/openharmony-arm64': 0.27.1 3283 + '@esbuild/sunos-x64': 0.27.1 3284 + '@esbuild/win32-arm64': 0.27.1 3285 + '@esbuild/win32-ia32': 0.27.1 3286 + '@esbuild/win32-x64': 0.27.1 3287 + 2937 3288 escape-string-regexp@4.0.0: {} 2938 3289 2939 3290 eslint-plugin-svelte@3.13.1(eslint@9.39.1)(svelte@5.45.8): ··· 3032 3383 3033 3384 events@3.3.0: {} 3034 3385 3035 - expand-template@2.0.3: {} 3386 + expand-template@2.0.3: 3387 + optional: true 3036 3388 3037 3389 fast-deep-equal@3.1.3: {} 3038 3390 ··· 3050 3402 dependencies: 3051 3403 flat-cache: 4.0.1 3052 3404 3053 - file-uri-to-path@1.0.0: {} 3405 + file-uri-to-path@1.0.0: 3406 + optional: true 3054 3407 3055 3408 find-up@5.0.0: 3056 3409 dependencies: ··· 3064 3417 3065 3418 flatted@3.3.3: {} 3066 3419 3067 - fs-constants@1.0.0: {} 3420 + fs-constants@1.0.0: 3421 + optional: true 3068 3422 3069 3423 fsevents@2.3.3: 3070 3424 optional: true ··· 3075 3429 dependencies: 3076 3430 resolve-pkg-maps: 1.0.0 3077 3431 3078 - github-from-package@0.0.0: {} 3432 + github-from-package@0.0.0: 3433 + optional: true 3079 3434 3080 3435 glob-parent@6.0.2: 3081 3436 dependencies: ··· 3104 3459 3105 3460 imurmurhash@0.1.4: {} 3106 3461 3107 - inherits@2.0.4: {} 3462 + inherits@2.0.4: 3463 + optional: true 3108 3464 3109 - ini@1.3.8: {} 3465 + ini@1.3.8: 3466 + optional: true 3110 3467 3111 3468 ipaddr.js@2.3.0: {} 3112 3469 ··· 3181 3538 dependencies: 3182 3539 '@jridgewell/sourcemap-codec': 1.5.5 3183 3540 3184 - mimic-response@3.1.0: {} 3541 + mimic-response@3.1.0: 3542 + optional: true 3185 3543 3186 3544 minimatch@3.1.2: 3187 3545 dependencies: ··· 3191 3549 dependencies: 3192 3550 brace-expansion: 2.0.2 3193 3551 3194 - minimist@1.2.8: {} 3552 + minimist@1.2.8: 3553 + optional: true 3195 3554 3196 - mkdirp-classic@0.5.3: {} 3555 + mkdirp-classic@0.5.3: 3556 + optional: true 3197 3557 3198 3558 mri@1.2.0: {} 3199 3559 ··· 3205 3565 3206 3566 nanoid@3.3.11: {} 3207 3567 3208 - napi-build-utils@2.0.0: {} 3568 + napi-build-utils@2.0.0: 3569 + optional: true 3209 3570 3210 3571 natural-compare@1.4.0: {} 3211 3572 3212 3573 node-abi@3.85.0: 3213 3574 dependencies: 3214 3575 semver: 7.7.3 3576 + optional: true 3215 3577 3216 3578 node-schedule@2.1.1: 3217 3579 dependencies: ··· 3224 3586 once@1.4.0: 3225 3587 dependencies: 3226 3588 wrappy: 1.0.2 3589 + optional: true 3227 3590 3228 3591 optionator@0.9.4: 3229 3592 dependencies: ··· 3252 3615 3253 3616 path-parse@1.0.7: {} 3254 3617 3618 + pg-cloudflare@1.2.7: 3619 + optional: true 3620 + 3621 + pg-connection-string@2.9.1: {} 3622 + 3623 + pg-int8@1.0.1: {} 3624 + 3625 + pg-pool@3.10.1(pg@8.16.3): 3626 + dependencies: 3627 + pg: 8.16.3 3628 + 3629 + pg-protocol@1.10.3: {} 3630 + 3631 + pg-types@2.2.0: 3632 + dependencies: 3633 + pg-int8: 1.0.1 3634 + postgres-array: 2.0.0 3635 + postgres-bytea: 1.0.0 3636 + postgres-date: 1.0.7 3637 + postgres-interval: 1.2.0 3638 + 3639 + pg@8.16.3: 3640 + dependencies: 3641 + pg-connection-string: 2.9.1 3642 + pg-pool: 3.10.1(pg@8.16.3) 3643 + pg-protocol: 1.10.3 3644 + pg-types: 2.2.0 3645 + pgpass: 1.0.5 3646 + optionalDependencies: 3647 + pg-cloudflare: 1.2.7 3648 + 3649 + pgpass@1.0.5: 3650 + dependencies: 3651 + split2: 4.2.0 3652 + 3255 3653 picocolors@1.1.1: {} 3256 3654 3257 3655 picomatch@4.0.3: {} ··· 3323 3721 picocolors: 1.1.1 3324 3722 source-map-js: 1.2.1 3325 3723 3724 + postgres-array@2.0.0: {} 3725 + 3726 + postgres-bytea@1.0.0: {} 3727 + 3728 + postgres-date@1.0.7: {} 3729 + 3730 + postgres-interval@1.2.0: 3731 + dependencies: 3732 + xtend: 4.0.2 3733 + 3326 3734 prebuild-install@7.1.3: 3327 3735 dependencies: 3328 3736 detect-libc: 2.1.2 ··· 3337 3745 simple-get: 4.0.1 3338 3746 tar-fs: 2.1.4 3339 3747 tunnel-agent: 0.6.0 3748 + optional: true 3340 3749 3341 3750 prelude-ls@1.2.1: {} 3342 3751 ··· 3365 3774 dependencies: 3366 3775 end-of-stream: 1.4.5 3367 3776 once: 1.4.0 3777 + optional: true 3368 3778 3369 3779 punycode@2.3.1: {} 3370 3780 ··· 3376 3786 ini: 1.3.8 3377 3787 minimist: 1.2.8 3378 3788 strip-json-comments: 2.0.1 3789 + optional: true 3379 3790 3380 3791 readable-stream@3.6.2: 3381 3792 dependencies: 3382 3793 inherits: 2.0.4 3383 3794 string_decoder: 1.3.0 3384 3795 util-deprecate: 1.0.2 3796 + optional: true 3385 3797 3386 3798 readable-stream@4.7.0: 3387 3799 dependencies: ··· 3451 3863 3452 3864 shebang-regex@3.0.0: {} 3453 3865 3454 - simple-concat@1.0.1: {} 3866 + simple-concat@1.0.1: 3867 + optional: true 3455 3868 3456 3869 simple-get@4.0.1: 3457 3870 dependencies: 3458 3871 decompress-response: 6.0.0 3459 3872 once: 1.4.0 3460 3873 simple-concat: 1.0.1 3874 + optional: true 3461 3875 3462 3876 sirv@3.0.2: 3463 3877 dependencies: ··· 3490 3904 dependencies: 3491 3905 safe-buffer: 5.2.1 3492 3906 3493 - strip-json-comments@2.0.1: {} 3907 + strip-json-comments@2.0.1: 3908 + optional: true 3494 3909 3495 3910 strip-json-comments@3.1.1: {} 3496 3911 ··· 3547 3962 mkdirp-classic: 0.5.3 3548 3963 pump: 3.0.3 3549 3964 tar-stream: 2.2.0 3965 + optional: true 3550 3966 3551 3967 tar-stream@2.2.0: 3552 3968 dependencies: ··· 3555 3971 fs-constants: 1.0.0 3556 3972 inherits: 2.0.4 3557 3973 readable-stream: 3.6.2 3974 + optional: true 3558 3975 3559 3976 thread-stream@2.7.0: 3560 3977 dependencies: ··· 3579 3996 3580 3997 tslib@2.8.1: {} 3581 3998 3999 + tsx@4.21.0: 4000 + dependencies: 4001 + esbuild: 0.27.1 4002 + get-tsconfig: 4.13.0 4003 + optionalDependencies: 4004 + fsevents: 2.3.3 4005 + 3582 4006 tunnel-agent@0.6.0: 3583 4007 dependencies: 3584 4008 safe-buffer: 5.2.1 4009 + optional: true 3585 4010 3586 4011 type-check@0.4.0: 3587 4012 dependencies: ··· 3616 4041 3617 4042 util-deprecate@1.0.2: {} 3618 4043 3619 - vite@7.2.7(@types/node@24.10.2): 4044 + vite@7.2.7(@types/node@24.10.2)(tsx@4.21.0): 3620 4045 dependencies: 3621 4046 esbuild: 0.25.12 3622 4047 fdir: 6.5.0(picomatch@4.0.3) ··· 3627 4052 optionalDependencies: 3628 4053 '@types/node': 24.10.2 3629 4054 fsevents: 2.3.3 4055 + tsx: 4.21.0 3630 4056 3631 - vitefu@1.1.1(vite@7.2.7(@types/node@24.10.2)): 4057 + vitefu@1.1.1(vite@7.2.7(@types/node@24.10.2)(tsx@4.21.0)): 3632 4058 optionalDependencies: 3633 - vite: 7.2.7(@types/node@24.10.2) 4059 + vite: 7.2.7(@types/node@24.10.2)(tsx@4.21.0) 3634 4060 3635 4061 which@2.0.2: 3636 4062 dependencies: ··· 3638 4064 3639 4065 word-wrap@1.2.5: {} 3640 4066 3641 - wrappy@1.0.2: {} 4067 + wrappy@1.0.2: 4068 + optional: true 4069 + 4070 + xtend@4.0.2: {} 3642 4071 3643 4072 yaml@1.10.2: {} 3644 4073
+3 -27
src/hooks.server.ts
··· 1 1 import { db } from '$lib/server/db'; 2 2 import type { Handle, ServerInit } from '@sveltejs/kit'; 3 - import { migrate } from 'drizzle-orm/better-sqlite3/migrator'; 3 + import { migrate } from 'drizzle-orm/node-postgres/migrator'; 4 4 import { env } from '$env/dynamic/private'; 5 - import { keyValueStore } from '$lib/server/db/schema'; 6 - import { and, eq, lt } from 'drizzle-orm'; 7 - import { STATE_STORE } from '$lib/server/cache'; 8 - import { logger } from '$lib/server/logger'; 5 + 9 6 import { HOUR } from '@atproto/common'; 10 7 import { getSessionManager, SessionRestorationError } from '$lib/server/session'; 11 8 12 - const clearExpiredStates = async () => { 13 - try { 14 - logger.info('Running cleanup of the state store'); 15 - const oneHourAgo = new Date(Date.now() - HOUR); 16 - const result = await db 17 - .delete(keyValueStore) 18 - .where( 19 - and( 20 - eq(keyValueStore.storeName, STATE_STORE), 21 - lt(keyValueStore.createdAt, oneHourAgo)) 22 - ); 23 - 24 - if (result.changes > 0) { 25 - logger.info(`Cleaned up ${result.changes} expired key(s) from keyValueStore`); 26 - } 27 - } catch (err) { 28 - logger.error(`${(err as Error).message}`); 29 - } 30 - }; 31 9 32 10 33 11 export const init: ServerInit = async () => { 34 12 // Run Drizzle migrations on server startup 35 - migrate(db, { migrationsFolder: env.MIGRATIONS_FOLDER ?? 'drizzle' }); 13 + await migrate(db, { migrationsFolder: env.MIGRATIONS_FOLDER ?? 'drizzle' }); 36 14 37 - await clearExpiredStates(); 38 15 39 16 // Start a background job to clean up state every hour, which is recommended in the oauth docs 40 17 setInterval(async () => { 41 - await clearExpiredStates(); 42 18 //TODO prob should do one for the session store as well for expired sessions 43 19 }, HOUR); // Run every hour 44 20 };
+3 -4
src/lib/server/db/index.ts
··· 1 - import { drizzle } from 'drizzle-orm/better-sqlite3'; 2 - import Database from 'better-sqlite3'; 1 + import { drizzle } from 'drizzle-orm/node-postgres'; 3 2 import * as schema from './schema'; 4 3 import { env } from '$env/dynamic/private'; 5 4 import { logger } from '$lib/server/logger'; 6 5 7 6 if (!env.DATABASE_URL) throw new Error('DATABASE_URL is not set'); 8 7 9 - const client = new Database(env.DATABASE_URL); 10 8 logger.info('Connected to database'); 11 - export const db = drizzle(client, { schema }); 9 + logger.info(`Database url: ${env.DATABASE_URL}`); 10 + export const db = drizzle(env.DATABASE_URL!,{ schema });
+21 -15
src/lib/server/db/schema.ts
··· 1 - import { integer, sqliteTable, text } from 'drizzle-orm/sqlite-core'; 1 + import { integer, pgTable, varchar } from 'drizzle-orm/pg-core'; 2 2 3 - export const keyValueStore = sqliteTable('key_value_store', { 4 - key: text('key').primaryKey(), 5 - value: text('value'), 6 - storeName: text('storeName'), 7 - createdAt: integer({ mode: 'timestamp' }) // Date 3 + export const usersTable = pgTable('test', { 4 + id: integer().primaryKey().generatedAlwaysAsIdentity(), 5 + name: varchar().notNull(), 8 6 }); 9 7 10 8 11 - export const sessionStore = sqliteTable('session_store', { 12 - id: text('id').primaryKey(), 13 - //Not leaving unique since it could be multiple logins from the same user across browsers 14 - did: text('did').notNull(), 15 - handle: text('handle').notNull(), 16 - createdAt: integer({ mode: 'timestamp' }).notNull(), // Date 17 - expiresAt: integer({ mode: 'timestamp' }).notNull() // Date 18 - 19 - }); 9 + // export const keyValueStore = sqliteTable('key_value_store', { 10 + // key: p text('key').primaryKey(), 11 + // value: text('value'), 12 + // storeName: text('storeName'), 13 + // createdAt: integer({ mode: 'timestamp' }) // Date 14 + // }); 15 + // 16 + // 17 + // export const sessionStore = sqliteTable('session_store', { 18 + // id: text('id').primaryKey(), 19 + // //Not leaving unique since it could be multiple logins from the same user across browsers 20 + // did: text('did').notNull(), 21 + // handle: text('handle').notNull(), 22 + // createdAt: integer({ mode: 'timestamp' }).notNull(), // Date 23 + // expiresAt: integer({ mode: 'timestamp' }).notNull() // Date 24 + // 25 + // });