this repo has no description
0
fork

Configure Feed

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

Major refactor

alice 3517e4eb fde5cee4

+153 -2906
+7 -6
.env.example
··· 1 - DID= 2 - SIGNING_KEY= 3 - BSKY_IDENTIFIER= 4 - BSKY_PASSWORD= 5 - PORT= 6 - RELAY= 1 + DID=did:plc:foobarbaz 2 + SIGNING_KEY=randomnumbersandletters123 3 + BSKY_IDENTIFIER=mylabeler.bsky.social 4 + BSKY_PASSWORD=hunter2 5 + PORT=4002 6 + METRICS_PORT=4102 7 + FIREHOSE_URL=wss://jetstream.atproto.tools/subscribe
+1
.gitignore
··· 3 3 cursor.txt 4 4 *.log 5 5 labels.db* 6 + bun.lockb
-1
.prettierignore
··· 1 1 src/constants.ts 2 - pnpm-lock.yaml
+6 -1
.prettierrc
··· 3 3 "tabWidth": 2, 4 4 "semi": true, 5 5 "singleQuote": true, 6 - "printWidth": 120 6 + "printWidth": 120, 7 + "experimentalTernaries": true, 8 + "plugins": ["@trivago/prettier-plugin-sort-imports"], 9 + "importOrder": ["^[./]"], 10 + "importOrderSeparation": true, 11 + "importOrderSortSpecifiers": true 7 12 }
+1 -1
README.md
··· 10 10 BSKY_IDENTIFIER = "xxx" 11 11 BSKY_PASSWORD = "xxx" 12 12 PORT = 4002 13 - RELAY = "ws://localhost:6008/subscribe" 13 + FIREHOSE_URL = "ws://localhost:6008/subscribe" 14 14 ``` 15 15 16 16 A `cursor.txt` also needs to be present with the time in microseconds. If it doesn't exist, it will be created with the current time.
+8 -1
eslint.config.mjs
··· 8 8 { 9 9 languageOptions: { 10 10 parserOptions: { 11 - project: './tsconfig.json', 11 + projectService: { 12 + allowDefaultProject: ['*.js'], 13 + defaultProject: 'tsconfig.json', 14 + }, 12 15 }, 13 16 }, 14 17 rules: { 15 18 '@typescript-eslint/no-non-null-assertion': 'off', 16 19 '@typescript-eslint/restrict-template-expressions': 'off', 17 20 }, 21 + }, 22 + { 23 + files: ['eslint.config.mjs'], 24 + extends: [tseslint.configs.disableTypeChecked], 18 25 }, 19 26 );
+14 -11
package.json
··· 7 7 "dev": "npx tsx --watch src/main.ts" 8 8 }, 9 9 "devDependencies": { 10 - "@eslint/js": "^9.10.0", 10 + "@eslint/js": "^9.11.1", 11 + "@trivago/prettier-plugin-sort-imports": "^4.3.0", 11 12 "@types/better-sqlite3": "^7.6.11", 12 13 "@types/eslint__js": "^8.42.3", 13 - "@types/node": "^20.16.5", 14 + "@types/node": "^20.16.10", 14 15 "@types/ws": "^8.5.12", 15 - "eslint": "^9.10.0", 16 + "@types/express": "^4.17.21", 17 + "eslint": "^9.11.1", 16 18 "prettier": "^3.3.3", 17 19 "typescript": "^5.6.2", 18 - "typescript-eslint": "^8.5.0" 20 + "typescript-eslint": "^8.7.0" 19 21 }, 20 22 "dependencies": { 21 - "@atproto/api": "^0.13.7", 22 - "@skyware/firehose": "^0.3.1", 23 - "@skyware/labeler": "^0.1.6", 24 - "bufferutil": "^4.0.8", 23 + "@atproto/api": "^0.13.8", 24 + "@skyware/jetstream": "^0.1.5", 25 + "@skyware/labeler": "^0.1.7", 25 26 "dotenv": "^16.4.5", 26 - "ws": "^8.18.0" 27 - }, 28 - "packageManager": "pnpm@9.9.0+sha512.60c18acd138bff695d339be6ad13f7e936eea6745660d4cc4a776d5247c540d0edee1a563695c183a66eb917ef88f2b4feb1fc25f32a7adcadc7aaf3438e99c1" 27 + "express": "^4.21.0", 28 + "pino": "^9.4.0", 29 + "pino-pretty": "^11.2.2", 30 + "prom-client": "^15.1.3" 31 + } 29 32 }
-2826
pnpm-lock.yaml
··· 1 - lockfileVersion: '9.0' 2 - 3 - settings: 4 - autoInstallPeers: true 5 - excludeLinksFromLockfile: false 6 - 7 - importers: 8 - 9 - .: 10 - dependencies: 11 - '@atproto/api': 12 - specifier: ^0.13.7 13 - version: 0.13.7 14 - '@skyware/firehose': 15 - specifier: ^0.3.1 16 - version: 0.3.1(bufferutil@4.0.8) 17 - '@skyware/labeler': 18 - specifier: ^0.1.6 19 - version: 0.1.6(bufferutil@4.0.8) 20 - bufferutil: 21 - specifier: ^4.0.8 22 - version: 4.0.8 23 - dotenv: 24 - specifier: ^16.4.5 25 - version: 16.4.5 26 - ws: 27 - specifier: ^8.18.0 28 - version: 8.18.0(bufferutil@4.0.8) 29 - devDependencies: 30 - '@eslint/js': 31 - specifier: ^9.10.0 32 - version: 9.10.0 33 - '@types/better-sqlite3': 34 - specifier: ^7.6.11 35 - version: 7.6.11 36 - '@types/eslint__js': 37 - specifier: ^8.42.3 38 - version: 8.42.3 39 - '@types/node': 40 - specifier: ^20.16.5 41 - version: 20.16.5 42 - '@types/ws': 43 - specifier: ^8.5.12 44 - version: 8.5.12 45 - eslint: 46 - specifier: ^9.10.0 47 - version: 9.10.0 48 - prettier: 49 - specifier: ^3.3.3 50 - version: 3.3.3 51 - typescript: 52 - specifier: ^5.6.2 53 - version: 5.6.2 54 - typescript-eslint: 55 - specifier: ^8.5.0 56 - version: 8.5.0(eslint@9.10.0)(typescript@5.6.2) 57 - 58 - packages: 59 - 60 - '@atcute/base32@1.0.0': 61 - resolution: {integrity: sha512-Mbjsv6kd/ymvDMGjCoh9eqhlpFsoJ6zYguU6xtKxqh1wGhe5rvBOfMRXsEqcp7srn8Bfp8QhevqLgmwrWvzqrA==} 62 - 63 - '@atcute/cbor@1.0.1': 64 - resolution: {integrity: sha512-VOOIrNVSXG0uRl/HC7KbsdVoQAsFMmgf638SBZKMfGEQQa42KnVq8zXYefBTnrQhTQpOiNzbou0/AN/lwDVuOA==} 65 - 66 - '@atcute/cid@1.0.0': 67 - resolution: {integrity: sha512-JnWv3sg48zDBP318ErPYPI482Vw1Nm7e7WG+VYGSLRLp56b9LgcIh28p28gEmPtmsnM9hTAkKvJdi+CAkNDQUA==} 68 - 69 - '@atcute/varint@1.0.0': 70 - resolution: {integrity: sha512-NEBOGkdaDY8cjlDg49kefIsRM7iv/4oReEnOr3bN4tF3IxBGdc6Io1NCJz1xNBNdUL+3VDG3CKHiRji91HXaTg==} 71 - 72 - '@atproto/api@0.13.7': 73 - resolution: {integrity: sha512-41kSLmFWDbuPOenb52WRq1lnBkSZrL+X29tWcvEt6SZXK4xBoKAalw1MjF+oabhzff12iMtNaNvmmt2fu1L+cw==} 74 - 75 - '@atproto/common-web@0.2.4': 76 - resolution: {integrity: sha512-6+DOhQcTklFmeiSkZRx6iFeqi4OFtGl4yEDGATk00q4tEcPoPvyOBtYHN6+G9lrfJIfx5RfmggamvXlJv1PxxA==} 77 - 78 - '@atproto/common-web@0.3.0': 79 - resolution: {integrity: sha512-67VnV6JJyX+ZWyjV7xFQMypAgDmjVaR9ZCuU/QW+mqlqI7fex2uL4Fv+7/jHadgzhuJHVd6OHOvNn0wR5WZYtA==} 80 - 81 - '@atproto/common@0.3.4': 82 - resolution: {integrity: sha512-qjOHcyeHjGRJseYbdnl+0PViDlMRN9GR0/1ToGKAmXh0voz4LbBWU1FwtGF7CvTlbom9MZYhu21lF5pD5RqBwQ==} 83 - 84 - '@atproto/common@0.4.2': 85 - resolution: {integrity: sha512-tv9lHjaoXW7CQrXUiu81RJZJ/bgcPSMaXrrgN4DxS08Z97hor0jgxThlwmGny1p6ksTZ5/bCX9GeJqi/b4LDCg==} 86 - 87 - '@atproto/crypto@0.3.0': 88 - resolution: {integrity: sha512-bhcxRTL4fgRY2YX/St0x4o0oDUp18QIPD7ek+7v8UKA0HpsCGQYbo8w9d9hUvwwty5X5p00cYF2tbggUWaPy7A==} 89 - 90 - '@atproto/crypto@0.4.1': 91 - resolution: {integrity: sha512-7pQNHWYyx8jGhYdPbmcuPD9W73nd/5v3mfBlncO0sBzxnPbmA6aXAWOz+fNVZwHwBJPeb/Gzf/FT/uDx7/eYFg==} 92 - 93 - '@atproto/identity@0.3.3': 94 - resolution: {integrity: sha512-i5d3eOnXQAXuOrjdm4NcveIBJxdEywYJQ4d74/JOgy27bGdNVFgh9FdZAsOseQRkLv4r7mr0I0C6OlSA2BQIxA==} 95 - 96 - '@atproto/identity@0.4.1': 97 - resolution: {integrity: sha512-5AoPJDSD0rAay/6Sib+n/FjfwGulM/+xCNxwwDLR9QI4EoeUlvIH8g5BNdix812v312/Qd42kJrLpCNTZ5rvew==} 98 - 99 - '@atproto/lexicon@0.3.3': 100 - resolution: {integrity: sha512-6FOjdc3V05JKrtkhjfhHMS7f/4hMJOeHNtoE3Na7iFMpzBz0Lw5sw8kIFKY8pc8IG79qGcFgELyHLsljZYX+5A==} 101 - 102 - '@atproto/lexicon@0.4.1': 103 - resolution: {integrity: sha512-bzyr+/VHXLQWbumViX5L7h1NKQObfs8Z+XZJl43OUK8nYFUI4e/sW1IZKRNfw7Wvi5YVNK+J+yP3DWIBZhkCYA==} 104 - 105 - '@atproto/repo@0.3.9': 106 - resolution: {integrity: sha512-1TZvvIy0XQihdXPd9JALh04sGbOlr82zk9TxtxVmLX2jic6g5Pl48aB4R1TjvoRiVMAsQVh3VLRVbUN4o66eVg==} 107 - 108 - '@atproto/syntax@0.2.1': 109 - resolution: {integrity: sha512-ImOuiICtB5h78j90hAYOfTYzr5q5Wut0irNdELiogA3i74a8EXThe+j6Tj8snanYggrShbu5c6BDc1tVj477Yw==} 110 - 111 - '@atproto/syntax@0.3.0': 112 - resolution: {integrity: sha512-Weq0ZBxffGHDXHl9U7BQc2BFJi/e23AL+k+i5+D9hUq/bzT4yjGsrCejkjq0xt82xXDjmhhvQSZ0LqxyZ5woxA==} 113 - 114 - '@atproto/xrpc-server@0.4.4': 115 - resolution: {integrity: sha512-R4uYvuia+tUM4wATLlKmMhr/+VEaSImhuAhD7jEHIjN3a+ZxDBE5PnW3PwWf68VBqw720JJ+jmsJMZO7v9y6FA==} 116 - 117 - '@atproto/xrpc-server@0.6.4': 118 - resolution: {integrity: sha512-AL9okOTpJpxh3wJjT27RiPkp2IWIxDPCyyvuO1SJu0E9URGfWZL26SlT7/IR/tadZTJezr5+ZNuxhV0uhI+s1A==} 119 - 120 - '@atproto/xrpc@0.6.2': 121 - resolution: {integrity: sha512-as/gb08xJb02HAGNrSQSumCe10WnOAcnM6bR6KMatQyQJuEu7OY6ZDSTM/4HfjjoxsNqdvPmbYuoUab1bKTNlA==} 122 - 123 - '@cbor-extract/cbor-extract-darwin-arm64@2.2.0': 124 - resolution: {integrity: sha512-P7swiOAdF7aSi0H+tHtHtr6zrpF3aAq/W9FXx5HektRvLTM2O89xCyXF3pk7pLc7QpaY7AoaE8UowVf9QBdh3w==} 125 - cpu: [arm64] 126 - os: [darwin] 127 - 128 - '@cbor-extract/cbor-extract-darwin-x64@2.2.0': 129 - resolution: {integrity: sha512-1liF6fgowph0JxBbYnAS7ZlqNYLf000Qnj4KjqPNW4GViKrEql2MgZnAsExhY9LSy8dnvA4C0qHEBgPrll0z0w==} 130 - cpu: [x64] 131 - os: [darwin] 132 - 133 - '@cbor-extract/cbor-extract-linux-arm64@2.2.0': 134 - resolution: {integrity: sha512-rQvhNmDuhjTVXSPFLolmQ47/ydGOFXtbR7+wgkSY0bdOxCFept1hvg59uiLPT2fVDuJFuEy16EImo5tE2x3RsQ==} 135 - cpu: [arm64] 136 - os: [linux] 137 - 138 - '@cbor-extract/cbor-extract-linux-arm@2.2.0': 139 - resolution: {integrity: sha512-QeBcBXk964zOytiedMPQNZr7sg0TNavZeuUCD6ON4vEOU/25+pLhNN6EDIKJ9VLTKaZ7K7EaAriyYQ1NQ05s/Q==} 140 - cpu: [arm] 141 - os: [linux] 142 - 143 - '@cbor-extract/cbor-extract-linux-x64@2.2.0': 144 - resolution: {integrity: sha512-cWLAWtT3kNLHSvP4RKDzSTX9o0wvQEEAj4SKvhWuOVZxiDAeQazr9A+PSiRILK1VYMLeDml89ohxCnUNQNQNCw==} 145 - cpu: [x64] 146 - os: [linux] 147 - 148 - '@cbor-extract/cbor-extract-win32-x64@2.2.0': 149 - resolution: {integrity: sha512-l2M+Z8DO2vbvADOBNLbbh9y5ST1RY5sqkWOg/58GkUPBYou/cuNZ68SGQ644f1CvZ8kcOxyZtw06+dxWHIoN/w==} 150 - cpu: [x64] 151 - os: [win32] 152 - 153 - '@eslint-community/eslint-utils@4.4.0': 154 - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} 155 - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 156 - peerDependencies: 157 - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 158 - 159 - '@eslint-community/regexpp@4.11.0': 160 - resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} 161 - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 162 - 163 - '@eslint/config-array@0.18.0': 164 - resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} 165 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 166 - 167 - '@eslint/eslintrc@3.1.0': 168 - resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} 169 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 170 - 171 - '@eslint/js@9.10.0': 172 - resolution: {integrity: sha512-fuXtbiP5GWIn8Fz+LWoOMVf/Jxm+aajZYkhi6CuEm4SxymFM+eUWzbO9qXT+L0iCkL5+KGYMCSGxo686H19S1g==} 173 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 174 - 175 - '@eslint/object-schema@2.1.4': 176 - resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} 177 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 178 - 179 - '@eslint/plugin-kit@0.1.0': 180 - resolution: {integrity: sha512-autAXT203ixhqei9xt+qkYOvY8l6LAFIdT2UXc/RPNeUVfqRF1BV94GTJyVPFKT8nFM6MyVJhjLj9E8JWvf5zQ==} 181 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 182 - 183 - '@fastify/ajv-compiler@3.6.0': 184 - resolution: {integrity: sha512-LwdXQJjmMD+GwLOkP7TVC68qa+pSSogeWWmznRJ/coyTcfe9qA05AHFSe1eZFwK6q+xVRpChnvFUkf1iYaSZsQ==} 185 - 186 - '@fastify/error@3.4.1': 187 - resolution: {integrity: sha512-wWSvph+29GR783IhmvdwWnN4bUxTD01Vm5Xad4i7i1VuAOItLvbPAb69sb0IQ2N57yprvhNIwAP5B6xfKTmjmQ==} 188 - 189 - '@fastify/fast-json-stringify-compiler@4.3.0': 190 - resolution: {integrity: sha512-aZAXGYo6m22Fk1zZzEUKBvut/CIIQe/BapEORnxiD5Qr0kPHqqI69NtEMCme74h+at72sPhbkb4ZrLd1W3KRLA==} 191 - 192 - '@fastify/merge-json-schemas@0.1.1': 193 - resolution: {integrity: sha512-fERDVz7topgNjtXsJTTW1JKLy0rhuLRcquYqNR9rF7OcVpCa2OVW49ZPDIhaRRCaUuvVxI+N416xUoF76HNSXA==} 194 - 195 - '@fastify/websocket@10.0.1': 196 - resolution: {integrity: sha512-8/pQIxTPRD8U94aILTeJ+2O3el/r19+Ej5z1O1mXlqplsUH7KzCjAI0sgd5DM/NoPjAi5qLFNIjgM5+9/rGSNw==} 197 - 198 - '@humanwhocodes/module-importer@1.0.1': 199 - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 200 - engines: {node: '>=12.22'} 201 - 202 - '@humanwhocodes/retry@0.3.0': 203 - resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==} 204 - engines: {node: '>=18.18'} 205 - 206 - '@ipld/car@3.2.4': 207 - resolution: {integrity: sha512-rezKd+jk8AsTGOoJKqzfjLJ3WVft7NZNH95f0pfPbicROvzTyvHCNy567HzSUd6gRXZ9im29z5ZEv9Hw49jSYw==} 208 - 209 - '@ipld/dag-cbor@7.0.3': 210 - resolution: {integrity: sha512-1VVh2huHsuohdXC1bGJNE8WR72slZ9XE2T3wbBBq31dm7ZBatmKLLxrB+XAqafxfRFjv08RZmj/W/ZqaM13AuA==} 211 - 212 - '@noble/curves@1.6.0': 213 - resolution: {integrity: sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==} 214 - engines: {node: ^14.21.3 || >=16} 215 - 216 - '@noble/hashes@1.5.0': 217 - resolution: {integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==} 218 - engines: {node: ^14.21.3 || >=16} 219 - 220 - '@nodelib/fs.scandir@2.1.5': 221 - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 222 - engines: {node: '>= 8'} 223 - 224 - '@nodelib/fs.stat@2.0.5': 225 - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 226 - engines: {node: '>= 8'} 227 - 228 - '@nodelib/fs.walk@1.2.8': 229 - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 230 - engines: {node: '>= 8'} 231 - 232 - '@skyware/firehose@0.3.1': 233 - resolution: {integrity: sha512-krL44TRi3/4Q35AihnZ19WxcoubULets3cxVVVpQJKlOrm6Ups407zjgIh0Y+4mqf0g3HchYD1DHaUdcwc1+Qw==} 234 - 235 - '@skyware/labeler@0.1.6': 236 - resolution: {integrity: sha512-qz1uNetOA+VpXvwu2yu1N5BvSXYcTqodQZ1CW1akHT48hwcSOQIfl9Kdq0afafbKa5YCrEuTJcWNGUM+kSs3Jg==} 237 - hasBin: true 238 - 239 - '@types/better-sqlite3@7.6.11': 240 - resolution: {integrity: sha512-i8KcD3PgGtGBLl3+mMYA8PdKkButvPyARxA7IQAd6qeslht13qxb1zzO8dRCtE7U3IoJS782zDBAeoKiM695kg==} 241 - 242 - '@types/eslint@9.6.1': 243 - resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} 244 - 245 - '@types/eslint__js@8.42.3': 246 - resolution: {integrity: sha512-alfG737uhmPdnvkrLdZLcEKJ/B8s9Y4hrZ+YAdzUeoArBlSUERA2E87ROfOaS4jd/C45fzOoZzidLc1IPwLqOw==} 247 - 248 - '@types/estree@1.0.5': 249 - resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} 250 - 251 - '@types/json-schema@7.0.15': 252 - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 253 - 254 - '@types/node@20.16.5': 255 - resolution: {integrity: sha512-VwYCweNo3ERajwy0IUlqqcyZ8/A7Zwa9ZP3MnENWcB11AejO+tLy3pu850goUW2FC/IJMdZUfKpX/yxL1gymCA==} 256 - 257 - '@types/ws@8.5.12': 258 - resolution: {integrity: sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==} 259 - 260 - '@typescript-eslint/eslint-plugin@8.5.0': 261 - resolution: {integrity: sha512-lHS5hvz33iUFQKuPFGheAB84LwcJ60G8vKnEhnfcK1l8kGVLro2SFYW6K0/tj8FUhRJ0VHyg1oAfg50QGbPPHw==} 262 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 263 - peerDependencies: 264 - '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 265 - eslint: ^8.57.0 || ^9.0.0 266 - typescript: '*' 267 - peerDependenciesMeta: 268 - typescript: 269 - optional: true 270 - 271 - '@typescript-eslint/parser@8.5.0': 272 - resolution: {integrity: sha512-gF77eNv0Xz2UJg/NbpWJ0kqAm35UMsvZf1GHj8D9MRFTj/V3tAciIWXfmPLsAAF/vUlpWPvUDyH1jjsr0cMVWw==} 273 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 274 - peerDependencies: 275 - eslint: ^8.57.0 || ^9.0.0 276 - typescript: '*' 277 - peerDependenciesMeta: 278 - typescript: 279 - optional: true 280 - 281 - '@typescript-eslint/scope-manager@8.5.0': 282 - resolution: {integrity: sha512-06JOQ9Qgj33yvBEx6tpC8ecP9o860rsR22hWMEd12WcTRrfaFgHr2RB/CA/B+7BMhHkXT4chg2MyboGdFGawYg==} 283 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 284 - 285 - '@typescript-eslint/type-utils@8.5.0': 286 - resolution: {integrity: sha512-N1K8Ix+lUM+cIDhL2uekVn/ZD7TZW+9/rwz8DclQpcQ9rk4sIL5CAlBC0CugWKREmDjBzI/kQqU4wkg46jWLYA==} 287 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 288 - peerDependencies: 289 - typescript: '*' 290 - peerDependenciesMeta: 291 - typescript: 292 - optional: true 293 - 294 - '@typescript-eslint/types@8.5.0': 295 - resolution: {integrity: sha512-qjkormnQS5wF9pjSi6q60bKUHH44j2APxfh9TQRXK8wbYVeDYYdYJGIROL87LGZZ2gz3Rbmjc736qyL8deVtdw==} 296 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 297 - 298 - '@typescript-eslint/typescript-estree@8.5.0': 299 - resolution: {integrity: sha512-vEG2Sf9P8BPQ+d0pxdfndw3xIXaoSjliG0/Ejk7UggByZPKXmJmw3GW5jV2gHNQNawBUyfahoSiCFVov0Ruf7Q==} 300 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 301 - peerDependencies: 302 - typescript: '*' 303 - peerDependenciesMeta: 304 - typescript: 305 - optional: true 306 - 307 - '@typescript-eslint/utils@8.5.0': 308 - resolution: {integrity: sha512-6yyGYVL0e+VzGYp60wvkBHiqDWOpT63pdMV2CVG4LVDd5uR6q1qQN/7LafBZtAtNIn/mqXjsSeS5ggv/P0iECw==} 309 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 310 - peerDependencies: 311 - eslint: ^8.57.0 || ^9.0.0 312 - 313 - '@typescript-eslint/visitor-keys@8.5.0': 314 - resolution: {integrity: sha512-yTPqMnbAZJNy2Xq2XU8AdtOW9tJIr+UQb64aXB9f3B1498Zx9JorVgFJcZpEc9UBuCCrdzKID2RGAMkYcDtZOw==} 315 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 316 - 317 - abort-controller@3.0.0: 318 - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} 319 - engines: {node: '>=6.5'} 320 - 321 - abstract-logging@2.0.1: 322 - resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==} 323 - 324 - accepts@1.3.8: 325 - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} 326 - engines: {node: '>= 0.6'} 327 - 328 - acorn-jsx@5.3.2: 329 - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 330 - peerDependencies: 331 - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 332 - 333 - acorn@8.12.1: 334 - resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} 335 - engines: {node: '>=0.4.0'} 336 - hasBin: true 337 - 338 - ajv-formats@2.1.1: 339 - resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} 340 - peerDependencies: 341 - ajv: ^8.0.0 342 - peerDependenciesMeta: 343 - ajv: 344 - optional: true 345 - 346 - ajv-formats@3.0.1: 347 - resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} 348 - peerDependencies: 349 - ajv: ^8.0.0 350 - peerDependenciesMeta: 351 - ajv: 352 - optional: true 353 - 354 - ajv@6.12.6: 355 - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 356 - 357 - ajv@8.17.1: 358 - resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} 359 - 360 - ansi-regex@5.0.1: 361 - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 362 - engines: {node: '>=8'} 363 - 364 - ansi-styles@4.3.0: 365 - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 366 - engines: {node: '>=8'} 367 - 368 - argparse@2.0.1: 369 - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 370 - 371 - array-flatten@1.1.1: 372 - resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} 373 - 374 - asynckit@0.4.0: 375 - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} 376 - 377 - atomic-sleep@1.0.0: 378 - resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} 379 - engines: {node: '>=8.0.0'} 380 - 381 - avvio@8.4.0: 382 - resolution: {integrity: sha512-CDSwaxINFy59iNwhYnkvALBwZiTydGkOecZyPkqBpABYR1KqGEsET0VOOYDwtleZSUIdeY36DC2bSZ24CO1igA==} 383 - 384 - await-lock@2.2.2: 385 - resolution: {integrity: sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw==} 386 - 387 - axios@0.27.2: 388 - resolution: {integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==} 389 - 390 - balanced-match@1.0.2: 391 - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 392 - 393 - base64-js@1.5.1: 394 - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} 395 - 396 - better-sqlite3@11.3.0: 397 - resolution: {integrity: sha512-iHt9j8NPYF3oKCNOO5ZI4JwThjt3Z6J6XrcwG85VNMVzv1ByqrHWv5VILEbCMFWDsoHhXvQ7oC8vgRXFAKgl9w==} 398 - 399 - bindings@1.5.0: 400 - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} 401 - 402 - bl@4.1.0: 403 - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} 404 - 405 - body-parser@1.20.3: 406 - resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} 407 - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} 408 - 409 - brace-expansion@1.1.11: 410 - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 411 - 412 - brace-expansion@2.0.1: 413 - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 414 - 415 - braces@3.0.3: 416 - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 417 - engines: {node: '>=8'} 418 - 419 - buffer@5.7.1: 420 - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} 421 - 422 - buffer@6.0.3: 423 - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} 424 - 425 - bufferutil@4.0.8: 426 - resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} 427 - engines: {node: '>=6.14.2'} 428 - 429 - bytes@3.1.2: 430 - resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} 431 - engines: {node: '>= 0.8'} 432 - 433 - call-bind@1.0.7: 434 - resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} 435 - engines: {node: '>= 0.4'} 436 - 437 - callsites@3.1.0: 438 - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 439 - engines: {node: '>=6'} 440 - 441 - cbor-extract@2.2.0: 442 - resolution: {integrity: sha512-Ig1zM66BjLfTXpNgKpvBePq271BPOvu8MR0Jl080yG7Jsl+wAZunfrwiwA+9ruzm/WEdIV5QF/bjDZTqyAIVHA==} 443 - hasBin: true 444 - 445 - cbor-x@1.6.0: 446 - resolution: {integrity: sha512-0kareyRwHSkL6ws5VXHEf8uY1liitysCVJjlmhaLG+IXLqhSaOO+t63coaso7yjwEzWZzLy8fJo06gZDVQM9Qg==} 447 - 448 - cborg@1.10.2: 449 - resolution: {integrity: sha512-b3tFPA9pUr2zCUiCfRd2+wok2/LBSNUMKOuRRok+WlvvAgEt/PlbgPTsZUcwCOs53IJvLgTp0eotwtosE6njug==} 450 - hasBin: true 451 - 452 - chalk@4.1.2: 453 - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 454 - engines: {node: '>=10'} 455 - 456 - chownr@1.1.4: 457 - resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} 458 - 459 - color-convert@2.0.1: 460 - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 461 - engines: {node: '>=7.0.0'} 462 - 463 - color-name@1.1.4: 464 - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 465 - 466 - combined-stream@1.0.8: 467 - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} 468 - engines: {node: '>= 0.8'} 469 - 470 - concat-map@0.0.1: 471 - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 472 - 473 - content-disposition@0.5.4: 474 - resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} 475 - engines: {node: '>= 0.6'} 476 - 477 - content-type@1.0.5: 478 - resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} 479 - engines: {node: '>= 0.6'} 480 - 481 - cookie-signature@1.0.6: 482 - resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} 483 - 484 - cookie@0.6.0: 485 - resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} 486 - engines: {node: '>= 0.6'} 487 - 488 - cross-spawn@7.0.3: 489 - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 490 - engines: {node: '>= 8'} 491 - 492 - debug@2.6.9: 493 - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} 494 - peerDependencies: 495 - supports-color: '*' 496 - peerDependenciesMeta: 497 - supports-color: 498 - optional: true 499 - 500 - debug@4.3.7: 501 - resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} 502 - engines: {node: '>=6.0'} 503 - peerDependencies: 504 - supports-color: '*' 505 - peerDependenciesMeta: 506 - supports-color: 507 - optional: true 508 - 509 - decompress-response@6.0.0: 510 - resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} 511 - engines: {node: '>=10'} 512 - 513 - deep-extend@0.6.0: 514 - resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} 515 - engines: {node: '>=4.0.0'} 516 - 517 - deep-is@0.1.4: 518 - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 519 - 520 - define-data-property@1.1.4: 521 - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} 522 - engines: {node: '>= 0.4'} 523 - 524 - delayed-stream@1.0.0: 525 - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} 526 - engines: {node: '>=0.4.0'} 527 - 528 - depd@2.0.0: 529 - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} 530 - engines: {node: '>= 0.8'} 531 - 532 - destroy@1.2.0: 533 - resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} 534 - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} 535 - 536 - detect-libc@2.0.3: 537 - resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} 538 - engines: {node: '>=8'} 539 - 540 - dotenv@16.4.5: 541 - resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} 542 - engines: {node: '>=12'} 543 - 544 - duplexify@4.1.3: 545 - resolution: {integrity: sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==} 546 - 547 - ee-first@1.1.1: 548 - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} 549 - 550 - encodeurl@1.0.2: 551 - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} 552 - engines: {node: '>= 0.8'} 553 - 554 - encodeurl@2.0.0: 555 - resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} 556 - engines: {node: '>= 0.8'} 557 - 558 - end-of-stream@1.4.4: 559 - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} 560 - 561 - es-define-property@1.0.0: 562 - resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} 563 - engines: {node: '>= 0.4'} 564 - 565 - es-errors@1.3.0: 566 - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} 567 - engines: {node: '>= 0.4'} 568 - 569 - escape-html@1.0.3: 570 - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} 571 - 572 - escape-string-regexp@4.0.0: 573 - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 574 - engines: {node: '>=10'} 575 - 576 - eslint-scope@8.0.2: 577 - resolution: {integrity: sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==} 578 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 579 - 580 - eslint-visitor-keys@3.4.3: 581 - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 582 - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 583 - 584 - eslint-visitor-keys@4.0.0: 585 - resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} 586 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 587 - 588 - eslint@9.10.0: 589 - resolution: {integrity: sha512-Y4D0IgtBZfOcOUAIQTSXBKoNGfY0REGqHJG6+Q81vNippW5YlKjHFj4soMxamKK1NXHUWuBZTLdU3Km+L/pcHw==} 590 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 591 - hasBin: true 592 - peerDependencies: 593 - jiti: '*' 594 - peerDependenciesMeta: 595 - jiti: 596 - optional: true 597 - 598 - espree@10.1.0: 599 - resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==} 600 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 601 - 602 - esquery@1.6.0: 603 - resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} 604 - engines: {node: '>=0.10'} 605 - 606 - esrecurse@4.3.0: 607 - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 608 - engines: {node: '>=4.0'} 609 - 610 - estraverse@5.3.0: 611 - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 612 - engines: {node: '>=4.0'} 613 - 614 - esutils@2.0.3: 615 - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 616 - engines: {node: '>=0.10.0'} 617 - 618 - etag@1.8.1: 619 - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} 620 - engines: {node: '>= 0.6'} 621 - 622 - event-target-shim@5.0.1: 623 - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} 624 - engines: {node: '>=6'} 625 - 626 - events@3.3.0: 627 - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} 628 - engines: {node: '>=0.8.x'} 629 - 630 - expand-template@2.0.3: 631 - resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} 632 - engines: {node: '>=6'} 633 - 634 - express@4.21.0: 635 - resolution: {integrity: sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==} 636 - engines: {node: '>= 0.10.0'} 637 - 638 - fast-content-type-parse@1.1.0: 639 - resolution: {integrity: sha512-fBHHqSTFLVnR61C+gltJuE5GkVQMV0S2nqUO8TJ+5Z3qAKG8vAx4FKai1s5jq/inV1+sREynIWSuQ6HgoSXpDQ==} 640 - 641 - fast-decode-uri-component@1.0.1: 642 - resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} 643 - 644 - fast-deep-equal@3.1.3: 645 - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 646 - 647 - fast-glob@3.3.2: 648 - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} 649 - engines: {node: '>=8.6.0'} 650 - 651 - fast-json-stable-stringify@2.1.0: 652 - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 653 - 654 - fast-json-stringify@5.16.1: 655 - resolution: {integrity: sha512-KAdnLvy1yu/XrRtP+LJnxbBGrhN+xXu+gt3EUvZhYGKCr3lFHq/7UFJHHFgmJKoqlh6B40bZLEv7w46B0mqn1g==} 656 - 657 - fast-levenshtein@2.0.6: 658 - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 659 - 660 - fast-querystring@1.1.2: 661 - resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} 662 - 663 - fast-redact@3.5.0: 664 - resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} 665 - engines: {node: '>=6'} 666 - 667 - fast-uri@2.4.0: 668 - resolution: {integrity: sha512-ypuAmmMKInk5q7XcepxlnUWDLWv4GFtaJqAzWKqn62IpQ3pejtr5dTVbt3vwqVaMKmkNR55sTT+CqUKIaT21BA==} 669 - 670 - fast-uri@3.0.1: 671 - resolution: {integrity: sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==} 672 - 673 - fastify-plugin@4.5.1: 674 - resolution: {integrity: sha512-stRHYGeuqpEZTL1Ef0Ovr2ltazUT9g844X5z/zEBFLG8RYlpDiOCIG+ATvYEp+/zmc7sN29mcIMp8gvYplYPIQ==} 675 - 676 - fastify@4.28.1: 677 - resolution: {integrity: sha512-kFWUtpNr4i7t5vY2EJPCN2KgMVpuqfU4NjnJNCgiNB900oiDeYqaNDRcAfeBbOF5hGixixxcKnOU4KN9z6QncQ==} 678 - 679 - fastq@1.17.1: 680 - resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} 681 - 682 - file-entry-cache@8.0.0: 683 - resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} 684 - engines: {node: '>=16.0.0'} 685 - 686 - file-uri-to-path@1.0.0: 687 - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} 688 - 689 - fill-range@7.1.1: 690 - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 691 - engines: {node: '>=8'} 692 - 693 - finalhandler@1.3.1: 694 - resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} 695 - engines: {node: '>= 0.8'} 696 - 697 - find-my-way@8.2.0: 698 - resolution: {integrity: sha512-HdWXgFYc6b1BJcOBDBwjqWuHJj1WYiqrxSh25qtU4DabpMFdj/gSunNBQb83t+8Zt67D7CXEzJWTkxaShMTMOA==} 699 - engines: {node: '>=14'} 700 - 701 - find-up@5.0.0: 702 - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 703 - engines: {node: '>=10'} 704 - 705 - flat-cache@4.0.1: 706 - resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} 707 - engines: {node: '>=16'} 708 - 709 - flatted@3.3.1: 710 - resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} 711 - 712 - follow-redirects@1.15.9: 713 - resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} 714 - engines: {node: '>=4.0'} 715 - peerDependencies: 716 - debug: '*' 717 - peerDependenciesMeta: 718 - debug: 719 - optional: true 720 - 721 - form-data@4.0.0: 722 - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} 723 - engines: {node: '>= 6'} 724 - 725 - forwarded@0.2.0: 726 - resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} 727 - engines: {node: '>= 0.6'} 728 - 729 - fp16@0.3.0: 730 - resolution: {integrity: sha512-Iw6hLaH345EETQGU56NiAcJ173IraDRdJrVy+0fBMPdkZhzKNN/k3eqXFyNmnyx2/jnIzF2nr0mHh5nHrQBMEQ==} 731 - 732 - fresh@0.5.2: 733 - resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} 734 - engines: {node: '>= 0.6'} 735 - 736 - fs-constants@1.0.0: 737 - resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} 738 - 739 - function-bind@1.1.2: 740 - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 741 - 742 - get-intrinsic@1.2.4: 743 - resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} 744 - engines: {node: '>= 0.4'} 745 - 746 - github-from-package@0.0.0: 747 - resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} 748 - 749 - glob-parent@5.1.2: 750 - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 751 - engines: {node: '>= 6'} 752 - 753 - glob-parent@6.0.2: 754 - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 755 - engines: {node: '>=10.13.0'} 756 - 757 - globals@14.0.0: 758 - resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} 759 - engines: {node: '>=18'} 760 - 761 - gopd@1.0.1: 762 - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} 763 - 764 - graphemer@1.4.0: 765 - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 766 - 767 - has-flag@4.0.0: 768 - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 769 - engines: {node: '>=8'} 770 - 771 - has-property-descriptors@1.0.2: 772 - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} 773 - 774 - has-proto@1.0.3: 775 - resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} 776 - engines: {node: '>= 0.4'} 777 - 778 - has-symbols@1.0.3: 779 - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} 780 - engines: {node: '>= 0.4'} 781 - 782 - hasown@2.0.2: 783 - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} 784 - engines: {node: '>= 0.4'} 785 - 786 - http-errors@2.0.0: 787 - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} 788 - engines: {node: '>= 0.8'} 789 - 790 - iconv-lite@0.4.24: 791 - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} 792 - engines: {node: '>=0.10.0'} 793 - 794 - ieee754@1.2.1: 795 - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} 796 - 797 - ignore@5.3.2: 798 - resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 799 - engines: {node: '>= 4'} 800 - 801 - import-fresh@3.3.0: 802 - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 803 - engines: {node: '>=6'} 804 - 805 - imurmurhash@0.1.4: 806 - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 807 - engines: {node: '>=0.8.19'} 808 - 809 - inherits@2.0.4: 810 - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 811 - 812 - ini@1.3.8: 813 - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} 814 - 815 - ipaddr.js@1.9.1: 816 - resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} 817 - engines: {node: '>= 0.10'} 818 - 819 - is-extglob@2.1.1: 820 - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 821 - engines: {node: '>=0.10.0'} 822 - 823 - is-glob@4.0.3: 824 - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 825 - engines: {node: '>=0.10.0'} 826 - 827 - is-number@7.0.0: 828 - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 829 - engines: {node: '>=0.12.0'} 830 - 831 - is-path-inside@3.0.3: 832 - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} 833 - engines: {node: '>=8'} 834 - 835 - isexe@2.0.0: 836 - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 837 - 838 - iso-datestring-validator@2.2.2: 839 - resolution: {integrity: sha512-yLEMkBbLZTlVQqOnQ4FiMujR6T4DEcCb1xizmvXS+OxuhwcbtynoosRzdMA69zZCShCNAbi+gJ71FxZBBXx1SA==} 840 - 841 - js-yaml@4.1.0: 842 - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 843 - hasBin: true 844 - 845 - json-buffer@3.0.1: 846 - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 847 - 848 - json-schema-ref-resolver@1.0.1: 849 - resolution: {integrity: sha512-EJAj1pgHc1hxF6vo2Z3s69fMjO1INq6eGHXZ8Z6wCQeldCuwxGK9Sxf4/cScGn3FZubCVUehfWtcDM/PLteCQw==} 850 - 851 - json-schema-traverse@0.4.1: 852 - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 853 - 854 - json-schema-traverse@1.0.0: 855 - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} 856 - 857 - json-stable-stringify-without-jsonify@1.0.1: 858 - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 859 - 860 - keyv@4.5.4: 861 - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 862 - 863 - kleur@3.0.3: 864 - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} 865 - engines: {node: '>=6'} 866 - 867 - levn@0.4.1: 868 - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 869 - engines: {node: '>= 0.8.0'} 870 - 871 - light-my-request@5.13.0: 872 - resolution: {integrity: sha512-9IjUN9ZyCS9pTG+KqTDEQo68Sui2lHsYBrfMyVUTTZ3XhH8PMZq7xO94Kr+eP9dhi/kcKsx4N41p2IXEBil1pQ==} 873 - 874 - locate-path@6.0.0: 875 - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 876 - engines: {node: '>=10'} 877 - 878 - lodash.merge@4.6.2: 879 - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 880 - 881 - media-typer@0.3.0: 882 - resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} 883 - engines: {node: '>= 0.6'} 884 - 885 - merge-descriptors@1.0.3: 886 - resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} 887 - 888 - merge2@1.4.1: 889 - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 890 - engines: {node: '>= 8'} 891 - 892 - methods@1.1.2: 893 - resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} 894 - engines: {node: '>= 0.6'} 895 - 896 - micromatch@4.0.8: 897 - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 898 - engines: {node: '>=8.6'} 899 - 900 - mime-db@1.52.0: 901 - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 902 - engines: {node: '>= 0.6'} 903 - 904 - mime-types@2.1.35: 905 - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 906 - engines: {node: '>= 0.6'} 907 - 908 - mime@1.6.0: 909 - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} 910 - engines: {node: '>=4'} 911 - hasBin: true 912 - 913 - mimic-response@3.1.0: 914 - resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} 915 - engines: {node: '>=10'} 916 - 917 - minimatch@3.1.2: 918 - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 919 - 920 - minimatch@9.0.5: 921 - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 922 - engines: {node: '>=16 || 14 >=14.17'} 923 - 924 - minimist@1.2.8: 925 - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 926 - 927 - mkdirp-classic@0.5.3: 928 - resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} 929 - 930 - ms@2.0.0: 931 - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} 932 - 933 - ms@2.1.3: 934 - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 935 - 936 - multiformats@13.2.2: 937 - resolution: {integrity: sha512-RWI+nyf0q64vyOxL8LbKtjJMki0sogRL/8axvklNtiTM0iFCVtHwME9w6+0P1/v4dQvsIg8A45oT3ka1t/M/+A==} 938 - 939 - multiformats@9.9.0: 940 - resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} 941 - 942 - napi-build-utils@1.0.2: 943 - resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} 944 - 945 - natural-compare@1.4.0: 946 - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 947 - 948 - negotiator@0.6.3: 949 - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} 950 - engines: {node: '>= 0.6'} 951 - 952 - node-abi@3.67.0: 953 - resolution: {integrity: sha512-bLn/fU/ALVBE9wj+p4Y21ZJWYFjUXLXPi/IewyLZkx3ApxKDNBWCKdReeKOtD8dWpOdDCeMyLh6ZewzcLsG2Nw==} 954 - engines: {node: '>=10'} 955 - 956 - node-gyp-build-optional-packages@5.1.1: 957 - resolution: {integrity: sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==} 958 - hasBin: true 959 - 960 - node-gyp-build@4.8.2: 961 - resolution: {integrity: sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw==} 962 - hasBin: true 963 - 964 - object-inspect@1.13.2: 965 - resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} 966 - engines: {node: '>= 0.4'} 967 - 968 - on-exit-leak-free@2.1.2: 969 - resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} 970 - engines: {node: '>=14.0.0'} 971 - 972 - on-finished@2.4.1: 973 - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} 974 - engines: {node: '>= 0.8'} 975 - 976 - once@1.4.0: 977 - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 978 - 979 - optionator@0.9.4: 980 - resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 981 - engines: {node: '>= 0.8.0'} 982 - 983 - p-limit@3.1.0: 984 - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 985 - engines: {node: '>=10'} 986 - 987 - p-locate@5.0.0: 988 - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 989 - engines: {node: '>=10'} 990 - 991 - parent-module@1.0.1: 992 - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 993 - engines: {node: '>=6'} 994 - 995 - parseurl@1.3.3: 996 - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} 997 - engines: {node: '>= 0.8'} 998 - 999 - path-exists@4.0.0: 1000 - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1001 - engines: {node: '>=8'} 1002 - 1003 - path-key@3.1.1: 1004 - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1005 - engines: {node: '>=8'} 1006 - 1007 - path-to-regexp@0.1.10: 1008 - resolution: {integrity: sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==} 1009 - 1010 - picomatch@2.3.1: 1011 - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1012 - engines: {node: '>=8.6'} 1013 - 1014 - pino-abstract-transport@1.2.0: 1015 - resolution: {integrity: sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==} 1016 - 1017 - pino-std-serializers@6.2.2: 1018 - resolution: {integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==} 1019 - 1020 - pino-std-serializers@7.0.0: 1021 - resolution: {integrity: sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==} 1022 - 1023 - pino@8.21.0: 1024 - resolution: {integrity: sha512-ip4qdzjkAyDDZklUaZkcRFb2iA118H9SgRh8yzTkSQK8HilsOJF7rSY8HoW5+I0M46AZgX/pxbprf2vvzQCE0Q==} 1025 - hasBin: true 1026 - 1027 - pino@9.4.0: 1028 - resolution: {integrity: sha512-nbkQb5+9YPhQRz/BeQmrWpEknAaqjpAqRK8NwJpmrX/JHu7JuZC5G1CeAwJDJfGes4h+YihC6in3Q2nGb+Y09w==} 1029 - hasBin: true 1030 - 1031 - prebuild-install@7.1.2: 1032 - resolution: {integrity: sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==} 1033 - engines: {node: '>=10'} 1034 - hasBin: true 1035 - 1036 - prelude-ls@1.2.1: 1037 - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1038 - engines: {node: '>= 0.8.0'} 1039 - 1040 - prettier@3.3.3: 1041 - resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} 1042 - engines: {node: '>=14'} 1043 - hasBin: true 1044 - 1045 - process-warning@3.0.0: 1046 - resolution: {integrity: sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==} 1047 - 1048 - process-warning@4.0.0: 1049 - resolution: {integrity: sha512-/MyYDxttz7DfGMMHiysAsFE4qF+pQYAA8ziO/3NcRVrQ5fSk+Mns4QZA/oRPFzvcqNoVJXQNWNAsdwBXLUkQKw==} 1050 - 1051 - process@0.11.10: 1052 - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} 1053 - engines: {node: '>= 0.6.0'} 1054 - 1055 - prompts@2.4.2: 1056 - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} 1057 - engines: {node: '>= 6'} 1058 - 1059 - proxy-addr@2.0.7: 1060 - resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} 1061 - engines: {node: '>= 0.10'} 1062 - 1063 - pump@3.0.2: 1064 - resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} 1065 - 1066 - punycode@2.3.1: 1067 - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 1068 - engines: {node: '>=6'} 1069 - 1070 - qs@6.13.0: 1071 - resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} 1072 - engines: {node: '>=0.6'} 1073 - 1074 - queue-microtask@1.2.3: 1075 - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1076 - 1077 - quick-format-unescaped@4.0.4: 1078 - resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} 1079 - 1080 - range-parser@1.2.1: 1081 - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} 1082 - engines: {node: '>= 0.6'} 1083 - 1084 - rate-limiter-flexible@2.4.2: 1085 - resolution: {integrity: sha512-rMATGGOdO1suFyf/mI5LYhts71g1sbdhmd6YvdiXO2gJnd42Tt6QS4JUKJKSWVVkMtBacm6l40FR7Trjo6Iruw==} 1086 - 1087 - raw-body@2.5.2: 1088 - resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} 1089 - engines: {node: '>= 0.8'} 1090 - 1091 - rc@1.2.8: 1092 - resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} 1093 - hasBin: true 1094 - 1095 - readable-stream@3.6.2: 1096 - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} 1097 - engines: {node: '>= 6'} 1098 - 1099 - readable-stream@4.5.2: 1100 - resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==} 1101 - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1102 - 1103 - real-require@0.2.0: 1104 - resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} 1105 - engines: {node: '>= 12.13.0'} 1106 - 1107 - require-from-string@2.0.2: 1108 - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} 1109 - engines: {node: '>=0.10.0'} 1110 - 1111 - resolve-from@4.0.0: 1112 - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1113 - engines: {node: '>=4'} 1114 - 1115 - ret@0.4.3: 1116 - resolution: {integrity: sha512-0f4Memo5QP7WQyUEAYUO3esD/XjOc3Zjjg5CPsAq1p8sIu0XPeMbHJemKA0BO7tV0X7+A0FoEpbmHXWxPyD3wQ==} 1117 - engines: {node: '>=10'} 1118 - 1119 - reusify@1.0.4: 1120 - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 1121 - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1122 - 1123 - rfdc@1.4.1: 1124 - resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} 1125 - 1126 - run-parallel@1.2.0: 1127 - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1128 - 1129 - safe-buffer@5.2.1: 1130 - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 1131 - 1132 - safe-regex2@3.1.0: 1133 - resolution: {integrity: sha512-RAAZAGbap2kBfbVhvmnTFv73NWLMvDGOITFYTZBAaY8eR+Ir4ef7Up/e7amo+y1+AH+3PtLkrt9mvcTsG9LXug==} 1134 - 1135 - safe-stable-stringify@2.5.0: 1136 - resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} 1137 - engines: {node: '>=10'} 1138 - 1139 - safer-buffer@2.1.2: 1140 - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 1141 - 1142 - secure-json-parse@2.7.0: 1143 - resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} 1144 - 1145 - semver@7.6.3: 1146 - resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} 1147 - engines: {node: '>=10'} 1148 - hasBin: true 1149 - 1150 - send@0.19.0: 1151 - resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} 1152 - engines: {node: '>= 0.8.0'} 1153 - 1154 - serve-static@1.16.2: 1155 - resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} 1156 - engines: {node: '>= 0.8.0'} 1157 - 1158 - set-cookie-parser@2.7.0: 1159 - resolution: {integrity: sha512-lXLOiqpkUumhRdFF3k1osNXCy9akgx/dyPZ5p8qAg9seJzXr5ZrlqZuWIMuY6ejOsVLE6flJ5/h3lsn57fQ/PQ==} 1160 - 1161 - set-function-length@1.2.2: 1162 - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} 1163 - engines: {node: '>= 0.4'} 1164 - 1165 - setprototypeof@1.2.0: 1166 - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} 1167 - 1168 - shebang-command@2.0.0: 1169 - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1170 - engines: {node: '>=8'} 1171 - 1172 - shebang-regex@3.0.0: 1173 - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1174 - engines: {node: '>=8'} 1175 - 1176 - side-channel@1.0.6: 1177 - resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} 1178 - engines: {node: '>= 0.4'} 1179 - 1180 - simple-concat@1.0.1: 1181 - resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} 1182 - 1183 - simple-get@4.0.1: 1184 - resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} 1185 - 1186 - sisteransi@1.0.5: 1187 - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} 1188 - 1189 - sonic-boom@3.8.1: 1190 - resolution: {integrity: sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg==} 1191 - 1192 - sonic-boom@4.1.0: 1193 - resolution: {integrity: sha512-NGipjjRicyJJ03rPiZCJYjwlsuP2d1/5QUviozRXC7S3WdVWNK5e3Ojieb9CCyfhq2UC+3+SRd9nG3I2lPRvUw==} 1194 - 1195 - split2@4.2.0: 1196 - resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} 1197 - engines: {node: '>= 10.x'} 1198 - 1199 - statuses@2.0.1: 1200 - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} 1201 - engines: {node: '>= 0.8'} 1202 - 1203 - stream-shift@1.0.3: 1204 - resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} 1205 - 1206 - string_decoder@1.3.0: 1207 - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} 1208 - 1209 - strip-ansi@6.0.1: 1210 - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1211 - engines: {node: '>=8'} 1212 - 1213 - strip-json-comments@2.0.1: 1214 - resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} 1215 - engines: {node: '>=0.10.0'} 1216 - 1217 - strip-json-comments@3.1.1: 1218 - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1219 - engines: {node: '>=8'} 1220 - 1221 - supports-color@7.2.0: 1222 - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1223 - engines: {node: '>=8'} 1224 - 1225 - tar-fs@2.1.1: 1226 - resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} 1227 - 1228 - tar-stream@2.2.0: 1229 - resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} 1230 - engines: {node: '>=6'} 1231 - 1232 - text-table@0.2.0: 1233 - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 1234 - 1235 - thread-stream@2.7.0: 1236 - resolution: {integrity: sha512-qQiRWsU/wvNolI6tbbCKd9iKaTnCXsTwVxhhKM6nctPdujTyztjlbUkUTUymidWcMnZ5pWR0ej4a0tjsW021vw==} 1237 - 1238 - thread-stream@3.1.0: 1239 - resolution: {integrity: sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==} 1240 - 1241 - tlds@1.254.0: 1242 - resolution: {integrity: sha512-YY4ei7K7gPGifqNSrfMaPdqTqiHcwYKUJ7zhLqQOK2ildlGgti5TSwJiXXN1YqG17I2GYZh5cZqv2r5fwBUM+w==} 1243 - hasBin: true 1244 - 1245 - to-regex-range@5.0.1: 1246 - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1247 - engines: {node: '>=8.0'} 1248 - 1249 - toad-cache@3.7.0: 1250 - resolution: {integrity: sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw==} 1251 - engines: {node: '>=12'} 1252 - 1253 - toidentifier@1.0.1: 1254 - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} 1255 - engines: {node: '>=0.6'} 1256 - 1257 - ts-api-utils@1.3.0: 1258 - resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} 1259 - engines: {node: '>=16'} 1260 - peerDependencies: 1261 - typescript: '>=4.2.0' 1262 - 1263 - tunnel-agent@0.6.0: 1264 - resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} 1265 - 1266 - type-check@0.4.0: 1267 - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 1268 - engines: {node: '>= 0.8.0'} 1269 - 1270 - type-is@1.6.18: 1271 - resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} 1272 - engines: {node: '>= 0.6'} 1273 - 1274 - typescript-eslint@8.5.0: 1275 - resolution: {integrity: sha512-uD+XxEoSIvqtm4KE97etm32Tn5MfaZWgWfMMREStLxR6JzvHkc2Tkj7zhTEK5XmtpTmKHNnG8Sot6qDfhHtR1Q==} 1276 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1277 - peerDependencies: 1278 - typescript: '*' 1279 - peerDependenciesMeta: 1280 - typescript: 1281 - optional: true 1282 - 1283 - typescript@5.6.2: 1284 - resolution: {integrity: sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==} 1285 - engines: {node: '>=14.17'} 1286 - hasBin: true 1287 - 1288 - uint8arrays@3.0.0: 1289 - resolution: {integrity: sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==} 1290 - 1291 - uint8arrays@5.1.0: 1292 - resolution: {integrity: sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==} 1293 - 1294 - undici-types@6.19.8: 1295 - resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} 1296 - 1297 - unpipe@1.0.0: 1298 - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} 1299 - engines: {node: '>= 0.8'} 1300 - 1301 - uri-js@4.4.1: 1302 - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 1303 - 1304 - util-deprecate@1.0.2: 1305 - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 1306 - 1307 - utils-merge@1.0.1: 1308 - resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} 1309 - engines: {node: '>= 0.4.0'} 1310 - 1311 - varint@6.0.0: 1312 - resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==} 1313 - 1314 - vary@1.1.2: 1315 - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} 1316 - engines: {node: '>= 0.8'} 1317 - 1318 - which@2.0.2: 1319 - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1320 - engines: {node: '>= 8'} 1321 - hasBin: true 1322 - 1323 - word-wrap@1.2.5: 1324 - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 1325 - engines: {node: '>=0.10.0'} 1326 - 1327 - wrappy@1.0.2: 1328 - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 1329 - 1330 - ws@8.18.0: 1331 - resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} 1332 - engines: {node: '>=10.0.0'} 1333 - peerDependencies: 1334 - bufferutil: ^4.0.1 1335 - utf-8-validate: '>=5.0.2' 1336 - peerDependenciesMeta: 1337 - bufferutil: 1338 - optional: true 1339 - utf-8-validate: 1340 - optional: true 1341 - 1342 - yocto-queue@0.1.0: 1343 - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 1344 - engines: {node: '>=10'} 1345 - 1346 - zod@3.21.4: 1347 - resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} 1348 - 1349 - zod@3.23.8: 1350 - resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} 1351 - 1352 - snapshots: 1353 - 1354 - '@atcute/base32@1.0.0': {} 1355 - 1356 - '@atcute/cbor@1.0.1': 1357 - dependencies: 1358 - '@atcute/base32': 1.0.0 1359 - '@atcute/cid': 1.0.0 1360 - fp16: 0.3.0 1361 - 1362 - '@atcute/cid@1.0.0': 1363 - dependencies: 1364 - '@atcute/base32': 1.0.0 1365 - '@atcute/varint': 1.0.0 1366 - 1367 - '@atcute/varint@1.0.0': {} 1368 - 1369 - '@atproto/api@0.13.7': 1370 - dependencies: 1371 - '@atproto/common-web': 0.3.0 1372 - '@atproto/lexicon': 0.4.1 1373 - '@atproto/syntax': 0.3.0 1374 - '@atproto/xrpc': 0.6.2 1375 - await-lock: 2.2.2 1376 - multiformats: 9.9.0 1377 - tlds: 1.254.0 1378 - zod: 3.23.8 1379 - 1380 - '@atproto/common-web@0.2.4': 1381 - dependencies: 1382 - graphemer: 1.4.0 1383 - multiformats: 9.9.0 1384 - uint8arrays: 3.0.0 1385 - zod: 3.23.8 1386 - 1387 - '@atproto/common-web@0.3.0': 1388 - dependencies: 1389 - graphemer: 1.4.0 1390 - multiformats: 9.9.0 1391 - uint8arrays: 3.0.0 1392 - zod: 3.23.8 1393 - 1394 - '@atproto/common@0.3.4': 1395 - dependencies: 1396 - '@atproto/common-web': 0.2.4 1397 - '@ipld/dag-cbor': 7.0.3 1398 - cbor-x: 1.6.0 1399 - iso-datestring-validator: 2.2.2 1400 - multiformats: 9.9.0 1401 - pino: 8.21.0 1402 - zod: 3.21.4 1403 - 1404 - '@atproto/common@0.4.2': 1405 - dependencies: 1406 - '@atproto/common-web': 0.3.0 1407 - '@ipld/dag-cbor': 7.0.3 1408 - cbor-x: 1.6.0 1409 - iso-datestring-validator: 2.2.2 1410 - multiformats: 9.9.0 1411 - pino: 8.21.0 1412 - 1413 - '@atproto/crypto@0.3.0': 1414 - dependencies: 1415 - '@noble/curves': 1.6.0 1416 - '@noble/hashes': 1.5.0 1417 - uint8arrays: 3.0.0 1418 - 1419 - '@atproto/crypto@0.4.1': 1420 - dependencies: 1421 - '@noble/curves': 1.6.0 1422 - '@noble/hashes': 1.5.0 1423 - uint8arrays: 3.0.0 1424 - 1425 - '@atproto/identity@0.3.3': 1426 - dependencies: 1427 - '@atproto/common-web': 0.2.4 1428 - '@atproto/crypto': 0.3.0 1429 - axios: 0.27.2 1430 - transitivePeerDependencies: 1431 - - debug 1432 - 1433 - '@atproto/identity@0.4.1': 1434 - dependencies: 1435 - '@atproto/common-web': 0.3.0 1436 - '@atproto/crypto': 0.4.1 1437 - axios: 0.27.2 1438 - transitivePeerDependencies: 1439 - - debug 1440 - 1441 - '@atproto/lexicon@0.3.3': 1442 - dependencies: 1443 - '@atproto/common-web': 0.2.4 1444 - '@atproto/syntax': 0.2.1 1445 - iso-datestring-validator: 2.2.2 1446 - multiformats: 9.9.0 1447 - zod: 3.23.8 1448 - 1449 - '@atproto/lexicon@0.4.1': 1450 - dependencies: 1451 - '@atproto/common-web': 0.3.0 1452 - '@atproto/syntax': 0.3.0 1453 - iso-datestring-validator: 2.2.2 1454 - multiformats: 9.9.0 1455 - zod: 3.23.8 1456 - 1457 - '@atproto/repo@0.3.9': 1458 - dependencies: 1459 - '@atproto/common': 0.3.4 1460 - '@atproto/common-web': 0.2.4 1461 - '@atproto/crypto': 0.3.0 1462 - '@atproto/identity': 0.3.3 1463 - '@atproto/lexicon': 0.3.3 1464 - '@atproto/syntax': 0.2.1 1465 - '@ipld/car': 3.2.4 1466 - '@ipld/dag-cbor': 7.0.3 1467 - multiformats: 9.9.0 1468 - uint8arrays: 3.0.0 1469 - zod: 3.23.8 1470 - transitivePeerDependencies: 1471 - - debug 1472 - 1473 - '@atproto/syntax@0.2.1': 1474 - dependencies: 1475 - '@atproto/common-web': 0.2.4 1476 - 1477 - '@atproto/syntax@0.3.0': {} 1478 - 1479 - '@atproto/xrpc-server@0.4.4(bufferutil@4.0.8)': 1480 - dependencies: 1481 - '@atproto/common': 0.3.4 1482 - '@atproto/crypto': 0.3.0 1483 - '@atproto/lexicon': 0.3.3 1484 - cbor-x: 1.6.0 1485 - express: 4.21.0 1486 - http-errors: 2.0.0 1487 - mime-types: 2.1.35 1488 - rate-limiter-flexible: 2.4.2 1489 - uint8arrays: 3.0.0 1490 - ws: 8.18.0(bufferutil@4.0.8) 1491 - zod: 3.23.8 1492 - transitivePeerDependencies: 1493 - - bufferutil 1494 - - supports-color 1495 - - utf-8-validate 1496 - 1497 - '@atproto/xrpc-server@0.6.4(bufferutil@4.0.8)': 1498 - dependencies: 1499 - '@atproto/common': 0.4.2 1500 - '@atproto/crypto': 0.4.1 1501 - '@atproto/lexicon': 0.4.1 1502 - '@atproto/xrpc': 0.6.2 1503 - cbor-x: 1.6.0 1504 - express: 4.21.0 1505 - http-errors: 2.0.0 1506 - mime-types: 2.1.35 1507 - rate-limiter-flexible: 2.4.2 1508 - uint8arrays: 3.0.0 1509 - ws: 8.18.0(bufferutil@4.0.8) 1510 - zod: 3.23.8 1511 - transitivePeerDependencies: 1512 - - bufferutil 1513 - - supports-color 1514 - - utf-8-validate 1515 - 1516 - '@atproto/xrpc@0.6.2': 1517 - dependencies: 1518 - '@atproto/lexicon': 0.4.1 1519 - zod: 3.23.8 1520 - 1521 - '@cbor-extract/cbor-extract-darwin-arm64@2.2.0': 1522 - optional: true 1523 - 1524 - '@cbor-extract/cbor-extract-darwin-x64@2.2.0': 1525 - optional: true 1526 - 1527 - '@cbor-extract/cbor-extract-linux-arm64@2.2.0': 1528 - optional: true 1529 - 1530 - '@cbor-extract/cbor-extract-linux-arm@2.2.0': 1531 - optional: true 1532 - 1533 - '@cbor-extract/cbor-extract-linux-x64@2.2.0': 1534 - optional: true 1535 - 1536 - '@cbor-extract/cbor-extract-win32-x64@2.2.0': 1537 - optional: true 1538 - 1539 - '@eslint-community/eslint-utils@4.4.0(eslint@9.10.0)': 1540 - dependencies: 1541 - eslint: 9.10.0 1542 - eslint-visitor-keys: 3.4.3 1543 - 1544 - '@eslint-community/regexpp@4.11.0': {} 1545 - 1546 - '@eslint/config-array@0.18.0': 1547 - dependencies: 1548 - '@eslint/object-schema': 2.1.4 1549 - debug: 4.3.7 1550 - minimatch: 3.1.2 1551 - transitivePeerDependencies: 1552 - - supports-color 1553 - 1554 - '@eslint/eslintrc@3.1.0': 1555 - dependencies: 1556 - ajv: 6.12.6 1557 - debug: 4.3.7 1558 - espree: 10.1.0 1559 - globals: 14.0.0 1560 - ignore: 5.3.2 1561 - import-fresh: 3.3.0 1562 - js-yaml: 4.1.0 1563 - minimatch: 3.1.2 1564 - strip-json-comments: 3.1.1 1565 - transitivePeerDependencies: 1566 - - supports-color 1567 - 1568 - '@eslint/js@9.10.0': {} 1569 - 1570 - '@eslint/object-schema@2.1.4': {} 1571 - 1572 - '@eslint/plugin-kit@0.1.0': 1573 - dependencies: 1574 - levn: 0.4.1 1575 - 1576 - '@fastify/ajv-compiler@3.6.0': 1577 - dependencies: 1578 - ajv: 8.17.1 1579 - ajv-formats: 2.1.1(ajv@8.17.1) 1580 - fast-uri: 2.4.0 1581 - 1582 - '@fastify/error@3.4.1': {} 1583 - 1584 - '@fastify/fast-json-stringify-compiler@4.3.0': 1585 - dependencies: 1586 - fast-json-stringify: 5.16.1 1587 - 1588 - '@fastify/merge-json-schemas@0.1.1': 1589 - dependencies: 1590 - fast-deep-equal: 3.1.3 1591 - 1592 - '@fastify/websocket@10.0.1(bufferutil@4.0.8)': 1593 - dependencies: 1594 - duplexify: 4.1.3 1595 - fastify-plugin: 4.5.1 1596 - ws: 8.18.0(bufferutil@4.0.8) 1597 - transitivePeerDependencies: 1598 - - bufferutil 1599 - - utf-8-validate 1600 - 1601 - '@humanwhocodes/module-importer@1.0.1': {} 1602 - 1603 - '@humanwhocodes/retry@0.3.0': {} 1604 - 1605 - '@ipld/car@3.2.4': 1606 - dependencies: 1607 - '@ipld/dag-cbor': 7.0.3 1608 - multiformats: 9.9.0 1609 - varint: 6.0.0 1610 - 1611 - '@ipld/dag-cbor@7.0.3': 1612 - dependencies: 1613 - cborg: 1.10.2 1614 - multiformats: 9.9.0 1615 - 1616 - '@noble/curves@1.6.0': 1617 - dependencies: 1618 - '@noble/hashes': 1.5.0 1619 - 1620 - '@noble/hashes@1.5.0': {} 1621 - 1622 - '@nodelib/fs.scandir@2.1.5': 1623 - dependencies: 1624 - '@nodelib/fs.stat': 2.0.5 1625 - run-parallel: 1.2.0 1626 - 1627 - '@nodelib/fs.stat@2.0.5': {} 1628 - 1629 - '@nodelib/fs.walk@1.2.8': 1630 - dependencies: 1631 - '@nodelib/fs.scandir': 2.1.5 1632 - fastq: 1.17.1 1633 - 1634 - '@skyware/firehose@0.3.1(bufferutil@4.0.8)': 1635 - dependencies: 1636 - '@atproto/repo': 0.3.9 1637 - '@atproto/xrpc-server': 0.4.4(bufferutil@4.0.8) 1638 - ws: 8.18.0(bufferutil@4.0.8) 1639 - transitivePeerDependencies: 1640 - - bufferutil 1641 - - debug 1642 - - supports-color 1643 - - utf-8-validate 1644 - 1645 - '@skyware/labeler@0.1.6(bufferutil@4.0.8)': 1646 - dependencies: 1647 - '@atcute/cbor': 1.0.1 1648 - '@atproto/api': 0.13.7 1649 - '@atproto/crypto': 0.4.1 1650 - '@atproto/identity': 0.4.1 1651 - '@atproto/xrpc-server': 0.6.4(bufferutil@4.0.8) 1652 - '@fastify/websocket': 10.0.1(bufferutil@4.0.8) 1653 - better-sqlite3: 11.3.0 1654 - fastify: 4.28.1 1655 - prompts: 2.4.2 1656 - uint8arrays: 5.1.0 1657 - transitivePeerDependencies: 1658 - - bufferutil 1659 - - debug 1660 - - supports-color 1661 - - utf-8-validate 1662 - 1663 - '@types/better-sqlite3@7.6.11': 1664 - dependencies: 1665 - '@types/node': 20.16.5 1666 - 1667 - '@types/eslint@9.6.1': 1668 - dependencies: 1669 - '@types/estree': 1.0.5 1670 - '@types/json-schema': 7.0.15 1671 - 1672 - '@types/eslint__js@8.42.3': 1673 - dependencies: 1674 - '@types/eslint': 9.6.1 1675 - 1676 - '@types/estree@1.0.5': {} 1677 - 1678 - '@types/json-schema@7.0.15': {} 1679 - 1680 - '@types/node@20.16.5': 1681 - dependencies: 1682 - undici-types: 6.19.8 1683 - 1684 - '@types/ws@8.5.12': 1685 - dependencies: 1686 - '@types/node': 20.16.5 1687 - 1688 - '@typescript-eslint/eslint-plugin@8.5.0(@typescript-eslint/parser@8.5.0(eslint@9.10.0)(typescript@5.6.2))(eslint@9.10.0)(typescript@5.6.2)': 1689 - dependencies: 1690 - '@eslint-community/regexpp': 4.11.0 1691 - '@typescript-eslint/parser': 8.5.0(eslint@9.10.0)(typescript@5.6.2) 1692 - '@typescript-eslint/scope-manager': 8.5.0 1693 - '@typescript-eslint/type-utils': 8.5.0(eslint@9.10.0)(typescript@5.6.2) 1694 - '@typescript-eslint/utils': 8.5.0(eslint@9.10.0)(typescript@5.6.2) 1695 - '@typescript-eslint/visitor-keys': 8.5.0 1696 - eslint: 9.10.0 1697 - graphemer: 1.4.0 1698 - ignore: 5.3.2 1699 - natural-compare: 1.4.0 1700 - ts-api-utils: 1.3.0(typescript@5.6.2) 1701 - optionalDependencies: 1702 - typescript: 5.6.2 1703 - transitivePeerDependencies: 1704 - - supports-color 1705 - 1706 - '@typescript-eslint/parser@8.5.0(eslint@9.10.0)(typescript@5.6.2)': 1707 - dependencies: 1708 - '@typescript-eslint/scope-manager': 8.5.0 1709 - '@typescript-eslint/types': 8.5.0 1710 - '@typescript-eslint/typescript-estree': 8.5.0(typescript@5.6.2) 1711 - '@typescript-eslint/visitor-keys': 8.5.0 1712 - debug: 4.3.7 1713 - eslint: 9.10.0 1714 - optionalDependencies: 1715 - typescript: 5.6.2 1716 - transitivePeerDependencies: 1717 - - supports-color 1718 - 1719 - '@typescript-eslint/scope-manager@8.5.0': 1720 - dependencies: 1721 - '@typescript-eslint/types': 8.5.0 1722 - '@typescript-eslint/visitor-keys': 8.5.0 1723 - 1724 - '@typescript-eslint/type-utils@8.5.0(eslint@9.10.0)(typescript@5.6.2)': 1725 - dependencies: 1726 - '@typescript-eslint/typescript-estree': 8.5.0(typescript@5.6.2) 1727 - '@typescript-eslint/utils': 8.5.0(eslint@9.10.0)(typescript@5.6.2) 1728 - debug: 4.3.7 1729 - ts-api-utils: 1.3.0(typescript@5.6.2) 1730 - optionalDependencies: 1731 - typescript: 5.6.2 1732 - transitivePeerDependencies: 1733 - - eslint 1734 - - supports-color 1735 - 1736 - '@typescript-eslint/types@8.5.0': {} 1737 - 1738 - '@typescript-eslint/typescript-estree@8.5.0(typescript@5.6.2)': 1739 - dependencies: 1740 - '@typescript-eslint/types': 8.5.0 1741 - '@typescript-eslint/visitor-keys': 8.5.0 1742 - debug: 4.3.7 1743 - fast-glob: 3.3.2 1744 - is-glob: 4.0.3 1745 - minimatch: 9.0.5 1746 - semver: 7.6.3 1747 - ts-api-utils: 1.3.0(typescript@5.6.2) 1748 - optionalDependencies: 1749 - typescript: 5.6.2 1750 - transitivePeerDependencies: 1751 - - supports-color 1752 - 1753 - '@typescript-eslint/utils@8.5.0(eslint@9.10.0)(typescript@5.6.2)': 1754 - dependencies: 1755 - '@eslint-community/eslint-utils': 4.4.0(eslint@9.10.0) 1756 - '@typescript-eslint/scope-manager': 8.5.0 1757 - '@typescript-eslint/types': 8.5.0 1758 - '@typescript-eslint/typescript-estree': 8.5.0(typescript@5.6.2) 1759 - eslint: 9.10.0 1760 - transitivePeerDependencies: 1761 - - supports-color 1762 - - typescript 1763 - 1764 - '@typescript-eslint/visitor-keys@8.5.0': 1765 - dependencies: 1766 - '@typescript-eslint/types': 8.5.0 1767 - eslint-visitor-keys: 3.4.3 1768 - 1769 - abort-controller@3.0.0: 1770 - dependencies: 1771 - event-target-shim: 5.0.1 1772 - 1773 - abstract-logging@2.0.1: {} 1774 - 1775 - accepts@1.3.8: 1776 - dependencies: 1777 - mime-types: 2.1.35 1778 - negotiator: 0.6.3 1779 - 1780 - acorn-jsx@5.3.2(acorn@8.12.1): 1781 - dependencies: 1782 - acorn: 8.12.1 1783 - 1784 - acorn@8.12.1: {} 1785 - 1786 - ajv-formats@2.1.1(ajv@8.17.1): 1787 - optionalDependencies: 1788 - ajv: 8.17.1 1789 - 1790 - ajv-formats@3.0.1(ajv@8.17.1): 1791 - optionalDependencies: 1792 - ajv: 8.17.1 1793 - 1794 - ajv@6.12.6: 1795 - dependencies: 1796 - fast-deep-equal: 3.1.3 1797 - fast-json-stable-stringify: 2.1.0 1798 - json-schema-traverse: 0.4.1 1799 - uri-js: 4.4.1 1800 - 1801 - ajv@8.17.1: 1802 - dependencies: 1803 - fast-deep-equal: 3.1.3 1804 - fast-uri: 3.0.1 1805 - json-schema-traverse: 1.0.0 1806 - require-from-string: 2.0.2 1807 - 1808 - ansi-regex@5.0.1: {} 1809 - 1810 - ansi-styles@4.3.0: 1811 - dependencies: 1812 - color-convert: 2.0.1 1813 - 1814 - argparse@2.0.1: {} 1815 - 1816 - array-flatten@1.1.1: {} 1817 - 1818 - asynckit@0.4.0: {} 1819 - 1820 - atomic-sleep@1.0.0: {} 1821 - 1822 - avvio@8.4.0: 1823 - dependencies: 1824 - '@fastify/error': 3.4.1 1825 - fastq: 1.17.1 1826 - 1827 - await-lock@2.2.2: {} 1828 - 1829 - axios@0.27.2: 1830 - dependencies: 1831 - follow-redirects: 1.15.9 1832 - form-data: 4.0.0 1833 - transitivePeerDependencies: 1834 - - debug 1835 - 1836 - balanced-match@1.0.2: {} 1837 - 1838 - base64-js@1.5.1: {} 1839 - 1840 - better-sqlite3@11.3.0: 1841 - dependencies: 1842 - bindings: 1.5.0 1843 - prebuild-install: 7.1.2 1844 - 1845 - bindings@1.5.0: 1846 - dependencies: 1847 - file-uri-to-path: 1.0.0 1848 - 1849 - bl@4.1.0: 1850 - dependencies: 1851 - buffer: 5.7.1 1852 - inherits: 2.0.4 1853 - readable-stream: 3.6.2 1854 - 1855 - body-parser@1.20.3: 1856 - dependencies: 1857 - bytes: 3.1.2 1858 - content-type: 1.0.5 1859 - debug: 2.6.9 1860 - depd: 2.0.0 1861 - destroy: 1.2.0 1862 - http-errors: 2.0.0 1863 - iconv-lite: 0.4.24 1864 - on-finished: 2.4.1 1865 - qs: 6.13.0 1866 - raw-body: 2.5.2 1867 - type-is: 1.6.18 1868 - unpipe: 1.0.0 1869 - transitivePeerDependencies: 1870 - - supports-color 1871 - 1872 - brace-expansion@1.1.11: 1873 - dependencies: 1874 - balanced-match: 1.0.2 1875 - concat-map: 0.0.1 1876 - 1877 - brace-expansion@2.0.1: 1878 - dependencies: 1879 - balanced-match: 1.0.2 1880 - 1881 - braces@3.0.3: 1882 - dependencies: 1883 - fill-range: 7.1.1 1884 - 1885 - buffer@5.7.1: 1886 - dependencies: 1887 - base64-js: 1.5.1 1888 - ieee754: 1.2.1 1889 - 1890 - buffer@6.0.3: 1891 - dependencies: 1892 - base64-js: 1.5.1 1893 - ieee754: 1.2.1 1894 - 1895 - bufferutil@4.0.8: 1896 - dependencies: 1897 - node-gyp-build: 4.8.2 1898 - 1899 - bytes@3.1.2: {} 1900 - 1901 - call-bind@1.0.7: 1902 - dependencies: 1903 - es-define-property: 1.0.0 1904 - es-errors: 1.3.0 1905 - function-bind: 1.1.2 1906 - get-intrinsic: 1.2.4 1907 - set-function-length: 1.2.2 1908 - 1909 - callsites@3.1.0: {} 1910 - 1911 - cbor-extract@2.2.0: 1912 - dependencies: 1913 - node-gyp-build-optional-packages: 5.1.1 1914 - optionalDependencies: 1915 - '@cbor-extract/cbor-extract-darwin-arm64': 2.2.0 1916 - '@cbor-extract/cbor-extract-darwin-x64': 2.2.0 1917 - '@cbor-extract/cbor-extract-linux-arm': 2.2.0 1918 - '@cbor-extract/cbor-extract-linux-arm64': 2.2.0 1919 - '@cbor-extract/cbor-extract-linux-x64': 2.2.0 1920 - '@cbor-extract/cbor-extract-win32-x64': 2.2.0 1921 - optional: true 1922 - 1923 - cbor-x@1.6.0: 1924 - optionalDependencies: 1925 - cbor-extract: 2.2.0 1926 - 1927 - cborg@1.10.2: {} 1928 - 1929 - chalk@4.1.2: 1930 - dependencies: 1931 - ansi-styles: 4.3.0 1932 - supports-color: 7.2.0 1933 - 1934 - chownr@1.1.4: {} 1935 - 1936 - color-convert@2.0.1: 1937 - dependencies: 1938 - color-name: 1.1.4 1939 - 1940 - color-name@1.1.4: {} 1941 - 1942 - combined-stream@1.0.8: 1943 - dependencies: 1944 - delayed-stream: 1.0.0 1945 - 1946 - concat-map@0.0.1: {} 1947 - 1948 - content-disposition@0.5.4: 1949 - dependencies: 1950 - safe-buffer: 5.2.1 1951 - 1952 - content-type@1.0.5: {} 1953 - 1954 - cookie-signature@1.0.6: {} 1955 - 1956 - cookie@0.6.0: {} 1957 - 1958 - cross-spawn@7.0.3: 1959 - dependencies: 1960 - path-key: 3.1.1 1961 - shebang-command: 2.0.0 1962 - which: 2.0.2 1963 - 1964 - debug@2.6.9: 1965 - dependencies: 1966 - ms: 2.0.0 1967 - 1968 - debug@4.3.7: 1969 - dependencies: 1970 - ms: 2.1.3 1971 - 1972 - decompress-response@6.0.0: 1973 - dependencies: 1974 - mimic-response: 3.1.0 1975 - 1976 - deep-extend@0.6.0: {} 1977 - 1978 - deep-is@0.1.4: {} 1979 - 1980 - define-data-property@1.1.4: 1981 - dependencies: 1982 - es-define-property: 1.0.0 1983 - es-errors: 1.3.0 1984 - gopd: 1.0.1 1985 - 1986 - delayed-stream@1.0.0: {} 1987 - 1988 - depd@2.0.0: {} 1989 - 1990 - destroy@1.2.0: {} 1991 - 1992 - detect-libc@2.0.3: {} 1993 - 1994 - dotenv@16.4.5: {} 1995 - 1996 - duplexify@4.1.3: 1997 - dependencies: 1998 - end-of-stream: 1.4.4 1999 - inherits: 2.0.4 2000 - readable-stream: 3.6.2 2001 - stream-shift: 1.0.3 2002 - 2003 - ee-first@1.1.1: {} 2004 - 2005 - encodeurl@1.0.2: {} 2006 - 2007 - encodeurl@2.0.0: {} 2008 - 2009 - end-of-stream@1.4.4: 2010 - dependencies: 2011 - once: 1.4.0 2012 - 2013 - es-define-property@1.0.0: 2014 - dependencies: 2015 - get-intrinsic: 1.2.4 2016 - 2017 - es-errors@1.3.0: {} 2018 - 2019 - escape-html@1.0.3: {} 2020 - 2021 - escape-string-regexp@4.0.0: {} 2022 - 2023 - eslint-scope@8.0.2: 2024 - dependencies: 2025 - esrecurse: 4.3.0 2026 - estraverse: 5.3.0 2027 - 2028 - eslint-visitor-keys@3.4.3: {} 2029 - 2030 - eslint-visitor-keys@4.0.0: {} 2031 - 2032 - eslint@9.10.0: 2033 - dependencies: 2034 - '@eslint-community/eslint-utils': 4.4.0(eslint@9.10.0) 2035 - '@eslint-community/regexpp': 4.11.0 2036 - '@eslint/config-array': 0.18.0 2037 - '@eslint/eslintrc': 3.1.0 2038 - '@eslint/js': 9.10.0 2039 - '@eslint/plugin-kit': 0.1.0 2040 - '@humanwhocodes/module-importer': 1.0.1 2041 - '@humanwhocodes/retry': 0.3.0 2042 - '@nodelib/fs.walk': 1.2.8 2043 - ajv: 6.12.6 2044 - chalk: 4.1.2 2045 - cross-spawn: 7.0.3 2046 - debug: 4.3.7 2047 - escape-string-regexp: 4.0.0 2048 - eslint-scope: 8.0.2 2049 - eslint-visitor-keys: 4.0.0 2050 - espree: 10.1.0 2051 - esquery: 1.6.0 2052 - esutils: 2.0.3 2053 - fast-deep-equal: 3.1.3 2054 - file-entry-cache: 8.0.0 2055 - find-up: 5.0.0 2056 - glob-parent: 6.0.2 2057 - ignore: 5.3.2 2058 - imurmurhash: 0.1.4 2059 - is-glob: 4.0.3 2060 - is-path-inside: 3.0.3 2061 - json-stable-stringify-without-jsonify: 1.0.1 2062 - lodash.merge: 4.6.2 2063 - minimatch: 3.1.2 2064 - natural-compare: 1.4.0 2065 - optionator: 0.9.4 2066 - strip-ansi: 6.0.1 2067 - text-table: 0.2.0 2068 - transitivePeerDependencies: 2069 - - supports-color 2070 - 2071 - espree@10.1.0: 2072 - dependencies: 2073 - acorn: 8.12.1 2074 - acorn-jsx: 5.3.2(acorn@8.12.1) 2075 - eslint-visitor-keys: 4.0.0 2076 - 2077 - esquery@1.6.0: 2078 - dependencies: 2079 - estraverse: 5.3.0 2080 - 2081 - esrecurse@4.3.0: 2082 - dependencies: 2083 - estraverse: 5.3.0 2084 - 2085 - estraverse@5.3.0: {} 2086 - 2087 - esutils@2.0.3: {} 2088 - 2089 - etag@1.8.1: {} 2090 - 2091 - event-target-shim@5.0.1: {} 2092 - 2093 - events@3.3.0: {} 2094 - 2095 - expand-template@2.0.3: {} 2096 - 2097 - express@4.21.0: 2098 - dependencies: 2099 - accepts: 1.3.8 2100 - array-flatten: 1.1.1 2101 - body-parser: 1.20.3 2102 - content-disposition: 0.5.4 2103 - content-type: 1.0.5 2104 - cookie: 0.6.0 2105 - cookie-signature: 1.0.6 2106 - debug: 2.6.9 2107 - depd: 2.0.0 2108 - encodeurl: 2.0.0 2109 - escape-html: 1.0.3 2110 - etag: 1.8.1 2111 - finalhandler: 1.3.1 2112 - fresh: 0.5.2 2113 - http-errors: 2.0.0 2114 - merge-descriptors: 1.0.3 2115 - methods: 1.1.2 2116 - on-finished: 2.4.1 2117 - parseurl: 1.3.3 2118 - path-to-regexp: 0.1.10 2119 - proxy-addr: 2.0.7 2120 - qs: 6.13.0 2121 - range-parser: 1.2.1 2122 - safe-buffer: 5.2.1 2123 - send: 0.19.0 2124 - serve-static: 1.16.2 2125 - setprototypeof: 1.2.0 2126 - statuses: 2.0.1 2127 - type-is: 1.6.18 2128 - utils-merge: 1.0.1 2129 - vary: 1.1.2 2130 - transitivePeerDependencies: 2131 - - supports-color 2132 - 2133 - fast-content-type-parse@1.1.0: {} 2134 - 2135 - fast-decode-uri-component@1.0.1: {} 2136 - 2137 - fast-deep-equal@3.1.3: {} 2138 - 2139 - fast-glob@3.3.2: 2140 - dependencies: 2141 - '@nodelib/fs.stat': 2.0.5 2142 - '@nodelib/fs.walk': 1.2.8 2143 - glob-parent: 5.1.2 2144 - merge2: 1.4.1 2145 - micromatch: 4.0.8 2146 - 2147 - fast-json-stable-stringify@2.1.0: {} 2148 - 2149 - fast-json-stringify@5.16.1: 2150 - dependencies: 2151 - '@fastify/merge-json-schemas': 0.1.1 2152 - ajv: 8.17.1 2153 - ajv-formats: 3.0.1(ajv@8.17.1) 2154 - fast-deep-equal: 3.1.3 2155 - fast-uri: 2.4.0 2156 - json-schema-ref-resolver: 1.0.1 2157 - rfdc: 1.4.1 2158 - 2159 - fast-levenshtein@2.0.6: {} 2160 - 2161 - fast-querystring@1.1.2: 2162 - dependencies: 2163 - fast-decode-uri-component: 1.0.1 2164 - 2165 - fast-redact@3.5.0: {} 2166 - 2167 - fast-uri@2.4.0: {} 2168 - 2169 - fast-uri@3.0.1: {} 2170 - 2171 - fastify-plugin@4.5.1: {} 2172 - 2173 - fastify@4.28.1: 2174 - dependencies: 2175 - '@fastify/ajv-compiler': 3.6.0 2176 - '@fastify/error': 3.4.1 2177 - '@fastify/fast-json-stringify-compiler': 4.3.0 2178 - abstract-logging: 2.0.1 2179 - avvio: 8.4.0 2180 - fast-content-type-parse: 1.1.0 2181 - fast-json-stringify: 5.16.1 2182 - find-my-way: 8.2.0 2183 - light-my-request: 5.13.0 2184 - pino: 9.4.0 2185 - process-warning: 3.0.0 2186 - proxy-addr: 2.0.7 2187 - rfdc: 1.4.1 2188 - secure-json-parse: 2.7.0 2189 - semver: 7.6.3 2190 - toad-cache: 3.7.0 2191 - 2192 - fastq@1.17.1: 2193 - dependencies: 2194 - reusify: 1.0.4 2195 - 2196 - file-entry-cache@8.0.0: 2197 - dependencies: 2198 - flat-cache: 4.0.1 2199 - 2200 - file-uri-to-path@1.0.0: {} 2201 - 2202 - fill-range@7.1.1: 2203 - dependencies: 2204 - to-regex-range: 5.0.1 2205 - 2206 - finalhandler@1.3.1: 2207 - dependencies: 2208 - debug: 2.6.9 2209 - encodeurl: 2.0.0 2210 - escape-html: 1.0.3 2211 - on-finished: 2.4.1 2212 - parseurl: 1.3.3 2213 - statuses: 2.0.1 2214 - unpipe: 1.0.0 2215 - transitivePeerDependencies: 2216 - - supports-color 2217 - 2218 - find-my-way@8.2.0: 2219 - dependencies: 2220 - fast-deep-equal: 3.1.3 2221 - fast-querystring: 1.1.2 2222 - safe-regex2: 3.1.0 2223 - 2224 - find-up@5.0.0: 2225 - dependencies: 2226 - locate-path: 6.0.0 2227 - path-exists: 4.0.0 2228 - 2229 - flat-cache@4.0.1: 2230 - dependencies: 2231 - flatted: 3.3.1 2232 - keyv: 4.5.4 2233 - 2234 - flatted@3.3.1: {} 2235 - 2236 - follow-redirects@1.15.9: {} 2237 - 2238 - form-data@4.0.0: 2239 - dependencies: 2240 - asynckit: 0.4.0 2241 - combined-stream: 1.0.8 2242 - mime-types: 2.1.35 2243 - 2244 - forwarded@0.2.0: {} 2245 - 2246 - fp16@0.3.0: {} 2247 - 2248 - fresh@0.5.2: {} 2249 - 2250 - fs-constants@1.0.0: {} 2251 - 2252 - function-bind@1.1.2: {} 2253 - 2254 - get-intrinsic@1.2.4: 2255 - dependencies: 2256 - es-errors: 1.3.0 2257 - function-bind: 1.1.2 2258 - has-proto: 1.0.3 2259 - has-symbols: 1.0.3 2260 - hasown: 2.0.2 2261 - 2262 - github-from-package@0.0.0: {} 2263 - 2264 - glob-parent@5.1.2: 2265 - dependencies: 2266 - is-glob: 4.0.3 2267 - 2268 - glob-parent@6.0.2: 2269 - dependencies: 2270 - is-glob: 4.0.3 2271 - 2272 - globals@14.0.0: {} 2273 - 2274 - gopd@1.0.1: 2275 - dependencies: 2276 - get-intrinsic: 1.2.4 2277 - 2278 - graphemer@1.4.0: {} 2279 - 2280 - has-flag@4.0.0: {} 2281 - 2282 - has-property-descriptors@1.0.2: 2283 - dependencies: 2284 - es-define-property: 1.0.0 2285 - 2286 - has-proto@1.0.3: {} 2287 - 2288 - has-symbols@1.0.3: {} 2289 - 2290 - hasown@2.0.2: 2291 - dependencies: 2292 - function-bind: 1.1.2 2293 - 2294 - http-errors@2.0.0: 2295 - dependencies: 2296 - depd: 2.0.0 2297 - inherits: 2.0.4 2298 - setprototypeof: 1.2.0 2299 - statuses: 2.0.1 2300 - toidentifier: 1.0.1 2301 - 2302 - iconv-lite@0.4.24: 2303 - dependencies: 2304 - safer-buffer: 2.1.2 2305 - 2306 - ieee754@1.2.1: {} 2307 - 2308 - ignore@5.3.2: {} 2309 - 2310 - import-fresh@3.3.0: 2311 - dependencies: 2312 - parent-module: 1.0.1 2313 - resolve-from: 4.0.0 2314 - 2315 - imurmurhash@0.1.4: {} 2316 - 2317 - inherits@2.0.4: {} 2318 - 2319 - ini@1.3.8: {} 2320 - 2321 - ipaddr.js@1.9.1: {} 2322 - 2323 - is-extglob@2.1.1: {} 2324 - 2325 - is-glob@4.0.3: 2326 - dependencies: 2327 - is-extglob: 2.1.1 2328 - 2329 - is-number@7.0.0: {} 2330 - 2331 - is-path-inside@3.0.3: {} 2332 - 2333 - isexe@2.0.0: {} 2334 - 2335 - iso-datestring-validator@2.2.2: {} 2336 - 2337 - js-yaml@4.1.0: 2338 - dependencies: 2339 - argparse: 2.0.1 2340 - 2341 - json-buffer@3.0.1: {} 2342 - 2343 - json-schema-ref-resolver@1.0.1: 2344 - dependencies: 2345 - fast-deep-equal: 3.1.3 2346 - 2347 - json-schema-traverse@0.4.1: {} 2348 - 2349 - json-schema-traverse@1.0.0: {} 2350 - 2351 - json-stable-stringify-without-jsonify@1.0.1: {} 2352 - 2353 - keyv@4.5.4: 2354 - dependencies: 2355 - json-buffer: 3.0.1 2356 - 2357 - kleur@3.0.3: {} 2358 - 2359 - levn@0.4.1: 2360 - dependencies: 2361 - prelude-ls: 1.2.1 2362 - type-check: 0.4.0 2363 - 2364 - light-my-request@5.13.0: 2365 - dependencies: 2366 - cookie: 0.6.0 2367 - process-warning: 3.0.0 2368 - set-cookie-parser: 2.7.0 2369 - 2370 - locate-path@6.0.0: 2371 - dependencies: 2372 - p-locate: 5.0.0 2373 - 2374 - lodash.merge@4.6.2: {} 2375 - 2376 - media-typer@0.3.0: {} 2377 - 2378 - merge-descriptors@1.0.3: {} 2379 - 2380 - merge2@1.4.1: {} 2381 - 2382 - methods@1.1.2: {} 2383 - 2384 - micromatch@4.0.8: 2385 - dependencies: 2386 - braces: 3.0.3 2387 - picomatch: 2.3.1 2388 - 2389 - mime-db@1.52.0: {} 2390 - 2391 - mime-types@2.1.35: 2392 - dependencies: 2393 - mime-db: 1.52.0 2394 - 2395 - mime@1.6.0: {} 2396 - 2397 - mimic-response@3.1.0: {} 2398 - 2399 - minimatch@3.1.2: 2400 - dependencies: 2401 - brace-expansion: 1.1.11 2402 - 2403 - minimatch@9.0.5: 2404 - dependencies: 2405 - brace-expansion: 2.0.1 2406 - 2407 - minimist@1.2.8: {} 2408 - 2409 - mkdirp-classic@0.5.3: {} 2410 - 2411 - ms@2.0.0: {} 2412 - 2413 - ms@2.1.3: {} 2414 - 2415 - multiformats@13.2.2: {} 2416 - 2417 - multiformats@9.9.0: {} 2418 - 2419 - napi-build-utils@1.0.2: {} 2420 - 2421 - natural-compare@1.4.0: {} 2422 - 2423 - negotiator@0.6.3: {} 2424 - 2425 - node-abi@3.67.0: 2426 - dependencies: 2427 - semver: 7.6.3 2428 - 2429 - node-gyp-build-optional-packages@5.1.1: 2430 - dependencies: 2431 - detect-libc: 2.0.3 2432 - optional: true 2433 - 2434 - node-gyp-build@4.8.2: {} 2435 - 2436 - object-inspect@1.13.2: {} 2437 - 2438 - on-exit-leak-free@2.1.2: {} 2439 - 2440 - on-finished@2.4.1: 2441 - dependencies: 2442 - ee-first: 1.1.1 2443 - 2444 - once@1.4.0: 2445 - dependencies: 2446 - wrappy: 1.0.2 2447 - 2448 - optionator@0.9.4: 2449 - dependencies: 2450 - deep-is: 0.1.4 2451 - fast-levenshtein: 2.0.6 2452 - levn: 0.4.1 2453 - prelude-ls: 1.2.1 2454 - type-check: 0.4.0 2455 - word-wrap: 1.2.5 2456 - 2457 - p-limit@3.1.0: 2458 - dependencies: 2459 - yocto-queue: 0.1.0 2460 - 2461 - p-locate@5.0.0: 2462 - dependencies: 2463 - p-limit: 3.1.0 2464 - 2465 - parent-module@1.0.1: 2466 - dependencies: 2467 - callsites: 3.1.0 2468 - 2469 - parseurl@1.3.3: {} 2470 - 2471 - path-exists@4.0.0: {} 2472 - 2473 - path-key@3.1.1: {} 2474 - 2475 - path-to-regexp@0.1.10: {} 2476 - 2477 - picomatch@2.3.1: {} 2478 - 2479 - pino-abstract-transport@1.2.0: 2480 - dependencies: 2481 - readable-stream: 4.5.2 2482 - split2: 4.2.0 2483 - 2484 - pino-std-serializers@6.2.2: {} 2485 - 2486 - pino-std-serializers@7.0.0: {} 2487 - 2488 - pino@8.21.0: 2489 - dependencies: 2490 - atomic-sleep: 1.0.0 2491 - fast-redact: 3.5.0 2492 - on-exit-leak-free: 2.1.2 2493 - pino-abstract-transport: 1.2.0 2494 - pino-std-serializers: 6.2.2 2495 - process-warning: 3.0.0 2496 - quick-format-unescaped: 4.0.4 2497 - real-require: 0.2.0 2498 - safe-stable-stringify: 2.5.0 2499 - sonic-boom: 3.8.1 2500 - thread-stream: 2.7.0 2501 - 2502 - pino@9.4.0: 2503 - dependencies: 2504 - atomic-sleep: 1.0.0 2505 - fast-redact: 3.5.0 2506 - on-exit-leak-free: 2.1.2 2507 - pino-abstract-transport: 1.2.0 2508 - pino-std-serializers: 7.0.0 2509 - process-warning: 4.0.0 2510 - quick-format-unescaped: 4.0.4 2511 - real-require: 0.2.0 2512 - safe-stable-stringify: 2.5.0 2513 - sonic-boom: 4.1.0 2514 - thread-stream: 3.1.0 2515 - 2516 - prebuild-install@7.1.2: 2517 - dependencies: 2518 - detect-libc: 2.0.3 2519 - expand-template: 2.0.3 2520 - github-from-package: 0.0.0 2521 - minimist: 1.2.8 2522 - mkdirp-classic: 0.5.3 2523 - napi-build-utils: 1.0.2 2524 - node-abi: 3.67.0 2525 - pump: 3.0.2 2526 - rc: 1.2.8 2527 - simple-get: 4.0.1 2528 - tar-fs: 2.1.1 2529 - tunnel-agent: 0.6.0 2530 - 2531 - prelude-ls@1.2.1: {} 2532 - 2533 - prettier@3.3.3: {} 2534 - 2535 - process-warning@3.0.0: {} 2536 - 2537 - process-warning@4.0.0: {} 2538 - 2539 - process@0.11.10: {} 2540 - 2541 - prompts@2.4.2: 2542 - dependencies: 2543 - kleur: 3.0.3 2544 - sisteransi: 1.0.5 2545 - 2546 - proxy-addr@2.0.7: 2547 - dependencies: 2548 - forwarded: 0.2.0 2549 - ipaddr.js: 1.9.1 2550 - 2551 - pump@3.0.2: 2552 - dependencies: 2553 - end-of-stream: 1.4.4 2554 - once: 1.4.0 2555 - 2556 - punycode@2.3.1: {} 2557 - 2558 - qs@6.13.0: 2559 - dependencies: 2560 - side-channel: 1.0.6 2561 - 2562 - queue-microtask@1.2.3: {} 2563 - 2564 - quick-format-unescaped@4.0.4: {} 2565 - 2566 - range-parser@1.2.1: {} 2567 - 2568 - rate-limiter-flexible@2.4.2: {} 2569 - 2570 - raw-body@2.5.2: 2571 - dependencies: 2572 - bytes: 3.1.2 2573 - http-errors: 2.0.0 2574 - iconv-lite: 0.4.24 2575 - unpipe: 1.0.0 2576 - 2577 - rc@1.2.8: 2578 - dependencies: 2579 - deep-extend: 0.6.0 2580 - ini: 1.3.8 2581 - minimist: 1.2.8 2582 - strip-json-comments: 2.0.1 2583 - 2584 - readable-stream@3.6.2: 2585 - dependencies: 2586 - inherits: 2.0.4 2587 - string_decoder: 1.3.0 2588 - util-deprecate: 1.0.2 2589 - 2590 - readable-stream@4.5.2: 2591 - dependencies: 2592 - abort-controller: 3.0.0 2593 - buffer: 6.0.3 2594 - events: 3.3.0 2595 - process: 0.11.10 2596 - string_decoder: 1.3.0 2597 - 2598 - real-require@0.2.0: {} 2599 - 2600 - require-from-string@2.0.2: {} 2601 - 2602 - resolve-from@4.0.0: {} 2603 - 2604 - ret@0.4.3: {} 2605 - 2606 - reusify@1.0.4: {} 2607 - 2608 - rfdc@1.4.1: {} 2609 - 2610 - run-parallel@1.2.0: 2611 - dependencies: 2612 - queue-microtask: 1.2.3 2613 - 2614 - safe-buffer@5.2.1: {} 2615 - 2616 - safe-regex2@3.1.0: 2617 - dependencies: 2618 - ret: 0.4.3 2619 - 2620 - safe-stable-stringify@2.5.0: {} 2621 - 2622 - safer-buffer@2.1.2: {} 2623 - 2624 - secure-json-parse@2.7.0: {} 2625 - 2626 - semver@7.6.3: {} 2627 - 2628 - send@0.19.0: 2629 - dependencies: 2630 - debug: 2.6.9 2631 - depd: 2.0.0 2632 - destroy: 1.2.0 2633 - encodeurl: 1.0.2 2634 - escape-html: 1.0.3 2635 - etag: 1.8.1 2636 - fresh: 0.5.2 2637 - http-errors: 2.0.0 2638 - mime: 1.6.0 2639 - ms: 2.1.3 2640 - on-finished: 2.4.1 2641 - range-parser: 1.2.1 2642 - statuses: 2.0.1 2643 - transitivePeerDependencies: 2644 - - supports-color 2645 - 2646 - serve-static@1.16.2: 2647 - dependencies: 2648 - encodeurl: 2.0.0 2649 - escape-html: 1.0.3 2650 - parseurl: 1.3.3 2651 - send: 0.19.0 2652 - transitivePeerDependencies: 2653 - - supports-color 2654 - 2655 - set-cookie-parser@2.7.0: {} 2656 - 2657 - set-function-length@1.2.2: 2658 - dependencies: 2659 - define-data-property: 1.1.4 2660 - es-errors: 1.3.0 2661 - function-bind: 1.1.2 2662 - get-intrinsic: 1.2.4 2663 - gopd: 1.0.1 2664 - has-property-descriptors: 1.0.2 2665 - 2666 - setprototypeof@1.2.0: {} 2667 - 2668 - shebang-command@2.0.0: 2669 - dependencies: 2670 - shebang-regex: 3.0.0 2671 - 2672 - shebang-regex@3.0.0: {} 2673 - 2674 - side-channel@1.0.6: 2675 - dependencies: 2676 - call-bind: 1.0.7 2677 - es-errors: 1.3.0 2678 - get-intrinsic: 1.2.4 2679 - object-inspect: 1.13.2 2680 - 2681 - simple-concat@1.0.1: {} 2682 - 2683 - simple-get@4.0.1: 2684 - dependencies: 2685 - decompress-response: 6.0.0 2686 - once: 1.4.0 2687 - simple-concat: 1.0.1 2688 - 2689 - sisteransi@1.0.5: {} 2690 - 2691 - sonic-boom@3.8.1: 2692 - dependencies: 2693 - atomic-sleep: 1.0.0 2694 - 2695 - sonic-boom@4.1.0: 2696 - dependencies: 2697 - atomic-sleep: 1.0.0 2698 - 2699 - split2@4.2.0: {} 2700 - 2701 - statuses@2.0.1: {} 2702 - 2703 - stream-shift@1.0.3: {} 2704 - 2705 - string_decoder@1.3.0: 2706 - dependencies: 2707 - safe-buffer: 5.2.1 2708 - 2709 - strip-ansi@6.0.1: 2710 - dependencies: 2711 - ansi-regex: 5.0.1 2712 - 2713 - strip-json-comments@2.0.1: {} 2714 - 2715 - strip-json-comments@3.1.1: {} 2716 - 2717 - supports-color@7.2.0: 2718 - dependencies: 2719 - has-flag: 4.0.0 2720 - 2721 - tar-fs@2.1.1: 2722 - dependencies: 2723 - chownr: 1.1.4 2724 - mkdirp-classic: 0.5.3 2725 - pump: 3.0.2 2726 - tar-stream: 2.2.0 2727 - 2728 - tar-stream@2.2.0: 2729 - dependencies: 2730 - bl: 4.1.0 2731 - end-of-stream: 1.4.4 2732 - fs-constants: 1.0.0 2733 - inherits: 2.0.4 2734 - readable-stream: 3.6.2 2735 - 2736 - text-table@0.2.0: {} 2737 - 2738 - thread-stream@2.7.0: 2739 - dependencies: 2740 - real-require: 0.2.0 2741 - 2742 - thread-stream@3.1.0: 2743 - dependencies: 2744 - real-require: 0.2.0 2745 - 2746 - tlds@1.254.0: {} 2747 - 2748 - to-regex-range@5.0.1: 2749 - dependencies: 2750 - is-number: 7.0.0 2751 - 2752 - toad-cache@3.7.0: {} 2753 - 2754 - toidentifier@1.0.1: {} 2755 - 2756 - ts-api-utils@1.3.0(typescript@5.6.2): 2757 - dependencies: 2758 - typescript: 5.6.2 2759 - 2760 - tunnel-agent@0.6.0: 2761 - dependencies: 2762 - safe-buffer: 5.2.1 2763 - 2764 - type-check@0.4.0: 2765 - dependencies: 2766 - prelude-ls: 1.2.1 2767 - 2768 - type-is@1.6.18: 2769 - dependencies: 2770 - media-typer: 0.3.0 2771 - mime-types: 2.1.35 2772 - 2773 - typescript-eslint@8.5.0(eslint@9.10.0)(typescript@5.6.2): 2774 - dependencies: 2775 - '@typescript-eslint/eslint-plugin': 8.5.0(@typescript-eslint/parser@8.5.0(eslint@9.10.0)(typescript@5.6.2))(eslint@9.10.0)(typescript@5.6.2) 2776 - '@typescript-eslint/parser': 8.5.0(eslint@9.10.0)(typescript@5.6.2) 2777 - '@typescript-eslint/utils': 8.5.0(eslint@9.10.0)(typescript@5.6.2) 2778 - optionalDependencies: 2779 - typescript: 5.6.2 2780 - transitivePeerDependencies: 2781 - - eslint 2782 - - supports-color 2783 - 2784 - typescript@5.6.2: {} 2785 - 2786 - uint8arrays@3.0.0: 2787 - dependencies: 2788 - multiformats: 9.9.0 2789 - 2790 - uint8arrays@5.1.0: 2791 - dependencies: 2792 - multiformats: 13.2.2 2793 - 2794 - undici-types@6.19.8: {} 2795 - 2796 - unpipe@1.0.0: {} 2797 - 2798 - uri-js@4.4.1: 2799 - dependencies: 2800 - punycode: 2.3.1 2801 - 2802 - util-deprecate@1.0.2: {} 2803 - 2804 - utils-merge@1.0.1: {} 2805 - 2806 - varint@6.0.0: {} 2807 - 2808 - vary@1.1.2: {} 2809 - 2810 - which@2.0.2: 2811 - dependencies: 2812 - isexe: 2.0.0 2813 - 2814 - word-wrap@1.2.5: {} 2815 - 2816 - wrappy@1.0.2: {} 2817 - 2818 - ws@8.18.0(bufferutil@4.0.8): 2819 - optionalDependencies: 2820 - bufferutil: 4.0.8 2821 - 2822 - yocto-queue@0.1.0: {} 2823 - 2824 - zod@3.21.4: {} 2825 - 2826 - zod@3.23.8: {}
+4 -2
src/constants.ts
··· 3 3 4 4 export const DID = process.env.DID ?? ''; 5 5 export const SIGNING_KEY = process.env.SIGNING_KEY ?? ''; 6 - export const PORT = process.env.PORT ? parseInt(process.env.PORT, 10) : 4002; 7 - export const RELAY = process.env.RELAY ?? "ws://localhost:6008/subscribe"; 6 + export const PORT = process.env.PORT ? Number(process.env.PORT) : 4002; 7 + export const METRICS_PORT = process.env.METRICS_PORT ? Number(process.env.METRICS_PORT) : 4102; 8 + export const FIREHOSE_URL = process.env.FIREHOSE_URL ?? 'wss://jetstream.atproto.tools/subscribe'; 9 + export const WANTED_COLLECTION = 'app.bsky.feed.like'; 8 10 export const DELETE = '3l3lu2lrpkl2a'; 9 11 10 12 export const SIGNS: SignsRecord = {
+7 -3
src/label.ts
··· 1 1 import { AppBskyActorDefs, ComAtprotoLabelDefs } from '@atproto/api'; 2 - import { DID, PORT, SIGNS, SIGNING_KEY, DELETE } from './constants.js'; 2 + import { LabelerServer } from '@skyware/labeler'; 3 + 4 + import { DELETE, DID, PORT, SIGNING_KEY, SIGNS } from './constants.js'; 3 5 import { CATEGORY_PREFIXES } from './types.js'; 4 6 import type { Category } from './types.js'; 5 - import { LabelerServer } from '@skyware/labeler'; 6 7 7 8 const server = new LabelerServer({ did: DID, signingKey: SIGNING_KEY }); 8 9 ··· 45 46 46 47 for (const category of categories) { 47 48 console.group(`Category: ${category}`); 48 - const prefix = category === 'sun' ? 'aaa-' : category === 'moon' ? 'bbb-' : 'ccc-'; 49 + const prefix = 50 + category === 'sun' ? 'aaa-' 51 + : category === 'moon' ? 'bbb-' 52 + : 'ccc-'; 49 53 const query = server.db 50 54 .prepare< 51 55 unknown[],
+19
src/logger.ts
··· 1 + import { pino } from 'pino'; 2 + 3 + const logger = pino({ 4 + level: process.env.LOG_LEVEL ?? 'info', 5 + transport: 6 + process.env.NODE_ENV !== 'production' ? 7 + { 8 + target: 'pino-pretty', 9 + options: { 10 + colorize: true, 11 + translateTime: 'SYS:standard', 12 + ignore: 'pid,hostname', 13 + }, 14 + } 15 + : undefined, 16 + timestamp: pino.stdTimeFunctions.isoTime, 17 + }); 18 + 19 + export default logger;
+53 -51
src/main.ts
··· 1 - import { label } from './label.js'; 2 - import { DID, RELAY } from './constants.js'; 3 - import { EventStream } from './types.js'; 1 + import { CommitCreateEvent, Jetstream } from '@skyware/jetstream'; 4 2 import fs from 'node:fs'; 5 - import { URL } from 'node:url'; 6 - import WebSocket from 'ws'; 7 3 8 - const subscribe = () => { 9 - let cursor = 0; 10 - let intervalID: NodeJS.Timeout; 11 - let cursorFile: string; 4 + import { DID, FIREHOSE_URL, METRICS_PORT, WANTED_COLLECTION } from './constants.js'; 5 + import { label } from './label.js'; 6 + import logger from './logger.js'; 7 + import { startMetricsServer } from './metrics.js'; 12 8 13 - try { 14 - cursorFile = fs.readFileSync('cursor.txt', 'utf8'); 15 - } catch (error) { 16 - if (error instanceof Error && 'code' in error && error.code === 'ENOENT') { 17 - cursorFile = (BigInt(Date.now()) * 1000n).toString(); 18 - fs.writeFileSync('cursor.txt', cursorFile, 'utf8'); 19 - } else { 20 - console.error(error); 21 - process.exit(1); 22 - } 9 + let cursor = 0; 10 + // eslint-disable-next-line @typescript-eslint/no-unused-vars 11 + let cursorUpdateInterval: NodeJS.Timeout; 12 + let cursorFile: string; 13 + 14 + try { 15 + cursorFile = fs.readFileSync('cursor.txt', 'utf8'); 16 + } catch (error) { 17 + if (error instanceof Error && 'code' in error && error.code === 'ENOENT') { 18 + cursorFile = (BigInt(Date.now()) * 1000n).toString(); 19 + fs.writeFileSync('cursor.txt', cursorFile, 'utf8'); 20 + } else { 21 + console.error(error); 22 + process.exit(1); 23 23 } 24 + } 24 25 25 - const relayURL = new URL(RELAY); 26 - relayURL.searchParams.set('cursor', cursorFile); 27 - const ws = new WebSocket(relayURL.toString()); 28 - console.log(`Connected to Jetstream at cursor ${cursorFile}`); 26 + const jetstream = new Jetstream({ 27 + wantedCollections: [WANTED_COLLECTION], 28 + endpoint: FIREHOSE_URL, 29 + cursor: cursor.toString(), 30 + }); 29 31 30 - ws.on('error', (err) => { 31 - console.error(err); 32 - }); 32 + jetstream.on('open', () => { 33 + logger.info('Connected to Jetstream'); 34 + cursorUpdateInterval = setInterval(() => { 35 + console.log(`Cursor updated at ${new Date().toISOString()} to: ${cursor}`); 36 + fs.writeFile('cursor.txt', cursor.toString(), (err) => { 37 + if (err) console.log(err); 38 + }); 39 + }, 10000); 40 + }); 33 41 34 - ws.on('open', () => { 35 - intervalID = setInterval(() => { 36 - console.log(`${new Date().toISOString()}: ${cursor}`); 37 - fs.writeFile('cursor.txt', cursor.toString(), (err) => { 38 - if (err) console.log(err); 39 - }); 40 - }, 60000); 41 - }); 42 + jetstream.on('close', () => { 43 + logger.info('Jetstream connection closed.'); 44 + }); 42 45 43 - ws.on('close', () => { 44 - clearInterval(intervalID); 45 - }); 46 + jetstream.on('error', (error) => { 47 + logger.error(`Jetstream error: ${error.message}`); 48 + }); 46 49 47 - ws.on('message', (data: WebSocket.RawData) => { 48 - if (data instanceof Buffer) { 49 - const event: EventStream = JSON.parse(data.toString()) as EventStream; 50 - cursor = event.time_us; 51 - // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition 52 - if (event.commit?.record?.subject?.uri?.includes(`${DID}/app.bsky.feed.post`)) 53 - label(event.did, event.commit.record.subject.uri.split('/').pop()!).catch((error: unknown) => { 54 - console.error(`Unexpected error labeling ${event.did}:`); 55 - console.error(error); 56 - }); 57 - } 58 - }); 59 - }; 50 + jetstream.onCreate(WANTED_COLLECTION, (event: CommitCreateEvent<typeof WANTED_COLLECTION>) => { 51 + cursor = event.time_us; 52 + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition 53 + if (event.commit?.record?.subject?.uri?.includes(DID)) { 54 + label(event.did, event.commit.record.subject.uri.split('/').pop()!).catch((error: unknown) => { 55 + console.error(`Unexpected error labeling ${event.did}:`); 56 + console.error(error); 57 + }); 58 + } 59 + }); 60 60 61 - subscribe(); 61 + jetstream.start(); 62 + 63 + startMetricsServer(METRICS_PORT);
+29
src/metrics.ts
··· 1 + import express from 'express'; 2 + import { Registry, collectDefaultMetrics } from 'prom-client'; 3 + 4 + import logger from './logger.js'; 5 + 6 + const register = new Registry(); 7 + collectDefaultMetrics({ register }); 8 + 9 + const app = express(); 10 + 11 + app.get('/metrics', (req, res) => { 12 + register 13 + .metrics() 14 + .then((metrics) => { 15 + res.set('Content-Type', register.contentType); 16 + res.send(metrics); 17 + }) 18 + .catch((ex: unknown) => { 19 + logger.error(`Error serving metrics: ${(ex as Error).message}`); 20 + res.status(500).end((ex as Error).message); 21 + }); 22 + }); 23 + 24 + export const startMetricsServer = (port: number, host = '127.0.0.1') => { 25 + const server = app.listen(port, host, () => { 26 + logger.info(`Metrics server listening on port ${port}`); 27 + }); 28 + return server; 29 + };
+3 -2
src/set-labels.ts
··· 1 - import { setLabelerLabelDefinitions, type LoginCredentials } from '@skyware/labeler/scripts'; 2 1 import { type ComAtprotoLabelDefs } from '@atproto/api'; 2 + import { type LoginCredentials, setLabelerLabelDefinitions } from '@skyware/labeler/scripts'; 3 + import 'dotenv/config'; 4 + 3 5 import { SIGNS } from './constants.js'; 4 - import 'dotenv/config'; 5 6 6 7 const loginCredentials: LoginCredentials = { 7 8 identifier: process.env.BSKY_IDENTIFIER!,
+1 -1
tsconfig.json
··· 6 6 "moduleResolution": "NodeNext", 7 7 "allowSyntheticDefaultImports": true, 8 8 "esModuleInterop": true, 9 - "types": ["node", "ws"] 9 + "types": ["node"] 10 10 } 11 11 }