experimenting with making decentralized fanfic archives on atproto. github mirror: https://github.com/haetae-bit/fanfic-atproto

cleanup icons and add slices

+2 -2
astro.config.mjs
··· 5 5 import authproto from "@fujocoded/authproto"; 6 6 import unocss from "unocss/astro"; 7 7 8 - import svelte from "@astrojs/svelte"; 8 + import preact from "@astrojs/preact"; 9 9 10 10 // https://astro.build/config 11 11 export default defineConfig({ ··· 22 22 scopes: { 23 23 genericData: true, 24 24 }, 25 - }), unocss(), svelte()], 25 + }), unocss(), preact()], 26 26 experimental: { 27 27 fonts: [ 28 28 {
+3 -3
db/seed.ts
··· 35 35 await db.insert(Chapters).values([ 36 36 { 37 37 workId: 1, 38 - order: 1, 38 + // order: 1, 39 39 title: "chapter title 1", 40 40 content: "what's up?! <b>bold</b> and <em>italics</em> should work.", 41 41 }, 42 42 { 43 43 workId: 2, 44 - order: 1, 44 + // order: 1, 45 45 title: "chapter title 2", 46 46 content: "test", 47 47 }, 48 48 { 49 49 workId: 3, 50 - order: 1, 50 + // order: 1, 51 51 title: "at proto", 52 52 content: "what's up?! <b>bold</b> and <em>italics</em> should work.", 53 53 }
+7 -6
package.json
··· 4 4 "dependencies": { 5 5 "@astrojs/db": "^0.18.0", 6 6 "@astrojs/node": "^9.4.4", 7 - "@astrojs/svelte": "^7.2.0", 7 + "@astrojs/preact": "^4.1.1", 8 8 "@atproto/api": "^0.16.9", 9 9 "@atproto/common-web": "^0.4.3", 10 10 "@atproto/identity": "^0.4.9", 11 - "@atproto/lexicon": "^0.5.1", 12 - "@atproto/sync": "^0.1.35", 13 - "@atproto/xrpc-server": "^0.9.5", 14 11 "@floating-ui/dom": "^1.7.4", 15 12 "@fujocoded/authproto": "^0.1.1", 16 - "@lucide/astro": "^0.544.0", 17 13 "@sindresorhus/slugify": "^3.0.0", 14 + "@slices/client": "jsr:0.1.0-alpha.4", 15 + "@slices/oauth": "jsr:^0.6.0", 18 16 "astro": "^5.14.1", 19 - "nanoid": "^5.1.5" 17 + "nanoid": "^5.1.5", 18 + "preact": "^10.27.2" 20 19 }, 21 20 "scripts": { 22 21 "dev": "astro dev", ··· 29 28 "devDependencies": { 30 29 "@ameinhardt/unocss-preset-daisy": "^1.1.8", 31 30 "@atproto/lex-cli": "^0.9.5", 31 + "@iconify-json/lucide": "^1.2.68", 32 + "@iconify-json/lucide-lab": "^1.2.3", 32 33 "daisyui": "^5.1.13", 33 34 "unocss": "^66.5.2" 34 35 }
+505 -1005
pnpm-lock.yaml
··· 14 14 '@astrojs/node': 15 15 specifier: ^9.4.4 16 16 version: 9.4.4(astro@5.14.1(@types/node@24.6.0)(jiti@2.6.0)(rollup@4.52.3)(typescript@5.9.2)) 17 - '@astrojs/svelte': 18 - specifier: ^7.2.0 19 - version: 7.2.0(@types/node@24.6.0)(astro@5.14.1(@types/node@24.6.0)(jiti@2.6.0)(rollup@4.52.3)(typescript@5.9.2))(jiti@2.6.0)(svelte@5.39.6)(typescript@5.9.2) 17 + '@astrojs/preact': 18 + specifier: ^4.1.1 19 + version: 4.1.1(@babel/core@7.28.4)(@types/node@24.6.0)(jiti@2.6.0)(preact@10.27.2) 20 20 '@atproto/api': 21 21 specifier: ^0.16.9 22 22 version: 0.16.11 ··· 26 26 '@atproto/identity': 27 27 specifier: ^0.4.9 28 28 version: 0.4.9 29 - '@atproto/lexicon': 30 - specifier: ^0.5.1 31 - version: 0.5.1 32 - '@atproto/sync': 33 - specifier: ^0.1.35 34 - version: 0.1.35 35 - '@atproto/xrpc-server': 36 - specifier: ^0.9.5 37 - version: 0.9.5 38 29 '@floating-ui/dom': 39 30 specifier: ^1.7.4 40 31 version: 1.7.4 41 32 '@fujocoded/authproto': 42 33 specifier: ^0.1.1 43 34 version: 0.1.1(astro@5.14.1(@types/node@24.6.0)(jiti@2.6.0)(rollup@4.52.3)(typescript@5.9.2)) 44 - '@lucide/astro': 45 - specifier: ^0.544.0 46 - version: 0.544.0(astro@5.14.1(@types/node@24.6.0)(jiti@2.6.0)(rollup@4.52.3)(typescript@5.9.2)) 47 35 '@sindresorhus/slugify': 48 36 specifier: ^3.0.0 49 37 version: 3.0.0 38 + '@slices/client': 39 + specifier: jsr:0.1.0-alpha.4 40 + version: '@jsr/slices__client@0.1.0-alpha.4' 41 + '@slices/oauth': 42 + specifier: jsr:^0.6.0 43 + version: '@jsr/slices__oauth@0.6.0' 50 44 astro: 51 45 specifier: ^5.14.1 52 46 version: 5.14.1(@types/node@24.6.0)(jiti@2.6.0)(rollup@4.52.3)(typescript@5.9.2) 53 47 nanoid: 54 48 specifier: ^5.1.5 55 49 version: 5.1.6 50 + preact: 51 + specifier: ^10.27.2 52 + version: 10.27.2 56 53 devDependencies: 57 54 '@ameinhardt/unocss-preset-daisy': 58 55 specifier: ^1.1.8 ··· 60 57 '@atproto/lex-cli': 61 58 specifier: ^0.9.5 62 59 version: 0.9.5 60 + '@iconify-json/lucide': 61 + specifier: ^1.2.68 62 + version: 1.2.68 63 + '@iconify-json/lucide-lab': 64 + specifier: ^1.2.3 65 + version: 1.2.3 63 66 daisyui: 64 67 specifier: ^5.1.13 65 68 version: 5.1.25 ··· 101 104 peerDependencies: 102 105 astro: ^5.7.0 103 106 104 - '@astrojs/prism@3.3.0': 105 - resolution: {integrity: sha512-q8VwfU/fDZNoDOf+r7jUnMC2//H2l0TuQ6FkGJL8vD8nw/q5KiL3DS1KKBI3QhI9UQhpJ5dc7AtqfbXWuOgLCQ==} 107 + '@astrojs/preact@4.1.1': 108 + resolution: {integrity: sha512-UyUHtZ6uZEghqR5K6ri6YdczYTRjXDw3n9xzBXXtsl2xZ8dj2uVN4P6qrLo5nlON5lEkRCGsn4mO4utuyAB/KA==} 106 109 engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} 110 + peerDependencies: 111 + preact: ^10.6.5 107 112 108 - '@astrojs/svelte@7.2.0': 109 - resolution: {integrity: sha512-6AbtExkKc+m0tHR7Plf4bd3Myx0FMHmAICFfp4eAlv8IavjFmZMIjosRvm2+1l8MTH80p+cQxQmo/R3K+RvXlw==} 113 + '@astrojs/prism@3.3.0': 114 + resolution: {integrity: sha512-q8VwfU/fDZNoDOf+r7jUnMC2//H2l0TuQ6FkGJL8vD8nw/q5KiL3DS1KKBI3QhI9UQhpJ5dc7AtqfbXWuOgLCQ==} 110 115 engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} 111 - peerDependencies: 112 - astro: ^5.0.0 113 - svelte: ^5.1.16 114 - typescript: ^5.3.3 115 116 116 117 '@astrojs/telemetry@3.3.0': 117 118 resolution: {integrity: sha512-UFBgfeldP06qu6khs/yY+q1cDAaArM2/7AEIqQ9Cuvf7B1hNLq0xDrZkct+QoIGyjq56y8IaE2I3CTvG99mlhQ==} ··· 152 153 '@atproto/common-web@0.4.3': 153 154 resolution: {integrity: sha512-nRDINmSe4VycJzPo6fP/hEltBcULFxt9Kw7fQk6405FyAWZiTluYHlXOnU7GkQfeUK44OENG1qFTBcmCJ7e8pg==} 154 155 155 - '@atproto/common@0.4.12': 156 - resolution: {integrity: sha512-NC+TULLQiqs6MvNymhQS5WDms3SlbIKGLf4n33tpftRJcalh507rI+snbcUb7TLIkKw7VO17qMqxEXtIdd5auQ==} 157 - engines: {node: '>=18.7.0'} 158 - 159 156 '@atproto/crypto@0.4.4': 160 157 resolution: {integrity: sha512-Yq9+crJ7WQl7sxStVpHgie5Z51R05etaK9DLWYG/7bR5T4bhdcIgF6IfklLShtZwLYdVVj+K15s0BqW9a8PSDA==} 161 158 engines: {node: '>=18.7.0'} ··· 194 191 '@atproto/oauth-types@0.4.1': 195 192 resolution: {integrity: sha512-c5ixf2ZOzcltOu1fDBnO/tok6Wj7JDDK66+Z0q/+bAr8LXgOnxP7zQfJ+DD4gTkB+saTqsqWtVv8qvx/IEtm1g==} 196 193 197 - '@atproto/repo@0.8.10': 198 - resolution: {integrity: sha512-REs6TZGyxNaYsjqLf447u+gSdyzhvMkVbxMBiKt1ouEVRkiho1CY32+omn62UkpCuGK2y6SCf6x3sVMctgmX4g==} 199 - engines: {node: '>=18.7.0'} 200 - 201 - '@atproto/sync@0.1.35': 202 - resolution: {integrity: sha512-MPvmTjJYCilZEQF1ds7itzF9tNEZtw4Ez0HeMO5E5GaPtTAccBU3AsTxwWST87EX5qsVxMlBTq2go6G6+Swd7Q==} 203 - engines: {node: '>=18.7.0'} 204 - 205 194 '@atproto/syntax@0.4.1': 206 195 resolution: {integrity: sha512-CJdImtLAiFO+0z3BWTtxwk6aY5w4t8orHTMVJgkf++QRJWTxPbIFko/0hrkADB7n2EruDxDSeAgfUGehpH6ngw==} 207 196 208 - '@atproto/xrpc-server@0.9.5': 209 - resolution: {integrity: sha512-V0srjUgy6mQ5yf9+MSNBLs457m4qclEaWZsnqIE7RfYywvntexTAbMoo7J7ONfTNwdmA9Gw4oLak2z2cDAET4w==} 210 - engines: {node: '>=18.7.0'} 211 - 212 197 '@atproto/xrpc@0.7.5': 213 198 resolution: {integrity: sha512-MUYNn5d2hv8yVegRL0ccHvTHAVj5JSnW07bkbiaz96UH45lvYNRVwt44z+yYVnb0/mvBzyD3/ZQ55TRGt7fHkA==} 214 199 ··· 216 201 resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} 217 202 engines: {node: '>=6.9.0'} 218 203 204 + '@babel/compat-data@7.28.4': 205 + resolution: {integrity: sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==} 206 + engines: {node: '>=6.9.0'} 207 + 208 + '@babel/core@7.28.4': 209 + resolution: {integrity: sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==} 210 + engines: {node: '>=6.9.0'} 211 + 219 212 '@babel/generator@7.28.3': 220 213 resolution: {integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==} 221 214 engines: {node: '>=6.9.0'} 222 215 216 + '@babel/helper-annotate-as-pure@7.27.3': 217 + resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} 218 + engines: {node: '>=6.9.0'} 219 + 220 + '@babel/helper-compilation-targets@7.27.2': 221 + resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} 222 + engines: {node: '>=6.9.0'} 223 + 224 + '@babel/helper-globals@7.28.0': 225 + resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} 226 + engines: {node: '>=6.9.0'} 227 + 228 + '@babel/helper-module-imports@7.27.1': 229 + resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} 230 + engines: {node: '>=6.9.0'} 231 + 232 + '@babel/helper-module-transforms@7.28.3': 233 + resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==} 234 + engines: {node: '>=6.9.0'} 235 + peerDependencies: 236 + '@babel/core': ^7.0.0 237 + 238 + '@babel/helper-plugin-utils@7.27.1': 239 + resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} 240 + engines: {node: '>=6.9.0'} 241 + 223 242 '@babel/helper-string-parser@7.27.1': 224 243 resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} 225 244 engines: {node: '>=6.9.0'} ··· 228 247 resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} 229 248 engines: {node: '>=6.9.0'} 230 249 250 + '@babel/helper-validator-option@7.27.1': 251 + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} 252 + engines: {node: '>=6.9.0'} 253 + 254 + '@babel/helpers@7.28.4': 255 + resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} 256 + engines: {node: '>=6.9.0'} 257 + 231 258 '@babel/parser@7.27.7': 232 259 resolution: {integrity: sha512-qnzXzDXdr/po3bOTbTIQZ7+TxNKxpkN5IifVLXS+r7qwynkZfPyjZfE7hCXbo7IoO9TNcSyibgONsf2HauUd3Q==} 233 260 engines: {node: '>=6.0.0'} ··· 238 265 engines: {node: '>=6.0.0'} 239 266 hasBin: true 240 267 268 + '@babel/plugin-syntax-jsx@7.27.1': 269 + resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} 270 + engines: {node: '>=6.9.0'} 271 + peerDependencies: 272 + '@babel/core': ^7.0.0-0 273 + 274 + '@babel/plugin-transform-react-jsx-development@7.27.1': 275 + resolution: {integrity: sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==} 276 + engines: {node: '>=6.9.0'} 277 + peerDependencies: 278 + '@babel/core': ^7.0.0-0 279 + 280 + '@babel/plugin-transform-react-jsx@7.27.1': 281 + resolution: {integrity: sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==} 282 + engines: {node: '>=6.9.0'} 283 + peerDependencies: 284 + '@babel/core': ^7.0.0-0 285 + 241 286 '@babel/template@7.27.2': 242 287 resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} 243 288 engines: {node: '>=6.9.0'} ··· 246 291 resolution: {integrity: sha512-X6ZlfR/O/s5EQ/SnUSLzr+6kGnkg8HXGMzpgsMsrJVcfDtH1vIp6ctCN4eZ1LS5c0+te5Cb6Y514fASjMRJ1nw==} 247 292 engines: {node: '>=6.9.0'} 248 293 294 + '@babel/traverse@7.28.4': 295 + resolution: {integrity: sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==} 296 + engines: {node: '>=6.9.0'} 297 + 249 298 '@babel/types@7.28.4': 250 299 resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==} 251 300 engines: {node: '>=6.9.0'} ··· 253 302 '@capsizecss/unpack@2.4.0': 254 303 resolution: {integrity: sha512-GrSU71meACqcmIUxPYOJvGKF0yryjN/L1aCuE9DViCTJI7bfkjgYDPD1zbNDcINJwSSP6UaBZY9GAbYDO7re0Q==} 255 304 256 - '@cbor-extract/cbor-extract-darwin-arm64@2.2.0': 257 - resolution: {integrity: sha512-P7swiOAdF7aSi0H+tHtHtr6zrpF3aAq/W9FXx5HektRvLTM2O89xCyXF3pk7pLc7QpaY7AoaE8UowVf9QBdh3w==} 258 - cpu: [arm64] 259 - os: [darwin] 260 - 261 - '@cbor-extract/cbor-extract-darwin-x64@2.2.0': 262 - resolution: {integrity: sha512-1liF6fgowph0JxBbYnAS7ZlqNYLf000Qnj4KjqPNW4GViKrEql2MgZnAsExhY9LSy8dnvA4C0qHEBgPrll0z0w==} 263 - cpu: [x64] 264 - os: [darwin] 265 - 266 - '@cbor-extract/cbor-extract-linux-arm64@2.2.0': 267 - resolution: {integrity: sha512-rQvhNmDuhjTVXSPFLolmQ47/ydGOFXtbR7+wgkSY0bdOxCFept1hvg59uiLPT2fVDuJFuEy16EImo5tE2x3RsQ==} 268 - cpu: [arm64] 269 - os: [linux] 270 - 271 - '@cbor-extract/cbor-extract-linux-arm@2.2.0': 272 - resolution: {integrity: sha512-QeBcBXk964zOytiedMPQNZr7sg0TNavZeuUCD6ON4vEOU/25+pLhNN6EDIKJ9VLTKaZ7K7EaAriyYQ1NQ05s/Q==} 273 - cpu: [arm] 274 - os: [linux] 275 - 276 - '@cbor-extract/cbor-extract-linux-x64@2.2.0': 277 - resolution: {integrity: sha512-cWLAWtT3kNLHSvP4RKDzSTX9o0wvQEEAj4SKvhWuOVZxiDAeQazr9A+PSiRILK1VYMLeDml89ohxCnUNQNQNCw==} 278 - cpu: [x64] 279 - os: [linux] 280 - 281 - '@cbor-extract/cbor-extract-win32-x64@2.2.0': 282 - resolution: {integrity: sha512-l2M+Z8DO2vbvADOBNLbbh9y5ST1RY5sqkWOg/58GkUPBYou/cuNZ68SGQ644f1CvZ8kcOxyZtw06+dxWHIoN/w==} 283 - cpu: [x64] 284 - os: [win32] 285 - 286 305 '@emnapi/runtime@1.5.0': 287 306 resolution: {integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==} 288 307 ··· 456 475 peerDependencies: 457 476 astro: ^5.13.0 458 477 478 + '@iconify-json/lucide-lab@1.2.3': 479 + resolution: {integrity: sha512-N+8vnVt4IY/6FZi81f6nh5VhJSMYrs5KTVsT2Z/E0Wn7Lu4jJKO5fOfiTVX1YWVI4FFwQ1zVXPFb8kLAwskrjA==} 480 + 481 + '@iconify-json/lucide@1.2.68': 482 + resolution: {integrity: sha512-lR5xNJdn2CT0iR7lM25G4SewBO4G2hbr3fTWOc3AE9BspflEcneh02E3l9TBaCU/JOHozTJevWLrxBGypD7Tng==} 483 + 459 484 '@iconify/types@2.0.0': 460 485 resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} 461 486 ··· 587 612 engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 588 613 cpu: [x64] 589 614 os: [win32] 590 - 591 - '@ipld/dag-cbor@7.0.3': 592 - resolution: {integrity: sha512-1VVh2huHsuohdXC1bGJNE8WR72slZ9XE2T3wbBBq31dm7ZBatmKLLxrB+XAqafxfRFjv08RZmj/W/ZqaM13AuA==} 593 615 594 616 '@jridgewell/gen-mapping@0.3.13': 595 617 resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} ··· 607 629 '@jridgewell/trace-mapping@0.3.31': 608 630 resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} 609 631 632 + '@jsr/slices__client@0.1.0-alpha.4': 633 + resolution: {integrity: sha512-kMLYsarQOGoJAZiXehRYknm9YZBdq7O82EWhy300RPohQWyPgCAnBIbOI3b4aCLkxtTtAyklMIy9rpTAVt1z9w==, tarball: https://npm.jsr.io/~/11/@jsr/slices__client/0.1.0-alpha.4.tgz} 634 + 635 + '@jsr/slices__oauth@0.6.0': 636 + resolution: {integrity: sha512-V9ueBQPkVyYBMHjKClRo6s0mdC51IypP4BVMY4NHpG4g+D1/hBAidgRLObMyzDprqHxggMLpKwMq3ruUnsBB/w==, tarball: https://npm.jsr.io/~/11/@jsr/slices__oauth/0.6.0.tgz} 637 + 610 638 '@libsql/client@0.15.15': 611 639 resolution: {integrity: sha512-twC0hQxPNHPKfeOv3sNT6u2pturQjLcI+CnpTM0SjRpocEGgfiZ7DWKXLNnsothjyJmDqEsBQJ5ztq9Wlu470w==} 612 640 ··· 668 696 cpu: [x64] 669 697 os: [win32] 670 698 671 - '@lucide/astro@0.544.0': 672 - resolution: {integrity: sha512-A1OMIplo44RLQ5MefvXOMwHOnR1w/Dvk7q7W0LlKYwwV8pfBavU0nQecyb2rPkIt9dLTd4XfBUFRKCE+1r5gjA==} 673 - peerDependencies: 674 - astro: ^4 || ^5 675 - 676 699 '@neon-rs/load@0.0.4': 677 700 resolution: {integrity: sha512-kTPhdZyTQxB+2wpiRcFWrDcejc4JI6tkPuS7UZCG4l6Zvc5kU/gGQ/ozvHTh1XR5tS+UlfAfGuPajjzQjCiHCw==} 678 701 ··· 690 713 '@polka/url@1.0.0-next.29': 691 714 resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} 692 715 716 + '@preact/preset-vite@2.10.2': 717 + resolution: {integrity: sha512-K9wHlJOtkE+cGqlyQ5v9kL3Ge0Ql4LlIZjkUTL+1zf3nNdF88F9UZN6VTV8jdzBX9Fl7WSzeNMSDG7qECPmSmg==} 718 + peerDependencies: 719 + '@babel/core': 7.x 720 + vite: 2.x || 3.x || 4.x || 5.x || 6.x || 7.x 721 + 722 + '@preact/signals-core@1.12.1': 723 + resolution: {integrity: sha512-BwbTXpj+9QutoZLQvbttRg5x3l5468qaV2kufh+51yha1c53ep5dY4kTuZR35+3pAZxpfQerGJiQqg34ZNZ6uA==} 724 + 725 + '@preact/signals@2.3.2': 726 + resolution: {integrity: sha512-Q22avIn4z0BQnmFeo6Y5HCnJTo8VufN84zN51OtqeNgZOVCYgdwEOcJKVX1x/IrjRVxUnOy6Ubn7H5aVFujXaQ==} 727 + peerDependencies: 728 + preact: '>= 10.25.0 || >=11.0.0-0' 729 + 730 + '@prefresh/babel-plugin@0.5.2': 731 + resolution: {integrity: sha512-AOl4HG6dAxWkJ5ndPHBgBa49oo/9bOiJuRDKHLSTyH+Fd9x00shTXpdiTj1W41l6oQIwUOAgJeHMn4QwIDpHkA==} 732 + 733 + '@prefresh/core@1.5.8': 734 + resolution: {integrity: sha512-T7HMpakS1iPVCFZvfDLMGyrWAcO3toUN9/RkJUqqoRr/vNhQrZgHjidfhq3awDzAQtw1emDWH8dsOeu0DWqtgA==} 735 + peerDependencies: 736 + preact: ^10.0.0 || ^11.0.0-0 737 + 738 + '@prefresh/utils@1.2.1': 739 + resolution: {integrity: sha512-vq/sIuN5nYfYzvyayXI4C2QkprfNaHUQ9ZX+3xLD8nL3rWyzpxOm1+K7RtMbhd+66QcaISViK7amjnheQ/4WZw==} 740 + 741 + '@prefresh/vite@2.4.10': 742 + resolution: {integrity: sha512-lt+ODASOtXRWaPplp7/DlrgAaInnQYNvcpCglQBMx2OeJPyZ4IqPRaxsK77w96mWshjYwkqTsRSHoAM7aAn0ow==} 743 + peerDependencies: 744 + preact: ^10.4.0 || ^11.0.0-0 745 + vite: '>=2.0.0' 746 + 693 747 '@quansync/fs@0.1.5': 694 748 resolution: {integrity: sha512-lNS9hL2aS2NZgNW7BBj+6EBl4rOf8l+tQ0eRY6JWCI8jI2kc53gSoqbjojU0OnAWhzoXiOjFyGsHcDGePB3lhA==} 749 + 750 + '@rollup/pluginutils@4.2.1': 751 + resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} 752 + engines: {node: '>= 8.0.0'} 695 753 696 754 '@rollup/pluginutils@5.3.0': 697 755 resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} ··· 841 899 resolution: {integrity: sha512-lRx63oCHxeJ90DqIgmbxH1PQmiBDY1wVaLzB4hK0d/xS5BrG1iZO3HdCJS/DQJk6GJ8xHDev8OMI7iGxvE1ZUA==} 842 900 engines: {node: '>=20'} 843 901 844 - '@sveltejs/acorn-typescript@1.0.6': 845 - resolution: {integrity: sha512-4awhxtMh4cx9blePWl10HRHj8Iivtqj+2QdDCSMDzxG+XKa9+VCNupQuCuvzEhYPzZSrX+0gC+0lHA/0fFKKQQ==} 846 - peerDependencies: 847 - acorn: ^8.9.0 848 - 849 - '@sveltejs/vite-plugin-svelte-inspector@4.0.1': 850 - resolution: {integrity: sha512-J/Nmb2Q2y7mck2hyCX4ckVHcR5tu2J+MtBEQqpDrrgELZ2uvraQcK/ioCV61AqkdXFgriksOKIceDcQmqnGhVw==} 851 - engines: {node: ^18.0.0 || ^20.0.0 || >=22} 852 - peerDependencies: 853 - '@sveltejs/vite-plugin-svelte': ^5.0.0 854 - svelte: ^5.0.0 855 - vite: ^6.0.0 856 - 857 - '@sveltejs/vite-plugin-svelte@5.1.1': 858 - resolution: {integrity: sha512-Y1Cs7hhTc+a5E9Va/xwKlAJoariQyHY+5zBgCZg4PFWNYQ1nMN9sjK1zhw1gK69DuqVP++sht/1GZg1aRwmAXQ==} 859 - engines: {node: ^18.0.0 || ^20.0.0 || >=22} 860 - peerDependencies: 861 - svelte: ^5.0.0 862 - vite: ^6.0.0 863 - 864 902 '@swc/helpers@0.5.17': 865 903 resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} 866 904 ··· 991 1029 peerDependencies: 992 1030 vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0 993 1031 994 - abort-controller@3.0.0: 995 - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} 996 - engines: {node: '>=6.5'} 997 - 998 - accepts@1.3.8: 999 - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} 1000 - engines: {node: '>= 0.6'} 1001 - 1002 1032 acorn@8.15.0: 1003 1033 resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} 1004 1034 engines: {node: '>=0.4.0'} ··· 1034 1064 resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} 1035 1065 engines: {node: '>= 0.4'} 1036 1066 1037 - array-flatten@1.1.1: 1038 - resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} 1039 - 1040 1067 array-iterate@2.0.1: 1041 1068 resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==} 1042 1069 ··· 1050 1077 engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} 1051 1078 hasBin: true 1052 1079 1053 - async-function@1.0.0: 1054 - resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} 1055 - engines: {node: '>= 0.4'} 1056 - 1057 - async-generator-function@1.0.0: 1058 - resolution: {integrity: sha512-+NAXNqgCrB95ya4Sr66i1CL2hqLVckAk7xwRYWdcm39/ELQ6YNn1aw5r0bdQtqNZgQpEWzc5yc/igXc7aL5SLA==} 1059 - engines: {node: '>= 0.4'} 1060 - 1061 - atomic-sleep@1.0.0: 1062 - resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} 1063 - engines: {node: '>=8.0.0'} 1064 - 1065 1080 await-lock@2.2.2: 1066 1081 resolution: {integrity: sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw==} 1067 1082 1068 1083 axobject-query@4.1.0: 1069 1084 resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} 1070 1085 engines: {node: '>= 0.4'} 1086 + 1087 + babel-plugin-transform-hook-names@1.0.2: 1088 + resolution: {integrity: sha512-5gafyjyyBTTdX/tQQ0hRgu4AhNHG/hqWi0ZZmg2xvs2FgRkJXzDNKBZCyoYqgFkovfDrgM8OoKg8karoUvWeCw==} 1089 + peerDependencies: 1090 + '@babel/core': ^7.12.10 1071 1091 1072 1092 bail@2.0.2: 1073 1093 resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} ··· 1081 1101 base64-js@1.5.1: 1082 1102 resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} 1083 1103 1104 + baseline-browser-mapping@2.8.12: 1105 + resolution: {integrity: sha512-vAPMQdnyKCBtkmQA6FMCBvU9qFIppS3nzyXnEM+Lo2IAhG4Mpjv9cCxMudhgV3YdNNJv6TNqXy97dfRVL2LmaQ==} 1106 + hasBin: true 1107 + 1084 1108 binary-extensions@2.3.0: 1085 1109 resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} 1086 1110 engines: {node: '>=8'} ··· 1088 1112 blob-to-buffer@1.2.9: 1089 1113 resolution: {integrity: sha512-BF033y5fN6OCofD3vgHmNtwZWRcq9NLyyxyILx9hfMy1sXYy4ojFl765hJ2lP0YaN2fuxPaLO2Vzzoxy0FLFFA==} 1090 1114 1091 - body-parser@1.20.3: 1092 - resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} 1093 - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} 1115 + boolbase@1.0.0: 1116 + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} 1094 1117 1095 1118 boxen@8.0.1: 1096 1119 resolution: {integrity: sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==} ··· 1106 1129 brotli@1.3.3: 1107 1130 resolution: {integrity: sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==} 1108 1131 1109 - buffer@6.0.3: 1110 - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} 1111 - 1112 - bytes@3.1.2: 1113 - resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} 1114 - engines: {node: '>= 0.8'} 1132 + browserslist@4.26.3: 1133 + resolution: {integrity: sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==} 1134 + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 1135 + hasBin: true 1115 1136 1116 1137 cac@6.7.14: 1117 1138 resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} 1118 1139 engines: {node: '>=8'} 1119 1140 1120 - call-bind-apply-helpers@1.0.2: 1121 - resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} 1122 - engines: {node: '>= 0.4'} 1123 - 1124 - call-bound@1.0.4: 1125 - resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} 1126 - engines: {node: '>= 0.4'} 1127 - 1128 1141 camelcase@8.0.0: 1129 1142 resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} 1130 1143 engines: {node: '>=16'} 1131 1144 1132 - cbor-extract@2.2.0: 1133 - resolution: {integrity: sha512-Ig1zM66BjLfTXpNgKpvBePq271BPOvu8MR0Jl080yG7Jsl+wAZunfrwiwA+9ruzm/WEdIV5QF/bjDZTqyAIVHA==} 1134 - hasBin: true 1135 - 1136 - cbor-x@1.6.0: 1137 - resolution: {integrity: sha512-0kareyRwHSkL6ws5VXHEf8uY1liitysCVJjlmhaLG+IXLqhSaOO+t63coaso7yjwEzWZzLy8fJo06gZDVQM9Qg==} 1138 - 1139 - cborg@1.10.2: 1140 - resolution: {integrity: sha512-b3tFPA9pUr2zCUiCfRd2+wok2/LBSNUMKOuRRok+WlvvAgEt/PlbgPTsZUcwCOs53IJvLgTp0eotwtosE6njug==} 1141 - hasBin: true 1145 + caniuse-lite@1.0.30001748: 1146 + resolution: {integrity: sha512-5P5UgAr0+aBmNiplks08JLw+AW/XG/SurlgZLgB1dDLfAw7EfRGxIwzPHxdSCGY/BTKDqIVyJL87cCN6s0ZR0w==} 1142 1147 1143 1148 ccount@2.0.1: 1144 1149 resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} ··· 1217 1222 resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} 1218 1223 engines: {node: ^14.18.0 || >=16.10.0} 1219 1224 1220 - content-disposition@0.5.4: 1221 - resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} 1222 - engines: {node: '>= 0.6'} 1223 - 1224 - content-type@1.0.5: 1225 - resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} 1226 - engines: {node: '>= 0.6'} 1225 + convert-source-map@2.0.0: 1226 + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} 1227 1227 1228 1228 cookie-es@1.2.2: 1229 1229 resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==} 1230 1230 1231 - cookie-signature@1.0.6: 1232 - resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} 1233 - 1234 - cookie@0.7.1: 1235 - resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} 1236 - engines: {node: '>= 0.6'} 1237 - 1238 1231 cookie@1.0.2: 1239 1232 resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} 1240 1233 engines: {node: '>=18'} ··· 1245 1238 crossws@0.3.5: 1246 1239 resolution: {integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==} 1247 1240 1241 + css-select@5.2.2: 1242 + resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==} 1243 + 1248 1244 css-tree@3.1.0: 1249 1245 resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} 1250 1246 engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} 1251 1247 1248 + css-what@6.2.2: 1249 + resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} 1250 + engines: {node: '>= 6'} 1251 + 1252 1252 cssesc@3.0.0: 1253 1253 resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 1254 1254 engines: {node: '>=4'} ··· 1261 1261 resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} 1262 1262 engines: {node: '>= 12'} 1263 1263 1264 - debug@2.6.9: 1265 - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} 1266 - peerDependencies: 1267 - supports-color: '*' 1268 - peerDependenciesMeta: 1269 - supports-color: 1270 - optional: true 1271 - 1272 1264 debug@4.4.3: 1273 1265 resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} 1274 1266 engines: {node: '>=6.0'} ··· 1281 1273 decode-named-character-reference@1.2.0: 1282 1274 resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==} 1283 1275 1284 - dedent-js@1.0.1: 1285 - resolution: {integrity: sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==} 1286 - 1287 1276 deep-diff@1.0.2: 1288 1277 resolution: {integrity: sha512-aWS3UIVH+NPGCD1kki+DCU9Dua032iSsO43LqQpcs4R3+dVv7tX0qBGjiVHJHjplsoUM2XRO/KB92glqc68awg==} 1289 - 1290 - deepmerge@4.3.1: 1291 - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} 1292 - engines: {node: '>=0.10.0'} 1293 1278 1294 1279 defu@6.1.4: 1295 1280 resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} ··· 1304 1289 1305 1290 destr@2.0.5: 1306 1291 resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} 1307 - 1308 - destroy@1.2.0: 1309 - resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} 1310 - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} 1311 1292 1312 1293 detect-libc@2.0.2: 1313 1294 resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} ··· 1336 1317 1337 1318 dlv@1.1.3: 1338 1319 resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} 1320 + 1321 + dom-serializer@2.0.0: 1322 + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} 1323 + 1324 + domelementtype@2.3.0: 1325 + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} 1326 + 1327 + domhandler@5.0.3: 1328 + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} 1329 + engines: {node: '>= 4'} 1330 + 1331 + domutils@3.2.2: 1332 + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} 1339 1333 1340 1334 drizzle-orm@0.42.0: 1341 1335 resolution: {integrity: sha512-pS8nNJm2kBNZwrOjTHJfdKkaU+KuUQmV/vk5D57NojDq4FG+0uAYGMulXtYT///HfgsMF0hnFFvu1ezI3OwOkg==} ··· 1430 1424 resolution: {integrity: sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==} 1431 1425 engines: {node: '>=4'} 1432 1426 1433 - dunder-proto@1.0.1: 1434 - resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} 1435 - engines: {node: '>= 0.4'} 1436 - 1437 1427 duplexer@0.1.2: 1438 1428 resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} 1439 1429 1440 1430 ee-first@1.1.1: 1441 1431 resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} 1442 1432 1433 + electron-to-chromium@1.5.230: 1434 + resolution: {integrity: sha512-A6A6Fd3+gMdaed9wX83CvHYJb4UuapPD5X5SLq72VZJzxHSY0/LUweGXRWmQlh2ln7KV7iw7jnwXK7dlPoOnHQ==} 1435 + 1443 1436 emoji-regex@10.5.0: 1444 1437 resolution: {integrity: sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==} 1445 1438 1446 1439 emoji-regex@8.0.0: 1447 1440 resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 1448 1441 1449 - encodeurl@1.0.2: 1450 - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} 1451 - engines: {node: '>= 0.8'} 1452 - 1453 1442 encodeurl@2.0.0: 1454 1443 resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} 1455 1444 engines: {node: '>= 0.8'} 1456 1445 1446 + entities@4.5.0: 1447 + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} 1448 + engines: {node: '>=0.12'} 1449 + 1457 1450 entities@6.0.1: 1458 1451 resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} 1459 1452 engines: {node: '>=0.12'} 1460 1453 1461 - es-define-property@1.0.1: 1462 - resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} 1463 - engines: {node: '>= 0.4'} 1464 - 1465 - es-errors@1.3.0: 1466 - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} 1467 - engines: {node: '>= 0.4'} 1468 - 1469 1454 es-module-lexer@1.7.0: 1470 1455 resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} 1471 1456 1472 - es-object-atoms@1.1.1: 1473 - resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} 1474 - engines: {node: '>= 0.4'} 1475 - 1476 1457 esbuild@0.25.10: 1477 1458 resolution: {integrity: sha512-9RiGKvCwaqxO2owP61uQ4BgNborAQskMR6QusfWzQqv7AZOg5oGehdY2pRJMTKuwxd1IDBP4rSbI5lHzU7SMsQ==} 1478 1459 engines: {node: '>=18'} 1479 1460 hasBin: true 1480 1461 1462 + escalade@3.2.0: 1463 + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} 1464 + engines: {node: '>=6'} 1465 + 1481 1466 escape-html@1.0.3: 1482 1467 resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} 1483 1468 ··· 1485 1470 resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} 1486 1471 engines: {node: '>=12'} 1487 1472 1488 - esm-env@1.2.2: 1489 - resolution: {integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==} 1490 - 1491 - esrap@2.1.0: 1492 - resolution: {integrity: sha512-yzmPNpl7TBbMRC5Lj2JlJZNPml0tzqoqP5B1JXycNUwtqma9AKCO0M2wHrdgsHcy1WRW7S9rJknAMtByg3usgA==} 1493 - 1494 1473 estree-walker@2.0.2: 1495 1474 resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 1496 1475 ··· 1501 1480 resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} 1502 1481 engines: {node: '>= 0.6'} 1503 1482 1504 - event-target-shim@5.0.1: 1505 - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} 1506 - engines: {node: '>=6'} 1507 - 1508 - eventemitter3@4.0.7: 1509 - resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} 1510 - 1511 1483 eventemitter3@5.0.1: 1512 1484 resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} 1513 1485 1514 - events@3.3.0: 1515 - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} 1516 - engines: {node: '>=0.8.x'} 1517 - 1518 - express@4.21.2: 1519 - resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} 1520 - engines: {node: '>= 0.10.0'} 1521 - 1522 1486 exsolve@1.0.7: 1523 1487 resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==} 1524 1488 ··· 1528 1492 fast-deep-equal@3.1.3: 1529 1493 resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1530 1494 1531 - fast-redact@3.5.0: 1532 - resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} 1533 - engines: {node: '>=6'} 1534 - 1535 1495 fdir@6.5.0: 1536 1496 resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} 1537 1497 engines: {node: '>=12.0.0'} ··· 1548 1508 fill-range@7.1.1: 1549 1509 resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 1550 1510 engines: {node: '>=8'} 1551 - 1552 - finalhandler@1.3.1: 1553 - resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} 1554 - engines: {node: '>= 0.8'} 1555 1511 1556 1512 flattie@1.1.1: 1557 1513 resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==} ··· 1567 1523 resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} 1568 1524 engines: {node: '>=12.20.0'} 1569 1525 1570 - forwarded@0.2.0: 1571 - resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} 1572 - engines: {node: '>= 0.6'} 1573 - 1574 - fresh@0.5.2: 1575 - resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} 1576 - engines: {node: '>= 0.6'} 1577 - 1578 1526 fresh@2.0.0: 1579 1527 resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} 1580 1528 engines: {node: '>= 0.8'} ··· 1584 1532 engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1585 1533 os: [darwin] 1586 1534 1587 - function-bind@1.1.2: 1588 - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 1589 - 1590 - generator-function@2.0.0: 1591 - resolution: {integrity: sha512-xPypGGincdfyl/AiSGa7GjXLkvld9V7GjZlowup9SHIJnQnHLFiLODCd/DqKOp0PBagbHJ68r1KJI9Mut7m4sA==} 1592 - engines: {node: '>= 0.4'} 1535 + gensync@1.0.0-beta.2: 1536 + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 1537 + engines: {node: '>=6.9.0'} 1593 1538 1594 1539 get-east-asian-width@1.4.0: 1595 1540 resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==} 1596 1541 engines: {node: '>=18'} 1597 1542 1598 - get-intrinsic@1.3.1: 1599 - resolution: {integrity: sha512-fk1ZVEeOX9hVZ6QzoBNEC55+Ucqg4sTVwrVuigZhuRPESVFpMyXnd3sbXvPOwp7Y9riVyANiqhEuRF0G1aVSeQ==} 1600 - engines: {node: '>= 0.4'} 1601 - 1602 - get-proto@1.0.1: 1603 - resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} 1604 - engines: {node: '>= 0.4'} 1605 - 1606 1543 github-slugger@2.0.0: 1607 1544 resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} 1608 1545 ··· 1618 1555 resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} 1619 1556 engines: {node: '>=18'} 1620 1557 1621 - gopd@1.2.0: 1622 - resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} 1623 - engines: {node: '>= 0.4'} 1624 - 1625 1558 graphemer@1.4.0: 1626 1559 resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 1627 1560 ··· 1636 1569 resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1637 1570 engines: {node: '>=8'} 1638 1571 1639 - has-symbols@1.1.0: 1640 - resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} 1641 - engines: {node: '>= 0.4'} 1642 - 1643 - hasown@2.0.2: 1644 - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} 1645 - engines: {node: '>= 0.4'} 1646 - 1647 1572 hast-util-from-html@2.0.3: 1648 1573 resolution: {integrity: sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==} 1649 1574 ··· 1674 1599 hastscript@9.0.1: 1675 1600 resolution: {integrity: sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==} 1676 1601 1602 + he@1.2.0: 1603 + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} 1604 + hasBin: true 1605 + 1677 1606 html-escaper@3.0.3: 1678 1607 resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==} 1679 1608 ··· 1686 1615 http-errors@2.0.0: 1687 1616 resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} 1688 1617 engines: {node: '>= 0.8'} 1689 - 1690 - iconv-lite@0.4.24: 1691 - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} 1692 - engines: {node: '>=0.10.0'} 1693 - 1694 - ieee754@1.2.1: 1695 - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} 1696 1618 1697 1619 import-meta-resolve@4.2.0: 1698 1620 resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==} ··· 1700 1622 inherits@2.0.4: 1701 1623 resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1702 1624 1703 - ipaddr.js@1.9.1: 1704 - resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} 1705 - engines: {node: '>= 0.10'} 1706 - 1707 1625 ipaddr.js@2.2.0: 1708 1626 resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} 1709 1627 engines: {node: '>= 10'} ··· 1745 1663 resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} 1746 1664 engines: {node: '>=12'} 1747 1665 1748 - is-reference@3.0.3: 1749 - resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==} 1750 - 1751 1666 is-wsl@3.1.0: 1752 1667 resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} 1753 1668 engines: {node: '>=16'} ··· 1777 1692 engines: {node: '>=6'} 1778 1693 hasBin: true 1779 1694 1695 + json5@2.2.3: 1696 + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} 1697 + engines: {node: '>=6'} 1698 + hasBin: true 1699 + 1780 1700 kleur@3.0.3: 1781 1701 resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} 1782 1702 engines: {node: '>=6'} ··· 1797 1717 resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==} 1798 1718 engines: {node: '>=14'} 1799 1719 1800 - locate-character@3.0.0: 1801 - resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} 1802 - 1803 1720 longest-streak@3.1.0: 1804 1721 resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} 1805 1722 1806 1723 lru-cache@10.4.3: 1807 1724 resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} 1808 1725 1726 + lru-cache@5.1.1: 1727 + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} 1728 + 1809 1729 magic-string@0.30.19: 1810 1730 resolution: {integrity: sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==} 1811 1731 ··· 1814 1734 1815 1735 markdown-table@3.0.4: 1816 1736 resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} 1817 - 1818 - math-intrinsics@1.1.0: 1819 - resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} 1820 - engines: {node: '>= 0.4'} 1821 1737 1822 1738 mdast-util-definitions@6.0.0: 1823 1739 resolution: {integrity: sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==} ··· 1861 1777 mdn-data@2.12.2: 1862 1778 resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} 1863 1779 1864 - media-typer@0.3.0: 1865 - resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} 1866 - engines: {node: '>= 0.6'} 1867 - 1868 - merge-descriptors@1.0.3: 1869 - resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} 1870 - 1871 - methods@1.1.2: 1872 - resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} 1873 - engines: {node: '>= 0.6'} 1874 - 1875 1780 micromark-core-commonmark@2.0.3: 1876 1781 resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} 1877 1782 ··· 1956 1861 micromark@4.0.2: 1957 1862 resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} 1958 1863 1959 - mime-db@1.52.0: 1960 - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 1961 - engines: {node: '>= 0.6'} 1962 - 1963 1864 mime-db@1.54.0: 1964 1865 resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} 1965 - engines: {node: '>= 0.6'} 1966 - 1967 - mime-types@2.1.35: 1968 - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 1969 1866 engines: {node: '>= 0.6'} 1970 1867 1971 1868 mime-types@3.0.1: 1972 1869 resolution: {integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==} 1973 1870 engines: {node: '>= 0.6'} 1974 1871 1975 - mime@1.6.0: 1976 - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} 1977 - engines: {node: '>=4'} 1978 - hasBin: true 1979 - 1980 1872 minimatch@9.0.5: 1981 1873 resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 1982 1874 engines: {node: '>=16 || 14 >=14.17'} ··· 1988 1880 resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} 1989 1881 engines: {node: '>=10'} 1990 1882 1991 - ms@2.0.0: 1992 - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} 1993 - 1994 1883 ms@2.1.3: 1995 1884 resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1996 1885 ··· 2006 1895 resolution: {integrity: sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg==} 2007 1896 engines: {node: ^18 || >=20} 2008 1897 hasBin: true 2009 - 2010 - negotiator@0.6.3: 2011 - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} 2012 - engines: {node: '>= 0.6'} 2013 1898 2014 1899 neotraverse@0.6.18: 2015 1900 resolution: {integrity: sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==} ··· 2039 1924 resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} 2040 1925 engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2041 1926 2042 - node-gyp-build-optional-packages@5.1.1: 2043 - resolution: {integrity: sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==} 2044 - hasBin: true 1927 + node-html-parser@6.1.13: 1928 + resolution: {integrity: sha512-qIsTMOY4C/dAa5Q5vsobRpOOvPfC4pB61UVW2uSwZNUp0QU/jCekTal1vMmbO0DgdHeLUJpv/ARmDqErVxA3Sg==} 2045 1929 2046 1930 node-mock-http@1.0.3: 2047 1931 resolution: {integrity: sha512-jN8dK25fsfnMrVsEhluUTPkBFY+6ybu7jSB1n+ri/vOGjJxU8J9CZhpSGkHXSkFjtUhbmoncG/YG9ta5Ludqog==} 2048 1932 1933 + node-releases@2.0.23: 1934 + resolution: {integrity: sha512-cCmFDMSm26S6tQSDpBCg/NR8NENrVPhAJSf+XbxBG4rPFaaonlEoE9wHQmun+cls499TQGSb7ZyPBRlzgKfpeg==} 1935 + 2049 1936 normalize-path@3.0.0: 2050 1937 resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 2051 1938 engines: {node: '>=0.10.0'} 2052 1939 2053 - object-inspect@1.13.4: 2054 - resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} 2055 - engines: {node: '>= 0.4'} 1940 + nth-check@2.1.1: 1941 + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} 2056 1942 2057 1943 ofetch@1.4.1: 2058 1944 resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} 2059 1945 2060 1946 ohash@2.0.11: 2061 1947 resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} 2062 - 2063 - on-exit-leak-free@2.1.2: 2064 - resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} 2065 - engines: {node: '>=14.0.0'} 2066 1948 2067 1949 on-finished@2.4.1: 2068 1950 resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} ··· 2074 1956 oniguruma-to-es@4.3.3: 2075 1957 resolution: {integrity: sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==} 2076 1958 2077 - p-finally@1.0.0: 2078 - resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} 2079 - engines: {node: '>=4'} 2080 - 2081 1959 p-limit@6.2.0: 2082 1960 resolution: {integrity: sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==} 2083 1961 engines: {node: '>=18'} 2084 1962 2085 - p-queue@6.6.2: 2086 - resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} 2087 - engines: {node: '>=8'} 2088 - 2089 1963 p-queue@8.1.1: 2090 1964 resolution: {integrity: sha512-aNZ+VfjobsWryoiPnEApGGmf5WmNsCo9xu8dfaYamG5qaLP7ClhLN6NgsFe6SwJ2UbLEBK5dv9x8Mn5+RVhMWQ==} 2091 1965 engines: {node: '>=18'} 2092 - 2093 - p-timeout@3.2.0: 2094 - resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} 2095 - engines: {node: '>=8'} 2096 1966 2097 1967 p-timeout@6.1.4: 2098 1968 resolution: {integrity: sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==} ··· 2110 1980 parse5@7.3.0: 2111 1981 resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} 2112 1982 2113 - parseurl@1.3.3: 2114 - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} 2115 - engines: {node: '>= 0.8'} 2116 - 2117 1983 path-browserify@1.0.1: 2118 1984 resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} 2119 - 2120 - path-to-regexp@0.1.12: 2121 - resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} 2122 1985 2123 1986 pathe@1.1.2: 2124 1987 resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} ··· 2140 2003 resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} 2141 2004 engines: {node: '>=12'} 2142 2005 2143 - pino-abstract-transport@1.2.0: 2144 - resolution: {integrity: sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==} 2145 - 2146 - pino-std-serializers@6.2.2: 2147 - resolution: {integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==} 2148 - 2149 - pino@8.21.0: 2150 - resolution: {integrity: sha512-ip4qdzjkAyDDZklUaZkcRFb2iA118H9SgRh8yzTkSQK8HilsOJF7rSY8HoW5+I0M46AZgX/pxbprf2vvzQCE0Q==} 2151 - hasBin: true 2152 - 2153 2006 pkg-types@1.3.1: 2154 2007 resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} 2155 2008 ··· 2174 2027 resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} 2175 2028 engines: {node: ^10 || ^12 || >=14} 2176 2029 2030 + preact-render-to-string@6.6.2: 2031 + resolution: {integrity: sha512-VJ++Pkzv6+ZOmeN/9Qvx0mRdXqnei1Lo3uu9bGvYHhoMI1VUkDT44hcpGbiokl/kuuYTayYa3yvmYTLZMplfMA==} 2032 + peerDependencies: 2033 + preact: '>=10 || >= 11.0.0-0' 2034 + 2035 + preact@10.27.2: 2036 + resolution: {integrity: sha512-5SYSgFKSyhCbk6SrXyMpqjb5+MQBgfvEKE/OC+PujcY34sOpqtr+0AZQtPYx5IA6VxynQ7rUPCtKzyovpj9Bpg==} 2037 + 2177 2038 prettier@3.6.2: 2178 2039 resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==} 2179 2040 engines: {node: '>=14'} ··· 2183 2044 resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==} 2184 2045 engines: {node: '>=6'} 2185 2046 2186 - process-warning@3.0.0: 2187 - resolution: {integrity: sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==} 2188 - 2189 - process@0.11.10: 2190 - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} 2191 - engines: {node: '>= 0.6.0'} 2192 - 2193 2047 promise-limit@2.7.0: 2194 2048 resolution: {integrity: sha512-7nJ6v5lnJsXwGprnGXga4wx6d1POjvi5Qmf1ivTRxTjH4Z/9Czja/UCMLVmB9N93GeWOU93XaFaEt6jbuoagNw==} 2195 2049 ··· 2203 2057 property-information@7.1.0: 2204 2058 resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} 2205 2059 2206 - proxy-addr@2.0.7: 2207 - resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} 2208 - engines: {node: '>= 0.10'} 2209 - 2210 - qs@6.13.0: 2211 - resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} 2212 - engines: {node: '>=0.6'} 2213 - 2214 2060 quansync@0.2.11: 2215 2061 resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} 2216 2062 2217 - quick-format-unescaped@4.0.4: 2218 - resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} 2219 - 2220 2063 radix3@1.1.2: 2221 2064 resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} 2222 2065 ··· 2224 2067 resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} 2225 2068 engines: {node: '>= 0.6'} 2226 2069 2227 - rate-limiter-flexible@2.4.2: 2228 - resolution: {integrity: sha512-rMATGGOdO1suFyf/mI5LYhts71g1sbdhmd6YvdiXO2gJnd42Tt6QS4JUKJKSWVVkMtBacm6l40FR7Trjo6Iruw==} 2229 - 2230 - raw-body@2.5.2: 2231 - resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} 2232 - engines: {node: '>= 0.8'} 2233 - 2234 - readable-stream@4.7.0: 2235 - resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==} 2236 - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 2237 - 2238 2070 readdirp@3.6.0: 2239 2071 resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 2240 2072 engines: {node: '>=8.10.0'} ··· 2242 2074 readdirp@4.1.2: 2243 2075 resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} 2244 2076 engines: {node: '>= 14.18.0'} 2245 - 2246 - real-require@0.2.0: 2247 - resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} 2248 - engines: {node: '>= 12.13.0'} 2249 2077 2250 2078 regex-recursion@6.0.2: 2251 2079 resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==} ··· 2304 2132 engines: {node: '>=18.0.0', npm: '>=8.0.0'} 2305 2133 hasBin: true 2306 2134 2307 - safe-buffer@5.2.1: 2308 - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 2309 - 2310 - safe-stable-stringify@2.5.0: 2311 - resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} 2312 - engines: {node: '>=10'} 2313 - 2314 - safer-buffer@2.1.2: 2315 - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 2316 - 2317 - scule@1.3.0: 2318 - resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} 2135 + semver@6.3.1: 2136 + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 2137 + hasBin: true 2319 2138 2320 2139 semver@7.7.2: 2321 2140 resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} 2322 2141 engines: {node: '>=10'} 2323 2142 hasBin: true 2324 2143 2325 - send@0.19.0: 2326 - resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} 2327 - engines: {node: '>= 0.8.0'} 2328 - 2329 2144 send@1.2.0: 2330 2145 resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==} 2331 2146 engines: {node: '>= 18'} 2332 - 2333 - serve-static@1.16.2: 2334 - resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} 2335 - engines: {node: '>= 0.8.0'} 2336 2147 2337 2148 server-destroy@1.0.1: 2338 2149 resolution: {integrity: sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==} ··· 2347 2158 shiki@3.13.0: 2348 2159 resolution: {integrity: sha512-aZW4l8Og16CokuCLf8CF8kq+KK2yOygapU5m3+hoGw0Mdosc6fPitjM+ujYarppj5ZIKGyPDPP1vqmQhr+5/0g==} 2349 2160 2350 - side-channel-list@1.0.0: 2351 - resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} 2352 - engines: {node: '>= 0.4'} 2353 - 2354 - side-channel-map@1.0.1: 2355 - resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} 2356 - engines: {node: '>= 0.4'} 2357 - 2358 - side-channel-weakmap@1.0.2: 2359 - resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} 2360 - engines: {node: '>= 0.4'} 2361 - 2362 - side-channel@1.1.0: 2363 - resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} 2364 - engines: {node: '>= 0.4'} 2161 + simple-code-frame@1.3.0: 2162 + resolution: {integrity: sha512-MB4pQmETUBlNs62BBeRjIFGeuy/x6gGKh7+eRUemn1rCFhqo7K+4slPqsyizCbcbYLnaYqaoZ2FWsZ/jN06D8w==} 2365 2163 2366 2164 sirv@3.0.2: 2367 2165 resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==} ··· 2374 2172 resolution: {integrity: sha512-rInDH6lCNiEyn3+hH8KVGFdbjc099j47+OSgbMrfDYX1CmXLfdKd7qi6IfcWj2wFxvSVkuI46M+wPGYfEOEj6g==} 2375 2173 engines: {node: '>= 18'} 2376 2174 2377 - sonic-boom@3.8.1: 2378 - resolution: {integrity: sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg==} 2379 - 2380 2175 source-map-js@1.2.1: 2381 2176 resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 2382 2177 engines: {node: '>=0.10.0'} 2383 2178 2179 + source-map@0.7.6: 2180 + resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} 2181 + engines: {node: '>= 12'} 2182 + 2384 2183 space-separated-tokens@2.0.2: 2385 2184 resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} 2386 2185 2387 - split2@4.2.0: 2388 - resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} 2389 - engines: {node: '>= 10.x'} 2186 + stack-trace@1.0.0-pre2: 2187 + resolution: {integrity: sha512-2ztBJRek8IVofG9DBJqdy2N5kulaacX30Nz7xmkYF6ale9WBVmIy6mFBchvGX7Vx/MyjBhx+Rcxqrj+dbOnQ6A==} 2188 + engines: {node: '>=16'} 2390 2189 2391 2190 statuses@2.0.1: 2392 2191 resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} ··· 2404 2203 resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} 2405 2204 engines: {node: '>=18'} 2406 2205 2407 - string_decoder@1.3.0: 2408 - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} 2409 - 2410 2206 stringify-entities@4.0.4: 2411 2207 resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} 2412 2208 ··· 2422 2218 resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 2423 2219 engines: {node: '>=8'} 2424 2220 2425 - svelte2tsx@0.7.44: 2426 - resolution: {integrity: sha512-opuH+bCboss0/ncxnfAO+qt0IAprxc8OqwuC7otafWeO5CHjJ6UAAwvQmu/+xjpCSarX8pQKydXQuoJmbCDcTg==} 2427 - peerDependencies: 2428 - svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0 2429 - typescript: ^4.9.4 || ^5.0.0 2430 - 2431 - svelte@5.39.6: 2432 - resolution: {integrity: sha512-bOJXmuwLNaoqPCTWO8mPu/fwxI5peGE5Efe7oo6Cakpz/G60vsnVF6mxbGODaxMUFUKEnjm6XOwHEqOht6cbvw==} 2433 - engines: {node: '>=18'} 2434 - 2435 - thread-stream@2.7.0: 2436 - resolution: {integrity: sha512-qQiRWsU/wvNolI6tbbCKd9iKaTnCXsTwVxhhKM6nctPdujTyztjlbUkUTUymidWcMnZ5pWR0ej4a0tjsW021vw==} 2437 - 2438 2221 tiny-inflate@1.0.3: 2439 2222 resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} 2440 2223 ··· 2493 2276 resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} 2494 2277 engines: {node: '>=16'} 2495 2278 2496 - type-is@1.6.18: 2497 - resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} 2498 - engines: {node: '>= 0.6'} 2499 - 2500 2279 typescript@5.9.2: 2501 2280 resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==} 2502 2281 engines: {node: '>=14.17'} ··· 2575 2354 vite: 2576 2355 optional: true 2577 2356 2578 - unpipe@1.0.0: 2579 - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} 2580 - engines: {node: '>= 0.8'} 2581 - 2582 2357 unplugin-utils@0.3.0: 2583 2358 resolution: {integrity: sha512-JLoggz+PvLVMJo+jZt97hdIIIZ2yTzGgft9e9q8iMrC4ewufl62ekeW7mixBghonn2gVb/ICjyvlmOCUBnJLQg==} 2584 2359 engines: {node: '>=20.19.0'} ··· 2644 2419 optional: true 2645 2420 uploadthing: 2646 2421 optional: true 2422 + 2423 + update-browserslist-db@1.1.3: 2424 + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} 2425 + hasBin: true 2426 + peerDependencies: 2427 + browserslist: '>= 4.21.0' 2647 2428 2648 2429 util-deprecate@1.0.2: 2649 2430 resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 2650 2431 2651 - utils-merge@1.0.1: 2652 - resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} 2653 - engines: {node: '>= 0.4.0'} 2654 - 2655 - varint@6.0.0: 2656 - resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==} 2657 - 2658 - vary@1.1.2: 2659 - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} 2660 - engines: {node: '>= 0.8'} 2661 - 2662 2432 vfile-location@5.0.3: 2663 2433 resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} 2664 2434 ··· 2667 2437 2668 2438 vfile@6.0.3: 2669 2439 resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} 2440 + 2441 + vite-prerender-plugin@0.5.12: 2442 + resolution: {integrity: sha512-EiwhbMn+flg14EysbLTmZSzq8NGTxhytgK3bf4aGRF1evWLGwZiHiUJ1KZDvbxgKbMf2pG6fJWGEa3UZXOnR1g==} 2443 + peerDependencies: 2444 + vite: 5.x || 6.x || 7.x 2670 2445 2671 2446 vite@6.3.6: 2672 2447 resolution: {integrity: sha512-0msEVHJEScQbhkbVTb/4iHZdJ6SXp/AvxL2sjwYQFfBqleHtnCqv1J3sa9zbWz/6kW1m9Tfzn92vW+kZ1WV6QA==} ··· 2759 2534 xxhash-wasm@1.1.0: 2760 2535 resolution: {integrity: sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==} 2761 2536 2537 + yallist@3.1.1: 2538 + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} 2539 + 2762 2540 yargs-parser@21.1.1: 2763 2541 resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} 2764 2542 engines: {node: '>=12'} ··· 2777 2555 yoctocolors@2.1.2: 2778 2556 resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} 2779 2557 engines: {node: '>=18'} 2780 - 2781 - zimmerframe@1.1.4: 2782 - resolution: {integrity: sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==} 2783 2558 2784 2559 zod-to-json-schema@3.24.6: 2785 2560 resolution: {integrity: sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==} ··· 2935 2710 transitivePeerDependencies: 2936 2711 - supports-color 2937 2712 2938 - '@astrojs/prism@3.3.0': 2939 - dependencies: 2940 - prismjs: 1.30.0 2941 - 2942 - '@astrojs/svelte@7.2.0(@types/node@24.6.0)(astro@5.14.1(@types/node@24.6.0)(jiti@2.6.0)(rollup@4.52.3)(typescript@5.9.2))(jiti@2.6.0)(svelte@5.39.6)(typescript@5.9.2)': 2713 + '@astrojs/preact@4.1.1(@babel/core@7.28.4)(@types/node@24.6.0)(jiti@2.6.0)(preact@10.27.2)': 2943 2714 dependencies: 2944 - '@sveltejs/vite-plugin-svelte': 5.1.1(svelte@5.39.6)(vite@6.3.6(@types/node@24.6.0)(jiti@2.6.0)) 2945 - astro: 5.14.1(@types/node@24.6.0)(jiti@2.6.0)(rollup@4.52.3)(typescript@5.9.2) 2946 - svelte: 5.39.6 2947 - svelte2tsx: 0.7.44(svelte@5.39.6)(typescript@5.9.2) 2948 - typescript: 5.9.2 2715 + '@preact/preset-vite': 2.10.2(@babel/core@7.28.4)(preact@10.27.2)(vite@6.3.6(@types/node@24.6.0)(jiti@2.6.0)) 2716 + '@preact/signals': 2.3.2(preact@10.27.2) 2717 + preact: 10.27.2 2718 + preact-render-to-string: 6.6.2(preact@10.27.2) 2949 2719 vite: 6.3.6(@types/node@24.6.0)(jiti@2.6.0) 2950 2720 transitivePeerDependencies: 2721 + - '@babel/core' 2951 2722 - '@types/node' 2952 2723 - jiti 2953 2724 - less ··· 2960 2731 - terser 2961 2732 - tsx 2962 2733 - yaml 2734 + 2735 + '@astrojs/prism@3.3.0': 2736 + dependencies: 2737 + prismjs: 1.30.0 2963 2738 2964 2739 '@astrojs/telemetry@3.3.0': 2965 2740 dependencies: ··· 3038 2813 uint8arrays: 3.0.0 3039 2814 zod: 3.25.76 3040 2815 3041 - '@atproto/common@0.4.12': 3042 - dependencies: 3043 - '@atproto/common-web': 0.4.3 3044 - '@ipld/dag-cbor': 7.0.3 3045 - cbor-x: 1.6.0 3046 - iso-datestring-validator: 2.2.2 3047 - multiformats: 9.9.0 3048 - pino: 8.21.0 3049 - 3050 2816 '@atproto/crypto@0.4.4': 3051 2817 dependencies: 3052 2818 '@noble/curves': 1.9.7 ··· 3129 2895 '@atproto/jwk': 0.5.0 3130 2896 zod: 3.25.76 3131 2897 3132 - '@atproto/repo@0.8.10': 3133 - dependencies: 3134 - '@atproto/common': 0.4.12 3135 - '@atproto/common-web': 0.4.3 3136 - '@atproto/crypto': 0.4.4 3137 - '@atproto/lexicon': 0.5.1 3138 - '@ipld/dag-cbor': 7.0.3 3139 - multiformats: 9.9.0 3140 - uint8arrays: 3.0.0 3141 - varint: 6.0.0 3142 - zod: 3.25.76 3143 - 3144 - '@atproto/sync@0.1.35': 3145 - dependencies: 3146 - '@atproto/common': 0.4.12 3147 - '@atproto/identity': 0.4.9 3148 - '@atproto/lexicon': 0.5.1 3149 - '@atproto/repo': 0.8.10 3150 - '@atproto/syntax': 0.4.1 3151 - '@atproto/xrpc-server': 0.9.5 3152 - multiformats: 9.9.0 3153 - p-queue: 6.6.2 3154 - ws: 8.18.3 3155 - transitivePeerDependencies: 3156 - - bufferutil 3157 - - supports-color 3158 - - utf-8-validate 3159 - 3160 2898 '@atproto/syntax@0.4.1': {} 3161 2899 3162 - '@atproto/xrpc-server@0.9.5': 3163 - dependencies: 3164 - '@atproto/common': 0.4.12 3165 - '@atproto/crypto': 0.4.4 3166 - '@atproto/lexicon': 0.5.1 3167 - '@atproto/xrpc': 0.7.5 3168 - cbor-x: 1.6.0 3169 - express: 4.21.2 3170 - http-errors: 2.0.0 3171 - mime-types: 2.1.35 3172 - rate-limiter-flexible: 2.4.2 3173 - uint8arrays: 3.0.0 3174 - ws: 8.18.3 3175 - zod: 3.25.76 3176 - transitivePeerDependencies: 3177 - - bufferutil 3178 - - supports-color 3179 - - utf-8-validate 3180 - 3181 2900 '@atproto/xrpc@0.7.5': 3182 2901 dependencies: 3183 2902 '@atproto/lexicon': 0.5.1 ··· 3189 2908 js-tokens: 4.0.0 3190 2909 picocolors: 1.1.1 3191 2910 2911 + '@babel/compat-data@7.28.4': {} 2912 + 2913 + '@babel/core@7.28.4': 2914 + dependencies: 2915 + '@babel/code-frame': 7.27.1 2916 + '@babel/generator': 7.28.3 2917 + '@babel/helper-compilation-targets': 7.27.2 2918 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) 2919 + '@babel/helpers': 7.28.4 2920 + '@babel/parser': 7.28.4 2921 + '@babel/template': 7.27.2 2922 + '@babel/traverse': 7.28.4 2923 + '@babel/types': 7.28.4 2924 + '@jridgewell/remapping': 2.3.5 2925 + convert-source-map: 2.0.0 2926 + debug: 4.4.3 2927 + gensync: 1.0.0-beta.2 2928 + json5: 2.2.3 2929 + semver: 6.3.1 2930 + transitivePeerDependencies: 2931 + - supports-color 2932 + 3192 2933 '@babel/generator@7.28.3': 3193 2934 dependencies: 3194 2935 '@babel/parser': 7.28.4 ··· 3197 2938 '@jridgewell/trace-mapping': 0.3.31 3198 2939 jsesc: 3.1.0 3199 2940 2941 + '@babel/helper-annotate-as-pure@7.27.3': 2942 + dependencies: 2943 + '@babel/types': 7.28.4 2944 + 2945 + '@babel/helper-compilation-targets@7.27.2': 2946 + dependencies: 2947 + '@babel/compat-data': 7.28.4 2948 + '@babel/helper-validator-option': 7.27.1 2949 + browserslist: 4.26.3 2950 + lru-cache: 5.1.1 2951 + semver: 6.3.1 2952 + 2953 + '@babel/helper-globals@7.28.0': {} 2954 + 2955 + '@babel/helper-module-imports@7.27.1': 2956 + dependencies: 2957 + '@babel/traverse': 7.27.7 2958 + '@babel/types': 7.28.4 2959 + transitivePeerDependencies: 2960 + - supports-color 2961 + 2962 + '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.4)': 2963 + dependencies: 2964 + '@babel/core': 7.28.4 2965 + '@babel/helper-module-imports': 7.27.1 2966 + '@babel/helper-validator-identifier': 7.27.1 2967 + '@babel/traverse': 7.28.4 2968 + transitivePeerDependencies: 2969 + - supports-color 2970 + 2971 + '@babel/helper-plugin-utils@7.27.1': {} 2972 + 3200 2973 '@babel/helper-string-parser@7.27.1': {} 3201 2974 3202 2975 '@babel/helper-validator-identifier@7.27.1': {} 3203 2976 2977 + '@babel/helper-validator-option@7.27.1': {} 2978 + 2979 + '@babel/helpers@7.28.4': 2980 + dependencies: 2981 + '@babel/template': 7.27.2 2982 + '@babel/types': 7.28.4 2983 + 3204 2984 '@babel/parser@7.27.7': 3205 2985 dependencies: 3206 2986 '@babel/types': 7.28.4 ··· 3209 2989 dependencies: 3210 2990 '@babel/types': 7.28.4 3211 2991 2992 + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.4)': 2993 + dependencies: 2994 + '@babel/core': 7.28.4 2995 + '@babel/helper-plugin-utils': 7.27.1 2996 + 2997 + '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.28.4)': 2998 + dependencies: 2999 + '@babel/core': 7.28.4 3000 + '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.4) 3001 + transitivePeerDependencies: 3002 + - supports-color 3003 + 3004 + '@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.28.4)': 3005 + dependencies: 3006 + '@babel/core': 7.28.4 3007 + '@babel/helper-annotate-as-pure': 7.27.3 3008 + '@babel/helper-module-imports': 7.27.1 3009 + '@babel/helper-plugin-utils': 7.27.1 3010 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4) 3011 + '@babel/types': 7.28.4 3012 + transitivePeerDependencies: 3013 + - supports-color 3014 + 3212 3015 '@babel/template@7.27.2': 3213 3016 dependencies: 3214 3017 '@babel/code-frame': 7.27.1 ··· 3227 3030 transitivePeerDependencies: 3228 3031 - supports-color 3229 3032 3033 + '@babel/traverse@7.28.4': 3034 + dependencies: 3035 + '@babel/code-frame': 7.27.1 3036 + '@babel/generator': 7.28.3 3037 + '@babel/helper-globals': 7.28.0 3038 + '@babel/parser': 7.28.4 3039 + '@babel/template': 7.27.2 3040 + '@babel/types': 7.28.4 3041 + debug: 4.4.3 3042 + transitivePeerDependencies: 3043 + - supports-color 3044 + 3230 3045 '@babel/types@7.28.4': 3231 3046 dependencies: 3232 3047 '@babel/helper-string-parser': 7.27.1 ··· 3239 3054 fontkit: 2.0.4 3240 3055 transitivePeerDependencies: 3241 3056 - encoding 3242 - 3243 - '@cbor-extract/cbor-extract-darwin-arm64@2.2.0': 3244 - optional: true 3245 - 3246 - '@cbor-extract/cbor-extract-darwin-x64@2.2.0': 3247 - optional: true 3248 - 3249 - '@cbor-extract/cbor-extract-linux-arm64@2.2.0': 3250 - optional: true 3251 - 3252 - '@cbor-extract/cbor-extract-linux-arm@2.2.0': 3253 - optional: true 3254 - 3255 - '@cbor-extract/cbor-extract-linux-x64@2.2.0': 3256 - optional: true 3257 - 3258 - '@cbor-extract/cbor-extract-win32-x64@2.2.0': 3259 - optional: true 3260 3057 3261 3058 '@emnapi/runtime@1.5.0': 3262 3059 dependencies: ··· 3409 3206 - uploadthing 3410 3207 - utf-8-validate 3411 3208 3209 + '@iconify-json/lucide-lab@1.2.3': 3210 + dependencies: 3211 + '@iconify/types': 2.0.0 3212 + 3213 + '@iconify-json/lucide@1.2.68': 3214 + dependencies: 3215 + '@iconify/types': 2.0.0 3216 + 3412 3217 '@iconify/types@2.0.0': {} 3413 3218 3414 3219 '@iconify/utils@3.0.2': ··· 3513 3318 '@img/sharp-win32-x64@0.34.4': 3514 3319 optional: true 3515 3320 3516 - '@ipld/dag-cbor@7.0.3': 3517 - dependencies: 3518 - cborg: 1.10.2 3519 - multiformats: 9.9.0 3520 - 3521 3321 '@jridgewell/gen-mapping@0.3.13': 3522 3322 dependencies: 3523 3323 '@jridgewell/sourcemap-codec': 1.5.5 ··· 3536 3336 dependencies: 3537 3337 '@jridgewell/resolve-uri': 3.1.2 3538 3338 '@jridgewell/sourcemap-codec': 1.5.5 3339 + 3340 + '@jsr/slices__client@0.1.0-alpha.4': 3341 + dependencies: 3342 + '@jsr/slices__oauth': 0.6.0 3343 + 3344 + '@jsr/slices__oauth@0.6.0': {} 3539 3345 3540 3346 '@libsql/client@0.15.15': 3541 3347 dependencies: ··· 3599 3405 '@libsql/win32-x64-msvc@0.5.22': 3600 3406 optional: true 3601 3407 3602 - '@lucide/astro@0.544.0(astro@5.14.1(@types/node@24.6.0)(jiti@2.6.0)(rollup@4.52.3)(typescript@5.9.2))': 3603 - dependencies: 3604 - astro: 5.14.1(@types/node@24.6.0)(jiti@2.6.0)(rollup@4.52.3)(typescript@5.9.2) 3605 - 3606 3408 '@neon-rs/load@0.0.4': {} 3607 3409 3608 3410 '@noble/curves@1.9.7': ··· 3615 3417 3616 3418 '@polka/url@1.0.0-next.29': {} 3617 3419 3420 + '@preact/preset-vite@2.10.2(@babel/core@7.28.4)(preact@10.27.2)(vite@6.3.6(@types/node@24.6.0)(jiti@2.6.0))': 3421 + dependencies: 3422 + '@babel/core': 7.28.4 3423 + '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.4) 3424 + '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.28.4) 3425 + '@prefresh/vite': 2.4.10(preact@10.27.2)(vite@6.3.6(@types/node@24.6.0)(jiti@2.6.0)) 3426 + '@rollup/pluginutils': 4.2.1 3427 + babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.28.4) 3428 + debug: 4.4.3 3429 + picocolors: 1.1.1 3430 + vite: 6.3.6(@types/node@24.6.0)(jiti@2.6.0) 3431 + vite-prerender-plugin: 0.5.12(vite@6.3.6(@types/node@24.6.0)(jiti@2.6.0)) 3432 + transitivePeerDependencies: 3433 + - preact 3434 + - supports-color 3435 + 3436 + '@preact/signals-core@1.12.1': {} 3437 + 3438 + '@preact/signals@2.3.2(preact@10.27.2)': 3439 + dependencies: 3440 + '@preact/signals-core': 1.12.1 3441 + preact: 10.27.2 3442 + 3443 + '@prefresh/babel-plugin@0.5.2': {} 3444 + 3445 + '@prefresh/core@1.5.8(preact@10.27.2)': 3446 + dependencies: 3447 + preact: 10.27.2 3448 + 3449 + '@prefresh/utils@1.2.1': {} 3450 + 3451 + '@prefresh/vite@2.4.10(preact@10.27.2)(vite@6.3.6(@types/node@24.6.0)(jiti@2.6.0))': 3452 + dependencies: 3453 + '@babel/core': 7.28.4 3454 + '@prefresh/babel-plugin': 0.5.2 3455 + '@prefresh/core': 1.5.8(preact@10.27.2) 3456 + '@prefresh/utils': 1.2.1 3457 + '@rollup/pluginutils': 4.2.1 3458 + preact: 10.27.2 3459 + vite: 6.3.6(@types/node@24.6.0)(jiti@2.6.0) 3460 + transitivePeerDependencies: 3461 + - supports-color 3462 + 3618 3463 '@quansync/fs@0.1.5': 3619 3464 dependencies: 3620 3465 quansync: 0.2.11 3466 + 3467 + '@rollup/pluginutils@4.2.1': 3468 + dependencies: 3469 + estree-walker: 2.0.2 3470 + picomatch: 2.3.1 3621 3471 3622 3472 '@rollup/pluginutils@5.3.0(rollup@4.52.3)': 3623 3473 dependencies: ··· 3733 3583 3734 3584 '@sindresorhus/transliterate@2.0.0': {} 3735 3585 3736 - '@sveltejs/acorn-typescript@1.0.6(acorn@8.15.0)': 3737 - dependencies: 3738 - acorn: 8.15.0 3739 - 3740 - '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.39.6)(vite@6.3.6(@types/node@24.6.0)(jiti@2.6.0)))(svelte@5.39.6)(vite@6.3.6(@types/node@24.6.0)(jiti@2.6.0))': 3741 - dependencies: 3742 - '@sveltejs/vite-plugin-svelte': 5.1.1(svelte@5.39.6)(vite@6.3.6(@types/node@24.6.0)(jiti@2.6.0)) 3743 - debug: 4.4.3 3744 - svelte: 5.39.6 3745 - vite: 6.3.6(@types/node@24.6.0)(jiti@2.6.0) 3746 - transitivePeerDependencies: 3747 - - supports-color 3748 - 3749 - '@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.39.6)(vite@6.3.6(@types/node@24.6.0)(jiti@2.6.0))': 3750 - dependencies: 3751 - '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.39.6)(vite@6.3.6(@types/node@24.6.0)(jiti@2.6.0)))(svelte@5.39.6)(vite@6.3.6(@types/node@24.6.0)(jiti@2.6.0)) 3752 - debug: 4.4.3 3753 - deepmerge: 4.3.1 3754 - kleur: 4.1.5 3755 - magic-string: 0.30.19 3756 - svelte: 5.39.6 3757 - vite: 6.3.6(@types/node@24.6.0)(jiti@2.6.0) 3758 - vitefu: 1.1.1(vite@6.3.6(@types/node@24.6.0)(jiti@2.6.0)) 3759 - transitivePeerDependencies: 3760 - - supports-color 3761 - 3762 3586 '@swc/helpers@0.5.17': 3763 3587 dependencies: 3764 3588 tslib: 2.8.1 ··· 3959 3783 unplugin-utils: 0.3.0 3960 3784 vite: 6.3.6(@types/node@24.6.0)(jiti@2.6.0) 3961 3785 3962 - abort-controller@3.0.0: 3963 - dependencies: 3964 - event-target-shim: 5.0.1 3965 - 3966 - accepts@1.3.8: 3967 - dependencies: 3968 - mime-types: 2.1.35 3969 - negotiator: 0.6.3 3970 - 3971 3786 acorn@8.15.0: {} 3972 3787 3973 3788 ansi-align@3.0.1: ··· 3992 3807 argparse@2.0.1: {} 3993 3808 3994 3809 aria-query@5.3.2: {} 3995 - 3996 - array-flatten@1.1.1: {} 3997 3810 3998 3811 array-iterate@2.0.1: {} 3999 3812 ··· 4104 3917 - uploadthing 4105 3918 - yaml 4106 3919 4107 - async-function@1.0.0: {} 4108 - 4109 - async-generator-function@1.0.0: {} 4110 - 4111 - atomic-sleep@1.0.0: {} 4112 - 4113 3920 await-lock@2.2.2: {} 4114 3921 4115 3922 axobject-query@4.1.0: {} 3923 + 3924 + babel-plugin-transform-hook-names@1.0.2(@babel/core@7.28.4): 3925 + dependencies: 3926 + '@babel/core': 7.28.4 4116 3927 4117 3928 bail@2.0.2: {} 4118 3929 ··· 4122 3933 4123 3934 base64-js@1.5.1: {} 4124 3935 3936 + baseline-browser-mapping@2.8.12: {} 3937 + 4125 3938 binary-extensions@2.3.0: {} 4126 3939 4127 3940 blob-to-buffer@1.2.9: {} 4128 3941 4129 - body-parser@1.20.3: 4130 - dependencies: 4131 - bytes: 3.1.2 4132 - content-type: 1.0.5 4133 - debug: 2.6.9 4134 - depd: 2.0.0 4135 - destroy: 1.2.0 4136 - http-errors: 2.0.0 4137 - iconv-lite: 0.4.24 4138 - on-finished: 2.4.1 4139 - qs: 6.13.0 4140 - raw-body: 2.5.2 4141 - type-is: 1.6.18 4142 - unpipe: 1.0.0 4143 - transitivePeerDependencies: 4144 - - supports-color 3942 + boolbase@1.0.0: {} 4145 3943 4146 3944 boxen@8.0.1: 4147 3945 dependencies: ··· 4166 3964 dependencies: 4167 3965 base64-js: 1.5.1 4168 3966 4169 - buffer@6.0.3: 3967 + browserslist@4.26.3: 4170 3968 dependencies: 4171 - base64-js: 1.5.1 4172 - ieee754: 1.2.1 4173 - 4174 - bytes@3.1.2: {} 3969 + baseline-browser-mapping: 2.8.12 3970 + caniuse-lite: 1.0.30001748 3971 + electron-to-chromium: 1.5.230 3972 + node-releases: 2.0.23 3973 + update-browserslist-db: 1.1.3(browserslist@4.26.3) 4175 3974 4176 3975 cac@6.7.14: {} 4177 3976 4178 - call-bind-apply-helpers@1.0.2: 4179 - dependencies: 4180 - es-errors: 1.3.0 4181 - function-bind: 1.1.2 4182 - 4183 - call-bound@1.0.4: 4184 - dependencies: 4185 - call-bind-apply-helpers: 1.0.2 4186 - get-intrinsic: 1.3.1 4187 - 4188 3977 camelcase@8.0.0: {} 4189 3978 4190 - cbor-extract@2.2.0: 4191 - dependencies: 4192 - node-gyp-build-optional-packages: 5.1.1 4193 - optionalDependencies: 4194 - '@cbor-extract/cbor-extract-darwin-arm64': 2.2.0 4195 - '@cbor-extract/cbor-extract-darwin-x64': 2.2.0 4196 - '@cbor-extract/cbor-extract-linux-arm': 2.2.0 4197 - '@cbor-extract/cbor-extract-linux-arm64': 2.2.0 4198 - '@cbor-extract/cbor-extract-linux-x64': 2.2.0 4199 - '@cbor-extract/cbor-extract-win32-x64': 2.2.0 4200 - optional: true 4201 - 4202 - cbor-x@1.6.0: 4203 - optionalDependencies: 4204 - cbor-extract: 2.2.0 4205 - 4206 - cborg@1.10.2: {} 3979 + caniuse-lite@1.0.30001748: {} 4207 3980 4208 3981 ccount@2.0.1: {} 4209 3982 ··· 4266 4039 4267 4040 consola@3.4.2: {} 4268 4041 4269 - content-disposition@0.5.4: 4270 - dependencies: 4271 - safe-buffer: 5.2.1 4272 - 4273 - content-type@1.0.5: {} 4042 + convert-source-map@2.0.0: {} 4274 4043 4275 4044 cookie-es@1.2.2: {} 4276 - 4277 - cookie-signature@1.0.6: {} 4278 - 4279 - cookie@0.7.1: {} 4280 4045 4281 4046 cookie@1.0.2: {} 4282 4047 ··· 4290 4055 dependencies: 4291 4056 uncrypto: 0.1.3 4292 4057 4058 + css-select@5.2.2: 4059 + dependencies: 4060 + boolbase: 1.0.0 4061 + css-what: 6.2.2 4062 + domhandler: 5.0.3 4063 + domutils: 3.2.2 4064 + nth-check: 2.1.1 4065 + 4293 4066 css-tree@3.1.0: 4294 4067 dependencies: 4295 4068 mdn-data: 2.12.2 4296 4069 source-map-js: 1.2.1 4297 4070 4071 + css-what@6.2.2: {} 4072 + 4298 4073 cssesc@3.0.0: {} 4299 4074 4300 4075 daisyui@5.1.25: {} 4301 4076 4302 4077 data-uri-to-buffer@4.0.1: {} 4303 4078 4304 - debug@2.6.9: 4305 - dependencies: 4306 - ms: 2.0.0 4307 - 4308 4079 debug@4.4.3: 4309 4080 dependencies: 4310 4081 ms: 2.1.3 ··· 4313 4084 dependencies: 4314 4085 character-entities: 2.0.2 4315 4086 4316 - dedent-js@1.0.1: {} 4317 - 4318 4087 deep-diff@1.0.2: {} 4319 - 4320 - deepmerge@4.3.1: {} 4321 4088 4322 4089 defu@6.1.4: {} 4323 4090 ··· 4326 4093 dequal@2.0.3: {} 4327 4094 4328 4095 destr@2.0.5: {} 4329 - 4330 - destroy@1.2.0: {} 4331 4096 4332 4097 detect-libc@2.0.2: {} 4333 4098 ··· 4350 4115 4351 4116 dlv@1.1.3: {} 4352 4117 4118 + dom-serializer@2.0.0: 4119 + dependencies: 4120 + domelementtype: 2.3.0 4121 + domhandler: 5.0.3 4122 + entities: 4.5.0 4123 + 4124 + domelementtype@2.3.0: {} 4125 + 4126 + domhandler@5.0.3: 4127 + dependencies: 4128 + domelementtype: 2.3.0 4129 + 4130 + domutils@3.2.2: 4131 + dependencies: 4132 + dom-serializer: 2.0.0 4133 + domelementtype: 2.3.0 4134 + domhandler: 5.0.3 4135 + 4353 4136 drizzle-orm@0.42.0(@libsql/client@0.15.15): 4354 4137 optionalDependencies: 4355 4138 '@libsql/client': 0.15.15 4356 4139 4357 4140 dset@3.1.4: {} 4358 4141 4359 - dunder-proto@1.0.1: 4360 - dependencies: 4361 - call-bind-apply-helpers: 1.0.2 4362 - es-errors: 1.3.0 4363 - gopd: 1.2.0 4364 - 4365 4142 duplexer@0.1.2: {} 4366 4143 4367 4144 ee-first@1.1.1: {} 4368 4145 4146 + electron-to-chromium@1.5.230: {} 4147 + 4369 4148 emoji-regex@10.5.0: {} 4370 4149 4371 4150 emoji-regex@8.0.0: {} 4372 4151 4373 - encodeurl@1.0.2: {} 4374 - 4375 4152 encodeurl@2.0.0: {} 4153 + 4154 + entities@4.5.0: {} 4376 4155 4377 4156 entities@6.0.1: {} 4378 4157 4379 - es-define-property@1.0.1: {} 4380 - 4381 - es-errors@1.3.0: {} 4382 - 4383 4158 es-module-lexer@1.7.0: {} 4384 - 4385 - es-object-atoms@1.1.1: 4386 - dependencies: 4387 - es-errors: 1.3.0 4388 4159 4389 4160 esbuild@0.25.10: 4390 4161 optionalDependencies: ··· 4415 4186 '@esbuild/win32-ia32': 0.25.10 4416 4187 '@esbuild/win32-x64': 0.25.10 4417 4188 4189 + escalade@3.2.0: {} 4190 + 4418 4191 escape-html@1.0.3: {} 4419 4192 4420 4193 escape-string-regexp@5.0.0: {} 4421 4194 4422 - esm-env@1.2.2: {} 4423 - 4424 - esrap@2.1.0: 4425 - dependencies: 4426 - '@jridgewell/sourcemap-codec': 1.5.5 4427 - 4428 4195 estree-walker@2.0.2: {} 4429 4196 4430 4197 estree-walker@3.0.3: ··· 4433 4200 4434 4201 etag@1.8.1: {} 4435 4202 4436 - event-target-shim@5.0.1: {} 4437 - 4438 - eventemitter3@4.0.7: {} 4439 - 4440 4203 eventemitter3@5.0.1: {} 4441 4204 4442 - events@3.3.0: {} 4443 - 4444 - express@4.21.2: 4445 - dependencies: 4446 - accepts: 1.3.8 4447 - array-flatten: 1.1.1 4448 - body-parser: 1.20.3 4449 - content-disposition: 0.5.4 4450 - content-type: 1.0.5 4451 - cookie: 0.7.1 4452 - cookie-signature: 1.0.6 4453 - debug: 2.6.9 4454 - depd: 2.0.0 4455 - encodeurl: 2.0.0 4456 - escape-html: 1.0.3 4457 - etag: 1.8.1 4458 - finalhandler: 1.3.1 4459 - fresh: 0.5.2 4460 - http-errors: 2.0.0 4461 - merge-descriptors: 1.0.3 4462 - methods: 1.1.2 4463 - on-finished: 2.4.1 4464 - parseurl: 1.3.3 4465 - path-to-regexp: 0.1.12 4466 - proxy-addr: 2.0.7 4467 - qs: 6.13.0 4468 - range-parser: 1.2.1 4469 - safe-buffer: 5.2.1 4470 - send: 0.19.0 4471 - serve-static: 1.16.2 4472 - setprototypeof: 1.2.0 4473 - statuses: 2.0.1 4474 - type-is: 1.6.18 4475 - utils-merge: 1.0.1 4476 - vary: 1.1.2 4477 - transitivePeerDependencies: 4478 - - supports-color 4479 - 4480 4205 exsolve@1.0.7: {} 4481 4206 4482 4207 extend@3.0.2: {} 4483 4208 4484 4209 fast-deep-equal@3.1.3: {} 4485 - 4486 - fast-redact@3.5.0: {} 4487 4210 4488 4211 fdir@6.5.0(picomatch@4.0.3): 4489 4212 optionalDependencies: ··· 4497 4220 fill-range@7.1.1: 4498 4221 dependencies: 4499 4222 to-regex-range: 5.0.1 4500 - 4501 - finalhandler@1.3.1: 4502 - dependencies: 4503 - debug: 2.6.9 4504 - encodeurl: 2.0.0 4505 - escape-html: 1.0.3 4506 - on-finished: 2.4.1 4507 - parseurl: 1.3.3 4508 - statuses: 2.0.1 4509 - unpipe: 1.0.0 4510 - transitivePeerDependencies: 4511 - - supports-color 4512 4223 4513 4224 flattie@1.1.1: {} 4514 4225 ··· 4533 4244 dependencies: 4534 4245 fetch-blob: 3.2.0 4535 4246 4536 - forwarded@0.2.0: {} 4537 - 4538 - fresh@0.5.2: {} 4539 - 4540 4247 fresh@2.0.0: {} 4541 4248 4542 4249 fsevents@2.3.3: 4543 4250 optional: true 4544 4251 4545 - function-bind@1.1.2: {} 4546 - 4547 - generator-function@2.0.0: {} 4252 + gensync@1.0.0-beta.2: {} 4548 4253 4549 4254 get-east-asian-width@1.4.0: {} 4550 4255 4551 - get-intrinsic@1.3.1: 4552 - dependencies: 4553 - async-function: 1.0.0 4554 - async-generator-function: 1.0.0 4555 - call-bind-apply-helpers: 1.0.2 4556 - es-define-property: 1.0.1 4557 - es-errors: 1.3.0 4558 - es-object-atoms: 1.1.1 4559 - function-bind: 1.1.2 4560 - generator-function: 2.0.0 4561 - get-proto: 1.0.1 4562 - gopd: 1.2.0 4563 - has-symbols: 1.1.0 4564 - hasown: 2.0.2 4565 - math-intrinsics: 1.1.0 4566 - 4567 - get-proto@1.0.1: 4568 - dependencies: 4569 - dunder-proto: 1.0.1 4570 - es-object-atoms: 1.1.1 4571 - 4572 4256 github-slugger@2.0.0: {} 4573 4257 4574 4258 glob-parent@5.1.2: ··· 4579 4263 4580 4264 globals@15.15.0: {} 4581 4265 4582 - gopd@1.2.0: {} 4583 - 4584 4266 graphemer@1.4.0: {} 4585 4267 4586 4268 gzip-size@6.0.0: ··· 4600 4282 uncrypto: 0.1.3 4601 4283 4602 4284 has-flag@4.0.0: {} 4603 - 4604 - has-symbols@1.1.0: {} 4605 - 4606 - hasown@2.0.2: 4607 - dependencies: 4608 - function-bind: 1.1.2 4609 4285 4610 4286 hast-util-from-html@2.0.3: 4611 4287 dependencies: ··· 4694 4370 property-information: 7.1.0 4695 4371 space-separated-tokens: 2.0.2 4696 4372 4373 + he@1.2.0: {} 4374 + 4697 4375 html-escaper@3.0.3: {} 4698 4376 4699 4377 html-void-elements@3.0.0: {} ··· 4708 4386 statuses: 2.0.1 4709 4387 toidentifier: 1.0.1 4710 4388 4711 - iconv-lite@0.4.24: 4712 - dependencies: 4713 - safer-buffer: 2.1.2 4714 - 4715 - ieee754@1.2.1: {} 4716 - 4717 4389 import-meta-resolve@4.2.0: {} 4718 4390 4719 4391 inherits@2.0.4: {} 4720 - 4721 - ipaddr.js@1.9.1: {} 4722 4392 4723 4393 ipaddr.js@2.2.0: {} 4724 4394 ··· 4746 4416 4747 4417 is-plain-obj@4.1.0: {} 4748 4418 4749 - is-reference@3.0.3: 4750 - dependencies: 4751 - '@types/estree': 1.0.8 4752 - 4753 4419 is-wsl@3.1.0: 4754 4420 dependencies: 4755 4421 is-inside-container: 1.0.0 ··· 4769 4435 argparse: 2.0.1 4770 4436 4771 4437 jsesc@3.1.0: {} 4438 + 4439 + json5@2.2.3: {} 4772 4440 4773 4441 kleur@3.0.3: {} 4774 4442 ··· 4797 4465 pkg-types: 2.3.0 4798 4466 quansync: 0.2.11 4799 4467 4800 - locate-character@3.0.0: {} 4801 - 4802 4468 longest-streak@3.1.0: {} 4803 4469 4804 4470 lru-cache@10.4.3: {} 4471 + 4472 + lru-cache@5.1.1: 4473 + dependencies: 4474 + yallist: 3.1.1 4805 4475 4806 4476 magic-string@0.30.19: 4807 4477 dependencies: ··· 4815 4485 4816 4486 markdown-table@3.0.4: {} 4817 4487 4818 - math-intrinsics@1.1.0: {} 4819 - 4820 4488 mdast-util-definitions@6.0.0: 4821 4489 dependencies: 4822 4490 '@types/mdast': 4.0.4 ··· 4938 4606 '@types/mdast': 4.0.4 4939 4607 4940 4608 mdn-data@2.12.2: {} 4941 - 4942 - media-typer@0.3.0: {} 4943 - 4944 - merge-descriptors@1.0.3: {} 4945 - 4946 - methods@1.1.2: {} 4947 4609 4948 4610 micromark-core-commonmark@2.0.3: 4949 4611 dependencies: ··· 5136 4798 transitivePeerDependencies: 5137 4799 - supports-color 5138 4800 5139 - mime-db@1.52.0: {} 5140 - 5141 4801 mime-db@1.54.0: {} 5142 4802 5143 - mime-types@2.1.35: 5144 - dependencies: 5145 - mime-db: 1.52.0 5146 - 5147 4803 mime-types@3.0.1: 5148 4804 dependencies: 5149 4805 mime-db: 1.54.0 5150 - 5151 - mime@1.6.0: {} 5152 4806 5153 4807 minimatch@9.0.5: 5154 4808 dependencies: ··· 5163 4817 5164 4818 mrmime@2.0.1: {} 5165 4819 5166 - ms@2.0.0: {} 5167 - 5168 4820 ms@2.1.3: {} 5169 4821 5170 4822 multiformats@9.9.0: {} ··· 5172 4824 nanoid@3.3.11: {} 5173 4825 5174 4826 nanoid@5.1.6: {} 5175 - 5176 - negotiator@0.6.3: {} 5177 4827 5178 4828 neotraverse@0.6.18: {} 5179 4829 ··· 5195 4845 fetch-blob: 3.2.0 5196 4846 formdata-polyfill: 4.0.10 5197 4847 5198 - node-gyp-build-optional-packages@5.1.1: 4848 + node-html-parser@6.1.13: 5199 4849 dependencies: 5200 - detect-libc: 2.1.1 5201 - optional: true 4850 + css-select: 5.2.2 4851 + he: 1.2.0 5202 4852 5203 4853 node-mock-http@1.0.3: {} 5204 4854 4855 + node-releases@2.0.23: {} 4856 + 5205 4857 normalize-path@3.0.0: {} 5206 4858 5207 - object-inspect@1.13.4: {} 4859 + nth-check@2.1.1: 4860 + dependencies: 4861 + boolbase: 1.0.0 5208 4862 5209 4863 ofetch@1.4.1: 5210 4864 dependencies: ··· 5213 4867 ufo: 1.6.1 5214 4868 5215 4869 ohash@2.0.11: {} 5216 - 5217 - on-exit-leak-free@2.1.2: {} 5218 4870 5219 4871 on-finished@2.4.1: 5220 4872 dependencies: ··· 5228 4880 regex: 6.0.1 5229 4881 regex-recursion: 6.0.2 5230 4882 5231 - p-finally@1.0.0: {} 5232 - 5233 4883 p-limit@6.2.0: 5234 4884 dependencies: 5235 4885 yocto-queue: 1.2.1 5236 - 5237 - p-queue@6.6.2: 5238 - dependencies: 5239 - eventemitter3: 4.0.7 5240 - p-timeout: 3.2.0 5241 4886 5242 4887 p-queue@8.1.1: 5243 4888 dependencies: 5244 4889 eventemitter3: 5.0.1 5245 4890 p-timeout: 6.1.4 5246 4891 5247 - p-timeout@3.2.0: 5248 - dependencies: 5249 - p-finally: 1.0.0 5250 - 5251 4892 p-timeout@6.1.4: {} 5252 4893 5253 4894 package-manager-detector@1.3.0: {} ··· 5266 4907 parse5@7.3.0: 5267 4908 dependencies: 5268 4909 entities: 6.0.1 5269 - 5270 - parseurl@1.3.3: {} 5271 4910 5272 4911 path-browserify@1.0.1: {} 5273 4912 5274 - path-to-regexp@0.1.12: {} 5275 - 5276 4913 pathe@1.1.2: {} 5277 4914 5278 4915 pathe@2.0.3: {} ··· 5285 4922 5286 4923 picomatch@4.0.3: {} 5287 4924 5288 - pino-abstract-transport@1.2.0: 5289 - dependencies: 5290 - readable-stream: 4.7.0 5291 - split2: 4.2.0 5292 - 5293 - pino-std-serializers@6.2.2: {} 5294 - 5295 - pino@8.21.0: 5296 - dependencies: 5297 - atomic-sleep: 1.0.0 5298 - fast-redact: 3.5.0 5299 - on-exit-leak-free: 2.1.2 5300 - pino-abstract-transport: 1.2.0 5301 - pino-std-serializers: 6.2.2 5302 - process-warning: 3.0.0 5303 - quick-format-unescaped: 4.0.4 5304 - real-require: 0.2.0 5305 - safe-stable-stringify: 2.5.0 5306 - sonic-boom: 3.8.1 5307 - thread-stream: 2.7.0 5308 - 5309 4925 pkg-types@1.3.1: 5310 4926 dependencies: 5311 4927 confbox: 0.1.8 ··· 5340 4956 picocolors: 1.1.1 5341 4957 source-map-js: 1.2.1 5342 4958 5343 - prettier@3.6.2: {} 4959 + preact-render-to-string@6.6.2(preact@10.27.2): 4960 + dependencies: 4961 + preact: 10.27.2 5344 4962 5345 - prismjs@1.30.0: {} 4963 + preact@10.27.2: {} 5346 4964 5347 - process-warning@3.0.0: {} 4965 + prettier@3.6.2: {} 5348 4966 5349 - process@0.11.10: {} 4967 + prismjs@1.30.0: {} 5350 4968 5351 4969 promise-limit@2.7.0: {} 5352 4970 ··· 5359 4977 5360 4978 property-information@7.1.0: {} 5361 4979 5362 - proxy-addr@2.0.7: 5363 - dependencies: 5364 - forwarded: 0.2.0 5365 - ipaddr.js: 1.9.1 5366 - 5367 - qs@6.13.0: 5368 - dependencies: 5369 - side-channel: 1.1.0 5370 - 5371 4980 quansync@0.2.11: {} 5372 - 5373 - quick-format-unescaped@4.0.4: {} 5374 4981 5375 4982 radix3@1.1.2: {} 5376 4983 5377 4984 range-parser@1.2.1: {} 5378 4985 5379 - rate-limiter-flexible@2.4.2: {} 5380 - 5381 - raw-body@2.5.2: 5382 - dependencies: 5383 - bytes: 3.1.2 5384 - http-errors: 2.0.0 5385 - iconv-lite: 0.4.24 5386 - unpipe: 1.0.0 5387 - 5388 - readable-stream@4.7.0: 5389 - dependencies: 5390 - abort-controller: 3.0.0 5391 - buffer: 6.0.3 5392 - events: 3.3.0 5393 - process: 0.11.10 5394 - string_decoder: 1.3.0 5395 - 5396 4986 readdirp@3.6.0: 5397 4987 dependencies: 5398 4988 picomatch: 2.3.1 5399 4989 5400 4990 readdirp@4.1.2: {} 5401 - 5402 - real-require@0.2.0: {} 5403 4991 5404 4992 regex-recursion@6.0.2: 5405 4993 dependencies: ··· 5532 5120 '@rollup/rollup-win32-x64-msvc': 4.52.3 5533 5121 fsevents: 2.3.3 5534 5122 5535 - safe-buffer@5.2.1: {} 5536 - 5537 - safe-stable-stringify@2.5.0: {} 5538 - 5539 - safer-buffer@2.1.2: {} 5540 - 5541 - scule@1.3.0: {} 5123 + semver@6.3.1: {} 5542 5124 5543 5125 semver@7.7.2: {} 5544 5126 5545 - send@0.19.0: 5546 - dependencies: 5547 - debug: 2.6.9 5548 - depd: 2.0.0 5549 - destroy: 1.2.0 5550 - encodeurl: 1.0.2 5551 - escape-html: 1.0.3 5552 - etag: 1.8.1 5553 - fresh: 0.5.2 5554 - http-errors: 2.0.0 5555 - mime: 1.6.0 5556 - ms: 2.1.3 5557 - on-finished: 2.4.1 5558 - range-parser: 1.2.1 5559 - statuses: 2.0.1 5560 - transitivePeerDependencies: 5561 - - supports-color 5562 - 5563 5127 send@1.2.0: 5564 5128 dependencies: 5565 5129 debug: 4.4.3 ··· 5573 5137 on-finished: 2.4.1 5574 5138 range-parser: 1.2.1 5575 5139 statuses: 2.0.2 5576 - transitivePeerDependencies: 5577 - - supports-color 5578 - 5579 - serve-static@1.16.2: 5580 - dependencies: 5581 - encodeurl: 2.0.0 5582 - escape-html: 1.0.3 5583 - parseurl: 1.3.3 5584 - send: 0.19.0 5585 5140 transitivePeerDependencies: 5586 5141 - supports-color 5587 5142 ··· 5630 5185 '@shikijs/vscode-textmate': 10.0.2 5631 5186 '@types/hast': 3.0.4 5632 5187 5633 - side-channel-list@1.0.0: 5634 - dependencies: 5635 - es-errors: 1.3.0 5636 - object-inspect: 1.13.4 5637 - 5638 - side-channel-map@1.0.1: 5639 - dependencies: 5640 - call-bound: 1.0.4 5641 - es-errors: 1.3.0 5642 - get-intrinsic: 1.3.1 5643 - object-inspect: 1.13.4 5644 - 5645 - side-channel-weakmap@1.0.2: 5646 - dependencies: 5647 - call-bound: 1.0.4 5648 - es-errors: 1.3.0 5649 - get-intrinsic: 1.3.1 5650 - object-inspect: 1.13.4 5651 - side-channel-map: 1.0.1 5652 - 5653 - side-channel@1.1.0: 5188 + simple-code-frame@1.3.0: 5654 5189 dependencies: 5655 - es-errors: 1.3.0 5656 - object-inspect: 1.13.4 5657 - side-channel-list: 1.0.0 5658 - side-channel-map: 1.0.1 5659 - side-channel-weakmap: 1.0.2 5190 + kolorist: 1.8.0 5660 5191 5661 5192 sirv@3.0.2: 5662 5193 dependencies: ··· 5668 5199 5669 5200 smol-toml@1.4.2: {} 5670 5201 5671 - sonic-boom@3.8.1: 5672 - dependencies: 5673 - atomic-sleep: 1.0.0 5202 + source-map-js@1.2.1: {} 5674 5203 5675 - source-map-js@1.2.1: {} 5204 + source-map@0.7.6: {} 5676 5205 5677 5206 space-separated-tokens@2.0.2: {} 5678 5207 5679 - split2@4.2.0: {} 5208 + stack-trace@1.0.0-pre2: {} 5680 5209 5681 5210 statuses@2.0.1: {} 5682 5211 ··· 5694 5223 get-east-asian-width: 1.4.0 5695 5224 strip-ansi: 7.1.2 5696 5225 5697 - string_decoder@1.3.0: 5698 - dependencies: 5699 - safe-buffer: 5.2.1 5700 - 5701 5226 stringify-entities@4.0.4: 5702 5227 dependencies: 5703 5228 character-entities-html4: 2.1.0 ··· 5715 5240 dependencies: 5716 5241 has-flag: 4.0.0 5717 5242 5718 - svelte2tsx@0.7.44(svelte@5.39.6)(typescript@5.9.2): 5719 - dependencies: 5720 - dedent-js: 1.0.1 5721 - scule: 1.3.0 5722 - svelte: 5.39.6 5723 - typescript: 5.9.2 5724 - 5725 - svelte@5.39.6: 5726 - dependencies: 5727 - '@jridgewell/remapping': 2.3.5 5728 - '@jridgewell/sourcemap-codec': 1.5.5 5729 - '@sveltejs/acorn-typescript': 1.0.6(acorn@8.15.0) 5730 - '@types/estree': 1.0.8 5731 - acorn: 8.15.0 5732 - aria-query: 5.3.2 5733 - axobject-query: 4.1.0 5734 - clsx: 2.1.1 5735 - esm-env: 1.2.2 5736 - esrap: 2.1.0 5737 - is-reference: 3.0.3 5738 - locate-character: 3.0.0 5739 - magic-string: 0.30.19 5740 - zimmerframe: 1.1.4 5741 - 5742 - thread-stream@2.7.0: 5743 - dependencies: 5744 - real-require: 0.2.0 5745 - 5746 5243 tiny-inflate@1.0.3: {} 5747 5244 5748 5245 tinyexec@0.3.2: {} ··· 5782 5279 tslib@2.8.1: {} 5783 5280 5784 5281 type-fest@4.41.0: {} 5785 - 5786 - type-is@1.6.18: 5787 - dependencies: 5788 - media-typer: 0.3.0 5789 - mime-types: 2.1.35 5790 5282 5791 5283 typescript@5.9.2: {} 5792 5284 ··· 5906 5398 - postcss 5907 5399 - supports-color 5908 5400 5909 - unpipe@1.0.0: {} 5910 - 5911 5401 unplugin-utils@0.3.0: 5912 5402 dependencies: 5913 5403 pathe: 2.0.3 ··· 5924 5414 ofetch: 1.4.1 5925 5415 ufo: 1.6.1 5926 5416 5417 + update-browserslist-db@1.1.3(browserslist@4.26.3): 5418 + dependencies: 5419 + browserslist: 4.26.3 5420 + escalade: 3.2.0 5421 + picocolors: 1.1.1 5422 + 5927 5423 util-deprecate@1.0.2: {} 5928 - 5929 - utils-merge@1.0.1: {} 5930 - 5931 - varint@6.0.0: {} 5932 - 5933 - vary@1.1.2: {} 5934 5424 5935 5425 vfile-location@5.0.3: 5936 5426 dependencies: ··· 5946 5436 dependencies: 5947 5437 '@types/unist': 3.0.3 5948 5438 vfile-message: 4.0.3 5439 + 5440 + vite-prerender-plugin@0.5.12(vite@6.3.6(@types/node@24.6.0)(jiti@2.6.0)): 5441 + dependencies: 5442 + kolorist: 1.8.0 5443 + magic-string: 0.30.19 5444 + node-html-parser: 6.1.13 5445 + simple-code-frame: 1.3.0 5446 + source-map: 0.7.6 5447 + stack-trace: 1.0.0-pre2 5448 + vite: 6.3.6(@types/node@24.6.0)(jiti@2.6.0) 5949 5449 5950 5450 vite@6.3.6(@types/node@24.6.0)(jiti@2.6.0): 5951 5451 dependencies: ··· 5993 5493 5994 5494 xxhash-wasm@1.1.0: {} 5995 5495 5496 + yallist@3.1.1: {} 5497 + 5996 5498 yargs-parser@21.1.1: {} 5997 5499 5998 5500 yesno@0.4.0: {} ··· 6004 5506 yoctocolors: 2.1.2 6005 5507 6006 5508 yoctocolors@2.1.2: {} 6007 - 6008 - zimmerframe@1.1.4: {} 6009 5509 6010 5510 zod-to-json-schema@3.24.6(zod@3.25.76): 6011 5511 dependencies:
+137 -12
src/actions/chapters.ts
··· 1 - import { addChapter } from "@/lib/db"; 1 + import { getAgent } from "@/lib/atproto"; 2 + import { AtUri } from "@atproto/api"; 3 + import { TID } from "@atproto/common-web"; 2 4 import { ActionError, defineAction } from "astro:actions" 3 - import { db, eq, Works } from "astro:db"; 5 + import { Chapters, db, eq, Works } from "astro:db"; 4 6 import { z } from "astro:schema" 5 7 6 8 const chapterSchema = z.object({ 9 + uri: z.string(), // this is in case someone wants to add a new post 7 10 title: z.string(), 8 11 notes: z.string().optional(), 9 12 content: z.string(), 10 - publish: z.boolean(), 11 13 }); 12 14 13 15 export const chaptersActions = { 14 16 addChapter: defineAction({ 15 17 accept: "form", 16 - input: chapterSchema, 17 - handler: async (input, context) => { 18 + input: chapterSchema.extend({ 19 + publish: z.boolean({ coerce: true }), 20 + }), 21 + handler: async ({ uri, title, content, notes, publish }, context) => { 22 + const loggedInUser = context.locals.loggedInUser; 23 + if (!loggedInUser) { 24 + throw new ActionError({ 25 + code: "UNAUTHORIZED", 26 + message: "You're not logged in!", 27 + }); 28 + } 29 + 18 30 const workSlug = context.params["workId"]; 19 31 if (!workSlug) { 20 32 throw new ActionError({ ··· 23 35 }); 24 36 } 25 37 26 - const [work] = await db.select({ id: Works.id }) 38 + const [work] = await db.select({ id: Works.id, uri: Works.uri }) 27 39 .from(Works) 28 40 .where(eq(Works.slug, workSlug)) 29 41 .limit(1); ··· 34 46 code: "NOT_FOUND", 35 47 }); 36 48 } 49 + 50 + if (uri) { 51 + const { rkey, host, collection } = new AtUri(uri); 52 + // start an import process here 53 + const agent = await getAgent(context.locals); 54 + if (!agent) { 55 + console.error("Agent not found!"); 56 + throw new ActionError({ 57 + code: "INTERNAL_SERVER_ERROR", 58 + message: "Something went wrong when connecting to your PDS.", 59 + }); 60 + } 61 + 62 + if (loggedInUser.did !== host) { 63 + throw new ActionError({ 64 + code: "UNAUTHORIZED", 65 + message: "You can only add posts or documents that you own!", 66 + }); 67 + } 68 + 69 + const record = await agent.com.atproto.repo.getRecord({ 70 + repo: loggedInUser.did, 71 + collection, 72 + rkey, 73 + }); 74 + } 75 + 76 + const createdAt = new Date(); 77 + let atUri; // this will be set once a chapter is published 78 + if (publish && !uri) { 79 + // fetch the work record then add 80 + if (!work.uri) { 81 + throw new ActionError({ 82 + code: "BAD_REQUEST", 83 + message: "Your work isn't public on atproto!", 84 + }); 85 + } 86 + 87 + const { rkey, host } = new AtUri(work.uri); 88 + const agent = await getAgent(context.locals); 89 + 90 + if (!agent) { 91 + console.error("Agent not found!"); 92 + throw new ActionError({ 93 + code: "INTERNAL_SERVER_ERROR", 94 + message: "Something went wrong when connecting to your PDS.", 95 + }); 96 + } 97 + 98 + if (loggedInUser.did !== host) { 99 + throw new ActionError({ 100 + code: "UNAUTHORIZED", 101 + message: "You can only add chapters to works that you own!", 102 + }); 103 + } 104 + 105 + const record = await agent.com.atproto.repo.getRecord({ 106 + repo: loggedInUser.did, 107 + collection: "fan.fics.work", 108 + rkey, 109 + }); 110 + 111 + if (!record.success) { 112 + throw new ActionError({ 113 + code: "NOT_FOUND", 114 + message: "That work does not exist!", 115 + }); 116 + } 117 + 118 + // new chapter record key 119 + const crkey = TID.nextStr(); 120 + const chapter = await agent.com.atproto.repo.createRecord({ 121 + repo: loggedInUser.did, 122 + collection: "moe.fanfics.chapter", 123 + rkey: crkey, 124 + record: { 125 + workAtUri: work.uri, 126 + title, 127 + content, 128 + notes, 129 + createdAt: createdAt.toISOString(), 130 + }, 131 + validate: false, 132 + }); 133 + 134 + if (!chapter.success) { 135 + throw new ActionError({ 136 + code: "BAD_REQUEST", 137 + message: "Failed to add a new chapter to the work", 138 + }); 139 + } 140 + 141 + atUri = chapter.data.uri; 142 + } 37 143 38 - await addChapter( 39 - work.id, 40 - input.title, 41 - input.content, 42 - input.notes, 43 - ); 144 + const result = await db.insert(Chapters).values({ 145 + workId: work.id, 146 + uri: atUri, 147 + title, 148 + content, 149 + notes, 150 + }).returning(); 151 + 152 + return result; 153 + }, 154 + }), 155 + editChapter: defineAction({ 156 + accept: "form", 157 + input: chapterSchema, 158 + handler: async ({ uri, title, content, notes }, context) => { 159 + 160 + } 161 + }), 162 + deleteChapter: defineAction({ 163 + accept: "form", 164 + handler: async (_, context) => { 165 + const workSlug = context.params["workId"]; 166 + if (!workSlug) { 167 + // there is no work or chapter! 168 + } 44 169 }, 45 170 }), 46 171 }
+2 -1
src/actions/works.ts
··· 2 2 import { TID } from "@atproto/common-web"; 3 3 import { getAgent } from "@/lib/atproto"; 4 4 import { ActionError, defineAction } from "astro:actions"; 5 - import { z } from "astro:schema"; 6 5 import { db, eq, and, Users, Works } from "astro:db"; 6 + import { z } from "astro:schema"; 7 7 import { customAlphabet } from "nanoid"; 8 8 import { addChapter } from "@/lib/db"; 9 9 ··· 188 188 189 189 const updatedAt = new Date(); 190 190 // if the work has a uri, we should update the record to the pds 191 + // this should be handled by an appview... 191 192 if (work.uri) { 192 193 try { 193 194 const { rkey, host } = new AtUri(work.uri);
+4 -3
src/components/Dialog.astro
··· 1 1 --- 2 - import X from "@lucide/astro/icons/x"; 2 + // import X from "@lucide/astro/icons/x"; 3 3 4 4 interface Props { 5 5 id: string; ··· 23 23 <header class="modal-header"> 24 24 <h1 class="text-lg leading-none flex-1 pl-2">{title}</h1> 25 25 <form method="dialog"> 26 - <button aria-label="close" class="btn btn-error"> 27 - <X /> 26 + <button class="btn btn-error"> 27 + <div class="i-lc-x w-[2em] h-[2em]" aria-hidden="true"></div> 28 + <span class="sr-only">Close</span> 28 29 </button> 29 30 </form> 30 31 </header>
+2 -2
src/components/Navbar.astro
··· 1 1 --- 2 - import Cog from "@lucide/astro/icons/cog"; 3 2 import Settings from "./Settings.astro"; 4 3 5 4 const loggedInUser = Astro.locals.loggedInUser; ··· 25 24 } 26 25 <li> 27 26 <button id="trigger-settings"> 28 - <Cog aria-label="Open settings" /> 27 + <div class="i-lc-cog w-7 h-7" aria-hidden="true"></div> 28 + <span class="sr-only">Open settings</span> 29 29 </button> 30 30 </li> 31 31 </ul>
+19 -26
src/components/Popover.astro
··· 1 1 --- 2 - import { Info, TriangleAlert, Skull } from "@lucide/astro"; 3 - 4 2 interface Props { 5 3 id?: string; 6 4 label: string; 7 - icon?: "info" | "warning" | "danger"; 5 + icon?: "info" | "warning" | "danger" | string; 8 6 title?: string; 9 7 class?: string; 8 + color?: "primary" | "secondary" | "accent" | "neutral" | "info" | "warning" | "danger" | "success" | "base"; 10 9 } 11 10 12 - const { id, label, icon, title, class: className, ...rest } = Astro.props; 11 + const { id, label, icon, title, color, class: className, ...rest } = Astro.props; 13 12 --- 14 13 <!-- type button needs to be set here, otherwise it doesn't work inside forms --> 15 14 <button 16 15 type="button" 17 16 id={`${id}-trigger`} 18 17 class:list={[ 19 - "btn btn-xs", 18 + "btn btn-xs", 19 + color && [`bg-${color}`, `text-${color}-content`], 20 20 icon && ["btn-circle", "btn-ghost"], 21 - icon && 22 - (icon === "info") ? "text-info" : 23 - (icon === "warning") ? "text-warning" : 24 - (icon === "danger") ? "text-error" : 25 - "text-base-content", 26 21 "popover-btn" 27 22 ]} 28 23 aria-describedby={id} 29 24 popovertarget={id} 30 25 > 31 26 {icon 32 - ? 33 - <div class="icon" aria-label={label}> 34 - {icon && 35 - (icon === "info") ? <Info /> : 36 - (icon === "warning") ? <TriangleAlert /> : 37 - (icon === "danger") ? <Skull /> : 38 - <></> 39 - } 40 - </div> 27 + ? <div 28 + class:list={[ 29 + "icon", 30 + icon && 31 + (icon === "info") ? "i-lc-info text-info" : 32 + (icon === "warning") ? "i-lc-triangle-alert text-warning" : 33 + (icon === "danger") ? "i-lc-skull text-error" : 34 + `i-lc-${icon} text-base-content`, 35 + ]} 36 + aria-label={label} 37 + ></div> 41 38 : <span>{label}</span> 42 39 } 43 40 </button> ··· 45 42 <div 46 43 {id} 47 44 class:list={[ 48 - "popover-content card w-72 border-2 border-accent shadow shadow-inherit", 45 + "popover-content dropdown card w-72 bg-base-100 shadow shadow-inherit", 49 46 className, 50 47 ]} 51 48 role="tooltip" ··· 69 66 } 70 67 71 68 .popover-content { 72 - @apply dropdown bg-base-100; 73 - 74 69 @supports (position-anchor: var(--anchor)) and (left: anchor(center)) { 75 70 position-anchor: var(--anchor); 76 71 left: anchor(center); ··· 85 80 86 81 triggers.forEach(trigger => { 87 82 const btn = trigger as HTMLButtonElement; 88 - // triggering button will always end with "-trigger", so slice that from the id 89 - const id = btn.id.slice(0, -8); 90 - const popover = document.getElementById(`${id}`) as HTMLElement; 83 + const popover = btn.popoverTargetElement as HTMLElement; 91 84 92 85 btn.addEventListener("click", (e) => { 93 86 e.preventDefault(); 94 87 popover.togglePopover(); 95 88 }); 96 - 89 + 97 90 popover.addEventListener("toggle", (e) => { 98 91 const cleanup = autoUpdate( 99 92 btn,
+7 -2
src/lib/atproto.ts
··· 1 1 import type { APIContext } from "astro"; 2 2 import { AtpBaseClient } from "@atproto/api"; 3 3 import { DidResolver } from "@atproto/identity"; 4 + import { AtProtoClient } from "./client"; 4 5 5 6 export async function getAgent(locals: APIContext["locals"]) { 6 - const loggedInUser = locals.loggedInUser; 7 7 try { 8 - const agent = new AtpBaseClient(loggedInUser?.fetchHandler!); 8 + const agent = new AtpBaseClient(locals.loggedInUser?.fetchHandler!); 9 + const client = new AtProtoClient( 10 + 'https://api.slices.network', 11 + 'at://did:plc:dg2qmmjic7mmecrbvpuhtvh6/network.slices.slice/3m2fpay6dw522', 12 + // oauthClient 13 + ); 9 14 return agent; 10 15 } catch (error) { 11 16 // we don't need to return anything to make sure the site still functions for not logged in users?
+336
src/lib/client.ts
··· 1 + import { 2 + type AuthProvider, 3 + type BlobRef, 4 + type CountRecordsResponse, 5 + type GetRecordParams, 6 + type GetRecordsResponse, 7 + type IndexedRecordFields, 8 + type RecordResponse, 9 + SlicesClient, 10 + type SortField, 11 + type WhereCondition, 12 + } from "@slices/client"; 13 + import type { OAuthClient } from "@slices/oauth"; 14 + 15 + export interface ComAtprotoRepoStrongRef { 16 + uri: string; 17 + cid: string; 18 + } 19 + 20 + export interface FanFicsWorkComment { 21 + content: string; 22 + createdAt: string; 23 + postedTo?: string; 24 + } 25 + 26 + export type FanFicsWorkCommentSortFields = "content" | "createdAt" | "postedTo"; 27 + 28 + export interface FanFicsWorkChapter { 29 + workAtUri: string; 30 + title: string; 31 + /** You can add additional notes to a chapter. Typically, these are displayed before chapter content. Only limited HTML is allowed. */ 32 + authorsNotes?: string; 33 + content: string; 34 + /** You can add additional notes to a chapter. Typically, these are displayed after chapter content. Only limited HTML is allowed. */ 35 + endNotes?: string; 36 + createdAt: string; 37 + updatedAt?: string; 38 + } 39 + 40 + export type FanFicsWorkChapterSortFields = 41 + | "workAtUri" 42 + | "title" 43 + | "authorsNotes" 44 + | "content" 45 + | "endNotes" 46 + | "createdAt" 47 + | "updatedAt"; 48 + 49 + export interface FanFicsWorkChapterChapterRef { 50 + atUri?: string; 51 + } 52 + 53 + export interface FanFicsWork { 54 + uri?: string; 55 + author: string; 56 + title: string; 57 + /** Tags for content the work may be related to, for example 'fluff' or 'meta' */ 58 + tags: string[]; 59 + /** You can describe your work in a summary. Only limited HTML is allowed. */ 60 + summary: string; 61 + chapters: 62 + | FanFicsWorkChapter["Main"] 63 + | FanFicsWorkChapter["ChapterRef"] 64 + | ComAtprotoRepoStrongRef 65 + | { $type: string; [key: string]: unknown }[]; 66 + createdAt: string; 67 + updatedAt?: string; 68 + } 69 + 70 + export type FanFicsWorkSortFields = 71 + | "uri" 72 + | "author" 73 + | "title" 74 + | "summary" 75 + | "createdAt" 76 + | "updatedAt"; 77 + 78 + export interface FanFicsWorkChapter { 79 + readonly Main: FanFicsWorkChapter; 80 + readonly ChapterRef: FanFicsWorkChapterChapterRef; 81 + } 82 + 83 + class CommentWorkFicsFanClient { 84 + private readonly client: SlicesClient; 85 + 86 + constructor(client: SlicesClient) { 87 + this.client = client; 88 + } 89 + 90 + async getRecords( 91 + params?: { 92 + limit?: number; 93 + cursor?: string; 94 + where?: { 95 + [K in FanFicsWorkCommentSortFields | IndexedRecordFields]?: 96 + WhereCondition; 97 + }; 98 + orWhere?: { 99 + [K in FanFicsWorkCommentSortFields | IndexedRecordFields]?: 100 + WhereCondition; 101 + }; 102 + sortBy?: SortField<FanFicsWorkCommentSortFields>[]; 103 + }, 104 + ): Promise<GetRecordsResponse<FanFicsWorkComment>> { 105 + return await this.client.getRecords("fan.fics.work.comment", params); 106 + } 107 + 108 + async getRecord( 109 + params: GetRecordParams, 110 + ): Promise<RecordResponse<FanFicsWorkComment>> { 111 + return await this.client.getRecord("fan.fics.work.comment", params); 112 + } 113 + 114 + async countRecords( 115 + params?: { 116 + limit?: number; 117 + cursor?: string; 118 + where?: { 119 + [K in FanFicsWorkCommentSortFields | IndexedRecordFields]?: 120 + WhereCondition; 121 + }; 122 + orWhere?: { 123 + [K in FanFicsWorkCommentSortFields | IndexedRecordFields]?: 124 + WhereCondition; 125 + }; 126 + sortBy?: SortField<FanFicsWorkCommentSortFields>[]; 127 + }, 128 + ): Promise<CountRecordsResponse> { 129 + return await this.client.countRecords("fan.fics.work.comment", params); 130 + } 131 + 132 + async createRecord( 133 + record: FanFicsWorkComment, 134 + useSelfRkey?: boolean, 135 + ): Promise<{ uri: string; cid: string }> { 136 + return await this.client.createRecord( 137 + "fan.fics.work.comment", 138 + record, 139 + useSelfRkey, 140 + ); 141 + } 142 + 143 + async updateRecord( 144 + rkey: string, 145 + record: FanFicsWorkComment, 146 + ): Promise<{ uri: string; cid: string }> { 147 + return await this.client.updateRecord( 148 + "fan.fics.work.comment", 149 + rkey, 150 + record, 151 + ); 152 + } 153 + 154 + async deleteRecord(rkey: string): Promise<void> { 155 + return await this.client.deleteRecord("fan.fics.work.comment", rkey); 156 + } 157 + } 158 + 159 + class ChapterWorkFicsFanClient { 160 + private readonly client: SlicesClient; 161 + 162 + constructor(client: SlicesClient) { 163 + this.client = client; 164 + } 165 + 166 + async getRecords( 167 + params?: { 168 + limit?: number; 169 + cursor?: string; 170 + where?: { 171 + [K in FanFicsWorkChapterSortFields | IndexedRecordFields]?: 172 + WhereCondition; 173 + }; 174 + orWhere?: { 175 + [K in FanFicsWorkChapterSortFields | IndexedRecordFields]?: 176 + WhereCondition; 177 + }; 178 + sortBy?: SortField<FanFicsWorkChapterSortFields>[]; 179 + }, 180 + ): Promise<GetRecordsResponse<FanFicsWorkChapter>> { 181 + return await this.client.getRecords("fan.fics.work.chapter", params); 182 + } 183 + 184 + async getRecord( 185 + params: GetRecordParams, 186 + ): Promise<RecordResponse<FanFicsWorkChapter>> { 187 + return await this.client.getRecord("fan.fics.work.chapter", params); 188 + } 189 + 190 + async countRecords( 191 + params?: { 192 + limit?: number; 193 + cursor?: string; 194 + where?: { 195 + [K in FanFicsWorkChapterSortFields | IndexedRecordFields]?: 196 + WhereCondition; 197 + }; 198 + orWhere?: { 199 + [K in FanFicsWorkChapterSortFields | IndexedRecordFields]?: 200 + WhereCondition; 201 + }; 202 + sortBy?: SortField<FanFicsWorkChapterSortFields>[]; 203 + }, 204 + ): Promise<CountRecordsResponse> { 205 + return await this.client.countRecords("fan.fics.work.chapter", params); 206 + } 207 + 208 + async createRecord( 209 + record: FanFicsWorkChapter, 210 + useSelfRkey?: boolean, 211 + ): Promise<{ uri: string; cid: string }> { 212 + return await this.client.createRecord( 213 + "fan.fics.work.chapter", 214 + record, 215 + useSelfRkey, 216 + ); 217 + } 218 + 219 + async updateRecord( 220 + rkey: string, 221 + record: FanFicsWorkChapter, 222 + ): Promise<{ uri: string; cid: string }> { 223 + return await this.client.updateRecord( 224 + "fan.fics.work.chapter", 225 + rkey, 226 + record, 227 + ); 228 + } 229 + 230 + async deleteRecord(rkey: string): Promise<void> { 231 + return await this.client.deleteRecord("fan.fics.work.chapter", rkey); 232 + } 233 + } 234 + 235 + class WorkFicsFanClient { 236 + readonly comment: CommentWorkFicsFanClient; 237 + readonly chapter: ChapterWorkFicsFanClient; 238 + private readonly client: SlicesClient; 239 + 240 + constructor(client: SlicesClient) { 241 + this.client = client; 242 + this.comment = new CommentWorkFicsFanClient(client); 243 + this.chapter = new ChapterWorkFicsFanClient(client); 244 + } 245 + 246 + async getRecords( 247 + params?: { 248 + limit?: number; 249 + cursor?: string; 250 + where?: { 251 + [K in FanFicsWorkSortFields | IndexedRecordFields]?: WhereCondition; 252 + }; 253 + orWhere?: { 254 + [K in FanFicsWorkSortFields | IndexedRecordFields]?: WhereCondition; 255 + }; 256 + sortBy?: SortField<FanFicsWorkSortFields>[]; 257 + }, 258 + ): Promise<GetRecordsResponse<FanFicsWork>> { 259 + return await this.client.getRecords("fan.fics.work", params); 260 + } 261 + 262 + async getRecord( 263 + params: GetRecordParams, 264 + ): Promise<RecordResponse<FanFicsWork>> { 265 + return await this.client.getRecord("fan.fics.work", params); 266 + } 267 + 268 + async countRecords( 269 + params?: { 270 + limit?: number; 271 + cursor?: string; 272 + where?: { 273 + [K in FanFicsWorkSortFields | IndexedRecordFields]?: WhereCondition; 274 + }; 275 + orWhere?: { 276 + [K in FanFicsWorkSortFields | IndexedRecordFields]?: WhereCondition; 277 + }; 278 + sortBy?: SortField<FanFicsWorkSortFields>[]; 279 + }, 280 + ): Promise<CountRecordsResponse> { 281 + return await this.client.countRecords("fan.fics.work", params); 282 + } 283 + 284 + async createRecord( 285 + record: FanFicsWork, 286 + useSelfRkey?: boolean, 287 + ): Promise<{ uri: string; cid: string }> { 288 + return await this.client.createRecord("fan.fics.work", record, useSelfRkey); 289 + } 290 + 291 + async updateRecord( 292 + rkey: string, 293 + record: FanFicsWork, 294 + ): Promise<{ uri: string; cid: string }> { 295 + return await this.client.updateRecord("fan.fics.work", rkey, record); 296 + } 297 + 298 + async deleteRecord(rkey: string): Promise<void> { 299 + return await this.client.deleteRecord("fan.fics.work", rkey); 300 + } 301 + } 302 + 303 + class FicsFanClient { 304 + readonly work: WorkFicsFanClient; 305 + private readonly client: SlicesClient; 306 + 307 + constructor(client: SlicesClient) { 308 + this.client = client; 309 + this.work = new WorkFicsFanClient(client); 310 + } 311 + } 312 + 313 + class FanClient { 314 + readonly fics: FicsFanClient; 315 + private readonly client: SlicesClient; 316 + 317 + constructor(client: SlicesClient) { 318 + this.client = client; 319 + this.fics = new FicsFanClient(client); 320 + } 321 + } 322 + 323 + export class AtProtoClient extends SlicesClient { 324 + readonly fan: FanClient; 325 + readonly oauth?: OAuthClient | AuthProvider; 326 + 327 + constructor( 328 + baseUrl: string, 329 + sliceUri: string, 330 + oauthClient?: OAuthClient | AuthProvider, 331 + ) { 332 + super(baseUrl, sliceUri, oauthClient); 333 + this.fan = new FanClient(this); 334 + this.oauth = oauthClient; 335 + } 336 + }
+3 -1
src/lib/types.ts
··· 1 + import type { AtUri } from "@atproto/api"; 2 + 1 3 export type Work = { 2 4 slug: string; 3 5 title: string; ··· 9 11 } 10 12 11 13 export type Chapter = { 12 - order: number; 14 + uri?: AtUri; 13 15 title: string; 14 16 notes?: string | undefined; 15 17 content: string;
+4 -2
tsconfig.json
··· 7 7 "paths": { 8 8 "~/*": ["src/components/*"], 9 9 "$/*": ["src/assets/*"], 10 - "@/*": ["src/*"], 10 + "@/*": ["src/*"] 11 11 }, 12 + "jsx": "react-jsx", 13 + "jsxImportSource": "preact" 12 14 } 13 - } 15 + }
+12 -1
uno.config.ts
··· 1 - import { defineConfig, presetTypography, presetWind4, transformerDirectives, type PresetWind4Theme } from "unocss"; 1 + import { defineConfig, presetTypography, presetWind4, presetIcons, transformerDirectives, type PresetWind4Theme } from "unocss"; 2 2 import { presetDaisy } from "@ameinhardt/unocss-preset-daisy"; 3 3 // @ts-expect-error 4 4 import theme from 'daisyui/functions/variables.js'; ··· 18 18 presets: [ 19 19 presetWind4(), 20 20 presetDaisy(), 21 + presetIcons({ 22 + collections: { 23 + lca: () => import("@iconify-json/lucide-lab/icons.json").then(i => i.default), 24 + lc: () => import("@iconify-json/lucide/icons.json").then(i => i.default), 25 + }, 26 + extraProperties: { 27 + display: 'inline-block', 28 + height: "inherit", 29 + width: "inherit", 30 + } 31 + }), 21 32 presetTypography({ 22 33 colorScheme: { 23 34 "body": ["color-mix(in oklab,var(--color-base-content)80%,#0000)", "color-mix(in oklab,var(--color-base-content)80%,#0000)"],