Schedule posts to Bluesky with Cloudflare workers. skyscheduler.work
cf tool bsky-tool cloudflare bluesky schedule bsky service social-media cloudflare-workers

fix violations records failing incorrectly

there goes gravity again

+801 -140
+1
migrations/0013_nifty_purple_man.sql
··· 1 + CREATE UNIQUE INDEX `violations_user_unique` ON `violations` (`user`);
+712
migrations/meta/0013_snapshot.json
··· 1 + { 2 + "version": "6", 3 + "dialect": "sqlite", 4 + "id": "ac90594c-3565-496f-a22a-dfc35ce40b7f", 5 + "prevId": "87a69bf8-f8c0-48e2-be3f-9b83db7dfc04", 6 + "tables": { 7 + "accounts": { 8 + "name": "accounts", 9 + "columns": { 10 + "id": { 11 + "name": "id", 12 + "type": "text", 13 + "primaryKey": true, 14 + "notNull": true, 15 + "autoincrement": false 16 + }, 17 + "account_id": { 18 + "name": "account_id", 19 + "type": "text", 20 + "primaryKey": false, 21 + "notNull": true, 22 + "autoincrement": false 23 + }, 24 + "provider_id": { 25 + "name": "provider_id", 26 + "type": "text", 27 + "primaryKey": false, 28 + "notNull": true, 29 + "autoincrement": false 30 + }, 31 + "user_id": { 32 + "name": "user_id", 33 + "type": "text", 34 + "primaryKey": false, 35 + "notNull": true, 36 + "autoincrement": false 37 + }, 38 + "access_token": { 39 + "name": "access_token", 40 + "type": "text", 41 + "primaryKey": false, 42 + "notNull": false, 43 + "autoincrement": false 44 + }, 45 + "refresh_token": { 46 + "name": "refresh_token", 47 + "type": "text", 48 + "primaryKey": false, 49 + "notNull": false, 50 + "autoincrement": false 51 + }, 52 + "id_token": { 53 + "name": "id_token", 54 + "type": "text", 55 + "primaryKey": false, 56 + "notNull": false, 57 + "autoincrement": false 58 + }, 59 + "access_token_expires_at": { 60 + "name": "access_token_expires_at", 61 + "type": "integer", 62 + "primaryKey": false, 63 + "notNull": false, 64 + "autoincrement": false 65 + }, 66 + "refresh_token_expires_at": { 67 + "name": "refresh_token_expires_at", 68 + "type": "integer", 69 + "primaryKey": false, 70 + "notNull": false, 71 + "autoincrement": false 72 + }, 73 + "scope": { 74 + "name": "scope", 75 + "type": "text", 76 + "primaryKey": false, 77 + "notNull": false, 78 + "autoincrement": false 79 + }, 80 + "password": { 81 + "name": "password", 82 + "type": "text", 83 + "primaryKey": false, 84 + "notNull": false, 85 + "autoincrement": false 86 + }, 87 + "created_at": { 88 + "name": "created_at", 89 + "type": "integer", 90 + "primaryKey": false, 91 + "notNull": true, 92 + "autoincrement": false, 93 + "default": "(cast(unixepoch('subsecond') * 1000 as integer))" 94 + }, 95 + "updated_at": { 96 + "name": "updated_at", 97 + "type": "integer", 98 + "primaryKey": false, 99 + "notNull": true, 100 + "autoincrement": false 101 + } 102 + }, 103 + "indexes": { 104 + "accounts_userId_idx": { 105 + "name": "accounts_userId_idx", 106 + "columns": [ 107 + "user_id" 108 + ], 109 + "isUnique": false 110 + } 111 + }, 112 + "foreignKeys": { 113 + "accounts_user_id_users_id_fk": { 114 + "name": "accounts_user_id_users_id_fk", 115 + "tableFrom": "accounts", 116 + "tableTo": "users", 117 + "columnsFrom": [ 118 + "user_id" 119 + ], 120 + "columnsTo": [ 121 + "id" 122 + ], 123 + "onDelete": "cascade", 124 + "onUpdate": "no action" 125 + } 126 + }, 127 + "compositePrimaryKeys": {}, 128 + "uniqueConstraints": {}, 129 + "checkConstraints": {} 130 + }, 131 + "sessions": { 132 + "name": "sessions", 133 + "columns": { 134 + "id": { 135 + "name": "id", 136 + "type": "text", 137 + "primaryKey": true, 138 + "notNull": true, 139 + "autoincrement": false 140 + }, 141 + "expires_at": { 142 + "name": "expires_at", 143 + "type": "integer", 144 + "primaryKey": false, 145 + "notNull": true, 146 + "autoincrement": false 147 + }, 148 + "token": { 149 + "name": "token", 150 + "type": "text", 151 + "primaryKey": false, 152 + "notNull": true, 153 + "autoincrement": false 154 + }, 155 + "created_at": { 156 + "name": "created_at", 157 + "type": "integer", 158 + "primaryKey": false, 159 + "notNull": true, 160 + "autoincrement": false, 161 + "default": "(cast(unixepoch('subsecond') * 1000 as integer))" 162 + }, 163 + "updated_at": { 164 + "name": "updated_at", 165 + "type": "integer", 166 + "primaryKey": false, 167 + "notNull": true, 168 + "autoincrement": false 169 + }, 170 + "ip_address": { 171 + "name": "ip_address", 172 + "type": "text", 173 + "primaryKey": false, 174 + "notNull": false, 175 + "autoincrement": false 176 + }, 177 + "user_agent": { 178 + "name": "user_agent", 179 + "type": "text", 180 + "primaryKey": false, 181 + "notNull": false, 182 + "autoincrement": false 183 + }, 184 + "user_id": { 185 + "name": "user_id", 186 + "type": "text", 187 + "primaryKey": false, 188 + "notNull": true, 189 + "autoincrement": false 190 + } 191 + }, 192 + "indexes": { 193 + "sessions_token_unique": { 194 + "name": "sessions_token_unique", 195 + "columns": [ 196 + "token" 197 + ], 198 + "isUnique": true 199 + }, 200 + "sessions_userId_idx": { 201 + "name": "sessions_userId_idx", 202 + "columns": [ 203 + "user_id" 204 + ], 205 + "isUnique": false 206 + } 207 + }, 208 + "foreignKeys": { 209 + "sessions_user_id_users_id_fk": { 210 + "name": "sessions_user_id_users_id_fk", 211 + "tableFrom": "sessions", 212 + "tableTo": "users", 213 + "columnsFrom": [ 214 + "user_id" 215 + ], 216 + "columnsTo": [ 217 + "id" 218 + ], 219 + "onDelete": "cascade", 220 + "onUpdate": "no action" 221 + } 222 + }, 223 + "compositePrimaryKeys": {}, 224 + "uniqueConstraints": {}, 225 + "checkConstraints": {} 226 + }, 227 + "users": { 228 + "name": "users", 229 + "columns": { 230 + "id": { 231 + "name": "id", 232 + "type": "text", 233 + "primaryKey": true, 234 + "notNull": true, 235 + "autoincrement": false 236 + }, 237 + "name": { 238 + "name": "name", 239 + "type": "text", 240 + "primaryKey": false, 241 + "notNull": true, 242 + "autoincrement": false 243 + }, 244 + "email": { 245 + "name": "email", 246 + "type": "text", 247 + "primaryKey": false, 248 + "notNull": true, 249 + "autoincrement": false 250 + }, 251 + "email_verified": { 252 + "name": "email_verified", 253 + "type": "integer", 254 + "primaryKey": false, 255 + "notNull": true, 256 + "autoincrement": false 257 + }, 258 + "image": { 259 + "name": "image", 260 + "type": "text", 261 + "primaryKey": false, 262 + "notNull": false, 263 + "autoincrement": false 264 + }, 265 + "created_at": { 266 + "name": "created_at", 267 + "type": "integer", 268 + "primaryKey": false, 269 + "notNull": true, 270 + "autoincrement": false 271 + }, 272 + "updated_at": { 273 + "name": "updated_at", 274 + "type": "integer", 275 + "primaryKey": false, 276 + "notNull": true, 277 + "autoincrement": false 278 + }, 279 + "username": { 280 + "name": "username", 281 + "type": "text", 282 + "primaryKey": false, 283 + "notNull": false, 284 + "autoincrement": false 285 + }, 286 + "display_username": { 287 + "name": "display_username", 288 + "type": "text", 289 + "primaryKey": false, 290 + "notNull": false, 291 + "autoincrement": false 292 + }, 293 + "bsky_app_pass": { 294 + "name": "bsky_app_pass", 295 + "type": "text", 296 + "primaryKey": false, 297 + "notNull": true, 298 + "autoincrement": false 299 + }, 300 + "pds": { 301 + "name": "pds", 302 + "type": "text", 303 + "primaryKey": false, 304 + "notNull": true, 305 + "autoincrement": false, 306 + "default": "'https://bsky.social'" 307 + } 308 + }, 309 + "indexes": { 310 + "users_email_unique": { 311 + "name": "users_email_unique", 312 + "columns": [ 313 + "email" 314 + ], 315 + "isUnique": true 316 + }, 317 + "users_username_unique": { 318 + "name": "users_username_unique", 319 + "columns": [ 320 + "username" 321 + ], 322 + "isUnique": true 323 + } 324 + }, 325 + "foreignKeys": {}, 326 + "compositePrimaryKeys": {}, 327 + "uniqueConstraints": {}, 328 + "checkConstraints": {} 329 + }, 330 + "verifications": { 331 + "name": "verifications", 332 + "columns": { 333 + "id": { 334 + "name": "id", 335 + "type": "text", 336 + "primaryKey": true, 337 + "notNull": true, 338 + "autoincrement": false 339 + }, 340 + "identifier": { 341 + "name": "identifier", 342 + "type": "text", 343 + "primaryKey": false, 344 + "notNull": true, 345 + "autoincrement": false 346 + }, 347 + "value": { 348 + "name": "value", 349 + "type": "text", 350 + "primaryKey": false, 351 + "notNull": true, 352 + "autoincrement": false 353 + }, 354 + "expires_at": { 355 + "name": "expires_at", 356 + "type": "integer", 357 + "primaryKey": false, 358 + "notNull": true, 359 + "autoincrement": false 360 + }, 361 + "created_at": { 362 + "name": "created_at", 363 + "type": "integer", 364 + "primaryKey": false, 365 + "notNull": true, 366 + "autoincrement": false, 367 + "default": "(cast(unixepoch('subsecond') * 1000 as integer))" 368 + }, 369 + "updated_at": { 370 + "name": "updated_at", 371 + "type": "integer", 372 + "primaryKey": false, 373 + "notNull": true, 374 + "autoincrement": false, 375 + "default": "(cast(unixepoch('subsecond') * 1000 as integer))" 376 + } 377 + }, 378 + "indexes": { 379 + "verifications_identifier_idx": { 380 + "name": "verifications_identifier_idx", 381 + "columns": [ 382 + "identifier" 383 + ], 384 + "isUnique": false 385 + } 386 + }, 387 + "foreignKeys": {}, 388 + "compositePrimaryKeys": {}, 389 + "uniqueConstraints": {}, 390 + "checkConstraints": {} 391 + }, 392 + "posts": { 393 + "name": "posts", 394 + "columns": { 395 + "uuid": { 396 + "name": "uuid", 397 + "type": "text", 398 + "primaryKey": true, 399 + "notNull": true, 400 + "autoincrement": false 401 + }, 402 + "content": { 403 + "name": "content", 404 + "type": "text", 405 + "primaryKey": false, 406 + "notNull": true, 407 + "autoincrement": false 408 + }, 409 + "scheduled_date": { 410 + "name": "scheduled_date", 411 + "type": "integer", 412 + "primaryKey": false, 413 + "notNull": true, 414 + "autoincrement": false 415 + }, 416 + "posted": { 417 + "name": "posted", 418 + "type": "integer", 419 + "primaryKey": false, 420 + "notNull": false, 421 + "autoincrement": false, 422 + "default": false 423 + }, 424 + "postNow": { 425 + "name": "postNow", 426 + "type": "integer", 427 + "primaryKey": false, 428 + "notNull": false, 429 + "autoincrement": false, 430 + "default": false 431 + }, 432 + "embedContent": { 433 + "name": "embedContent", 434 + "type": "text", 435 + "primaryKey": false, 436 + "notNull": true, 437 + "autoincrement": false, 438 + "default": "(json_array())" 439 + }, 440 + "uri": { 441 + "name": "uri", 442 + "type": "text", 443 + "primaryKey": false, 444 + "notNull": false, 445 + "autoincrement": false 446 + }, 447 + "cid": { 448 + "name": "cid", 449 + "type": "text", 450 + "primaryKey": false, 451 + "notNull": false, 452 + "autoincrement": false 453 + }, 454 + "contentLabel": { 455 + "name": "contentLabel", 456 + "type": "text", 457 + "primaryKey": false, 458 + "notNull": true, 459 + "autoincrement": false, 460 + "default": "'None'" 461 + }, 462 + "created_at": { 463 + "name": "created_at", 464 + "type": "integer", 465 + "primaryKey": false, 466 + "notNull": true, 467 + "autoincrement": false, 468 + "default": "CURRENT_TIMESTAMP" 469 + }, 470 + "updated_at": { 471 + "name": "updated_at", 472 + "type": "integer", 473 + "primaryKey": false, 474 + "notNull": false, 475 + "autoincrement": false 476 + }, 477 + "user": { 478 + "name": "user", 479 + "type": "text", 480 + "primaryKey": false, 481 + "notNull": true, 482 + "autoincrement": false 483 + } 484 + }, 485 + "indexes": { 486 + "user_idx": { 487 + "name": "user_idx", 488 + "columns": [ 489 + "user" 490 + ], 491 + "isUnique": false 492 + }, 493 + "postedUpdate_idx": { 494 + "name": "postedUpdate_idx", 495 + "columns": [ 496 + "updated_at", 497 + "posted" 498 + ], 499 + "isUnique": false, 500 + "where": "posted = 1" 501 + }, 502 + "postedUUID_idx": { 503 + "name": "postedUUID_idx", 504 + "columns": [ 505 + "uuid", 506 + "posted" 507 + ], 508 + "isUnique": false 509 + }, 510 + "postNowScheduledDatePosted_idx": { 511 + "name": "postNowScheduledDatePosted_idx", 512 + "columns": [ 513 + "posted", 514 + "scheduled_date", 515 + "postNow" 516 + ], 517 + "isUnique": false, 518 + "where": "posted = 0 and postNow <> 1" 519 + } 520 + }, 521 + "foreignKeys": { 522 + "posts_user_users_id_fk": { 523 + "name": "posts_user_users_id_fk", 524 + "tableFrom": "posts", 525 + "tableTo": "users", 526 + "columnsFrom": [ 527 + "user" 528 + ], 529 + "columnsTo": [ 530 + "id" 531 + ], 532 + "onDelete": "cascade", 533 + "onUpdate": "no action" 534 + } 535 + }, 536 + "compositePrimaryKeys": {}, 537 + "uniqueConstraints": {}, 538 + "checkConstraints": {} 539 + }, 540 + "reposts": { 541 + "name": "reposts", 542 + "columns": { 543 + "id": { 544 + "name": "id", 545 + "type": "integer", 546 + "primaryKey": true, 547 + "notNull": true, 548 + "autoincrement": true 549 + }, 550 + "post_uuid": { 551 + "name": "post_uuid", 552 + "type": "text", 553 + "primaryKey": false, 554 + "notNull": true, 555 + "autoincrement": false 556 + }, 557 + "scheduled_date": { 558 + "name": "scheduled_date", 559 + "type": "integer", 560 + "primaryKey": false, 561 + "notNull": true, 562 + "autoincrement": false 563 + } 564 + }, 565 + "indexes": { 566 + "repost_scheduledDate_idx": { 567 + "name": "repost_scheduledDate_idx", 568 + "columns": [ 569 + "scheduled_date" 570 + ], 571 + "isUnique": false 572 + }, 573 + "repost_postid_idx": { 574 + "name": "repost_postid_idx", 575 + "columns": [ 576 + "post_uuid" 577 + ], 578 + "isUnique": false 579 + } 580 + }, 581 + "foreignKeys": { 582 + "reposts_post_uuid_posts_uuid_fk": { 583 + "name": "reposts_post_uuid_posts_uuid_fk", 584 + "tableFrom": "reposts", 585 + "tableTo": "posts", 586 + "columnsFrom": [ 587 + "post_uuid" 588 + ], 589 + "columnsTo": [ 590 + "uuid" 591 + ], 592 + "onDelete": "cascade", 593 + "onUpdate": "no action" 594 + } 595 + }, 596 + "compositePrimaryKeys": {}, 597 + "uniqueConstraints": {}, 598 + "checkConstraints": {} 599 + }, 600 + "violations": { 601 + "name": "violations", 602 + "columns": { 603 + "id": { 604 + "name": "id", 605 + "type": "integer", 606 + "primaryKey": true, 607 + "notNull": true, 608 + "autoincrement": true 609 + }, 610 + "user": { 611 + "name": "user", 612 + "type": "text", 613 + "primaryKey": false, 614 + "notNull": true, 615 + "autoincrement": false 616 + }, 617 + "tosViolation": { 618 + "name": "tosViolation", 619 + "type": "integer", 620 + "primaryKey": false, 621 + "notNull": false, 622 + "autoincrement": false, 623 + "default": false 624 + }, 625 + "userPassInvalid": { 626 + "name": "userPassInvalid", 627 + "type": "integer", 628 + "primaryKey": false, 629 + "notNull": false, 630 + "autoincrement": false, 631 + "default": false 632 + }, 633 + "accountSuspended": { 634 + "name": "accountSuspended", 635 + "type": "integer", 636 + "primaryKey": false, 637 + "notNull": false, 638 + "autoincrement": false, 639 + "default": false 640 + }, 641 + "accountGone": { 642 + "name": "accountGone", 643 + "type": "integer", 644 + "primaryKey": false, 645 + "notNull": false, 646 + "autoincrement": false, 647 + "default": false 648 + }, 649 + "mediaTooBig": { 650 + "name": "mediaTooBig", 651 + "type": "integer", 652 + "primaryKey": false, 653 + "notNull": false, 654 + "autoincrement": false, 655 + "default": false 656 + }, 657 + "created_at": { 658 + "name": "created_at", 659 + "type": "integer", 660 + "primaryKey": false, 661 + "notNull": true, 662 + "autoincrement": false, 663 + "default": "CURRENT_TIMESTAMP" 664 + } 665 + }, 666 + "indexes": { 667 + "violations_user_unique": { 668 + "name": "violations_user_unique", 669 + "columns": [ 670 + "user" 671 + ], 672 + "isUnique": true 673 + }, 674 + "violations_user_idx": { 675 + "name": "violations_user_idx", 676 + "columns": [ 677 + "user" 678 + ], 679 + "isUnique": false 680 + } 681 + }, 682 + "foreignKeys": { 683 + "violations_user_users_id_fk": { 684 + "name": "violations_user_users_id_fk", 685 + "tableFrom": "violations", 686 + "tableTo": "users", 687 + "columnsFrom": [ 688 + "user" 689 + ], 690 + "columnsTo": [ 691 + "id" 692 + ], 693 + "onDelete": "cascade", 694 + "onUpdate": "no action" 695 + } 696 + }, 697 + "compositePrimaryKeys": {}, 698 + "uniqueConstraints": {}, 699 + "checkConstraints": {} 700 + } 701 + }, 702 + "views": {}, 703 + "enums": {}, 704 + "_meta": { 705 + "schemas": {}, 706 + "tables": {}, 707 + "columns": {} 708 + }, 709 + "internal": { 710 + "indexes": {} 711 + } 712 + }
+7
migrations/meta/_journal.json
··· 92 92 "when": 1767915051459, 93 93 "tag": "0012_reflective_ogun", 94 94 "breakpoints": true 95 + }, 96 + { 97 + "idx": 13, 98 + "version": "6", 99 + "when": 1769299233773, 100 + "tag": "0013_nifty_purple_man", 101 + "breakpoints": true 95 102 } 96 103 ] 97 104 }
+77 -136
package-lock.json
··· 6 6 "": { 7 7 "name": "skyscheduler", 8 8 "dependencies": { 9 - "@atproto/api": "^0.18.16", 9 + "@atproto/api": "^0.18.17", 10 10 "better-auth": "^1.4.17", 11 11 "better-auth-cloudflare": "^0.2.9", 12 12 "date-fns": "^4.1.0", ··· 22 22 "just-split": "^3.2.0", 23 23 "just-truncate": "^2.2.0", 24 24 "uuid": "^13.0.0", 25 - "zod": "^4.3.5" 25 + "zod": "^4.3.6" 26 26 }, 27 27 "devDependencies": { 28 28 "@types/node": "^24.10.9", ··· 30 30 "minify": "^14.1.0", 31 31 "npm-run-all": "^4.1.5", 32 32 "prettier": "^3.8.1", 33 - "wrangler": "^4.59.3" 33 + "wrangler": "^4.60.0" 34 34 }, 35 35 "engines": { 36 36 "node": ">=24.11.1" 37 37 } 38 38 }, 39 39 "node_modules/@atproto/api": { 40 - "version": "0.18.16", 41 - "resolved": "https://registry.npmjs.org/@atproto/api/-/api-0.18.16.tgz", 42 - "integrity": "sha512-tRGKSWr83pP5CQpSboePU21pE+GqLDYy1XHae4HH4hjaT0pr5V8wNgu70kbKB0B02GVUumeDRpJnlHKD+eMzLg==", 40 + "version": "0.18.17", 41 + "resolved": "https://registry.npmjs.org/@atproto/api/-/api-0.18.17.tgz", 42 + "integrity": "sha512-TeJkLGPkiK3jblwTDSNTH+CnS6WgaOiHDZeVVzywtxomyyF0FpQVSMz5eP3sDhxyHJqpI3E2AOYD7PO/JSbzJw==", 43 43 "license": "MIT", 44 44 "dependencies": { 45 - "@atproto/common-web": "^0.4.12", 46 - "@atproto/lexicon": "^0.6.0", 47 - "@atproto/syntax": "^0.4.2", 45 + "@atproto/common-web": "^0.4.13", 46 + "@atproto/lexicon": "^0.6.1", 47 + "@atproto/syntax": "^0.4.3", 48 48 "@atproto/xrpc": "^0.7.7", 49 49 "await-lock": "^2.2.2", 50 50 "multiformats": "^9.9.0", ··· 62 62 } 63 63 }, 64 64 "node_modules/@atproto/common-web": { 65 - "version": "0.4.12", 66 - "resolved": "https://registry.npmjs.org/@atproto/common-web/-/common-web-0.4.12.tgz", 67 - "integrity": "sha512-3aCJemqM/fkHQrVPbTCHCdiVstKFI+2LkFLvUhO6XZP0EqUZa/rg/CIZBKTFUWu9I5iYiaEiXL9VwcDRpEevSw==", 65 + "version": "0.4.13", 66 + "resolved": "https://registry.npmjs.org/@atproto/common-web/-/common-web-0.4.13.tgz", 67 + "integrity": "sha512-TewRUyB/dVJ5PtI3QmJzEgT3wDsvpnLJ+48hPl+LuUueJPamZevXKJN6dFjtbKAMFRnl2bKfdsf79qwvdSaLKQ==", 68 68 "license": "MIT", 69 69 "dependencies": { 70 - "@atproto/lex-data": "0.0.8", 71 - "@atproto/lex-json": "0.0.8", 70 + "@atproto/lex-data": "0.0.9", 71 + "@atproto/lex-json": "0.0.9", 72 + "@atproto/syntax": "0.4.3", 72 73 "zod": "^3.23.8" 73 74 } 74 75 }, ··· 82 83 } 83 84 }, 84 85 "node_modules/@atproto/lex-data": { 85 - "version": "0.0.8", 86 - "resolved": "https://registry.npmjs.org/@atproto/lex-data/-/lex-data-0.0.8.tgz", 87 - "integrity": "sha512-1Y5tz7BkS7380QuLNXaE8GW8Xba+mRWugt8BKM4BUFYjjUZdmirU8lr72iM4XlEBrzRu8Cfvj+MbsbYaZv+IgA==", 86 + "version": "0.0.9", 87 + "resolved": "https://registry.npmjs.org/@atproto/lex-data/-/lex-data-0.0.9.tgz", 88 + "integrity": "sha512-1slwe4sG0cyWtsq16+rBoWIxNDqGPkkvN+PV6JuzA7dgUK9bjUmXBGQU4eZlUPSS43X1Nhmr/9VjgKmEzU9vDw==", 88 89 "license": "MIT", 89 90 "dependencies": { 90 - "@atproto/syntax": "0.4.2", 91 91 "multiformats": "^9.9.0", 92 92 "tslib": "^2.8.1", 93 93 "uint8arrays": "3.0.0", ··· 95 95 } 96 96 }, 97 97 "node_modules/@atproto/lex-json": { 98 - "version": "0.0.8", 99 - "resolved": "https://registry.npmjs.org/@atproto/lex-json/-/lex-json-0.0.8.tgz", 100 - "integrity": "sha512-w1Qmkae1QhmNz+i1Zm3xr3jp0UPPRENmdlpU0qIrdxWDo9W4Mzkeyc3eSoa+Zs+zN8xkRSQw7RLZte/B7Ipdwg==", 98 + "version": "0.0.9", 99 + "resolved": "https://registry.npmjs.org/@atproto/lex-json/-/lex-json-0.0.9.tgz", 100 + "integrity": "sha512-Q2v1EVZcnd+ndyZj1r2UlGikA7q6It24CFPLbxokcf5Ba4RBupH8IkkQX7mqUDSRWPgQdmZYIdW9wUln+MKDqw==", 101 101 "license": "MIT", 102 102 "dependencies": { 103 - "@atproto/lex-data": "0.0.8", 103 + "@atproto/lex-data": "0.0.9", 104 104 "tslib": "^2.8.1" 105 105 } 106 106 }, 107 107 "node_modules/@atproto/lexicon": { 108 - "version": "0.6.0", 109 - "resolved": "https://registry.npmjs.org/@atproto/lexicon/-/lexicon-0.6.0.tgz", 110 - "integrity": "sha512-5veb8aD+J5M0qszLJ+73KSFsFrJBgAY/nM1TSAJvGY7fNc9ZAT+PSUlmIyrdye9YznAZ07yktalls/TwNV7cHQ==", 108 + "version": "0.6.1", 109 + "resolved": "https://registry.npmjs.org/@atproto/lexicon/-/lexicon-0.6.1.tgz", 110 + "integrity": "sha512-/vI1kVlY50Si+5MXpvOucelnYwb0UJ6Qto5mCp+7Q5C+Jtp+SoSykAPVvjVtTnQUH2vrKOFOwpb3C375vSKzXw==", 111 111 "license": "MIT", 112 112 "dependencies": { 113 - "@atproto/common-web": "^0.4.7", 114 - "@atproto/syntax": "^0.4.2", 113 + "@atproto/common-web": "^0.4.13", 114 + "@atproto/syntax": "^0.4.3", 115 115 "iso-datestring-validator": "^2.2.2", 116 116 "multiformats": "^9.9.0", 117 117 "zod": "^3.23.8" ··· 127 127 } 128 128 }, 129 129 "node_modules/@atproto/syntax": { 130 - "version": "0.4.2", 131 - "resolved": "https://registry.npmjs.org/@atproto/syntax/-/syntax-0.4.2.tgz", 132 - "integrity": "sha512-X9XSRPinBy/0VQ677j8VXlBsYSsUXaiqxWVpGGxJYsAhugdQRb0jqaVKJFtm6RskeNkV6y9xclSUi9UYG/COrA==", 133 - "license": "MIT" 130 + "version": "0.4.3", 131 + "resolved": "https://registry.npmjs.org/@atproto/syntax/-/syntax-0.4.3.tgz", 132 + "integrity": "sha512-YoZUz40YAJr5nPwvCDWgodEOlt5IftZqPJvA0JDWjuZKD8yXddTwSzXSaKQAzGOpuM+/A3uXRtPzJJqlScc+iA==", 133 + "license": "MIT", 134 + "dependencies": { 135 + "tslib": "^2.8.1" 136 + } 134 137 }, 135 138 "node_modules/@atproto/xrpc": { 136 139 "version": "0.7.7", ··· 155 158 "version": "1.4.17", 156 159 "resolved": "https://registry.npmjs.org/@better-auth/core/-/core-1.4.17.tgz", 157 160 "integrity": "sha512-WSaEQDdUO6B1CzAmissN6j0lx9fM9lcslEYzlApB5UzFaBeAOHNUONTdglSyUs6/idiZBoRvt0t/qMXCgIU8ug==", 158 - "peer": true, 159 161 "dependencies": { 160 162 "@standard-schema/spec": "^1.0.0", 161 163 "zod": "^4.3.5" ··· 185 187 "version": "0.3.0", 186 188 "resolved": "https://registry.npmjs.org/@better-auth/utils/-/utils-0.3.0.tgz", 187 189 "integrity": "sha512-W+Adw6ZA6mgvnSnhOki270rwJ42t4XzSK6YWGF//BbVXL6SwCLWfyzBc1lN2m/4RM28KubdBKQ4X5VMoLRNPQw==", 188 - "license": "MIT", 189 - "peer": true 190 + "license": "MIT" 190 191 }, 191 192 "node_modules/@better-fetch/fetch": { 192 193 "version": "1.1.21", 193 194 "resolved": "https://registry.npmjs.org/@better-fetch/fetch/-/fetch-1.1.21.tgz", 194 - "integrity": "sha512-/ImESw0sskqlVR94jB+5+Pxjf+xBwDZF/N5+y2/q4EqD7IARUTSpPfIo8uf39SYpCxyOCtbyYpUrZ3F/k0zT4A==", 195 - "peer": true 195 + "integrity": "sha512-/ImESw0sskqlVR94jB+5+Pxjf+xBwDZF/N5+y2/q4EqD7IARUTSpPfIo8uf39SYpCxyOCtbyYpUrZ3F/k0zT4A==" 196 196 }, 197 197 "node_modules/@cloudflare/kv-asset-handler": { 198 198 "version": "0.4.2", ··· 205 205 } 206 206 }, 207 207 "node_modules/@cloudflare/unenv-preset": { 208 - "version": "2.10.0", 209 - "resolved": "https://registry.npmjs.org/@cloudflare/unenv-preset/-/unenv-preset-2.10.0.tgz", 210 - "integrity": "sha512-/uII4vLQXhzCAZzEVeYAjFLBNg2nqTJ1JGzd2lRF6ItYe6U2zVoYGfeKpGx/EkBF6euiU+cyBXgMdtJih+nQ6g==", 208 + "version": "2.11.0", 209 + "resolved": "https://registry.npmjs.org/@cloudflare/unenv-preset/-/unenv-preset-2.11.0.tgz", 210 + "integrity": "sha512-z3hxFajL765VniNPGV0JRStZolNz63gU3B3AktwoGdDlnQvz5nP+Ah4RL04PONlZQjwmDdGHowEStJ94+RsaJg==", 211 211 "dev": true, 212 212 "license": "MIT OR Apache-2.0", 213 213 "peerDependencies": { 214 214 "unenv": "2.0.0-rc.24", 215 - "workerd": "^1.20251221.0" 215 + "workerd": "^1.20260115.0" 216 216 }, 217 217 "peerDependenciesMeta": { 218 218 "workerd": { ··· 221 221 } 222 222 }, 223 223 "node_modules/@cloudflare/workerd-darwin-64": { 224 - "version": "1.20260116.0", 225 - "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20260116.0.tgz", 226 - "integrity": "sha512-0LF2jR/5bfCIMYsqtCXHqaZRlXEMgnz4NzG/8KVmHROlKb06SJezYYoNKw+7s6ji4fgi1BcYAJBmWbC4nzMbqw==", 224 + "version": "1.20260120.0", 225 + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20260120.0.tgz", 226 + "integrity": "sha512-JLHx3p5dpwz4wjVSis45YNReftttnI3ndhdMh5BUbbpdreN/g0jgxNt5Qp9tDFqEKl++N63qv+hxJiIIvSLR+Q==", 227 227 "cpu": [ 228 228 "x64" 229 229 ], ··· 238 238 } 239 239 }, 240 240 "node_modules/@cloudflare/workerd-darwin-arm64": { 241 - "version": "1.20260116.0", 242 - "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20260116.0.tgz", 243 - "integrity": "sha512-a9OHts4jMoOkPedc4CnuHPeo9XRG3VCMMgr0ER5HtSfEDRQhh7MwIuPEmqI27KKrYj+DeoCazIgbp3gW9bFTAg==", 241 + "version": "1.20260120.0", 242 + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20260120.0.tgz", 243 + "integrity": "sha512-1Md2tCRhZjwajsZNOiBeOVGiS3zbpLPzUDjHr4+XGTXWOA6FzzwScJwQZLa0Doc28Cp4Nr1n7xGL0Dwiz1XuOA==", 244 244 "cpu": [ 245 245 "arm64" 246 246 ], ··· 255 255 } 256 256 }, 257 257 "node_modules/@cloudflare/workerd-linux-64": { 258 - "version": "1.20260116.0", 259 - "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20260116.0.tgz", 260 - "integrity": "sha512-nCMy7D7BeH/feGiD7C5Z1LG19Wvs3qmHSRe3cwz6HYRQHdDXUHTjXwEVid7Vejf9QFNe3iAn49Sy/h2XY2Rqeg==", 258 + "version": "1.20260120.0", 259 + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20260120.0.tgz", 260 + "integrity": "sha512-O0mIfJfvU7F8N5siCoRDaVDuI12wkz2xlG4zK6/Ct7U9c9FiE0ViXNFWXFQm5PPj+qbkNRyhjUwhP+GCKTk5EQ==", 261 261 "cpu": [ 262 262 "x64" 263 263 ], ··· 272 272 } 273 273 }, 274 274 "node_modules/@cloudflare/workerd-linux-arm64": { 275 - "version": "1.20260116.0", 276 - "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20260116.0.tgz", 277 - "integrity": "sha512-Hve4ciPI69aIzwfSD12PVZJoEnKIkdR3Vd0w8rD1hDVxk75xAA65KqVYf5qW+8KOYrYkU3pg7hBTMjeyDF//IQ==", 275 + "version": "1.20260120.0", 276 + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20260120.0.tgz", 277 + "integrity": "sha512-aRHO/7bjxVpjZEmVVcpmhbzpN6ITbFCxuLLZSW0H9O0C0w40cDCClWSi19T87Ax/PQcYjFNT22pTewKsupkckA==", 278 278 "cpu": [ 279 279 "arm64" 280 280 ], ··· 289 289 } 290 290 }, 291 291 "node_modules/@cloudflare/workerd-windows-64": { 292 - "version": "1.20260116.0", 293 - "resolved": "https://registry.npmjs.org/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20260116.0.tgz", 294 - "integrity": "sha512-7QA6OTXQtBdszkXw3rzxpkk1RoINZJY1ADQjF0vFNAbVXD1VEXLZnk0jc505tqARI8w/0DdVjaJszqL7K5k00w==", 292 + "version": "1.20260120.0", 293 + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20260120.0.tgz", 294 + "integrity": "sha512-ASZIz1E8sqZQqQCgcfY1PJbBpUDrxPt8NZ+lqNil0qxnO4qX38hbCsdDF2/TDAuq0Txh7nu8ztgTelfNDlb4EA==", 295 295 "cpu": [ 296 296 "x64" 297 297 ], ··· 366 366 "cpu": [ 367 367 "arm" 368 368 ], 369 - "dev": true, 370 369 "license": "MIT", 371 370 "optional": true, 372 371 "os": [ ··· 383 382 "cpu": [ 384 383 "arm64" 385 384 ], 386 - "dev": true, 387 385 "license": "MIT", 388 386 "optional": true, 389 387 "os": [ ··· 400 398 "cpu": [ 401 399 "x64" 402 400 ], 403 - "dev": true, 404 401 "license": "MIT", 405 402 "optional": true, 406 403 "os": [ ··· 417 414 "cpu": [ 418 415 "arm64" 419 416 ], 420 - "dev": true, 421 417 "license": "MIT", 422 418 "optional": true, 423 419 "os": [ ··· 434 430 "cpu": [ 435 431 "x64" 436 432 ], 437 - "dev": true, 438 433 "license": "MIT", 439 434 "optional": true, 440 435 "os": [ ··· 451 446 "cpu": [ 452 447 "arm64" 453 448 ], 454 - "dev": true, 455 449 "license": "MIT", 456 450 "optional": true, 457 451 "os": [ ··· 468 462 "cpu": [ 469 463 "x64" 470 464 ], 471 - "dev": true, 472 465 "license": "MIT", 473 466 "optional": true, 474 467 "os": [ ··· 485 478 "cpu": [ 486 479 "arm" 487 480 ], 488 - "dev": true, 489 481 "license": "MIT", 490 482 "optional": true, 491 483 "os": [ ··· 502 494 "cpu": [ 503 495 "arm64" 504 496 ], 505 - "dev": true, 506 497 "license": "MIT", 507 498 "optional": true, 508 499 "os": [ ··· 519 510 "cpu": [ 520 511 "ia32" 521 512 ], 522 - "dev": true, 523 513 "license": "MIT", 524 514 "optional": true, 525 515 "os": [ ··· 536 526 "cpu": [ 537 527 "loong64" 538 528 ], 539 - "dev": true, 540 529 "license": "MIT", 541 530 "optional": true, 542 531 "os": [ ··· 553 542 "cpu": [ 554 543 "mips64el" 555 544 ], 556 - "dev": true, 557 545 "license": "MIT", 558 546 "optional": true, 559 547 "os": [ ··· 570 558 "cpu": [ 571 559 "ppc64" 572 560 ], 573 - "dev": true, 574 561 "license": "MIT", 575 562 "optional": true, 576 563 "os": [ ··· 587 574 "cpu": [ 588 575 "riscv64" 589 576 ], 590 - "dev": true, 591 577 "license": "MIT", 592 578 "optional": true, 593 579 "os": [ ··· 604 590 "cpu": [ 605 591 "s390x" 606 592 ], 607 - "dev": true, 608 593 "license": "MIT", 609 594 "optional": true, 610 595 "os": [ ··· 621 606 "cpu": [ 622 607 "x64" 623 608 ], 624 - "dev": true, 625 609 "license": "MIT", 626 610 "optional": true, 627 611 "os": [ ··· 638 622 "cpu": [ 639 623 "x64" 640 624 ], 641 - "dev": true, 642 625 "license": "MIT", 643 626 "optional": true, 644 627 "os": [ ··· 655 638 "cpu": [ 656 639 "x64" 657 640 ], 658 - "dev": true, 659 641 "license": "MIT", 660 642 "optional": true, 661 643 "os": [ ··· 672 654 "cpu": [ 673 655 "x64" 674 656 ], 675 - "dev": true, 676 657 "license": "MIT", 677 658 "optional": true, 678 659 "os": [ ··· 689 670 "cpu": [ 690 671 "arm64" 691 672 ], 692 - "dev": true, 693 673 "license": "MIT", 694 674 "optional": true, 695 675 "os": [ ··· 706 686 "cpu": [ 707 687 "ia32" 708 688 ], 709 - "dev": true, 710 689 "license": "MIT", 711 690 "optional": true, 712 691 "os": [ ··· 723 702 "cpu": [ 724 703 "x64" 725 704 ], 726 - "dev": true, 727 705 "license": "MIT", 728 706 "optional": true, 729 707 "os": [ ··· 790 768 "cpu": [ 791 769 "ppc64" 792 770 ], 793 - "dev": true, 794 771 "license": "MIT", 795 772 "optional": true, 796 773 "os": [ ··· 807 784 "cpu": [ 808 785 "arm" 809 786 ], 810 - "dev": true, 811 787 "license": "MIT", 812 788 "optional": true, 813 789 "os": [ ··· 824 800 "cpu": [ 825 801 "arm64" 826 802 ], 827 - "dev": true, 828 803 "license": "MIT", 829 804 "optional": true, 830 805 "os": [ ··· 841 816 "cpu": [ 842 817 "x64" 843 818 ], 844 - "dev": true, 845 819 "license": "MIT", 846 820 "optional": true, 847 821 "os": [ ··· 858 832 "cpu": [ 859 833 "arm64" 860 834 ], 861 - "dev": true, 862 835 "license": "MIT", 863 836 "optional": true, 864 837 "os": [ ··· 875 848 "cpu": [ 876 849 "x64" 877 850 ], 878 - "dev": true, 879 851 "license": "MIT", 880 852 "optional": true, 881 853 "os": [ ··· 892 864 "cpu": [ 893 865 "arm64" 894 866 ], 895 - "dev": true, 896 867 "license": "MIT", 897 868 "optional": true, 898 869 "os": [ ··· 909 880 "cpu": [ 910 881 "x64" 911 882 ], 912 - "dev": true, 913 883 "license": "MIT", 914 884 "optional": true, 915 885 "os": [ ··· 926 896 "cpu": [ 927 897 "arm" 928 898 ], 929 - "dev": true, 930 899 "license": "MIT", 931 900 "optional": true, 932 901 "os": [ ··· 943 912 "cpu": [ 944 913 "arm64" 945 914 ], 946 - "dev": true, 947 915 "license": "MIT", 948 916 "optional": true, 949 917 "os": [ ··· 960 928 "cpu": [ 961 929 "ia32" 962 930 ], 963 - "dev": true, 964 931 "license": "MIT", 965 932 "optional": true, 966 933 "os": [ ··· 977 944 "cpu": [ 978 945 "loong64" 979 946 ], 980 - "dev": true, 981 947 "license": "MIT", 982 948 "optional": true, 983 949 "os": [ ··· 994 960 "cpu": [ 995 961 "mips64el" 996 962 ], 997 - "dev": true, 998 963 "license": "MIT", 999 964 "optional": true, 1000 965 "os": [ ··· 1011 976 "cpu": [ 1012 977 "ppc64" 1013 978 ], 1014 - "dev": true, 1015 979 "license": "MIT", 1016 980 "optional": true, 1017 981 "os": [ ··· 1028 992 "cpu": [ 1029 993 "riscv64" 1030 994 ], 1031 - "dev": true, 1032 995 "license": "MIT", 1033 996 "optional": true, 1034 997 "os": [ ··· 1045 1008 "cpu": [ 1046 1009 "s390x" 1047 1010 ], 1048 - "dev": true, 1049 1011 "license": "MIT", 1050 1012 "optional": true, 1051 1013 "os": [ ··· 1062 1024 "cpu": [ 1063 1025 "x64" 1064 1026 ], 1065 - "dev": true, 1066 1027 "license": "MIT", 1067 1028 "optional": true, 1068 1029 "os": [ ··· 1079 1040 "cpu": [ 1080 1041 "arm64" 1081 1042 ], 1082 - "dev": true, 1083 1043 "license": "MIT", 1084 1044 "optional": true, 1085 1045 "os": [ ··· 1096 1056 "cpu": [ 1097 1057 "x64" 1098 1058 ], 1099 - "dev": true, 1100 1059 "license": "MIT", 1101 1060 "optional": true, 1102 1061 "os": [ ··· 1113 1072 "cpu": [ 1114 1073 "arm64" 1115 1074 ], 1116 - "dev": true, 1117 1075 "license": "MIT", 1118 1076 "optional": true, 1119 1077 "os": [ ··· 1130 1088 "cpu": [ 1131 1089 "x64" 1132 1090 ], 1133 - "dev": true, 1134 1091 "license": "MIT", 1135 1092 "optional": true, 1136 1093 "os": [ ··· 1147 1104 "cpu": [ 1148 1105 "arm64" 1149 1106 ], 1150 - "dev": true, 1151 1107 "license": "MIT", 1152 1108 "optional": true, 1153 1109 "os": [ ··· 1164 1120 "cpu": [ 1165 1121 "x64" 1166 1122 ], 1167 - "dev": true, 1168 1123 "license": "MIT", 1169 1124 "optional": true, 1170 1125 "os": [ ··· 1181 1136 "cpu": [ 1182 1137 "arm64" 1183 1138 ], 1184 - "dev": true, 1185 1139 "license": "MIT", 1186 1140 "optional": true, 1187 1141 "os": [ ··· 1198 1152 "cpu": [ 1199 1153 "ia32" 1200 1154 ], 1201 - "dev": true, 1202 1155 "license": "MIT", 1203 1156 "optional": true, 1204 1157 "os": [ ··· 1215 1168 "cpu": [ 1216 1169 "x64" 1217 1170 ], 1218 - "dev": true, 1219 1171 "license": "MIT", 1220 1172 "optional": true, 1221 1173 "os": [ ··· 2212 2164 "resolved": "https://registry.npmjs.org/better-auth/-/better-auth-1.4.17.tgz", 2213 2165 "integrity": "sha512-VmHGQyKsEahkEs37qguROKg/6ypYpNF13D7v/lkbO7w7Aivz0Bv2h+VyUkH4NzrGY0QBKXi1577mGhDCVwp0ew==", 2214 2166 "license": "MIT", 2215 - "peer": true, 2216 2167 "dependencies": { 2217 2168 "@better-auth/core": "1.4.17", 2218 2169 "@better-auth/telemetry": "1.4.17", ··· 2452 2403 "resolved": "https://registry.npmjs.org/better-call/-/better-call-1.1.8.tgz", 2453 2404 "integrity": "sha512-XMQ2rs6FNXasGNfMjzbyroSwKwYbZ/T3IxruSS6U2MJRsSYh3wYtG3o6H00ZlKZ/C/UPOAD97tqgQJNsxyeTXw==", 2454 2405 "license": "MIT", 2455 - "peer": true, 2456 2406 "dependencies": { 2457 2407 "@better-auth/utils": "^0.3.0", 2458 2408 "@better-fetch/fetch": "^1.1.4", ··· 2855 2805 "integrity": "sha512-O9EC/miwdnRDY10qRxM8P3Pg8hXe3LyU4ZipReKOgTwn4OqANmftj8XJz1UPUAS6NMHf0E2htjsbQujUTkncCg==", 2856 2806 "devOptional": true, 2857 2807 "license": "MIT", 2858 - "peer": true, 2859 2808 "dependencies": { 2860 2809 "@drizzle-team/brocli": "^0.10.2", 2861 2810 "@esbuild-kit/esm-loader": "^2.5.5", ··· 2871 2820 "resolved": "https://registry.npmjs.org/drizzle-orm/-/drizzle-orm-0.45.1.tgz", 2872 2821 "integrity": "sha512-Te0FOdKIistGNPMq2jscdqngBRfBpC8uMFVwqjf6gtTVJHIQ/dosgV/CLBU2N4ZJBsXL5savCba9b0YJskKdcA==", 2873 2822 "license": "Apache-2.0", 2874 - "peer": true, 2875 2823 "peerDependencies": { 2876 2824 "@aws-sdk/client-rds-data": ">=3", 2877 2825 "@cloudflare/workers-types": ">=4", ··· 3183 3131 "devOptional": true, 3184 3132 "hasInstallScript": true, 3185 3133 "license": "MIT", 3186 - "peer": true, 3187 3134 "bin": { 3188 3135 "esbuild": "bin/esbuild" 3189 3136 }, ··· 4025 3972 "resolved": "https://registry.npmjs.org/jose/-/jose-6.1.3.tgz", 4026 3973 "integrity": "sha512-0TpaTfihd4QMNwrz/ob2Bp7X04yuxJkjRGi4aKmOqwhov54i6u79oCv7T+C7lo70MKH6BesI3vscD1yb/yzKXQ==", 4027 3974 "license": "MIT", 4028 - "peer": true, 4029 3975 "funding": { 4030 3976 "url": "https://github.com/sponsors/panva" 4031 3977 } ··· 4094 4040 "resolved": "https://registry.npmjs.org/kysely/-/kysely-0.28.10.tgz", 4095 4041 "integrity": "sha512-ksNxfzIW77OcZ+QWSAPC7yDqUSaIVwkTWnTPNiIy//vifNbwsSgQ57OkkncHxxpcBHM3LRfLAZVEh7kjq5twVA==", 4096 4042 "license": "MIT", 4097 - "peer": true, 4098 4043 "engines": { 4099 4044 "node": ">=20.0.0" 4100 4045 } ··· 4437 4382 } 4438 4383 }, 4439 4384 "node_modules/miniflare": { 4440 - "version": "4.20260116.0", 4441 - "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-4.20260116.0.tgz", 4442 - "integrity": "sha512-fCU1thOdiKfcauYp/gAchhesOTqTPy3K7xY6g72RiJ2xkna18QJ3Mh5sgDmnqlOEqSW9vpmYeK8vd/aqkrtlUA==", 4385 + "version": "4.20260120.0", 4386 + "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-4.20260120.0.tgz", 4387 + "integrity": "sha512-XXZyE2pDKMtP5OLuv0LPHEAzIYhov4jrYjcqrhhqtxGGtXneWOHvXIPo+eV8sqwqWd3R7j4DlEKcyb+87BR49Q==", 4443 4388 "dev": true, 4444 4389 "license": "MIT", 4445 4390 "dependencies": { 4446 4391 "@cspotcode/source-map-support": "0.8.1", 4447 4392 "sharp": "^0.34.5", 4448 4393 "undici": "7.18.2", 4449 - "workerd": "1.20260116.0", 4394 + "workerd": "1.20260120.0", 4450 4395 "ws": "8.18.0", 4451 4396 "youch": "4.1.0-beta.10", 4452 4397 "zod": "^3.25.76" ··· 4542 4487 } 4543 4488 ], 4544 4489 "license": "MIT", 4545 - "peer": true, 4546 4490 "engines": { 4547 4491 "node": "^20.0.0 || >=22.0.0" 4548 4492 } ··· 5670 5614 "integrity": "sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==", 5671 5615 "dev": true, 5672 5616 "license": "MIT", 5673 - "peer": true, 5674 5617 "dependencies": { 5675 5618 "pathe": "^2.0.3" 5676 5619 } ··· 5841 5784 } 5842 5785 }, 5843 5786 "node_modules/workerd": { 5844 - "version": "1.20260116.0", 5845 - "resolved": "https://registry.npmjs.org/workerd/-/workerd-1.20260116.0.tgz", 5846 - "integrity": "sha512-tVdBes3qkZKm9ntrgSDlvKzk4g2mcMp4bNM1+UgZMpTesb0x7e59vYYcKclbSNypmVkdLWpEc2TOpO0WF/rrZw==", 5787 + "version": "1.20260120.0", 5788 + "resolved": "https://registry.npmjs.org/workerd/-/workerd-1.20260120.0.tgz", 5789 + "integrity": "sha512-R6X/VQOkwLTBGLp4VRUwLQZZVxZ9T9J8pGiJ6GQUMaRkY7TVWrCSkVfoNMM1/YyFsY5UYhhPoQe5IehnhZ3Pdw==", 5847 5790 "dev": true, 5848 5791 "hasInstallScript": true, 5849 5792 "license": "Apache-2.0", 5850 - "peer": true, 5851 5793 "bin": { 5852 5794 "workerd": "bin/workerd" 5853 5795 }, ··· 5855 5797 "node": ">=16" 5856 5798 }, 5857 5799 "optionalDependencies": { 5858 - "@cloudflare/workerd-darwin-64": "1.20260116.0", 5859 - "@cloudflare/workerd-darwin-arm64": "1.20260116.0", 5860 - "@cloudflare/workerd-linux-64": "1.20260116.0", 5861 - "@cloudflare/workerd-linux-arm64": "1.20260116.0", 5862 - "@cloudflare/workerd-windows-64": "1.20260116.0" 5800 + "@cloudflare/workerd-darwin-64": "1.20260120.0", 5801 + "@cloudflare/workerd-darwin-arm64": "1.20260120.0", 5802 + "@cloudflare/workerd-linux-64": "1.20260120.0", 5803 + "@cloudflare/workerd-linux-arm64": "1.20260120.0", 5804 + "@cloudflare/workerd-windows-64": "1.20260120.0" 5863 5805 } 5864 5806 }, 5865 5807 "node_modules/wrangler": { 5866 - "version": "4.59.3", 5867 - "resolved": "https://registry.npmjs.org/wrangler/-/wrangler-4.59.3.tgz", 5868 - "integrity": "sha512-zl+nqoGzWJ4K+NEMjy4GiaIi9ix59FkOzd7UsDb8CQADwy3li1DSNAzHty/BWYa3ZvMxr/G4pogMBb5vcSrNvQ==", 5808 + "version": "4.60.0", 5809 + "resolved": "https://registry.npmjs.org/wrangler/-/wrangler-4.60.0.tgz", 5810 + "integrity": "sha512-n4kibm/xY0Qd5G2K/CbAQeVeOIlwPNVglmFjlDRCCYk3hZh8IggO/rg8AXt/vByK2Sxsugl5Z7yvgWxrUbmS6g==", 5869 5811 "dev": true, 5870 5812 "license": "MIT OR Apache-2.0", 5871 5813 "dependencies": { 5872 5814 "@cloudflare/kv-asset-handler": "0.4.2", 5873 - "@cloudflare/unenv-preset": "2.10.0", 5815 + "@cloudflare/unenv-preset": "2.11.0", 5874 5816 "blake3-wasm": "2.1.5", 5875 5817 "esbuild": "0.27.0", 5876 - "miniflare": "4.20260116.0", 5818 + "miniflare": "4.20260120.0", 5877 5819 "path-to-regexp": "6.3.0", 5878 5820 "unenv": "2.0.0-rc.24", 5879 - "workerd": "1.20260116.0" 5821 + "workerd": "1.20260120.0" 5880 5822 }, 5881 5823 "bin": { 5882 5824 "wrangler": "bin/wrangler.js", ··· 5889 5831 "fsevents": "~2.3.2" 5890 5832 }, 5891 5833 "peerDependencies": { 5892 - "@cloudflare/workers-types": "^4.20260116.0" 5834 + "@cloudflare/workers-types": "^4.20260120.0" 5893 5835 }, 5894 5836 "peerDependenciesMeta": { 5895 5837 "@cloudflare/workers-types": { ··· 6442 6384 } 6443 6385 }, 6444 6386 "node_modules/zod": { 6445 - "version": "4.3.5", 6446 - "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.5.tgz", 6447 - "integrity": "sha512-k7Nwx6vuWx1IJ9Bjuf4Zt1PEllcwe7cls3VNzm4CQ1/hgtFUK2bRNG3rvnpPUhFjmqJKAKtjV576KnUkHocg/g==", 6387 + "version": "4.3.6", 6388 + "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", 6389 + "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", 6448 6390 "license": "MIT", 6449 - "peer": true, 6450 6391 "funding": { 6451 6392 "url": "https://github.com/sponsors/colinhacks" 6452 6393 }
+3 -3
package.json
··· 24 24 "types": "wrangler types src/wrangler.d.ts" 25 25 }, 26 26 "dependencies": { 27 - "@atproto/api": "^0.18.16", 27 + "@atproto/api": "^0.18.17", 28 28 "better-auth": "^1.4.17", 29 29 "better-auth-cloudflare": "^0.2.9", 30 30 "date-fns": "^4.1.0", ··· 40 40 "just-split": "^3.2.0", 41 41 "just-truncate": "^2.2.0", 42 42 "uuid": "^13.0.0", 43 - "zod": "^4.3.5" 43 + "zod": "^4.3.6" 44 44 }, 45 45 "devDependencies": { 46 46 "@types/node": "^24.10.9", ··· 48 48 "minify": "^14.1.0", 49 49 "npm-run-all": "^4.1.5", 50 50 "prettier": "^3.8.1", 51 - "wrangler": "^4.59.3" 51 + "wrangler": "^4.60.0" 52 52 }, 53 53 "engines": { 54 54 "node": ">=24.11.1"
+1 -1
src/db/app.schema.ts
··· 54 54 id: integer('id', { mode: 'number' }).primaryKey({ autoIncrement: true }), 55 55 userId: text("user") 56 56 .notNull() 57 - .references(() => users.id, { onDelete: "cascade" }), 57 + .references(() => users.id, { onDelete: "cascade" }).unique(), 58 58 tosViolation: integer('tosViolation', { mode: 'boolean' }).default(false), 59 59 userPassInvalid: integer('userPassInvalid', { mode: 'boolean' }).default(false), 60 60 accountSuspended: integer('accountSuspended', { mode: 'boolean' }).default(false),