the statusphere demo reworked into a vite/react app in a monorepo

compat w/ oauth dev preview. update deps.

+107 -138
+85 -123
package-lock.json
··· 9 9 "version": "0.0.1", 10 10 "license": "MIT", 11 11 "dependencies": { 12 + "@atproto/api": "^0.13.4", 12 13 "@atproto/identity": "^0.4.0", 13 - "@atproto/lexicon": "0.4.1-rc.0", 14 - "@atproto/oauth-client-node": "0.0.2-rc.2", 15 - "@atproto/repo": "0.4.2-rc.0", 14 + "@atproto/lexicon": "^0.4.1", 15 + "@atproto/oauth-client-node": "^0.1.0", 16 + "@atproto/repo": "^0.4.3", 16 17 "@atproto/syntax": "^0.3.0", 17 - "@atproto/xrpc-server": "0.5.4-rc.0", 18 + "@atproto/xrpc-server": "^0.6.3", 18 19 "better-sqlite3": "^11.1.2", 19 20 "dotenv": "^16.4.5", 20 21 "envalid": "^8.0.0", ··· 23 24 "kysely": "^0.27.4", 24 25 "multiformats": "^9.9.0", 25 26 "pino": "^9.3.2", 26 - "pino-http": "^10.0.0", 27 27 "uhtml": "^4.5.9" 28 28 }, 29 29 "devDependencies": { ··· 39 39 } 40 40 }, 41 41 "node_modules/@atproto-labs/did-resolver": { 42 - "version": "0.1.2-rc.0", 43 - "resolved": "https://registry.npmjs.org/@atproto-labs/did-resolver/-/did-resolver-0.1.2-rc.0.tgz", 44 - "integrity": "sha512-5lVxhLG9P1G1XjGXQr7fhk6mBM5vpbCalrfuVXqU5xQADvObLjEtpxpJuLheAacaV2pUMFDml+53ZLYWXCgFIg==", 42 + "version": "0.1.2", 43 + "resolved": "https://registry.npmjs.org/@atproto-labs/did-resolver/-/did-resolver-0.1.2.tgz", 44 + "integrity": "sha512-d/nQHoieDo0tf0OX45LJcLQlSuyzVOV5lND7krlSxeAyD3pO5Fx1G8FtmkoPlMt4LT1OCIIQNmjh42pOcGH3WA==", 45 45 "dependencies": { 46 46 "@atproto-labs/fetch": "0.1.0", 47 47 "@atproto-labs/pipe": "0.1.0", 48 48 "@atproto-labs/simple-store": "0.1.1", 49 49 "@atproto-labs/simple-store-memory": "0.1.1", 50 - "@atproto/did": "0.1.1-rc.0", 50 + "@atproto/did": "0.1.1", 51 51 "zod": "^3.23.8" 52 52 } 53 53 }, ··· 75 75 } 76 76 }, 77 77 "node_modules/@atproto-labs/handle-resolver": { 78 - "version": "0.1.2-rc.0", 79 - "resolved": "https://registry.npmjs.org/@atproto-labs/handle-resolver/-/handle-resolver-0.1.2-rc.0.tgz", 80 - "integrity": "sha512-sxk/Zr1hWyBBcg1HhZ8N/Tw1Iue/6+V6bzu2c8zYhO9VfKgCBp3FFU1/i3MpgR2AlsEqZpcjv6zj4KAnMHiLUg==", 78 + "version": "0.1.2", 79 + "resolved": "https://registry.npmjs.org/@atproto-labs/handle-resolver/-/handle-resolver-0.1.2.tgz", 80 + "integrity": "sha512-0D8d1QpGqyp0DLYnKpAFJ5YaIgiRUHMqKnbd1d0reOuJoa7ebwxMolNhP3RnKlOQ/9gaL3Y3ORZFeEjXK+eRqg==", 81 81 "dependencies": { 82 82 "@atproto-labs/simple-store": "0.1.1", 83 83 "@atproto-labs/simple-store-memory": "0.1.1", 84 - "@atproto/did": "0.1.1-rc.0", 84 + "@atproto/did": "0.1.1", 85 85 "zod": "^3.23.8" 86 86 } 87 87 }, 88 88 "node_modules/@atproto-labs/handle-resolver-node": { 89 - "version": "0.1.2-rc.0", 90 - "resolved": "https://registry.npmjs.org/@atproto-labs/handle-resolver-node/-/handle-resolver-node-0.1.2-rc.0.tgz", 91 - "integrity": "sha512-wP1c0fqxdhnIQVxFgD3Z6fiToq1ri9ECTCSPoy/1zbNJ+KWrr0V6BSONF/I5MytEbQaICBh8bvZuurvX0OjbNw==", 89 + "version": "0.1.2", 90 + "resolved": "https://registry.npmjs.org/@atproto-labs/handle-resolver-node/-/handle-resolver-node-0.1.2.tgz", 91 + "integrity": "sha512-T+QApSezlb71+VLUua3bEmaDN4umvfzEzw/iS1BAZC7BwmGxOg/MBRdE9n6fPU4ul0ekG+6vRhpW4owCS20x3Q==", 92 92 "dependencies": { 93 93 "@atproto-labs/fetch-node": "0.1.0", 94 - "@atproto-labs/handle-resolver": "0.1.2-rc.0", 95 - "@atproto/did": "0.1.1-rc.0" 94 + "@atproto-labs/handle-resolver": "0.1.2", 95 + "@atproto/did": "0.1.1" 96 96 } 97 97 }, 98 98 "node_modules/@atproto-labs/identity-resolver": { 99 - "version": "0.1.2-rc.0", 100 - "resolved": "https://registry.npmjs.org/@atproto-labs/identity-resolver/-/identity-resolver-0.1.2-rc.0.tgz", 101 - "integrity": "sha512-4TLjNRbufeGduac3c/No4teJ411qNgyBQck7eY5e2K8XrzS2a/xX/bq3JP91DrvERHiP3yE22PB6ATQkuALgXA==", 99 + "version": "0.1.2", 100 + "resolved": "https://registry.npmjs.org/@atproto-labs/identity-resolver/-/identity-resolver-0.1.2.tgz", 101 + "integrity": "sha512-166XTfq/gvdzmJT6tMvMvsT4h9yVyse8yJVn534j5GPGTqPtyky57/SNyO+R8QbOr4ffG0NQRO+OAazsVR0mVw==", 102 102 "dependencies": { 103 - "@atproto-labs/did-resolver": "0.1.2-rc.0", 104 - "@atproto-labs/handle-resolver": "0.1.2-rc.0", 103 + "@atproto-labs/did-resolver": "0.1.2", 104 + "@atproto-labs/handle-resolver": "0.1.2", 105 105 "@atproto/syntax": "0.3.0" 106 106 } 107 107 }, ··· 125 125 } 126 126 }, 127 127 "node_modules/@atproto/api": { 128 - "version": "0.13.0-rc.1", 129 - "resolved": "https://registry.npmjs.org/@atproto/api/-/api-0.13.0-rc.1.tgz", 130 - "integrity": "sha512-h2+M6OoMLnNzqf2KDxsbRkg3/1k2IMWH33PQI31GkiQHIdt3B+MIXvJwXePu0KnMUL/Lvv2Zk01BKiDnjd4LEw==", 128 + "version": "0.13.4", 129 + "resolved": "https://registry.npmjs.org/@atproto/api/-/api-0.13.4.tgz", 130 + "integrity": "sha512-Fwn37hP+Xr9YjA/hadvn7ZKbUPQhJiUus1+govgNKF3/jNdyk2ICoEe0z+hxaO3xX8LCU5yARbgt3SRoXbIwrg==", 131 131 "dependencies": { 132 132 "@atproto/common-web": "^0.3.0", 133 - "@atproto/lexicon": "^0.4.1-rc.0", 133 + "@atproto/lexicon": "^0.4.1", 134 134 "@atproto/syntax": "^0.3.0", 135 - "@atproto/xrpc": "^0.6.0-rc.0", 135 + "@atproto/xrpc": "^0.6.1", 136 136 "await-lock": "^2.2.2", 137 137 "multiformats": "^9.9.0", 138 138 "tlds": "^1.234.0" ··· 210 210 } 211 211 }, 212 212 "node_modules/@atproto/crypto": { 213 - "version": "0.4.0", 214 - "resolved": "https://registry.npmjs.org/@atproto/crypto/-/crypto-0.4.0.tgz", 215 - "integrity": "sha512-Kj/4VgJ7hzzXvE42L0rjzP6lM0tai+OfPnP1rxJ+UZg/YUDtuewL4uapnVoWXvlNceKgaLZH98g5n9gXBVTe5Q==", 213 + "version": "0.4.1", 214 + "resolved": "https://registry.npmjs.org/@atproto/crypto/-/crypto-0.4.1.tgz", 215 + "integrity": "sha512-7pQNHWYyx8jGhYdPbmcuPD9W73nd/5v3mfBlncO0sBzxnPbmA6aXAWOz+fNVZwHwBJPeb/Gzf/FT/uDx7/eYFg==", 216 216 "dependencies": { 217 217 "@noble/curves": "^1.1.0", 218 218 "@noble/hashes": "^1.3.1", ··· 220 220 } 221 221 }, 222 222 "node_modules/@atproto/did": { 223 - "version": "0.1.1-rc.0", 224 - "resolved": "https://registry.npmjs.org/@atproto/did/-/did-0.1.1-rc.0.tgz", 225 - "integrity": "sha512-rbO6kQv/bKsMGqAqr1M4o7cmJf893gYzabr1CmJ0rr/FNdXHfr0b9s2lRphA6zCS0wPdT4/mw6/LWiCrnBmi9w==", 223 + "version": "0.1.1", 224 + "resolved": "https://registry.npmjs.org/@atproto/did/-/did-0.1.1.tgz", 225 + "integrity": "sha512-FA+U8C8ACQLjG/TSgtaQyjvXxzOYzwK0+T6FJ1oj2BtKUixq4t8zpvo4zdIrnVimXeGQWo1/U1ghke58SmRpmQ==", 226 226 "dependencies": { 227 227 "zod": "^3.23.8" 228 228 } ··· 247 247 } 248 248 }, 249 249 "node_modules/@atproto/jwk-jose": { 250 - "version": "0.1.2-rc.0", 251 - "resolved": "https://registry.npmjs.org/@atproto/jwk-jose/-/jwk-jose-0.1.2-rc.0.tgz", 252 - "integrity": "sha512-guqGhgQjOx6OxxDWBENRa30G3CJ91Rqw+5NEwiv4GfhmmM/szS983kZIydmXpySpyyZhGAPZfkOfHai+HrLsXg==", 250 + "version": "0.1.2", 251 + "resolved": "https://registry.npmjs.org/@atproto/jwk-jose/-/jwk-jose-0.1.2.tgz", 252 + "integrity": "sha512-lDwc/6lLn2aZ/JpyyggyjLFsJPMntrVzryyGUx5aNpuTS8SIuc4Ky0REhxqfLopQXJJZCuRRjagHG3uP05/moQ==", 253 253 "dependencies": { 254 254 "@atproto/jwk": "0.1.1", 255 255 "jose": "^5.2.0" 256 256 } 257 257 }, 258 258 "node_modules/@atproto/jwk-webcrypto": { 259 - "version": "0.1.2-rc.0", 260 - "resolved": "https://registry.npmjs.org/@atproto/jwk-webcrypto/-/jwk-webcrypto-0.1.2-rc.0.tgz", 261 - "integrity": "sha512-TlLaJulKDWDhXQ8Wujte4l2RPe/Ym+jAnFR/+lwZbcGQHAUsatBMCKzvYVv3TtqXL3B5gIC9ry12+C7oQ5yE/Q==", 259 + "version": "0.1.2", 260 + "resolved": "https://registry.npmjs.org/@atproto/jwk-webcrypto/-/jwk-webcrypto-0.1.2.tgz", 261 + "integrity": "sha512-vTBUbUZXh0GI+6KJiPGukmI4BQEHFAij8fJJ4WnReF/hefAs3ISZtrWZHGBebz+q2EcExYlnhhlmxvDzV7veGw==", 262 262 "dependencies": { 263 263 "@atproto/jwk": "0.1.1", 264 - "@atproto/jwk-jose": "0.1.2-rc.0" 264 + "@atproto/jwk-jose": "0.1.2" 265 265 } 266 266 }, 267 267 "node_modules/@atproto/lex-cli": { ··· 283 283 "lex": "dist/index.js" 284 284 } 285 285 }, 286 - "node_modules/@atproto/lex-cli/node_modules/@atproto/lexicon": { 286 + "node_modules/@atproto/lexicon": { 287 287 "version": "0.4.1", 288 288 "resolved": "https://registry.npmjs.org/@atproto/lexicon/-/lexicon-0.4.1.tgz", 289 289 "integrity": "sha512-bzyr+/VHXLQWbumViX5L7h1NKQObfs8Z+XZJl43OUK8nYFUI4e/sW1IZKRNfw7Wvi5YVNK+J+yP3DWIBZhkCYA==", 290 - "dev": true, 291 - "dependencies": { 292 - "@atproto/common-web": "^0.3.0", 293 - "@atproto/syntax": "^0.3.0", 294 - "iso-datestring-validator": "^2.2.2", 295 - "multiformats": "^9.9.0", 296 - "zod": "^3.23.8" 297 - } 298 - }, 299 - "node_modules/@atproto/lexicon": { 300 - "version": "0.4.1-rc.0", 301 - "resolved": "https://registry.npmjs.org/@atproto/lexicon/-/lexicon-0.4.1-rc.0.tgz", 302 - "integrity": "sha512-CSYO8MWbxTXTLQMEJ1mTXD2pDxIXO2oCK/FVw9T/BeXLMcvwmeVgKAaytd1AGFkapX8IMAAtjBB3cnaltuHwbg==", 303 290 "dependencies": { 304 291 "@atproto/common-web": "^0.3.0", 305 292 "@atproto/syntax": "^0.3.0", ··· 309 296 } 310 297 }, 311 298 "node_modules/@atproto/oauth-client": { 312 - "version": "0.1.2-rc.2", 313 - "resolved": "https://registry.npmjs.org/@atproto/oauth-client/-/oauth-client-0.1.2-rc.2.tgz", 314 - "integrity": "sha512-FBYyEKEU1BFoW1ASFzsmw1oOpVPj/nkoR753OZItgNwl9i+Tr4kAA9TqeXGa6Ol3dh7K67oaxHw7DChdEqbtSg==", 299 + "version": "0.2.0", 300 + "resolved": "https://registry.npmjs.org/@atproto/oauth-client/-/oauth-client-0.2.0.tgz", 301 + "integrity": "sha512-J8NaQ45jIa7e/VXKUwtGnW91p8mM8yWvqhlBxNvVXQ2t5yo6rxYdIVam+2Ffy3SANxqe+sl5QFmCdaJQGX0yNQ==", 315 302 "dependencies": { 316 - "@atproto-labs/did-resolver": "0.1.2-rc.0", 303 + "@atproto-labs/did-resolver": "0.1.2", 317 304 "@atproto-labs/fetch": "0.1.0", 318 - "@atproto-labs/handle-resolver": "0.1.2-rc.0", 319 - "@atproto-labs/identity-resolver": "0.1.2-rc.0", 305 + "@atproto-labs/handle-resolver": "0.1.2", 306 + "@atproto-labs/identity-resolver": "0.1.2", 320 307 "@atproto-labs/simple-store": "0.1.1", 321 308 "@atproto-labs/simple-store-memory": "0.1.1", 322 - "@atproto/api": "0.13.0-rc.1", 323 - "@atproto/did": "0.1.1-rc.0", 309 + "@atproto/did": "0.1.1", 324 310 "@atproto/jwk": "0.1.1", 325 - "@atproto/oauth-types": "0.1.2-rc.0", 326 - "@atproto/xrpc": "0.6.0-rc.0", 311 + "@atproto/oauth-types": "0.1.4", 312 + "@atproto/xrpc": "0.6.1", 327 313 "multiformats": "^9.9.0", 328 314 "zod": "^3.23.8" 329 315 } 330 316 }, 331 317 "node_modules/@atproto/oauth-client-node": { 332 - "version": "0.0.2-rc.2", 333 - "resolved": "https://registry.npmjs.org/@atproto/oauth-client-node/-/oauth-client-node-0.0.2-rc.2.tgz", 334 - "integrity": "sha512-MxR2C84h6XjTB28RpXfctKLvB6Ot68tiOlsOSigeSTKnNJ5SRD2wISz2647P8dxOec81ugMu8wa5BKcZ5Ry7nw==", 318 + "version": "0.1.0", 319 + "resolved": "https://registry.npmjs.org/@atproto/oauth-client-node/-/oauth-client-node-0.1.0.tgz", 320 + "integrity": "sha512-F+bhXBaTAQuOViVjr9I+9iVVPTgnXh4EbquMazhoyAcH1T+v8oPkzV7tqVBvsbolgRDILJTAgRCtF140fC2wAg==", 335 321 "dependencies": { 336 - "@atproto-labs/did-resolver": "0.1.2-rc.0", 337 - "@atproto-labs/handle-resolver-node": "0.1.2-rc.0", 322 + "@atproto-labs/did-resolver": "0.1.2", 323 + "@atproto-labs/handle-resolver-node": "0.1.2", 338 324 "@atproto-labs/simple-store": "0.1.1", 339 - "@atproto/did": "0.1.1-rc.0", 325 + "@atproto/did": "0.1.1", 340 326 "@atproto/jwk": "0.1.1", 341 - "@atproto/jwk-jose": "0.1.2-rc.0", 342 - "@atproto/jwk-webcrypto": "0.1.2-rc.0", 343 - "@atproto/oauth-client": "0.1.2-rc.2", 344 - "@atproto/oauth-types": "0.1.2-rc.0" 327 + "@atproto/jwk-jose": "0.1.2", 328 + "@atproto/jwk-webcrypto": "0.1.2", 329 + "@atproto/oauth-client": "0.2.0", 330 + "@atproto/oauth-types": "0.1.4" 345 331 } 346 332 }, 347 333 "node_modules/@atproto/oauth-types": { 348 - "version": "0.1.2-rc.0", 349 - "resolved": "https://registry.npmjs.org/@atproto/oauth-types/-/oauth-types-0.1.2-rc.0.tgz", 350 - "integrity": "sha512-q/AxPSdLf2xTgC4K1cU35HVl6T4T0LJ/QJmvqXwjpbiNWEqooIQIP9sTp2CqqSLsWpe26z3fIoA3R+oTR1EJsA==", 334 + "version": "0.1.4", 335 + "resolved": "https://registry.npmjs.org/@atproto/oauth-types/-/oauth-types-0.1.4.tgz", 336 + "integrity": "sha512-B5lFXMvsx9PtO0wwCqwaoRVG8vKxvB742vO4Ze5OMJJsps6ebGskaYmkFHP9DnvDSLRzIHpJJ7jN6ri71V+xng==", 351 337 "dependencies": { 352 338 "@atproto/jwk": "0.1.1", 353 339 "zod": "^3.23.8" 354 340 } 355 341 }, 356 342 "node_modules/@atproto/repo": { 357 - "version": "0.4.2-rc.0", 358 - "resolved": "https://registry.npmjs.org/@atproto/repo/-/repo-0.4.2-rc.0.tgz", 359 - "integrity": "sha512-y8zXAR23r6qlsTmbzXaBEHYjvlgeNlAKj9eJ6V17JtT+4FVdW246alhsgSsglJ2Uv/e24RC1r90yNJNRxqDzXw==", 343 + "version": "0.4.3", 344 + "resolved": "https://registry.npmjs.org/@atproto/repo/-/repo-0.4.3.tgz", 345 + "integrity": "sha512-9w4TlyxExLfFL9BysvXq4vhIsYsnmGi0uelmxJjlRXBICgLpqjqQVqhS8OBqE25ZTYvgXUi7nNqpo2llCHhOvQ==", 360 346 "dependencies": { 361 347 "@atproto/common": "^0.4.1", 362 348 "@atproto/common-web": "^0.3.0", 363 - "@atproto/crypto": "^0.4.0", 364 - "@atproto/lexicon": "^0.4.1-rc.0", 349 + "@atproto/crypto": "^0.4.1", 350 + "@atproto/lexicon": "^0.4.1", 365 351 "@ipld/car": "^3.2.3", 366 352 "@ipld/dag-cbor": "^7.0.0", 367 353 "multiformats": "^9.9.0", ··· 375 361 "integrity": "sha512-Weq0ZBxffGHDXHl9U7BQc2BFJi/e23AL+k+i5+D9hUq/bzT4yjGsrCejkjq0xt82xXDjmhhvQSZ0LqxyZ5woxA==" 376 362 }, 377 363 "node_modules/@atproto/xrpc": { 378 - "version": "0.6.0-rc.0", 379 - "resolved": "https://registry.npmjs.org/@atproto/xrpc/-/xrpc-0.6.0-rc.0.tgz", 380 - "integrity": "sha512-TOmynXvbA57Y6KR050UeiDfdzQoAnmgB0zu0qrvhYiu7oeg64fYzvOa7stWxSIP1nhrGqgexxICR1CnOnCEHjg==", 364 + "version": "0.6.1", 365 + "resolved": "https://registry.npmjs.org/@atproto/xrpc/-/xrpc-0.6.1.tgz", 366 + "integrity": "sha512-Zy5ydXEdk6sY7FDUZcEVfCL1jvbL4tXu5CcdPqbEaW6LQtk9GLds/DK1bCX9kswTGaBC88EMuqQMfkxOhp2t4A==", 381 367 "dependencies": { 382 - "@atproto/lexicon": "^0.4.1-rc.0", 368 + "@atproto/lexicon": "^0.4.1", 383 369 "zod": "^3.23.8" 384 370 } 385 371 }, 386 372 "node_modules/@atproto/xrpc-server": { 387 - "version": "0.5.4-rc.0", 388 - "resolved": "https://registry.npmjs.org/@atproto/xrpc-server/-/xrpc-server-0.5.4-rc.0.tgz", 389 - "integrity": "sha512-Vrx1gEoZfJtYoZhSxkbWQsU2r0DuJO/BuvMQGw9Nd66owmF5nPDVvYVd0pJhIDoaSxImTTIEeDWlNNl3WCSBPA==", 373 + "version": "0.6.3", 374 + "resolved": "https://registry.npmjs.org/@atproto/xrpc-server/-/xrpc-server-0.6.3.tgz", 375 + "integrity": "sha512-0YXeBM9NjiIlR5eXWo8qzArRcBOKhwVimpH+ajKgZzlncPO53brVZ9+3BUnD5J1PG8mEQFRERi+Jt77QyF89qA==", 390 376 "dependencies": { 391 377 "@atproto/common": "^0.4.1", 392 - "@atproto/crypto": "^0.4.0", 393 - "@atproto/lexicon": "^0.4.1-rc.0", 394 - "@atproto/xrpc": "^0.6.0-rc.0", 378 + "@atproto/crypto": "^0.4.1", 379 + "@atproto/lexicon": "^0.4.1", 380 + "@atproto/xrpc": "^0.6.1", 395 381 "cbor-x": "^1.5.1", 396 382 "express": "^4.17.2", 397 383 "http-errors": "^2.0.0", ··· 1944 1930 "resolved": "https://registry.npmjs.org/gc-hook/-/gc-hook-0.3.1.tgz", 1945 1931 "integrity": "sha512-E5M+O/h2o7eZzGhzRZGex6hbB3k4NWqO0eA+OzLRLXxhdbYPajZnynPwAtphnh+cRHPwsj5Z80dqZlfI4eK55A==" 1946 1932 }, 1947 - "node_modules/get-caller-file": { 1948 - "version": "2.0.5", 1949 - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 1950 - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 1951 - "engines": { 1952 - "node": "6.* || 8.* || >= 10.*" 1953 - } 1954 - }, 1955 1933 "node_modules/get-intrinsic": { 1956 1934 "version": "1.2.4", 1957 1935 "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", ··· 2300 2278 } 2301 2279 }, 2302 2280 "node_modules/jose": { 2303 - "version": "5.6.3", 2304 - "resolved": "https://registry.npmjs.org/jose/-/jose-5.6.3.tgz", 2305 - "integrity": "sha512-1Jh//hEEwMhNYPDDLwXHa2ePWgWiFNNUadVmguAAw2IJ6sj9mNxV5tGXJNqlMkJAybF6Lgw1mISDxTePP/187g==", 2281 + "version": "5.8.0", 2282 + "resolved": "https://registry.npmjs.org/jose/-/jose-5.8.0.tgz", 2283 + "integrity": "sha512-E7CqYpL/t7MMnfGnK/eg416OsFCVUrU/Y3Vwe7QjKhu/BkS1Ms455+2xsqZQVN57/U2MHMBvEb5SrmAZWAIntA==", 2306 2284 "funding": { 2307 2285 "url": "https://github.com/sponsors/panva" 2308 2286 } ··· 2748 2726 "readable-stream": "^4.0.0", 2749 2727 "split2": "^4.0.0" 2750 2728 } 2751 - }, 2752 - "node_modules/pino-http": { 2753 - "version": "10.2.0", 2754 - "resolved": "https://registry.npmjs.org/pino-http/-/pino-http-10.2.0.tgz", 2755 - "integrity": "sha512-am03BxnV3Ckx68OkbH0iZs3indsrH78wncQ6w1w51KroIbvJZNImBKX2X1wjdY8lSyaJ0UrX/dnO2DY3cTeCRw==", 2756 - "dependencies": { 2757 - "get-caller-file": "^2.0.5", 2758 - "pino": "^9.0.0", 2759 - "pino-std-serializers": "^7.0.0", 2760 - "process-warning": "^3.0.0" 2761 - } 2762 - }, 2763 - "node_modules/pino-http/node_modules/process-warning": { 2764 - "version": "3.0.0", 2765 - "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-3.0.0.tgz", 2766 - "integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==" 2767 2729 }, 2768 2730 "node_modules/pino-pretty": { 2769 2731 "version": "11.2.2", ··· 4059 4021 "integrity": "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==" 4060 4022 }, 4061 4023 "node_modules/undici": { 4062 - "version": "6.19.7", 4063 - "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.7.tgz", 4064 - "integrity": "sha512-HR3W/bMGPSr90i8AAp2C4DM3wChFdJPLrWYpIS++LxS8K+W535qftjt+4MyjNYHeWabMj1nvtmLIi7l++iq91A==", 4024 + "version": "6.19.8", 4025 + "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.8.tgz", 4026 + "integrity": "sha512-U8uCCl2x9TK3WANvmBavymRzxbfFYG+tAu+fgx3zxQy3qdagQqBLwJVrdyO1TBfUXvfKveMKJZhpvUYoOjM+4g==", 4065 4027 "engines": { 4066 4028 "node": ">=18.17" 4067 4029 }
+5 -4
package.json
··· 14 14 "clean": "rimraf dist coverage" 15 15 }, 16 16 "dependencies": { 17 + "@atproto/api": "^0.13.4", 17 18 "@atproto/identity": "^0.4.0", 18 - "@atproto/lexicon": "0.4.1-rc.0", 19 - "@atproto/oauth-client-node": "0.0.2-rc.2", 20 - "@atproto/repo": "0.4.2-rc.0", 19 + "@atproto/lexicon": "^0.4.1", 20 + "@atproto/oauth-client-node": "^0.1.0", 21 + "@atproto/repo": "^0.4.3", 21 22 "@atproto/syntax": "^0.3.0", 22 - "@atproto/xrpc-server": "0.5.4-rc.0", 23 + "@atproto/xrpc-server": "^0.6.3", 23 24 "better-sqlite3": "^11.1.2", 24 25 "dotenv": "^16.4.5", 25 26 "envalid": "^8.0.0",
+1 -1
src/auth/client.ts
··· 14 14 : `http://localhost?redirect_uri=${encodeURIComponent(`${url}/oauth/callback`)}`, 15 15 client_uri: url, 16 16 redirect_uris: [`${url}/oauth/callback`], 17 - scope: 'profile offline_access', 17 + scope: 'atproto transition:generic', 18 18 grant_types: ['authorization_code', 'refresh_token'], 19 19 response_types: ['code'], 20 20 application_type: 'web',
+6 -2
src/auth/session.ts
··· 1 1 import assert from 'node:assert' 2 2 import type { IncomingMessage, ServerResponse } from 'node:http' 3 3 import { getIronSession } from 'iron-session' 4 + import { Agent } from '@atproto/api' 4 5 import { env } from '#/lib/env' 5 6 import { AppContext } from '#/index' 6 7 ··· 43 44 ) { 44 45 const session = await getSessionRaw(req, res) 45 46 if (!session.did) return null 46 - return await ctx.oauthClient.restore(session.did).catch(async (err) => { 47 + try { 48 + const oauthSession = await ctx.oauthClient.restore(session.did) 49 + return oauthSession ? new Agent(oauthSession) : null 50 + } catch (err) { 47 51 ctx.logger.warn({ err }, 'oauth restore failed') 48 52 await destroySession(req, res) 49 53 return null 50 - }) 54 + } 51 55 } 52 56 53 57 async function getSessionRaw(
+10 -8
src/routes.ts
··· 44 44 handler(async (req, res) => { 45 45 const params = new URLSearchParams(req.originalUrl.split('?')[1]) 46 46 try { 47 - const { agent } = await ctx.oauthClient.callback(params) 48 - await createSession(req, res, agent.accountDid) 47 + const { session } = await ctx.oauthClient.callback(params) 48 + await createSession(req, res, session.did) 49 49 } catch (err) { 50 50 ctx.logger.error({ err }, 'oauth callback failed') 51 51 return res.redirect('/?error') ··· 74 74 75 75 // Initiate the OAuth flow 76 76 try { 77 - const url = await ctx.oauthClient.authorize(handle) 77 + const url = await ctx.oauthClient.authorize(handle, { 78 + scope: 'atproto transition:generic' 79 + }) 78 80 return res.redirect(url.toString()) 79 81 } catch (err) { 80 82 ctx.logger.error({ err }, 'oauth authorize failed') ··· 119 121 ? await ctx.db 120 122 .selectFrom('status') 121 123 .selectAll() 122 - .where('authorDid', '=', agent.accountDid) 124 + .where('authorDid', '=', agent.assertDid) 123 125 .executeTakeFirst() 124 126 : undefined 125 127 ··· 135 137 136 138 // Fetch additional information about the logged-in user 137 139 const { data: profile } = await agent.getProfile({ 138 - actor: agent.accountDid, 140 + actor: agent.assertDid, 139 141 }) 140 - didHandleMap[profile.handle] = agent.accountDid 142 + didHandleMap[profile.handle] = agent.assertDid 141 143 142 144 // Serve the logged-in view 143 145 return res ··· 169 171 try { 170 172 // Write the status record to the user's repository 171 173 await agent.com.atproto.repo.putRecord({ 172 - repo: agent.accountDid, 174 + repo: agent.assertDid, 173 175 collection: 'com.example.status', 174 176 rkey: 'self', 175 177 record, ··· 188 190 await ctx.db 189 191 .insertInto('status') 190 192 .values({ 191 - authorDid: agent.accountDid, 193 + authorDid: agent.assertDid, 192 194 status: record.status, 193 195 updatedAt: record.updatedAt, 194 196 indexedAt: new Date().toISOString(),