Atproto AMA app
0
fork

Configure Feed

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

add basic dev env

+5385 -320
+5
.env.example
··· 20 20 AT_PROTOCOL_PDS=https://bsky.social 21 21 AT_PROTOCOL_APPVIEW=https://api.bsky.app 22 22 23 + # Local dev network (run `pnpm run dev:network` to start) 24 + # Ports are assigned dynamically — copy the printed values here. 25 + # DEV_PDS_URL=http://127.0.0.1:XXXX 26 + # DEV_PLC_URL=http://127.0.0.1:XXXX 27 + 23 28 # Lexicon Validation Configuration 24 29 # Enable/disable lexicon validation (default: true) 25 30 LEX_VALIDATION_ENABLED=true
+16 -1
package.json
··· 9 9 "db:migrate": "drizzle-kit migrate", 10 10 "db:push": "drizzle-kit push", 11 11 "db:studio": "drizzle-kit studio", 12 - "lex:build": "lex build --lexicons ./lexicons --out ./src/lexicons --override" 12 + "db:seed": "dotenv -e .env -- tsx scripts/seed-test-questions.ts", 13 + "lex:build": "lex build --lexicons ./lexicons --out ./src/lexicons --override", 14 + "dev:network": "tsx scripts/dev-network.ts" 13 15 }, 14 16 "dependencies": { 15 17 "@atproto/api": "^0.13.0", ··· 26 28 "vinxi": "^0.5.3" 27 29 }, 28 30 "devDependencies": { 31 + "@atproto/dev-env": "^0.4.0", 29 32 "@types/node": "^25.5.0", 33 + "dotenv-cli": "^7.4.2", 30 34 "drizzle-kit": "^0.30.0", 35 + "tsx": "^4.19.2", 31 36 "typescript": "^5.7.0" 37 + }, 38 + "pnpm": { 39 + "overrides": { 40 + "better-sqlite3": "^12.5.0" 41 + }, 42 + "onlyBuiltDependencies": [ 43 + "better-sqlite3", 44 + "sharp", 45 + "protobufjs" 46 + ] 32 47 }, 33 48 "packageManager": "pnpm@10.17.1", 34 49 "engines": {
+3685 -38
pnpm-lock.yaml
··· 4 4 autoInstallPeers: true 5 5 excludeLinksFromLockfile: false 6 6 7 + overrides: 8 + better-sqlite3: ^12.5.0 9 + 7 10 importers: 8 11 9 12 .: ··· 28 31 version: 0.15.4(solid-js@1.9.12) 29 32 '@solidjs/start': 30 33 specifier: ^1.3.2 31 - version: 1.3.2(solid-js@1.9.12)(vinxi@0.5.11(@types/node@25.5.0)(db0@0.3.4(drizzle-orm@0.39.3(postgres@3.4.8)))(drizzle-orm@0.39.3(postgres@3.4.8))(ioredis@5.10.1)(jiti@2.6.1)(terser@5.46.1))(vite@6.4.1(@types/node@25.5.0)(jiti@2.6.1)(terser@5.46.1)) 34 + version: 1.3.2(solid-js@1.9.12)(vinxi@0.5.11(@types/node@25.5.0)(better-sqlite3@12.8.0)(db0@0.3.4(better-sqlite3@12.8.0)(drizzle-orm@0.39.3(better-sqlite3@12.8.0)(kysely@0.23.5)(pg@8.20.0)(postgres@3.4.8)))(drizzle-orm@0.39.3(better-sqlite3@12.8.0)(kysely@0.23.5)(pg@8.20.0)(postgres@3.4.8))(ioredis@5.10.1)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0))(vite@6.4.1(@types/node@25.5.0)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)) 32 35 drizzle-orm: 33 36 specifier: ^0.39.0 34 - version: 0.39.3(postgres@3.4.8) 37 + version: 0.39.3(better-sqlite3@12.8.0)(kysely@0.23.5)(pg@8.20.0)(postgres@3.4.8) 35 38 jose: 36 39 specifier: ^6.0.0 37 40 version: 6.2.2 ··· 43 46 version: 1.9.12 44 47 vinxi: 45 48 specifier: ^0.5.3 46 - version: 0.5.11(@types/node@25.5.0)(db0@0.3.4(drizzle-orm@0.39.3(postgres@3.4.8)))(drizzle-orm@0.39.3(postgres@3.4.8))(ioredis@5.10.1)(jiti@2.6.1)(terser@5.46.1) 49 + version: 0.5.11(@types/node@25.5.0)(better-sqlite3@12.8.0)(db0@0.3.4(better-sqlite3@12.8.0)(drizzle-orm@0.39.3(better-sqlite3@12.8.0)(kysely@0.23.5)(pg@8.20.0)(postgres@3.4.8)))(drizzle-orm@0.39.3(better-sqlite3@12.8.0)(kysely@0.23.5)(pg@8.20.0)(postgres@3.4.8))(ioredis@5.10.1)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0) 47 50 devDependencies: 51 + '@atproto/dev-env': 52 + specifier: ^0.4.0 53 + version: 0.4.0 48 54 '@types/node': 49 55 specifier: ^25.5.0 50 56 version: 25.5.0 57 + dotenv-cli: 58 + specifier: ^7.4.2 59 + version: 7.4.4 51 60 drizzle-kit: 52 61 specifier: ^0.30.0 53 62 version: 0.30.6 63 + tsx: 64 + specifier: ^4.19.2 65 + version: 4.21.0 54 66 typescript: 55 67 specifier: ^5.7.0 56 68 version: 5.9.3 ··· 83 95 '@atproto-labs/simple-store-memory@0.1.4': 84 96 resolution: {integrity: sha512-3mKY4dP8I7yKPFj9VKpYyCRzGJOi5CEpOLPlRhoJyLmgs3J4RzDrjn323Oakjz2Aj2JzRU/AIvWRAZVhpYNJHw==} 85 97 98 + '@atproto-labs/simple-store-redis@0.0.1': 99 + resolution: {integrity: sha512-hGkfDNVtTqwcRx27k6u25pgwNIHq3xDCRuojkfHf6c1B9R5rKphdZJ91Mn3lCvsyDB/lUqqLuzKuXQWFml/u5g==} 100 + peerDependencies: 101 + ioredis: ^5.3.2 102 + 86 103 '@atproto-labs/simple-store@0.3.0': 87 104 resolution: {integrity: sha512-nOb6ONKBRJHRlukW1sVawUkBqReLlLx6hT35VS3imaNPwiXDxLnTK7lxw3Lrl9k5yugSBDQAkZAq3MPTEFSUBQ==} 88 105 106 + '@atproto-labs/xrpc-utils@0.0.24': 107 + resolution: {integrity: sha512-wWXd2Ht47UsL/UbDCr3twMFSZrh0xSI56u4O3kz0DTU4G+530mCG71mMVE6eeYcR+j6FEjp7o2Ld6c7wFklYGw==} 108 + 89 109 '@atproto/api@0.13.35': 90 110 resolution: {integrity: sha512-vsEfBj0C333TLjDppvTdTE0IdKlXuljKSveAeI4PPx/l6eUKNnDTsYxvILtXUVzwUlTDmSRqy5O4Ryh78n1b7g==} 91 111 112 + '@atproto/api@0.19.5': 113 + resolution: {integrity: sha512-u6R5TecYJDO8l8QFN09AMuJASYnUkJ4HhYE5hg4/dha/z14a+OAil2/dli/208uM5AHPFLtlnB8kIK9XU5GgQQ==} 114 + 115 + '@atproto/aws@0.2.32': 116 + resolution: {integrity: sha512-4gcvmHv2uzhDsyw1flgXw5p0H7GVyn/mTMfn920/qwQCNdkIshvj5ouCfoBXH17AGiNrO/7A35mTW+gPg6g0ug==} 117 + engines: {node: '>=18.7.0'} 118 + 119 + '@atproto/bsky@0.0.222': 120 + resolution: {integrity: sha512-MUAJoFBvsAEExqWkIA3CpiqwFlxgmhHPLeddDPr528tld+VfBRGsZzH57gbEGpHXOawcezSK4G/DzKVBWD3qrQ==} 121 + engines: {node: '>=18.7.0'} 122 + 123 + '@atproto/bsync@0.0.25': 124 + resolution: {integrity: sha512-5tjP5QbUcNtMBw7FJeyRfA0OHQRKrg97Jva6Q26cKqLMICGYNbx0fpD7nZhGTP2/s1gd6UZkG9Zdh4GRZpbxWg==} 125 + engines: {node: '>=18.7.0'} 126 + 92 127 '@atproto/common-web@0.4.19': 93 128 resolution: {integrity: sha512-3BTi58p5WpT+9/zb6UZrdsXcfPo5P45UJm0E4iwHLILr+jc37CuBj9JReDSZ4U0i9RTrI3ZkfySyZ9bd+LnMsw==} 94 129 130 + '@atproto/common@0.1.0': 131 + resolution: {integrity: sha512-OB5tWE2R19jwiMIs2IjQieH5KTUuMb98XGCn9h3xuu6NanwjlmbCYMv08fMYwIp3UQ6jcq//84cDT3Bu6fJD+A==} 132 + 133 + '@atproto/common@0.1.1': 134 + resolution: {integrity: sha512-GYwot5wF/z8iYGSPjrLHuratLc0CVgovmwfJss7+BUOB6y2/Vw8+1Vw0n9DDI0gb5vmx3UI8z0uJgC8aa8yuJg==} 135 + 95 136 '@atproto/common@0.5.15': 96 137 resolution: {integrity: sha512-+cdfdMPAIbH9zQGLfH1gNY2KEZsMxj0EelVQL5uJUFL+UkkAXiiqWj7J5mbax8sf02cC/afJnfkWzERNAheKoA==} 97 138 engines: {node: '>=18.7.0'} 98 139 140 + '@atproto/crypto@0.1.0': 141 + resolution: {integrity: sha512-9xgFEPtsCiJEPt9o3HtJT30IdFTGw5cQRSJVIy5CFhqBA4vDLcdXiRDLCjkzHEVbtNCsHUW6CrlfOgbeLPcmcg==} 142 + 99 143 '@atproto/crypto@0.4.5': 100 144 resolution: {integrity: sha512-n40aKkMoCatP0u9Yvhrdk6fXyOHFDDbkdm4h4HCyWW+KlKl8iXfD5iV+ECq+w5BM+QH25aIpt3/j6EUNerhLxw==} 101 145 engines: {node: '>=18.7.0'} 146 + 147 + '@atproto/dev-env@0.4.0': 148 + resolution: {integrity: sha512-fl5zxhtGoJ67LBx2SiAxEcLEKJxt+fTYLo3obpmKa60z9PWTHbptX8qXJuHoowukBdYzdb1EpC70Qab2X332mw==} 149 + engines: {node: '>=18.7.0'} 150 + hasBin: true 102 151 103 152 '@atproto/did@0.3.0': 104 153 resolution: {integrity: sha512-raUPzUGegtW/6OxwCmM8bhZvuIMzxG5t9oWsth6Tp91Kb5fTnHV2h/KKNF1C82doeA4BdXCErTyg7ISwLbQkzA==} ··· 160 209 '@atproto/oauth-client@0.6.0': 161 210 resolution: {integrity: sha512-F7ZTKzFptXgyihMkd7QTdRSkrh4XqrS+qTw+V81k5Q6Bh3MB1L3ypvfSJ6v7SSUJa6XxoZYJTCahHC1e+ndE6Q==} 162 211 212 + '@atproto/oauth-provider-api@0.3.7': 213 + resolution: {integrity: sha512-7yU9vuQFt/hy4NzlDtn+LuhIGvVKkhgWAkCmopnseMPBw6oGPT90uOsTxMkVGtHuKVvBSz7hOXoELXpnZq3gDQ==} 214 + 215 + '@atproto/oauth-provider-frontend@0.2.9': 216 + resolution: {integrity: sha512-m1NhqC7ydEpF5ELV13CxkgCawyMX8wbAXls/4af3Tsz3IOkdM6zPgQeYK7Zj+7Nywjml4mZTkJ8rZiT6O9+5sw==} 217 + engines: {node: '>=18.7.0'} 218 + 219 + '@atproto/oauth-provider-ui@0.4.3': 220 + resolution: {integrity: sha512-BLNZmtOwoHu2qk/Oi6dUR8TcXQaJre6wgW8YjkW5bKf+Vftn3PGzh8bKgr1fQZDYweZ6AF148imA2OzVSAaLHQ==} 221 + engines: {node: '>=18.7.0'} 222 + 223 + '@atproto/oauth-provider@0.15.15': 224 + resolution: {integrity: sha512-1Cb3e0FnGhUdBQGNIHxrZi03jI3xCKQE7DciFO2czNXm7KEwhUZSgWczpR93/QBJF/MKfVgXhX4v27kvpW5IzQ==} 225 + engines: {node: '>=18.7.0'} 226 + 227 + '@atproto/oauth-scopes@0.3.2': 228 + resolution: {integrity: sha512-88awgvB9asSR86KjEXL31N9nFd1XG+QtbzEJFw5/wwEv41tS4S8c4Prqb/MAzVuFQ4OHOndYo1VDD99vGMpqTA==} 229 + 230 + '@atproto/oauth-types@0.6.2': 231 + resolution: {integrity: sha512-2cuboM4RQBCYR8NQC5uGRkW6KgCgKyq/B5/+tnMmWZYtZGVUQvsUWQHK/ZiMCnVXbcDNtc/RIEJQJDZ8FXMoxg==} 232 + 163 233 '@atproto/oauth-types@0.6.3': 164 234 resolution: {integrity: sha512-jdKuoPknJuh/WjI+mYk7agSbx9mNVMbS6Dr3k1z2YMY2oRiCQjxYBuo4MLKATbxj05nMQaZRWlHRUazoAu5Cng==} 165 235 236 + '@atproto/ozone@0.1.168': 237 + resolution: {integrity: sha512-40wpjfHbKiCHtsoezmYhXpmUS7E8KRkP6I5k4c3B5A8vCprCFpevHAMDh5N8c+Yh7myKxY59UVlQR9XZ8F8Rdw==} 238 + engines: {node: '>=18.7.0'} 239 + 240 + '@atproto/pds@0.4.217': 241 + resolution: {integrity: sha512-Cmt/GSUiL9amt4pCrZHJ2UgXdJa9P4dJyMCrmGabxYdVKCNnqxKVLWQoWNpiDVxki79NB2dJpDtAZG+q/+17Cg==} 242 + engines: {node: '>=18.7.0'} 243 + 166 244 '@atproto/repo@0.9.0': 167 245 resolution: {integrity: sha512-hl85f7CJniLoJS5bwOSnLjN7X4kS1ETs5yetKJyJRVZE4SgM+nWPRd+D08dAzeU+VAZi4fjeZXOlOLJtS4Y0KQ==} 246 + engines: {node: '>=18.7.0'} 247 + 248 + '@atproto/sync@0.2.0': 249 + resolution: {integrity: sha512-iVoKq2IB11IyGIr0xpznpsdH7br8EpdbmckhrQp2XADSeBZcv2X1kzgKb3DkKLpVGElb5GNx+yG030GFGf+m4A==} 168 250 engines: {node: '>=18.7.0'} 169 251 170 252 '@atproto/syntax@0.3.4': ··· 176 258 '@atproto/syntax@0.5.2': 177 259 resolution: {integrity: sha512-W41szOnkppoHr0iCUrzL8gy3OD6qmDyp1UvUgmTx2oFQfgbudpz51T/gznesiCcqiUT5obfHdx4PJ+WdlEOE7Q==} 178 260 261 + '@atproto/ws-client@0.0.4': 262 + resolution: {integrity: sha512-dox1XIymuC7/ZRhUqKezIGgooZS45C6vHCfu0PnWjfvsLCK2kAlnvX4IBkA/WpcoijDhQ9ejChnFbo/sLmgvAg==} 263 + engines: {node: '>=18.7.0'} 264 + 265 + '@atproto/xrpc-server@0.10.18': 266 + resolution: {integrity: sha512-S3QA+7yRF5qlHaVdRA8xF3qqny1OGP4lqePIW7GtjdTmAg8Y0Q0NWUUNPHR+w6qdB4fOa1OVQiNtzxq++e0EQw==} 267 + engines: {node: '>=18.7.0'} 268 + 179 269 '@atproto/xrpc@0.6.12': 180 270 resolution: {integrity: sha512-Ut3iISNLujlmY9Gu8sNU+SPDJDvqlVzWddU8qUr0Yae5oD4SguaUFjjhireMGhQ3M5E0KljQgDbTmnBo1kIZ3w==} 181 271 182 272 '@atproto/xrpc@0.7.7': 183 273 resolution: {integrity: sha512-K1ZyO/BU8JNtXX5dmPp7b5UrkLMMqpsIa/Lrj5D3Su+j1Xwq1m6QJ2XJ1AgjEjkI1v4Muzm7klianLE6XGxtmA==} 184 274 275 + '@aws-crypto/crc32@5.2.0': 276 + resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} 277 + engines: {node: '>=16.0.0'} 278 + 279 + '@aws-crypto/crc32c@5.2.0': 280 + resolution: {integrity: sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==} 281 + 282 + '@aws-crypto/sha1-browser@5.2.0': 283 + resolution: {integrity: sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==} 284 + 285 + '@aws-crypto/sha256-browser@5.2.0': 286 + resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} 287 + 288 + '@aws-crypto/sha256-js@5.2.0': 289 + resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} 290 + engines: {node: '>=16.0.0'} 291 + 292 + '@aws-crypto/supports-web-crypto@5.2.0': 293 + resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} 294 + 295 + '@aws-crypto/util@5.2.0': 296 + resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} 297 + 298 + '@aws-sdk/client-cloudfront@3.1022.0': 299 + resolution: {integrity: sha512-FfchQfmDeuTPHwz2OX5bGALWXzKwBekab8n2islfUev1O4byqOidpkEudZNjTB3hteJ/WM9pHinnBGc+unLUBQ==} 300 + engines: {node: '>=20.0.0'} 301 + 302 + '@aws-sdk/client-kms@3.1022.0': 303 + resolution: {integrity: sha512-Ykqu9k03Akpzo0snC/TvJoQV1YBC/P+Oag7ZCyYggVy/MdK/8q/+go4pWw06VlcfF8/uRrzG0qtO5ymOYEwrUA==} 304 + engines: {node: '>=20.0.0'} 305 + 306 + '@aws-sdk/client-s3@3.1022.0': 307 + resolution: {integrity: sha512-PhdIW0LxjzcMlBiCldRefnyZk84wtYGnEV0sNGOD55DZTvZsibG2XHvQiL1aFliKugfAhuIpNmFkctI2n2I3Dg==} 308 + engines: {node: '>=20.0.0'} 309 + 310 + '@aws-sdk/core@3.973.26': 311 + resolution: {integrity: sha512-A/E6n2W42ruU+sfWk+mMUOyVXbsSgGrY3MJ9/0Az5qUdG67y8I6HYzzoAa+e/lzxxl1uCYmEL6BTMi9ZiZnplQ==} 312 + engines: {node: '>=20.0.0'} 313 + 314 + '@aws-sdk/crc64-nvme@3.972.5': 315 + resolution: {integrity: sha512-2VbTstbjKdT+yKi8m7b3a9CiVac+pL/IY2PHJwsaGkkHmuuqkJZIErPck1h6P3T9ghQMLSdMPyW6Qp7Di5swFg==} 316 + engines: {node: '>=20.0.0'} 317 + 318 + '@aws-sdk/credential-provider-env@3.972.24': 319 + resolution: {integrity: sha512-FWg8uFmT6vQM7VuzELzwVo5bzExGaKHdubn0StjgrcU5FvuLExUe+k06kn/40uKv59rYzhez8eFNM4yYE/Yb/w==} 320 + engines: {node: '>=20.0.0'} 321 + 322 + '@aws-sdk/credential-provider-http@3.972.26': 323 + resolution: {integrity: sha512-CY4ppZ+qHYqcXqBVi//sdHST1QK3KzOEiLtpLsc9W2k2vfZPKExGaQIsOwcyvjpjUEolotitmd3mUNY56IwDEA==} 324 + engines: {node: '>=20.0.0'} 325 + 326 + '@aws-sdk/credential-provider-ini@3.972.28': 327 + resolution: {integrity: sha512-wXYvq3+uQcZV7k+bE4yDXCTBdzWTU9x/nMiKBfzInmv6yYK1veMK0AKvRfRBd72nGWYKcL6AxwiPg9z/pYlgpw==} 328 + engines: {node: '>=20.0.0'} 329 + 330 + '@aws-sdk/credential-provider-login@3.972.28': 331 + resolution: {integrity: sha512-ZSTfO6jqUTCysbdBPtEX5OUR//3rbD0lN7jO3sQeS2Gjr/Y+DT6SbIJ0oT2cemNw3UzKu97sNONd1CwNMthuZQ==} 332 + engines: {node: '>=20.0.0'} 333 + 334 + '@aws-sdk/credential-provider-node@3.972.29': 335 + resolution: {integrity: sha512-clSzDcvndpFJAggLDnDb36sPdlZYyEs5Zm6zgZjjUhwsJgSWiWKwFIXUVBcbruidNyBdbpOv2tNDL9sX8y3/0g==} 336 + engines: {node: '>=20.0.0'} 337 + 338 + '@aws-sdk/credential-provider-process@3.972.24': 339 + resolution: {integrity: sha512-Q2k/XLrFXhEztPHqj4SLCNID3hEPdlhh1CDLBpNnM+1L8fq7P+yON9/9M1IGN/dA5W45v44ylERfXtDAlmMNmw==} 340 + engines: {node: '>=20.0.0'} 341 + 342 + '@aws-sdk/credential-provider-sso@3.972.28': 343 + resolution: {integrity: sha512-IoUlmKMLEITFn1SiCTjPfR6KrE799FBo5baWyk/5Ppar2yXZoUdaRqZzJzK6TcJxx450M8m8DbpddRVYlp5R/A==} 344 + engines: {node: '>=20.0.0'} 345 + 346 + '@aws-sdk/credential-provider-web-identity@3.972.28': 347 + resolution: {integrity: sha512-d+6h0SD8GGERzKe27v5rOzNGKOl0D+l0bWJdqrxH8WSQzHzjsQFIAPgIeOTUwBHVsKKwtSxc91K/SWax6XgswQ==} 348 + engines: {node: '>=20.0.0'} 349 + 350 + '@aws-sdk/lib-storage@3.879.0': 351 + resolution: {integrity: sha512-FAb3vOfLIrf8lPuDoxKRu18DxXfQLEFm7MoXi0jd8ooFjD09jpVCQGNrRuMCqc688wrx7zJSovWObtn4LRjvrg==} 352 + engines: {node: '>=18.0.0'} 353 + peerDependencies: 354 + '@aws-sdk/client-s3': ^3.879.0 355 + 356 + '@aws-sdk/middleware-bucket-endpoint@3.972.8': 357 + resolution: {integrity: sha512-WR525Rr2QJSETa9a050isktyWi/4yIGcmY3BQ1kpHqb0LqUglQHCS8R27dTJxxWNZvQ0RVGtEZjTCbZJpyF3Aw==} 358 + engines: {node: '>=20.0.0'} 359 + 360 + '@aws-sdk/middleware-expect-continue@3.972.8': 361 + resolution: {integrity: sha512-5DTBTiotEES1e2jOHAq//zyzCjeMB78lEHd35u15qnrid4Nxm7diqIf9fQQ3Ov0ChH1V3Vvt13thOnrACmfGVQ==} 362 + engines: {node: '>=20.0.0'} 363 + 364 + '@aws-sdk/middleware-flexible-checksums@3.974.6': 365 + resolution: {integrity: sha512-YckB8k1ejbyCg/g36gUMFLNzE4W5cERIa4MtsdO+wpTmJEP0+TB7okWIt7d8TDOvnb7SwvxJ21E4TGOBxFpSWQ==} 366 + engines: {node: '>=20.0.0'} 367 + 368 + '@aws-sdk/middleware-host-header@3.972.8': 369 + resolution: {integrity: sha512-wAr2REfKsqoKQ+OkNqvOShnBoh+nkPurDKW7uAeVSu6kUECnWlSJiPvnoqxGlfousEY/v9LfS9sNc46hjSYDIQ==} 370 + engines: {node: '>=20.0.0'} 371 + 372 + '@aws-sdk/middleware-location-constraint@3.972.8': 373 + resolution: {integrity: sha512-KaUoFuoFPziIa98DSQsTPeke1gvGXlc5ZGMhy+b+nLxZ4A7jmJgLzjEF95l8aOQN2T/qlPP3MrAyELm8ExXucw==} 374 + engines: {node: '>=20.0.0'} 375 + 376 + '@aws-sdk/middleware-logger@3.972.8': 377 + resolution: {integrity: sha512-CWl5UCM57WUFaFi5kB7IBY1UmOeLvNZAZ2/OZ5l20ldiJ3TiIz1pC65gYj8X0BCPWkeR1E32mpsCk1L1I4n+lA==} 378 + engines: {node: '>=20.0.0'} 379 + 380 + '@aws-sdk/middleware-recursion-detection@3.972.9': 381 + resolution: {integrity: sha512-/Wt5+CT8dpTFQxEJ9iGy/UGrXr7p2wlIOEHvIr/YcHYByzoLjrqkYqXdJjd9UIgWjv7eqV2HnFJen93UTuwfTQ==} 382 + engines: {node: '>=20.0.0'} 383 + 384 + '@aws-sdk/middleware-sdk-s3@3.972.27': 385 + resolution: {integrity: sha512-gomO6DZwx+1D/9mbCpcqO5tPBqYBK7DtdgjTIjZ4yvfh/S7ETwAPS0XbJgP2JD8Ycr5CwVrEkV1sFtu3ShXeOw==} 386 + engines: {node: '>=20.0.0'} 387 + 388 + '@aws-sdk/middleware-ssec@3.972.8': 389 + resolution: {integrity: sha512-wqlK0yO/TxEC2UsY9wIlqeeutF6jjLe0f96Pbm40XscTo57nImUk9lBcw0dPgsm0sppFtAkSlDrfpK+pC30Wqw==} 390 + engines: {node: '>=20.0.0'} 391 + 392 + '@aws-sdk/middleware-user-agent@3.972.28': 393 + resolution: {integrity: sha512-cfWZFlVh7Va9lRay4PN2A9ARFzaBYcA097InT5M2CdRS05ECF5yaz86jET8Wsl2WcyKYEvVr/QNmKtYtafUHtQ==} 394 + engines: {node: '>=20.0.0'} 395 + 396 + '@aws-sdk/nested-clients@3.996.18': 397 + resolution: {integrity: sha512-c7ZSIXrESxHKx2Mcopgd8AlzZgoXMr20fkx5ViPWPOLBvmyhw9VwJx/Govg8Ef/IhEon5R9l53Z8fdYSEmp6VA==} 398 + engines: {node: '>=20.0.0'} 399 + 400 + '@aws-sdk/region-config-resolver@3.972.10': 401 + resolution: {integrity: sha512-1dq9ToC6e070QvnVhhbAs3bb5r6cQ10gTVc6cyRV5uvQe7P138TV2uG2i6+Yok4bAkVAcx5AqkTEBUvWEtBlsQ==} 402 + engines: {node: '>=20.0.0'} 403 + 404 + '@aws-sdk/signature-v4-multi-region@3.996.15': 405 + resolution: {integrity: sha512-Ukw2RpqvaL96CjfH/FgfBmy/ZosHBqoHBCFsN61qGg99F33vpntIVii8aNeh65XuOja73arSduskoa4OJea9RQ==} 406 + engines: {node: '>=20.0.0'} 407 + 408 + '@aws-sdk/token-providers@3.1021.0': 409 + resolution: {integrity: sha512-TKY6h9spUk3OLs5v1oAgW9mAeBE3LAGNBwJokLy96wwmd4W2v/tYlXseProyed9ValDj2u1jK/4Rg1T+1NXyJA==} 410 + engines: {node: '>=20.0.0'} 411 + 412 + '@aws-sdk/types@3.973.6': 413 + resolution: {integrity: sha512-Atfcy4E++beKtwJHiDln2Nby8W/mam64opFPTiHEqgsthqeydFS1pY+OUlN1ouNOmf8ArPU/6cDS65anOP3KQw==} 414 + engines: {node: '>=20.0.0'} 415 + 416 + '@aws-sdk/util-arn-parser@3.972.3': 417 + resolution: {integrity: sha512-HzSD8PMFrvgi2Kserxuff5VitNq2sgf3w9qxmskKDiDTThWfVteJxuCS9JXiPIPtmCrp+7N9asfIaVhBFORllA==} 418 + engines: {node: '>=20.0.0'} 419 + 420 + '@aws-sdk/util-endpoints@3.996.5': 421 + resolution: {integrity: sha512-Uh93L5sXFNbyR5sEPMzUU8tJ++Ku97EY4udmC01nB8Zu+xfBPwpIwJ6F7snqQeq8h2pf+8SGN5/NoytfKgYPIw==} 422 + engines: {node: '>=20.0.0'} 423 + 424 + '@aws-sdk/util-locate-window@3.965.5': 425 + resolution: {integrity: sha512-WhlJNNINQB+9qtLtZJcpQdgZw3SCDCpXdUJP7cToGwHbCWCnRckGlc6Bx/OhWwIYFNAn+FIydY8SZ0QmVu3xTQ==} 426 + engines: {node: '>=20.0.0'} 427 + 428 + '@aws-sdk/util-user-agent-browser@3.972.8': 429 + resolution: {integrity: sha512-B3KGXJviV2u6Cdw2SDY2aDhoJkVfY/Q/Trwk2CMSkikE1Oi6gRzxhvhIfiRpHfmIsAhV4EA54TVEX8K6CbHbkA==} 430 + 431 + '@aws-sdk/util-user-agent-node@3.973.14': 432 + resolution: {integrity: sha512-vNSB/DYaPOyujVZBg/zUznH9QC142MaTHVmaFlF7uzzfg3CgT9f/l4C0Yi+vU/tbBhxVcXVB90Oohk5+o+ZbWw==} 433 + engines: {node: '>=20.0.0'} 434 + peerDependencies: 435 + aws-crt: '>=1.0.0' 436 + peerDependenciesMeta: 437 + aws-crt: 438 + optional: true 439 + 440 + '@aws-sdk/xml-builder@3.972.16': 441 + resolution: {integrity: sha512-iu2pyvaqmeatIJLURLqx9D+4jKAdTH20ntzB6BFwjyN7V960r4jK32mx0Zf7YbtOYAbmbtQfDNuL60ONinyw7A==} 442 + engines: {node: '>=20.0.0'} 443 + 444 + '@aws/lambda-invoke-store@0.2.4': 445 + resolution: {integrity: sha512-iY8yvjE0y651BixKNPgmv1WrQc+GZ142sb0z4gYnChDDY2YqI4P/jsSopBWrKfAt7LOJAkOXt7rC/hms+WclQQ==} 446 + engines: {node: '>=18.0.0'} 447 + 185 448 '@babel/code-frame@7.26.2': 186 449 resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} 187 450 engines: {node: '>=6.9.0'} ··· 273 536 resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} 274 537 engines: {node: '>=6.9.0'} 275 538 539 + '@bufbuild/protobuf@1.10.1': 540 + resolution: {integrity: sha512-wJ8ReQbHxsAfXhrf9ixl0aYbZorRuOWpBNzm8pL8ftmSxQx/wnJD5Eg861NwJU/czy2VXFIebCeZnZrI9rktIQ==} 541 + 276 542 '@cloudflare/kv-asset-handler@0.4.2': 277 543 resolution: {integrity: sha512-SIOD2DxrRRwQ+jgzlXCqoEFiKOFqaPjhnNTGKXSRLvp1HiOvapLaFG2kEr9dYQTYe8rKrd9uvDUzmAITeNyaHQ==} 278 544 engines: {node: '>=18.0.0'} 279 545 546 + '@connectrpc/connect-express@1.7.0': 547 + resolution: {integrity: sha512-Ajj/jupbF0nCgYlUzuKWQHuwLq5XKqQdJYF5aHmnVZlUcg5Z5zp1u4waG2j4JRczuTb8e0R1yVMTnad5SHM3Lg==} 548 + engines: {node: '>=16.0.0'} 549 + peerDependencies: 550 + '@bufbuild/protobuf': ^1.10.0 551 + '@connectrpc/connect': 1.7.0 552 + '@connectrpc/connect-node': 1.7.0 553 + 554 + '@connectrpc/connect-node@1.7.0': 555 + resolution: {integrity: sha512-6vaPIkG/NyhxlYgytLoR9KYbPhczEboFB2OYWkA9qvUz1K7efXfeGrlRxoLtpa+r8VxyIOw73w5ktNe743nD+A==} 556 + engines: {node: '>=16.0.0'} 557 + peerDependencies: 558 + '@bufbuild/protobuf': ^1.10.0 559 + '@connectrpc/connect': 1.7.0 560 + 561 + '@connectrpc/connect@1.7.0': 562 + resolution: {integrity: sha512-iNKdJRi69YP3mq6AePRT8F/HrxWCewrhxnLMNm0vpqXAR8biwzRtO6Hjx80C6UvtKJ5sFmffQT7I4Baecz389w==} 563 + peerDependencies: 564 + '@bufbuild/protobuf': ^1.10.0 565 + 280 566 '@deno/shim-deno-test@0.5.0': 281 567 resolution: {integrity: sha512-4nMhecpGlPi0cSzT67L+Tm+GOJqvuk8gqHBziqcUQOarnuIax1z96/gJHCSIz2Z0zhxE6Rzwb3IZXPtFh51j+w==} 282 568 283 569 '@deno/shim-deno@0.19.2': 284 570 resolution: {integrity: sha512-q3VTHl44ad8T2Tw2SpeAvghdGOjlnLPDNO2cpOxwMrBE/PVas6geWpbpIgrM+czOCH0yejp0yi8OaTuB+NU40Q==} 285 571 572 + '@did-plc/lib@0.0.1': 573 + resolution: {integrity: sha512-RkY5w9DbYMco3SjeepqIiMveqz35exjlVDipCs2gz9AXF4/cp9hvmrp9zUWEw2vny+FjV8vGEN7QpaXWaO6nhg==} 574 + 575 + '@did-plc/lib@0.0.4': 576 + resolution: {integrity: sha512-Omeawq3b8G/c/5CtkTtzovSOnWuvIuCI4GTJNrt1AmCskwEQV7zbX5d6km1mjJNbE0gHuQPTVqZxLVqetNbfwA==} 577 + 578 + '@did-plc/server@0.0.1': 579 + resolution: {integrity: sha512-GtxxHcOrOQ6fNI1ufq3Zqjc2PtWqPZOdsuzlwtxiH9XibUGwDkb0GmaBHyU5GiOxOKZEW1GspZ8mreBA6XOlTQ==} 580 + 286 581 '@drizzle-team/brocli@0.10.2': 287 582 resolution: {integrity: sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w==} 583 + 584 + '@emnapi/runtime@1.9.2': 585 + resolution: {integrity: sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw==} 288 586 289 587 '@esbuild-kit/core-utils@3.3.2': 290 588 resolution: {integrity: sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==} ··· 876 1174 cpu: [x64] 877 1175 os: [win32] 878 1176 1177 + '@fastify/busboy@2.1.1': 1178 + resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} 1179 + engines: {node: '>=14'} 1180 + 1181 + '@growthbook/growthbook@1.6.5': 1182 + resolution: {integrity: sha512-mUaMsgeUTpRIUOTn33EUXHRK6j7pxBjwqH4WpQyq+pukjd1AIzWlEa6w7i6bInJUcweGgP2beXZmaP6b6UPn7A==} 1183 + engines: {node: '>=10'} 1184 + 1185 + '@grpc/grpc-js@1.14.3': 1186 + resolution: {integrity: sha512-Iq8QQQ/7X3Sac15oB6p0FmUg/klxQvXLeileoqrTRGJYLV+/9tubbr9ipz0GKHjmXVsgFPo/+W+2cA8eNcR+XA==} 1187 + engines: {node: '>=12.10.0'} 1188 + 1189 + '@grpc/proto-loader@0.7.15': 1190 + resolution: {integrity: sha512-tMXdRCfYVixjuFK+Hk0Q1s38gV9zDiDJfWL3h1rv4Qc39oILCu1TRTDt7+fGUI8K4G1Fj125Hx/ru3azECWTyQ==} 1191 + engines: {node: '>=6'} 1192 + hasBin: true 1193 + 1194 + '@grpc/proto-loader@0.8.0': 1195 + resolution: {integrity: sha512-rc1hOQtjIWGxcxpb9aHAfLpIctjEnsDehj0DAiVfBlmT84uvR0uUtN2hEi/ecvWVjXUGf5qPF4qEgiLOx1YIMQ==} 1196 + engines: {node: '>=6'} 1197 + hasBin: true 1198 + 1199 + '@hapi/accept@6.0.3': 1200 + resolution: {integrity: sha512-p72f9k56EuF0n3MwlBNThyVE5PXX40g+aQh+C/xbKrfzahM2Oispv3AXmOIU51t3j77zay1qrX7IIziZXspMlw==} 1201 + 1202 + '@hapi/address@5.1.1': 1203 + resolution: {integrity: sha512-A+po2d/dVoY7cYajycYI43ZbYMXukuopIsqCjh5QzsBCipDtdofHntljDlpccMjIfTy6UOkg+5KPriwYch2bXA==} 1204 + engines: {node: '>=14.0.0'} 1205 + 1206 + '@hapi/boom@10.0.1': 1207 + resolution: {integrity: sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==} 1208 + 1209 + '@hapi/bourne@3.0.0': 1210 + resolution: {integrity: sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==} 1211 + 1212 + '@hapi/content@6.0.1': 1213 + resolution: {integrity: sha512-lQ2vOoFMNYxwKVnKf+3Pi3PfoviM4EJYlT9JbrBPfEc0xKMiVDqqXF8UTE1S1oKhHQliWSP5t6zTKNlmaXBGcQ==} 1214 + 1215 + '@hapi/hoek@11.0.7': 1216 + resolution: {integrity: sha512-HV5undWkKzcB4RZUusqOpcgxOaq6VOAH7zhhIr2g3G8NF/MlFO75SjOr2NfuSx0Mh40+1FqCkagKLJRykUWoFQ==} 1217 + 1218 + '@img/sharp-darwin-arm64@0.33.5': 1219 + resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} 1220 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 1221 + cpu: [arm64] 1222 + os: [darwin] 1223 + 1224 + '@img/sharp-darwin-x64@0.33.5': 1225 + resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} 1226 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 1227 + cpu: [x64] 1228 + os: [darwin] 1229 + 1230 + '@img/sharp-libvips-darwin-arm64@1.0.4': 1231 + resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} 1232 + cpu: [arm64] 1233 + os: [darwin] 1234 + 1235 + '@img/sharp-libvips-darwin-x64@1.0.4': 1236 + resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} 1237 + cpu: [x64] 1238 + os: [darwin] 1239 + 1240 + '@img/sharp-libvips-linux-arm64@1.0.4': 1241 + resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} 1242 + cpu: [arm64] 1243 + os: [linux] 1244 + 1245 + '@img/sharp-libvips-linux-arm@1.0.5': 1246 + resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} 1247 + cpu: [arm] 1248 + os: [linux] 1249 + 1250 + '@img/sharp-libvips-linux-s390x@1.0.4': 1251 + resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} 1252 + cpu: [s390x] 1253 + os: [linux] 1254 + 1255 + '@img/sharp-libvips-linux-x64@1.0.4': 1256 + resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} 1257 + cpu: [x64] 1258 + os: [linux] 1259 + 1260 + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': 1261 + resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} 1262 + cpu: [arm64] 1263 + os: [linux] 1264 + 1265 + '@img/sharp-libvips-linuxmusl-x64@1.0.4': 1266 + resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} 1267 + cpu: [x64] 1268 + os: [linux] 1269 + 1270 + '@img/sharp-linux-arm64@0.33.5': 1271 + resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} 1272 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 1273 + cpu: [arm64] 1274 + os: [linux] 1275 + 1276 + '@img/sharp-linux-arm@0.33.5': 1277 + resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} 1278 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 1279 + cpu: [arm] 1280 + os: [linux] 1281 + 1282 + '@img/sharp-linux-s390x@0.33.5': 1283 + resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} 1284 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 1285 + cpu: [s390x] 1286 + os: [linux] 1287 + 1288 + '@img/sharp-linux-x64@0.33.5': 1289 + resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} 1290 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 1291 + cpu: [x64] 1292 + os: [linux] 1293 + 1294 + '@img/sharp-linuxmusl-arm64@0.33.5': 1295 + resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} 1296 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 1297 + cpu: [arm64] 1298 + os: [linux] 1299 + 1300 + '@img/sharp-linuxmusl-x64@0.33.5': 1301 + resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} 1302 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 1303 + cpu: [x64] 1304 + os: [linux] 1305 + 1306 + '@img/sharp-wasm32@0.33.5': 1307 + resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} 1308 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 1309 + cpu: [wasm32] 1310 + 1311 + '@img/sharp-win32-ia32@0.33.5': 1312 + resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} 1313 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 1314 + cpu: [ia32] 1315 + os: [win32] 1316 + 1317 + '@img/sharp-win32-x64@0.33.5': 1318 + resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} 1319 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 1320 + cpu: [x64] 1321 + os: [win32] 1322 + 879 1323 '@ioredis/commands@1.5.1': 880 1324 resolution: {integrity: sha512-JH8ZL/ywcJyR9MmJ5BNqZllXNZQqQbnVZOqpPQqE1vHiFgAw4NHbvE0FOduNU8IX9babitBT46571OnPTT0Zcw==} 881 1325 1326 + '@ipld/dag-cbor@7.0.3': 1327 + resolution: {integrity: sha512-1VVh2huHsuohdXC1bGJNE8WR72slZ9XE2T3wbBBq31dm7ZBatmKLLxrB+XAqafxfRFjv08RZmj/W/ZqaM13AuA==} 1328 + 882 1329 '@isaacs/cliui@8.0.2': 883 1330 resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} 884 1331 engines: {node: '>=12'} ··· 906 1353 '@jridgewell/trace-mapping@0.3.31': 907 1354 resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} 908 1355 1356 + '@js-sdsl/ordered-map@4.4.2': 1357 + resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==} 1358 + 909 1359 '@mapbox/node-pre-gyp@2.0.3': 910 1360 resolution: {integrity: sha512-uwPAhccfFJlsfCxMYTwOdVfOz3xqyj8xYL3zJj8f0pb30tLohnnFPhLuqp4/qoEz8sNxe4SESZedcBojRefIzg==} 911 1361 engines: {node: '>=18'} ··· 918 1368 '@noble/hashes@1.8.0': 919 1369 resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} 920 1370 engines: {node: ^14.21.3 || >=16} 1371 + 1372 + '@noble/secp256k1@1.7.2': 1373 + resolution: {integrity: sha512-/qzwYl5eFLH8OWIecQWM31qld2g1NfjgylK+TNhqtaUKP37Nm+Y+z30Fjhw0Ct8p9yCQEm2N3W/AckdIb3SMcQ==} 921 1374 922 1375 '@nodelib/fs.scandir@2.1.5': 923 1376 resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} ··· 1041 1494 '@poppinss/exception@1.2.3': 1042 1495 resolution: {integrity: sha512-dCED+QRChTVatE9ibtoaxc+WkdzOSjYTKi/+uacHWIsfodVfpsueo3+DKpgU5Px8qXjgmXkSvhXvSCz3fnP9lw==} 1043 1496 1497 + '@protobufjs/aspromise@1.1.2': 1498 + resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} 1499 + 1500 + '@protobufjs/base64@1.1.2': 1501 + resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} 1502 + 1503 + '@protobufjs/codegen@2.0.4': 1504 + resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} 1505 + 1506 + '@protobufjs/eventemitter@1.1.0': 1507 + resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} 1508 + 1509 + '@protobufjs/fetch@1.1.0': 1510 + resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} 1511 + 1512 + '@protobufjs/float@1.0.2': 1513 + resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} 1514 + 1515 + '@protobufjs/inquire@1.1.0': 1516 + resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} 1517 + 1518 + '@protobufjs/path@1.1.2': 1519 + resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} 1520 + 1521 + '@protobufjs/pool@1.1.0': 1522 + resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} 1523 + 1524 + '@protobufjs/utf8@1.1.0': 1525 + resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} 1526 + 1044 1527 '@rollup/plugin-alias@6.0.0': 1045 1528 resolution: {integrity: sha512-tPCzJOtS7uuVZd+xPhoy5W4vThe6KWXNmsFCNktaAh5RTqcLiSfT4huPQIXkgJ6YCOjJHvecOAzQxLFhPxKr+g==} 1046 1529 engines: {node: '>=20.19.0'} ··· 1267 1750 resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} 1268 1751 engines: {node: '>=18'} 1269 1752 1753 + '@smithy/abort-controller@4.2.12': 1754 + resolution: {integrity: sha512-xolrFw6b+2iYGl6EcOL7IJY71vvyZ0DJ3mcKtpykqPe2uscwtzDZJa1uVQXyP7w9Dd+kGwYnPbMsJrGISKiY/Q==} 1755 + engines: {node: '>=18.0.0'} 1756 + 1757 + '@smithy/chunked-blob-reader-native@4.2.3': 1758 + resolution: {integrity: sha512-jA5k5Udn7Y5717L86h4EIv06wIr3xn8GM1qHRi/Nf31annXcXHJjBKvgztnbn2TxH3xWrPBfgwHsOwZf0UmQWw==} 1759 + engines: {node: '>=18.0.0'} 1760 + 1761 + '@smithy/chunked-blob-reader@5.2.2': 1762 + resolution: {integrity: sha512-St+kVicSyayWQca+I1rGitaOEH6uKgE8IUWoYnnEX26SWdWQcL6LvMSD19Lg+vYHKdT9B2Zuu7rd3i6Wnyb/iw==} 1763 + engines: {node: '>=18.0.0'} 1764 + 1765 + '@smithy/config-resolver@4.4.13': 1766 + resolution: {integrity: sha512-iIzMC5NmOUP6WL6o8iPBjFhUhBZ9pPjpUpQYWMUFQqKyXXzOftbfK8zcQCz/jFV1Psmf05BK5ypx4K2r4Tnwdg==} 1767 + engines: {node: '>=18.0.0'} 1768 + 1769 + '@smithy/core@3.23.13': 1770 + resolution: {integrity: sha512-J+2TT9D6oGsUVXVEMvz8h2EmdVnkBiy2auCie4aSJMvKlzUtO5hqjEzXhoCUkIMo7gAYjbQcN0g/MMSXEhDs1Q==} 1771 + engines: {node: '>=18.0.0'} 1772 + 1773 + '@smithy/credential-provider-imds@4.2.12': 1774 + resolution: {integrity: sha512-cr2lR792vNZcYMriSIj+Um3x9KWrjcu98kn234xA6reOAFMmbRpQMOv8KPgEmLLtx3eldU6c5wALKFqNOhugmg==} 1775 + engines: {node: '>=18.0.0'} 1776 + 1777 + '@smithy/eventstream-codec@4.2.12': 1778 + resolution: {integrity: sha512-FE3bZdEl62ojmy8x4FHqxq2+BuOHlcxiH5vaZ6aqHJr3AIZzwF5jfx8dEiU/X0a8RboyNDjmXjlbr8AdEyLgiA==} 1779 + engines: {node: '>=18.0.0'} 1780 + 1781 + '@smithy/eventstream-serde-browser@4.2.12': 1782 + resolution: {integrity: sha512-XUSuMxlTxV5pp4VpqZf6Sa3vT/Q75FVkLSpSSE3KkWBvAQWeuWt1msTv8fJfgA4/jcJhrbrbMzN1AC/hvPmm5A==} 1783 + engines: {node: '>=18.0.0'} 1784 + 1785 + '@smithy/eventstream-serde-config-resolver@4.3.12': 1786 + resolution: {integrity: sha512-7epsAZ3QvfHkngz6RXQYseyZYHlmWXSTPOfPmXkiS+zA6TBNo1awUaMFL9vxyXlGdoELmCZyZe1nQE+imbmV+Q==} 1787 + engines: {node: '>=18.0.0'} 1788 + 1789 + '@smithy/eventstream-serde-node@4.2.12': 1790 + resolution: {integrity: sha512-D1pFuExo31854eAvg89KMn9Oab/wEeJR6Buy32B49A9Ogdtx5fwZPqBHUlDzaCDpycTFk2+fSQgX689Qsk7UGA==} 1791 + engines: {node: '>=18.0.0'} 1792 + 1793 + '@smithy/eventstream-serde-universal@4.2.12': 1794 + resolution: {integrity: sha512-+yNuTiyBACxOJUTvbsNsSOfH9G9oKbaJE1lNL3YHpGcuucl6rPZMi3nrpehpVOVR2E07YqFFmtwpImtpzlouHQ==} 1795 + engines: {node: '>=18.0.0'} 1796 + 1797 + '@smithy/fetch-http-handler@5.3.15': 1798 + resolution: {integrity: sha512-T4jFU5N/yiIfrtrsb9uOQn7RdELdM/7HbyLNr6uO/mpkj1ctiVs7CihVr51w4LyQlXWDpXFn4BElf1WmQvZu/A==} 1799 + engines: {node: '>=18.0.0'} 1800 + 1801 + '@smithy/hash-blob-browser@4.2.13': 1802 + resolution: {integrity: sha512-YrF4zWKh+ghLuquldj6e/RzE3xZYL8wIPfkt0MqCRphVICjyyjH8OwKD7LLlKpVEbk4FLizFfC1+gwK6XQdR3g==} 1803 + engines: {node: '>=18.0.0'} 1804 + 1805 + '@smithy/hash-node@4.2.12': 1806 + resolution: {integrity: sha512-QhBYbGrbxTkZ43QoTPrK72DoYviDeg6YKDrHTMJbbC+A0sml3kSjzFtXP7BtbyJnXojLfTQldGdUR0RGD8dA3w==} 1807 + engines: {node: '>=18.0.0'} 1808 + 1809 + '@smithy/hash-stream-node@4.2.12': 1810 + resolution: {integrity: sha512-O3YbmGExeafuM/kP7Y8r6+1y0hIh3/zn6GROx0uNlB54K9oihAL75Qtc+jFfLNliTi6pxOAYZrRKD9A7iA6UFw==} 1811 + engines: {node: '>=18.0.0'} 1812 + 1813 + '@smithy/invalid-dependency@4.2.12': 1814 + resolution: {integrity: sha512-/4F1zb7Z8LOu1PalTdESFHR0RbPwHd3FcaG1sI3UEIriQTWakysgJr65lc1jj6QY5ye7aFsisajotH6UhWfm/g==} 1815 + engines: {node: '>=18.0.0'} 1816 + 1817 + '@smithy/is-array-buffer@2.2.0': 1818 + resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} 1819 + engines: {node: '>=14.0.0'} 1820 + 1821 + '@smithy/is-array-buffer@4.2.2': 1822 + resolution: {integrity: sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow==} 1823 + engines: {node: '>=18.0.0'} 1824 + 1825 + '@smithy/md5-js@4.2.12': 1826 + resolution: {integrity: sha512-W/oIpHCpWU2+iAkfZYyGWE+qkpuf3vEXHLxQQDx9FPNZTTdnul0dZ2d/gUFrtQ5je1G2kp4cjG0/24YueG2LbQ==} 1827 + engines: {node: '>=18.0.0'} 1828 + 1829 + '@smithy/middleware-content-length@4.2.12': 1830 + resolution: {integrity: sha512-YE58Yz+cvFInWI/wOTrB+DbvUVz/pLn5mC5MvOV4fdRUc6qGwygyngcucRQjAhiCEbmfLOXX0gntSIcgMvAjmA==} 1831 + engines: {node: '>=18.0.0'} 1832 + 1833 + '@smithy/middleware-endpoint@4.4.28': 1834 + resolution: {integrity: sha512-p1gfYpi91CHcs5cBq982UlGlDrxoYUX6XdHSo91cQ2KFuz6QloHosO7Jc60pJiVmkWrKOV8kFYlGFFbQ2WUKKQ==} 1835 + engines: {node: '>=18.0.0'} 1836 + 1837 + '@smithy/middleware-retry@4.4.46': 1838 + resolution: {integrity: sha512-SpvWNNOPOrKQGUqZbEPO+es+FRXMWvIyzUKUOYdDgdlA6BdZj/R58p4umoQ76c2oJC44PiM7mKizyyex1IJzow==} 1839 + engines: {node: '>=18.0.0'} 1840 + 1841 + '@smithy/middleware-serde@4.2.16': 1842 + resolution: {integrity: sha512-beqfV+RZ9RSv+sQqor3xroUUYgRFCGRw6niGstPG8zO9LgTl0B0MCucxjmrH/2WwksQN7UUgI7KNANoZv+KALA==} 1843 + engines: {node: '>=18.0.0'} 1844 + 1845 + '@smithy/middleware-stack@4.2.12': 1846 + resolution: {integrity: sha512-kruC5gRHwsCOuyCd4ouQxYjgRAym2uDlCvQ5acuMtRrcdfg7mFBg6blaxcJ09STpt3ziEkis6bhg1uwrWU7txw==} 1847 + engines: {node: '>=18.0.0'} 1848 + 1849 + '@smithy/node-config-provider@4.3.12': 1850 + resolution: {integrity: sha512-tr2oKX2xMcO+rBOjobSwVAkV05SIfUKz8iI53rzxEmgW3GOOPOv0UioSDk+J8OpRQnpnhsO3Af6IEBabQBVmiw==} 1851 + engines: {node: '>=18.0.0'} 1852 + 1853 + '@smithy/node-http-handler@4.5.1': 1854 + resolution: {integrity: sha512-ejjxdAXjkPIs9lyYyVutOGNOraqUE9v/NjGMKwwFrfOM354wfSD8lmlj8hVwUzQmlLLF4+udhfCX9Exnbmvfzw==} 1855 + engines: {node: '>=18.0.0'} 1856 + 1857 + '@smithy/property-provider@4.2.12': 1858 + resolution: {integrity: sha512-jqve46eYU1v7pZ5BM+fmkbq3DerkSluPr5EhvOcHxygxzD05ByDRppRwRPPpFrsFo5yDtCYLKu+kreHKVrvc7A==} 1859 + engines: {node: '>=18.0.0'} 1860 + 1861 + '@smithy/protocol-http@5.3.12': 1862 + resolution: {integrity: sha512-fit0GZK9I1xoRlR4jXmbLhoN0OdEpa96ul8M65XdmXnxXkuMxM0Y8HDT0Fh0Xb4I85MBvBClOzgSrV1X2s1Hxw==} 1863 + engines: {node: '>=18.0.0'} 1864 + 1865 + '@smithy/querystring-builder@4.2.12': 1866 + resolution: {integrity: sha512-6wTZjGABQufekycfDGMEB84BgtdOE/rCVTov+EDXQ8NHKTUNIp/j27IliwP7tjIU9LR+sSzyGBOXjeEtVgzCHg==} 1867 + engines: {node: '>=18.0.0'} 1868 + 1869 + '@smithy/querystring-parser@4.2.12': 1870 + resolution: {integrity: sha512-P2OdvrgiAKpkPNKlKUtWbNZKB1XjPxM086NeVhK+W+wI46pIKdWBe5QyXvhUm3MEcyS/rkLvY8rZzyUdmyDZBw==} 1871 + engines: {node: '>=18.0.0'} 1872 + 1873 + '@smithy/service-error-classification@4.2.12': 1874 + resolution: {integrity: sha512-LlP29oSQN0Tw0b6D0Xo6BIikBswuIiGYbRACy5ujw/JgWSzTdYj46U83ssf6Ux0GyNJVivs2uReU8pt7Eu9okQ==} 1875 + engines: {node: '>=18.0.0'} 1876 + 1877 + '@smithy/shared-ini-file-loader@4.4.7': 1878 + resolution: {integrity: sha512-HrOKWsUb+otTeo1HxVWeEb99t5ER1XrBi/xka2Wv6NVmTbuCUC1dvlrksdvxFtODLBjsC+PHK+fuy2x/7Ynyiw==} 1879 + engines: {node: '>=18.0.0'} 1880 + 1881 + '@smithy/signature-v4@5.3.12': 1882 + resolution: {integrity: sha512-B/FBwO3MVOL00DaRSXfXfa/TRXRheagt/q5A2NM13u7q+sHS59EOVGQNfG7DkmVtdQm5m3vOosoKAXSqn/OEgw==} 1883 + engines: {node: '>=18.0.0'} 1884 + 1885 + '@smithy/smithy-client@4.12.8': 1886 + resolution: {integrity: sha512-aJaAX7vHe5i66smoSSID7t4rKY08PbD8EBU7DOloixvhOozfYWdcSYE4l6/tjkZ0vBZhGjheWzB2mh31sLgCMA==} 1887 + engines: {node: '>=18.0.0'} 1888 + 1889 + '@smithy/types@4.13.1': 1890 + resolution: {integrity: sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g==} 1891 + engines: {node: '>=18.0.0'} 1892 + 1893 + '@smithy/url-parser@4.2.12': 1894 + resolution: {integrity: sha512-wOPKPEpso+doCZGIlr+e1lVI6+9VAKfL4kZWFgzVgGWY2hZxshNKod4l2LXS3PRC9otH/JRSjtEHqQ/7eLciRA==} 1895 + engines: {node: '>=18.0.0'} 1896 + 1897 + '@smithy/util-base64@4.3.2': 1898 + resolution: {integrity: sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ==} 1899 + engines: {node: '>=18.0.0'} 1900 + 1901 + '@smithy/util-body-length-browser@4.2.2': 1902 + resolution: {integrity: sha512-JKCrLNOup3OOgmzeaKQwi4ZCTWlYR5H4Gm1r2uTMVBXoemo1UEghk5vtMi1xSu2ymgKVGW631e2fp9/R610ZjQ==} 1903 + engines: {node: '>=18.0.0'} 1904 + 1905 + '@smithy/util-body-length-node@4.2.3': 1906 + resolution: {integrity: sha512-ZkJGvqBzMHVHE7r/hcuCxlTY8pQr1kMtdsVPs7ex4mMU+EAbcXppfo5NmyxMYi2XU49eqaz56j2gsk4dHHPG/g==} 1907 + engines: {node: '>=18.0.0'} 1908 + 1909 + '@smithy/util-buffer-from@2.2.0': 1910 + resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} 1911 + engines: {node: '>=14.0.0'} 1912 + 1913 + '@smithy/util-buffer-from@4.2.2': 1914 + resolution: {integrity: sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q==} 1915 + engines: {node: '>=18.0.0'} 1916 + 1917 + '@smithy/util-config-provider@4.2.2': 1918 + resolution: {integrity: sha512-dWU03V3XUprJwaUIFVv4iOnS1FC9HnMHDfUrlNDSh4315v0cWyaIErP8KiqGVbf5z+JupoVpNM7ZB3jFiTejvQ==} 1919 + engines: {node: '>=18.0.0'} 1920 + 1921 + '@smithy/util-defaults-mode-browser@4.3.44': 1922 + resolution: {integrity: sha512-eZg6XzaCbVr2S5cAErU5eGBDaOVTuTo1I65i4tQcHENRcZ8rMWhQy1DaIYUSLyZjsfXvmCqZrstSMYyGFocvHA==} 1923 + engines: {node: '>=18.0.0'} 1924 + 1925 + '@smithy/util-defaults-mode-node@4.2.48': 1926 + resolution: {integrity: sha512-FqOKTlqSaoV3nzO55pMs5NBnZX8EhoI0DGmn9kbYeXWppgHD6dchyuj2HLqp4INJDJbSrj6OFYJkAh/WhSzZPg==} 1927 + engines: {node: '>=18.0.0'} 1928 + 1929 + '@smithy/util-endpoints@3.3.3': 1930 + resolution: {integrity: sha512-VACQVe50j0HZPjpwWcjyT51KUQ4AnsvEaQ2lKHOSL4mNLD0G9BjEniQ+yCt1qqfKfiAHRAts26ud7hBjamrwig==} 1931 + engines: {node: '>=18.0.0'} 1932 + 1933 + '@smithy/util-hex-encoding@4.2.2': 1934 + resolution: {integrity: sha512-Qcz3W5vuHK4sLQdyT93k/rfrUwdJ8/HZ+nMUOyGdpeGA1Wxt65zYwi3oEl9kOM+RswvYq90fzkNDahPS8K0OIg==} 1935 + engines: {node: '>=18.0.0'} 1936 + 1937 + '@smithy/util-middleware@4.2.12': 1938 + resolution: {integrity: sha512-Er805uFUOvgc0l8nv0e0su0VFISoxhJ/AwOn3gL2NWNY2LUEldP5WtVcRYSQBcjg0y9NfG8JYrCJaYDpupBHJQ==} 1939 + engines: {node: '>=18.0.0'} 1940 + 1941 + '@smithy/util-retry@4.2.13': 1942 + resolution: {integrity: sha512-qQQsIvL0MGIbUjeSrg0/VlQ3jGNKyM3/2iU3FPNgy01z+Sp4OvcaxbgIoFOTvB61ZoohtutuOvOcgmhbD0katQ==} 1943 + engines: {node: '>=18.0.0'} 1944 + 1945 + '@smithy/util-stream@4.5.21': 1946 + resolution: {integrity: sha512-KzSg+7KKywLnkoKejRtIBXDmwBfjGvg1U1i/etkC7XSWUyFCoLno1IohV2c74IzQqdhX5y3uE44r/8/wuK+A7Q==} 1947 + engines: {node: '>=18.0.0'} 1948 + 1949 + '@smithy/util-uri-escape@4.2.2': 1950 + resolution: {integrity: sha512-2kAStBlvq+lTXHyAZYfJRb/DfS3rsinLiwb+69SstC9Vb0s9vNWkRwpnj918Pfi85mzi42sOqdV72OLxWAISnw==} 1951 + engines: {node: '>=18.0.0'} 1952 + 1953 + '@smithy/util-utf8@2.3.0': 1954 + resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} 1955 + engines: {node: '>=14.0.0'} 1956 + 1957 + '@smithy/util-utf8@4.2.2': 1958 + resolution: {integrity: sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw==} 1959 + engines: {node: '>=18.0.0'} 1960 + 1961 + '@smithy/util-waiter@4.2.14': 1962 + resolution: {integrity: sha512-2zqq5o/oizvMaFUlNiTyZ7dbgYv1a893aGut2uaxtbzTx/VYYnRxWzDHuD/ftgcw94ffenua+ZNLrbqwUYE+Bg==} 1963 + engines: {node: '>=18.0.0'} 1964 + 1965 + '@smithy/uuid@1.1.2': 1966 + resolution: {integrity: sha512-O/IEdcCUKkubz60tFbGA7ceITTAJsty+lBjNoorP4Z6XRqaFb/OjQjZODophEcuq68nKm6/0r+6/lLQ+XVpk8g==} 1967 + engines: {node: '>=18.0.0'} 1968 + 1270 1969 '@solidjs/meta@0.29.4': 1271 1970 resolution: {integrity: sha512-zdIWBGpR9zGx1p1bzIPqF5Gs+Ks/BH8R6fWhmUa/dcK1L2rUC8BAcZJzNRYBQv74kScf1TSOs0EY//Vd/I0V8g==} 1272 1971 peerDependencies: ··· 1302 2001 resolution: {integrity: sha512-a05fzK+jBGacsSAc1vE8an7lpBh4H0PyIEcivtEyHLomgSeElAJxm9E2It/0nYRZ5Lh23m0okbhzJNaYWZpAOg==} 1303 2002 engines: {node: '>=12'} 1304 2003 2004 + '@tokenizer/token@0.3.0': 2005 + resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} 2006 + 1305 2007 '@ts-morph/common@0.28.1': 1306 2008 resolution: {integrity: sha512-W74iWf7ILp1ZKNYXY5qbddNaml7e9Sedv5lvU1V8lftlitkc9Pq1A+jlH23ltDgWYeZFFEqGCD1Ies9hqu3O+g==} 1307 2009 ··· 1317 2019 '@types/babel__traverse@7.28.0': 1318 2020 resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} 1319 2021 2022 + '@types/bn.js@5.2.0': 2023 + resolution: {integrity: sha512-DLbJ1BPqxvQhIGbeu8VbUC1DiAiahHtAYvA0ZEAa4P31F7IaArc8z3C3BRQdWX4mtLQuABG4yzp76ZrS02Ui1Q==} 2024 + 1320 2025 '@types/braces@3.0.5': 1321 2026 resolution: {integrity: sha512-SQFof9H+LXeWNz8wDe7oN5zu7ket0qwMu5vZubW4GCJ8Kkeh6nBWUz87+KTz/G3Kqsrp0j/W253XJb3KMEeg3w==} 2027 + 2028 + '@types/elliptic@6.4.18': 2029 + resolution: {integrity: sha512-UseG6H5vjRiNpQvrhy4VF/JXdA3V/Fp5amvveaL+fs28BZ6xIKJBPnUPRlEaZpysD9MbpfaLi8lbl7PGUAkpWw==} 1322 2030 1323 2031 '@types/estree@1.0.8': 1324 2032 resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} ··· 1326 2034 '@types/hast@3.0.4': 1327 2035 resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} 1328 2036 2037 + '@types/http-errors@2.0.5': 2038 + resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==} 2039 + 1329 2040 '@types/mdast@4.0.4': 1330 2041 resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} 1331 2042 ··· 1370 2081 abort-controller@3.0.0: 1371 2082 resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} 1372 2083 engines: {node: '>=6.5'} 2084 + 2085 + accepts@1.3.8: 2086 + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} 2087 + engines: {node: '>= 0.6'} 1373 2088 1374 2089 acorn-import-attributes@1.9.5: 1375 2090 resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} ··· 1434 2149 resolution: {integrity: sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==} 1435 2150 engines: {node: '>= 14'} 1436 2151 2152 + array-flatten@1.1.1: 2153 + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} 2154 + 2155 + asn1.js@5.4.1: 2156 + resolution: {integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==} 2157 + 1437 2158 ast-types@0.16.1: 1438 2159 resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} 1439 2160 engines: {node: '>=4'} ··· 1448 2169 async@3.2.6: 1449 2170 resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} 1450 2171 2172 + asynckit@0.4.0: 2173 + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} 2174 + 1451 2175 atomic-sleep@1.0.0: 1452 2176 resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} 1453 2177 engines: {node: '>=8.0.0'} 1454 2178 1455 2179 await-lock@2.2.2: 1456 2180 resolution: {integrity: sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw==} 2181 + 2182 + axios@1.14.0: 2183 + resolution: {integrity: sha512-3Y8yrqLSwjuzpXuZ0oIYZ/XGgLwUIBU3uLvbcpb0pidD9ctpShJd43KSlEEkVQg6DS0G9NKyzOvBfUtDKEyHvQ==} 1457 2184 1458 2185 b4a@1.8.0: 1459 2186 resolution: {integrity: sha512-qRuSmNSkGQaHwNbM7J78Wwy+ghLEYF1zNrSeMxj4Kgw6y33O3mXcQ6Ie9fRvfU/YnxWkOchPXbaLb73TkIsfdg==} ··· 1536 2263 engines: {node: '>=6.0.0'} 1537 2264 hasBin: true 1538 2265 2266 + better-sqlite3@12.8.0: 2267 + resolution: {integrity: sha512-RxD2Vd96sQDjQr20kdP+F+dK/1OUNiVOl200vKBZY8u0vTwysfolF6Hq+3ZK2+h8My9YvZhHsF+RSGZW2VYrPQ==} 2268 + engines: {node: 20.x || 22.x || 23.x || 24.x || 25.x} 2269 + 2270 + big-integer@1.6.52: 2271 + resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} 2272 + engines: {node: '>=0.6'} 2273 + 2274 + bignumber.js@9.3.1: 2275 + resolution: {integrity: sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==} 2276 + 1539 2277 bindings@1.5.0: 1540 2278 resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} 2279 + 2280 + bl@4.1.0: 2281 + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} 2282 + 2283 + bn.js@4.12.3: 2284 + resolution: {integrity: sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==} 2285 + 2286 + body-parser@1.20.4: 2287 + resolution: {integrity: sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==} 2288 + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} 2289 + 2290 + bowser@2.14.1: 2291 + resolution: {integrity: sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==} 1541 2292 1542 2293 boxen@8.0.1: 1543 2294 resolution: {integrity: sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==} ··· 1554 2305 resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 1555 2306 engines: {node: '>=8'} 1556 2307 2308 + brorand@1.1.0: 2309 + resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} 2310 + 1557 2311 browserslist@4.28.2: 1558 2312 resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==} 1559 2313 engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} ··· 1566 2320 buffer-from@1.1.2: 1567 2321 resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} 1568 2322 2323 + buffer@5.6.0: 2324 + resolution: {integrity: sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==} 2325 + 2326 + buffer@5.7.1: 2327 + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} 2328 + 1569 2329 buffer@6.0.3: 1570 2330 resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} 1571 2331 ··· 1573 2333 resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} 1574 2334 engines: {node: '>=18'} 1575 2335 2336 + bytes@3.1.2: 2337 + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} 2338 + engines: {node: '>= 0.8'} 2339 + 1576 2340 c12@3.3.3: 1577 2341 resolution: {integrity: sha512-750hTRvgBy5kcMNPdh95Qo+XUBeGo8C7nsKSmedDmaQI+E0r82DwHeM6vBewDe4rGFbnxoa4V9pw+sPh5+Iz8Q==} 1578 2342 peerDependencies: ··· 1581 2345 magicast: 1582 2346 optional: true 1583 2347 2348 + call-bind-apply-helpers@1.0.2: 2349 + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} 2350 + engines: {node: '>= 0.4'} 2351 + 2352 + call-bound@1.0.4: 2353 + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} 2354 + engines: {node: '>= 0.4'} 2355 + 1584 2356 camelcase@8.0.0: 1585 2357 resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} 1586 2358 engines: {node: '>=16'} ··· 1588 2360 caniuse-lite@1.0.30001782: 1589 2361 resolution: {integrity: sha512-dZcaJLJeDMh4rELYFw1tvSn1bhZWYFOt468FcbHHxx/Z/dFidd1I6ciyFdi3iwfQCyOjqo9upF6lGQYtMiJWxw==} 1590 2362 2363 + cborg@1.10.2: 2364 + resolution: {integrity: sha512-b3tFPA9pUr2zCUiCfRd2+wok2/LBSNUMKOuRRok+WlvvAgEt/PlbgPTsZUcwCOs53IJvLgTp0eotwtosE6njug==} 2365 + hasBin: true 2366 + 1591 2367 ccount@2.0.1: 1592 2368 resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} 1593 2369 ··· 1608 2384 chokidar@5.0.0: 1609 2385 resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} 1610 2386 engines: {node: '>= 20.19.0'} 2387 + 2388 + chownr@1.1.4: 2389 + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} 1611 2390 1612 2391 chownr@3.0.0: 1613 2392 resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} ··· 1639 2418 resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==} 1640 2419 engines: {node: '>=0.10.0'} 1641 2420 2421 + cockatiel@3.2.1: 2422 + resolution: {integrity: sha512-gfrHV6ZPkquExvMh9IOkKsBzNDk6sDuZ6DdBGUBkvFnTCqCxzpuq48RySgP0AnaqQkw2zynOFj9yly6T1Q2G5Q==} 2423 + engines: {node: '>=16'} 2424 + 1642 2425 code-block-writer@13.0.3: 1643 2426 resolution: {integrity: sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==} 1644 2427 ··· 1649 2432 color-name@1.1.4: 1650 2433 resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 1651 2434 2435 + color-string@1.9.1: 2436 + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} 2437 + 2438 + color@4.2.3: 2439 + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} 2440 + engines: {node: '>=12.5.0'} 2441 + 2442 + combined-stream@1.0.8: 2443 + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} 2444 + engines: {node: '>= 0.8'} 2445 + 1652 2446 comma-separated-tokens@2.0.3: 1653 2447 resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} 1654 2448 ··· 1665 2459 resolution: {integrity: sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==} 1666 2460 engines: {node: '>= 14'} 1667 2461 2462 + compressible@2.0.18: 2463 + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} 2464 + engines: {node: '>= 0.6'} 2465 + 2466 + compression@1.8.1: 2467 + resolution: {integrity: sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==} 2468 + engines: {node: '>= 0.8.0'} 2469 + 1668 2470 confbox@0.1.8: 1669 2471 resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} 1670 2472 ··· 1675 2477 resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} 1676 2478 engines: {node: ^14.18.0 || >=16.10.0} 1677 2479 2480 + content-disposition@0.5.4: 2481 + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} 2482 + engines: {node: '>= 0.6'} 2483 + 2484 + content-type@1.0.5: 2485 + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} 2486 + engines: {node: '>= 0.6'} 2487 + 1678 2488 convert-source-map@2.0.0: 1679 2489 resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} 1680 2490 ··· 1686 2496 1687 2497 cookie-es@3.1.1: 1688 2498 resolution: {integrity: sha512-UaXxwISYJPTr9hwQxMFYZ7kNhSXboMXP+Z3TRX6f1/NyaGPfuNUZOWP1pUEb75B2HjfklIYLVRfWiFZJyC6Npg==} 2499 + 2500 + cookie-signature@1.0.7: 2501 + resolution: {integrity: sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==} 2502 + 2503 + cookie@0.7.2: 2504 + resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} 2505 + engines: {node: '>= 0.6'} 1689 2506 1690 2507 core-js@3.49.0: 1691 2508 resolution: {integrity: sha512-es1U2+YTtzpwkxVLwAFdSpaIMyQaq0PBgm3YD1W3Qpsn1NAmO3KSgZfu+oGSWVu6NvLHoHCV/aYcsE5wiB7ALg==} ··· 1693 2510 core-util-is@1.0.3: 1694 2511 resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} 1695 2512 2513 + cors@2.8.6: 2514 + resolution: {integrity: sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==} 2515 + engines: {node: '>= 0.10'} 2516 + 1696 2517 crc-32@1.2.2: 1697 2518 resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} 1698 2519 engines: {node: '>=0.8'} ··· 1725 2546 peerDependencies: 1726 2547 '@electric-sql/pglite': '*' 1727 2548 '@libsql/client': '*' 1728 - better-sqlite3: '*' 2549 + better-sqlite3: ^12.5.0 1729 2550 drizzle-orm: '*' 1730 2551 mysql2: '*' 1731 2552 sqlite3: '*' ··· 1760 2581 supports-color: 1761 2582 optional: true 1762 2583 2584 + decompress-response@6.0.0: 2585 + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} 2586 + engines: {node: '>=10'} 2587 + 2588 + deep-extend@0.6.0: 2589 + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} 2590 + engines: {node: '>=4.0.0'} 2591 + 1763 2592 deepmerge@4.3.1: 1764 2593 resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} 1765 2594 engines: {node: '>=0.10.0'} ··· 1779 2608 defu@6.1.4: 1780 2609 resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} 1781 2610 2611 + delay@5.0.0: 2612 + resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} 2613 + engines: {node: '>=10'} 2614 + 2615 + delayed-stream@1.0.0: 2616 + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} 2617 + engines: {node: '>=0.4.0'} 2618 + 1782 2619 denque@2.1.0: 1783 2620 resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} 1784 2621 engines: {node: '>=0.10'} ··· 1809 2646 resolution: {integrity: sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==} 1810 2647 engines: {node: '>=0.3.1'} 1811 2648 2649 + disposable-email-domains-js@1.24.0: 2650 + resolution: {integrity: sha512-IQz+XkhJYCaT58q2l9Pz5MFAHsHp1vJs3smTeEVpv7/6rvubc9RMbaFb8rQgBoIounXPAJyura5ynovFKrlQrg==} 2651 + 2652 + dom-mutator@0.6.0: 2653 + resolution: {integrity: sha512-iCt9o0aYfXMUkz/43ZOAUFQYotjGB+GNbYJiJdz4TgXkyToXbbRy5S6FbTp72lRBtfpUMwEc1KmpFEU4CZeoNg==} 2654 + engines: {node: '>=10'} 2655 + 2656 + dom-serializer@1.4.1: 2657 + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} 2658 + 2659 + domelementtype@2.3.0: 2660 + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} 2661 + 2662 + domhandler@4.3.1: 2663 + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} 2664 + engines: {node: '>= 4'} 2665 + 2666 + domutils@2.8.0: 2667 + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} 2668 + 1812 2669 dot-prop@10.1.0: 1813 2670 resolution: {integrity: sha512-MVUtAugQMOff5RnBy2d9N31iG0lNwg1qAoAOn7pOK5wf94WIaE3My2p3uwTQuvS2AcqchkcR3bHByjaM0mmi7Q==} 1814 2671 engines: {node: '>=20'} 1815 2672 2673 + dotenv-cli@7.4.4: 2674 + resolution: {integrity: sha512-XkBYCG0tPIes+YZr4SpfFv76SQrV/LeCE8CI7JSEMi3VR9MvTihCGTOtbIexD6i2mXF+6px7trb1imVCXSNMDw==} 2675 + hasBin: true 2676 + 2677 + dotenv-expand@10.0.0: 2678 + resolution: {integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==} 2679 + engines: {node: '>=12'} 2680 + 2681 + dotenv@16.6.1: 2682 + resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} 2683 + engines: {node: '>=12'} 2684 + 1816 2685 dotenv@17.3.1: 1817 2686 resolution: {integrity: sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==} 1818 2687 engines: {node: '>=12'} ··· 1840 2709 '@types/sql.js': '*' 1841 2710 '@vercel/postgres': '>=0.8.0' 1842 2711 '@xata.io/client': '*' 1843 - better-sqlite3: '>=7' 2712 + better-sqlite3: ^12.5.0 1844 2713 bun-types: '*' 1845 2714 expo-sqlite: '>=14.0.0' 1846 2715 knex: '*' ··· 1907 2776 sqlite3: 1908 2777 optional: true 1909 2778 2779 + dunder-proto@1.0.1: 2780 + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} 2781 + engines: {node: '>= 0.4'} 2782 + 1910 2783 duplexer@0.1.2: 1911 2784 resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} 1912 2785 ··· 1919 2792 electron-to-chromium@1.5.329: 1920 2793 resolution: {integrity: sha512-/4t+AS1l4S3ZC0Ja7PHFIWeBIxGA3QGqV8/yKsP36v7NcyUCl+bIcmw6s5zVuMIECWwBrAK/6QLzTmbJChBboQ==} 1921 2794 2795 + elliptic@6.6.1: 2796 + resolution: {integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==} 2797 + 1922 2798 emoji-regex-xs@1.0.0: 1923 2799 resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} 1924 2800 ··· 1935 2811 resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} 1936 2812 engines: {node: '>= 0.8'} 1937 2813 2814 + end-of-stream@1.4.5: 2815 + resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} 2816 + 2817 + entities@2.2.0: 2818 + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} 2819 + 1938 2820 entities@6.0.1: 1939 2821 resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} 1940 2822 engines: {node: '>=0.12'} ··· 1949 2831 error-stack-parser@2.1.4: 1950 2832 resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} 1951 2833 2834 + es-define-property@1.0.1: 2835 + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} 2836 + engines: {node: '>= 0.4'} 2837 + 2838 + es-errors@1.3.0: 2839 + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} 2840 + engines: {node: '>= 0.4'} 2841 + 1952 2842 es-module-lexer@1.7.0: 1953 2843 resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} 1954 2844 2845 + es-object-atoms@1.1.1: 2846 + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} 2847 + engines: {node: '>= 0.4'} 2848 + 2849 + es-set-tostringtag@2.1.0: 2850 + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} 2851 + engines: {node: '>= 0.4'} 2852 + 1955 2853 esbuild-register@3.6.0: 1956 2854 resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==} 1957 2855 peerDependencies: ··· 2003 2901 resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} 2004 2902 engines: {node: '>= 0.6'} 2005 2903 2904 + etcd3@1.1.2: 2905 + resolution: {integrity: sha512-YIampCz1/OmrVo/tR3QltAVUtYCQQOSFoqmHKKeoHbalm+WdXe3l4rhLIylklu8EzR/I3PBiOF4dC847dDskKg==} 2906 + engines: {node: '>=16'} 2907 + 2006 2908 event-target-shim@5.0.1: 2007 2909 resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} 2008 2910 engines: {node: '>=6'} ··· 2021 2923 resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} 2022 2924 engines: {node: '>=16.17'} 2023 2925 2926 + expand-template@2.0.3: 2927 + resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} 2928 + engines: {node: '>=6'} 2929 + 2930 + express-async-errors@3.1.1: 2931 + resolution: {integrity: sha512-h6aK1da4tpqWSbyCa3FxB/V6Ehd4EEB15zyQq9qe75OZBp0krinNKuH4rAY+S/U/2I36vdLAUFSjQJ+TFmODng==} 2932 + peerDependencies: 2933 + express: ^4.16.2 2934 + 2935 + express@4.22.1: 2936 + resolution: {integrity: sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==} 2937 + engines: {node: '>= 0.10.0'} 2938 + 2024 2939 exsolve@1.0.8: 2025 2940 resolution: {integrity: sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==} 2026 2941 ··· 2031 2946 resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} 2032 2947 engines: {node: '>=8.6.0'} 2033 2948 2949 + fast-printf@1.6.10: 2950 + resolution: {integrity: sha512-GwTgG9O4FVIdShhbVF3JxOgSBY2+ePGsu2V/UONgoCPzF9VY6ZdBMKsHKCYQHZwNk3qNouUolRDsgVxcVA5G1w==} 2951 + engines: {node: '>=10.0'} 2952 + 2034 2953 fast-redact@3.5.0: 2035 2954 resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} 2036 2955 engines: {node: '>=6'} 2037 2956 2957 + fast-xml-builder@1.1.4: 2958 + resolution: {integrity: sha512-f2jhpN4Eccy0/Uz9csxh3Nu6q4ErKxf0XIsasomfOihuSUa3/xw6w8dnOtCDgEItQFJG8KyXPzQXzcODDrrbOg==} 2959 + 2960 + fast-xml-parser@5.5.8: 2961 + resolution: {integrity: sha512-Z7Fh2nVQSb2d+poDViM063ix2ZGt9jmY1nWhPfHBOK2Hgnb/OW3P4Et3P/81SEej0J7QbWtJqxO05h8QYfK7LQ==} 2962 + hasBin: true 2963 + 2038 2964 fastq@1.20.1: 2039 2965 resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} 2040 2966 ··· 2047 2973 picomatch: 2048 2974 optional: true 2049 2975 2976 + file-type@16.5.4: 2977 + resolution: {integrity: sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==} 2978 + engines: {node: '>=10'} 2979 + 2050 2980 file-uri-to-path@1.0.0: 2051 2981 resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} 2052 2982 2053 2983 fill-range@7.1.1: 2054 2984 resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 2055 2985 engines: {node: '>=8'} 2986 + 2987 + finalhandler@1.3.2: 2988 + resolution: {integrity: sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==} 2989 + engines: {node: '>= 0.8'} 2056 2990 2057 2991 follow-redirects@1.15.11: 2058 2992 resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} ··· 2067 3001 resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} 2068 3002 engines: {node: '>=14'} 2069 3003 3004 + form-data@4.0.5: 3005 + resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} 3006 + engines: {node: '>= 6'} 3007 + 3008 + forwarded@0.2.0: 3009 + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} 3010 + engines: {node: '>= 0.6'} 3011 + 3012 + french-badwords-list@1.0.7: 3013 + resolution: {integrity: sha512-H1ziKs2PJh2+UXZ9oCGJ/rRQpsI9NBykGf2Sc7WaKaj1OnWFuBXfsvANTdRcfVmOghGQaUmRyZ1hJOPbDpy04Q==} 3014 + 2070 3015 fresh@0.5.2: 2071 3016 resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} 2072 3017 engines: {node: '>= 0.6'} ··· 2074 3019 fresh@2.0.0: 2075 3020 resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} 2076 3021 engines: {node: '>= 0.8'} 3022 + 3023 + fs-constants@1.0.0: 3024 + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} 2077 3025 2078 3026 fsevents@2.3.3: 2079 3027 resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} ··· 2100 3048 resolution: {integrity: sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==} 2101 3049 engines: {node: '>=18'} 2102 3050 3051 + get-intrinsic@1.3.0: 3052 + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} 3053 + engines: {node: '>= 0.4'} 3054 + 2103 3055 get-port-please@3.2.0: 2104 3056 resolution: {integrity: sha512-I9QVvBw5U/hw3RmWpYKRumUeaDgxTPd401x364rLmWBJcOQ753eov1eTgzDqRG9bqFIfDc7gfzcQEWrUri3o1A==} 2105 3057 3058 + get-port@5.1.1: 3059 + resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==} 3060 + engines: {node: '>=8'} 3061 + 3062 + get-proto@1.0.1: 3063 + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} 3064 + engines: {node: '>= 0.4'} 3065 + 2106 3066 get-stream@8.0.1: 2107 3067 resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} 2108 3068 engines: {node: '>=16'} ··· 2113 3073 giget@2.0.0: 2114 3074 resolution: {integrity: sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA==} 2115 3075 hasBin: true 3076 + 3077 + github-from-package@0.0.0: 3078 + resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} 2116 3079 2117 3080 glob-parent@5.1.2: 2118 3081 resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} ··· 2131 3094 resolution: {integrity: sha512-QrJia2qDf5BB/V6HYlDTs0I0lBahyjLzpGQg3KT7FnCdTonAyPy2RtY802m2k4ALx6Dp752f82WsOczEVr3l6Q==} 2132 3095 engines: {node: '>=20'} 2133 3096 3097 + gopd@1.2.0: 3098 + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} 3099 + engines: {node: '>= 0.4'} 3100 + 2134 3101 graceful-fs@4.2.11: 2135 3102 resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 2136 3103 ··· 2144 3111 h3@1.15.3: 2145 3112 resolution: {integrity: sha512-z6GknHqyX0h9aQaTx22VZDf6QyZn+0Nh+Ym8O/u0SGSkyF5cuTJYKlc8MkzW3Nzf9LE1ivcpmYC3FUGpywhuUQ==} 2146 3113 3114 + handlebars@4.7.9: 3115 + resolution: {integrity: sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==} 3116 + engines: {node: '>=0.4.7'} 3117 + hasBin: true 3118 + 3119 + has-symbols@1.1.0: 3120 + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} 3121 + engines: {node: '>= 0.4'} 3122 + 3123 + has-tostringtag@1.0.2: 3124 + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} 3125 + engines: {node: '>= 0.4'} 3126 + 3127 + hash.js@1.1.7: 3128 + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} 3129 + 2147 3130 hasown@2.0.2: 2148 3131 resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} 2149 3132 engines: {node: '>= 0.4'} ··· 2154 3137 hast-util-whitespace@3.0.0: 2155 3138 resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} 2156 3139 3140 + he@1.2.0: 3141 + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} 3142 + hasBin: true 3143 + 3144 + hmac-drbg@1.0.1: 3145 + resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} 3146 + 2157 3147 hookable@5.5.3: 2158 3148 resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} 2159 3149 ··· 2162 3152 2163 3153 html-to-image@1.11.13: 2164 3154 resolution: {integrity: sha512-cuOPoI7WApyhBElTTb9oqsawRvZ0rHhaHwghRLlTuffoD1B2aDemlCruLeZrUIIdvG7gs9xeELEPm6PhuASqrg==} 3155 + 3156 + html-to-text@7.1.1: 3157 + resolution: {integrity: sha512-c9QWysrfnRZevVpS8MlE7PyOdSuIOjg8Bt8ZE10jMU/BEngA6j3llj4GRfAmtQzcd1FjKE0sWu5IHXRUH9YxIQ==} 3158 + engines: {node: '>=10.23.2'} 3159 + hasBin: true 2165 3160 2166 3161 html-void-elements@3.0.0: 2167 3162 resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} 2168 3163 3164 + htmlparser2@6.1.0: 3165 + resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} 3166 + 2169 3167 http-errors@2.0.1: 2170 3168 resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} 2171 3169 engines: {node: '>= 0.8'} ··· 2177 3175 http-shutdown@1.2.2: 2178 3176 resolution: {integrity: sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw==} 2179 3177 engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} 3178 + 3179 + http-terminator@3.2.0: 3180 + resolution: {integrity: sha512-JLjck1EzPaWjsmIf8bziM3p9fgR1Y3JoUKAkyYEbZmFrIvJM6I8vVJfBGWlEtV9IWOvzNnaTtjuwZeBY2kwB4g==} 3181 + engines: {node: '>=14'} 2180 3182 2181 3183 https-proxy-agent@7.0.6: 2182 3184 resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} ··· 2189 3191 resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} 2190 3192 engines: {node: '>=16.17.0'} 2191 3193 3194 + iconv-lite@0.4.24: 3195 + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} 3196 + engines: {node: '>=0.10.0'} 3197 + 2192 3198 ieee754@1.2.1: 2193 3199 resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} 2194 3200 ··· 2198 3204 2199 3205 inherits@2.0.4: 2200 3206 resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 3207 + 3208 + ini@1.3.8: 3209 + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} 2201 3210 2202 3211 ioredis@5.10.1: 2203 3212 resolution: {integrity: sha512-HuEDBTI70aYdx1v6U97SbNx9F1+svQKBDo30o0b9fw055LMepzpOOd0Ccg9Q6tbqmBSJaMuY0fB7yw9/vjBYCA==} 2204 3213 engines: {node: '>=12.22.0'} 2205 3214 3215 + ipaddr.js@1.9.1: 3216 + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} 3217 + engines: {node: '>= 0.10'} 3218 + 2206 3219 ipaddr.js@2.3.0: 2207 3220 resolution: {integrity: sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==} 2208 3221 engines: {node: '>= 10'} 2209 3222 2210 3223 iron-webcrypto@1.2.1: 2211 3224 resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} 3225 + 3226 + is-arrayish@0.3.4: 3227 + resolution: {integrity: sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==} 2212 3228 2213 3229 is-core-module@2.16.1: 2214 3230 resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} ··· 2320 3336 engines: {node: '>=6'} 2321 3337 hasBin: true 2322 3338 3339 + key-encoder@2.0.3: 3340 + resolution: {integrity: sha512-fgBtpAGIr/Fy5/+ZLQZIPPhsZEcbSlYu/Wu96tNDFNSjSACw5lEIOFeaVdQ/iwrb8oxjlWi6wmWdH76hV6GZjg==} 3341 + 2323 3342 kleur@4.1.5: 2324 3343 resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} 2325 3344 engines: {node: '>=6'} ··· 2331 3350 knitwork@1.3.0: 2332 3351 resolution: {integrity: sha512-4LqMNoONzR43B1W0ek0fhXMsDNW/zxa1NdFAVMY+k28pgZLovR4G3PB5MrpTxCy1QaZCqNoiaKPr5w5qZHfSNw==} 2333 3352 3353 + kysely@0.22.0: 3354 + resolution: {integrity: sha512-ZE3qWtnqLOalodzfK5QUEcm7AEulhxsPNuKaGFsC3XiqO92vMLm+mAHk/NnbSIOtC4RmGm0nsv700i8KDp1gfQ==} 3355 + engines: {node: '>=14.0.0'} 3356 + 3357 + kysely@0.23.5: 3358 + resolution: {integrity: sha512-TH+b56pVXQq0tsyooYLeNfV11j6ih7D50dyN8tkM0e7ndiUH28Nziojiog3qRFlmEj9XePYdZUrNJ2079Qjdow==} 3359 + engines: {node: '>=14.0.0'} 3360 + 3361 + lande@1.0.10: 3362 + resolution: {integrity: sha512-yT52DQh+UV2pEp08jOYrA4drDv0DbjpiRyZYgl25ak9G2cVR2AimzrqkYQWrD9a7Ud+qkAcaiDDoNH9DXfHPmw==} 3363 + 2334 3364 lazystream@1.0.1: 2335 3365 resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} 2336 3366 engines: {node: '>= 0.6.3'} 2337 3367 3368 + leo-profanity@1.9.0: 3369 + resolution: {integrity: sha512-vMrrrjsbT+fA5I/1rlBEVT5YjJsw1ASIVF8/xBEdZ6ylsg5AEIBrEvHxwe5XAmfVuTBi7aw2KcO2L3s9ddpKzw==} 3370 + engines: {node: '>=18'} 3371 + 2338 3372 listhen@1.9.0: 2339 3373 resolution: {integrity: sha512-I8oW2+QL5KJo8zXNWX046M134WchxsXC7SawLPvRQpogCbkyQIaFxPE89A2HiwR7vAK2Dm2ERBAmyjTYGYEpBg==} 2340 3374 hasBin: true ··· 2343 3377 resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==} 2344 3378 engines: {node: '>=14'} 2345 3379 3380 + lodash.camelcase@4.3.0: 3381 + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} 3382 + 2346 3383 lodash.defaults@4.2.0: 2347 3384 resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} 2348 3385 ··· 2352 3389 lodash@4.17.23: 2353 3390 resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==} 2354 3391 3392 + long@5.3.2: 3393 + resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} 3394 + 2355 3395 lru-cache@10.4.3: 2356 3396 resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} 2357 3397 ··· 2371 3411 magicast@0.5.2: 2372 3412 resolution: {integrity: sha512-E3ZJh4J3S9KfwdjZhe2afj6R9lGIN5Pher1pF39UGrXRqq/VDaGVIGN13BjHd2u8B61hArAGOnso7nBOouW3TQ==} 2373 3413 3414 + math-intrinsics@1.1.0: 3415 + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} 3416 + engines: {node: '>= 0.4'} 3417 + 2374 3418 mdast-util-to-hast@13.2.1: 2375 3419 resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==} 2376 3420 3421 + media-typer@0.3.0: 3422 + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} 3423 + engines: {node: '>= 0.6'} 3424 + 2377 3425 merge-anything@5.1.7: 2378 3426 resolution: {integrity: sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ==} 2379 3427 engines: {node: '>=12.13'} 2380 3428 3429 + merge-descriptors@1.0.3: 3430 + resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} 3431 + 2381 3432 merge-stream@2.0.0: 2382 3433 resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 2383 3434 ··· 2385 3436 resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 2386 3437 engines: {node: '>= 8'} 2387 3438 3439 + methods@1.1.2: 3440 + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} 3441 + engines: {node: '>= 0.6'} 3442 + 2388 3443 micromark-util-character@2.1.1: 2389 3444 resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} 2390 3445 ··· 2404 3459 resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 2405 3460 engines: {node: '>=8.6'} 2406 3461 3462 + mime-db@1.52.0: 3463 + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 3464 + engines: {node: '>= 0.6'} 3465 + 2407 3466 mime-db@1.54.0: 2408 3467 resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} 2409 3468 engines: {node: '>= 0.6'} 2410 3469 3470 + mime-types@2.1.35: 3471 + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 3472 + engines: {node: '>= 0.6'} 3473 + 2411 3474 mime-types@3.0.2: 2412 3475 resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==} 2413 3476 engines: {node: '>=18'} ··· 2431 3494 resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} 2432 3495 engines: {node: '>=12'} 2433 3496 3497 + mimic-response@3.1.0: 3498 + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} 3499 + engines: {node: '>=10'} 3500 + 3501 + minimalistic-assert@1.0.1: 3502 + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} 3503 + 3504 + minimalistic-crypto-utils@1.0.1: 3505 + resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} 3506 + 2434 3507 minimatch@10.2.5: 2435 3508 resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} 2436 3509 engines: {node: 18 || 20 || >=22} ··· 2443 3516 resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} 2444 3517 engines: {node: '>=16 || 14 >=14.17'} 2445 3518 3519 + minimist@1.2.8: 3520 + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 3521 + 2446 3522 minipass@7.1.3: 2447 3523 resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} 2448 3524 engines: {node: '>=16 || 14 >=14.17'} ··· 2450 3526 minizlib@3.1.0: 2451 3527 resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} 2452 3528 engines: {node: '>= 18'} 3529 + 3530 + mkdirp-classic@0.5.3: 3531 + resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} 2453 3532 2454 3533 mlly@1.8.2: 2455 3534 resolution: {integrity: sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==} ··· 2462 3541 2463 3542 multiformats@9.9.0: 2464 3543 resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} 3544 + 3545 + murmurhash@2.0.1: 3546 + resolution: {integrity: sha512-5vQEh3y+DG/lMPM0mCGPDnyV8chYg/g7rl6v3Gd8WMF9S429ox3Xk8qrk174kWhG767KQMqqxLD1WnGd77hiew==} 2465 3547 2466 3548 nanoid@3.3.11: 2467 3549 resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} 2468 3550 engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 2469 3551 hasBin: true 3552 + 3553 + napi-build-utils@2.0.0: 3554 + resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==} 3555 + 3556 + negotiator@0.6.3: 3557 + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} 3558 + engines: {node: '>= 0.6'} 3559 + 3560 + negotiator@0.6.4: 3561 + resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} 3562 + engines: {node: '>= 0.6'} 3563 + 3564 + neo-async@2.6.2: 3565 + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} 2470 3566 2471 3567 nitropack@2.13.2: 2472 3568 resolution: {integrity: sha512-R5TMzSBoTDG4gi6Y+pvvyCNnooShHePHsHxMLP9EXDGdrlR5RvNdSd4e5k8z0/EzP9Ske7ABRMDWg6O7Dm2OYw==} ··· 2478 3574 xml2js: 2479 3575 optional: true 2480 3576 3577 + node-abi@3.89.0: 3578 + resolution: {integrity: sha512-6u9UwL0HlAl21+agMN3YAMXcKByMqwGx+pq+P76vii5f7hTPtKDp08/H9py6DY+cfDw7kQNTGEj/rly3IgbNQA==} 3579 + engines: {node: '>=10'} 3580 + 2481 3581 node-addon-api@7.1.1: 2482 3582 resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} 2483 3583 ··· 2507 3607 node-releases@2.0.36: 2508 3608 resolution: {integrity: sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==} 2509 3609 3610 + nodemailer-html-to-text@3.2.0: 3611 + resolution: {integrity: sha512-RJUC6640QV1PzTHHapOrc6IzrAJUZtk2BdVdINZ9VTLm+mcQNyBO9LYyhrnufkzqiD9l8hPLJ97rSyK4WanPNg==} 3612 + engines: {node: '>= 10.23.0'} 3613 + 3614 + nodemailer@6.10.1: 3615 + resolution: {integrity: sha512-Z+iLaBGVaSjbIzQ4pX6XV41HrooLsQ10ZWPUehGmuantvzWoDVBnmsdUcOIDM1t+yPor5pDhVlDESgOMEGxhHA==} 3616 + engines: {node: '>=6.0.0'} 3617 + 2510 3618 nopt@8.1.0: 2511 3619 resolution: {integrity: sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==} 2512 3620 engines: {node: ^18.17.0 || >=20.5.0} ··· 2525 3633 engines: {node: '>=18'} 2526 3634 hasBin: true 2527 3635 3636 + object-assign@4.1.1: 3637 + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 3638 + engines: {node: '>=0.10.0'} 3639 + 3640 + object-inspect@1.13.4: 3641 + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} 3642 + engines: {node: '>= 0.4'} 3643 + 2528 3644 ofetch@1.5.1: 2529 3645 resolution: {integrity: sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==} 2530 3646 ··· 2539 3655 resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} 2540 3656 engines: {node: '>= 0.8'} 2541 3657 3658 + on-headers@1.1.0: 3659 + resolution: {integrity: sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==} 3660 + engines: {node: '>= 0.8'} 3661 + 3662 + once@1.4.0: 3663 + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 3664 + 3665 + one-webcrypto@1.0.3: 3666 + resolution: {integrity: sha512-fu9ywBVBPx0gS9K0etIROTiCkvI5S1TDjFsYFb3rC1ewFxeOqsbzq7aIMBHsYfrTHBcGXJaONXXjTl8B01cW1Q==} 3667 + 2542 3668 onetime@6.0.0: 2543 3669 resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} 2544 3670 engines: {node: '>=12'} ··· 2550 3676 resolution: {integrity: sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==} 2551 3677 engines: {node: '>=20'} 2552 3678 3679 + p-finally@1.0.0: 3680 + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} 3681 + engines: {node: '>=4'} 3682 + 3683 + p-queue@6.6.2: 3684 + resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} 3685 + engines: {node: '>=8'} 3686 + 3687 + p-timeout@3.2.0: 3688 + resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} 3689 + engines: {node: '>=8'} 3690 + 3691 + p-wait-for@3.2.0: 3692 + resolution: {integrity: sha512-wpgERjNkLrBiFmkMEjuZJEWKKDrNfHCKA1OhyN1wg1FrLkULbviEy6py1AyJUgZ72YWFbZ38FIpnqvVqAlDUwA==} 3693 + engines: {node: '>=8'} 3694 + 2553 3695 package-json-from-dist@1.0.1: 2554 3696 resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} 2555 3697 ··· 2562 3704 2563 3705 path-browserify@1.0.1: 2564 3706 resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} 3707 + 3708 + path-expression-matcher@1.2.0: 3709 + resolution: {integrity: sha512-DwmPWeFn+tq7TiyJ2CxezCAirXjFxvaiD03npak3cRjlP9+OjTmSy1EpIrEbh+l6JgUundniloMLDQ/6VTdhLQ==} 3710 + engines: {node: '>=14.0.0'} 2565 3711 2566 3712 path-key@3.1.1: 2567 3713 resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} ··· 2582 3728 resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==} 2583 3729 engines: {node: 18 || 20 || >=22} 2584 3730 3731 + path-to-regexp@0.1.13: 3732 + resolution: {integrity: sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==} 3733 + 2585 3734 path-to-regexp@6.3.0: 2586 3735 resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} 2587 3736 ··· 2591 3740 pathe@2.0.3: 2592 3741 resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} 2593 3742 3743 + peek-readable@4.1.0: 3744 + resolution: {integrity: sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==} 3745 + engines: {node: '>=8'} 3746 + 2594 3747 perfect-debounce@2.1.0: 2595 3748 resolution: {integrity: sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==} 2596 3749 3750 + pg-cloudflare@1.3.0: 3751 + resolution: {integrity: sha512-6lswVVSztmHiRtD6I8hw4qP/nDm1EJbKMRhf3HCYaqud7frGysPv7FYJ5noZQdhQtN2xJnimfMtvQq21pdbzyQ==} 3752 + 3753 + pg-connection-string@2.12.0: 3754 + resolution: {integrity: sha512-U7qg+bpswf3Cs5xLzRqbXbQl85ng0mfSV/J0nnA31MCLgvEaAo7CIhmeyrmJpOr7o+zm0rXK+hNnT5l9RHkCkQ==} 3755 + 3756 + pg-int8@1.0.1: 3757 + resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} 3758 + engines: {node: '>=4.0.0'} 3759 + 3760 + pg-pool@3.13.0: 3761 + resolution: {integrity: sha512-gB+R+Xud1gLFuRD/QgOIgGOBE2KCQPaPwkzBBGC9oG69pHTkhQeIuejVIk3/cnDyX39av2AxomQiyPT13WKHQA==} 3762 + peerDependencies: 3763 + pg: '>=8.0' 3764 + 3765 + pg-protocol@1.13.0: 3766 + resolution: {integrity: sha512-zzdvXfS6v89r6v7OcFCHfHlyG/wvry1ALxZo4LqgUoy7W9xhBDMaqOuMiF3qEV45VqsN6rdlcehHrfDtlCPc8w==} 3767 + 3768 + pg-types@2.2.0: 3769 + resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} 3770 + engines: {node: '>=4'} 3771 + 3772 + pg@8.20.0: 3773 + resolution: {integrity: sha512-ldhMxz2r8fl/6QkXnBD3CR9/xg694oT6DZQ2s6c/RI28OjtSOpxnPrUCGOBJ46RCUxcWdx3p6kw/xnDHjKvaRA==} 3774 + engines: {node: '>= 16.0.0'} 3775 + peerDependencies: 3776 + pg-native: '>=3.0.1' 3777 + peerDependenciesMeta: 3778 + pg-native: 3779 + optional: true 3780 + 3781 + pgpass@1.0.5: 3782 + resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} 3783 + 2597 3784 picocolors@1.1.1: 2598 3785 resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 2599 3786 ··· 2608 3795 pino-abstract-transport@1.2.0: 2609 3796 resolution: {integrity: sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==} 2610 3797 3798 + pino-http@8.6.1: 3799 + resolution: {integrity: sha512-J0hiJgUExtBXP2BjrK4VB305tHXS31sCmWJ9XJo2wPkLHa1NFPuW4V9wjG27PAc2fmBCigiNhQKpvrx+kntBPA==} 3800 + 2611 3801 pino-std-serializers@6.2.2: 2612 3802 resolution: {integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==} 2613 3803 ··· 2625 3815 resolution: {integrity: sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==} 2626 3816 engines: {node: ^10 || ^12 || >=14} 2627 3817 3818 + postgres-array@2.0.0: 3819 + resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} 3820 + engines: {node: '>=4'} 3821 + 3822 + postgres-bytea@1.0.1: 3823 + resolution: {integrity: sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==} 3824 + engines: {node: '>=0.10.0'} 3825 + 3826 + postgres-date@1.0.7: 3827 + resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} 3828 + engines: {node: '>=0.10.0'} 3829 + 3830 + postgres-interval@1.2.0: 3831 + resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} 3832 + engines: {node: '>=0.10.0'} 3833 + 2628 3834 postgres@3.4.8: 2629 3835 resolution: {integrity: sha512-d+JFcLM17njZaOLkv6SCev7uoLaBtfK86vMUXhW1Z4glPWh4jozno9APvW/XKFJ3CCxVoC7OL38BqRydtu5nGg==} 2630 3836 engines: {node: '>=12'} ··· 2632 3838 powershell-utils@0.1.0: 2633 3839 resolution: {integrity: sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==} 2634 3840 engines: {node: '>=20'} 3841 + 3842 + prebuild-install@7.1.3: 3843 + resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==} 3844 + engines: {node: '>=10'} 3845 + deprecated: No longer maintained. Please contact the author of the relevant native addon; alternatives are available. 3846 + hasBin: true 2635 3847 2636 3848 prettier@3.8.1: 2637 3849 resolution: {integrity: sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==} ··· 2655 3867 property-information@7.1.0: 2656 3868 resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} 2657 3869 3870 + protobufjs@7.5.4: 3871 + resolution: {integrity: sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==} 3872 + engines: {node: '>=12.0.0'} 3873 + 3874 + proxy-addr@2.0.7: 3875 + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} 3876 + engines: {node: '>= 0.10'} 3877 + 3878 + proxy-from-env@2.1.0: 3879 + resolution: {integrity: sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==} 3880 + engines: {node: '>=10'} 3881 + 3882 + pump@3.0.4: 3883 + resolution: {integrity: sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==} 3884 + 3885 + qs@6.14.2: 3886 + resolution: {integrity: sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==} 3887 + engines: {node: '>=0.6'} 3888 + 2658 3889 quansync@0.2.11: 2659 3890 resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} 2660 3891 ··· 2671 3902 resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} 2672 3903 engines: {node: '>= 0.6'} 2673 3904 3905 + rate-limiter-flexible@2.4.2: 3906 + resolution: {integrity: sha512-rMATGGOdO1suFyf/mI5LYhts71g1sbdhmd6YvdiXO2gJnd42Tt6QS4JUKJKSWVVkMtBacm6l40FR7Trjo6Iruw==} 3907 + 3908 + raw-body@2.5.3: 3909 + resolution: {integrity: sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==} 3910 + engines: {node: '>= 0.8'} 3911 + 2674 3912 rc9@2.1.2: 2675 3913 resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==} 3914 + 3915 + rc@1.2.8: 3916 + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} 3917 + hasBin: true 2676 3918 2677 3919 readable-stream@2.3.8: 2678 3920 resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} 2679 3921 3922 + readable-stream@3.6.2: 3923 + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} 3924 + engines: {node: '>= 6'} 3925 + 2680 3926 readable-stream@4.7.0: 2681 3927 resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==} 2682 3928 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 3929 + 3930 + readable-web-to-node-stream@3.0.4: 3931 + resolution: {integrity: sha512-9nX56alTf5bwXQ3ZDipHJhusu9NTQJ/CVPtb/XHAJCXihZeitfJvIRS4GqQ/mfIoOE3IelHMrpayVrosdHBuLw==} 3932 + engines: {node: '>=8'} 2683 3933 2684 3934 readdir-glob@1.1.3: 2685 3935 resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==} ··· 2740 3990 resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} 2741 3991 engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 2742 3992 3993 + roarr@7.21.4: 3994 + resolution: {integrity: sha512-qvfUKCrpPzhWmQ4NxRYnuwhkI5lwmObhBU06BCK/lpj6PID9nL4Hk6XDwek2foKI+TMaV+Yw//XZshGF2Lox/Q==} 3995 + engines: {node: '>=18.0'} 3996 + 2743 3997 rollup-plugin-visualizer@7.0.1: 2744 3998 resolution: {integrity: sha512-UJUT4+1Ho4OcWmPYU3sYXgUqI8B8Ayfe06MX7y0qCJ1K8aGoKtR/NDd/2nZqM7ADkrzny+I99Ul7GgyoiVNAgg==} 2745 3999 engines: {node: '>=22'} ··· 2765 4019 run-parallel@1.2.0: 2766 4020 resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 2767 4021 4022 + russian-bad-words@0.5.0: 4023 + resolution: {integrity: sha512-euNvEYki6iYYpkNbeudW+lEMMYGEmN7EBwVF8ezlbv0bZoQpVYB7W10cCeUIGV7Ed50sJynLQ0c559q5iI0ejQ==} 4024 + engines: {node: '>=10'} 4025 + 4026 + rxjs@7.8.2: 4027 + resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} 4028 + 2768 4029 safe-buffer@5.1.2: 2769 4030 resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} 2770 4031 ··· 2775 4036 resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} 2776 4037 engines: {node: '>=10'} 2777 4038 4039 + safer-buffer@2.1.2: 4040 + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 4041 + 2778 4042 scule@1.3.0: 2779 4043 resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} 4044 + 4045 + semver-compare@1.0.0: 4046 + resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} 2780 4047 2781 4048 semver@6.3.1: 2782 4049 resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} ··· 2822 4089 2823 4090 setprototypeof@1.2.0: 2824 4091 resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} 4092 + 4093 + sharp@0.33.5: 4094 + resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} 4095 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 2825 4096 2826 4097 shebang-command@2.0.0: 2827 4098 resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} ··· 2838 4109 shiki@1.29.2: 2839 4110 resolution: {integrity: sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg==} 2840 4111 4112 + side-channel-list@1.0.0: 4113 + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} 4114 + engines: {node: '>= 0.4'} 4115 + 4116 + side-channel-map@1.0.1: 4117 + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} 4118 + engines: {node: '>= 0.4'} 4119 + 4120 + side-channel-weakmap@1.0.2: 4121 + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} 4122 + engines: {node: '>= 0.4'} 4123 + 4124 + side-channel@1.1.0: 4125 + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} 4126 + engines: {node: '>= 0.4'} 4127 + 2841 4128 signal-exit@4.1.0: 2842 4129 resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 2843 4130 engines: {node: '>=14'} 4131 + 4132 + simple-concat@1.0.1: 4133 + resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} 4134 + 4135 + simple-get@4.0.1: 4136 + resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} 4137 + 4138 + simple-swizzle@0.2.4: 4139 + resolution: {integrity: sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==} 2844 4140 2845 4141 slash@5.1.0: 2846 4142 resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} ··· 2905 4201 std-env@4.0.0: 2906 4202 resolution: {integrity: sha512-zUMPtQ/HBY3/50VbpkupYHbRroTRZJPRLvreamgErJVys0ceuzMkD44J/QjqhHjOzK42GQ3QZIeFG1OYfOtKqQ==} 2907 4203 4204 + stream-browserify@3.0.0: 4205 + resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} 4206 + 2908 4207 streamx@2.25.0: 2909 4208 resolution: {integrity: sha512-0nQuG6jf1w+wddNEEXCF4nTg3LtufWINB5eFEN+5TNZW7KWJp6x87+JFL43vaAUPyCfH1wID+mNVyW6OHtFamg==} 2910 4209 ··· 2941 4240 resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} 2942 4241 engines: {node: '>=12'} 2943 4242 4243 + strip-json-comments@2.0.1: 4244 + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} 4245 + engines: {node: '>=0.10.0'} 4246 + 2944 4247 strip-literal@3.1.0: 2945 4248 resolution: {integrity: sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==} 4249 + 4250 + strnum@2.2.2: 4251 + resolution: {integrity: sha512-DnR90I+jtXNSTXWdwrEy9FakW7UX+qUZg28gj5fk2vxxl7uS/3bpI4fjFYVmdK9etptYBPNkpahuQnEwhwECqA==} 4252 + 4253 + strtok3@6.3.0: 4254 + resolution: {integrity: sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==} 4255 + engines: {node: '>=10'} 4256 + 4257 + structured-headers@1.0.1: 4258 + resolution: {integrity: sha512-QYBxdBtA4Tl5rFPuqmbmdrS9kbtren74RTJTcs0VSQNVV5iRhJD4QlYTLD0+81SBwUQctjEQzjTRI3WG4DzICA==} 4259 + engines: {node: '>= 14', npm: '>=6'} 2946 4260 2947 4261 supports-color@10.2.2: 2948 4262 resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==} ··· 2960 4274 resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==} 2961 4275 engines: {node: '>=20'} 2962 4276 4277 + tar-fs@2.1.4: 4278 + resolution: {integrity: sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==} 4279 + 4280 + tar-stream@2.2.0: 4281 + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} 4282 + engines: {node: '>=6'} 4283 + 2963 4284 tar-stream@3.1.8: 2964 4285 resolution: {integrity: sha512-U6QpVRyCGHva435KoNWy9PRoi2IFYCgtEhq9nmrPPpbRacPs9IH4aJ3gbrFC8dPcXvdSZ4XXfXT5Fshbp2MtlQ==} 2965 4286 ··· 3010 4331 resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} 3011 4332 engines: {node: '>=0.6'} 3012 4333 4334 + token-types@4.2.1: 4335 + resolution: {integrity: sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==} 4336 + engines: {node: '>=10'} 4337 + 4338 + toygrad@2.6.0: 4339 + resolution: {integrity: sha512-g4zBmlSbvzOE5FOILxYkAybTSxijKLkj1WoNqVGnbMcWDyj4wWQ+eYSr3ik7XOpIgMq/7eBcPRTJX3DM2E0YMg==} 4340 + 3013 4341 tr46@0.0.3: 3014 4342 resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} 3015 4343 ··· 3022 4350 tslib@2.8.1: 3023 4351 resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} 3024 4352 4353 + tsx@4.21.0: 4354 + resolution: {integrity: sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==} 4355 + engines: {node: '>=18.0.0'} 4356 + hasBin: true 4357 + 4358 + tunnel-agent@0.6.0: 4359 + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} 4360 + 4361 + type-fest@2.19.0: 4362 + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} 4363 + engines: {node: '>=12.20'} 4364 + 3025 4365 type-fest@4.41.0: 3026 4366 resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} 3027 4367 engines: {node: '>=16'} ··· 3030 4370 resolution: {integrity: sha512-PlBfpQwiUvGViBNX84Yxwjsdhd1TUlXr6zjX7eoirtCPIr08NAmxwa+fcYBTeRQxHo9YC9wwF3m9i700sHma8g==} 3031 4371 engines: {node: '>=20'} 3032 4372 4373 + type-is@1.6.18: 4374 + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} 4375 + engines: {node: '>= 0.6'} 4376 + 4377 + typed-emitter@2.1.0: 4378 + resolution: {integrity: sha512-g/KzbYKbH5C2vPkaXGu8DJlHrGKHLsM25Zg9WuC9pMGfuvT+X25tZQWo5fK1BjBm8+UrVE9LDCvaY0CQk+fXDA==} 4379 + 3033 4380 typescript@5.9.3: 3034 4381 resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} 3035 4382 engines: {node: '>=14.17'} ··· 3038 4385 ufo@1.6.3: 3039 4386 resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==} 3040 4387 4388 + uglify-js@3.19.3: 4389 + resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} 4390 + engines: {node: '>=0.8.0'} 4391 + hasBin: true 4392 + 3041 4393 uint8arrays@3.0.0: 3042 4394 resolution: {integrity: sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==} 3043 4395 ··· 3055 4407 3056 4408 undici-types@7.18.2: 3057 4409 resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==} 4410 + 4411 + undici@5.29.0: 4412 + resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} 4413 + engines: {node: '>=14.0'} 3058 4414 3059 4415 undici@6.24.1: 3060 4416 resolution: {integrity: sha512-sC+b0tB1whOCzbtlx20fx3WgCXwkW627p4EA9uM+/tNNPkSS+eSEld6pAs9nDv7WbY1UUljBMYPtu9BCOrCWKA==} ··· 3092 4448 unist-util-visit@5.1.0: 3093 4449 resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==} 3094 4450 4451 + unpipe@1.0.0: 4452 + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} 4453 + engines: {node: '>= 0.8'} 4454 + 3095 4455 unplugin-utils@0.3.1: 3096 4456 resolution: {integrity: sha512-5lWVjgi6vuHhJ526bI4nlCOmkCIF3nnfXkCMDeMJrtdvxTs6ZFCM8oNufGTsDbKv/tJ/xj8RpvXjRuPBZJuJog==} 3097 4457 engines: {node: '>=20.19.0'} ··· 3189 4549 util-deprecate@1.0.2: 3190 4550 resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 3191 4551 4552 + utils-merge@1.0.1: 4553 + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} 4554 + engines: {node: '>= 0.4.0'} 4555 + 3192 4556 varint@6.0.0: 3193 4557 resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==} 3194 4558 4559 + vary@1.1.2: 4560 + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} 4561 + engines: {node: '>= 0.8'} 4562 + 3195 4563 vfile-message@4.0.3: 3196 4564 resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} 3197 4565 ··· 3283 4651 resolution: {integrity: sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==} 3284 4652 engines: {node: '>=18'} 3285 4653 4654 + wordwrap@1.0.0: 4655 + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} 4656 + 3286 4657 wrap-ansi@7.0.0: 3287 4658 resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 3288 4659 engines: {node: '>=10'} ··· 3295 4666 resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} 3296 4667 engines: {node: '>=18'} 3297 4668 4669 + wrappy@1.0.2: 4670 + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 4671 + 4672 + ws@8.20.0: 4673 + resolution: {integrity: sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==} 4674 + engines: {node: '>=10.0.0'} 4675 + peerDependencies: 4676 + bufferutil: ^4.0.1 4677 + utf-8-validate: '>=5.0.2' 4678 + peerDependenciesMeta: 4679 + bufferutil: 4680 + optional: true 4681 + utf-8-validate: 4682 + optional: true 4683 + 3298 4684 wsl-utils@0.3.1: 3299 4685 resolution: {integrity: sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==} 3300 4686 engines: {node: '>=20'} 3301 4687 4688 + xtend@4.0.2: 4689 + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} 4690 + engines: {node: '>=0.4'} 4691 + 3302 4692 y18n@5.0.8: 3303 4693 resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} 3304 4694 engines: {node: '>=10'} ··· 3335 4725 zip-stream@6.0.1: 3336 4726 resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==} 3337 4727 engines: {node: '>= 14'} 4728 + 4729 + zod@3.23.8: 4730 + resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} 3338 4731 3339 4732 zod@3.25.76: 3340 4733 resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} ··· 3392 4785 '@atproto-labs/simple-store': 0.3.0 3393 4786 lru-cache: 10.4.3 3394 4787 4788 + '@atproto-labs/simple-store-redis@0.0.1(ioredis@5.10.1)': 4789 + dependencies: 4790 + '@atproto-labs/simple-store': 0.3.0 4791 + ioredis: 5.10.1 4792 + 3395 4793 '@atproto-labs/simple-store@0.3.0': {} 3396 4794 4795 + '@atproto-labs/xrpc-utils@0.0.24': 4796 + dependencies: 4797 + '@atproto/xrpc': 0.7.7 4798 + '@atproto/xrpc-server': 0.10.18 4799 + transitivePeerDependencies: 4800 + - bufferutil 4801 + - supports-color 4802 + - utf-8-validate 4803 + 3397 4804 '@atproto/api@0.13.35': 3398 4805 dependencies: 3399 4806 '@atproto/common-web': 0.4.19 ··· 3405 4812 tlds: 1.261.0 3406 4813 zod: 3.25.76 3407 4814 4815 + '@atproto/api@0.19.5': 4816 + dependencies: 4817 + '@atproto/common-web': 0.4.19 4818 + '@atproto/lexicon': 0.6.2 4819 + '@atproto/syntax': 0.5.2 4820 + '@atproto/xrpc': 0.7.7 4821 + await-lock: 2.2.2 4822 + multiformats: 9.9.0 4823 + tlds: 1.261.0 4824 + zod: 3.25.76 4825 + 4826 + '@atproto/aws@0.2.32': 4827 + dependencies: 4828 + '@atproto/common': 0.5.15 4829 + '@atproto/common-web': 0.4.19 4830 + '@atproto/crypto': 0.4.5 4831 + '@atproto/repo': 0.9.0 4832 + '@aws-sdk/client-cloudfront': 3.1022.0 4833 + '@aws-sdk/client-kms': 3.1022.0 4834 + '@aws-sdk/client-s3': 3.1022.0 4835 + '@aws-sdk/lib-storage': 3.879.0(@aws-sdk/client-s3@3.1022.0) 4836 + '@noble/curves': 1.9.7 4837 + key-encoder: 2.0.3 4838 + multiformats: 9.9.0 4839 + uint8arrays: 3.0.0 4840 + transitivePeerDependencies: 4841 + - aws-crt 4842 + 4843 + '@atproto/bsky@0.0.222': 4844 + dependencies: 4845 + '@atproto-labs/fetch-node': 0.2.0 4846 + '@atproto-labs/xrpc-utils': 0.0.24 4847 + '@atproto/api': 0.19.5 4848 + '@atproto/common': 0.5.15 4849 + '@atproto/crypto': 0.4.5 4850 + '@atproto/did': 0.3.0 4851 + '@atproto/identity': 0.4.12 4852 + '@atproto/lex': 0.0.23 4853 + '@atproto/repo': 0.9.0 4854 + '@atproto/sync': 0.2.0 4855 + '@atproto/syntax': 0.5.2 4856 + '@atproto/xrpc-server': 0.10.18 4857 + '@bufbuild/protobuf': 1.10.1 4858 + '@connectrpc/connect': 1.7.0(@bufbuild/protobuf@1.10.1) 4859 + '@connectrpc/connect-express': 1.7.0(@bufbuild/protobuf@1.10.1)(@connectrpc/connect-node@1.7.0(@bufbuild/protobuf@1.10.1)(@connectrpc/connect@1.7.0(@bufbuild/protobuf@1.10.1)))(@connectrpc/connect@1.7.0(@bufbuild/protobuf@1.10.1)) 4860 + '@connectrpc/connect-node': 1.7.0(@bufbuild/protobuf@1.10.1)(@connectrpc/connect@1.7.0(@bufbuild/protobuf@1.10.1)) 4861 + '@did-plc/lib': 0.0.1 4862 + '@growthbook/growthbook': 1.6.5 4863 + '@hapi/address': 5.1.1 4864 + '@types/http-errors': 2.0.5 4865 + compression: 1.8.1 4866 + cors: 2.8.6 4867 + disposable-email-domains-js: 1.24.0 4868 + etcd3: 1.1.2 4869 + express: 4.22.1 4870 + http-errors: 2.0.1 4871 + http-terminator: 3.2.0 4872 + ioredis: 5.10.1 4873 + jose: 5.10.0 4874 + key-encoder: 2.0.3 4875 + kysely: 0.22.0 4876 + leo-profanity: 1.9.0 4877 + murmurhash: 2.0.1 4878 + p-queue: 6.6.2 4879 + pg: 8.20.0 4880 + pino: 8.21.0 4881 + pino-http: 8.6.1 4882 + sharp: 0.33.5 4883 + structured-headers: 1.0.1 4884 + typed-emitter: 2.1.0 4885 + uint8arrays: 3.0.0 4886 + undici: 6.24.1 4887 + zod: 3.23.8 4888 + transitivePeerDependencies: 4889 + - bufferutil 4890 + - debug 4891 + - pg-native 4892 + - supports-color 4893 + - utf-8-validate 4894 + 4895 + '@atproto/bsync@0.0.25': 4896 + dependencies: 4897 + '@atproto/common': 0.5.15 4898 + '@atproto/syntax': 0.5.2 4899 + '@bufbuild/protobuf': 1.10.1 4900 + '@connectrpc/connect': 1.7.0(@bufbuild/protobuf@1.10.1) 4901 + '@connectrpc/connect-node': 1.7.0(@bufbuild/protobuf@1.10.1)(@connectrpc/connect@1.7.0(@bufbuild/protobuf@1.10.1)) 4902 + http-terminator: 3.2.0 4903 + kysely: 0.22.0 4904 + pg: 8.20.0 4905 + pino-http: 8.6.1 4906 + typed-emitter: 2.1.0 4907 + transitivePeerDependencies: 4908 + - pg-native 4909 + 3408 4910 '@atproto/common-web@0.4.19': 3409 4911 dependencies: 3410 4912 '@atproto/lex-data': 0.0.14 ··· 3412 4914 '@atproto/syntax': 0.5.2 3413 4915 zod: 3.25.76 3414 4916 4917 + '@atproto/common@0.1.0': 4918 + dependencies: 4919 + '@ipld/dag-cbor': 7.0.3 4920 + multiformats: 9.9.0 4921 + pino: 8.21.0 4922 + zod: 3.25.76 4923 + 4924 + '@atproto/common@0.1.1': 4925 + dependencies: 4926 + '@ipld/dag-cbor': 7.0.3 4927 + multiformats: 9.9.0 4928 + pino: 8.21.0 4929 + zod: 3.25.76 4930 + 3415 4931 '@atproto/common@0.5.15': 3416 4932 dependencies: 3417 4933 '@atproto/common-web': 0.4.19 ··· 3420 4936 multiformats: 9.9.0 3421 4937 pino: 8.21.0 3422 4938 4939 + '@atproto/crypto@0.1.0': 4940 + dependencies: 4941 + '@noble/secp256k1': 1.7.2 4942 + big-integer: 1.6.52 4943 + multiformats: 9.9.0 4944 + one-webcrypto: 1.0.3 4945 + uint8arrays: 3.0.0 4946 + 3423 4947 '@atproto/crypto@0.4.5': 3424 4948 dependencies: 3425 4949 '@noble/curves': 1.9.7 3426 4950 '@noble/hashes': 1.8.0 3427 4951 uint8arrays: 3.0.0 4952 + 4953 + '@atproto/dev-env@0.4.0': 4954 + dependencies: 4955 + '@atproto/api': 0.19.5 4956 + '@atproto/bsky': 0.0.222 4957 + '@atproto/bsync': 0.0.25 4958 + '@atproto/common-web': 0.4.19 4959 + '@atproto/crypto': 0.4.5 4960 + '@atproto/identity': 0.4.12 4961 + '@atproto/lex': 0.0.23 4962 + '@atproto/lexicon': 0.6.2 4963 + '@atproto/ozone': 0.1.168 4964 + '@atproto/pds': 0.4.217 4965 + '@atproto/sync': 0.2.0 4966 + '@atproto/syntax': 0.5.2 4967 + '@atproto/xrpc-server': 0.10.18 4968 + '@did-plc/lib': 0.0.1 4969 + '@did-plc/server': 0.0.1 4970 + dotenv: 16.6.1 4971 + express: 4.22.1 4972 + get-port: 5.1.1 4973 + multiformats: 9.9.0 4974 + uint8arrays: 3.0.0 4975 + undici: 6.24.1 4976 + transitivePeerDependencies: 4977 + - aws-crt 4978 + - bufferutil 4979 + - debug 4980 + - pg-native 4981 + - supports-color 4982 + - utf-8-validate 3428 4983 3429 4984 '@atproto/did@0.3.0': 3430 4985 dependencies: ··· 3575 5130 multiformats: 9.9.0 3576 5131 zod: 3.25.76 3577 5132 5133 + '@atproto/oauth-provider-api@0.3.7': 5134 + dependencies: 5135 + '@atproto/jwk': 0.6.0 5136 + '@atproto/oauth-types': 0.6.2 5137 + 5138 + '@atproto/oauth-provider-frontend@0.2.9': 5139 + optionalDependencies: 5140 + '@atproto/oauth-provider-api': 0.3.7 5141 + 5142 + '@atproto/oauth-provider-ui@0.4.3': 5143 + optionalDependencies: 5144 + '@atproto/oauth-provider-api': 0.3.7 5145 + 5146 + '@atproto/oauth-provider@0.15.15': 5147 + dependencies: 5148 + '@atproto-labs/fetch': 0.2.3 5149 + '@atproto-labs/fetch-node': 0.2.0 5150 + '@atproto-labs/pipe': 0.1.1 5151 + '@atproto-labs/simple-store': 0.3.0 5152 + '@atproto-labs/simple-store-memory': 0.1.4 5153 + '@atproto/common': 0.5.15 5154 + '@atproto/did': 0.3.0 5155 + '@atproto/jwk': 0.6.0 5156 + '@atproto/jwk-jose': 0.1.11 5157 + '@atproto/lex-document': 0.0.18 5158 + '@atproto/lex-resolver': 0.0.20 5159 + '@atproto/oauth-provider-api': 0.3.7 5160 + '@atproto/oauth-provider-frontend': 0.2.9 5161 + '@atproto/oauth-provider-ui': 0.4.3 5162 + '@atproto/oauth-scopes': 0.3.2 5163 + '@atproto/oauth-types': 0.6.3 5164 + '@atproto/syntax': 0.5.2 5165 + '@hapi/accept': 6.0.3 5166 + '@hapi/address': 5.1.1 5167 + '@hapi/bourne': 3.0.0 5168 + '@hapi/content': 6.0.1 5169 + cookie: 0.7.2 5170 + disposable-email-domains-js: 1.24.0 5171 + forwarded: 0.2.0 5172 + http-errors: 2.0.1 5173 + ioredis: 5.10.1 5174 + jose: 5.10.0 5175 + zod: 3.25.76 5176 + transitivePeerDependencies: 5177 + - supports-color 5178 + 5179 + '@atproto/oauth-scopes@0.3.2': 5180 + dependencies: 5181 + '@atproto/did': 0.3.0 5182 + '@atproto/syntax': 0.5.2 5183 + 5184 + '@atproto/oauth-types@0.6.2': 5185 + dependencies: 5186 + '@atproto/did': 0.3.0 5187 + '@atproto/jwk': 0.6.0 5188 + zod: 3.25.76 5189 + 3578 5190 '@atproto/oauth-types@0.6.3': 3579 5191 dependencies: 3580 5192 '@atproto/did': 0.3.0 3581 5193 '@atproto/jwk': 0.6.0 3582 5194 zod: 3.25.76 3583 5195 5196 + '@atproto/ozone@0.1.168': 5197 + dependencies: 5198 + '@atproto/api': 0.19.5 5199 + '@atproto/common': 0.5.15 5200 + '@atproto/crypto': 0.4.5 5201 + '@atproto/identity': 0.4.12 5202 + '@atproto/lexicon': 0.6.2 5203 + '@atproto/syntax': 0.5.2 5204 + '@atproto/ws-client': 0.0.4 5205 + '@atproto/xrpc': 0.7.7 5206 + '@atproto/xrpc-server': 0.10.18 5207 + '@did-plc/lib': 0.0.1 5208 + compression: 1.8.1 5209 + cors: 2.8.6 5210 + express: 4.22.1 5211 + http-terminator: 3.2.0 5212 + kysely: 0.22.0 5213 + lande: 1.0.10 5214 + multiformats: 9.9.0 5215 + p-queue: 6.6.2 5216 + pg: 8.20.0 5217 + pino-http: 8.6.1 5218 + structured-headers: 1.0.1 5219 + typed-emitter: 2.1.0 5220 + uint8arrays: 3.0.0 5221 + undici: 6.24.1 5222 + ws: 8.20.0 5223 + transitivePeerDependencies: 5224 + - bufferutil 5225 + - debug 5226 + - pg-native 5227 + - supports-color 5228 + - utf-8-validate 5229 + 5230 + '@atproto/pds@0.4.217': 5231 + dependencies: 5232 + '@atproto-labs/fetch-node': 0.2.0 5233 + '@atproto-labs/simple-store': 0.3.0 5234 + '@atproto-labs/simple-store-memory': 0.1.4 5235 + '@atproto-labs/simple-store-redis': 0.0.1(ioredis@5.10.1) 5236 + '@atproto-labs/xrpc-utils': 0.0.24 5237 + '@atproto/aws': 0.2.32 5238 + '@atproto/common': 0.5.15 5239 + '@atproto/crypto': 0.4.5 5240 + '@atproto/identity': 0.4.12 5241 + '@atproto/lex': 0.0.23 5242 + '@atproto/lex-cbor': 0.0.15 5243 + '@atproto/lex-data': 0.0.14 5244 + '@atproto/lex-json': 0.0.14 5245 + '@atproto/oauth-provider': 0.15.15 5246 + '@atproto/oauth-scopes': 0.3.2 5247 + '@atproto/repo': 0.9.0 5248 + '@atproto/syntax': 0.5.2 5249 + '@atproto/xrpc': 0.7.7 5250 + '@atproto/xrpc-server': 0.10.18 5251 + '@did-plc/lib': 0.0.4 5252 + '@hapi/address': 5.1.1 5253 + better-sqlite3: 12.8.0 5254 + compression: 1.8.1 5255 + cors: 2.8.6 5256 + disposable-email-domains-js: 1.24.0 5257 + express: 4.22.1 5258 + express-async-errors: 3.1.1(express@4.22.1) 5259 + file-type: 16.5.4 5260 + glob: 10.5.0 5261 + handlebars: 4.7.9 5262 + http-terminator: 3.2.0 5263 + ioredis: 5.10.1 5264 + jose: 5.10.0 5265 + key-encoder: 2.0.3 5266 + kysely: 0.22.0 5267 + nodemailer: 6.10.1 5268 + nodemailer-html-to-text: 3.2.0 5269 + p-queue: 6.6.2 5270 + pino: 8.21.0 5271 + pino-http: 8.6.1 5272 + typed-emitter: 2.1.0 5273 + uint8arrays: 3.0.0 5274 + undici: 6.24.1 5275 + zod: 3.25.76 5276 + transitivePeerDependencies: 5277 + - aws-crt 5278 + - bufferutil 5279 + - debug 5280 + - supports-color 5281 + - utf-8-validate 5282 + 3584 5283 '@atproto/repo@0.9.0': 3585 5284 dependencies: 3586 5285 '@atproto/common': 0.5.15 ··· 3592 5291 varint: 6.0.0 3593 5292 zod: 3.25.76 3594 5293 5294 + '@atproto/sync@0.2.0': 5295 + dependencies: 5296 + '@atproto/common': 0.5.15 5297 + '@atproto/identity': 0.4.12 5298 + '@atproto/lex': 0.0.23 5299 + '@atproto/repo': 0.9.0 5300 + '@atproto/syntax': 0.5.2 5301 + '@atproto/xrpc-server': 0.10.18 5302 + p-queue: 6.6.2 5303 + ws: 8.20.0 5304 + transitivePeerDependencies: 5305 + - bufferutil 5306 + - supports-color 5307 + - utf-8-validate 5308 + 3595 5309 '@atproto/syntax@0.3.4': {} 3596 5310 3597 5311 '@atproto/syntax@0.4.3': ··· 3602 5316 dependencies: 3603 5317 tslib: 2.8.1 3604 5318 5319 + '@atproto/ws-client@0.0.4': 5320 + dependencies: 5321 + '@atproto/common': 0.5.15 5322 + ws: 8.20.0 5323 + transitivePeerDependencies: 5324 + - bufferutil 5325 + - utf-8-validate 5326 + 5327 + '@atproto/xrpc-server@0.10.18': 5328 + dependencies: 5329 + '@atproto/common': 0.5.15 5330 + '@atproto/crypto': 0.4.5 5331 + '@atproto/lex-cbor': 0.0.15 5332 + '@atproto/lex-client': 0.0.18 5333 + '@atproto/lex-data': 0.0.14 5334 + '@atproto/lex-json': 0.0.14 5335 + '@atproto/lex-schema': 0.0.17 5336 + '@atproto/lexicon': 0.6.2 5337 + '@atproto/ws-client': 0.0.4 5338 + '@atproto/xrpc': 0.7.7 5339 + express: 4.22.1 5340 + http-errors: 2.0.1 5341 + mime-types: 2.1.35 5342 + rate-limiter-flexible: 2.4.2 5343 + ws: 8.20.0 5344 + transitivePeerDependencies: 5345 + - bufferutil 5346 + - supports-color 5347 + - utf-8-validate 5348 + 3605 5349 '@atproto/xrpc@0.6.12': 3606 5350 dependencies: 3607 5351 '@atproto/lexicon': 0.4.14 ··· 3612 5356 '@atproto/lexicon': 0.6.2 3613 5357 zod: 3.25.76 3614 5358 5359 + '@aws-crypto/crc32@5.2.0': 5360 + dependencies: 5361 + '@aws-crypto/util': 5.2.0 5362 + '@aws-sdk/types': 3.973.6 5363 + tslib: 2.8.1 5364 + 5365 + '@aws-crypto/crc32c@5.2.0': 5366 + dependencies: 5367 + '@aws-crypto/util': 5.2.0 5368 + '@aws-sdk/types': 3.973.6 5369 + tslib: 2.8.1 5370 + 5371 + '@aws-crypto/sha1-browser@5.2.0': 5372 + dependencies: 5373 + '@aws-crypto/supports-web-crypto': 5.2.0 5374 + '@aws-crypto/util': 5.2.0 5375 + '@aws-sdk/types': 3.973.6 5376 + '@aws-sdk/util-locate-window': 3.965.5 5377 + '@smithy/util-utf8': 2.3.0 5378 + tslib: 2.8.1 5379 + 5380 + '@aws-crypto/sha256-browser@5.2.0': 5381 + dependencies: 5382 + '@aws-crypto/sha256-js': 5.2.0 5383 + '@aws-crypto/supports-web-crypto': 5.2.0 5384 + '@aws-crypto/util': 5.2.0 5385 + '@aws-sdk/types': 3.973.6 5386 + '@aws-sdk/util-locate-window': 3.965.5 5387 + '@smithy/util-utf8': 2.3.0 5388 + tslib: 2.8.1 5389 + 5390 + '@aws-crypto/sha256-js@5.2.0': 5391 + dependencies: 5392 + '@aws-crypto/util': 5.2.0 5393 + '@aws-sdk/types': 3.973.6 5394 + tslib: 2.8.1 5395 + 5396 + '@aws-crypto/supports-web-crypto@5.2.0': 5397 + dependencies: 5398 + tslib: 2.8.1 5399 + 5400 + '@aws-crypto/util@5.2.0': 5401 + dependencies: 5402 + '@aws-sdk/types': 3.973.6 5403 + '@smithy/util-utf8': 2.3.0 5404 + tslib: 2.8.1 5405 + 5406 + '@aws-sdk/client-cloudfront@3.1022.0': 5407 + dependencies: 5408 + '@aws-crypto/sha256-browser': 5.2.0 5409 + '@aws-crypto/sha256-js': 5.2.0 5410 + '@aws-sdk/core': 3.973.26 5411 + '@aws-sdk/credential-provider-node': 3.972.29 5412 + '@aws-sdk/middleware-host-header': 3.972.8 5413 + '@aws-sdk/middleware-logger': 3.972.8 5414 + '@aws-sdk/middleware-recursion-detection': 3.972.9 5415 + '@aws-sdk/middleware-user-agent': 3.972.28 5416 + '@aws-sdk/region-config-resolver': 3.972.10 5417 + '@aws-sdk/types': 3.973.6 5418 + '@aws-sdk/util-endpoints': 3.996.5 5419 + '@aws-sdk/util-user-agent-browser': 3.972.8 5420 + '@aws-sdk/util-user-agent-node': 3.973.14 5421 + '@smithy/config-resolver': 4.4.13 5422 + '@smithy/core': 3.23.13 5423 + '@smithy/fetch-http-handler': 5.3.15 5424 + '@smithy/hash-node': 4.2.12 5425 + '@smithy/invalid-dependency': 4.2.12 5426 + '@smithy/middleware-content-length': 4.2.12 5427 + '@smithy/middleware-endpoint': 4.4.28 5428 + '@smithy/middleware-retry': 4.4.46 5429 + '@smithy/middleware-serde': 4.2.16 5430 + '@smithy/middleware-stack': 4.2.12 5431 + '@smithy/node-config-provider': 4.3.12 5432 + '@smithy/node-http-handler': 4.5.1 5433 + '@smithy/protocol-http': 5.3.12 5434 + '@smithy/smithy-client': 4.12.8 5435 + '@smithy/types': 4.13.1 5436 + '@smithy/url-parser': 4.2.12 5437 + '@smithy/util-base64': 4.3.2 5438 + '@smithy/util-body-length-browser': 4.2.2 5439 + '@smithy/util-body-length-node': 4.2.3 5440 + '@smithy/util-defaults-mode-browser': 4.3.44 5441 + '@smithy/util-defaults-mode-node': 4.2.48 5442 + '@smithy/util-endpoints': 3.3.3 5443 + '@smithy/util-middleware': 4.2.12 5444 + '@smithy/util-retry': 4.2.13 5445 + '@smithy/util-stream': 4.5.21 5446 + '@smithy/util-utf8': 4.2.2 5447 + '@smithy/util-waiter': 4.2.14 5448 + tslib: 2.8.1 5449 + transitivePeerDependencies: 5450 + - aws-crt 5451 + 5452 + '@aws-sdk/client-kms@3.1022.0': 5453 + dependencies: 5454 + '@aws-crypto/sha256-browser': 5.2.0 5455 + '@aws-crypto/sha256-js': 5.2.0 5456 + '@aws-sdk/core': 3.973.26 5457 + '@aws-sdk/credential-provider-node': 3.972.29 5458 + '@aws-sdk/middleware-host-header': 3.972.8 5459 + '@aws-sdk/middleware-logger': 3.972.8 5460 + '@aws-sdk/middleware-recursion-detection': 3.972.9 5461 + '@aws-sdk/middleware-user-agent': 3.972.28 5462 + '@aws-sdk/region-config-resolver': 3.972.10 5463 + '@aws-sdk/types': 3.973.6 5464 + '@aws-sdk/util-endpoints': 3.996.5 5465 + '@aws-sdk/util-user-agent-browser': 3.972.8 5466 + '@aws-sdk/util-user-agent-node': 3.973.14 5467 + '@smithy/config-resolver': 4.4.13 5468 + '@smithy/core': 3.23.13 5469 + '@smithy/fetch-http-handler': 5.3.15 5470 + '@smithy/hash-node': 4.2.12 5471 + '@smithy/invalid-dependency': 4.2.12 5472 + '@smithy/middleware-content-length': 4.2.12 5473 + '@smithy/middleware-endpoint': 4.4.28 5474 + '@smithy/middleware-retry': 4.4.46 5475 + '@smithy/middleware-serde': 4.2.16 5476 + '@smithy/middleware-stack': 4.2.12 5477 + '@smithy/node-config-provider': 4.3.12 5478 + '@smithy/node-http-handler': 4.5.1 5479 + '@smithy/protocol-http': 5.3.12 5480 + '@smithy/smithy-client': 4.12.8 5481 + '@smithy/types': 4.13.1 5482 + '@smithy/url-parser': 4.2.12 5483 + '@smithy/util-base64': 4.3.2 5484 + '@smithy/util-body-length-browser': 4.2.2 5485 + '@smithy/util-body-length-node': 4.2.3 5486 + '@smithy/util-defaults-mode-browser': 4.3.44 5487 + '@smithy/util-defaults-mode-node': 4.2.48 5488 + '@smithy/util-endpoints': 3.3.3 5489 + '@smithy/util-middleware': 4.2.12 5490 + '@smithy/util-retry': 4.2.13 5491 + '@smithy/util-utf8': 4.2.2 5492 + tslib: 2.8.1 5493 + transitivePeerDependencies: 5494 + - aws-crt 5495 + 5496 + '@aws-sdk/client-s3@3.1022.0': 5497 + dependencies: 5498 + '@aws-crypto/sha1-browser': 5.2.0 5499 + '@aws-crypto/sha256-browser': 5.2.0 5500 + '@aws-crypto/sha256-js': 5.2.0 5501 + '@aws-sdk/core': 3.973.26 5502 + '@aws-sdk/credential-provider-node': 3.972.29 5503 + '@aws-sdk/middleware-bucket-endpoint': 3.972.8 5504 + '@aws-sdk/middleware-expect-continue': 3.972.8 5505 + '@aws-sdk/middleware-flexible-checksums': 3.974.6 5506 + '@aws-sdk/middleware-host-header': 3.972.8 5507 + '@aws-sdk/middleware-location-constraint': 3.972.8 5508 + '@aws-sdk/middleware-logger': 3.972.8 5509 + '@aws-sdk/middleware-recursion-detection': 3.972.9 5510 + '@aws-sdk/middleware-sdk-s3': 3.972.27 5511 + '@aws-sdk/middleware-ssec': 3.972.8 5512 + '@aws-sdk/middleware-user-agent': 3.972.28 5513 + '@aws-sdk/region-config-resolver': 3.972.10 5514 + '@aws-sdk/signature-v4-multi-region': 3.996.15 5515 + '@aws-sdk/types': 3.973.6 5516 + '@aws-sdk/util-endpoints': 3.996.5 5517 + '@aws-sdk/util-user-agent-browser': 3.972.8 5518 + '@aws-sdk/util-user-agent-node': 3.973.14 5519 + '@smithy/config-resolver': 4.4.13 5520 + '@smithy/core': 3.23.13 5521 + '@smithy/eventstream-serde-browser': 4.2.12 5522 + '@smithy/eventstream-serde-config-resolver': 4.3.12 5523 + '@smithy/eventstream-serde-node': 4.2.12 5524 + '@smithy/fetch-http-handler': 5.3.15 5525 + '@smithy/hash-blob-browser': 4.2.13 5526 + '@smithy/hash-node': 4.2.12 5527 + '@smithy/hash-stream-node': 4.2.12 5528 + '@smithy/invalid-dependency': 4.2.12 5529 + '@smithy/md5-js': 4.2.12 5530 + '@smithy/middleware-content-length': 4.2.12 5531 + '@smithy/middleware-endpoint': 4.4.28 5532 + '@smithy/middleware-retry': 4.4.46 5533 + '@smithy/middleware-serde': 4.2.16 5534 + '@smithy/middleware-stack': 4.2.12 5535 + '@smithy/node-config-provider': 4.3.12 5536 + '@smithy/node-http-handler': 4.5.1 5537 + '@smithy/protocol-http': 5.3.12 5538 + '@smithy/smithy-client': 4.12.8 5539 + '@smithy/types': 4.13.1 5540 + '@smithy/url-parser': 4.2.12 5541 + '@smithy/util-base64': 4.3.2 5542 + '@smithy/util-body-length-browser': 4.2.2 5543 + '@smithy/util-body-length-node': 4.2.3 5544 + '@smithy/util-defaults-mode-browser': 4.3.44 5545 + '@smithy/util-defaults-mode-node': 4.2.48 5546 + '@smithy/util-endpoints': 3.3.3 5547 + '@smithy/util-middleware': 4.2.12 5548 + '@smithy/util-retry': 4.2.13 5549 + '@smithy/util-stream': 4.5.21 5550 + '@smithy/util-utf8': 4.2.2 5551 + '@smithy/util-waiter': 4.2.14 5552 + tslib: 2.8.1 5553 + transitivePeerDependencies: 5554 + - aws-crt 5555 + 5556 + '@aws-sdk/core@3.973.26': 5557 + dependencies: 5558 + '@aws-sdk/types': 3.973.6 5559 + '@aws-sdk/xml-builder': 3.972.16 5560 + '@smithy/core': 3.23.13 5561 + '@smithy/node-config-provider': 4.3.12 5562 + '@smithy/property-provider': 4.2.12 5563 + '@smithy/protocol-http': 5.3.12 5564 + '@smithy/signature-v4': 5.3.12 5565 + '@smithy/smithy-client': 4.12.8 5566 + '@smithy/types': 4.13.1 5567 + '@smithy/util-base64': 4.3.2 5568 + '@smithy/util-middleware': 4.2.12 5569 + '@smithy/util-utf8': 4.2.2 5570 + tslib: 2.8.1 5571 + 5572 + '@aws-sdk/crc64-nvme@3.972.5': 5573 + dependencies: 5574 + '@smithy/types': 4.13.1 5575 + tslib: 2.8.1 5576 + 5577 + '@aws-sdk/credential-provider-env@3.972.24': 5578 + dependencies: 5579 + '@aws-sdk/core': 3.973.26 5580 + '@aws-sdk/types': 3.973.6 5581 + '@smithy/property-provider': 4.2.12 5582 + '@smithy/types': 4.13.1 5583 + tslib: 2.8.1 5584 + 5585 + '@aws-sdk/credential-provider-http@3.972.26': 5586 + dependencies: 5587 + '@aws-sdk/core': 3.973.26 5588 + '@aws-sdk/types': 3.973.6 5589 + '@smithy/fetch-http-handler': 5.3.15 5590 + '@smithy/node-http-handler': 4.5.1 5591 + '@smithy/property-provider': 4.2.12 5592 + '@smithy/protocol-http': 5.3.12 5593 + '@smithy/smithy-client': 4.12.8 5594 + '@smithy/types': 4.13.1 5595 + '@smithy/util-stream': 4.5.21 5596 + tslib: 2.8.1 5597 + 5598 + '@aws-sdk/credential-provider-ini@3.972.28': 5599 + dependencies: 5600 + '@aws-sdk/core': 3.973.26 5601 + '@aws-sdk/credential-provider-env': 3.972.24 5602 + '@aws-sdk/credential-provider-http': 3.972.26 5603 + '@aws-sdk/credential-provider-login': 3.972.28 5604 + '@aws-sdk/credential-provider-process': 3.972.24 5605 + '@aws-sdk/credential-provider-sso': 3.972.28 5606 + '@aws-sdk/credential-provider-web-identity': 3.972.28 5607 + '@aws-sdk/nested-clients': 3.996.18 5608 + '@aws-sdk/types': 3.973.6 5609 + '@smithy/credential-provider-imds': 4.2.12 5610 + '@smithy/property-provider': 4.2.12 5611 + '@smithy/shared-ini-file-loader': 4.4.7 5612 + '@smithy/types': 4.13.1 5613 + tslib: 2.8.1 5614 + transitivePeerDependencies: 5615 + - aws-crt 5616 + 5617 + '@aws-sdk/credential-provider-login@3.972.28': 5618 + dependencies: 5619 + '@aws-sdk/core': 3.973.26 5620 + '@aws-sdk/nested-clients': 3.996.18 5621 + '@aws-sdk/types': 3.973.6 5622 + '@smithy/property-provider': 4.2.12 5623 + '@smithy/protocol-http': 5.3.12 5624 + '@smithy/shared-ini-file-loader': 4.4.7 5625 + '@smithy/types': 4.13.1 5626 + tslib: 2.8.1 5627 + transitivePeerDependencies: 5628 + - aws-crt 5629 + 5630 + '@aws-sdk/credential-provider-node@3.972.29': 5631 + dependencies: 5632 + '@aws-sdk/credential-provider-env': 3.972.24 5633 + '@aws-sdk/credential-provider-http': 3.972.26 5634 + '@aws-sdk/credential-provider-ini': 3.972.28 5635 + '@aws-sdk/credential-provider-process': 3.972.24 5636 + '@aws-sdk/credential-provider-sso': 3.972.28 5637 + '@aws-sdk/credential-provider-web-identity': 3.972.28 5638 + '@aws-sdk/types': 3.973.6 5639 + '@smithy/credential-provider-imds': 4.2.12 5640 + '@smithy/property-provider': 4.2.12 5641 + '@smithy/shared-ini-file-loader': 4.4.7 5642 + '@smithy/types': 4.13.1 5643 + tslib: 2.8.1 5644 + transitivePeerDependencies: 5645 + - aws-crt 5646 + 5647 + '@aws-sdk/credential-provider-process@3.972.24': 5648 + dependencies: 5649 + '@aws-sdk/core': 3.973.26 5650 + '@aws-sdk/types': 3.973.6 5651 + '@smithy/property-provider': 4.2.12 5652 + '@smithy/shared-ini-file-loader': 4.4.7 5653 + '@smithy/types': 4.13.1 5654 + tslib: 2.8.1 5655 + 5656 + '@aws-sdk/credential-provider-sso@3.972.28': 5657 + dependencies: 5658 + '@aws-sdk/core': 3.973.26 5659 + '@aws-sdk/nested-clients': 3.996.18 5660 + '@aws-sdk/token-providers': 3.1021.0 5661 + '@aws-sdk/types': 3.973.6 5662 + '@smithy/property-provider': 4.2.12 5663 + '@smithy/shared-ini-file-loader': 4.4.7 5664 + '@smithy/types': 4.13.1 5665 + tslib: 2.8.1 5666 + transitivePeerDependencies: 5667 + - aws-crt 5668 + 5669 + '@aws-sdk/credential-provider-web-identity@3.972.28': 5670 + dependencies: 5671 + '@aws-sdk/core': 3.973.26 5672 + '@aws-sdk/nested-clients': 3.996.18 5673 + '@aws-sdk/types': 3.973.6 5674 + '@smithy/property-provider': 4.2.12 5675 + '@smithy/shared-ini-file-loader': 4.4.7 5676 + '@smithy/types': 4.13.1 5677 + tslib: 2.8.1 5678 + transitivePeerDependencies: 5679 + - aws-crt 5680 + 5681 + '@aws-sdk/lib-storage@3.879.0(@aws-sdk/client-s3@3.1022.0)': 5682 + dependencies: 5683 + '@aws-sdk/client-s3': 3.1022.0 5684 + '@smithy/abort-controller': 4.2.12 5685 + '@smithy/middleware-endpoint': 4.4.28 5686 + '@smithy/smithy-client': 4.12.8 5687 + buffer: 5.6.0 5688 + events: 3.3.0 5689 + stream-browserify: 3.0.0 5690 + tslib: 2.8.1 5691 + 5692 + '@aws-sdk/middleware-bucket-endpoint@3.972.8': 5693 + dependencies: 5694 + '@aws-sdk/types': 3.973.6 5695 + '@aws-sdk/util-arn-parser': 3.972.3 5696 + '@smithy/node-config-provider': 4.3.12 5697 + '@smithy/protocol-http': 5.3.12 5698 + '@smithy/types': 4.13.1 5699 + '@smithy/util-config-provider': 4.2.2 5700 + tslib: 2.8.1 5701 + 5702 + '@aws-sdk/middleware-expect-continue@3.972.8': 5703 + dependencies: 5704 + '@aws-sdk/types': 3.973.6 5705 + '@smithy/protocol-http': 5.3.12 5706 + '@smithy/types': 4.13.1 5707 + tslib: 2.8.1 5708 + 5709 + '@aws-sdk/middleware-flexible-checksums@3.974.6': 5710 + dependencies: 5711 + '@aws-crypto/crc32': 5.2.0 5712 + '@aws-crypto/crc32c': 5.2.0 5713 + '@aws-crypto/util': 5.2.0 5714 + '@aws-sdk/core': 3.973.26 5715 + '@aws-sdk/crc64-nvme': 3.972.5 5716 + '@aws-sdk/types': 3.973.6 5717 + '@smithy/is-array-buffer': 4.2.2 5718 + '@smithy/node-config-provider': 4.3.12 5719 + '@smithy/protocol-http': 5.3.12 5720 + '@smithy/types': 4.13.1 5721 + '@smithy/util-middleware': 4.2.12 5722 + '@smithy/util-stream': 4.5.21 5723 + '@smithy/util-utf8': 4.2.2 5724 + tslib: 2.8.1 5725 + 5726 + '@aws-sdk/middleware-host-header@3.972.8': 5727 + dependencies: 5728 + '@aws-sdk/types': 3.973.6 5729 + '@smithy/protocol-http': 5.3.12 5730 + '@smithy/types': 4.13.1 5731 + tslib: 2.8.1 5732 + 5733 + '@aws-sdk/middleware-location-constraint@3.972.8': 5734 + dependencies: 5735 + '@aws-sdk/types': 3.973.6 5736 + '@smithy/types': 4.13.1 5737 + tslib: 2.8.1 5738 + 5739 + '@aws-sdk/middleware-logger@3.972.8': 5740 + dependencies: 5741 + '@aws-sdk/types': 3.973.6 5742 + '@smithy/types': 4.13.1 5743 + tslib: 2.8.1 5744 + 5745 + '@aws-sdk/middleware-recursion-detection@3.972.9': 5746 + dependencies: 5747 + '@aws-sdk/types': 3.973.6 5748 + '@aws/lambda-invoke-store': 0.2.4 5749 + '@smithy/protocol-http': 5.3.12 5750 + '@smithy/types': 4.13.1 5751 + tslib: 2.8.1 5752 + 5753 + '@aws-sdk/middleware-sdk-s3@3.972.27': 5754 + dependencies: 5755 + '@aws-sdk/core': 3.973.26 5756 + '@aws-sdk/types': 3.973.6 5757 + '@aws-sdk/util-arn-parser': 3.972.3 5758 + '@smithy/core': 3.23.13 5759 + '@smithy/node-config-provider': 4.3.12 5760 + '@smithy/protocol-http': 5.3.12 5761 + '@smithy/signature-v4': 5.3.12 5762 + '@smithy/smithy-client': 4.12.8 5763 + '@smithy/types': 4.13.1 5764 + '@smithy/util-config-provider': 4.2.2 5765 + '@smithy/util-middleware': 4.2.12 5766 + '@smithy/util-stream': 4.5.21 5767 + '@smithy/util-utf8': 4.2.2 5768 + tslib: 2.8.1 5769 + 5770 + '@aws-sdk/middleware-ssec@3.972.8': 5771 + dependencies: 5772 + '@aws-sdk/types': 3.973.6 5773 + '@smithy/types': 4.13.1 5774 + tslib: 2.8.1 5775 + 5776 + '@aws-sdk/middleware-user-agent@3.972.28': 5777 + dependencies: 5778 + '@aws-sdk/core': 3.973.26 5779 + '@aws-sdk/types': 3.973.6 5780 + '@aws-sdk/util-endpoints': 3.996.5 5781 + '@smithy/core': 3.23.13 5782 + '@smithy/protocol-http': 5.3.12 5783 + '@smithy/types': 4.13.1 5784 + '@smithy/util-retry': 4.2.13 5785 + tslib: 2.8.1 5786 + 5787 + '@aws-sdk/nested-clients@3.996.18': 5788 + dependencies: 5789 + '@aws-crypto/sha256-browser': 5.2.0 5790 + '@aws-crypto/sha256-js': 5.2.0 5791 + '@aws-sdk/core': 3.973.26 5792 + '@aws-sdk/middleware-host-header': 3.972.8 5793 + '@aws-sdk/middleware-logger': 3.972.8 5794 + '@aws-sdk/middleware-recursion-detection': 3.972.9 5795 + '@aws-sdk/middleware-user-agent': 3.972.28 5796 + '@aws-sdk/region-config-resolver': 3.972.10 5797 + '@aws-sdk/types': 3.973.6 5798 + '@aws-sdk/util-endpoints': 3.996.5 5799 + '@aws-sdk/util-user-agent-browser': 3.972.8 5800 + '@aws-sdk/util-user-agent-node': 3.973.14 5801 + '@smithy/config-resolver': 4.4.13 5802 + '@smithy/core': 3.23.13 5803 + '@smithy/fetch-http-handler': 5.3.15 5804 + '@smithy/hash-node': 4.2.12 5805 + '@smithy/invalid-dependency': 4.2.12 5806 + '@smithy/middleware-content-length': 4.2.12 5807 + '@smithy/middleware-endpoint': 4.4.28 5808 + '@smithy/middleware-retry': 4.4.46 5809 + '@smithy/middleware-serde': 4.2.16 5810 + '@smithy/middleware-stack': 4.2.12 5811 + '@smithy/node-config-provider': 4.3.12 5812 + '@smithy/node-http-handler': 4.5.1 5813 + '@smithy/protocol-http': 5.3.12 5814 + '@smithy/smithy-client': 4.12.8 5815 + '@smithy/types': 4.13.1 5816 + '@smithy/url-parser': 4.2.12 5817 + '@smithy/util-base64': 4.3.2 5818 + '@smithy/util-body-length-browser': 4.2.2 5819 + '@smithy/util-body-length-node': 4.2.3 5820 + '@smithy/util-defaults-mode-browser': 4.3.44 5821 + '@smithy/util-defaults-mode-node': 4.2.48 5822 + '@smithy/util-endpoints': 3.3.3 5823 + '@smithy/util-middleware': 4.2.12 5824 + '@smithy/util-retry': 4.2.13 5825 + '@smithy/util-utf8': 4.2.2 5826 + tslib: 2.8.1 5827 + transitivePeerDependencies: 5828 + - aws-crt 5829 + 5830 + '@aws-sdk/region-config-resolver@3.972.10': 5831 + dependencies: 5832 + '@aws-sdk/types': 3.973.6 5833 + '@smithy/config-resolver': 4.4.13 5834 + '@smithy/node-config-provider': 4.3.12 5835 + '@smithy/types': 4.13.1 5836 + tslib: 2.8.1 5837 + 5838 + '@aws-sdk/signature-v4-multi-region@3.996.15': 5839 + dependencies: 5840 + '@aws-sdk/middleware-sdk-s3': 3.972.27 5841 + '@aws-sdk/types': 3.973.6 5842 + '@smithy/protocol-http': 5.3.12 5843 + '@smithy/signature-v4': 5.3.12 5844 + '@smithy/types': 4.13.1 5845 + tslib: 2.8.1 5846 + 5847 + '@aws-sdk/token-providers@3.1021.0': 5848 + dependencies: 5849 + '@aws-sdk/core': 3.973.26 5850 + '@aws-sdk/nested-clients': 3.996.18 5851 + '@aws-sdk/types': 3.973.6 5852 + '@smithy/property-provider': 4.2.12 5853 + '@smithy/shared-ini-file-loader': 4.4.7 5854 + '@smithy/types': 4.13.1 5855 + tslib: 2.8.1 5856 + transitivePeerDependencies: 5857 + - aws-crt 5858 + 5859 + '@aws-sdk/types@3.973.6': 5860 + dependencies: 5861 + '@smithy/types': 4.13.1 5862 + tslib: 2.8.1 5863 + 5864 + '@aws-sdk/util-arn-parser@3.972.3': 5865 + dependencies: 5866 + tslib: 2.8.1 5867 + 5868 + '@aws-sdk/util-endpoints@3.996.5': 5869 + dependencies: 5870 + '@aws-sdk/types': 3.973.6 5871 + '@smithy/types': 4.13.1 5872 + '@smithy/url-parser': 4.2.12 5873 + '@smithy/util-endpoints': 3.3.3 5874 + tslib: 2.8.1 5875 + 5876 + '@aws-sdk/util-locate-window@3.965.5': 5877 + dependencies: 5878 + tslib: 2.8.1 5879 + 5880 + '@aws-sdk/util-user-agent-browser@3.972.8': 5881 + dependencies: 5882 + '@aws-sdk/types': 3.973.6 5883 + '@smithy/types': 4.13.1 5884 + bowser: 2.14.1 5885 + tslib: 2.8.1 5886 + 5887 + '@aws-sdk/util-user-agent-node@3.973.14': 5888 + dependencies: 5889 + '@aws-sdk/middleware-user-agent': 3.972.28 5890 + '@aws-sdk/types': 3.973.6 5891 + '@smithy/node-config-provider': 4.3.12 5892 + '@smithy/types': 4.13.1 5893 + '@smithy/util-config-provider': 4.2.2 5894 + tslib: 2.8.1 5895 + 5896 + '@aws-sdk/xml-builder@3.972.16': 5897 + dependencies: 5898 + '@smithy/types': 4.13.1 5899 + fast-xml-parser: 5.5.8 5900 + tslib: 2.8.1 5901 + 5902 + '@aws/lambda-invoke-store@0.2.4': {} 5903 + 3615 5904 '@babel/code-frame@7.26.2': 3616 5905 dependencies: 3617 5906 '@babel/helper-validator-identifier': 7.28.5 ··· 3734 6023 '@babel/helper-string-parser': 7.27.1 3735 6024 '@babel/helper-validator-identifier': 7.28.5 3736 6025 6026 + '@bufbuild/protobuf@1.10.1': {} 6027 + 3737 6028 '@cloudflare/kv-asset-handler@0.4.2': {} 3738 6029 6030 + '@connectrpc/connect-express@1.7.0(@bufbuild/protobuf@1.10.1)(@connectrpc/connect-node@1.7.0(@bufbuild/protobuf@1.10.1)(@connectrpc/connect@1.7.0(@bufbuild/protobuf@1.10.1)))(@connectrpc/connect@1.7.0(@bufbuild/protobuf@1.10.1))': 6031 + dependencies: 6032 + '@bufbuild/protobuf': 1.10.1 6033 + '@connectrpc/connect': 1.7.0(@bufbuild/protobuf@1.10.1) 6034 + '@connectrpc/connect-node': 1.7.0(@bufbuild/protobuf@1.10.1)(@connectrpc/connect@1.7.0(@bufbuild/protobuf@1.10.1)) 6035 + 6036 + '@connectrpc/connect-node@1.7.0(@bufbuild/protobuf@1.10.1)(@connectrpc/connect@1.7.0(@bufbuild/protobuf@1.10.1))': 6037 + dependencies: 6038 + '@bufbuild/protobuf': 1.10.1 6039 + '@connectrpc/connect': 1.7.0(@bufbuild/protobuf@1.10.1) 6040 + undici: 5.29.0 6041 + 6042 + '@connectrpc/connect@1.7.0(@bufbuild/protobuf@1.10.1)': 6043 + dependencies: 6044 + '@bufbuild/protobuf': 1.10.1 6045 + 3739 6046 '@deno/shim-deno-test@0.5.0': {} 3740 6047 3741 6048 '@deno/shim-deno@0.19.2': ··· 3743 6050 '@deno/shim-deno-test': 0.5.0 3744 6051 which: 4.0.0 3745 6052 6053 + '@did-plc/lib@0.0.1': 6054 + dependencies: 6055 + '@atproto/common': 0.1.0 6056 + '@atproto/crypto': 0.1.0 6057 + '@ipld/dag-cbor': 7.0.3 6058 + axios: 1.14.0 6059 + multiformats: 9.9.0 6060 + uint8arrays: 3.0.0 6061 + zod: 3.25.76 6062 + transitivePeerDependencies: 6063 + - debug 6064 + 6065 + '@did-plc/lib@0.0.4': 6066 + dependencies: 6067 + '@atproto/common': 0.1.1 6068 + '@atproto/crypto': 0.1.0 6069 + '@ipld/dag-cbor': 7.0.3 6070 + axios: 1.14.0 6071 + multiformats: 9.9.0 6072 + uint8arrays: 3.0.0 6073 + zod: 3.25.76 6074 + transitivePeerDependencies: 6075 + - debug 6076 + 6077 + '@did-plc/server@0.0.1': 6078 + dependencies: 6079 + '@atproto/common': 0.1.0 6080 + '@atproto/crypto': 0.1.0 6081 + '@did-plc/lib': 0.0.1 6082 + axios: 1.14.0 6083 + cors: 2.8.6 6084 + express: 4.22.1 6085 + express-async-errors: 3.1.1(express@4.22.1) 6086 + http-terminator: 3.2.0 6087 + kysely: 0.23.5 6088 + multiformats: 9.9.0 6089 + pg: 8.20.0 6090 + pino: 8.21.0 6091 + pino-http: 8.6.1 6092 + transitivePeerDependencies: 6093 + - debug 6094 + - pg-native 6095 + - supports-color 6096 + 3746 6097 '@drizzle-team/brocli@0.10.2': {} 6098 + 6099 + '@emnapi/runtime@1.9.2': 6100 + dependencies: 6101 + tslib: 2.8.1 6102 + optional: true 3747 6103 3748 6104 '@esbuild-kit/core-utils@3.3.2': 3749 6105 dependencies: ··· 4046 6402 '@esbuild/win32-x64@0.27.4': 4047 6403 optional: true 4048 6404 6405 + '@fastify/busboy@2.1.1': {} 6406 + 6407 + '@growthbook/growthbook@1.6.5': 6408 + dependencies: 6409 + dom-mutator: 0.6.0 6410 + 6411 + '@grpc/grpc-js@1.14.3': 6412 + dependencies: 6413 + '@grpc/proto-loader': 0.8.0 6414 + '@js-sdsl/ordered-map': 4.4.2 6415 + 6416 + '@grpc/proto-loader@0.7.15': 6417 + dependencies: 6418 + lodash.camelcase: 4.3.0 6419 + long: 5.3.2 6420 + protobufjs: 7.5.4 6421 + yargs: 17.7.2 6422 + 6423 + '@grpc/proto-loader@0.8.0': 6424 + dependencies: 6425 + lodash.camelcase: 4.3.0 6426 + long: 5.3.2 6427 + protobufjs: 7.5.4 6428 + yargs: 17.7.2 6429 + 6430 + '@hapi/accept@6.0.3': 6431 + dependencies: 6432 + '@hapi/boom': 10.0.1 6433 + '@hapi/hoek': 11.0.7 6434 + 6435 + '@hapi/address@5.1.1': 6436 + dependencies: 6437 + '@hapi/hoek': 11.0.7 6438 + 6439 + '@hapi/boom@10.0.1': 6440 + dependencies: 6441 + '@hapi/hoek': 11.0.7 6442 + 6443 + '@hapi/bourne@3.0.0': {} 6444 + 6445 + '@hapi/content@6.0.1': 6446 + dependencies: 6447 + '@hapi/boom': 10.0.1 6448 + 6449 + '@hapi/hoek@11.0.7': {} 6450 + 6451 + '@img/sharp-darwin-arm64@0.33.5': 6452 + optionalDependencies: 6453 + '@img/sharp-libvips-darwin-arm64': 1.0.4 6454 + optional: true 6455 + 6456 + '@img/sharp-darwin-x64@0.33.5': 6457 + optionalDependencies: 6458 + '@img/sharp-libvips-darwin-x64': 1.0.4 6459 + optional: true 6460 + 6461 + '@img/sharp-libvips-darwin-arm64@1.0.4': 6462 + optional: true 6463 + 6464 + '@img/sharp-libvips-darwin-x64@1.0.4': 6465 + optional: true 6466 + 6467 + '@img/sharp-libvips-linux-arm64@1.0.4': 6468 + optional: true 6469 + 6470 + '@img/sharp-libvips-linux-arm@1.0.5': 6471 + optional: true 6472 + 6473 + '@img/sharp-libvips-linux-s390x@1.0.4': 6474 + optional: true 6475 + 6476 + '@img/sharp-libvips-linux-x64@1.0.4': 6477 + optional: true 6478 + 6479 + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': 6480 + optional: true 6481 + 6482 + '@img/sharp-libvips-linuxmusl-x64@1.0.4': 6483 + optional: true 6484 + 6485 + '@img/sharp-linux-arm64@0.33.5': 6486 + optionalDependencies: 6487 + '@img/sharp-libvips-linux-arm64': 1.0.4 6488 + optional: true 6489 + 6490 + '@img/sharp-linux-arm@0.33.5': 6491 + optionalDependencies: 6492 + '@img/sharp-libvips-linux-arm': 1.0.5 6493 + optional: true 6494 + 6495 + '@img/sharp-linux-s390x@0.33.5': 6496 + optionalDependencies: 6497 + '@img/sharp-libvips-linux-s390x': 1.0.4 6498 + optional: true 6499 + 6500 + '@img/sharp-linux-x64@0.33.5': 6501 + optionalDependencies: 6502 + '@img/sharp-libvips-linux-x64': 1.0.4 6503 + optional: true 6504 + 6505 + '@img/sharp-linuxmusl-arm64@0.33.5': 6506 + optionalDependencies: 6507 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 6508 + optional: true 6509 + 6510 + '@img/sharp-linuxmusl-x64@0.33.5': 6511 + optionalDependencies: 6512 + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 6513 + optional: true 6514 + 6515 + '@img/sharp-wasm32@0.33.5': 6516 + dependencies: 6517 + '@emnapi/runtime': 1.9.2 6518 + optional: true 6519 + 6520 + '@img/sharp-win32-ia32@0.33.5': 6521 + optional: true 6522 + 6523 + '@img/sharp-win32-x64@0.33.5': 6524 + optional: true 6525 + 4049 6526 '@ioredis/commands@1.5.1': {} 6527 + 6528 + '@ipld/dag-cbor@7.0.3': 6529 + dependencies: 6530 + cborg: 1.10.2 6531 + multiformats: 9.9.0 4050 6532 4051 6533 '@isaacs/cliui@8.0.2': 4052 6534 dependencies: ··· 4085 6567 '@jridgewell/resolve-uri': 3.1.2 4086 6568 '@jridgewell/sourcemap-codec': 1.5.5 4087 6569 6570 + '@js-sdsl/ordered-map@4.4.2': {} 6571 + 4088 6572 '@mapbox/node-pre-gyp@2.0.3': 4089 6573 dependencies: 4090 6574 consola: 3.4.2 ··· 4103 6587 '@noble/hashes': 1.8.0 4104 6588 4105 6589 '@noble/hashes@1.8.0': {} 6590 + 6591 + '@noble/secp256k1@1.7.2': {} 4106 6592 4107 6593 '@nodelib/fs.scandir@2.1.5': 4108 6594 dependencies: ··· 4203 6689 4204 6690 '@poppinss/exception@1.2.3': {} 4205 6691 6692 + '@protobufjs/aspromise@1.1.2': {} 6693 + 6694 + '@protobufjs/base64@1.1.2': {} 6695 + 6696 + '@protobufjs/codegen@2.0.4': {} 6697 + 6698 + '@protobufjs/eventemitter@1.1.0': {} 6699 + 6700 + '@protobufjs/fetch@1.1.0': 6701 + dependencies: 6702 + '@protobufjs/aspromise': 1.1.2 6703 + '@protobufjs/inquire': 1.1.0 6704 + 6705 + '@protobufjs/float@1.0.2': {} 6706 + 6707 + '@protobufjs/inquire@1.1.0': {} 6708 + 6709 + '@protobufjs/path@1.1.2': {} 6710 + 6711 + '@protobufjs/pool@1.1.0': {} 6712 + 6713 + '@protobufjs/utf8@1.1.0': {} 6714 + 4206 6715 '@rollup/plugin-alias@6.0.0(rollup@4.60.1)': 4207 6716 optionalDependencies: 4208 6717 rollup: 4.60.1 ··· 4380 6889 4381 6890 '@sindresorhus/merge-streams@4.0.0': {} 4382 6891 6892 + '@smithy/abort-controller@4.2.12': 6893 + dependencies: 6894 + '@smithy/types': 4.13.1 6895 + tslib: 2.8.1 6896 + 6897 + '@smithy/chunked-blob-reader-native@4.2.3': 6898 + dependencies: 6899 + '@smithy/util-base64': 4.3.2 6900 + tslib: 2.8.1 6901 + 6902 + '@smithy/chunked-blob-reader@5.2.2': 6903 + dependencies: 6904 + tslib: 2.8.1 6905 + 6906 + '@smithy/config-resolver@4.4.13': 6907 + dependencies: 6908 + '@smithy/node-config-provider': 4.3.12 6909 + '@smithy/types': 4.13.1 6910 + '@smithy/util-config-provider': 4.2.2 6911 + '@smithy/util-endpoints': 3.3.3 6912 + '@smithy/util-middleware': 4.2.12 6913 + tslib: 2.8.1 6914 + 6915 + '@smithy/core@3.23.13': 6916 + dependencies: 6917 + '@smithy/protocol-http': 5.3.12 6918 + '@smithy/types': 4.13.1 6919 + '@smithy/url-parser': 4.2.12 6920 + '@smithy/util-base64': 4.3.2 6921 + '@smithy/util-body-length-browser': 4.2.2 6922 + '@smithy/util-middleware': 4.2.12 6923 + '@smithy/util-stream': 4.5.21 6924 + '@smithy/util-utf8': 4.2.2 6925 + '@smithy/uuid': 1.1.2 6926 + tslib: 2.8.1 6927 + 6928 + '@smithy/credential-provider-imds@4.2.12': 6929 + dependencies: 6930 + '@smithy/node-config-provider': 4.3.12 6931 + '@smithy/property-provider': 4.2.12 6932 + '@smithy/types': 4.13.1 6933 + '@smithy/url-parser': 4.2.12 6934 + tslib: 2.8.1 6935 + 6936 + '@smithy/eventstream-codec@4.2.12': 6937 + dependencies: 6938 + '@aws-crypto/crc32': 5.2.0 6939 + '@smithy/types': 4.13.1 6940 + '@smithy/util-hex-encoding': 4.2.2 6941 + tslib: 2.8.1 6942 + 6943 + '@smithy/eventstream-serde-browser@4.2.12': 6944 + dependencies: 6945 + '@smithy/eventstream-serde-universal': 4.2.12 6946 + '@smithy/types': 4.13.1 6947 + tslib: 2.8.1 6948 + 6949 + '@smithy/eventstream-serde-config-resolver@4.3.12': 6950 + dependencies: 6951 + '@smithy/types': 4.13.1 6952 + tslib: 2.8.1 6953 + 6954 + '@smithy/eventstream-serde-node@4.2.12': 6955 + dependencies: 6956 + '@smithy/eventstream-serde-universal': 4.2.12 6957 + '@smithy/types': 4.13.1 6958 + tslib: 2.8.1 6959 + 6960 + '@smithy/eventstream-serde-universal@4.2.12': 6961 + dependencies: 6962 + '@smithy/eventstream-codec': 4.2.12 6963 + '@smithy/types': 4.13.1 6964 + tslib: 2.8.1 6965 + 6966 + '@smithy/fetch-http-handler@5.3.15': 6967 + dependencies: 6968 + '@smithy/protocol-http': 5.3.12 6969 + '@smithy/querystring-builder': 4.2.12 6970 + '@smithy/types': 4.13.1 6971 + '@smithy/util-base64': 4.3.2 6972 + tslib: 2.8.1 6973 + 6974 + '@smithy/hash-blob-browser@4.2.13': 6975 + dependencies: 6976 + '@smithy/chunked-blob-reader': 5.2.2 6977 + '@smithy/chunked-blob-reader-native': 4.2.3 6978 + '@smithy/types': 4.13.1 6979 + tslib: 2.8.1 6980 + 6981 + '@smithy/hash-node@4.2.12': 6982 + dependencies: 6983 + '@smithy/types': 4.13.1 6984 + '@smithy/util-buffer-from': 4.2.2 6985 + '@smithy/util-utf8': 4.2.2 6986 + tslib: 2.8.1 6987 + 6988 + '@smithy/hash-stream-node@4.2.12': 6989 + dependencies: 6990 + '@smithy/types': 4.13.1 6991 + '@smithy/util-utf8': 4.2.2 6992 + tslib: 2.8.1 6993 + 6994 + '@smithy/invalid-dependency@4.2.12': 6995 + dependencies: 6996 + '@smithy/types': 4.13.1 6997 + tslib: 2.8.1 6998 + 6999 + '@smithy/is-array-buffer@2.2.0': 7000 + dependencies: 7001 + tslib: 2.8.1 7002 + 7003 + '@smithy/is-array-buffer@4.2.2': 7004 + dependencies: 7005 + tslib: 2.8.1 7006 + 7007 + '@smithy/md5-js@4.2.12': 7008 + dependencies: 7009 + '@smithy/types': 4.13.1 7010 + '@smithy/util-utf8': 4.2.2 7011 + tslib: 2.8.1 7012 + 7013 + '@smithy/middleware-content-length@4.2.12': 7014 + dependencies: 7015 + '@smithy/protocol-http': 5.3.12 7016 + '@smithy/types': 4.13.1 7017 + tslib: 2.8.1 7018 + 7019 + '@smithy/middleware-endpoint@4.4.28': 7020 + dependencies: 7021 + '@smithy/core': 3.23.13 7022 + '@smithy/middleware-serde': 4.2.16 7023 + '@smithy/node-config-provider': 4.3.12 7024 + '@smithy/shared-ini-file-loader': 4.4.7 7025 + '@smithy/types': 4.13.1 7026 + '@smithy/url-parser': 4.2.12 7027 + '@smithy/util-middleware': 4.2.12 7028 + tslib: 2.8.1 7029 + 7030 + '@smithy/middleware-retry@4.4.46': 7031 + dependencies: 7032 + '@smithy/node-config-provider': 4.3.12 7033 + '@smithy/protocol-http': 5.3.12 7034 + '@smithy/service-error-classification': 4.2.12 7035 + '@smithy/smithy-client': 4.12.8 7036 + '@smithy/types': 4.13.1 7037 + '@smithy/util-middleware': 4.2.12 7038 + '@smithy/util-retry': 4.2.13 7039 + '@smithy/uuid': 1.1.2 7040 + tslib: 2.8.1 7041 + 7042 + '@smithy/middleware-serde@4.2.16': 7043 + dependencies: 7044 + '@smithy/core': 3.23.13 7045 + '@smithy/protocol-http': 5.3.12 7046 + '@smithy/types': 4.13.1 7047 + tslib: 2.8.1 7048 + 7049 + '@smithy/middleware-stack@4.2.12': 7050 + dependencies: 7051 + '@smithy/types': 4.13.1 7052 + tslib: 2.8.1 7053 + 7054 + '@smithy/node-config-provider@4.3.12': 7055 + dependencies: 7056 + '@smithy/property-provider': 4.2.12 7057 + '@smithy/shared-ini-file-loader': 4.4.7 7058 + '@smithy/types': 4.13.1 7059 + tslib: 2.8.1 7060 + 7061 + '@smithy/node-http-handler@4.5.1': 7062 + dependencies: 7063 + '@smithy/protocol-http': 5.3.12 7064 + '@smithy/querystring-builder': 4.2.12 7065 + '@smithy/types': 4.13.1 7066 + tslib: 2.8.1 7067 + 7068 + '@smithy/property-provider@4.2.12': 7069 + dependencies: 7070 + '@smithy/types': 4.13.1 7071 + tslib: 2.8.1 7072 + 7073 + '@smithy/protocol-http@5.3.12': 7074 + dependencies: 7075 + '@smithy/types': 4.13.1 7076 + tslib: 2.8.1 7077 + 7078 + '@smithy/querystring-builder@4.2.12': 7079 + dependencies: 7080 + '@smithy/types': 4.13.1 7081 + '@smithy/util-uri-escape': 4.2.2 7082 + tslib: 2.8.1 7083 + 7084 + '@smithy/querystring-parser@4.2.12': 7085 + dependencies: 7086 + '@smithy/types': 4.13.1 7087 + tslib: 2.8.1 7088 + 7089 + '@smithy/service-error-classification@4.2.12': 7090 + dependencies: 7091 + '@smithy/types': 4.13.1 7092 + 7093 + '@smithy/shared-ini-file-loader@4.4.7': 7094 + dependencies: 7095 + '@smithy/types': 4.13.1 7096 + tslib: 2.8.1 7097 + 7098 + '@smithy/signature-v4@5.3.12': 7099 + dependencies: 7100 + '@smithy/is-array-buffer': 4.2.2 7101 + '@smithy/protocol-http': 5.3.12 7102 + '@smithy/types': 4.13.1 7103 + '@smithy/util-hex-encoding': 4.2.2 7104 + '@smithy/util-middleware': 4.2.12 7105 + '@smithy/util-uri-escape': 4.2.2 7106 + '@smithy/util-utf8': 4.2.2 7107 + tslib: 2.8.1 7108 + 7109 + '@smithy/smithy-client@4.12.8': 7110 + dependencies: 7111 + '@smithy/core': 3.23.13 7112 + '@smithy/middleware-endpoint': 4.4.28 7113 + '@smithy/middleware-stack': 4.2.12 7114 + '@smithy/protocol-http': 5.3.12 7115 + '@smithy/types': 4.13.1 7116 + '@smithy/util-stream': 4.5.21 7117 + tslib: 2.8.1 7118 + 7119 + '@smithy/types@4.13.1': 7120 + dependencies: 7121 + tslib: 2.8.1 7122 + 7123 + '@smithy/url-parser@4.2.12': 7124 + dependencies: 7125 + '@smithy/querystring-parser': 4.2.12 7126 + '@smithy/types': 4.13.1 7127 + tslib: 2.8.1 7128 + 7129 + '@smithy/util-base64@4.3.2': 7130 + dependencies: 7131 + '@smithy/util-buffer-from': 4.2.2 7132 + '@smithy/util-utf8': 4.2.2 7133 + tslib: 2.8.1 7134 + 7135 + '@smithy/util-body-length-browser@4.2.2': 7136 + dependencies: 7137 + tslib: 2.8.1 7138 + 7139 + '@smithy/util-body-length-node@4.2.3': 7140 + dependencies: 7141 + tslib: 2.8.1 7142 + 7143 + '@smithy/util-buffer-from@2.2.0': 7144 + dependencies: 7145 + '@smithy/is-array-buffer': 2.2.0 7146 + tslib: 2.8.1 7147 + 7148 + '@smithy/util-buffer-from@4.2.2': 7149 + dependencies: 7150 + '@smithy/is-array-buffer': 4.2.2 7151 + tslib: 2.8.1 7152 + 7153 + '@smithy/util-config-provider@4.2.2': 7154 + dependencies: 7155 + tslib: 2.8.1 7156 + 7157 + '@smithy/util-defaults-mode-browser@4.3.44': 7158 + dependencies: 7159 + '@smithy/property-provider': 4.2.12 7160 + '@smithy/smithy-client': 4.12.8 7161 + '@smithy/types': 4.13.1 7162 + tslib: 2.8.1 7163 + 7164 + '@smithy/util-defaults-mode-node@4.2.48': 7165 + dependencies: 7166 + '@smithy/config-resolver': 4.4.13 7167 + '@smithy/credential-provider-imds': 4.2.12 7168 + '@smithy/node-config-provider': 4.3.12 7169 + '@smithy/property-provider': 4.2.12 7170 + '@smithy/smithy-client': 4.12.8 7171 + '@smithy/types': 4.13.1 7172 + tslib: 2.8.1 7173 + 7174 + '@smithy/util-endpoints@3.3.3': 7175 + dependencies: 7176 + '@smithy/node-config-provider': 4.3.12 7177 + '@smithy/types': 4.13.1 7178 + tslib: 2.8.1 7179 + 7180 + '@smithy/util-hex-encoding@4.2.2': 7181 + dependencies: 7182 + tslib: 2.8.1 7183 + 7184 + '@smithy/util-middleware@4.2.12': 7185 + dependencies: 7186 + '@smithy/types': 4.13.1 7187 + tslib: 2.8.1 7188 + 7189 + '@smithy/util-retry@4.2.13': 7190 + dependencies: 7191 + '@smithy/service-error-classification': 4.2.12 7192 + '@smithy/types': 4.13.1 7193 + tslib: 2.8.1 7194 + 7195 + '@smithy/util-stream@4.5.21': 7196 + dependencies: 7197 + '@smithy/fetch-http-handler': 5.3.15 7198 + '@smithy/node-http-handler': 4.5.1 7199 + '@smithy/types': 4.13.1 7200 + '@smithy/util-base64': 4.3.2 7201 + '@smithy/util-buffer-from': 4.2.2 7202 + '@smithy/util-hex-encoding': 4.2.2 7203 + '@smithy/util-utf8': 4.2.2 7204 + tslib: 2.8.1 7205 + 7206 + '@smithy/util-uri-escape@4.2.2': 7207 + dependencies: 7208 + tslib: 2.8.1 7209 + 7210 + '@smithy/util-utf8@2.3.0': 7211 + dependencies: 7212 + '@smithy/util-buffer-from': 2.2.0 7213 + tslib: 2.8.1 7214 + 7215 + '@smithy/util-utf8@4.2.2': 7216 + dependencies: 7217 + '@smithy/util-buffer-from': 4.2.2 7218 + tslib: 2.8.1 7219 + 7220 + '@smithy/util-waiter@4.2.14': 7221 + dependencies: 7222 + '@smithy/types': 4.13.1 7223 + tslib: 2.8.1 7224 + 7225 + '@smithy/uuid@1.1.2': 7226 + dependencies: 7227 + tslib: 2.8.1 7228 + 4383 7229 '@solidjs/meta@0.29.4(solid-js@1.9.12)': 4384 7230 dependencies: 4385 7231 solid-js: 1.9.12 ··· 4388 7234 dependencies: 4389 7235 solid-js: 1.9.12 4390 7236 4391 - '@solidjs/start@1.3.2(solid-js@1.9.12)(vinxi@0.5.11(@types/node@25.5.0)(db0@0.3.4(drizzle-orm@0.39.3(postgres@3.4.8)))(drizzle-orm@0.39.3(postgres@3.4.8))(ioredis@5.10.1)(jiti@2.6.1)(terser@5.46.1))(vite@6.4.1(@types/node@25.5.0)(jiti@2.6.1)(terser@5.46.1))': 7237 + '@solidjs/start@1.3.2(solid-js@1.9.12)(vinxi@0.5.11(@types/node@25.5.0)(better-sqlite3@12.8.0)(db0@0.3.4(better-sqlite3@12.8.0)(drizzle-orm@0.39.3(better-sqlite3@12.8.0)(kysely@0.23.5)(pg@8.20.0)(postgres@3.4.8)))(drizzle-orm@0.39.3(better-sqlite3@12.8.0)(kysely@0.23.5)(pg@8.20.0)(postgres@3.4.8))(ioredis@5.10.1)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0))(vite@6.4.1(@types/node@25.5.0)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0))': 4392 7238 dependencies: 4393 - '@tanstack/server-functions-plugin': 1.121.21(vite@6.4.1(@types/node@25.5.0)(jiti@2.6.1)(terser@5.46.1)) 4394 - '@vinxi/plugin-directives': 0.5.1(vinxi@0.5.11(@types/node@25.5.0)(db0@0.3.4(drizzle-orm@0.39.3(postgres@3.4.8)))(drizzle-orm@0.39.3(postgres@3.4.8))(ioredis@5.10.1)(jiti@2.6.1)(terser@5.46.1)) 4395 - '@vinxi/server-components': 0.5.1(vinxi@0.5.11(@types/node@25.5.0)(db0@0.3.4(drizzle-orm@0.39.3(postgres@3.4.8)))(drizzle-orm@0.39.3(postgres@3.4.8))(ioredis@5.10.1)(jiti@2.6.1)(terser@5.46.1)) 7239 + '@tanstack/server-functions-plugin': 1.121.21(vite@6.4.1(@types/node@25.5.0)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)) 7240 + '@vinxi/plugin-directives': 0.5.1(vinxi@0.5.11(@types/node@25.5.0)(better-sqlite3@12.8.0)(db0@0.3.4(better-sqlite3@12.8.0)(drizzle-orm@0.39.3(better-sqlite3@12.8.0)(kysely@0.23.5)(pg@8.20.0)(postgres@3.4.8)))(drizzle-orm@0.39.3(better-sqlite3@12.8.0)(kysely@0.23.5)(pg@8.20.0)(postgres@3.4.8))(ioredis@5.10.1)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)) 7241 + '@vinxi/server-components': 0.5.1(vinxi@0.5.11(@types/node@25.5.0)(better-sqlite3@12.8.0)(db0@0.3.4(better-sqlite3@12.8.0)(drizzle-orm@0.39.3(better-sqlite3@12.8.0)(kysely@0.23.5)(pg@8.20.0)(postgres@3.4.8)))(drizzle-orm@0.39.3(better-sqlite3@12.8.0)(kysely@0.23.5)(pg@8.20.0)(postgres@3.4.8))(ioredis@5.10.1)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)) 4396 7242 cookie-es: 2.0.0 4397 7243 defu: 6.1.4 4398 7244 error-stack-parser: 2.1.4 ··· 4404 7250 source-map-js: 1.2.1 4405 7251 terracotta: 1.1.0(solid-js@1.9.12) 4406 7252 tinyglobby: 0.2.15 4407 - vinxi: 0.5.11(@types/node@25.5.0)(db0@0.3.4(drizzle-orm@0.39.3(postgres@3.4.8)))(drizzle-orm@0.39.3(postgres@3.4.8))(ioredis@5.10.1)(jiti@2.6.1)(terser@5.46.1) 4408 - vite-plugin-solid: 2.11.11(solid-js@1.9.12)(vite@6.4.1(@types/node@25.5.0)(jiti@2.6.1)(terser@5.46.1)) 7253 + vinxi: 0.5.11(@types/node@25.5.0)(better-sqlite3@12.8.0)(db0@0.3.4(better-sqlite3@12.8.0)(drizzle-orm@0.39.3(better-sqlite3@12.8.0)(kysely@0.23.5)(pg@8.20.0)(postgres@3.4.8)))(drizzle-orm@0.39.3(better-sqlite3@12.8.0)(kysely@0.23.5)(pg@8.20.0)(postgres@3.4.8))(ioredis@5.10.1)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0) 7254 + vite-plugin-solid: 2.11.11(solid-js@1.9.12)(vite@6.4.1(@types/node@25.5.0)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)) 4409 7255 transitivePeerDependencies: 4410 7256 - '@testing-library/jest-dom' 4411 7257 - solid-js ··· 4416 7262 4417 7263 '@standard-schema/spec@1.1.0': {} 4418 7264 4419 - '@tanstack/directive-functions-plugin@1.121.21(vite@6.4.1(@types/node@25.5.0)(jiti@2.6.1)(terser@5.46.1))': 7265 + '@tanstack/directive-functions-plugin@1.121.21(vite@6.4.1(@types/node@25.5.0)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0))': 4420 7266 dependencies: 4421 7267 '@babel/code-frame': 7.26.2 4422 7268 '@babel/core': 7.29.0 ··· 4425 7271 '@tanstack/router-utils': 1.161.6 4426 7272 babel-dead-code-elimination: 1.0.12 4427 7273 tiny-invariant: 1.3.3 4428 - vite: 6.4.1(@types/node@25.5.0)(jiti@2.6.1)(terser@5.46.1) 7274 + vite: 6.4.1(@types/node@25.5.0)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0) 4429 7275 transitivePeerDependencies: 4430 7276 - supports-color 4431 7277 ··· 4443 7289 transitivePeerDependencies: 4444 7290 - supports-color 4445 7291 4446 - '@tanstack/server-functions-plugin@1.121.21(vite@6.4.1(@types/node@25.5.0)(jiti@2.6.1)(terser@5.46.1))': 7292 + '@tanstack/server-functions-plugin@1.121.21(vite@6.4.1(@types/node@25.5.0)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0))': 4447 7293 dependencies: 4448 7294 '@babel/code-frame': 7.26.2 4449 7295 '@babel/core': 7.29.0 ··· 4452 7298 '@babel/template': 7.28.6 4453 7299 '@babel/traverse': 7.29.0 4454 7300 '@babel/types': 7.29.0 4455 - '@tanstack/directive-functions-plugin': 1.121.21(vite@6.4.1(@types/node@25.5.0)(jiti@2.6.1)(terser@5.46.1)) 7301 + '@tanstack/directive-functions-plugin': 1.121.21(vite@6.4.1(@types/node@25.5.0)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)) 4456 7302 babel-dead-code-elimination: 1.0.12 4457 7303 tiny-invariant: 1.3.3 4458 7304 transitivePeerDependencies: 4459 7305 - supports-color 4460 7306 - vite 7307 + 7308 + '@tokenizer/token@0.3.0': {} 4461 7309 4462 7310 '@ts-morph/common@0.28.1': 4463 7311 dependencies: ··· 4486 7334 dependencies: 4487 7335 '@babel/types': 7.29.0 4488 7336 7337 + '@types/bn.js@5.2.0': 7338 + dependencies: 7339 + '@types/node': 25.5.0 7340 + 4489 7341 '@types/braces@3.0.5': {} 4490 7342 7343 + '@types/elliptic@6.4.18': 7344 + dependencies: 7345 + '@types/bn.js': 5.2.0 7346 + 4491 7347 '@types/estree@1.0.8': {} 4492 7348 4493 7349 '@types/hast@3.0.4': 4494 7350 dependencies: 4495 7351 '@types/unist': 3.0.3 7352 + 7353 + '@types/http-errors@2.0.5': {} 4496 7354 4497 7355 '@types/mdast@4.0.4': 4498 7356 dependencies: ··· 4551 7409 untun: 0.1.3 4552 7410 uqr: 0.1.2 4553 7411 4554 - '@vinxi/plugin-directives@0.5.1(vinxi@0.5.11(@types/node@25.5.0)(db0@0.3.4(drizzle-orm@0.39.3(postgres@3.4.8)))(drizzle-orm@0.39.3(postgres@3.4.8))(ioredis@5.10.1)(jiti@2.6.1)(terser@5.46.1))': 7412 + '@vinxi/plugin-directives@0.5.1(vinxi@0.5.11(@types/node@25.5.0)(better-sqlite3@12.8.0)(db0@0.3.4(better-sqlite3@12.8.0)(drizzle-orm@0.39.3(better-sqlite3@12.8.0)(kysely@0.23.5)(pg@8.20.0)(postgres@3.4.8)))(drizzle-orm@0.39.3(better-sqlite3@12.8.0)(kysely@0.23.5)(pg@8.20.0)(postgres@3.4.8))(ioredis@5.10.1)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0))': 4555 7413 dependencies: 4556 7414 '@babel/parser': 7.29.2 4557 7415 acorn: 8.16.0 ··· 4562 7420 magicast: 0.2.11 4563 7421 recast: 0.23.11 4564 7422 tslib: 2.8.1 4565 - vinxi: 0.5.11(@types/node@25.5.0)(db0@0.3.4(drizzle-orm@0.39.3(postgres@3.4.8)))(drizzle-orm@0.39.3(postgres@3.4.8))(ioredis@5.10.1)(jiti@2.6.1)(terser@5.46.1) 7423 + vinxi: 0.5.11(@types/node@25.5.0)(better-sqlite3@12.8.0)(db0@0.3.4(better-sqlite3@12.8.0)(drizzle-orm@0.39.3(better-sqlite3@12.8.0)(kysely@0.23.5)(pg@8.20.0)(postgres@3.4.8)))(drizzle-orm@0.39.3(better-sqlite3@12.8.0)(kysely@0.23.5)(pg@8.20.0)(postgres@3.4.8))(ioredis@5.10.1)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0) 4566 7424 4567 - '@vinxi/server-components@0.5.1(vinxi@0.5.11(@types/node@25.5.0)(db0@0.3.4(drizzle-orm@0.39.3(postgres@3.4.8)))(drizzle-orm@0.39.3(postgres@3.4.8))(ioredis@5.10.1)(jiti@2.6.1)(terser@5.46.1))': 7425 + '@vinxi/server-components@0.5.1(vinxi@0.5.11(@types/node@25.5.0)(better-sqlite3@12.8.0)(db0@0.3.4(better-sqlite3@12.8.0)(drizzle-orm@0.39.3(better-sqlite3@12.8.0)(kysely@0.23.5)(pg@8.20.0)(postgres@3.4.8)))(drizzle-orm@0.39.3(better-sqlite3@12.8.0)(kysely@0.23.5)(pg@8.20.0)(postgres@3.4.8))(ioredis@5.10.1)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0))': 4568 7426 dependencies: 4569 - '@vinxi/plugin-directives': 0.5.1(vinxi@0.5.11(@types/node@25.5.0)(db0@0.3.4(drizzle-orm@0.39.3(postgres@3.4.8)))(drizzle-orm@0.39.3(postgres@3.4.8))(ioredis@5.10.1)(jiti@2.6.1)(terser@5.46.1)) 7427 + '@vinxi/plugin-directives': 0.5.1(vinxi@0.5.11(@types/node@25.5.0)(better-sqlite3@12.8.0)(db0@0.3.4(better-sqlite3@12.8.0)(drizzle-orm@0.39.3(better-sqlite3@12.8.0)(kysely@0.23.5)(pg@8.20.0)(postgres@3.4.8)))(drizzle-orm@0.39.3(better-sqlite3@12.8.0)(kysely@0.23.5)(pg@8.20.0)(postgres@3.4.8))(ioredis@5.10.1)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)) 4570 7428 acorn: 8.16.0 4571 7429 acorn-loose: 8.5.2 4572 7430 acorn-typescript: 1.4.13(acorn@8.16.0) 4573 7431 astring: 1.9.0 4574 7432 magicast: 0.2.11 4575 7433 recast: 0.23.11 4576 - vinxi: 0.5.11(@types/node@25.5.0)(db0@0.3.4(drizzle-orm@0.39.3(postgres@3.4.8)))(drizzle-orm@0.39.3(postgres@3.4.8))(ioredis@5.10.1)(jiti@2.6.1)(terser@5.46.1) 7434 + vinxi: 0.5.11(@types/node@25.5.0)(better-sqlite3@12.8.0)(db0@0.3.4(better-sqlite3@12.8.0)(drizzle-orm@0.39.3(better-sqlite3@12.8.0)(kysely@0.23.5)(pg@8.20.0)(postgres@3.4.8)))(drizzle-orm@0.39.3(better-sqlite3@12.8.0)(kysely@0.23.5)(pg@8.20.0)(postgres@3.4.8))(ioredis@5.10.1)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0) 4577 7435 4578 7436 abbrev@3.0.1: {} 4579 7437 4580 7438 abort-controller@3.0.0: 4581 7439 dependencies: 4582 7440 event-target-shim: 5.0.1 7441 + 7442 + accepts@1.3.8: 7443 + dependencies: 7444 + mime-types: 2.1.35 7445 + negotiator: 0.6.3 4583 7446 4584 7447 acorn-import-attributes@1.9.5(acorn@8.16.0): 4585 7448 dependencies: ··· 4646 7509 - bare-buffer 4647 7510 - react-native-b4a 4648 7511 7512 + array-flatten@1.1.1: {} 7513 + 7514 + asn1.js@5.4.1: 7515 + dependencies: 7516 + bn.js: 4.12.3 7517 + inherits: 2.0.4 7518 + minimalistic-assert: 1.0.1 7519 + safer-buffer: 2.1.2 7520 + 4649 7521 ast-types@0.16.1: 4650 7522 dependencies: 4651 7523 tslib: 2.8.1 ··· 4656 7528 4657 7529 async@3.2.6: {} 4658 7530 7531 + asynckit@0.4.0: {} 7532 + 4659 7533 atomic-sleep@1.0.0: {} 4660 7534 4661 7535 await-lock@2.2.2: {} 7536 + 7537 + axios@1.14.0: 7538 + dependencies: 7539 + follow-redirects: 1.15.11 7540 + form-data: 4.0.5 7541 + proxy-from-env: 2.1.0 7542 + transitivePeerDependencies: 7543 + - debug 4662 7544 4663 7545 b4a@1.8.0: {} 4664 7546 ··· 4727 7609 4728 7610 baseline-browser-mapping@2.10.13: {} 4729 7611 7612 + better-sqlite3@12.8.0: 7613 + dependencies: 7614 + bindings: 1.5.0 7615 + prebuild-install: 7.1.3 7616 + 7617 + big-integer@1.6.52: {} 7618 + 7619 + bignumber.js@9.3.1: {} 7620 + 4730 7621 bindings@1.5.0: 4731 7622 dependencies: 4732 7623 file-uri-to-path: 1.0.0 4733 7624 7625 + bl@4.1.0: 7626 + dependencies: 7627 + buffer: 5.7.1 7628 + inherits: 2.0.4 7629 + readable-stream: 3.6.2 7630 + 7631 + bn.js@4.12.3: {} 7632 + 7633 + body-parser@1.20.4: 7634 + dependencies: 7635 + bytes: 3.1.2 7636 + content-type: 1.0.5 7637 + debug: 2.6.9 7638 + depd: 2.0.0 7639 + destroy: 1.2.0 7640 + http-errors: 2.0.1 7641 + iconv-lite: 0.4.24 7642 + on-finished: 2.4.1 7643 + qs: 6.14.2 7644 + raw-body: 2.5.3 7645 + type-is: 1.6.18 7646 + unpipe: 1.0.0 7647 + transitivePeerDependencies: 7648 + - supports-color 7649 + 7650 + bowser@2.14.1: {} 7651 + 4734 7652 boxen@8.0.1: 4735 7653 dependencies: 4736 7654 ansi-align: 3.0.1 ··· 4754 7672 dependencies: 4755 7673 fill-range: 7.1.1 4756 7674 7675 + brorand@1.1.0: {} 7676 + 4757 7677 browserslist@4.28.2: 4758 7678 dependencies: 4759 7679 baseline-browser-mapping: 2.10.13 ··· 4766 7686 4767 7687 buffer-from@1.1.2: {} 4768 7688 7689 + buffer@5.6.0: 7690 + dependencies: 7691 + base64-js: 1.5.1 7692 + ieee754: 1.2.1 7693 + 7694 + buffer@5.7.1: 7695 + dependencies: 7696 + base64-js: 1.5.1 7697 + ieee754: 1.2.1 7698 + 4769 7699 buffer@6.0.3: 4770 7700 dependencies: 4771 7701 base64-js: 1.5.1 ··· 4774 7704 bundle-name@4.1.0: 4775 7705 dependencies: 4776 7706 run-applescript: 7.1.0 7707 + 7708 + bytes@3.1.2: {} 4777 7709 4778 7710 c12@3.3.3(magicast@0.5.2): 4779 7711 dependencies: ··· 4792 7724 optionalDependencies: 4793 7725 magicast: 0.5.2 4794 7726 7727 + call-bind-apply-helpers@1.0.2: 7728 + dependencies: 7729 + es-errors: 1.3.0 7730 + function-bind: 1.1.2 7731 + 7732 + call-bound@1.0.4: 7733 + dependencies: 7734 + call-bind-apply-helpers: 1.0.2 7735 + get-intrinsic: 1.3.0 7736 + 4795 7737 camelcase@8.0.0: {} 4796 7738 4797 7739 caniuse-lite@1.0.30001782: {} 4798 7740 7741 + cborg@1.10.2: {} 7742 + 4799 7743 ccount@2.0.1: {} 4800 7744 4801 7745 chalk@5.6.2: {} ··· 4811 7755 chokidar@5.0.0: 4812 7756 dependencies: 4813 7757 readdirp: 5.0.0 7758 + 7759 + chownr@1.1.4: {} 4814 7760 4815 7761 chownr@3.0.0: {} 4816 7762 ··· 4842 7788 4843 7789 cluster-key-slot@1.1.2: {} 4844 7790 7791 + cockatiel@3.2.1: {} 7792 + 4845 7793 code-block-writer@13.0.3: {} 4846 7794 4847 7795 color-convert@2.0.1: ··· 4850 7798 4851 7799 color-name@1.1.4: {} 4852 7800 7801 + color-string@1.9.1: 7802 + dependencies: 7803 + color-name: 1.1.4 7804 + simple-swizzle: 0.2.4 7805 + 7806 + color@4.2.3: 7807 + dependencies: 7808 + color-convert: 2.0.1 7809 + color-string: 1.9.1 7810 + 7811 + combined-stream@1.0.8: 7812 + dependencies: 7813 + delayed-stream: 1.0.0 7814 + 4853 7815 comma-separated-tokens@2.0.3: {} 4854 7816 4855 7817 commander@2.20.3: {} ··· 4866 7828 normalize-path: 3.0.0 4867 7829 readable-stream: 4.7.0 4868 7830 7831 + compressible@2.0.18: 7832 + dependencies: 7833 + mime-db: 1.54.0 7834 + 7835 + compression@1.8.1: 7836 + dependencies: 7837 + bytes: 3.1.2 7838 + compressible: 2.0.18 7839 + debug: 2.6.9 7840 + negotiator: 0.6.4 7841 + on-headers: 1.1.0 7842 + safe-buffer: 5.2.1 7843 + vary: 1.1.2 7844 + transitivePeerDependencies: 7845 + - supports-color 7846 + 4869 7847 confbox@0.1.8: {} 4870 7848 4871 7849 confbox@0.2.4: {} 4872 7850 4873 7851 consola@3.4.2: {} 4874 7852 7853 + content-disposition@0.5.4: 7854 + dependencies: 7855 + safe-buffer: 5.2.1 7856 + 7857 + content-type@1.0.5: {} 7858 + 4875 7859 convert-source-map@2.0.0: {} 4876 7860 4877 7861 cookie-es@1.2.2: {} ··· 4880 7864 4881 7865 cookie-es@3.1.1: {} 4882 7866 7867 + cookie-signature@1.0.7: {} 7868 + 7869 + cookie@0.7.2: {} 7870 + 4883 7871 core-js@3.49.0: {} 4884 7872 4885 7873 core-util-is@1.0.3: {} 7874 + 7875 + cors@2.8.6: 7876 + dependencies: 7877 + object-assign: 4.1.1 7878 + vary: 1.1.2 4886 7879 4887 7880 crc-32@1.2.2: {} 4888 7881 ··· 4910 7903 '@deno/shim-deno': 0.19.2 4911 7904 undici-types: 5.28.4 4912 7905 4913 - db0@0.3.4(drizzle-orm@0.39.3(postgres@3.4.8)): 7906 + db0@0.3.4(better-sqlite3@12.8.0)(drizzle-orm@0.39.3(better-sqlite3@12.8.0)(kysely@0.23.5)(pg@8.20.0)(postgres@3.4.8)): 4914 7907 optionalDependencies: 4915 - drizzle-orm: 0.39.3(postgres@3.4.8) 7908 + better-sqlite3: 12.8.0 7909 + drizzle-orm: 0.39.3(better-sqlite3@12.8.0)(kysely@0.23.5)(pg@8.20.0)(postgres@3.4.8) 4916 7910 4917 7911 debug@2.6.9: 4918 7912 dependencies: ··· 4922 7916 dependencies: 4923 7917 ms: 2.1.3 4924 7918 7919 + decompress-response@6.0.0: 7920 + dependencies: 7921 + mimic-response: 3.1.0 7922 + 7923 + deep-extend@0.6.0: {} 7924 + 4925 7925 deepmerge@4.3.1: {} 4926 7926 4927 7927 default-browser-id@5.0.1: {} ··· 4934 7934 define-lazy-prop@3.0.0: {} 4935 7935 4936 7936 defu@6.1.4: {} 7937 + 7938 + delay@5.0.0: {} 7939 + 7940 + delayed-stream@1.0.0: {} 4937 7941 4938 7942 denque@2.1.0: {} 4939 7943 ··· 4953 7957 4954 7958 diff@8.0.4: {} 4955 7959 7960 + disposable-email-domains-js@1.24.0: {} 7961 + 7962 + dom-mutator@0.6.0: {} 7963 + 7964 + dom-serializer@1.4.1: 7965 + dependencies: 7966 + domelementtype: 2.3.0 7967 + domhandler: 4.3.1 7968 + entities: 2.2.0 7969 + 7970 + domelementtype@2.3.0: {} 7971 + 7972 + domhandler@4.3.1: 7973 + dependencies: 7974 + domelementtype: 2.3.0 7975 + 7976 + domutils@2.8.0: 7977 + dependencies: 7978 + dom-serializer: 1.4.1 7979 + domelementtype: 2.3.0 7980 + domhandler: 4.3.1 7981 + 4956 7982 dot-prop@10.1.0: 4957 7983 dependencies: 4958 7984 type-fest: 5.5.0 4959 7985 7986 + dotenv-cli@7.4.4: 7987 + dependencies: 7988 + cross-spawn: 7.0.6 7989 + dotenv: 16.6.1 7990 + dotenv-expand: 10.0.0 7991 + minimist: 1.2.8 7992 + 7993 + dotenv-expand@10.0.0: {} 7994 + 7995 + dotenv@16.6.1: {} 7996 + 4960 7997 dotenv@17.3.1: {} 4961 7998 4962 7999 drizzle-kit@0.30.6: ··· 4969 8006 transitivePeerDependencies: 4970 8007 - supports-color 4971 8008 4972 - drizzle-orm@0.39.3(postgres@3.4.8): 8009 + drizzle-orm@0.39.3(better-sqlite3@12.8.0)(kysely@0.23.5)(pg@8.20.0)(postgres@3.4.8): 4973 8010 optionalDependencies: 8011 + better-sqlite3: 12.8.0 8012 + kysely: 0.23.5 8013 + pg: 8.20.0 4974 8014 postgres: 3.4.8 4975 8015 8016 + dunder-proto@1.0.1: 8017 + dependencies: 8018 + call-bind-apply-helpers: 1.0.2 8019 + es-errors: 1.3.0 8020 + gopd: 1.2.0 8021 + 4976 8022 duplexer@0.1.2: {} 4977 8023 4978 8024 eastasianwidth@0.2.0: {} ··· 4981 8027 4982 8028 electron-to-chromium@1.5.329: {} 4983 8029 8030 + elliptic@6.6.1: 8031 + dependencies: 8032 + bn.js: 4.12.3 8033 + brorand: 1.1.0 8034 + hash.js: 1.1.7 8035 + hmac-drbg: 1.0.1 8036 + inherits: 2.0.4 8037 + minimalistic-assert: 1.0.1 8038 + minimalistic-crypto-utils: 1.0.1 8039 + 4984 8040 emoji-regex-xs@1.0.0: {} 4985 8041 4986 8042 emoji-regex@10.6.0: {} ··· 4991 8047 4992 8048 encodeurl@2.0.0: {} 4993 8049 8050 + end-of-stream@1.4.5: 8051 + dependencies: 8052 + once: 1.4.0 8053 + 8054 + entities@2.2.0: {} 8055 + 4994 8056 entities@6.0.1: {} 4995 8057 4996 8058 env-paths@3.0.0: {} ··· 5001 8063 dependencies: 5002 8064 stackframe: 1.3.4 5003 8065 8066 + es-define-property@1.0.1: {} 8067 + 8068 + es-errors@1.3.0: {} 8069 + 5004 8070 es-module-lexer@1.7.0: {} 8071 + 8072 + es-object-atoms@1.1.1: 8073 + dependencies: 8074 + es-errors: 1.3.0 8075 + 8076 + es-set-tostringtag@2.1.0: 8077 + dependencies: 8078 + es-errors: 1.3.0 8079 + get-intrinsic: 1.3.0 8080 + has-tostringtag: 1.0.2 8081 + hasown: 2.0.2 5005 8082 5006 8083 esbuild-register@3.6.0(esbuild@0.19.12): 5007 8084 dependencies: ··· 5135 8212 5136 8213 etag@1.8.1: {} 5137 8214 8215 + etcd3@1.1.2: 8216 + dependencies: 8217 + '@grpc/grpc-js': 1.14.3 8218 + '@grpc/proto-loader': 0.7.15 8219 + bignumber.js: 9.3.1 8220 + cockatiel: 3.2.1 8221 + 5138 8222 event-target-shim@5.0.1: {} 5139 8223 5140 8224 eventemitter3@4.0.7: {} ··· 5159 8243 signal-exit: 4.1.0 5160 8244 strip-final-newline: 3.0.0 5161 8245 8246 + expand-template@2.0.3: {} 8247 + 8248 + express-async-errors@3.1.1(express@4.22.1): 8249 + dependencies: 8250 + express: 4.22.1 8251 + 8252 + express@4.22.1: 8253 + dependencies: 8254 + accepts: 1.3.8 8255 + array-flatten: 1.1.1 8256 + body-parser: 1.20.4 8257 + content-disposition: 0.5.4 8258 + content-type: 1.0.5 8259 + cookie: 0.7.2 8260 + cookie-signature: 1.0.7 8261 + debug: 2.6.9 8262 + depd: 2.0.0 8263 + encodeurl: 2.0.0 8264 + escape-html: 1.0.3 8265 + etag: 1.8.1 8266 + finalhandler: 1.3.2 8267 + fresh: 0.5.2 8268 + http-errors: 2.0.1 8269 + merge-descriptors: 1.0.3 8270 + methods: 1.1.2 8271 + on-finished: 2.4.1 8272 + parseurl: 1.3.3 8273 + path-to-regexp: 0.1.13 8274 + proxy-addr: 2.0.7 8275 + qs: 6.14.2 8276 + range-parser: 1.2.1 8277 + safe-buffer: 5.2.1 8278 + send: 0.19.2 8279 + serve-static: 1.16.3 8280 + setprototypeof: 1.2.0 8281 + statuses: 2.0.2 8282 + type-is: 1.6.18 8283 + utils-merge: 1.0.1 8284 + vary: 1.1.2 8285 + transitivePeerDependencies: 8286 + - supports-color 8287 + 5162 8288 exsolve@1.0.8: {} 5163 8289 5164 8290 fast-fifo@1.3.2: {} ··· 5171 8297 merge2: 1.4.1 5172 8298 micromatch: 4.0.8 5173 8299 8300 + fast-printf@1.6.10: {} 8301 + 5174 8302 fast-redact@3.5.0: {} 5175 8303 8304 + fast-xml-builder@1.1.4: 8305 + dependencies: 8306 + path-expression-matcher: 1.2.0 8307 + 8308 + fast-xml-parser@5.5.8: 8309 + dependencies: 8310 + fast-xml-builder: 1.1.4 8311 + path-expression-matcher: 1.2.0 8312 + strnum: 2.2.2 8313 + 5176 8314 fastq@1.20.1: 5177 8315 dependencies: 5178 8316 reusify: 1.1.0 ··· 5181 8319 optionalDependencies: 5182 8320 picomatch: 4.0.4 5183 8321 8322 + file-type@16.5.4: 8323 + dependencies: 8324 + readable-web-to-node-stream: 3.0.4 8325 + strtok3: 6.3.0 8326 + token-types: 4.2.1 8327 + 5184 8328 file-uri-to-path@1.0.0: {} 5185 8329 5186 8330 fill-range@7.1.1: 5187 8331 dependencies: 5188 8332 to-regex-range: 5.0.1 5189 8333 8334 + finalhandler@1.3.2: 8335 + dependencies: 8336 + debug: 2.6.9 8337 + encodeurl: 2.0.0 8338 + escape-html: 1.0.3 8339 + on-finished: 2.4.1 8340 + parseurl: 1.3.3 8341 + statuses: 2.0.2 8342 + unpipe: 1.0.0 8343 + transitivePeerDependencies: 8344 + - supports-color 8345 + 5190 8346 follow-redirects@1.15.11: {} 5191 8347 5192 8348 foreground-child@3.3.1: 5193 8349 dependencies: 5194 8350 cross-spawn: 7.0.6 5195 8351 signal-exit: 4.1.0 8352 + 8353 + form-data@4.0.5: 8354 + dependencies: 8355 + asynckit: 0.4.0 8356 + combined-stream: 1.0.8 8357 + es-set-tostringtag: 2.1.0 8358 + hasown: 2.0.2 8359 + mime-types: 2.1.35 8360 + 8361 + forwarded@0.2.0: {} 8362 + 8363 + french-badwords-list@1.0.7: 8364 + optional: true 5196 8365 5197 8366 fresh@0.5.2: {} 5198 8367 5199 8368 fresh@2.0.0: {} 5200 8369 8370 + fs-constants@1.0.0: {} 8371 + 5201 8372 fsevents@2.3.3: 5202 8373 optional: true 5203 8374 ··· 5220 8391 5221 8392 get-east-asian-width@1.5.0: {} 5222 8393 8394 + get-intrinsic@1.3.0: 8395 + dependencies: 8396 + call-bind-apply-helpers: 1.0.2 8397 + es-define-property: 1.0.1 8398 + es-errors: 1.3.0 8399 + es-object-atoms: 1.1.1 8400 + function-bind: 1.1.2 8401 + get-proto: 1.0.1 8402 + gopd: 1.2.0 8403 + has-symbols: 1.1.0 8404 + hasown: 2.0.2 8405 + math-intrinsics: 1.1.0 8406 + 5223 8407 get-port-please@3.2.0: {} 8408 + 8409 + get-port@5.1.1: {} 8410 + 8411 + get-proto@1.0.1: 8412 + dependencies: 8413 + dunder-proto: 1.0.1 8414 + es-object-atoms: 1.1.1 5224 8415 5225 8416 get-stream@8.0.1: {} 5226 8417 ··· 5237 8428 nypm: 0.6.5 5238 8429 pathe: 2.0.3 5239 8430 8431 + github-from-package@0.0.0: {} 8432 + 5240 8433 glob-parent@5.1.2: 5241 8434 dependencies: 5242 8435 is-glob: 4.0.3 ··· 5264 8457 is-path-inside: 4.0.0 5265 8458 slash: 5.1.0 5266 8459 unicorn-magic: 0.4.0 8460 + 8461 + gopd@1.2.0: {} 5267 8462 5268 8463 graceful-fs@4.2.11: {} 5269 8464 ··· 5295 8490 ufo: 1.6.3 5296 8491 uncrypto: 0.1.3 5297 8492 8493 + handlebars@4.7.9: 8494 + dependencies: 8495 + minimist: 1.2.8 8496 + neo-async: 2.6.2 8497 + source-map: 0.6.1 8498 + wordwrap: 1.0.0 8499 + optionalDependencies: 8500 + uglify-js: 3.19.3 8501 + 8502 + has-symbols@1.1.0: {} 8503 + 8504 + has-tostringtag@1.0.2: 8505 + dependencies: 8506 + has-symbols: 1.1.0 8507 + 8508 + hash.js@1.1.7: 8509 + dependencies: 8510 + inherits: 2.0.4 8511 + minimalistic-assert: 1.0.1 8512 + 5298 8513 hasown@2.0.2: 5299 8514 dependencies: 5300 8515 function-bind: 1.1.2 ··· 5317 8532 dependencies: 5318 8533 '@types/hast': 3.0.4 5319 8534 8535 + he@1.2.0: {} 8536 + 8537 + hmac-drbg@1.0.1: 8538 + dependencies: 8539 + hash.js: 1.1.7 8540 + minimalistic-assert: 1.0.1 8541 + minimalistic-crypto-utils: 1.0.1 8542 + 5320 8543 hookable@5.5.3: {} 5321 8544 5322 8545 html-entities@2.3.3: {} 5323 8546 5324 8547 html-to-image@1.11.13: {} 5325 8548 8549 + html-to-text@7.1.1: 8550 + dependencies: 8551 + deepmerge: 4.3.1 8552 + he: 1.2.0 8553 + htmlparser2: 6.1.0 8554 + minimist: 1.2.8 8555 + 5326 8556 html-void-elements@3.0.0: {} 8557 + 8558 + htmlparser2@6.1.0: 8559 + dependencies: 8560 + domelementtype: 2.3.0 8561 + domhandler: 4.3.1 8562 + domutils: 2.8.0 8563 + entities: 2.2.0 5327 8564 5328 8565 http-errors@2.0.1: 5329 8566 dependencies: ··· 5343 8580 5344 8581 http-shutdown@1.2.2: {} 5345 8582 8583 + http-terminator@3.2.0: 8584 + dependencies: 8585 + delay: 5.0.0 8586 + p-wait-for: 3.2.0 8587 + roarr: 7.21.4 8588 + type-fest: 2.19.0 8589 + 5346 8590 https-proxy-agent@7.0.6: 5347 8591 dependencies: 5348 8592 agent-base: 7.1.4 ··· 5353 8597 httpxy@0.3.1: {} 5354 8598 5355 8599 human-signals@5.0.0: {} 8600 + 8601 + iconv-lite@0.4.24: 8602 + dependencies: 8603 + safer-buffer: 2.1.2 5356 8604 5357 8605 ieee754@1.2.1: {} 5358 8606 ··· 5360 8608 5361 8609 inherits@2.0.4: {} 5362 8610 8611 + ini@1.3.8: {} 8612 + 5363 8613 ioredis@5.10.1: 5364 8614 dependencies: 5365 8615 '@ioredis/commands': 1.5.1 ··· 5374 8624 transitivePeerDependencies: 5375 8625 - supports-color 5376 8626 8627 + ipaddr.js@1.9.1: {} 8628 + 5377 8629 ipaddr.js@2.3.0: {} 5378 8630 5379 8631 iron-webcrypto@1.2.1: {} 8632 + 8633 + is-arrayish@0.3.4: {} 5380 8634 5381 8635 is-core-module@2.16.1: 5382 8636 dependencies: ··· 5452 8706 5453 8707 json5@2.2.3: {} 5454 8708 8709 + key-encoder@2.0.3: 8710 + dependencies: 8711 + '@types/elliptic': 6.4.18 8712 + asn1.js: 5.4.1 8713 + bn.js: 4.12.3 8714 + elliptic: 6.6.1 8715 + 5455 8716 kleur@4.1.5: {} 5456 8717 5457 8718 klona@2.0.6: {} 5458 8719 5459 8720 knitwork@1.3.0: {} 5460 8721 8722 + kysely@0.22.0: {} 8723 + 8724 + kysely@0.23.5: {} 8725 + 8726 + lande@1.0.10: 8727 + dependencies: 8728 + toygrad: 2.6.0 8729 + 5461 8730 lazystream@1.0.1: 5462 8731 dependencies: 5463 8732 readable-stream: 2.3.8 5464 8733 8734 + leo-profanity@1.9.0: 8735 + optionalDependencies: 8736 + french-badwords-list: 1.0.7 8737 + russian-bad-words: 0.5.0 8738 + 5465 8739 listhen@1.9.0: 5466 8740 dependencies: 5467 8741 '@parcel/watcher': 2.5.6 ··· 5489 8763 pkg-types: 2.3.0 5490 8764 quansync: 0.2.11 5491 8765 8766 + lodash.camelcase@4.3.0: {} 8767 + 5492 8768 lodash.defaults@4.2.0: {} 5493 8769 5494 8770 lodash.isarguments@3.1.0: {} 5495 8771 5496 8772 lodash@4.17.23: {} 8773 + 8774 + long@5.3.2: {} 5497 8775 5498 8776 lru-cache@10.4.3: {} 5499 8777 ··· 5519 8797 '@babel/types': 7.29.0 5520 8798 source-map-js: 1.2.1 5521 8799 8800 + math-intrinsics@1.1.0: {} 8801 + 5522 8802 mdast-util-to-hast@13.2.1: 5523 8803 dependencies: 5524 8804 '@types/hast': 3.0.4 ··· 5531 8811 unist-util-visit: 5.1.0 5532 8812 vfile: 6.0.3 5533 8813 8814 + media-typer@0.3.0: {} 8815 + 5534 8816 merge-anything@5.1.7: 5535 8817 dependencies: 5536 8818 is-what: 4.1.16 5537 8819 8820 + merge-descriptors@1.0.3: {} 8821 + 5538 8822 merge-stream@2.0.0: {} 5539 8823 5540 8824 merge2@1.4.1: {} 8825 + 8826 + methods@1.1.2: {} 5541 8827 5542 8828 micromark-util-character@2.1.1: 5543 8829 dependencies: ··· 5561 8847 braces: 3.0.3 5562 8848 picomatch: 2.3.2 5563 8849 8850 + mime-db@1.52.0: {} 8851 + 5564 8852 mime-db@1.54.0: {} 8853 + 8854 + mime-types@2.1.35: 8855 + dependencies: 8856 + mime-db: 1.52.0 5565 8857 5566 8858 mime-types@3.0.2: 5567 8859 dependencies: ··· 5575 8867 5576 8868 mimic-fn@4.0.0: {} 5577 8869 8870 + mimic-response@3.1.0: {} 8871 + 8872 + minimalistic-assert@1.0.1: {} 8873 + 8874 + minimalistic-crypto-utils@1.0.1: {} 8875 + 5578 8876 minimatch@10.2.5: 5579 8877 dependencies: 5580 8878 brace-expansion: 5.0.5 ··· 5586 8884 minimatch@9.0.9: 5587 8885 dependencies: 5588 8886 brace-expansion: 2.0.3 8887 + 8888 + minimist@1.2.8: {} 5589 8889 5590 8890 minipass@7.1.3: {} 5591 8891 ··· 5593 8893 dependencies: 5594 8894 minipass: 7.1.3 5595 8895 8896 + mkdirp-classic@0.5.3: {} 8897 + 5596 8898 mlly@1.8.2: 5597 8899 dependencies: 5598 8900 acorn: 8.16.0 ··· 5606 8908 5607 8909 multiformats@9.9.0: {} 5608 8910 8911 + murmurhash@2.0.1: {} 8912 + 5609 8913 nanoid@3.3.11: {} 5610 8914 5611 - nitropack@2.13.2(drizzle-orm@0.39.3(postgres@3.4.8)): 8915 + napi-build-utils@2.0.0: {} 8916 + 8917 + negotiator@0.6.3: {} 8918 + 8919 + negotiator@0.6.4: {} 8920 + 8921 + neo-async@2.6.2: {} 8922 + 8923 + nitropack@2.13.2(better-sqlite3@12.8.0)(drizzle-orm@0.39.3(better-sqlite3@12.8.0)(kysely@0.23.5)(pg@8.20.0)(postgres@3.4.8)): 5612 8924 dependencies: 5613 8925 '@cloudflare/kv-asset-handler': 0.4.2 5614 8926 '@rollup/plugin-alias': 6.0.0(rollup@4.60.1) ··· 5629 8941 cookie-es: 2.0.0 5630 8942 croner: 10.0.1 5631 8943 crossws: 0.3.5 5632 - db0: 0.3.4(drizzle-orm@0.39.3(postgres@3.4.8)) 8944 + db0: 0.3.4(better-sqlite3@12.8.0)(drizzle-orm@0.39.3(better-sqlite3@12.8.0)(kysely@0.23.5)(pg@8.20.0)(postgres@3.4.8)) 5633 8945 defu: 6.1.4 5634 8946 destr: 2.0.5 5635 8947 dot-prop: 10.1.0 ··· 5675 8987 unenv: 2.0.0-rc.24 5676 8988 unimport: 6.0.2 5677 8989 unplugin-utils: 0.3.1 5678 - unstorage: 1.17.5(db0@0.3.4(drizzle-orm@0.39.3(postgres@3.4.8)))(ioredis@5.10.1) 8990 + unstorage: 1.17.5(db0@0.3.4(better-sqlite3@12.8.0)(drizzle-orm@0.39.3(better-sqlite3@12.8.0)(kysely@0.23.5)(pg@8.20.0)(postgres@3.4.8)))(ioredis@5.10.1) 5679 8991 untyped: 2.0.0 5680 8992 unwasm: 0.5.3 5681 8993 youch: 4.1.1 ··· 5710 9022 - sqlite3 5711 9023 - supports-color 5712 9024 - uploadthing 9025 + 9026 + node-abi@3.89.0: 9027 + dependencies: 9028 + semver: 7.7.4 5713 9029 5714 9030 node-addon-api@7.1.1: {} 5715 9031 ··· 5727 9043 5728 9044 node-releases@2.0.36: {} 5729 9045 9046 + nodemailer-html-to-text@3.2.0: 9047 + dependencies: 9048 + html-to-text: 7.1.1 9049 + 9050 + nodemailer@6.10.1: {} 9051 + 5730 9052 nopt@8.1.0: 5731 9053 dependencies: 5732 9054 abbrev: 3.0.1 ··· 5743 9065 pathe: 2.0.3 5744 9066 tinyexec: 1.0.4 5745 9067 9068 + object-assign@4.1.1: {} 9069 + 9070 + object-inspect@1.13.4: {} 9071 + 5746 9072 ofetch@1.5.1: 5747 9073 dependencies: 5748 9074 destr: 2.0.5 ··· 5757 9083 dependencies: 5758 9084 ee-first: 1.1.1 5759 9085 9086 + on-headers@1.1.0: {} 9087 + 9088 + once@1.4.0: 9089 + dependencies: 9090 + wrappy: 1.0.2 9091 + 9092 + one-webcrypto@1.0.3: {} 9093 + 5760 9094 onetime@6.0.0: 5761 9095 dependencies: 5762 9096 mimic-fn: 4.0.0 ··· 5776 9110 powershell-utils: 0.1.0 5777 9111 wsl-utils: 0.3.1 5778 9112 9113 + p-finally@1.0.0: {} 9114 + 9115 + p-queue@6.6.2: 9116 + dependencies: 9117 + eventemitter3: 4.0.7 9118 + p-timeout: 3.2.0 9119 + 9120 + p-timeout@3.2.0: 9121 + dependencies: 9122 + p-finally: 1.0.0 9123 + 9124 + p-wait-for@3.2.0: 9125 + dependencies: 9126 + p-timeout: 3.2.0 9127 + 5779 9128 package-json-from-dist@1.0.1: {} 5780 9129 5781 9130 parse5@7.3.0: ··· 5785 9134 parseurl@1.3.3: {} 5786 9135 5787 9136 path-browserify@1.0.1: {} 9137 + 9138 + path-expression-matcher@1.2.0: {} 5788 9139 5789 9140 path-key@3.1.1: {} 5790 9141 ··· 5802 9153 lru-cache: 11.2.7 5803 9154 minipass: 7.1.3 5804 9155 9156 + path-to-regexp@0.1.13: {} 9157 + 5805 9158 path-to-regexp@6.3.0: {} 5806 9159 5807 9160 pathe@1.1.2: {} 5808 9161 5809 9162 pathe@2.0.3: {} 5810 9163 9164 + peek-readable@4.1.0: {} 9165 + 5811 9166 perfect-debounce@2.1.0: {} 5812 9167 9168 + pg-cloudflare@1.3.0: 9169 + optional: true 9170 + 9171 + pg-connection-string@2.12.0: {} 9172 + 9173 + pg-int8@1.0.1: {} 9174 + 9175 + pg-pool@3.13.0(pg@8.20.0): 9176 + dependencies: 9177 + pg: 8.20.0 9178 + 9179 + pg-protocol@1.13.0: {} 9180 + 9181 + pg-types@2.2.0: 9182 + dependencies: 9183 + pg-int8: 1.0.1 9184 + postgres-array: 2.0.0 9185 + postgres-bytea: 1.0.1 9186 + postgres-date: 1.0.7 9187 + postgres-interval: 1.2.0 9188 + 9189 + pg@8.20.0: 9190 + dependencies: 9191 + pg-connection-string: 2.12.0 9192 + pg-pool: 3.13.0(pg@8.20.0) 9193 + pg-protocol: 1.13.0 9194 + pg-types: 2.2.0 9195 + pgpass: 1.0.5 9196 + optionalDependencies: 9197 + pg-cloudflare: 1.3.0 9198 + 9199 + pgpass@1.0.5: 9200 + dependencies: 9201 + split2: 4.2.0 9202 + 5813 9203 picocolors@1.1.1: {} 5814 9204 5815 9205 picomatch@2.3.2: {} ··· 5821 9211 readable-stream: 4.7.0 5822 9212 split2: 4.2.0 5823 9213 9214 + pino-http@8.6.1: 9215 + dependencies: 9216 + get-caller-file: 2.0.5 9217 + pino: 8.21.0 9218 + pino-std-serializers: 6.2.2 9219 + process-warning: 3.0.0 9220 + 5824 9221 pino-std-serializers@6.2.2: {} 5825 9222 5826 9223 pino@8.21.0: ··· 5855 9252 picocolors: 1.1.1 5856 9253 source-map-js: 1.2.1 5857 9254 9255 + postgres-array@2.0.0: {} 9256 + 9257 + postgres-bytea@1.0.1: {} 9258 + 9259 + postgres-date@1.0.7: {} 9260 + 9261 + postgres-interval@1.2.0: 9262 + dependencies: 9263 + xtend: 4.0.2 9264 + 5858 9265 postgres@3.4.8: {} 5859 9266 5860 9267 powershell-utils@0.1.0: {} 5861 9268 9269 + prebuild-install@7.1.3: 9270 + dependencies: 9271 + detect-libc: 2.1.2 9272 + expand-template: 2.0.3 9273 + github-from-package: 0.0.0 9274 + minimist: 1.2.8 9275 + mkdirp-classic: 0.5.3 9276 + napi-build-utils: 2.0.0 9277 + node-abi: 3.89.0 9278 + pump: 3.0.4 9279 + rc: 1.2.8 9280 + simple-get: 4.0.1 9281 + tar-fs: 2.1.4 9282 + tunnel-agent: 0.6.0 9283 + 5862 9284 prettier@3.8.1: {} 5863 9285 5864 9286 pretty-bytes@7.1.0: {} ··· 5871 9293 5872 9294 property-information@7.1.0: {} 5873 9295 9296 + protobufjs@7.5.4: 9297 + dependencies: 9298 + '@protobufjs/aspromise': 1.1.2 9299 + '@protobufjs/base64': 1.1.2 9300 + '@protobufjs/codegen': 2.0.4 9301 + '@protobufjs/eventemitter': 1.1.0 9302 + '@protobufjs/fetch': 1.1.0 9303 + '@protobufjs/float': 1.0.2 9304 + '@protobufjs/inquire': 1.1.0 9305 + '@protobufjs/path': 1.1.2 9306 + '@protobufjs/pool': 1.1.0 9307 + '@protobufjs/utf8': 1.1.0 9308 + '@types/node': 25.5.0 9309 + long: 5.3.2 9310 + 9311 + proxy-addr@2.0.7: 9312 + dependencies: 9313 + forwarded: 0.2.0 9314 + ipaddr.js: 1.9.1 9315 + 9316 + proxy-from-env@2.1.0: {} 9317 + 9318 + pump@3.0.4: 9319 + dependencies: 9320 + end-of-stream: 1.4.5 9321 + once: 1.4.0 9322 + 9323 + qs@6.14.2: 9324 + dependencies: 9325 + side-channel: 1.1.0 9326 + 5874 9327 quansync@0.2.11: {} 5875 9328 5876 9329 queue-microtask@1.2.3: {} ··· 5881 9334 5882 9335 range-parser@1.2.1: {} 5883 9336 9337 + rate-limiter-flexible@2.4.2: {} 9338 + 9339 + raw-body@2.5.3: 9340 + dependencies: 9341 + bytes: 3.1.2 9342 + http-errors: 2.0.1 9343 + iconv-lite: 0.4.24 9344 + unpipe: 1.0.0 9345 + 5884 9346 rc9@2.1.2: 5885 9347 dependencies: 5886 9348 defu: 6.1.4 5887 9349 destr: 2.0.5 5888 9350 9351 + rc@1.2.8: 9352 + dependencies: 9353 + deep-extend: 0.6.0 9354 + ini: 1.3.8 9355 + minimist: 1.2.8 9356 + strip-json-comments: 2.0.1 9357 + 5889 9358 readable-stream@2.3.8: 5890 9359 dependencies: 5891 9360 core-util-is: 1.0.3 ··· 5896 9365 string_decoder: 1.1.1 5897 9366 util-deprecate: 1.0.2 5898 9367 9368 + readable-stream@3.6.2: 9369 + dependencies: 9370 + inherits: 2.0.4 9371 + string_decoder: 1.3.0 9372 + util-deprecate: 1.0.2 9373 + 5899 9374 readable-stream@4.7.0: 5900 9375 dependencies: 5901 9376 abort-controller: 3.0.0 ··· 5903 9378 events: 3.3.0 5904 9379 process: 0.11.10 5905 9380 string_decoder: 1.3.0 9381 + 9382 + readable-web-to-node-stream@3.0.4: 9383 + dependencies: 9384 + readable-stream: 4.7.0 5906 9385 5907 9386 readdir-glob@1.1.3: 5908 9387 dependencies: ··· 5955 9434 5956 9435 reusify@1.1.0: {} 5957 9436 9437 + roarr@7.21.4: 9438 + dependencies: 9439 + fast-printf: 1.6.10 9440 + safe-stable-stringify: 2.5.0 9441 + semver-compare: 1.0.0 9442 + 5958 9443 rollup-plugin-visualizer@7.0.1(rollup@4.60.1): 5959 9444 dependencies: 5960 9445 open: 11.0.0 ··· 6001 9486 dependencies: 6002 9487 queue-microtask: 1.2.3 6003 9488 9489 + russian-bad-words@0.5.0: 9490 + optional: true 9491 + 9492 + rxjs@7.8.2: 9493 + dependencies: 9494 + tslib: 2.8.1 9495 + optional: true 9496 + 6004 9497 safe-buffer@5.1.2: {} 6005 9498 6006 9499 safe-buffer@5.2.1: {} 6007 9500 6008 9501 safe-stable-stringify@2.5.0: {} 6009 9502 9503 + safer-buffer@2.1.2: {} 9504 + 6010 9505 scule@1.3.0: {} 9506 + 9507 + semver-compare@1.0.0: {} 6011 9508 6012 9509 semver@6.3.1: {} 6013 9510 ··· 6079 9576 6080 9577 setprototypeof@1.2.0: {} 6081 9578 9579 + sharp@0.33.5: 9580 + dependencies: 9581 + color: 4.2.3 9582 + detect-libc: 2.1.2 9583 + semver: 7.7.4 9584 + optionalDependencies: 9585 + '@img/sharp-darwin-arm64': 0.33.5 9586 + '@img/sharp-darwin-x64': 0.33.5 9587 + '@img/sharp-libvips-darwin-arm64': 1.0.4 9588 + '@img/sharp-libvips-darwin-x64': 1.0.4 9589 + '@img/sharp-libvips-linux-arm': 1.0.5 9590 + '@img/sharp-libvips-linux-arm64': 1.0.4 9591 + '@img/sharp-libvips-linux-s390x': 1.0.4 9592 + '@img/sharp-libvips-linux-x64': 1.0.4 9593 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 9594 + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 9595 + '@img/sharp-linux-arm': 0.33.5 9596 + '@img/sharp-linux-arm64': 0.33.5 9597 + '@img/sharp-linux-s390x': 0.33.5 9598 + '@img/sharp-linux-x64': 0.33.5 9599 + '@img/sharp-linuxmusl-arm64': 0.33.5 9600 + '@img/sharp-linuxmusl-x64': 0.33.5 9601 + '@img/sharp-wasm32': 0.33.5 9602 + '@img/sharp-win32-ia32': 0.33.5 9603 + '@img/sharp-win32-x64': 0.33.5 9604 + 6082 9605 shebang-command@2.0.0: 6083 9606 dependencies: 6084 9607 shebang-regex: 3.0.0 ··· 6098 9621 '@shikijs/vscode-textmate': 10.0.2 6099 9622 '@types/hast': 3.0.4 6100 9623 9624 + side-channel-list@1.0.0: 9625 + dependencies: 9626 + es-errors: 1.3.0 9627 + object-inspect: 1.13.4 9628 + 9629 + side-channel-map@1.0.1: 9630 + dependencies: 9631 + call-bound: 1.0.4 9632 + es-errors: 1.3.0 9633 + get-intrinsic: 1.3.0 9634 + object-inspect: 1.13.4 9635 + 9636 + side-channel-weakmap@1.0.2: 9637 + dependencies: 9638 + call-bound: 1.0.4 9639 + es-errors: 1.3.0 9640 + get-intrinsic: 1.3.0 9641 + object-inspect: 1.13.4 9642 + side-channel-map: 1.0.1 9643 + 9644 + side-channel@1.1.0: 9645 + dependencies: 9646 + es-errors: 1.3.0 9647 + object-inspect: 1.13.4 9648 + side-channel-list: 1.0.0 9649 + side-channel-map: 1.0.1 9650 + side-channel-weakmap: 1.0.2 9651 + 6101 9652 signal-exit@4.1.0: {} 6102 9653 9654 + simple-concat@1.0.1: {} 9655 + 9656 + simple-get@4.0.1: 9657 + dependencies: 9658 + decompress-response: 6.0.0 9659 + once: 1.4.0 9660 + simple-concat: 1.0.1 9661 + 9662 + simple-swizzle@0.2.4: 9663 + dependencies: 9664 + is-arrayish: 0.3.4 9665 + 6103 9666 slash@5.1.0: {} 6104 9667 6105 9668 smob@1.6.1: {} ··· 6152 9715 6153 9716 std-env@4.0.0: {} 6154 9717 9718 + stream-browserify@3.0.0: 9719 + dependencies: 9720 + inherits: 2.0.4 9721 + readable-stream: 3.6.2 9722 + 6155 9723 streamx@2.25.0: 6156 9724 dependencies: 6157 9725 events-universal: 1.0.1 ··· 6201 9769 ansi-regex: 6.2.2 6202 9770 6203 9771 strip-final-newline@3.0.0: {} 9772 + 9773 + strip-json-comments@2.0.1: {} 6204 9774 6205 9775 strip-literal@3.1.0: 6206 9776 dependencies: 6207 9777 js-tokens: 9.0.1 6208 9778 9779 + strnum@2.2.2: {} 9780 + 9781 + strtok3@6.3.0: 9782 + dependencies: 9783 + '@tokenizer/token': 0.3.0 9784 + peek-readable: 4.1.0 9785 + 9786 + structured-headers@1.0.1: {} 9787 + 6209 9788 supports-color@10.2.2: {} 6210 9789 6211 9790 supports-preserve-symlinks-flag@1.0.0: {} ··· 6214 9793 6215 9794 tagged-tag@1.0.0: {} 6216 9795 9796 + tar-fs@2.1.4: 9797 + dependencies: 9798 + chownr: 1.1.4 9799 + mkdirp-classic: 0.5.3 9800 + pump: 3.0.4 9801 + tar-stream: 2.2.0 9802 + 9803 + tar-stream@2.2.0: 9804 + dependencies: 9805 + bl: 4.1.0 9806 + end-of-stream: 1.4.5 9807 + fs-constants: 1.0.0 9808 + inherits: 2.0.4 9809 + readable-stream: 3.6.2 9810 + 6217 9811 tar-stream@3.1.8: 6218 9812 dependencies: 6219 9813 b4a: 1.8.0 ··· 6279 9873 6280 9874 toidentifier@1.0.1: {} 6281 9875 9876 + token-types@4.2.1: 9877 + dependencies: 9878 + '@tokenizer/token': 0.3.0 9879 + ieee754: 1.2.1 9880 + 9881 + toygrad@2.6.0: {} 9882 + 6282 9883 tr46@0.0.3: {} 6283 9884 6284 9885 trim-lines@3.0.1: {} ··· 6290 9891 6291 9892 tslib@2.8.1: {} 6292 9893 9894 + tsx@4.21.0: 9895 + dependencies: 9896 + esbuild: 0.27.4 9897 + get-tsconfig: 4.13.7 9898 + optionalDependencies: 9899 + fsevents: 2.3.3 9900 + 9901 + tunnel-agent@0.6.0: 9902 + dependencies: 9903 + safe-buffer: 5.2.1 9904 + 9905 + type-fest@2.19.0: {} 9906 + 6293 9907 type-fest@4.41.0: {} 6294 9908 6295 9909 type-fest@5.5.0: 6296 9910 dependencies: 6297 9911 tagged-tag: 1.0.0 6298 9912 9913 + type-is@1.6.18: 9914 + dependencies: 9915 + media-typer: 0.3.0 9916 + mime-types: 2.1.35 9917 + 9918 + typed-emitter@2.1.0: 9919 + optionalDependencies: 9920 + rxjs: 7.8.2 9921 + 6299 9922 typescript@5.9.3: {} 6300 9923 6301 9924 ufo@1.6.3: {} 9925 + 9926 + uglify-js@3.19.3: 9927 + optional: true 6302 9928 6303 9929 uint8arrays@3.0.0: 6304 9930 dependencies: ··· 6319 9945 6320 9946 undici-types@7.18.2: {} 6321 9947 9948 + undici@5.29.0: 9949 + dependencies: 9950 + '@fastify/busboy': 2.1.1 9951 + 6322 9952 undici@6.24.1: {} 6323 9953 6324 9954 unenv@1.10.0: ··· 6377 10007 unist-util-is: 6.0.1 6378 10008 unist-util-visit-parents: 6.0.2 6379 10009 10010 + unpipe@1.0.0: {} 10011 + 6380 10012 unplugin-utils@0.3.1: 6381 10013 dependencies: 6382 10014 pathe: 2.0.3 ··· 6395 10027 picomatch: 4.0.4 6396 10028 webpack-virtual-modules: 0.6.2 6397 10029 6398 - unstorage@1.17.5(db0@0.3.4(drizzle-orm@0.39.3(postgres@3.4.8)))(ioredis@5.10.1): 10030 + unstorage@1.17.5(db0@0.3.4(better-sqlite3@12.8.0)(drizzle-orm@0.39.3(better-sqlite3@12.8.0)(kysely@0.23.5)(pg@8.20.0)(postgres@3.4.8)))(ioredis@5.10.1): 6399 10031 dependencies: 6400 10032 anymatch: 3.1.3 6401 10033 chokidar: 5.0.0 ··· 6406 10038 ofetch: 1.5.1 6407 10039 ufo: 1.6.3 6408 10040 optionalDependencies: 6409 - db0: 0.3.4(drizzle-orm@0.39.3(postgres@3.4.8)) 10041 + db0: 0.3.4(better-sqlite3@12.8.0)(drizzle-orm@0.39.3(better-sqlite3@12.8.0)(kysely@0.23.5)(pg@8.20.0)(postgres@3.4.8)) 6410 10042 ioredis: 5.10.1 6411 10043 6412 10044 untun@0.1.3: ··· 6442 10074 6443 10075 util-deprecate@1.0.2: {} 6444 10076 10077 + utils-merge@1.0.1: {} 10078 + 6445 10079 varint@6.0.0: {} 10080 + 10081 + vary@1.1.2: {} 6446 10082 6447 10083 vfile-message@4.0.3: 6448 10084 dependencies: ··· 6454 10090 '@types/unist': 3.0.3 6455 10091 vfile-message: 4.0.3 6456 10092 6457 - vinxi@0.5.11(@types/node@25.5.0)(db0@0.3.4(drizzle-orm@0.39.3(postgres@3.4.8)))(drizzle-orm@0.39.3(postgres@3.4.8))(ioredis@5.10.1)(jiti@2.6.1)(terser@5.46.1): 10093 + vinxi@0.5.11(@types/node@25.5.0)(better-sqlite3@12.8.0)(db0@0.3.4(better-sqlite3@12.8.0)(drizzle-orm@0.39.3(better-sqlite3@12.8.0)(kysely@0.23.5)(pg@8.20.0)(postgres@3.4.8)))(drizzle-orm@0.39.3(better-sqlite3@12.8.0)(kysely@0.23.5)(pg@8.20.0)(postgres@3.4.8))(ioredis@5.10.1)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0): 6458 10094 dependencies: 6459 10095 '@babel/core': 7.29.0 6460 10096 '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0) ··· 6475 10111 hookable: 5.5.3 6476 10112 http-proxy: 1.18.1 6477 10113 micromatch: 4.0.8 6478 - nitropack: 2.13.2(drizzle-orm@0.39.3(postgres@3.4.8)) 10114 + nitropack: 2.13.2(better-sqlite3@12.8.0)(drizzle-orm@0.39.3(better-sqlite3@12.8.0)(kysely@0.23.5)(pg@8.20.0)(postgres@3.4.8)) 6479 10115 node-fetch-native: 1.6.7 6480 10116 path-to-regexp: 6.3.0 6481 10117 pathe: 1.1.2 ··· 6487 10123 ufo: 1.6.3 6488 10124 unctx: 2.5.0 6489 10125 unenv: 1.10.0 6490 - unstorage: 1.17.5(db0@0.3.4(drizzle-orm@0.39.3(postgres@3.4.8)))(ioredis@5.10.1) 6491 - vite: 6.4.1(@types/node@25.5.0)(jiti@2.6.1)(terser@5.46.1) 10126 + unstorage: 1.17.5(db0@0.3.4(better-sqlite3@12.8.0)(drizzle-orm@0.39.3(better-sqlite3@12.8.0)(kysely@0.23.5)(pg@8.20.0)(postgres@3.4.8)))(ioredis@5.10.1) 10127 + vite: 6.4.1(@types/node@25.5.0)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0) 6492 10128 zod: 4.3.6 6493 10129 transitivePeerDependencies: 6494 10130 - '@azure/app-configuration' ··· 6536 10172 - xml2js 6537 10173 - yaml 6538 10174 6539 - vite-plugin-solid@2.11.11(solid-js@1.9.12)(vite@6.4.1(@types/node@25.5.0)(jiti@2.6.1)(terser@5.46.1)): 10175 + vite-plugin-solid@2.11.11(solid-js@1.9.12)(vite@6.4.1(@types/node@25.5.0)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)): 6540 10176 dependencies: 6541 10177 '@babel/core': 7.29.0 6542 10178 '@types/babel__core': 7.20.5 ··· 6544 10180 merge-anything: 5.1.7 6545 10181 solid-js: 1.9.12 6546 10182 solid-refresh: 0.6.3(solid-js@1.9.12) 6547 - vite: 6.4.1(@types/node@25.5.0)(jiti@2.6.1)(terser@5.46.1) 6548 - vitefu: 1.1.2(vite@6.4.1(@types/node@25.5.0)(jiti@2.6.1)(terser@5.46.1)) 10183 + vite: 6.4.1(@types/node@25.5.0)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0) 10184 + vitefu: 1.1.2(vite@6.4.1(@types/node@25.5.0)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)) 6549 10185 transitivePeerDependencies: 6550 10186 - supports-color 6551 10187 6552 - vite@6.4.1(@types/node@25.5.0)(jiti@2.6.1)(terser@5.46.1): 10188 + vite@6.4.1(@types/node@25.5.0)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0): 6553 10189 dependencies: 6554 10190 esbuild: 0.25.12 6555 10191 fdir: 6.5.0(picomatch@4.0.4) ··· 6562 10198 fsevents: 2.3.3 6563 10199 jiti: 2.6.1 6564 10200 terser: 5.46.1 10201 + tsx: 4.21.0 6565 10202 6566 - vitefu@1.1.2(vite@6.4.1(@types/node@25.5.0)(jiti@2.6.1)(terser@5.46.1)): 10203 + vitefu@1.1.2(vite@6.4.1(@types/node@25.5.0)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)): 6567 10204 optionalDependencies: 6568 - vite: 6.4.1(@types/node@25.5.0)(jiti@2.6.1)(terser@5.46.1) 10205 + vite: 6.4.1(@types/node@25.5.0)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0) 6569 10206 6570 10207 webidl-conversions@3.0.1: {} 6571 10208 ··· 6588 10225 dependencies: 6589 10226 string-width: 7.2.0 6590 10227 10228 + wordwrap@1.0.0: {} 10229 + 6591 10230 wrap-ansi@7.0.0: 6592 10231 dependencies: 6593 10232 ansi-styles: 4.3.0 ··· 6606 10245 string-width: 7.2.0 6607 10246 strip-ansi: 7.2.0 6608 10247 10248 + wrappy@1.0.2: {} 10249 + 10250 + ws@8.20.0: {} 10251 + 6609 10252 wsl-utils@0.3.1: 6610 10253 dependencies: 6611 10254 is-wsl: 3.1.1 6612 10255 powershell-utils: 0.1.0 10256 + 10257 + xtend@4.0.2: {} 6613 10258 6614 10259 y18n@5.0.8: {} 6615 10260 ··· 6658 10303 archiver-utils: 5.0.2 6659 10304 compress-commons: 6.0.2 6660 10305 readable-stream: 4.7.0 10306 + 10307 + zod@3.23.8: {} 6661 10308 6662 10309 zod@3.25.76: {} 6663 10310
+51
scripts/README.md
··· 1 + # Database Scripts 2 + 3 + ## Seed Test Questions 4 + 5 + The `seed-test-questions.ts` script creates test data for local development: 6 + 7 + ### Usage: 8 + 9 + #### Option 1: Use with real user handles (recommended) 10 + ```bash 11 + # First, login as real users through the web app, then: 12 + pnpm run db:seed your-handle.bsky.social another-user.bsky.social 13 + 14 + # Example: 15 + pnpm run db:seed alice.bsky.social bob.bsky.social charlie.bsky.social 16 + ``` 17 + 18 + #### Option 2: Use default test users (for testing only) 19 + ```bash 20 + # Creates fake test users that you can't actually login as 21 + pnpm run db:seed 22 + ``` 23 + 24 + ### What it creates: 25 + - **Questions between real users** (if handles provided) or **3 fake test users** (fallback) 26 + - **10 diverse programming-related questions** distributed between users 27 + - **Mix of regular and anonymous questions** 28 + 29 + ### Features: 30 + - ✅ **Works with real user accounts** - provide handles of users who have logged in 31 + - ✅ **Safe fallback** - creates fake test users if no handles provided 32 + - ✅ **Smart user detection** - checks if provided handles exist in database 33 + - ✅ **Round-robin question distribution** - spreads questions evenly between users 34 + - ✅ **Safe to run multiple times** (uses `onConflictDoNothing()` for users) 35 + - ✅ **Clear progress logging** with emojis and status updates 36 + - ✅ **Provides summary statistics** at the end 37 + 38 + ### Example Questions Include: 39 + - "What's your favorite programming language and why?" 40 + - "How do you stay motivated when working on long-term projects?" 41 + - "What's the most interesting bug you've ever encountered?" 42 + - "If you could give advice to your past self when you started coding, what would it be?" 43 + - "What's your go-to method for debugging complex issues?" 44 + - And more... 45 + 46 + ### Requirements: 47 + - **For real users**: Users must have logged in through the web app at least once 48 + - **Minimum 2 users** needed to create questions between them 49 + 50 + ### Note: 51 + These are local test questions only - they are **not synced to the AT Protocol network**.
+73
scripts/cleanup-stale-users.ts
··· 1 + #!/usr/bin/env tsx 2 + 3 + /** 4 + * Removes stale user rows left behind after a PDS re-seed. 5 + * 6 + * --dry-run (default): shows what would be deleted 7 + * --run: actually deletes 8 + * 9 + * Usage: 10 + * pnpm tsx scripts/cleanup-stale-users.ts # dry-run 11 + * pnpm tsx scripts/cleanup-stale-users.ts --run # execute 12 + */ 13 + 14 + import { sql, eq } from "drizzle-orm"; 15 + import { db } from "../src/lib/db"; 16 + import { users, questions, answers, sessions } from "../src/lib/schema"; 17 + 18 + const dryRun = !process.argv.includes("--run"); 19 + 20 + async function main() { 21 + // Stale users = handle equals their DID (set by the callback conflict handler) 22 + const stale = await db 23 + .select({ did: users.did, handle: users.handle }) 24 + .from(users) 25 + .where(sql`${users.handle} = ${users.did}`); 26 + 27 + if (stale.length === 0) { 28 + console.log("No stale users (handle == DID) found. DB looks clean."); 29 + process.exit(0); 30 + } 31 + 32 + console.log(`Found ${stale.length} stale user(s):`); 33 + for (const u of stale) console.log(` ${u.did}`); 34 + 35 + if (dryRun) { 36 + console.log("\nDry-run — pass --run to actually delete."); 37 + process.exit(0); 38 + } 39 + 40 + for (const u of stale) { 41 + await db.transaction(async (tx) => { 42 + const questionRows = await tx 43 + .select({ id: questions.id }) 44 + .from(questions) 45 + .where( 46 + sql`${questions.authorDid} = ${u.did} OR ${questions.targetDid} = ${u.did}` 47 + ); 48 + const qIds = questionRows.map((r) => r.id); 49 + 50 + if (qIds.length > 0) { 51 + await tx.delete(answers).where(sql`${answers.questionId} IN ${qIds}`); 52 + } 53 + await tx.delete(answers).where(eq(answers.authorDid, u.did)); 54 + await tx 55 + .delete(questions) 56 + .where( 57 + sql`${questions.authorDid} = ${u.did} OR ${questions.targetDid} = ${u.did}` 58 + ); 59 + await tx.delete(sessions).where(eq(sessions.did, u.did)); 60 + await tx.delete(users).where(eq(users.did, u.did)); 61 + 62 + console.log(` Deleted user ${u.did} and related data.`); 63 + }); 64 + } 65 + 66 + console.log("Done."); 67 + process.exit(0); 68 + } 69 + 70 + main().catch((err) => { 71 + console.error("Cleanup failed:", err); 72 + process.exit(1); 73 + });
+30
scripts/db-check.ts
··· 1 + #!/usr/bin/env tsx 2 + 3 + import { db } from "../src/lib/db"; 4 + import { users, questions, answers } from "../src/lib/schema"; 5 + 6 + async function main() { 7 + const u = await db.select().from(users); 8 + console.log("=== USERS ===", u.length, "total"); 9 + for (const r of u) 10 + console.log( 11 + ` did=${r.did} handle=${r.handle} name=${r.displayName}` 12 + ); 13 + 14 + const q = await db.select().from(questions); 15 + console.log("\n=== QUESTIONS ===", q.length, "total"); 16 + for (const r of q) 17 + console.log( 18 + ` id=${r.id.slice(0, 8)} from=${r.authorDid} to=${r.targetDid} "${r.content.slice(0, 50)}"` 19 + ); 20 + 21 + const a = await db.select().from(answers); 22 + console.log("\n=== ANSWERS ===", a.length, "total"); 23 + 24 + process.exit(0); 25 + } 26 + 27 + main().catch((err) => { 28 + console.error("DB check failed:", err); 29 + process.exit(1); 30 + });
+81
scripts/dev-network.ts
··· 1 + #!/usr/bin/env tsx 2 + 3 + /** 4 + * Boots a local AT Protocol network (PDS + PLC) using @atproto/dev-env 5 + * and creates test accounts for alice and bob. 6 + * 7 + * The PDS includes a built-in OAuth Authorization Server, so the full 8 + * browser-based OAuth flow works against it. 9 + * 10 + * Usage: 11 + * pnpm run dev:network 12 + * 13 + * Then start the app with the printed env vars, or copy them into .env 14 + */ 15 + 16 + import { TestNetworkNoAppView } from "@atproto/dev-env"; 17 + 18 + const ACCOUNTS = [ 19 + { 20 + shortName: "alice", 21 + handle: "alice.test", 22 + email: "alice@test.com", 23 + password: "alice-pass-123", 24 + displayName: "Alice Test", 25 + }, 26 + { 27 + shortName: "bob", 28 + handle: "bob.test", 29 + email: "bob@test.com", 30 + password: "bob-pass-123", 31 + displayName: "Bob Test", 32 + }, 33 + ]; 34 + 35 + async function main() { 36 + console.log("Starting local AT Protocol network...\n"); 37 + 38 + const network = await TestNetworkNoAppView.create({}); 39 + 40 + const pdsUrl = network.pds.url; 41 + const plcUrl = network.plc.url; 42 + 43 + console.log(`PDS running at: ${pdsUrl}`); 44 + console.log(`PLC running at: ${plcUrl}\n`); 45 + 46 + const sc = network.getSeedClient(); 47 + 48 + for (const account of ACCOUNTS) { 49 + const { shortName, handle, email, password, displayName } = account; 50 + await sc.createAccount(shortName, { handle, email, password }); 51 + const did = sc.dids[shortName]; 52 + await sc.createProfile(did, displayName, `Hi, I'm ${displayName}`); 53 + console.log(`Account created: ${handle} (DID: ${did})`); 54 + } 55 + 56 + await network.processAll(); 57 + 58 + console.log("\n--- Environment variables for .env ---\n"); 59 + console.log(`DEV_PDS_URL=${pdsUrl}`); 60 + console.log(`DEV_PLC_URL=${plcUrl}`); 61 + console.log(""); 62 + 63 + console.log("--- Test accounts ---\n"); 64 + for (const account of ACCOUNTS) { 65 + const did = sc.dids[account.shortName]; 66 + console.log(` ${account.handle}`); 67 + console.log(` DID: ${did}`); 68 + console.log(` Email: ${account.email}`); 69 + console.log(` Password: ${account.password}`); 70 + console.log(""); 71 + } 72 + 73 + console.log("Network is running. Press Ctrl+C to stop.\n"); 74 + 75 + await new Promise(() => {}); 76 + } 77 + 78 + main().catch((err) => { 79 + console.error("Fatal error:", err); 80 + process.exit(1); 81 + });
+237
scripts/seed-test-questions.ts
··· 1 + #!/usr/bin/env tsx 2 + 3 + import { db } from "../src/lib/db"; 4 + import { users, questions } from "../src/lib/schema"; 5 + 6 + // Parse command line arguments 7 + const args = process.argv.slice(2); 8 + 9 + // Show help if requested 10 + if (args.includes('--help') || args.includes('-h')) { 11 + console.log(` 12 + 🌱 Seed Test Questions Script 13 + 14 + Usage: 15 + pnpm run db:seed [handle1] [handle2] [handle3] ... 16 + pnpm run db:seed --help 17 + 18 + Examples: 19 + # Use real user handles (recommended - users must have logged in first) 20 + pnpm run db:seed alice.bsky.social bob.bsky.social 21 + 22 + # Use default fake test users (for testing only) 23 + pnpm run db:seed 24 + 25 + Options: 26 + --help, -h Show this help message 27 + 28 + Note: 29 + - Real user handles must exist in the database (users must have logged in) 30 + - Minimum 2 users required to create questions between them 31 + - Questions are local only and not synced to AT Protocol network 32 + `); 33 + process.exit(0); 34 + } 35 + 36 + const providedHandles = args.filter(arg => !arg.startsWith('--')); 37 + 38 + // Default test users (fallback if no handles provided) 39 + const DEFAULT_TEST_USERS = [ 40 + { 41 + did: "did:plc:test1234567890abcdef", 42 + handle: "alice.test", 43 + displayName: "Alice Test", 44 + questionsOpen: true, 45 + }, 46 + { 47 + did: "did:plc:test0987654321fedcba", 48 + handle: "bob.test", 49 + displayName: "Bob Test", 50 + questionsOpen: true, 51 + }, 52 + { 53 + did: "did:plc:testabcdef1234567890", 54 + handle: "charlie.test", 55 + displayName: "Charlie Test", 56 + questionsOpen: true, 57 + } 58 + ]; 59 + 60 + async function getOrCreateTestUsers() { 61 + if (providedHandles.length === 0) { 62 + console.log("ℹ️ No handles provided, using default test users"); 63 + return DEFAULT_TEST_USERS; 64 + } 65 + 66 + console.log(`ℹ️ Using provided handles: ${providedHandles.join(", ")}`); 67 + 68 + // Check if these users already exist in the database 69 + const existingUsers = await db.select().from(users); 70 + const existingHandles = new Set(existingUsers.map(u => u.handle)); 71 + 72 + const testUsers = []; 73 + 74 + for (const handle of providedHandles) { 75 + if (existingHandles.has(handle)) { 76 + const existingUser = existingUsers.find(u => u.handle === handle); 77 + testUsers.push({ 78 + did: existingUser!.did, 79 + handle: existingUser!.handle, 80 + displayName: existingUser!.displayName || handle, 81 + questionsOpen: existingUser!.questionsOpen, 82 + }); 83 + console.log(`✅ Found existing user: ${handle}`); 84 + } else { 85 + console.log(`⚠️ User ${handle} not found in database. You'll need to login as this user first, or use default test users.`); 86 + } 87 + } 88 + 89 + if (testUsers.length < 2) { 90 + console.log("❌ Need at least 2 users to create questions between them."); 91 + console.log("💡 Either:"); 92 + console.log(" 1. Login as real users first, then run: pnpm run db:seed handle1 handle2"); 93 + console.log(" 2. Use default test users: pnpm run db:seed"); 94 + process.exit(1); 95 + } 96 + 97 + return testUsers; 98 + } 99 + 100 + const QUESTION_TEMPLATES = [ 101 + { 102 + content: "What's your favorite programming language and why?", 103 + anonymous: false, 104 + }, 105 + { 106 + content: "How do you stay motivated when working on long-term projects?", 107 + anonymous: false, 108 + }, 109 + { 110 + content: "What's the most interesting bug you've ever encountered?", 111 + anonymous: false, 112 + }, 113 + { 114 + content: "If you could give advice to your past self when you started coding, what would it be?", 115 + anonymous: false, 116 + }, 117 + { 118 + content: "What's your go-to method for debugging complex issues?", 119 + anonymous: false, 120 + }, 121 + { 122 + content: "How do you balance learning new technologies with mastering existing ones?", 123 + anonymous: false, 124 + }, 125 + { 126 + content: "What's the best piece of code you've ever written?", 127 + anonymous: true, 128 + }, 129 + { 130 + content: "How do you handle imposter syndrome in tech?", 131 + anonymous: true, 132 + }, 133 + { 134 + content: "What's your favorite development tool or IDE feature?", 135 + anonymous: false, 136 + }, 137 + { 138 + content: "How do you approach code reviews?", 139 + anonymous: false, 140 + }, 141 + ]; 142 + 143 + function generateQuestions(testUsers: any[]) { 144 + const questions = []; 145 + 146 + // Create questions between users in a round-robin fashion 147 + for (let i = 0; i < QUESTION_TEMPLATES.length; i++) { 148 + const template = QUESTION_TEMPLATES[i]; 149 + const authorIndex = i % testUsers.length; 150 + const targetIndex = (i + 1) % testUsers.length; 151 + 152 + // Skip if author and target are the same (shouldn't happen with 2+ users) 153 + if (authorIndex === targetIndex) continue; 154 + 155 + questions.push({ 156 + content: template.content, 157 + authorHandle: testUsers[authorIndex].handle, 158 + targetHandle: testUsers[targetIndex].handle, 159 + anonymous: template.anonymous, 160 + }); 161 + } 162 + 163 + return questions; 164 + } 165 + 166 + async function seedTestData() { 167 + console.log("🌱 Starting to seed test data..."); 168 + 169 + try { 170 + // Get or create test users based on provided handles 171 + const testUsers = await getOrCreateTestUsers(); 172 + 173 + // If using default test users, create them in the database 174 + if (providedHandles.length === 0) { 175 + console.log("📝 Creating default test users..."); 176 + for (const user of testUsers) { 177 + try { 178 + await db.insert(users).values(user).onConflictDoNothing(); 179 + console.log(`✅ User ${user.handle} created/exists`); 180 + } catch (error) { 181 + console.log(`⚠️ User ${user.handle} might already exist:`, error); 182 + } 183 + } 184 + } 185 + 186 + // Create a map of handles to DIDs for easy lookup 187 + const handleToDid = Object.fromEntries( 188 + testUsers.map(user => [user.handle, user.did]) 189 + ); 190 + 191 + // Generate questions based on available users 192 + const questionsToCreate = generateQuestions(testUsers); 193 + 194 + // Insert test questions 195 + console.log("❓ Creating test questions..."); 196 + for (const question of questionsToCreate) { 197 + const authorDid = handleToDid[question.authorHandle]; 198 + const targetDid = handleToDid[question.targetHandle]; 199 + 200 + if (!authorDid || !targetDid) { 201 + console.log(`⚠️ Skipping question: missing DID for ${question.authorHandle} or ${question.targetHandle}`); 202 + continue; 203 + } 204 + 205 + await db.insert(questions).values({ 206 + content: question.content, 207 + authorDid, 208 + targetDid, 209 + anonymous: question.anonymous || false, 210 + sourceType: "askimut", 211 + }); 212 + 213 + const anonymousFlag = question.anonymous ? " (anonymous)" : ""; 214 + console.log(`✅ Question created: ${question.authorHandle} → ${question.targetHandle}${anonymousFlag}`); 215 + } 216 + 217 + console.log("🎉 Test data seeding completed successfully!"); 218 + 219 + // Show summary 220 + const questionCount = await db.select().from(questions); 221 + const userCount = await db.select().from(users); 222 + console.log(`📊 Database now contains ${userCount.length} users and ${questionCount.length} questions`); 223 + 224 + } catch (error) { 225 + console.error("❌ Error seeding test data:", error); 226 + process.exit(1); 227 + } 228 + } 229 + 230 + // Run the seeding function 231 + seedTestData().then(() => { 232 + console.log("✨ Seeding script finished"); 233 + process.exit(0); 234 + }).catch((error) => { 235 + console.error("💥 Fatal error:", error); 236 + process.exit(1); 237 + });
+69
src/components/ErrorBoundary.tsx
··· 1 + import { JSX } from "solid-js"; 2 + import { RouteError, NotFoundError, ForbiddenError, UnauthorizedError } from "~/lib/route-guards"; 3 + 4 + import styles from "../routes/[handle].module.css"; 5 + 6 + interface ErrorBoundaryProps { 7 + error: Error; 8 + reset: () => void; 9 + } 10 + 11 + export default function ErrorBoundary(props: ErrorBoundaryProps): JSX.Element { 12 + const error = props.error; 13 + 14 + // Handle specific route errors 15 + if (error instanceof RouteError) { 16 + return ( 17 + <div class={styles.page}> 18 + <div class={styles.errorContainer}> 19 + <h1 class={styles.errorTitle}>{error.title}</h1> 20 + <p class={styles.errorMessage}>{error.message}</p> 21 + <div class={styles.errorActions}> 22 + <button 23 + class={`${styles.button} ${styles.buttonSecondary}`} 24 + onClick={() => window.history.back()} 25 + > 26 + Go Back 27 + </button> 28 + <button 29 + class={styles.button} 30 + onClick={props.reset} 31 + > 32 + Try Again 33 + </button> 34 + </div> 35 + </div> 36 + </div> 37 + ); 38 + } 39 + 40 + // Handle generic errors 41 + return ( 42 + <div class={styles.page}> 43 + <div class={styles.errorContainer}> 44 + <h1 class={styles.errorTitle}>Something went wrong</h1> 45 + <p class={styles.errorMessage}> 46 + An unexpected error occurred. Please try again. 47 + </p> 48 + <details class={styles.errorDetails}> 49 + <summary>Error details</summary> 50 + <pre class={styles.errorStack}>{error.stack}</pre> 51 + </details> 52 + <div class={styles.errorActions}> 53 + <button 54 + class={`${styles.button} ${styles.buttonSecondary}`} 55 + onClick={() => window.history.back()} 56 + > 57 + Go Back 58 + </button> 59 + <button 60 + class={styles.button} 61 + onClick={props.reset} 62 + > 63 + Try Again 64 + </button> 65 + </div> 66 + </div> 67 + </div> 68 + ); 69 + }
+5
src/lib/oauth.ts
··· 88 88 } 89 89 90 90 export async function createOAuthClient(): Promise<NodeOAuthClient> { 91 + const devPdsUrl = process.env.DEV_PDS_URL; 92 + const devPlcUrl = process.env.DEV_PLC_URL; 93 + 91 94 return new NodeOAuthClient({ 92 95 clientMetadata: getOAuthClientMetadata(), 93 96 stateStore: drizzleStateStore(), 94 97 sessionStore: drizzleSessionStore(), 95 98 allowHttp: !process.env.PUBLIC_URL, 99 + ...(devPdsUrl && { handleResolver: devPdsUrl }), 100 + ...(devPlcUrl && { plcDirectoryUrl: devPlcUrl }), 96 101 }); 97 102 } 98 103
+94 -5
src/lib/queries.ts
··· 70 70 return rows; 71 71 }, "questions"); 72 72 73 + export const getPendingQuestions = query(async (targetDid: string) => { 74 + "use server"; 75 + const sessionId = getCookie(SESSION_COOKIE); 76 + if (!sessionId) throw new Error("Unauthorized"); 77 + const session = await getSession(sessionId); 78 + if (!session) throw new Error("Unauthorized"); 79 + 80 + // Verify user owns the target profile 81 + if (session.user.did !== targetDid) { 82 + throw new Error("Forbidden: Can only view own pending questions"); 83 + } 84 + 85 + const rows = await db.query.questions.findMany({ 86 + where: eq(questions.targetDid, targetDid), 87 + orderBy: (q, { desc }) => [desc(q.createdAt)], 88 + with: { 89 + author: true, 90 + answers: { 91 + orderBy: (a, { asc }) => [asc(a.createdAt)], 92 + with: { author: true }, 93 + }, 94 + }, 95 + }); 96 + 97 + // Filter to only questions without answers 98 + return rows.filter(q => q.answers.length === 0); 99 + }, "pendingQuestions"); 100 + 101 + export const getQuestionById = query(async (questionId: string) => { 102 + "use server"; 103 + const sessionId = getCookie(SESSION_COOKIE); 104 + if (!sessionId) throw new Error("Unauthorized"); 105 + const session = await getSession(sessionId); 106 + if (!session) throw new Error("Unauthorized"); 107 + 108 + const question = await db.query.questions.findFirst({ 109 + where: eq(questions.id, questionId), 110 + with: { 111 + author: true, 112 + answers: { 113 + orderBy: (a, { asc }) => [asc(a.createdAt)], 114 + with: { author: true }, 115 + }, 116 + }, 117 + }); 118 + 119 + if (!question) { 120 + throw new Error("Question not found"); 121 + } 122 + 123 + // Verify user owns the target profile (can only answer questions directed to them) 124 + if (session.user.did !== question.targetDid) { 125 + throw new Error("Forbidden: Can only answer questions directed to you"); 126 + } 127 + 128 + return question; 129 + }, "questionById"); 130 + 73 131 export const toggleQuestionsOpen = action(async () => { 74 132 "use server"; 75 133 const sessionId = getCookie(SESSION_COOKIE); ··· 213 271 const target = await db.query.users.findFirst({ 214 272 where: eq(users.did, targetDid), 215 273 }); 216 - await revalidate([ 217 - getQuestions.keyFor(targetDid), 218 - ...(target ? [getUserByHandle.keyFor(target.handle)] : []), 219 - ]); 274 + await revalidate([ 275 + getQuestions.keyFor(targetDid), 276 + getPendingQuestions.keyFor(targetDid), 277 + ...(target ? [getUserByHandle.keyFor(target.handle)] : []), 278 + ]); 220 279 }, 221 280 "submitQuestion", 222 281 ); ··· 304 363 insertedAnswer = inserted; 305 364 } 306 365 307 - await revalidate([getQuestions.keyFor(q.targetDid)]); 366 + await revalidate([ 367 + getQuestions.keyFor(q.targetDid), 368 + getPendingQuestions.keyFor(q.targetDid), 369 + getQuestionById.keyFor(q.id), 370 + ]); 308 371 }, 309 372 "submitAnswer", 310 373 ); ··· 495 558 496 559 await revalidate([ 497 560 getQuestions.keyFor(targetDid), 561 + getPendingQuestions.keyFor(targetDid), 498 562 getUserByHandle.keyFor(target.handle), 499 563 ]); 500 564 ··· 502 566 }, 503 567 "importQuestionFromSource", 504 568 ); 569 + 570 + // Comprehensive cache clearing for AT Protocol reindexing scenarios 571 + export const clearAllQuestionCaches = action(async (targetDid: string) => { 572 + "use server"; 573 + const sessionId = getCookie(SESSION_COOKIE); 574 + if (!sessionId) throw new Error("Unauthorized"); 575 + const session = await getSession(sessionId); 576 + if (!session) throw new Error("Unauthorized"); 577 + 578 + // Clear all question-related caches for the target user 579 + await revalidate([ 580 + getQuestions.keyFor(targetDid), 581 + getPendingQuestions.keyFor(targetDid), 582 + getCurrentUser.keyFor(), 583 + ]); 584 + 585 + // Also clear user profile cache if we have the user 586 + const target = await db.query.users.findFirst({ 587 + where: eq(users.did, targetDid), 588 + }); 589 + 590 + if (target) { 591 + await revalidate([getUserByHandle.keyFor(target.handle)]); 592 + } 593 + }, "clearAllQuestionCaches");
+69
src/lib/route-guards.ts
··· 1 + import { redirect } from "@solidjs/router"; 2 + import { getCookie } from "vinxi/http"; 3 + import { getSession, SESSION_COOKIE } from "~/lib/session"; 4 + 5 + export async function requireAuth() { 6 + "use server"; 7 + const sessionId = getCookie(SESSION_COOKIE); 8 + if (!sessionId) { 9 + throw redirect("/"); 10 + } 11 + 12 + const session = await getSession(sessionId); 13 + if (!session) { 14 + throw redirect("/"); 15 + } 16 + 17 + return session.user; 18 + } 19 + 20 + export async function requireNotOwner(targetHandle: string) { 21 + "use server"; 22 + const user = await requireAuth(); 23 + 24 + if (user.handle === targetHandle) { 25 + throw redirect(`/${targetHandle}`); 26 + } 27 + 28 + return user; 29 + } 30 + 31 + export async function requireOwner(targetHandle: string) { 32 + "use server"; 33 + const user = await requireAuth(); 34 + 35 + if (user.handle !== targetHandle) { 36 + throw redirect(`/${targetHandle}`); 37 + } 38 + 39 + return user; 40 + } 41 + 42 + export class RouteError extends Error { 43 + constructor( 44 + message: string, 45 + public statusCode: number = 500, 46 + public title: string = "Error" 47 + ) { 48 + super(message); 49 + this.name = "RouteError"; 50 + } 51 + } 52 + 53 + export class NotFoundError extends RouteError { 54 + constructor(message: string = "Page not found") { 55 + super(message, 404, "Not Found"); 56 + } 57 + } 58 + 59 + export class ForbiddenError extends RouteError { 60 + constructor(message: string = "Access denied") { 61 + super(message, 403, "Forbidden"); 62 + } 63 + } 64 + 65 + export class UnauthorizedError extends RouteError { 66 + constructor(message: string = "Please sign in to continue") { 67 + super(message, 401, "Unauthorized"); 68 + } 69 + }
+161
src/routes/[handle].module.css
··· 190 190 color: var(--color-text-muted); 191 191 margin-bottom: 0.75rem; 192 192 } 193 + 194 + /* Navigation and page actions */ 195 + .pageActions { 196 + display: flex; 197 + gap: 0.75rem; 198 + margin-bottom: 1.5rem; 199 + padding-bottom: 1rem; 200 + border-bottom: 1px solid var(--color-border); 201 + } 202 + 203 + .buttonSecondary { 204 + color: var(--color-text); 205 + background: var(--color-surface); 206 + border: 1px solid var(--color-border); 207 + } 208 + 209 + .buttonSecondary:hover { 210 + background: var(--color-surface-hover); 211 + } 212 + 213 + /* Clickable question cards */ 214 + .clickable { 215 + cursor: pointer; 216 + transition: all 0.15s ease; 217 + } 218 + 219 + .clickable:hover { 220 + background: var(--color-surface-hover); 221 + border-color: var(--color-primary); 222 + transform: translateY(-1px); 223 + } 224 + 225 + .clickable:focus { 226 + outline: 2px solid var(--color-primary); 227 + outline-offset: 2px; 228 + } 229 + 230 + /* Question actions and hints */ 231 + .questionActions { 232 + margin-top: 0.75rem; 233 + padding-top: 0.75rem; 234 + border-top: 1px solid var(--color-border); 235 + } 236 + 237 + .actionHint { 238 + font-size: 0.8rem; 239 + color: var(--color-primary); 240 + font-weight: 500; 241 + } 242 + 243 + /* Form enhancements */ 244 + .questionForm { 245 + margin-top: 1.5rem; 246 + } 247 + 248 + .questionDetail { 249 + margin-top: 1.5rem; 250 + } 251 + 252 + .answerForm { 253 + margin-top: 1.5rem; 254 + padding-top: 1.5rem; 255 + border-top: 1px solid var(--color-border); 256 + } 257 + 258 + .formLabel { 259 + font-size: 0.9rem; 260 + font-weight: 600; 261 + color: var(--color-text); 262 + margin-bottom: 0.5rem; 263 + display: block; 264 + } 265 + 266 + .formActions { 267 + display: flex; 268 + gap: 0.75rem; 269 + justify-content: flex-end; 270 + } 271 + 272 + .questionLabel { 273 + font-size: 0.75rem; 274 + text-transform: uppercase; 275 + letter-spacing: 0.04em; 276 + color: var(--color-text-muted); 277 + margin-bottom: 0.5rem; 278 + } 279 + 280 + /* Empty states */ 281 + .emptyState { 282 + text-align: center; 283 + padding: 2rem 1rem; 284 + } 285 + 286 + /* Pending indicator */ 287 + .pendingIndicator { 288 + margin-top: 1rem; 289 + padding: 0.75rem 1rem; 290 + background: var(--color-surface); 291 + border: 1px solid var(--color-border); 292 + border-radius: var(--radius); 293 + text-align: center; 294 + } 295 + 296 + .pendingText { 297 + font-size: 0.85rem; 298 + color: var(--color-text-muted); 299 + font-style: italic; 300 + } 301 + 302 + /* Error handling styles */ 303 + .errorContainer { 304 + text-align: center; 305 + padding: 3rem 1rem; 306 + max-width: 500px; 307 + margin: 0 auto; 308 + } 309 + 310 + .errorTitle { 311 + font-size: 1.5rem; 312 + font-weight: 600; 313 + color: var(--color-text); 314 + margin-bottom: 1rem; 315 + } 316 + 317 + .errorMessage { 318 + font-size: 1rem; 319 + color: var(--color-text-muted); 320 + margin-bottom: 2rem; 321 + line-height: 1.5; 322 + } 323 + 324 + .errorActions { 325 + display: flex; 326 + gap: 1rem; 327 + justify-content: center; 328 + flex-wrap: wrap; 329 + } 330 + 331 + .errorDetails { 332 + margin: 1.5rem 0; 333 + text-align: left; 334 + } 335 + 336 + .errorDetails summary { 337 + cursor: pointer; 338 + font-size: 0.9rem; 339 + color: var(--color-text-muted); 340 + margin-bottom: 0.5rem; 341 + } 342 + 343 + .errorStack { 344 + background: var(--color-surface); 345 + border: 1px solid var(--color-border); 346 + border-radius: var(--radius); 347 + padding: 1rem; 348 + font-size: 0.8rem; 349 + color: var(--color-text-muted); 350 + overflow-x: auto; 351 + white-space: pre-wrap; 352 + word-break: break-all; 353 + }
+3 -254
src/routes/[handle].tsx
··· 1 - import { 2 - createAsync, 3 - useNavigate, 4 - useParams, 5 - } from "@solidjs/router"; 6 - import { For, Show } from "solid-js"; 1 + import type { RouteSectionProps } from "@solidjs/router"; 7 2 8 - import { 9 - getCurrentUser, 10 - getQuestions, 11 - getUserByHandle, 12 - submitAnswer, 13 - submitQuestion, 14 - toggleQuestionsOpen, 15 - } from "~/lib/queries"; 16 - import SourceAttribution from "~/components/SourceAttribution"; 17 - 18 - import styles from "./[handle].module.css"; 19 - 20 - function formatWhen(d: Date | string) { 21 - const date = typeof d === "string" ? new Date(d) : d; 22 - return date.toLocaleString(undefined, { 23 - dateStyle: "medium", 24 - timeStyle: "short", 25 - }); 26 - } 27 - 28 - export default function UserProfile() { 29 - const params = useParams(); 30 - const navigate = useNavigate(); 31 - const currentUser = createAsync(() => getCurrentUser()); 32 - const profileUser = createAsync(() => getUserByHandle(params.handle)); 33 - const questions = createAsync(async () => { 34 - const p = await getUserByHandle(params.handle); 35 - if (!p) return []; 36 - return getQuestions(p.did); 37 - }); 38 - 39 - const isOwn = () => { 40 - const c = currentUser(); 41 - const p = profileUser(); 42 - return Boolean(c && p && c.did === p.did); 43 - }; 44 - 45 - return ( 46 - <div class={styles.page}> 47 - <Show 48 - when={profileUser()} 49 - keyed 50 - fallback={<p class={styles.notFound}>User not found.</p>} 51 - > 52 - {(profile) => ( 53 - <> 54 - <header class={styles.header}> 55 - <Show 56 - when={profile.avatarUrl} 57 - keyed 58 - fallback={ 59 - <div 60 - class={`${styles.avatar} ${styles.avatarPlaceholder}`} 61 - aria-hidden 62 - > 63 - {(profile.displayName || profile.handle) 64 - .slice(0, 1) 65 - .toUpperCase()} 66 - </div> 67 - } 68 - > 69 - {(src) => ( 70 - <img 71 - class={styles.avatar} 72 - src={src} 73 - alt="" 74 - width={64} 75 - height={64} 76 - /> 77 - )} 78 - </Show> 79 - <div class={styles.profileText}> 80 - <div class={styles.displayName}> 81 - {profile.displayName || profile.handle} 82 - </div> 83 - <div class={styles.handle}>@{profile.handle}</div> 84 - </div> 85 - </header> 86 - 87 - <Show when={isOwn()}> 88 - <Show when={!profile.questionsOpen}> 89 - <p class={styles.status}> 90 - Your questions are closed. Open them to receive questions from 91 - others. 92 - </p> 93 - <form 94 - class={styles.form} 95 - action={toggleQuestionsOpen} 96 - method="post" 97 - > 98 - <button class={styles.button} type="submit"> 99 - Open your questions 100 - </button> 101 - </form> 102 - </Show> 103 - 104 - <Show when={profile.questionsOpen}> 105 - <p class={styles.sectionTitle}>Your questions</p> 106 - <div class={styles.questionList}> 107 - <For each={questions()}> 108 - {(q) => ( 109 - <article class={styles.questionCard}> 110 - <div class={styles.questionContent}>{q.content}</div> 111 - <div class={styles.questionMeta}> 112 - {q.anonymous 113 - ? "Anonymous" 114 - : q.author?.displayName || 115 - q.author?.handle || 116 - "Unknown"}{" "} 117 - · {formatWhen(q.createdAt)} 118 - <SourceAttribution 119 - sourceType={q.sourceType || 'askimut'} 120 - sourceUri={q.sourceUri} 121 - sourceData={q.sourceData} 122 - /> 123 - </div> 124 - <For each={q.answers}> 125 - {(a) => ( 126 - <div class={styles.answerBlock}> 127 - <div class={styles.answerLabel}>Answer</div> 128 - <div class={styles.answerText}>{a.content}</div> 129 - <div class={styles.questionMeta}> 130 - {formatWhen(a.createdAt)} 131 - <SourceAttribution 132 - sourceType={a.sourceType || 'askimut'} 133 - sourceUri={a.sourceUri} 134 - sourceData={a.sourceData} 135 - /> 136 - </div> 137 - </div> 138 - )} 139 - </For> 140 - <Show when={q.answers.length === 0}> 141 - <form 142 - class={styles.form} 143 - action={submitAnswer.with(q.id)} 144 - method="post" 145 - > 146 - <textarea 147 - class={styles.textarea} 148 - name="content" 149 - required 150 - placeholder="Write your answer…" 151 - rows={3} 152 - /> 153 - <button class={styles.button} type="submit"> 154 - Post answer 155 - </button> 156 - </form> 157 - </Show> 158 - </article> 159 - )} 160 - </For> 161 - </div> 162 - </Show> 163 - </Show> 164 - 165 - <Show when={!isOwn()}> 166 - <Show when={!profile.questionsOpen}> 167 - <p class={styles.status}> 168 - This user hasn&apos;t opened their questions yet. 169 - </p> 170 - </Show> 171 - 172 - <Show when={profile.questionsOpen}> 173 - <p class={styles.sectionTitle}>Questions</p> 174 - <div class={styles.questionList}> 175 - <For each={questions()}> 176 - {(q) => ( 177 - <article class={styles.questionCard}> 178 - <div class={styles.questionContent}>{q.content}</div> 179 - <div class={styles.questionMeta}> 180 - {q.anonymous 181 - ? "Anonymous" 182 - : q.author?.displayName || 183 - q.author?.handle || 184 - "Unknown"}{" "} 185 - · {formatWhen(q.createdAt)} 186 - <SourceAttribution 187 - sourceType={q.sourceType || 'askimut'} 188 - sourceUri={q.sourceUri} 189 - sourceData={q.sourceData} 190 - /> 191 - </div> 192 - <For each={q.answers}> 193 - {(a) => ( 194 - <div class={styles.answerBlock}> 195 - <div class={styles.answerLabel}>Answer</div> 196 - <div class={styles.answerText}>{a.content}</div> 197 - <div class={styles.questionMeta}> 198 - {formatWhen(a.createdAt)} 199 - <SourceAttribution 200 - sourceType={a.sourceType || 'askimut'} 201 - sourceUri={a.sourceUri} 202 - sourceData={a.sourceData} 203 - /> 204 - </div> 205 - </div> 206 - )} 207 - </For> 208 - </article> 209 - )} 210 - </For> 211 - </div> 212 - 213 - <Show when={currentUser()}> 214 - <form 215 - class={styles.form} 216 - action={submitQuestion.with(profile.did)} 217 - method="post" 218 - > 219 - <textarea 220 - class={styles.textarea} 221 - name="content" 222 - required 223 - placeholder="Ask a question…" 224 - rows={3} 225 - /> 226 - <label class={styles.toggleRow}> 227 - <input type="checkbox" name="anonymous" /> 228 - Ask anonymously 229 - </label> 230 - <button class={styles.button} type="submit"> 231 - Send question 232 - </button> 233 - </form> 234 - </Show> 235 - <Show when={!currentUser()}> 236 - <p class={styles.status}> 237 - <a 238 - href="/" 239 - onClick={(e) => { 240 - e.preventDefault(); 241 - navigate("/"); 242 - }} 243 - > 244 - Sign in 245 - </a>{" "} 246 - to ask a question. 247 - </p> 248 - </Show> 249 - </Show> 250 - </Show> 251 - </> 252 - )} 253 - </Show> 254 - </div> 255 - ); 3 + export default function HandleLayout(props: RouteSectionProps) { 4 + return <>{props.children}</>; 256 5 }
+255
src/routes/[handle]/index.tsx
··· 1 + import { 2 + createAsync, 3 + useNavigate, 4 + useParams, 5 + } from "@solidjs/router"; 6 + import { For, Show } from "solid-js"; 7 + 8 + import { 9 + getCurrentUser, 10 + getQuestions, 11 + getPendingQuestions, 12 + getUserByHandle, 13 + submitAnswer, 14 + submitQuestion, 15 + toggleQuestionsOpen, 16 + } from "~/lib/queries"; 17 + import SourceAttribution from "~/components/SourceAttribution"; 18 + 19 + import styles from "../[handle].module.css"; 20 + 21 + function formatWhen(d: Date | string) { 22 + const date = typeof d === "string" ? new Date(d) : d; 23 + return date.toLocaleString(undefined, { 24 + dateStyle: "medium", 25 + timeStyle: "short", 26 + }); 27 + } 28 + 29 + export default function UserProfile() { 30 + const params = useParams(); 31 + const navigate = useNavigate(); 32 + const currentUser = createAsync(() => getCurrentUser()); 33 + const profileUser = createAsync(() => getUserByHandle(params.handle)); 34 + const questions = createAsync(async () => { 35 + const p = await getUserByHandle(params.handle); 36 + if (!p) return []; 37 + return getQuestions(p.did); 38 + }); 39 + 40 + const pendingQuestions = createAsync(async () => { 41 + const p = await profileUser(); 42 + const c = await currentUser(); 43 + if (!p || !c || c.did !== p.did) return []; 44 + try { 45 + return await getPendingQuestions(p.did); 46 + } catch { 47 + return []; 48 + } 49 + }); 50 + 51 + const isOwn = () => { 52 + const c = currentUser(); 53 + const p = profileUser(); 54 + return Boolean(c && p && c.did === p.did); 55 + }; 56 + 57 + return ( 58 + <div class={styles.page}> 59 + <Show 60 + when={profileUser()} 61 + keyed 62 + fallback={<p class={styles.notFound}>User not found.</p>} 63 + > 64 + {(profile) => ( 65 + <> 66 + <header class={styles.header}> 67 + <Show 68 + when={profile.avatarUrl} 69 + keyed 70 + fallback={ 71 + <div 72 + class={`${styles.avatar} ${styles.avatarPlaceholder}`} 73 + aria-hidden 74 + > 75 + {(profile.displayName || profile.handle) 76 + .slice(0, 1) 77 + .toUpperCase()} 78 + </div> 79 + } 80 + > 81 + {(src) => ( 82 + <img 83 + class={styles.avatar} 84 + src={src} 85 + alt="" 86 + width={64} 87 + height={64} 88 + /> 89 + )} 90 + </Show> 91 + <div class={styles.profileText}> 92 + <div class={styles.displayName}> 93 + {profile.displayName || profile.handle} 94 + </div> 95 + <div class={styles.handle}>@{profile.handle}</div> 96 + </div> 97 + </header> 98 + 99 + {/* Navigation buttons */} 100 + <Show when={currentUser()}> 101 + <div class={styles.pageActions}> 102 + <Show when={!isOwn() && profile.questionsOpen}> 103 + <button 104 + class={styles.button} 105 + onClick={() => navigate(`/${params.handle}/new`)} 106 + > 107 + Ask a Question 108 + </button> 109 + </Show> 110 + <Show when={isOwn() && profile.questionsOpen && pendingQuestions() && pendingQuestions()!.length > 0}> 111 + <button 112 + class={styles.button} 113 + onClick={() => navigate(`/${params.handle}/pending`)} 114 + > 115 + Answer Questions ({pendingQuestions()?.length}) 116 + </button> 117 + </Show> 118 + </div> 119 + </Show> 120 + 121 + <Show when={isOwn()}> 122 + <Show when={!profile.questionsOpen}> 123 + <p class={styles.status}> 124 + Your questions are closed. Open them to receive questions from 125 + others. 126 + </p> 127 + <form 128 + class={styles.form} 129 + action={toggleQuestionsOpen} 130 + method="post" 131 + > 132 + <button class={styles.button} type="submit"> 133 + Open your questions 134 + </button> 135 + </form> 136 + </Show> 137 + 138 + <Show when={profile.questionsOpen}> 139 + <p class={styles.sectionTitle}>Your questions</p> 140 + <div class={styles.questionList}> 141 + <For each={questions()}> 142 + {(q) => ( 143 + <article class={styles.questionCard}> 144 + <div class={styles.questionContent}>{q.content}</div> 145 + <div class={styles.questionMeta}> 146 + {q.anonymous 147 + ? "Anonymous" 148 + : q.author?.displayName || 149 + q.author?.handle || 150 + "Unknown"}{" "} 151 + · {formatWhen(q.createdAt)} 152 + <SourceAttribution 153 + sourceType={q.sourceType || 'askimut'} 154 + sourceUri={q.sourceUri} 155 + sourceData={q.sourceData} 156 + /> 157 + </div> 158 + <For each={q.answers}> 159 + {(a) => ( 160 + <div class={styles.answerBlock}> 161 + <div class={styles.answerLabel}>Answer</div> 162 + <div class={styles.answerText}>{a.content}</div> 163 + <div class={styles.questionMeta}> 164 + {formatWhen(a.createdAt)} 165 + <SourceAttribution 166 + sourceType={a.sourceType || 'askimut'} 167 + sourceUri={a.sourceUri} 168 + sourceData={a.sourceData} 169 + /> 170 + </div> 171 + </div> 172 + )} 173 + </For> 174 + <Show when={q.answers.length === 0}> 175 + <div class={styles.pendingIndicator}> 176 + <span class={styles.pendingText}>Pending answer</span> 177 + </div> 178 + </Show> 179 + </article> 180 + )} 181 + </For> 182 + </div> 183 + </Show> 184 + </Show> 185 + 186 + <Show when={!isOwn()}> 187 + <Show when={!profile.questionsOpen}> 188 + <p class={styles.status}> 189 + This user hasn&apos;t opened their questions yet. 190 + </p> 191 + </Show> 192 + 193 + <Show when={profile.questionsOpen}> 194 + <p class={styles.sectionTitle}>Questions</p> 195 + <div class={styles.questionList}> 196 + <For each={questions()}> 197 + {(q) => ( 198 + <article class={styles.questionCard}> 199 + <div class={styles.questionContent}>{q.content}</div> 200 + <div class={styles.questionMeta}> 201 + {q.anonymous 202 + ? "Anonymous" 203 + : q.author?.displayName || 204 + q.author?.handle || 205 + "Unknown"}{" "} 206 + · {formatWhen(q.createdAt)} 207 + <SourceAttribution 208 + sourceType={q.sourceType || 'askimut'} 209 + sourceUri={q.sourceUri} 210 + sourceData={q.sourceData} 211 + /> 212 + </div> 213 + <For each={q.answers}> 214 + {(a) => ( 215 + <div class={styles.answerBlock}> 216 + <div class={styles.answerLabel}>Answer</div> 217 + <div class={styles.answerText}>{a.content}</div> 218 + <div class={styles.questionMeta}> 219 + {formatWhen(a.createdAt)} 220 + <SourceAttribution 221 + sourceType={a.sourceType || 'askimut'} 222 + sourceUri={a.sourceUri} 223 + sourceData={a.sourceData} 224 + /> 225 + </div> 226 + </div> 227 + )} 228 + </For> 229 + </article> 230 + )} 231 + </For> 232 + </div> 233 + 234 + <Show when={!currentUser()}> 235 + <p class={styles.status}> 236 + <a 237 + href="/" 238 + onClick={(e) => { 239 + e.preventDefault(); 240 + navigate("/"); 241 + }} 242 + > 243 + Sign in 244 + </a>{" "} 245 + to ask a question. 246 + </p> 247 + </Show> 248 + </Show> 249 + </Show> 250 + </> 251 + )} 252 + </Show> 253 + </div> 254 + ); 255 + }
+142
src/routes/[handle]/new.tsx
··· 1 + import { 2 + createAsync, 3 + useNavigate, 4 + useParams, 5 + } from "@solidjs/router"; 6 + import { Show, ErrorBoundary } from "solid-js"; 7 + 8 + import { 9 + getCurrentUser, 10 + getUserByHandle, 11 + submitQuestion, 12 + } from "~/lib/queries"; 13 + import { requireNotOwner, NotFoundError, ForbiddenError } from "~/lib/route-guards"; 14 + import ErrorBoundaryComponent from "~/components/ErrorBoundary"; 15 + 16 + import styles from "../[handle].module.css"; 17 + 18 + export default function AskQuestion() { 19 + const params = useParams(); 20 + const navigate = useNavigate(); 21 + 22 + // Verify authentication and ensure user is not the profile owner 23 + const currentUser = createAsync(async () => { 24 + try { 25 + return await requireNotOwner(params.handle); 26 + } catch (error) { 27 + // Handle redirects gracefully 28 + return null; 29 + } 30 + }); 31 + 32 + const profileUser = createAsync(async () => { 33 + const user = await getUserByHandle(params.handle); 34 + if (!user) { 35 + throw new NotFoundError("User not found"); 36 + } 37 + if (!user.questionsOpen) { 38 + throw new ForbiddenError("This user hasn't opened their questions yet"); 39 + } 40 + return user; 41 + }); 42 + 43 + const handleSuccess = () => { 44 + navigate(`/${params.handle}`, { 45 + replace: true, 46 + state: { message: "Question sent successfully!" } 47 + }); 48 + }; 49 + 50 + return ( 51 + <ErrorBoundary fallback={ErrorBoundaryComponent}> 52 + <div class={styles.page}> 53 + <Show when={profileUser() && currentUser()} keyed> 54 + {([profile, user]) => ( 55 + <> 56 + <header class={styles.header}> 57 + <Show 58 + when={profile.avatarUrl} 59 + keyed 60 + fallback={ 61 + <div 62 + class={`${styles.avatar} ${styles.avatarPlaceholder}`} 63 + aria-hidden 64 + > 65 + {(profile.displayName || profile.handle) 66 + .slice(0, 1) 67 + .toUpperCase()} 68 + </div> 69 + } 70 + > 71 + {(src) => ( 72 + <img 73 + class={styles.avatar} 74 + src={src} 75 + alt="" 76 + width={64} 77 + height={64} 78 + /> 79 + )} 80 + </Show> 81 + <div class={styles.profileText}> 82 + <div class={styles.displayName}> 83 + Ask {profile.displayName || profile.handle} 84 + </div> 85 + <div class={styles.handle}>@{profile.handle}</div> 86 + </div> 87 + </header> 88 + 89 + <div class={styles.questionForm}> 90 + <form 91 + class={styles.form} 92 + action={submitQuestion.with(profile.did)} 93 + method="post" 94 + onSubmit={() => { 95 + // Add a small delay to allow form submission to complete 96 + setTimeout(handleSuccess, 100); 97 + }} 98 + > 99 + <textarea 100 + class={styles.textarea} 101 + name="content" 102 + required 103 + placeholder="Ask a question…" 104 + rows={4} 105 + maxLength={500} 106 + minLength={10} 107 + onInput={(e) => { 108 + const target = e.target as HTMLTextAreaElement; 109 + if (target.value.length < 10) { 110 + target.setCustomValidity("Question must be at least 10 characters long"); 111 + } else if (target.value.length > 500) { 112 + target.setCustomValidity("Question must be less than 500 characters"); 113 + } else { 114 + target.setCustomValidity(""); 115 + } 116 + }} 117 + /> 118 + <label class={styles.toggleRow}> 119 + <input type="checkbox" name="anonymous" /> 120 + Ask anonymously 121 + </label> 122 + <div class={styles.formActions}> 123 + <button 124 + type="button" 125 + class={`${styles.button} ${styles.buttonSecondary}`} 126 + onClick={() => navigate(`/${params.handle}`)} 127 + > 128 + Cancel 129 + </button> 130 + <button class={styles.button} type="submit"> 131 + Send question 132 + </button> 133 + </div> 134 + </form> 135 + </div> 136 + </> 137 + )} 138 + </Show> 139 + </div> 140 + </ErrorBoundary> 141 + ); 142 + }
+5
src/routes/[handle]/pending.tsx
··· 1 + import type { RouteSectionProps } from "@solidjs/router"; 2 + 3 + export default function PendingLayout(props: RouteSectionProps) { 4 + return <>{props.children}</>; 5 + }
+191
src/routes/[handle]/pending/[id].tsx
··· 1 + import { 2 + createAsync, 3 + useNavigate, 4 + useParams, 5 + } from "@solidjs/router"; 6 + import { Show, ErrorBoundary } from "solid-js"; 7 + 8 + import { 9 + getCurrentUser, 10 + getUserByHandle, 11 + getQuestionById, 12 + submitAnswer, 13 + } from "~/lib/queries"; 14 + import { requireOwner, NotFoundError } from "~/lib/route-guards"; 15 + import SourceAttribution from "~/components/SourceAttribution"; 16 + import ErrorBoundaryComponent from "~/components/ErrorBoundary"; 17 + 18 + import styles from "../../[handle].module.css"; 19 + 20 + function formatWhen(d: Date | string) { 21 + const date = typeof d === "string" ? new Date(d) : d; 22 + return date.toLocaleString(undefined, { 23 + dateStyle: "medium", 24 + timeStyle: "short", 25 + }); 26 + } 27 + 28 + export default function AnswerQuestion() { 29 + const params = useParams(); 30 + const navigate = useNavigate(); 31 + 32 + // Verify authentication and ensure user owns the profile 33 + const currentUser = createAsync(async () => { 34 + try { 35 + return await requireOwner(params.handle); 36 + } catch (error) { 37 + // Handle redirects gracefully 38 + return null; 39 + } 40 + }); 41 + 42 + const profileUser = createAsync(async () => { 43 + const user = await getUserByHandle(params.handle); 44 + if (!user) { 45 + throw new NotFoundError("User not found"); 46 + } 47 + return user; 48 + }); 49 + 50 + const question = createAsync(async () => { 51 + if (!currentUser()) return null; 52 + try { 53 + return await getQuestionById(params.id); 54 + } catch (error) { 55 + if (error instanceof Error && error.message === "Question not found") { 56 + throw new NotFoundError("Question not found"); 57 + } 58 + throw error; 59 + } 60 + }); 61 + 62 + const handleSuccess = () => { 63 + navigate(`/${params.handle}/pending`, { 64 + replace: true, 65 + state: { message: "Answer posted successfully!" } 66 + }); 67 + }; 68 + 69 + return ( 70 + <ErrorBoundary fallback={ErrorBoundaryComponent}> 71 + <div class={styles.page}> 72 + <Show when={profileUser() && currentUser() && question()} keyed> 73 + {([profile, user, q]) => ( 74 + <> 75 + <header class={styles.header}> 76 + <Show 77 + when={profile.avatarUrl} 78 + keyed 79 + fallback={ 80 + <div 81 + class={`${styles.avatar} ${styles.avatarPlaceholder}`} 82 + aria-hidden 83 + > 84 + {(profile.displayName || profile.handle) 85 + .slice(0, 1) 86 + .toUpperCase()} 87 + </div> 88 + } 89 + > 90 + {(src) => ( 91 + <img 92 + class={styles.avatar} 93 + src={src} 94 + alt="" 95 + width={64} 96 + height={64} 97 + /> 98 + )} 99 + </Show> 100 + <div class={styles.profileText}> 101 + <div class={styles.displayName}> 102 + Answer Question 103 + </div> 104 + <div class={styles.handle}>@{profile.handle}</div> 105 + </div> 106 + </header> 107 + 108 + <div class={styles.pageActions}> 109 + <button 110 + type="button" 111 + class={`${styles.button} ${styles.buttonSecondary}`} 112 + onClick={() => navigate(`/${params.handle}/pending`)} 113 + > 114 + ← Back to Pending 115 + </button> 116 + </div> 117 + 118 + <div class={styles.questionDetail}> 119 + <article class={styles.questionCard}> 120 + <div class={styles.questionLabel}>Question</div> 121 + <div class={styles.questionContent}>{q.content}</div> 122 + <div class={styles.questionMeta}> 123 + {q.anonymous 124 + ? "Anonymous" 125 + : q.author?.displayName || 126 + q.author?.handle || 127 + "Unknown"}{" "} 128 + · {formatWhen(q.createdAt)} 129 + <SourceAttribution 130 + sourceType={q.sourceType || 'askimut'} 131 + sourceUri={q.sourceUri} 132 + sourceData={q.sourceData} 133 + /> 134 + </div> 135 + </article> 136 + 137 + <div class={styles.answerForm}> 138 + <form 139 + class={styles.form} 140 + action={submitAnswer.with(q.id)} 141 + method="post" 142 + onSubmit={() => { 143 + // Add a small delay to allow form submission to complete 144 + setTimeout(handleSuccess, 100); 145 + }} 146 + > 147 + <label class={styles.formLabel} for="answer-content"> 148 + Your Answer 149 + </label> 150 + <textarea 151 + id="answer-content" 152 + class={styles.textarea} 153 + name="content" 154 + required 155 + placeholder="Write your answer…" 156 + rows={4} 157 + maxLength={1000} 158 + minLength={5} 159 + onInput={(e) => { 160 + const target = e.target as HTMLTextAreaElement; 161 + if (target.value.length < 5) { 162 + target.setCustomValidity("Answer must be at least 5 characters long"); 163 + } else if (target.value.length > 1000) { 164 + target.setCustomValidity("Answer must be less than 1000 characters"); 165 + } else { 166 + target.setCustomValidity(""); 167 + } 168 + }} 169 + /> 170 + <div class={styles.formActions}> 171 + <button 172 + type="button" 173 + class={`${styles.button} ${styles.buttonSecondary}`} 174 + onClick={() => navigate(`/${params.handle}/pending`)} 175 + > 176 + Cancel 177 + </button> 178 + <button class={styles.button} type="submit"> 179 + Post answer 180 + </button> 181 + </div> 182 + </form> 183 + </div> 184 + </div> 185 + </> 186 + )} 187 + </Show> 188 + </div> 189 + </ErrorBoundary> 190 + ); 191 + }
+164
src/routes/[handle]/pending/index.tsx
··· 1 + import { 2 + createAsync, 3 + useNavigate, 4 + useParams, 5 + } from "@solidjs/router"; 6 + import { For, Show, ErrorBoundary } from "solid-js"; 7 + 8 + import { 9 + getCurrentUser, 10 + getUserByHandle, 11 + getPendingQuestions, 12 + } from "~/lib/queries"; 13 + import { requireOwner, NotFoundError } from "~/lib/route-guards"; 14 + import SourceAttribution from "~/components/SourceAttribution"; 15 + import ErrorBoundaryComponent from "~/components/ErrorBoundary"; 16 + 17 + import styles from "../../[handle].module.css"; 18 + 19 + function formatWhen(d: Date | string) { 20 + const date = typeof d === "string" ? new Date(d) : d; 21 + return date.toLocaleString(undefined, { 22 + dateStyle: "medium", 23 + timeStyle: "short", 24 + }); 25 + } 26 + 27 + export default function PendingQuestions() { 28 + const params = useParams(); 29 + const navigate = useNavigate(); 30 + 31 + // Verify authentication and ensure user owns the profile 32 + const currentUser = createAsync(async () => { 33 + try { 34 + return await requireOwner(params.handle); 35 + } catch (error) { 36 + // Handle redirects gracefully 37 + return null; 38 + } 39 + }); 40 + 41 + const profileUser = createAsync(async () => { 42 + const user = await getUserByHandle(params.handle); 43 + if (!user) { 44 + throw new NotFoundError("User not found"); 45 + } 46 + return user; 47 + }); 48 + 49 + const pendingQuestions = createAsync(async () => { 50 + const profile = await profileUser(); 51 + if (!profile || !currentUser()) return []; 52 + return getPendingQuestions(profile.did); 53 + }); 54 + 55 + const handleQuestionClick = (questionId: string) => { 56 + navigate(`/${params.handle}/pending/${questionId}`); 57 + }; 58 + 59 + return ( 60 + <ErrorBoundary fallback={ErrorBoundaryComponent}> 61 + <div class={styles.page}> 62 + <Show when={profileUser() && currentUser()} keyed> 63 + {([profile, user]) => ( 64 + <> 65 + <header class={styles.header}> 66 + <Show 67 + when={profile.avatarUrl} 68 + keyed 69 + fallback={ 70 + <div 71 + class={`${styles.avatar} ${styles.avatarPlaceholder}`} 72 + aria-hidden 73 + > 74 + {(profile.displayName || profile.handle) 75 + .slice(0, 1) 76 + .toUpperCase()} 77 + </div> 78 + } 79 + > 80 + {(src) => ( 81 + <img 82 + class={styles.avatar} 83 + src={src} 84 + alt="" 85 + width={64} 86 + height={64} 87 + /> 88 + )} 89 + </Show> 90 + <div class={styles.profileText}> 91 + <div class={styles.displayName}> 92 + Pending Questions 93 + </div> 94 + <div class={styles.handle}>@{profile.handle}</div> 95 + </div> 96 + </header> 97 + 98 + <div class={styles.pageActions}> 99 + <button 100 + type="button" 101 + class={`${styles.button} ${styles.buttonSecondary}`} 102 + onClick={() => navigate(`/${params.handle}`)} 103 + > 104 + ← Back to Profile 105 + </button> 106 + </div> 107 + 108 + <Show 109 + when={pendingQuestions() && pendingQuestions()!.length > 0} 110 + fallback={ 111 + <div class={styles.emptyState}> 112 + <p class={styles.status}> 113 + No pending questions. All caught up! 114 + </p> 115 + </div> 116 + } 117 + > 118 + <p class={styles.sectionTitle}> 119 + Questions waiting for your answer ({pendingQuestions()?.length || 0}) 120 + </p> 121 + <div class={styles.questionList}> 122 + <For each={pendingQuestions()}> 123 + {(q) => ( 124 + <article 125 + class={`${styles.questionCard} ${styles.clickable}`} 126 + onClick={() => handleQuestionClick(q.id)} 127 + role="button" 128 + tabIndex={0} 129 + onKeyDown={(e) => { 130 + if (e.key === 'Enter' || e.key === ' ') { 131 + e.preventDefault(); 132 + handleQuestionClick(q.id); 133 + } 134 + }} 135 + > 136 + <div class={styles.questionContent}>{q.content}</div> 137 + <div class={styles.questionMeta}> 138 + {q.anonymous 139 + ? "Anonymous" 140 + : q.author?.displayName || 141 + q.author?.handle || 142 + "Unknown"}{" "} 143 + · {formatWhen(q.createdAt)} 144 + <SourceAttribution 145 + sourceType={q.sourceType || 'askimut'} 146 + sourceUri={q.sourceUri} 147 + sourceData={q.sourceData} 148 + /> 149 + </div> 150 + <div class={styles.questionActions}> 151 + <span class={styles.actionHint}>Click to answer →</span> 152 + </div> 153 + </article> 154 + )} 155 + </For> 156 + </div> 157 + </Show> 158 + </> 159 + )} 160 + </Show> 161 + </div> 162 + </ErrorBoundary> 163 + ); 164 + }
+49 -22
src/routes/oauth/callback.ts
··· 1 1 import { Agent } from "@atproto/api"; 2 2 import { type APIEvent } from "@solidjs/start/server"; 3 + import { and, eq, ne, sql } from "drizzle-orm"; 3 4 4 5 import { getOAuthClient } from "~/lib/oauth"; 5 6 import { buildSessionCookie, createSession } from "~/lib/session"; ··· 18 19 } 19 20 20 21 const agent = new Agent(oauthSession); 21 - const { data: profile } = await agent.app.bsky.actor.getProfile({ 22 - actor: oauthSession.did, 23 - }); 22 + 23 + let did = oauthSession.did; 24 + let handle = did; 25 + let displayName: string | null = null; 26 + let avatarUrl: string | null = null; 24 27 25 - const did = profile.did; 26 - const handle = profile.handle; 27 - const displayName = profile.displayName ?? null; 28 - const avatarUrl = profile.avatar ?? null; 28 + try { 29 + const { data: profile } = await agent.app.bsky.actor.getProfile({ 30 + actor: did, 31 + }); 32 + handle = profile.handle; 33 + displayName = profile.displayName ?? null; 34 + avatarUrl = profile.avatar ?? null; 35 + } catch { 36 + // AppView unavailable (e.g. local dev-env without AppView). 37 + // Resolve handle from PDS directly via repo description. 38 + try { 39 + const { data } = await agent.com.atproto.repo.describeRepo({ 40 + repo: did, 41 + }); 42 + handle = data.handle; 43 + } catch { 44 + // keep handle = did 45 + } 46 + } 47 + 48 + await db.transaction(async (tx) => { 49 + // If another DID holds this handle (stale row from a previous PDS seed), 50 + // reset their handle to their DID so the unique constraint won't block us. 51 + await tx 52 + .update(users) 53 + .set({ handle: sql`"did"`, updatedAt: new Date() }) 54 + .where(and(eq(users.handle, handle), ne(users.did, did))); 29 55 30 - await db 31 - .insert(users) 32 - .values({ 33 - did, 34 - handle, 35 - displayName, 36 - avatarUrl, 37 - questionsOpen: false, 38 - }) 39 - .onConflictDoUpdate({ 40 - target: users.did, 41 - set: { 56 + await tx 57 + .insert(users) 58 + .values({ 59 + did, 42 60 handle, 43 61 displayName, 44 62 avatarUrl, 45 - updatedAt: new Date(), 46 - }, 47 - }); 63 + questionsOpen: false, 64 + }) 65 + .onConflictDoUpdate({ 66 + target: users.did, 67 + set: { 68 + handle, 69 + displayName, 70 + avatarUrl, 71 + updatedAt: new Date(), 72 + }, 73 + }); 74 + }); 48 75 49 76 const sessionId = await createSession(did); 50 77 const sessionCookie = buildSessionCookie(sessionId);