+145
-309
package-lock.json
+145
-309
package-lock.json
···
9
9
"version": "0.0.1",
10
10
"dependencies": {
11
11
"@astrojs/node": "^9.5.0",
12
-
"@astrojs/tailwind": "^6.0.2",
13
12
"@atproto/api": "^0.17.4",
14
13
"@atproto/oauth-client-node": "^0.3.10",
15
14
"@tailwindcss/vite": "^4.1.16",
···
84
83
},
85
84
"engines": {
86
85
"node": "18.20.8 || ^20.3.0 || >=22.0.0"
87
-
}
88
-
},
89
-
"node_modules/@astrojs/tailwind": {
90
-
"version": "6.0.2",
91
-
"resolved": "https://registry.npmjs.org/@astrojs/tailwind/-/tailwind-6.0.2.tgz",
92
-
"integrity": "sha512-j3mhLNeugZq6A8dMNXVarUa8K6X9AW+QHU9u3lKNrPLMHhOQ0S7VeWhHwEeJFpEK1BTKEUY1U78VQv2gN6hNGg==",
93
-
"license": "MIT",
94
-
"dependencies": {
95
-
"autoprefixer": "^10.4.21",
96
-
"postcss": "^8.5.3",
97
-
"postcss-load-config": "^4.0.2"
98
-
},
99
-
"peerDependencies": {
100
-
"astro": "^3.0.0 || ^4.0.0 || ^5.0.0",
101
-
"tailwindcss": "^3.0.24"
102
86
}
103
87
},
104
88
"node_modules/@astrojs/telemetry": {
···
216
200
}
217
201
},
218
202
"node_modules/@atproto/api": {
219
-
"version": "0.17.4",
220
-
"resolved": "https://registry.npmjs.org/@atproto/api/-/api-0.17.4.tgz",
221
-
"integrity": "sha512-MRa0WdxyDiGF7fVKd/2ldvonsHQjsaLUOGw/PHrZ7J01lqlw/jaXLS25FNNYzjPGmGpnIyDCIg4Uucd/OblI9w==",
203
+
"version": "0.17.6",
204
+
"resolved": "https://registry.npmjs.org/@atproto/api/-/api-0.17.6.tgz",
205
+
"integrity": "sha512-0iYCD8+LOsHjHjwJcqGPfJN/h4b+IpU3GjOV0TSLk0XdCaxpHBKNu3wgCJVst4DhVjXcgsr2qQoRZ3Jja2LupA==",
222
206
"license": "MIT",
223
207
"dependencies": {
224
208
"@atproto/common-web": "^0.4.3",
···
1642
1626
]
1643
1627
},
1644
1628
"node_modules/@shikijs/core": {
1645
-
"version": "3.13.0",
1646
-
"resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.13.0.tgz",
1647
-
"integrity": "sha512-3P8rGsg2Eh2qIHekwuQjzWhKI4jV97PhvYjYUzGqjvJfqdQPz+nMlfWahU24GZAyW1FxFI1sYjyhfh5CoLmIUA==",
1629
+
"version": "3.14.0",
1630
+
"resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.14.0.tgz",
1631
+
"integrity": "sha512-qRSeuP5vlYHCNUIrpEBQFO7vSkR7jn7Kv+5X3FO/zBKVDGQbcnlScD3XhkrHi/R8Ltz0kEjvFR9Szp/XMRbFMw==",
1648
1632
"license": "MIT",
1649
1633
"dependencies": {
1650
-
"@shikijs/types": "3.13.0",
1634
+
"@shikijs/types": "3.14.0",
1651
1635
"@shikijs/vscode-textmate": "^10.0.2",
1652
1636
"@types/hast": "^3.0.4",
1653
1637
"hast-util-to-html": "^9.0.5"
1654
1638
}
1655
1639
},
1656
1640
"node_modules/@shikijs/engine-javascript": {
1657
-
"version": "3.13.0",
1658
-
"resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.13.0.tgz",
1659
-
"integrity": "sha512-Ty7xv32XCp8u0eQt8rItpMs6rU9Ki6LJ1dQOW3V/56PKDcpvfHPnYFbsx5FFUP2Yim34m/UkazidamMNVR4vKg==",
1641
+
"version": "3.14.0",
1642
+
"resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.14.0.tgz",
1643
+
"integrity": "sha512-3v1kAXI2TsWQuwv86cREH/+FK9Pjw3dorVEykzQDhwrZj0lwsHYlfyARaKmn6vr5Gasf8aeVpb8JkzeWspxOLQ==",
1660
1644
"license": "MIT",
1661
1645
"dependencies": {
1662
-
"@shikijs/types": "3.13.0",
1646
+
"@shikijs/types": "3.14.0",
1663
1647
"@shikijs/vscode-textmate": "^10.0.2",
1664
1648
"oniguruma-to-es": "^4.3.3"
1665
1649
}
1666
1650
},
1667
1651
"node_modules/@shikijs/engine-oniguruma": {
1668
-
"version": "3.13.0",
1669
-
"resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.13.0.tgz",
1670
-
"integrity": "sha512-O42rBGr4UDSlhT2ZFMxqM7QzIU+IcpoTMzb3W7AlziI1ZF7R8eS2M0yt5Ry35nnnTX/LTLXFPUjRFCIW+Operg==",
1652
+
"version": "3.14.0",
1653
+
"resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.14.0.tgz",
1654
+
"integrity": "sha512-TNcYTYMbJyy+ZjzWtt0bG5y4YyMIWC2nyePz+CFMWqm+HnZZyy9SWMgo8Z6KBJVIZnx8XUXS8U2afO6Y0g1Oug==",
1671
1655
"license": "MIT",
1672
1656
"dependencies": {
1673
-
"@shikijs/types": "3.13.0",
1657
+
"@shikijs/types": "3.14.0",
1674
1658
"@shikijs/vscode-textmate": "^10.0.2"
1675
1659
}
1676
1660
},
1677
1661
"node_modules/@shikijs/langs": {
1678
-
"version": "3.13.0",
1679
-
"resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.13.0.tgz",
1680
-
"integrity": "sha512-672c3WAETDYHwrRP0yLy3W1QYB89Hbpj+pO4KhxK6FzIrDI2FoEXNiNCut6BQmEApYLfuYfpgOZaqbY+E9b8wQ==",
1662
+
"version": "3.14.0",
1663
+
"resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.14.0.tgz",
1664
+
"integrity": "sha512-DIB2EQY7yPX1/ZH7lMcwrK5pl+ZkP/xoSpUzg9YC8R+evRCCiSQ7yyrvEyBsMnfZq4eBzLzBlugMyTAf13+pzg==",
1681
1665
"license": "MIT",
1682
1666
"dependencies": {
1683
-
"@shikijs/types": "3.13.0"
1667
+
"@shikijs/types": "3.14.0"
1684
1668
}
1685
1669
},
1686
1670
"node_modules/@shikijs/themes": {
1687
-
"version": "3.13.0",
1688
-
"resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.13.0.tgz",
1689
-
"integrity": "sha512-Vxw1Nm1/Od8jyA7QuAenaV78BG2nSr3/gCGdBkLpfLscddCkzkL36Q5b67SrLLfvAJTOUzW39x4FHVCFriPVgg==",
1671
+
"version": "3.14.0",
1672
+
"resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.14.0.tgz",
1673
+
"integrity": "sha512-fAo/OnfWckNmv4uBoUu6dSlkcBc+SA1xzj5oUSaz5z3KqHtEbUypg/9xxgJARtM6+7RVm0Q6Xnty41xA1ma1IA==",
1690
1674
"license": "MIT",
1691
1675
"dependencies": {
1692
-
"@shikijs/types": "3.13.0"
1676
+
"@shikijs/types": "3.14.0"
1693
1677
}
1694
1678
},
1695
1679
"node_modules/@shikijs/types": {
1696
-
"version": "3.13.0",
1697
-
"resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.13.0.tgz",
1698
-
"integrity": "sha512-oM9P+NCFri/mmQ8LoFGVfVyemm5Hi27330zuOBp0annwJdKH1kOLndw3zCtAVDehPLg9fKqoEx3Ht/wNZxolfw==",
1680
+
"version": "3.14.0",
1681
+
"resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.14.0.tgz",
1682
+
"integrity": "sha512-bQGgC6vrY8U/9ObG1Z/vTro+uclbjjD/uG58RvfxKZVD5p9Yc1ka3tVyEFy7BNJLzxuWyHH5NWynP9zZZS59eQ==",
1699
1683
"license": "MIT",
1700
1684
"dependencies": {
1701
1685
"@shikijs/vscode-textmate": "^10.0.2",
···
2032
2016
}
2033
2017
},
2034
2018
"node_modules/@types/node": {
2035
-
"version": "24.9.1",
2036
-
"resolved": "https://registry.npmjs.org/@types/node/-/node-24.9.1.tgz",
2037
-
"integrity": "sha512-QoiaXANRkSXK6p0Duvt56W208du4P9Uye9hWLWgGMDTEoKPhuenzNcC4vGUmrNkiOKTlIrBoyNQYNpSwfEZXSg==",
2019
+
"version": "24.9.2",
2020
+
"resolved": "https://registry.npmjs.org/@types/node/-/node-24.9.2.tgz",
2021
+
"integrity": "sha512-uWN8YqxXxqFMX2RqGOrumsKeti4LlmIMIyV0lgut4jx7KQBcBiW6vkDtIBvHnHIquwNfJhk8v2OtmO8zXWHfPA==",
2038
2022
"license": "MIT",
2039
2023
"dependencies": {
2040
2024
"undici-types": "~7.16.0"
···
2189
2173
}
2190
2174
},
2191
2175
"node_modules/astro": {
2192
-
"version": "5.15.1",
2193
-
"resolved": "https://registry.npmjs.org/astro/-/astro-5.15.1.tgz",
2194
-
"integrity": "sha512-VM679M1qxOjGo6q3vKYDNDddkALGgMopG93IwbEXd3Buc2xVLuuPj4HNziNugSbPQx5S6UReMp5uzw10EJN81A==",
2176
+
"version": "5.15.2",
2177
+
"resolved": "https://registry.npmjs.org/astro/-/astro-5.15.2.tgz",
2178
+
"integrity": "sha512-xQQ+PiYJ7WpUJrHJpAb52TQAUCFmSR8lAtQr3tFfSIZoTQiEMFx3HITJ01t3eDUpHjja8J6JcYqgAhr9xygKQg==",
2195
2179
"license": "MIT",
2196
2180
"dependencies": {
2197
2181
"@astrojs/compiler": "^2.12.2",
···
2248
2232
"unist-util-visit": "^5.0.0",
2249
2233
"unstorage": "^1.17.0",
2250
2234
"vfile": "^6.0.3",
2251
-
"vite": "^6.3.6",
2235
+
"vite": "^6.4.1",
2252
2236
"vitefu": "^1.1.1",
2253
2237
"xxhash-wasm": "^1.1.0",
2254
2238
"yargs-parser": "^21.1.1",
···
2273
2257
"sharp": "^0.34.0"
2274
2258
}
2275
2259
},
2276
-
"node_modules/autoprefixer": {
2277
-
"version": "10.4.21",
2278
-
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz",
2279
-
"integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==",
2280
-
"funding": [
2281
-
{
2282
-
"type": "opencollective",
2283
-
"url": "https://opencollective.com/postcss/"
2284
-
},
2285
-
{
2286
-
"type": "tidelift",
2287
-
"url": "https://tidelift.com/funding/github/npm/autoprefixer"
2288
-
},
2289
-
{
2290
-
"type": "github",
2291
-
"url": "https://github.com/sponsors/ai"
2292
-
}
2293
-
],
2260
+
"node_modules/astro/node_modules/vite": {
2261
+
"version": "6.4.1",
2262
+
"resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz",
2263
+
"integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==",
2294
2264
"license": "MIT",
2295
2265
"dependencies": {
2296
-
"browserslist": "^4.24.4",
2297
-
"caniuse-lite": "^1.0.30001702",
2298
-
"fraction.js": "^4.3.7",
2299
-
"normalize-range": "^0.1.2",
2300
-
"picocolors": "^1.1.1",
2301
-
"postcss-value-parser": "^4.2.0"
2266
+
"esbuild": "^0.25.0",
2267
+
"fdir": "^6.4.4",
2268
+
"picomatch": "^4.0.2",
2269
+
"postcss": "^8.5.3",
2270
+
"rollup": "^4.34.9",
2271
+
"tinyglobby": "^0.2.13"
2302
2272
},
2303
2273
"bin": {
2304
-
"autoprefixer": "bin/autoprefixer"
2274
+
"vite": "bin/vite.js"
2305
2275
},
2306
2276
"engines": {
2307
-
"node": "^10 || ^12 || >=14"
2277
+
"node": "^18.0.0 || ^20.0.0 || >=22.0.0"
2278
+
},
2279
+
"funding": {
2280
+
"url": "https://github.com/vitejs/vite?sponsor=1"
2281
+
},
2282
+
"optionalDependencies": {
2283
+
"fsevents": "~2.3.3"
2308
2284
},
2309
2285
"peerDependencies": {
2310
-
"postcss": "^8.1.0"
2286
+
"@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
2287
+
"jiti": ">=1.21.0",
2288
+
"less": "*",
2289
+
"lightningcss": "^1.21.0",
2290
+
"sass": "*",
2291
+
"sass-embedded": "*",
2292
+
"stylus": "*",
2293
+
"sugarss": "*",
2294
+
"terser": "^5.16.0",
2295
+
"tsx": "^4.8.1",
2296
+
"yaml": "^2.4.2"
2297
+
},
2298
+
"peerDependenciesMeta": {
2299
+
"@types/node": {
2300
+
"optional": true
2301
+
},
2302
+
"jiti": {
2303
+
"optional": true
2304
+
},
2305
+
"less": {
2306
+
"optional": true
2307
+
},
2308
+
"lightningcss": {
2309
+
"optional": true
2310
+
},
2311
+
"sass": {
2312
+
"optional": true
2313
+
},
2314
+
"sass-embedded": {
2315
+
"optional": true
2316
+
},
2317
+
"stylus": {
2318
+
"optional": true
2319
+
},
2320
+
"sugarss": {
2321
+
"optional": true
2322
+
},
2323
+
"terser": {
2324
+
"optional": true
2325
+
},
2326
+
"tsx": {
2327
+
"optional": true
2328
+
},
2329
+
"yaml": {
2330
+
"optional": true
2331
+
}
2311
2332
}
2312
2333
},
2313
2334
"node_modules/await-lock": {
···
2361
2382
],
2362
2383
"license": "MIT"
2363
2384
},
2364
-
"node_modules/baseline-browser-mapping": {
2365
-
"version": "2.8.20",
2366
-
"resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.20.tgz",
2367
-
"integrity": "sha512-JMWsdF+O8Orq3EMukbUN1QfbLK9mX2CkUmQBcW2T0s8OmdAUL5LLM/6wFwSrqXzlXB13yhyK9gTKS1rIizOduQ==",
2368
-
"license": "Apache-2.0",
2369
-
"bin": {
2370
-
"baseline-browser-mapping": "dist/cli.js"
2371
-
}
2372
-
},
2373
2385
"node_modules/boxen": {
2374
2386
"version": "8.0.1",
2375
2387
"resolved": "https://registry.npmjs.org/boxen/-/boxen-8.0.1.tgz",
···
2401
2413
"base64-js": "^1.1.2"
2402
2414
}
2403
2415
},
2404
-
"node_modules/browserslist": {
2405
-
"version": "4.27.0",
2406
-
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.27.0.tgz",
2407
-
"integrity": "sha512-AXVQwdhot1eqLihwasPElhX2tAZiBjWdJ9i/Zcj2S6QYIjkx62OKSfnobkriB81C3l4w0rVy3Nt4jaTBltYEpw==",
2408
-
"funding": [
2409
-
{
2410
-
"type": "opencollective",
2411
-
"url": "https://opencollective.com/browserslist"
2412
-
},
2413
-
{
2414
-
"type": "tidelift",
2415
-
"url": "https://tidelift.com/funding/github/npm/browserslist"
2416
-
},
2417
-
{
2418
-
"type": "github",
2419
-
"url": "https://github.com/sponsors/ai"
2420
-
}
2421
-
],
2422
-
"license": "MIT",
2423
-
"dependencies": {
2424
-
"baseline-browser-mapping": "^2.8.19",
2425
-
"caniuse-lite": "^1.0.30001751",
2426
-
"electron-to-chromium": "^1.5.238",
2427
-
"node-releases": "^2.0.26",
2428
-
"update-browserslist-db": "^1.1.4"
2429
-
},
2430
-
"bin": {
2431
-
"browserslist": "cli.js"
2432
-
},
2433
-
"engines": {
2434
-
"node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
2435
-
}
2436
-
},
2437
2416
"node_modules/camelcase": {
2438
2417
"version": "8.0.0",
2439
2418
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-8.0.0.tgz",
···
2446
2425
"url": "https://github.com/sponsors/sindresorhus"
2447
2426
}
2448
2427
},
2449
-
"node_modules/caniuse-lite": {
2450
-
"version": "1.0.30001751",
2451
-
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001751.tgz",
2452
-
"integrity": "sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw==",
2453
-
"funding": [
2454
-
{
2455
-
"type": "opencollective",
2456
-
"url": "https://opencollective.com/browserslist"
2457
-
},
2458
-
{
2459
-
"type": "tidelift",
2460
-
"url": "https://tidelift.com/funding/github/npm/caniuse-lite"
2461
-
},
2462
-
{
2463
-
"type": "github",
2464
-
"url": "https://github.com/sponsors/ai"
2465
-
}
2466
-
],
2467
-
"license": "CC-BY-4.0"
2468
-
},
2469
2428
"node_modules/ccount": {
2470
2429
"version": "2.0.1",
2471
2430
"resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz",
···
2655
2614
}
2656
2615
},
2657
2616
"node_modules/daisyui": {
2658
-
"version": "5.3.9",
2659
-
"resolved": "https://registry.npmjs.org/daisyui/-/daisyui-5.3.9.tgz",
2660
-
"integrity": "sha512-741x1pGGSGHcrBYtdE7iKbqW1OoiijYdAZ8oJPZR9MhSKLcMBlHjKfN3YlM2/K7t5jd7O0sg4SqkVNPylalRFw==",
2617
+
"version": "5.3.10",
2618
+
"resolved": "https://registry.npmjs.org/daisyui/-/daisyui-5.3.10.tgz",
2619
+
"integrity": "sha512-vmjyPmm0hvFhA95KB6uiGmWakziB2pBv6CUcs5Ka/3iMBMn9S+C3SZYx9G9l2JrgTZ1EFn61F/HrPcwaUm2kLQ==",
2661
2620
"license": "MIT",
2662
2621
"funding": {
2663
2622
"url": "https://github.com/saadeghi/daisyui?sponsor=1"
···
2811
2770
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
2812
2771
"license": "MIT"
2813
2772
},
2814
-
"node_modules/electron-to-chromium": {
2815
-
"version": "1.5.240",
2816
-
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.240.tgz",
2817
-
"integrity": "sha512-OBwbZjWgrCOH+g6uJsA2/7Twpas2OlepS9uvByJjR2datRDuKGYeD+nP8lBBks2qnB7bGJNHDUx7c/YLaT3QMQ==",
2818
-
"license": "ISC"
2819
-
},
2820
2773
"node_modules/emoji-regex": {
2821
2774
"version": "10.6.0",
2822
2775
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz",
···
2902
2855
"@esbuild/win32-arm64": "0.25.11",
2903
2856
"@esbuild/win32-ia32": "0.25.11",
2904
2857
"@esbuild/win32-x64": "0.25.11"
2905
-
}
2906
-
},
2907
-
"node_modules/escalade": {
2908
-
"version": "3.2.0",
2909
-
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
2910
-
"integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
2911
-
"license": "MIT",
2912
-
"engines": {
2913
-
"node": ">=6"
2914
2858
}
2915
2859
},
2916
2860
"node_modules/escape-html": {
···
3020
2964
"unicode-trie": "^2.0.0"
3021
2965
}
3022
2966
},
3023
-
"node_modules/fraction.js": {
3024
-
"version": "4.3.7",
3025
-
"resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",
3026
-
"integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==",
3027
-
"license": "MIT",
3028
-
"engines": {
3029
-
"node": "*"
3030
-
},
3031
-
"funding": {
3032
-
"type": "patreon",
3033
-
"url": "https://github.com/sponsors/rawify"
3034
-
}
3035
-
},
3036
2967
"node_modules/fresh": {
3037
2968
"version": "2.0.0",
3038
2969
"resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz",
···
3732
3663
"funding": {
3733
3664
"type": "opencollective",
3734
3665
"url": "https://opencollective.com/parcel"
3735
-
}
3736
-
},
3737
-
"node_modules/lilconfig": {
3738
-
"version": "3.1.3",
3739
-
"resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz",
3740
-
"integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==",
3741
-
"license": "MIT",
3742
-
"engines": {
3743
-
"node": ">=14"
3744
-
},
3745
-
"funding": {
3746
-
"url": "https://github.com/sponsors/antonk52"
3747
3666
}
3748
3667
},
3749
3668
"node_modules/longest-streak": {
···
4680
4599
"integrity": "sha512-jN8dK25fsfnMrVsEhluUTPkBFY+6ybu7jSB1n+ri/vOGjJxU8J9CZhpSGkHXSkFjtUhbmoncG/YG9ta5Ludqog==",
4681
4600
"license": "MIT"
4682
4601
},
4683
-
"node_modules/node-releases": {
4684
-
"version": "2.0.26",
4685
-
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.26.tgz",
4686
-
"integrity": "sha512-S2M9YimhSjBSvYnlr5/+umAnPHE++ODwt5e2Ij6FoX45HA/s4vHdkDx1eax2pAPeAOqu4s9b7ppahsyEFdVqQA==",
4687
-
"license": "MIT"
4688
-
},
4689
4602
"node_modules/normalize-path": {
4690
4603
"version": "3.0.0",
4691
4604
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
4692
4605
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
4693
-
"license": "MIT",
4694
-
"engines": {
4695
-
"node": ">=0.10.0"
4696
-
}
4697
-
},
4698
-
"node_modules/normalize-range": {
4699
-
"version": "0.1.2",
4700
-
"resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
4701
-
"integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
4702
4606
"license": "MIT",
4703
4607
"engines": {
4704
4608
"node": ">=0.10.0"
4705
4609
}
4706
4610
},
4707
4611
"node_modules/ofetch": {
4708
-
"version": "1.4.1",
4709
-
"resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.4.1.tgz",
4710
-
"integrity": "sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==",
4612
+
"version": "1.5.0",
4613
+
"resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.5.0.tgz",
4614
+
"integrity": "sha512-A7llJ7eZyziA5xq9//3ZurA8OhFqtS99K5/V1sLBJ5j137CM/OAjlbA/TEJXBuOWwOfLqih+oH5U3ran4za1FQ==",
4711
4615
"license": "MIT",
4712
4616
"dependencies": {
4713
-
"destr": "^2.0.3",
4714
-
"node-fetch-native": "^1.6.4",
4715
-
"ufo": "^1.5.4"
4617
+
"destr": "^2.0.5",
4618
+
"node-fetch-native": "^1.6.7",
4619
+
"ufo": "^1.6.1"
4716
4620
}
4717
4621
},
4718
4622
"node_modules/ohash": {
···
4881
4785
"node": "^10 || ^12 || >=14"
4882
4786
}
4883
4787
},
4884
-
"node_modules/postcss-load-config": {
4885
-
"version": "4.0.2",
4886
-
"resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz",
4887
-
"integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==",
4888
-
"funding": [
4889
-
{
4890
-
"type": "opencollective",
4891
-
"url": "https://opencollective.com/postcss/"
4892
-
},
4893
-
{
4894
-
"type": "github",
4895
-
"url": "https://github.com/sponsors/ai"
4896
-
}
4897
-
],
4898
-
"license": "MIT",
4899
-
"dependencies": {
4900
-
"lilconfig": "^3.0.0",
4901
-
"yaml": "^2.3.4"
4902
-
},
4903
-
"engines": {
4904
-
"node": ">= 14"
4905
-
},
4906
-
"peerDependencies": {
4907
-
"postcss": ">=8.0.9",
4908
-
"ts-node": ">=9.0.0"
4909
-
},
4910
-
"peerDependenciesMeta": {
4911
-
"postcss": {
4912
-
"optional": true
4913
-
},
4914
-
"ts-node": {
4915
-
"optional": true
4916
-
}
4917
-
}
4918
-
},
4919
-
"node_modules/postcss-value-parser": {
4920
-
"version": "4.2.0",
4921
-
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
4922
-
"integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
4923
-
"license": "MIT"
4924
-
},
4925
4788
"node_modules/prismjs": {
4926
4789
"version": "1.30.0",
4927
4790
"resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz",
···
5346
5209
}
5347
5210
},
5348
5211
"node_modules/shiki": {
5349
-
"version": "3.13.0",
5350
-
"resolved": "https://registry.npmjs.org/shiki/-/shiki-3.13.0.tgz",
5351
-
"integrity": "sha512-aZW4l8Og16CokuCLf8CF8kq+KK2yOygapU5m3+hoGw0Mdosc6fPitjM+ujYarppj5ZIKGyPDPP1vqmQhr+5/0g==",
5212
+
"version": "3.14.0",
5213
+
"resolved": "https://registry.npmjs.org/shiki/-/shiki-3.14.0.tgz",
5214
+
"integrity": "sha512-J0yvpLI7LSig3Z3acIuDLouV5UCKQqu8qOArwMx+/yPVC3WRMgrP67beaG8F+j4xfEWE0eVC4GeBCIXeOPra1g==",
5352
5215
"license": "MIT",
5353
5216
"dependencies": {
5354
-
"@shikijs/core": "3.13.0",
5355
-
"@shikijs/engine-javascript": "3.13.0",
5356
-
"@shikijs/engine-oniguruma": "3.13.0",
5357
-
"@shikijs/langs": "3.13.0",
5358
-
"@shikijs/themes": "3.13.0",
5359
-
"@shikijs/types": "3.13.0",
5217
+
"@shikijs/core": "3.14.0",
5218
+
"@shikijs/engine-javascript": "3.14.0",
5219
+
"@shikijs/engine-oniguruma": "3.14.0",
5220
+
"@shikijs/langs": "3.14.0",
5221
+
"@shikijs/themes": "3.14.0",
5222
+
"@shikijs/types": "3.14.0",
5360
5223
"@shikijs/vscode-textmate": "^10.0.2",
5361
5224
"@types/hast": "^3.0.4"
5362
5225
}
···
5576
5439
"url": "https://github.com/sponsors/sindresorhus"
5577
5440
}
5578
5441
},
5442
+
"node_modules/typescript": {
5443
+
"version": "5.9.3",
5444
+
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
5445
+
"integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
5446
+
"license": "Apache-2.0",
5447
+
"peer": true,
5448
+
"bin": {
5449
+
"tsc": "bin/tsc",
5450
+
"tsserver": "bin/tsserver"
5451
+
},
5452
+
"engines": {
5453
+
"node": ">=14.17"
5454
+
}
5455
+
},
5579
5456
"node_modules/ufo": {
5580
5457
"version": "1.6.1",
5581
5458
"resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz",
···
5887
5764
}
5888
5765
}
5889
5766
},
5890
-
"node_modules/update-browserslist-db": {
5891
-
"version": "1.1.4",
5892
-
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz",
5893
-
"integrity": "sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==",
5894
-
"funding": [
5895
-
{
5896
-
"type": "opencollective",
5897
-
"url": "https://opencollective.com/browserslist"
5898
-
},
5899
-
{
5900
-
"type": "tidelift",
5901
-
"url": "https://tidelift.com/funding/github/npm/browserslist"
5902
-
},
5903
-
{
5904
-
"type": "github",
5905
-
"url": "https://github.com/sponsors/ai"
5906
-
}
5907
-
],
5908
-
"license": "MIT",
5909
-
"dependencies": {
5910
-
"escalade": "^3.2.0",
5911
-
"picocolors": "^1.1.1"
5912
-
},
5913
-
"bin": {
5914
-
"update-browserslist-db": "cli.js"
5915
-
},
5916
-
"peerDependencies": {
5917
-
"browserslist": ">= 4.21.0"
5918
-
}
5919
-
},
5920
5767
"node_modules/vfile": {
5921
5768
"version": "6.0.3",
5922
5769
"resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz",
···
5960
5807
}
5961
5808
},
5962
5809
"node_modules/vite": {
5963
-
"version": "6.4.1",
5964
-
"resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz",
5965
-
"integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==",
5810
+
"version": "7.1.12",
5811
+
"resolved": "https://registry.npmjs.org/vite/-/vite-7.1.12.tgz",
5812
+
"integrity": "sha512-ZWyE8YXEXqJrrSLvYgrRP7p62OziLW7xI5HYGWFzOvupfAlrLvURSzv/FyGyy0eidogEM3ujU+kUG1zuHgb6Ug==",
5966
5813
"license": "MIT",
5814
+
"peer": true,
5967
5815
"dependencies": {
5968
5816
"esbuild": "^0.25.0",
5969
-
"fdir": "^6.4.4",
5970
-
"picomatch": "^4.0.2",
5971
-
"postcss": "^8.5.3",
5972
-
"rollup": "^4.34.9",
5973
-
"tinyglobby": "^0.2.13"
5817
+
"fdir": "^6.5.0",
5818
+
"picomatch": "^4.0.3",
5819
+
"postcss": "^8.5.6",
5820
+
"rollup": "^4.43.0",
5821
+
"tinyglobby": "^0.2.15"
5974
5822
},
5975
5823
"bin": {
5976
5824
"vite": "bin/vite.js"
5977
5825
},
5978
5826
"engines": {
5979
-
"node": "^18.0.0 || ^20.0.0 || >=22.0.0"
5827
+
"node": "^20.19.0 || >=22.12.0"
5980
5828
},
5981
5829
"funding": {
5982
5830
"url": "https://github.com/vitejs/vite?sponsor=1"
···
5985
5833
"fsevents": "~2.3.3"
5986
5834
},
5987
5835
"peerDependencies": {
5988
-
"@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
5836
+
"@types/node": "^20.19.0 || >=22.12.0",
5989
5837
"jiti": ">=1.21.0",
5990
-
"less": "*",
5838
+
"less": "^4.0.0",
5991
5839
"lightningcss": "^1.21.0",
5992
-
"sass": "*",
5993
-
"sass-embedded": "*",
5994
-
"stylus": "*",
5995
-
"sugarss": "*",
5840
+
"sass": "^1.70.0",
5841
+
"sass-embedded": "^1.70.0",
5842
+
"stylus": ">=0.54.8",
5843
+
"sugarss": "^5.0.0",
5996
5844
"terser": "^5.16.0",
5997
5845
"tsx": "^4.8.1",
5998
5846
"yaml": "^2.4.2"
···
6108
5956
"resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-1.1.0.tgz",
6109
5957
"integrity": "sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==",
6110
5958
"license": "MIT"
6111
-
},
6112
-
"node_modules/yaml": {
6113
-
"version": "2.8.1",
6114
-
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz",
6115
-
"integrity": "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==",
6116
-
"license": "ISC",
6117
-
"bin": {
6118
-
"yaml": "bin.mjs"
6119
-
},
6120
-
"engines": {
6121
-
"node": ">= 14.6"
6122
-
}
6123
5959
},
6124
5960
"node_modules/yargs-parser": {
6125
5961
"version": "21.1.1",
-1
package.json
-1
package.json
+35
-28
src/pages/index.astro
+35
-28
src/pages/index.astro
···
1
1
---
2
-
import "../styles.css";
3
-
import { getSession } from "../lib/session";
4
-
import { getOAuthClient } from "../lib/context";
5
-
import { Agent } from "@atproto/api";
2
+
import '../styles.css'
3
+
import { getSession } from '../lib/session'
4
+
import { getOAuthClient } from '../lib/context'
5
+
import { Agent } from '@atproto/api'
6
6
7
-
const session = getSession(Astro.cookies);
8
-
const oauthClient = getOAuthClient(Astro.cookies);
7
+
const session = getSession(Astro.cookies)
8
+
const oauthClient = getOAuthClient(Astro.cookies)
9
9
10
-
let agent: Agent | null = null;
11
-
let profile: any = null;
10
+
let agent: Agent | null = null
11
+
let profile: any = null
12
12
13
13
if (session.did) {
14
14
try {
15
-
const oauthSession = await oauthClient.restore(session.did);
15
+
const oauthSession = await oauthClient.restore(session.did)
16
16
if (oauthSession) {
17
-
agent = new Agent(oauthSession);
17
+
agent = new Agent(oauthSession)
18
18
19
19
try {
20
-
const profileResponse = await agent.com.atproto.repo.getRecord({
21
-
repo: agent.assertDid,
22
-
collection: "app.bsky.actor.profile",
23
-
rkey: "self",
24
-
});
25
-
profile = profileResponse.data;
20
+
const profileResponse = await agent.app.bsky.actor.getProfile({
21
+
actor: agent.assertDid,
22
+
})
23
+
profile = profileResponse.data
26
24
} catch (err) {
27
-
console.warn("Failed to fetch profile:", err);
25
+
console.warn('Failed to fetch profile:', err)
28
26
}
29
27
}
30
28
} catch (err) {
31
-
console.warn("OAuth restore failed:", err);
32
-
session.destroy();
29
+
console.warn('OAuth restore failed:', err)
30
+
session.destroy()
33
31
}
34
32
}
35
33
36
-
const displayName = profile?.value?.displayName || agent?.assertDid || "User";
37
-
const handle = agent?.assertDid || "";
34
+
const displayName = profile?.displayName || agent?.assertDid || 'User'
35
+
const handle = profile?.handle || agent?.assertDid || ''
36
+
const avatar = profile?.avatar
37
+
const description = profile?.description
38
38
---
39
39
40
40
<html lang="en" data-theme="dracula">
···
47
47
</head>
48
48
<body>
49
49
<div class="min-h-screen flex items-center justify-center">
50
-
<div class="card w-96 bg-base-100 shadow-xl">
50
+
<div class="card w-96 bg-base-200 shadow-xl p-8">
51
51
<div class="card-body">
52
52
{
53
53
agent ? (
54
54
<>
55
55
<h2 class="card-title justify-center mb-4">Welcome!</h2>
56
56
<div class="space-y-4">
57
-
<div class="text-center">
57
+
<div class="flex flex-col items-center text-center">
58
+
{avatar && (
59
+
<div class="avatar mb-4">
60
+
<div class="w-24 rounded-full">
61
+
<img src={avatar} alt={displayName} />
62
+
</div>
63
+
</div>
64
+
)}
58
65
<p class="text-lg font-semibold">{displayName}</p>
59
66
<p class="text-sm opacity-70">{handle}</p>
67
+
{description && (
68
+
<p class="text-sm mt-2 opacity-80">{description}</p>
69
+
)}
60
70
</div>
61
71
<form method="POST" action="/api/logout" class="w-full">
62
72
<button type="submit" class="btn btn-error w-full">
···
73
83
<input
74
84
type="text"
75
85
placeholder="Enter your handle (e.g. alice.bsky.social)"
76
-
class="input input-bordered join-item"
86
+
class="input input-bordered join-item w-full"
77
87
name="handle"
78
88
required
79
89
/>
80
-
<button
81
-
type="submit"
82
-
class="btn btn-primary btn-wide join-item"
83
-
>
90
+
<button type="submit" class="btn btn-primary join-item w-full">
84
91
Login
85
92
</button>
86
93
</div>
+2
-3
src/styles.css
+2
-3
src/styles.css