this repo has no description
0
fork

Configure Feed

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

Initial commit.

alice b2364d2c

+16908
+6
.env.example
··· 1 + FEEDGEN_PORT=3000 2 + DATABASE_URL="postgresql://foo:bar@localhost:5432/baz" 3 + FEEDGEN_SUBSCRIPTION_ENDPOINT="wss://bsky.social" 4 + FEEDGEN_HOSTNAME= 5 + HANDLE= 6 + PASSWORD=
+17
.eslintrc.json
··· 1 + { 2 + "env": { 3 + "es2021": true, 4 + "node": true 5 + }, 6 + "extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended"], 7 + "overrides": [], 8 + "parser": "@typescript-eslint/parser", 9 + "parserOptions": { 10 + "ecmaVersion": "latest", 11 + "sourceType": "module" 12 + }, 13 + "plugins": ["@typescript-eslint"], 14 + "rules": { 15 + "@typescript-eslint/no-non-null-assertion": "off" 16 + } 17 + }
+133
.gitignore
··· 1 + # Logs 2 + logs 3 + *.log 4 + npm-debug.log* 5 + yarn-debug.log* 6 + yarn-error.log* 7 + lerna-debug.log* 8 + .pnpm-debug.log* 9 + 10 + # Diagnostic reports (https://nodejs.org/api/report.html) 11 + report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 12 + 13 + # Runtime data 14 + pids 15 + *.pid 16 + *.seed 17 + *.pid.lock 18 + 19 + # Directory for instrumented libs generated by jscoverage/JSCover 20 + lib-cov 21 + 22 + # Coverage directory used by tools like istanbul 23 + coverage 24 + *.lcov 25 + 26 + # nyc test coverage 27 + .nyc_output 28 + 29 + # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 30 + .grunt 31 + 32 + # Bower dependency directory (https://bower.io/) 33 + bower_components 34 + 35 + # node-waf configuration 36 + .lock-wscript 37 + 38 + # Compiled binary addons (https://nodejs.org/api/addons.html) 39 + build/Release 40 + 41 + # Dependency directories 42 + node_modules/ 43 + jspm_packages/ 44 + 45 + # Snowpack dependency directory (https://snowpack.dev/) 46 + web_modules/ 47 + 48 + # TypeScript cache 49 + *.tsbuildinfo 50 + 51 + # Optional npm cache directory 52 + .npm 53 + 54 + # Optional eslint cache 55 + .eslintcache 56 + 57 + # Optional stylelint cache 58 + .stylelintcache 59 + 60 + # Microbundle cache 61 + .rpt2_cache/ 62 + .rts2_cache_cjs/ 63 + .rts2_cache_es/ 64 + .rts2_cache_umd/ 65 + 66 + # Optional REPL history 67 + .node_repl_history 68 + 69 + # Output of 'npm pack' 70 + *.tgz 71 + 72 + # Yarn Integrity file 73 + .yarn-integrity 74 + 75 + # dotenv environment variable files 76 + .env 77 + .env.development.local 78 + .env.test.local 79 + .env.production.local 80 + .env.local 81 + 82 + # parcel-bundler cache (https://parceljs.org/) 83 + .cache 84 + .parcel-cache 85 + 86 + # Next.js build output 87 + .next 88 + out 89 + 90 + # Nuxt.js build / generate output 91 + .nuxt 92 + dist 93 + 94 + # Gatsby files 95 + .cache/ 96 + # Comment in the public line in if your project uses Gatsby and not Next.js 97 + # https://nextjs.org/blog/next-9-1#public-directory-support 98 + # public 99 + 100 + # vuepress build output 101 + .vuepress/dist 102 + 103 + # vuepress v2.x temp and cache directory 104 + .temp 105 + .cache 106 + 107 + # Docusaurus cache and generated files 108 + .docusaurus 109 + 110 + # Serverless directories 111 + .serverless/ 112 + 113 + # FuseBox cache 114 + .fusebox/ 115 + 116 + # DynamoDB Local files 117 + .dynamodb/ 118 + 119 + # TernJS port file 120 + .tern-port 121 + 122 + # Stores VSCode versions used for testing VSCode extensions 123 + .vscode-test 124 + 125 + # yarn v2 126 + .yarn/cache 127 + .yarn/unplugged 128 + .yarn/build-state.yml 129 + .yarn/install-state.gz 130 + .pnp.* 131 + .vercel 132 + 133 + vps-setup.txt
+14
.prettierrc
··· 1 + { 2 + "trailingComma": "all", 3 + "tabWidth": 2, 4 + "semi": false, 5 + "singleQuote": true, 6 + "overrides": [ 7 + { 8 + "files": "*.hbs", 9 + "options": { 10 + "singleQuote": false 11 + } 12 + } 13 + ] 14 + }
+12
Caddyfile
··· 1 + (vercel) { 2 + tls { 3 + dns vercel {env.VERCEL_API_TOKEN} 4 + } 5 + } 6 + feeds.bsky.sh { 7 + reverse_proxy :3000 8 + import vercel 9 + log { 10 + output file {env.LOG_FILE} 11 + } 12 + }
+6
README.md
··· 1 + # Who's Alice 2 + 3 + A custom feed for Bluesky featuring all the Alices. 4 + 5 + Local URL: http://localhost:3000/xrpc/app.bsky.feed.getFeedSkeleton?feed=at://did:web:feeds.bsky.sh/app.bsky.feed.generator/whos-eepy 6 + Prod URL: http://feeds.bsky.sh/xrpc/app.bsky.feed.getFeedSkeleton?feed=at://did:web:feeds.bsky.sh/app.bsky.feed.generator/whos-eepy
+38
package.json
··· 1 + { 2 + "name": "whos-eepy", 3 + "version": "1.0.0", 4 + "description": "eepy girls (gender-neutral)", 5 + "main": "index.js", 6 + "repository": "git@github.com:bluesky-social/feed-generator.git", 7 + "author": "alice <aliceisjustplaying@gmail.com>", 8 + "license": "MIT", 9 + "scripts": { 10 + "publishFeed": "ts-node scripts/publishFeedGen.ts", 11 + "start": "ts-node src/index.ts", 12 + "start-prod": "node dist/index.js", 13 + "build": "tsc" 14 + }, 15 + "dependencies": { 16 + "@atproto/api": "^0.3.8", 17 + "@atproto/did-resolver": "^0.1.0", 18 + "@atproto/lexicon": "^0.1.0", 19 + "@atproto/repo": "^0.1.0", 20 + "@atproto/xrpc-server": "^0.2.0", 21 + "dotenv": "^16.0.3", 22 + "express": "^4.18.2", 23 + "kysely": "^0.22.0", 24 + "multiformats": "^9.9.0", 25 + "pg": "^8.11.0" 26 + }, 27 + "devDependencies": { 28 + "@flydotio/dockerfile": "^0.2.7", 29 + "@types/express": "^4.17.17", 30 + "@types/node": "^20.2.5", 31 + "@types/pg": "^8.10.1", 32 + "@typescript-eslint/eslint-plugin": "^5.59.7", 33 + "@typescript-eslint/parser": "^5.59.7", 34 + "eslint": "^8.41.0", 35 + "ts-node": "^10.9.1", 36 + "typescript": "^5.0.4" 37 + } 38 + }
+2326
pnpm-lock.yaml
··· 1 + lockfileVersion: '6.1' 2 + 3 + settings: 4 + autoInstallPeers: true 5 + excludeLinksFromLockfile: false 6 + 7 + dependencies: 8 + '@atproto/api': 9 + specifier: ^0.3.8 10 + version: 0.3.8 11 + '@atproto/did-resolver': 12 + specifier: ^0.1.0 13 + version: 0.1.0 14 + '@atproto/lexicon': 15 + specifier: ^0.1.0 16 + version: 0.1.0 17 + '@atproto/repo': 18 + specifier: ^0.1.0 19 + version: 0.1.0 20 + '@atproto/xrpc-server': 21 + specifier: ^0.2.0 22 + version: 0.2.0 23 + dotenv: 24 + specifier: ^16.0.3 25 + version: 16.0.3 26 + express: 27 + specifier: ^4.18.2 28 + version: 4.18.2 29 + kysely: 30 + specifier: ^0.22.0 31 + version: 0.22.0 32 + multiformats: 33 + specifier: ^9.9.0 34 + version: 9.9.0 35 + pg: 36 + specifier: ^8.11.0 37 + version: 8.11.0 38 + 39 + devDependencies: 40 + '@flydotio/dockerfile': 41 + specifier: ^0.2.7 42 + version: 0.2.7 43 + '@types/express': 44 + specifier: ^4.17.17 45 + version: 4.17.17 46 + '@types/node': 47 + specifier: ^20.2.5 48 + version: 20.2.5 49 + '@types/pg': 50 + specifier: ^8.10.1 51 + version: 8.10.1 52 + '@typescript-eslint/eslint-plugin': 53 + specifier: ^5.59.7 54 + version: 5.59.7(@typescript-eslint/parser@5.59.7)(eslint@8.41.0)(typescript@5.0.4) 55 + '@typescript-eslint/parser': 56 + specifier: ^5.59.7 57 + version: 5.59.7(eslint@8.41.0)(typescript@5.0.4) 58 + eslint: 59 + specifier: ^8.41.0 60 + version: 8.41.0 61 + ts-node: 62 + specifier: ^10.9.1 63 + version: 10.9.1(@types/node@20.2.5)(typescript@5.0.4) 64 + typescript: 65 + specifier: ^5.0.4 66 + version: 5.0.4 67 + 68 + packages: 69 + 70 + /@atproto/api@0.3.8: 71 + resolution: {integrity: sha512-7qaIZGEP5J9FW4z8bXezzAmLRzHSXXHo6bWP9Jyu5MLp8tYt9vG6yR2N0QA7GvO0xSYqP87Q5vblPjYXGqtDKg==} 72 + dependencies: 73 + '@atproto/common-web': 0.1.0 74 + '@atproto/uri': 0.0.2 75 + '@atproto/xrpc': 0.1.0 76 + tlds: 1.238.0 77 + typed-emitter: 2.1.0 78 + dev: false 79 + 80 + /@atproto/common-web@0.1.0: 81 + resolution: {integrity: sha512-qD6xF60hvH+cP++fk/mt+0S9cxs94KsK+rNWypNlgnlp7r9By4ltXwtDSR/DNTA8mwDeularUno4VbTd2IWIzA==} 82 + dependencies: 83 + multiformats: 9.9.0 84 + uint8arrays: 3.0.0 85 + zod: 3.21.4 86 + dev: false 87 + 88 + /@atproto/common@0.2.0: 89 + resolution: {integrity: sha512-PVYSC30pyonz2MOxuBLk27uGdwyZQ42gJfCA/NE9jLeuenVDmZnVrK5WqJ7eGg+F88rZj7NcGfRsZdP0GMykEQ==} 90 + dependencies: 91 + '@atproto/common-web': 0.1.0 92 + '@ipld/dag-cbor': 7.0.3 93 + cbor-x: 1.5.3 94 + multiformats: 9.9.0 95 + pino: 8.14.1 96 + dev: false 97 + 98 + /@atproto/crypto@0.1.1: 99 + resolution: {integrity: sha512-/7Ntn55dRZPtCnOd6dVo1IvZzpVut6YTAkZ8iFry9JW29l7ZeNkJd+NTnmWRz3aGQody10jngb4SNxQNi/f3+A==} 100 + dependencies: 101 + '@noble/secp256k1': 1.7.1 102 + big-integer: 1.6.51 103 + multiformats: 9.9.0 104 + one-webcrypto: 1.0.3 105 + uint8arrays: 3.0.0 106 + dev: false 107 + 108 + /@atproto/did-resolver@0.1.0: 109 + resolution: {integrity: sha512-ztljyMMCqXvJSi/Qqa2zEQFvOm1AUUR7Bybr3cM1BCddbhW46gk6/g8BgdZeDt2sMBdye37qTctR9O/FjhigvQ==} 110 + dependencies: 111 + '@atproto/common-web': 0.1.0 112 + '@atproto/crypto': 0.1.1 113 + axios: 0.27.2 114 + zod: 3.21.4 115 + transitivePeerDependencies: 116 + - debug 117 + dev: false 118 + 119 + /@atproto/identifier@0.1.0: 120 + resolution: {integrity: sha512-3LV7+4E6S0k8Rru7NBkyDF6Zf6NHVUXVS9d4l9fiXWMC49ghZMjq0vPmz80xjG1rRuFdJFbpRf4ApFciGxLIyQ==} 121 + dependencies: 122 + '@atproto/common-web': 0.1.0 123 + dev: false 124 + 125 + /@atproto/lexicon@0.1.0: 126 + resolution: {integrity: sha512-Iy+gV9w42xLhrZrmcbZh7VFoHjXuzWvecGHIfz44owNjjv7aE/d2P5BbOX/XicSkmQ8Qkpg0BqwYDD1XBVS+DQ==} 127 + dependencies: 128 + '@atproto/common-web': 0.1.0 129 + '@atproto/identifier': 0.1.0 130 + '@atproto/nsid': 0.0.1 131 + '@atproto/uri': 0.0.2 132 + iso-datestring-validator: 2.2.2 133 + multiformats: 9.9.0 134 + zod: 3.21.4 135 + dev: false 136 + 137 + /@atproto/nsid@0.0.1: 138 + resolution: {integrity: sha512-t5M6/CzWBVYoBbIvfKDpqPj/+ZmyoK9ydZSStcTXosJ27XXwOPhz0VDUGKK2SM9G5Y7TPes8S5KTAU0UdVYFCw==} 139 + dev: false 140 + 141 + /@atproto/repo@0.1.0: 142 + resolution: {integrity: sha512-O4qs5WfSjEFvUtpOTB4n9cLcK6YP/w/ly6Qxc3S8IFevLGYX58NPPr5zlg3dxs64uLKbWWjzhQM7JAqO44MEKw==} 143 + dependencies: 144 + '@atproto/common': 0.2.0 145 + '@atproto/crypto': 0.1.1 146 + '@atproto/did-resolver': 0.1.0 147 + '@atproto/lexicon': 0.1.0 148 + '@atproto/nsid': 0.0.1 149 + '@ipld/car': 3.2.4 150 + '@ipld/dag-cbor': 7.0.3 151 + multiformats: 9.9.0 152 + uint8arrays: 3.0.0 153 + zod: 3.21.4 154 + transitivePeerDependencies: 155 + - debug 156 + dev: false 157 + 158 + /@atproto/uri@0.0.2: 159 + resolution: {integrity: sha512-/6otLZF7BLpT9suSdHuXLbL12nINcWPsLmcOI+dctqovWUjH+XIRVNXDQgBYSrPVetxMiknuEwWelmnA33AEXg==} 160 + dependencies: 161 + '@atproto/identifier': 0.1.0 162 + '@atproto/nsid': 0.0.1 163 + dev: false 164 + 165 + /@atproto/xrpc-server@0.2.0: 166 + resolution: {integrity: sha512-sCJuVUIb1tDIlKCFwHPRHbAgEy0HYGlQ7XhpNqMRKXECh8Z+DRICEne3gLDVaXhyNaC/N7OjHcsyuofDDbuGFQ==} 167 + dependencies: 168 + '@atproto/common': 0.2.0 169 + '@atproto/crypto': 0.1.1 170 + '@atproto/lexicon': 0.1.0 171 + cbor-x: 1.5.3 172 + express: 4.18.2 173 + http-errors: 2.0.0 174 + mime-types: 2.1.35 175 + uint8arrays: 3.0.0 176 + ws: 8.13.0 177 + zod: 3.21.4 178 + transitivePeerDependencies: 179 + - bufferutil 180 + - supports-color 181 + - utf-8-validate 182 + dev: false 183 + 184 + /@atproto/xrpc@0.1.0: 185 + resolution: {integrity: sha512-LhBeZkQwPezjEtricGYnG62udFglOqlnmMSS0KyWgEAPi4KMp4H2F4jNoXcf5NPtZ9S4N4hJaErHX4PJYv2lfA==} 186 + dependencies: 187 + '@atproto/lexicon': 0.1.0 188 + zod: 3.21.4 189 + dev: false 190 + 191 + /@cbor-extract/cbor-extract-darwin-arm64@2.1.1: 192 + resolution: {integrity: sha512-blVBy5MXz6m36Vx0DfLd7PChOQKEs8lK2bD1WJn/vVgG4FXZiZmZb2GECHFvVPA5T7OnODd9xZiL3nMCv6QUhA==} 193 + cpu: [arm64] 194 + os: [darwin] 195 + requiresBuild: true 196 + dev: false 197 + optional: true 198 + 199 + /@cbor-extract/cbor-extract-darwin-x64@2.1.1: 200 + resolution: {integrity: sha512-h6KFOzqk8jXTvkOftyRIWGrd7sKQzQv2jVdTL9nKSf3D2drCvQB/LHUxAOpPXo3pv2clDtKs3xnHalpEh3rDsw==} 201 + cpu: [x64] 202 + os: [darwin] 203 + requiresBuild: true 204 + dev: false 205 + optional: true 206 + 207 + /@cbor-extract/cbor-extract-linux-arm64@2.1.1: 208 + resolution: {integrity: sha512-SxAaRcYf8S0QHaMc7gvRSiTSr7nUYMqbUdErBEu+HYA4Q6UNydx1VwFE68hGcp1qvxcy9yT5U7gA+a5XikfwSQ==} 209 + cpu: [arm64] 210 + os: [linux] 211 + requiresBuild: true 212 + dev: false 213 + optional: true 214 + 215 + /@cbor-extract/cbor-extract-linux-arm@2.1.1: 216 + resolution: {integrity: sha512-ds0uikdcIGUjPyraV4oJqyVE5gl/qYBpa/Wnh6l6xLE2lj/hwnjT2XcZCChdXwW/YFZ1LUHs6waoYN8PmK0nKQ==} 217 + cpu: [arm] 218 + os: [linux] 219 + requiresBuild: true 220 + dev: false 221 + optional: true 222 + 223 + /@cbor-extract/cbor-extract-linux-x64@2.1.1: 224 + resolution: {integrity: sha512-GVK+8fNIE9lJQHAlhOROYiI0Yd4bAZ4u++C2ZjlkS3YmO6hi+FUxe6Dqm+OKWTcMpL/l71N6CQAmaRcb4zyJuA==} 225 + cpu: [x64] 226 + os: [linux] 227 + requiresBuild: true 228 + dev: false 229 + optional: true 230 + 231 + /@cbor-extract/cbor-extract-win32-x64@2.1.1: 232 + resolution: {integrity: sha512-2Niq1C41dCRIDeD8LddiH+mxGlO7HJ612Ll3D/E73ZWBmycued+8ghTr/Ho3CMOWPUEr08XtyBMVXAjqF+TcKw==} 233 + cpu: [x64] 234 + os: [win32] 235 + requiresBuild: true 236 + dev: false 237 + optional: true 238 + 239 + /@cspotcode/source-map-support@0.8.1: 240 + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} 241 + engines: {node: '>=12'} 242 + dependencies: 243 + '@jridgewell/trace-mapping': 0.3.9 244 + dev: true 245 + 246 + /@eslint-community/eslint-utils@4.4.0(eslint@8.41.0): 247 + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} 248 + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 249 + peerDependencies: 250 + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 251 + dependencies: 252 + eslint: 8.41.0 253 + eslint-visitor-keys: 3.4.1 254 + dev: true 255 + 256 + /@eslint-community/regexpp@4.5.1: 257 + resolution: {integrity: sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==} 258 + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 259 + dev: true 260 + 261 + /@eslint/eslintrc@2.0.3: 262 + resolution: {integrity: sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==} 263 + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 264 + dependencies: 265 + ajv: 6.12.6 266 + debug: 4.3.4 267 + espree: 9.5.2 268 + globals: 13.20.0 269 + ignore: 5.2.4 270 + import-fresh: 3.3.0 271 + js-yaml: 4.1.0 272 + minimatch: 3.1.2 273 + strip-json-comments: 3.1.1 274 + transitivePeerDependencies: 275 + - supports-color 276 + dev: true 277 + 278 + /@eslint/js@8.41.0: 279 + resolution: {integrity: sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA==} 280 + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 281 + dev: true 282 + 283 + /@flydotio/dockerfile@0.2.7: 284 + resolution: {integrity: sha512-zyDKhwjKfgFfrLgKrty1yrD6fU+YMJgUys9DcyCdIE9Ceg1A3IdZ/TiU6OsCh87RNEFEpRpZEI3aSXKQv+KJyw==} 285 + engines: {node: '>=16.0.0'} 286 + hasBin: true 287 + dependencies: 288 + chalk: 5.2.0 289 + diff: 5.1.0 290 + ejs: 3.1.9 291 + shell-quote: 1.8.1 292 + yargs: 17.7.2 293 + dev: true 294 + 295 + /@humanwhocodes/config-array@0.11.8: 296 + resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} 297 + engines: {node: '>=10.10.0'} 298 + dependencies: 299 + '@humanwhocodes/object-schema': 1.2.1 300 + debug: 4.3.4 301 + minimatch: 3.1.2 302 + transitivePeerDependencies: 303 + - supports-color 304 + dev: true 305 + 306 + /@humanwhocodes/module-importer@1.0.1: 307 + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 308 + engines: {node: '>=12.22'} 309 + dev: true 310 + 311 + /@humanwhocodes/object-schema@1.2.1: 312 + resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} 313 + dev: true 314 + 315 + /@ipld/car@3.2.4: 316 + resolution: {integrity: sha512-rezKd+jk8AsTGOoJKqzfjLJ3WVft7NZNH95f0pfPbicROvzTyvHCNy567HzSUd6gRXZ9im29z5ZEv9Hw49jSYw==} 317 + dependencies: 318 + '@ipld/dag-cbor': 7.0.3 319 + multiformats: 9.9.0 320 + varint: 6.0.0 321 + dev: false 322 + 323 + /@ipld/dag-cbor@7.0.3: 324 + resolution: {integrity: sha512-1VVh2huHsuohdXC1bGJNE8WR72slZ9XE2T3wbBBq31dm7ZBatmKLLxrB+XAqafxfRFjv08RZmj/W/ZqaM13AuA==} 325 + dependencies: 326 + cborg: 1.10.2 327 + multiformats: 9.9.0 328 + dev: false 329 + 330 + /@jridgewell/resolve-uri@3.1.1: 331 + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} 332 + engines: {node: '>=6.0.0'} 333 + dev: true 334 + 335 + /@jridgewell/sourcemap-codec@1.4.15: 336 + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 337 + dev: true 338 + 339 + /@jridgewell/trace-mapping@0.3.9: 340 + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} 341 + dependencies: 342 + '@jridgewell/resolve-uri': 3.1.1 343 + '@jridgewell/sourcemap-codec': 1.4.15 344 + dev: true 345 + 346 + /@noble/secp256k1@1.7.1: 347 + resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==} 348 + dev: false 349 + 350 + /@nodelib/fs.scandir@2.1.5: 351 + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 352 + engines: {node: '>= 8'} 353 + dependencies: 354 + '@nodelib/fs.stat': 2.0.5 355 + run-parallel: 1.2.0 356 + dev: true 357 + 358 + /@nodelib/fs.stat@2.0.5: 359 + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 360 + engines: {node: '>= 8'} 361 + dev: true 362 + 363 + /@nodelib/fs.walk@1.2.8: 364 + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 365 + engines: {node: '>= 8'} 366 + dependencies: 367 + '@nodelib/fs.scandir': 2.1.5 368 + fastq: 1.15.0 369 + dev: true 370 + 371 + /@tsconfig/node10@1.0.9: 372 + resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} 373 + dev: true 374 + 375 + /@tsconfig/node12@1.0.11: 376 + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} 377 + dev: true 378 + 379 + /@tsconfig/node14@1.0.3: 380 + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} 381 + dev: true 382 + 383 + /@tsconfig/node16@1.0.4: 384 + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} 385 + dev: true 386 + 387 + /@types/body-parser@1.19.2: 388 + resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} 389 + dependencies: 390 + '@types/connect': 3.4.35 391 + '@types/node': 20.2.5 392 + dev: true 393 + 394 + /@types/connect@3.4.35: 395 + resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} 396 + dependencies: 397 + '@types/node': 20.2.5 398 + dev: true 399 + 400 + /@types/express-serve-static-core@4.17.35: 401 + resolution: {integrity: sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==} 402 + dependencies: 403 + '@types/node': 20.2.5 404 + '@types/qs': 6.9.7 405 + '@types/range-parser': 1.2.4 406 + '@types/send': 0.17.1 407 + dev: true 408 + 409 + /@types/express@4.17.17: 410 + resolution: {integrity: sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==} 411 + dependencies: 412 + '@types/body-parser': 1.19.2 413 + '@types/express-serve-static-core': 4.17.35 414 + '@types/qs': 6.9.7 415 + '@types/serve-static': 1.15.1 416 + dev: true 417 + 418 + /@types/json-schema@7.0.12: 419 + resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} 420 + dev: true 421 + 422 + /@types/mime@1.3.2: 423 + resolution: {integrity: sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==} 424 + dev: true 425 + 426 + /@types/mime@3.0.1: 427 + resolution: {integrity: sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==} 428 + dev: true 429 + 430 + /@types/node@20.2.5: 431 + resolution: {integrity: sha512-JJulVEQXmiY9Px5axXHeYGLSjhkZEnD+MDPDGbCbIAbMslkKwmygtZFy1X6s/075Yo94sf8GuSlFfPzysQrWZQ==} 432 + dev: true 433 + 434 + /@types/pg@8.10.1: 435 + resolution: {integrity: sha512-AmEHA/XxMxemQom5iDwP62FYNkv+gDDnetRG7v2N2dPtju7UKI7FknUimcZo7SodKTHtckYPzaTqUEvUKbVJEA==} 436 + dependencies: 437 + '@types/node': 20.2.5 438 + pg-protocol: 1.6.0 439 + pg-types: 4.0.1 440 + dev: true 441 + 442 + /@types/qs@6.9.7: 443 + resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} 444 + dev: true 445 + 446 + /@types/range-parser@1.2.4: 447 + resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} 448 + dev: true 449 + 450 + /@types/semver@7.5.0: 451 + resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} 452 + dev: true 453 + 454 + /@types/send@0.17.1: 455 + resolution: {integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==} 456 + dependencies: 457 + '@types/mime': 1.3.2 458 + '@types/node': 20.2.5 459 + dev: true 460 + 461 + /@types/serve-static@1.15.1: 462 + resolution: {integrity: sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==} 463 + dependencies: 464 + '@types/mime': 3.0.1 465 + '@types/node': 20.2.5 466 + dev: true 467 + 468 + /@typescript-eslint/eslint-plugin@5.59.7(@typescript-eslint/parser@5.59.7)(eslint@8.41.0)(typescript@5.0.4): 469 + resolution: {integrity: sha512-BL+jYxUFIbuYwy+4fF86k5vdT9lT0CNJ6HtwrIvGh0PhH8s0yy5rjaKH2fDCrz5ITHy07WCzVGNvAmjJh4IJFA==} 470 + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 471 + peerDependencies: 472 + '@typescript-eslint/parser': ^5.0.0 473 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 474 + typescript: '*' 475 + peerDependenciesMeta: 476 + typescript: 477 + optional: true 478 + dependencies: 479 + '@eslint-community/regexpp': 4.5.1 480 + '@typescript-eslint/parser': 5.59.7(eslint@8.41.0)(typescript@5.0.4) 481 + '@typescript-eslint/scope-manager': 5.59.7 482 + '@typescript-eslint/type-utils': 5.59.7(eslint@8.41.0)(typescript@5.0.4) 483 + '@typescript-eslint/utils': 5.59.7(eslint@8.41.0)(typescript@5.0.4) 484 + debug: 4.3.4 485 + eslint: 8.41.0 486 + grapheme-splitter: 1.0.4 487 + ignore: 5.2.4 488 + natural-compare-lite: 1.4.0 489 + semver: 7.5.1 490 + tsutils: 3.21.0(typescript@5.0.4) 491 + typescript: 5.0.4 492 + transitivePeerDependencies: 493 + - supports-color 494 + dev: true 495 + 496 + /@typescript-eslint/parser@5.59.7(eslint@8.41.0)(typescript@5.0.4): 497 + resolution: {integrity: sha512-VhpsIEuq/8i5SF+mPg9jSdIwgMBBp0z9XqjiEay+81PYLJuroN+ET1hM5IhkiYMJd9MkTz8iJLt7aaGAgzWUbQ==} 498 + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 499 + peerDependencies: 500 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 501 + typescript: '*' 502 + peerDependenciesMeta: 503 + typescript: 504 + optional: true 505 + dependencies: 506 + '@typescript-eslint/scope-manager': 5.59.7 507 + '@typescript-eslint/types': 5.59.7 508 + '@typescript-eslint/typescript-estree': 5.59.7(typescript@5.0.4) 509 + debug: 4.3.4 510 + eslint: 8.41.0 511 + typescript: 5.0.4 512 + transitivePeerDependencies: 513 + - supports-color 514 + dev: true 515 + 516 + /@typescript-eslint/scope-manager@5.59.7: 517 + resolution: {integrity: sha512-FL6hkYWK9zBGdxT2wWEd2W8ocXMu3K94i3gvMrjXpx+koFYdYV7KprKfirpgY34vTGzEPPuKoERpP8kD5h7vZQ==} 518 + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 519 + dependencies: 520 + '@typescript-eslint/types': 5.59.7 521 + '@typescript-eslint/visitor-keys': 5.59.7 522 + dev: true 523 + 524 + /@typescript-eslint/type-utils@5.59.7(eslint@8.41.0)(typescript@5.0.4): 525 + resolution: {integrity: sha512-ozuz/GILuYG7osdY5O5yg0QxXUAEoI4Go3Do5xeu+ERH9PorHBPSdvD3Tjp2NN2bNLh1NJQSsQu2TPu/Ly+HaQ==} 526 + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 527 + peerDependencies: 528 + eslint: '*' 529 + typescript: '*' 530 + peerDependenciesMeta: 531 + typescript: 532 + optional: true 533 + dependencies: 534 + '@typescript-eslint/typescript-estree': 5.59.7(typescript@5.0.4) 535 + '@typescript-eslint/utils': 5.59.7(eslint@8.41.0)(typescript@5.0.4) 536 + debug: 4.3.4 537 + eslint: 8.41.0 538 + tsutils: 3.21.0(typescript@5.0.4) 539 + typescript: 5.0.4 540 + transitivePeerDependencies: 541 + - supports-color 542 + dev: true 543 + 544 + /@typescript-eslint/types@5.59.7: 545 + resolution: {integrity: sha512-UnVS2MRRg6p7xOSATscWkKjlf/NDKuqo5TdbWck6rIRZbmKpVNTLALzNvcjIfHBE7736kZOFc/4Z3VcZwuOM/A==} 546 + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 547 + dev: true 548 + 549 + /@typescript-eslint/typescript-estree@5.59.7(typescript@5.0.4): 550 + resolution: {integrity: sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==} 551 + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 552 + peerDependencies: 553 + typescript: '*' 554 + peerDependenciesMeta: 555 + typescript: 556 + optional: true 557 + dependencies: 558 + '@typescript-eslint/types': 5.59.7 559 + '@typescript-eslint/visitor-keys': 5.59.7 560 + debug: 4.3.4 561 + globby: 11.1.0 562 + is-glob: 4.0.3 563 + semver: 7.5.1 564 + tsutils: 3.21.0(typescript@5.0.4) 565 + typescript: 5.0.4 566 + transitivePeerDependencies: 567 + - supports-color 568 + dev: true 569 + 570 + /@typescript-eslint/utils@5.59.7(eslint@8.41.0)(typescript@5.0.4): 571 + resolution: {integrity: sha512-yCX9WpdQKaLufz5luG4aJbOpdXf/fjwGMcLFXZVPUz3QqLirG5QcwwnIHNf8cjLjxK4qtzTO8udUtMQSAToQnQ==} 572 + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 573 + peerDependencies: 574 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 575 + dependencies: 576 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.41.0) 577 + '@types/json-schema': 7.0.12 578 + '@types/semver': 7.5.0 579 + '@typescript-eslint/scope-manager': 5.59.7 580 + '@typescript-eslint/types': 5.59.7 581 + '@typescript-eslint/typescript-estree': 5.59.7(typescript@5.0.4) 582 + eslint: 8.41.0 583 + eslint-scope: 5.1.1 584 + semver: 7.5.1 585 + transitivePeerDependencies: 586 + - supports-color 587 + - typescript 588 + dev: true 589 + 590 + /@typescript-eslint/visitor-keys@5.59.7: 591 + resolution: {integrity: sha512-tyN+X2jvMslUszIiYbF0ZleP+RqQsFVpGrKI6e0Eet1w8WmhsAtmzaqm8oM8WJQ1ysLwhnsK/4hYHJjOgJVfQQ==} 592 + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 593 + dependencies: 594 + '@typescript-eslint/types': 5.59.7 595 + eslint-visitor-keys: 3.4.1 596 + dev: true 597 + 598 + /abort-controller@3.0.0: 599 + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} 600 + engines: {node: '>=6.5'} 601 + dependencies: 602 + event-target-shim: 5.0.1 603 + dev: false 604 + 605 + /accepts@1.3.8: 606 + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} 607 + engines: {node: '>= 0.6'} 608 + dependencies: 609 + mime-types: 2.1.35 610 + negotiator: 0.6.3 611 + dev: false 612 + 613 + /acorn-jsx@5.3.2(acorn@8.8.2): 614 + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 615 + peerDependencies: 616 + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 617 + dependencies: 618 + acorn: 8.8.2 619 + dev: true 620 + 621 + /acorn-walk@8.2.0: 622 + resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} 623 + engines: {node: '>=0.4.0'} 624 + dev: true 625 + 626 + /acorn@8.8.2: 627 + resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} 628 + engines: {node: '>=0.4.0'} 629 + hasBin: true 630 + dev: true 631 + 632 + /ajv@6.12.6: 633 + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 634 + dependencies: 635 + fast-deep-equal: 3.1.3 636 + fast-json-stable-stringify: 2.1.0 637 + json-schema-traverse: 0.4.1 638 + uri-js: 4.4.1 639 + dev: true 640 + 641 + /ansi-regex@5.0.1: 642 + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 643 + engines: {node: '>=8'} 644 + dev: true 645 + 646 + /ansi-styles@4.3.0: 647 + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 648 + engines: {node: '>=8'} 649 + dependencies: 650 + color-convert: 2.0.1 651 + dev: true 652 + 653 + /arg@4.1.3: 654 + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} 655 + dev: true 656 + 657 + /argparse@2.0.1: 658 + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 659 + dev: true 660 + 661 + /array-flatten@1.1.1: 662 + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} 663 + dev: false 664 + 665 + /array-union@2.1.0: 666 + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 667 + engines: {node: '>=8'} 668 + dev: true 669 + 670 + /async@3.2.4: 671 + resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} 672 + dev: true 673 + 674 + /asynckit@0.4.0: 675 + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} 676 + dev: false 677 + 678 + /atomic-sleep@1.0.0: 679 + resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} 680 + engines: {node: '>=8.0.0'} 681 + dev: false 682 + 683 + /axios@0.27.2: 684 + resolution: {integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==} 685 + dependencies: 686 + follow-redirects: 1.15.2 687 + form-data: 4.0.0 688 + transitivePeerDependencies: 689 + - debug 690 + dev: false 691 + 692 + /balanced-match@1.0.2: 693 + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 694 + dev: true 695 + 696 + /base64-js@1.5.1: 697 + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} 698 + dev: false 699 + 700 + /big-integer@1.6.51: 701 + resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} 702 + engines: {node: '>=0.6'} 703 + dev: false 704 + 705 + /body-parser@1.20.1: 706 + resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} 707 + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} 708 + dependencies: 709 + bytes: 3.1.2 710 + content-type: 1.0.5 711 + debug: 2.6.9 712 + depd: 2.0.0 713 + destroy: 1.2.0 714 + http-errors: 2.0.0 715 + iconv-lite: 0.4.24 716 + on-finished: 2.4.1 717 + qs: 6.11.0 718 + raw-body: 2.5.1 719 + type-is: 1.6.18 720 + unpipe: 1.0.0 721 + transitivePeerDependencies: 722 + - supports-color 723 + dev: false 724 + 725 + /brace-expansion@1.1.11: 726 + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 727 + dependencies: 728 + balanced-match: 1.0.2 729 + concat-map: 0.0.1 730 + dev: true 731 + 732 + /brace-expansion@2.0.1: 733 + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 734 + dependencies: 735 + balanced-match: 1.0.2 736 + dev: true 737 + 738 + /braces@3.0.2: 739 + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 740 + engines: {node: '>=8'} 741 + dependencies: 742 + fill-range: 7.0.1 743 + dev: true 744 + 745 + /buffer-writer@2.0.0: 746 + resolution: {integrity: sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==} 747 + engines: {node: '>=4'} 748 + dev: false 749 + 750 + /buffer@6.0.3: 751 + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} 752 + dependencies: 753 + base64-js: 1.5.1 754 + ieee754: 1.2.1 755 + dev: false 756 + 757 + /bytes@3.1.2: 758 + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} 759 + engines: {node: '>= 0.8'} 760 + dev: false 761 + 762 + /call-bind@1.0.2: 763 + resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} 764 + dependencies: 765 + function-bind: 1.1.1 766 + get-intrinsic: 1.2.1 767 + dev: false 768 + 769 + /callsites@3.1.0: 770 + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 771 + engines: {node: '>=6'} 772 + dev: true 773 + 774 + /cbor-extract@2.1.1: 775 + resolution: {integrity: sha512-1UX977+L+zOJHsp0mWFG13GLwO6ucKgSmSW6JTl8B9GUvACvHeIVpFqhU92299Z6PfD09aTXDell5p+lp1rUFA==} 776 + hasBin: true 777 + requiresBuild: true 778 + dependencies: 779 + node-gyp-build-optional-packages: 5.0.3 780 + optionalDependencies: 781 + '@cbor-extract/cbor-extract-darwin-arm64': 2.1.1 782 + '@cbor-extract/cbor-extract-darwin-x64': 2.1.1 783 + '@cbor-extract/cbor-extract-linux-arm': 2.1.1 784 + '@cbor-extract/cbor-extract-linux-arm64': 2.1.1 785 + '@cbor-extract/cbor-extract-linux-x64': 2.1.1 786 + '@cbor-extract/cbor-extract-win32-x64': 2.1.1 787 + dev: false 788 + optional: true 789 + 790 + /cbor-x@1.5.3: 791 + resolution: {integrity: sha512-adrN0S67C7jY2hgqeGcw+Uj6iEGLQa5D/p6/9YNl5AaVIYJaJz/bARfWsP8UikBZWbhS27LN0DJK4531vo9ODw==} 792 + optionalDependencies: 793 + cbor-extract: 2.1.1 794 + dev: false 795 + 796 + /cborg@1.10.2: 797 + resolution: {integrity: sha512-b3tFPA9pUr2zCUiCfRd2+wok2/LBSNUMKOuRRok+WlvvAgEt/PlbgPTsZUcwCOs53IJvLgTp0eotwtosE6njug==} 798 + hasBin: true 799 + dev: false 800 + 801 + /chalk@4.1.2: 802 + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 803 + engines: {node: '>=10'} 804 + dependencies: 805 + ansi-styles: 4.3.0 806 + supports-color: 7.2.0 807 + dev: true 808 + 809 + /chalk@5.2.0: 810 + resolution: {integrity: sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==} 811 + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} 812 + dev: true 813 + 814 + /cliui@8.0.1: 815 + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} 816 + engines: {node: '>=12'} 817 + dependencies: 818 + string-width: 4.2.3 819 + strip-ansi: 6.0.1 820 + wrap-ansi: 7.0.0 821 + dev: true 822 + 823 + /color-convert@2.0.1: 824 + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 825 + engines: {node: '>=7.0.0'} 826 + dependencies: 827 + color-name: 1.1.4 828 + dev: true 829 + 830 + /color-name@1.1.4: 831 + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 832 + dev: true 833 + 834 + /combined-stream@1.0.8: 835 + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} 836 + engines: {node: '>= 0.8'} 837 + dependencies: 838 + delayed-stream: 1.0.0 839 + dev: false 840 + 841 + /concat-map@0.0.1: 842 + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 843 + dev: true 844 + 845 + /content-disposition@0.5.4: 846 + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} 847 + engines: {node: '>= 0.6'} 848 + dependencies: 849 + safe-buffer: 5.2.1 850 + dev: false 851 + 852 + /content-type@1.0.5: 853 + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} 854 + engines: {node: '>= 0.6'} 855 + dev: false 856 + 857 + /cookie-signature@1.0.6: 858 + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} 859 + dev: false 860 + 861 + /cookie@0.5.0: 862 + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} 863 + engines: {node: '>= 0.6'} 864 + dev: false 865 + 866 + /create-require@1.1.1: 867 + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} 868 + dev: true 869 + 870 + /cross-spawn@7.0.3: 871 + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 872 + engines: {node: '>= 8'} 873 + dependencies: 874 + path-key: 3.1.1 875 + shebang-command: 2.0.0 876 + which: 2.0.2 877 + dev: true 878 + 879 + /debug@2.6.9: 880 + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} 881 + peerDependencies: 882 + supports-color: '*' 883 + peerDependenciesMeta: 884 + supports-color: 885 + optional: true 886 + dependencies: 887 + ms: 2.0.0 888 + dev: false 889 + 890 + /debug@4.3.4: 891 + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 892 + engines: {node: '>=6.0'} 893 + peerDependencies: 894 + supports-color: '*' 895 + peerDependenciesMeta: 896 + supports-color: 897 + optional: true 898 + dependencies: 899 + ms: 2.1.2 900 + dev: true 901 + 902 + /deep-is@0.1.4: 903 + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 904 + dev: true 905 + 906 + /delayed-stream@1.0.0: 907 + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} 908 + engines: {node: '>=0.4.0'} 909 + dev: false 910 + 911 + /depd@2.0.0: 912 + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} 913 + engines: {node: '>= 0.8'} 914 + dev: false 915 + 916 + /destroy@1.2.0: 917 + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} 918 + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} 919 + dev: false 920 + 921 + /diff@4.0.2: 922 + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} 923 + engines: {node: '>=0.3.1'} 924 + dev: true 925 + 926 + /diff@5.1.0: 927 + resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} 928 + engines: {node: '>=0.3.1'} 929 + dev: true 930 + 931 + /dir-glob@3.0.1: 932 + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 933 + engines: {node: '>=8'} 934 + dependencies: 935 + path-type: 4.0.0 936 + dev: true 937 + 938 + /doctrine@3.0.0: 939 + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 940 + engines: {node: '>=6.0.0'} 941 + dependencies: 942 + esutils: 2.0.3 943 + dev: true 944 + 945 + /dotenv@16.0.3: 946 + resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} 947 + engines: {node: '>=12'} 948 + dev: false 949 + 950 + /ee-first@1.1.1: 951 + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} 952 + dev: false 953 + 954 + /ejs@3.1.9: 955 + resolution: {integrity: sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==} 956 + engines: {node: '>=0.10.0'} 957 + hasBin: true 958 + dependencies: 959 + jake: 10.8.7 960 + dev: true 961 + 962 + /emoji-regex@8.0.0: 963 + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 964 + dev: true 965 + 966 + /encodeurl@1.0.2: 967 + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} 968 + engines: {node: '>= 0.8'} 969 + dev: false 970 + 971 + /escalade@3.1.1: 972 + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 973 + engines: {node: '>=6'} 974 + dev: true 975 + 976 + /escape-html@1.0.3: 977 + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} 978 + dev: false 979 + 980 + /escape-string-regexp@4.0.0: 981 + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 982 + engines: {node: '>=10'} 983 + dev: true 984 + 985 + /eslint-scope@5.1.1: 986 + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} 987 + engines: {node: '>=8.0.0'} 988 + dependencies: 989 + esrecurse: 4.3.0 990 + estraverse: 4.3.0 991 + dev: true 992 + 993 + /eslint-scope@7.2.0: 994 + resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==} 995 + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 996 + dependencies: 997 + esrecurse: 4.3.0 998 + estraverse: 5.3.0 999 + dev: true 1000 + 1001 + /eslint-visitor-keys@3.4.1: 1002 + resolution: {integrity: sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==} 1003 + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1004 + dev: true 1005 + 1006 + /eslint@8.41.0: 1007 + resolution: {integrity: sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q==} 1008 + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1009 + hasBin: true 1010 + dependencies: 1011 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.41.0) 1012 + '@eslint-community/regexpp': 4.5.1 1013 + '@eslint/eslintrc': 2.0.3 1014 + '@eslint/js': 8.41.0 1015 + '@humanwhocodes/config-array': 0.11.8 1016 + '@humanwhocodes/module-importer': 1.0.1 1017 + '@nodelib/fs.walk': 1.2.8 1018 + ajv: 6.12.6 1019 + chalk: 4.1.2 1020 + cross-spawn: 7.0.3 1021 + debug: 4.3.4 1022 + doctrine: 3.0.0 1023 + escape-string-regexp: 4.0.0 1024 + eslint-scope: 7.2.0 1025 + eslint-visitor-keys: 3.4.1 1026 + espree: 9.5.2 1027 + esquery: 1.5.0 1028 + esutils: 2.0.3 1029 + fast-deep-equal: 3.1.3 1030 + file-entry-cache: 6.0.1 1031 + find-up: 5.0.0 1032 + glob-parent: 6.0.2 1033 + globals: 13.20.0 1034 + graphemer: 1.4.0 1035 + ignore: 5.2.4 1036 + import-fresh: 3.3.0 1037 + imurmurhash: 0.1.4 1038 + is-glob: 4.0.3 1039 + is-path-inside: 3.0.3 1040 + js-yaml: 4.1.0 1041 + json-stable-stringify-without-jsonify: 1.0.1 1042 + levn: 0.4.1 1043 + lodash.merge: 4.6.2 1044 + minimatch: 3.1.2 1045 + natural-compare: 1.4.0 1046 + optionator: 0.9.1 1047 + strip-ansi: 6.0.1 1048 + strip-json-comments: 3.1.1 1049 + text-table: 0.2.0 1050 + transitivePeerDependencies: 1051 + - supports-color 1052 + dev: true 1053 + 1054 + /espree@9.5.2: 1055 + resolution: {integrity: sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==} 1056 + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1057 + dependencies: 1058 + acorn: 8.8.2 1059 + acorn-jsx: 5.3.2(acorn@8.8.2) 1060 + eslint-visitor-keys: 3.4.1 1061 + dev: true 1062 + 1063 + /esquery@1.5.0: 1064 + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} 1065 + engines: {node: '>=0.10'} 1066 + dependencies: 1067 + estraverse: 5.3.0 1068 + dev: true 1069 + 1070 + /esrecurse@4.3.0: 1071 + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1072 + engines: {node: '>=4.0'} 1073 + dependencies: 1074 + estraverse: 5.3.0 1075 + dev: true 1076 + 1077 + /estraverse@4.3.0: 1078 + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} 1079 + engines: {node: '>=4.0'} 1080 + dev: true 1081 + 1082 + /estraverse@5.3.0: 1083 + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1084 + engines: {node: '>=4.0'} 1085 + dev: true 1086 + 1087 + /esutils@2.0.3: 1088 + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1089 + engines: {node: '>=0.10.0'} 1090 + dev: true 1091 + 1092 + /etag@1.8.1: 1093 + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} 1094 + engines: {node: '>= 0.6'} 1095 + dev: false 1096 + 1097 + /event-target-shim@5.0.1: 1098 + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} 1099 + engines: {node: '>=6'} 1100 + dev: false 1101 + 1102 + /events@3.3.0: 1103 + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} 1104 + engines: {node: '>=0.8.x'} 1105 + dev: false 1106 + 1107 + /express@4.18.2: 1108 + resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} 1109 + engines: {node: '>= 0.10.0'} 1110 + dependencies: 1111 + accepts: 1.3.8 1112 + array-flatten: 1.1.1 1113 + body-parser: 1.20.1 1114 + content-disposition: 0.5.4 1115 + content-type: 1.0.5 1116 + cookie: 0.5.0 1117 + cookie-signature: 1.0.6 1118 + debug: 2.6.9 1119 + depd: 2.0.0 1120 + encodeurl: 1.0.2 1121 + escape-html: 1.0.3 1122 + etag: 1.8.1 1123 + finalhandler: 1.2.0 1124 + fresh: 0.5.2 1125 + http-errors: 2.0.0 1126 + merge-descriptors: 1.0.1 1127 + methods: 1.1.2 1128 + on-finished: 2.4.1 1129 + parseurl: 1.3.3 1130 + path-to-regexp: 0.1.7 1131 + proxy-addr: 2.0.7 1132 + qs: 6.11.0 1133 + range-parser: 1.2.1 1134 + safe-buffer: 5.2.1 1135 + send: 0.18.0 1136 + serve-static: 1.15.0 1137 + setprototypeof: 1.2.0 1138 + statuses: 2.0.1 1139 + type-is: 1.6.18 1140 + utils-merge: 1.0.1 1141 + vary: 1.1.2 1142 + transitivePeerDependencies: 1143 + - supports-color 1144 + dev: false 1145 + 1146 + /fast-deep-equal@3.1.3: 1147 + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1148 + dev: true 1149 + 1150 + /fast-glob@3.2.12: 1151 + resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} 1152 + engines: {node: '>=8.6.0'} 1153 + dependencies: 1154 + '@nodelib/fs.stat': 2.0.5 1155 + '@nodelib/fs.walk': 1.2.8 1156 + glob-parent: 5.1.2 1157 + merge2: 1.4.1 1158 + micromatch: 4.0.5 1159 + dev: true 1160 + 1161 + /fast-json-stable-stringify@2.1.0: 1162 + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1163 + dev: true 1164 + 1165 + /fast-levenshtein@2.0.6: 1166 + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 1167 + dev: true 1168 + 1169 + /fast-redact@3.2.0: 1170 + resolution: {integrity: sha512-zaTadChr+NekyzallAMXATXLOR8MNx3zqpZ0MUF2aGf4EathnG0f32VLODNlY8IuGY3HoRO2L6/6fSzNsLaHIw==} 1171 + engines: {node: '>=6'} 1172 + dev: false 1173 + 1174 + /fastq@1.15.0: 1175 + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} 1176 + dependencies: 1177 + reusify: 1.0.4 1178 + dev: true 1179 + 1180 + /file-entry-cache@6.0.1: 1181 + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 1182 + engines: {node: ^10.12.0 || >=12.0.0} 1183 + dependencies: 1184 + flat-cache: 3.0.4 1185 + dev: true 1186 + 1187 + /filelist@1.0.4: 1188 + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} 1189 + dependencies: 1190 + minimatch: 5.1.6 1191 + dev: true 1192 + 1193 + /fill-range@7.0.1: 1194 + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1195 + engines: {node: '>=8'} 1196 + dependencies: 1197 + to-regex-range: 5.0.1 1198 + dev: true 1199 + 1200 + /finalhandler@1.2.0: 1201 + resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} 1202 + engines: {node: '>= 0.8'} 1203 + dependencies: 1204 + debug: 2.6.9 1205 + encodeurl: 1.0.2 1206 + escape-html: 1.0.3 1207 + on-finished: 2.4.1 1208 + parseurl: 1.3.3 1209 + statuses: 2.0.1 1210 + unpipe: 1.0.0 1211 + transitivePeerDependencies: 1212 + - supports-color 1213 + dev: false 1214 + 1215 + /find-up@5.0.0: 1216 + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1217 + engines: {node: '>=10'} 1218 + dependencies: 1219 + locate-path: 6.0.0 1220 + path-exists: 4.0.0 1221 + dev: true 1222 + 1223 + /flat-cache@3.0.4: 1224 + resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} 1225 + engines: {node: ^10.12.0 || >=12.0.0} 1226 + dependencies: 1227 + flatted: 3.2.7 1228 + rimraf: 3.0.2 1229 + dev: true 1230 + 1231 + /flatted@3.2.7: 1232 + resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} 1233 + dev: true 1234 + 1235 + /follow-redirects@1.15.2: 1236 + resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} 1237 + engines: {node: '>=4.0'} 1238 + peerDependencies: 1239 + debug: '*' 1240 + peerDependenciesMeta: 1241 + debug: 1242 + optional: true 1243 + dev: false 1244 + 1245 + /form-data@4.0.0: 1246 + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} 1247 + engines: {node: '>= 6'} 1248 + dependencies: 1249 + asynckit: 0.4.0 1250 + combined-stream: 1.0.8 1251 + mime-types: 2.1.35 1252 + dev: false 1253 + 1254 + /forwarded@0.2.0: 1255 + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} 1256 + engines: {node: '>= 0.6'} 1257 + dev: false 1258 + 1259 + /fresh@0.5.2: 1260 + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} 1261 + engines: {node: '>= 0.6'} 1262 + dev: false 1263 + 1264 + /fs.realpath@1.0.0: 1265 + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 1266 + dev: true 1267 + 1268 + /function-bind@1.1.1: 1269 + resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 1270 + dev: false 1271 + 1272 + /get-caller-file@2.0.5: 1273 + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} 1274 + engines: {node: 6.* || 8.* || >= 10.*} 1275 + dev: true 1276 + 1277 + /get-intrinsic@1.2.1: 1278 + resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} 1279 + dependencies: 1280 + function-bind: 1.1.1 1281 + has: 1.0.3 1282 + has-proto: 1.0.1 1283 + has-symbols: 1.0.3 1284 + dev: false 1285 + 1286 + /glob-parent@5.1.2: 1287 + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1288 + engines: {node: '>= 6'} 1289 + dependencies: 1290 + is-glob: 4.0.3 1291 + dev: true 1292 + 1293 + /glob-parent@6.0.2: 1294 + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1295 + engines: {node: '>=10.13.0'} 1296 + dependencies: 1297 + is-glob: 4.0.3 1298 + dev: true 1299 + 1300 + /glob@7.2.3: 1301 + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1302 + dependencies: 1303 + fs.realpath: 1.0.0 1304 + inflight: 1.0.6 1305 + inherits: 2.0.4 1306 + minimatch: 3.1.2 1307 + once: 1.4.0 1308 + path-is-absolute: 1.0.1 1309 + dev: true 1310 + 1311 + /globals@13.20.0: 1312 + resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} 1313 + engines: {node: '>=8'} 1314 + dependencies: 1315 + type-fest: 0.20.2 1316 + dev: true 1317 + 1318 + /globby@11.1.0: 1319 + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 1320 + engines: {node: '>=10'} 1321 + dependencies: 1322 + array-union: 2.1.0 1323 + dir-glob: 3.0.1 1324 + fast-glob: 3.2.12 1325 + ignore: 5.2.4 1326 + merge2: 1.4.1 1327 + slash: 3.0.0 1328 + dev: true 1329 + 1330 + /grapheme-splitter@1.0.4: 1331 + resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} 1332 + dev: true 1333 + 1334 + /graphemer@1.4.0: 1335 + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 1336 + dev: true 1337 + 1338 + /has-flag@4.0.0: 1339 + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1340 + engines: {node: '>=8'} 1341 + dev: true 1342 + 1343 + /has-proto@1.0.1: 1344 + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} 1345 + engines: {node: '>= 0.4'} 1346 + dev: false 1347 + 1348 + /has-symbols@1.0.3: 1349 + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} 1350 + engines: {node: '>= 0.4'} 1351 + dev: false 1352 + 1353 + /has@1.0.3: 1354 + resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 1355 + engines: {node: '>= 0.4.0'} 1356 + dependencies: 1357 + function-bind: 1.1.1 1358 + dev: false 1359 + 1360 + /http-errors@2.0.0: 1361 + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} 1362 + engines: {node: '>= 0.8'} 1363 + dependencies: 1364 + depd: 2.0.0 1365 + inherits: 2.0.4 1366 + setprototypeof: 1.2.0 1367 + statuses: 2.0.1 1368 + toidentifier: 1.0.1 1369 + dev: false 1370 + 1371 + /iconv-lite@0.4.24: 1372 + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} 1373 + engines: {node: '>=0.10.0'} 1374 + dependencies: 1375 + safer-buffer: 2.1.2 1376 + dev: false 1377 + 1378 + /ieee754@1.2.1: 1379 + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} 1380 + dev: false 1381 + 1382 + /ignore@5.2.4: 1383 + resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} 1384 + engines: {node: '>= 4'} 1385 + dev: true 1386 + 1387 + /import-fresh@3.3.0: 1388 + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 1389 + engines: {node: '>=6'} 1390 + dependencies: 1391 + parent-module: 1.0.1 1392 + resolve-from: 4.0.0 1393 + dev: true 1394 + 1395 + /imurmurhash@0.1.4: 1396 + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1397 + engines: {node: '>=0.8.19'} 1398 + dev: true 1399 + 1400 + /inflight@1.0.6: 1401 + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 1402 + dependencies: 1403 + once: 1.4.0 1404 + wrappy: 1.0.2 1405 + dev: true 1406 + 1407 + /inherits@2.0.4: 1408 + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1409 + 1410 + /ipaddr.js@1.9.1: 1411 + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} 1412 + engines: {node: '>= 0.10'} 1413 + dev: false 1414 + 1415 + /is-extglob@2.1.1: 1416 + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1417 + engines: {node: '>=0.10.0'} 1418 + dev: true 1419 + 1420 + /is-fullwidth-code-point@3.0.0: 1421 + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1422 + engines: {node: '>=8'} 1423 + dev: true 1424 + 1425 + /is-glob@4.0.3: 1426 + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1427 + engines: {node: '>=0.10.0'} 1428 + dependencies: 1429 + is-extglob: 2.1.1 1430 + dev: true 1431 + 1432 + /is-number@7.0.0: 1433 + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1434 + engines: {node: '>=0.12.0'} 1435 + dev: true 1436 + 1437 + /is-path-inside@3.0.3: 1438 + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} 1439 + engines: {node: '>=8'} 1440 + dev: true 1441 + 1442 + /isexe@2.0.0: 1443 + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1444 + dev: true 1445 + 1446 + /iso-datestring-validator@2.2.2: 1447 + resolution: {integrity: sha512-yLEMkBbLZTlVQqOnQ4FiMujR6T4DEcCb1xizmvXS+OxuhwcbtynoosRzdMA69zZCShCNAbi+gJ71FxZBBXx1SA==} 1448 + dev: false 1449 + 1450 + /jake@10.8.7: 1451 + resolution: {integrity: sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==} 1452 + engines: {node: '>=10'} 1453 + hasBin: true 1454 + dependencies: 1455 + async: 3.2.4 1456 + chalk: 4.1.2 1457 + filelist: 1.0.4 1458 + minimatch: 3.1.2 1459 + dev: true 1460 + 1461 + /js-yaml@4.1.0: 1462 + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1463 + hasBin: true 1464 + dependencies: 1465 + argparse: 2.0.1 1466 + dev: true 1467 + 1468 + /json-schema-traverse@0.4.1: 1469 + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1470 + dev: true 1471 + 1472 + /json-stable-stringify-without-jsonify@1.0.1: 1473 + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1474 + dev: true 1475 + 1476 + /kysely@0.22.0: 1477 + resolution: {integrity: sha512-ZE3qWtnqLOalodzfK5QUEcm7AEulhxsPNuKaGFsC3XiqO92vMLm+mAHk/NnbSIOtC4RmGm0nsv700i8KDp1gfQ==} 1478 + engines: {node: '>=14.0.0'} 1479 + dev: false 1480 + 1481 + /levn@0.4.1: 1482 + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1483 + engines: {node: '>= 0.8.0'} 1484 + dependencies: 1485 + prelude-ls: 1.2.1 1486 + type-check: 0.4.0 1487 + dev: true 1488 + 1489 + /locate-path@6.0.0: 1490 + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1491 + engines: {node: '>=10'} 1492 + dependencies: 1493 + p-locate: 5.0.0 1494 + dev: true 1495 + 1496 + /lodash.merge@4.6.2: 1497 + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1498 + dev: true 1499 + 1500 + /lru-cache@6.0.0: 1501 + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 1502 + engines: {node: '>=10'} 1503 + dependencies: 1504 + yallist: 4.0.0 1505 + dev: true 1506 + 1507 + /make-error@1.3.6: 1508 + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} 1509 + dev: true 1510 + 1511 + /media-typer@0.3.0: 1512 + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} 1513 + engines: {node: '>= 0.6'} 1514 + dev: false 1515 + 1516 + /merge-descriptors@1.0.1: 1517 + resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} 1518 + dev: false 1519 + 1520 + /merge2@1.4.1: 1521 + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1522 + engines: {node: '>= 8'} 1523 + dev: true 1524 + 1525 + /methods@1.1.2: 1526 + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} 1527 + engines: {node: '>= 0.6'} 1528 + dev: false 1529 + 1530 + /micromatch@4.0.5: 1531 + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 1532 + engines: {node: '>=8.6'} 1533 + dependencies: 1534 + braces: 3.0.2 1535 + picomatch: 2.3.1 1536 + dev: true 1537 + 1538 + /mime-db@1.52.0: 1539 + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 1540 + engines: {node: '>= 0.6'} 1541 + dev: false 1542 + 1543 + /mime-types@2.1.35: 1544 + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 1545 + engines: {node: '>= 0.6'} 1546 + dependencies: 1547 + mime-db: 1.52.0 1548 + dev: false 1549 + 1550 + /mime@1.6.0: 1551 + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} 1552 + engines: {node: '>=4'} 1553 + hasBin: true 1554 + dev: false 1555 + 1556 + /minimatch@3.1.2: 1557 + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1558 + dependencies: 1559 + brace-expansion: 1.1.11 1560 + dev: true 1561 + 1562 + /minimatch@5.1.6: 1563 + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} 1564 + engines: {node: '>=10'} 1565 + dependencies: 1566 + brace-expansion: 2.0.1 1567 + dev: true 1568 + 1569 + /ms@2.0.0: 1570 + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} 1571 + dev: false 1572 + 1573 + /ms@2.1.2: 1574 + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1575 + dev: true 1576 + 1577 + /ms@2.1.3: 1578 + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1579 + dev: false 1580 + 1581 + /multiformats@9.9.0: 1582 + resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} 1583 + dev: false 1584 + 1585 + /natural-compare-lite@1.4.0: 1586 + resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} 1587 + dev: true 1588 + 1589 + /natural-compare@1.4.0: 1590 + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1591 + dev: true 1592 + 1593 + /negotiator@0.6.3: 1594 + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} 1595 + engines: {node: '>= 0.6'} 1596 + dev: false 1597 + 1598 + /node-gyp-build-optional-packages@5.0.3: 1599 + resolution: {integrity: sha512-k75jcVzk5wnnc/FMxsf4udAoTEUv2jY3ycfdSd3yWu6Cnd1oee6/CfZJApyscA4FJOmdoixWwiwOyf16RzD5JA==} 1600 + hasBin: true 1601 + dev: false 1602 + optional: true 1603 + 1604 + /object-inspect@1.12.3: 1605 + resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} 1606 + dev: false 1607 + 1608 + /obuf@1.1.2: 1609 + resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} 1610 + dev: true 1611 + 1612 + /on-exit-leak-free@2.1.0: 1613 + resolution: {integrity: sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==} 1614 + dev: false 1615 + 1616 + /on-finished@2.4.1: 1617 + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} 1618 + engines: {node: '>= 0.8'} 1619 + dependencies: 1620 + ee-first: 1.1.1 1621 + dev: false 1622 + 1623 + /once@1.4.0: 1624 + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 1625 + dependencies: 1626 + wrappy: 1.0.2 1627 + dev: true 1628 + 1629 + /one-webcrypto@1.0.3: 1630 + resolution: {integrity: sha512-fu9ywBVBPx0gS9K0etIROTiCkvI5S1TDjFsYFb3rC1ewFxeOqsbzq7aIMBHsYfrTHBcGXJaONXXjTl8B01cW1Q==} 1631 + dev: false 1632 + 1633 + /optionator@0.9.1: 1634 + resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} 1635 + engines: {node: '>= 0.8.0'} 1636 + dependencies: 1637 + deep-is: 0.1.4 1638 + fast-levenshtein: 2.0.6 1639 + levn: 0.4.1 1640 + prelude-ls: 1.2.1 1641 + type-check: 0.4.0 1642 + word-wrap: 1.2.3 1643 + dev: true 1644 + 1645 + /p-limit@3.1.0: 1646 + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1647 + engines: {node: '>=10'} 1648 + dependencies: 1649 + yocto-queue: 0.1.0 1650 + dev: true 1651 + 1652 + /p-locate@5.0.0: 1653 + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1654 + engines: {node: '>=10'} 1655 + dependencies: 1656 + p-limit: 3.1.0 1657 + dev: true 1658 + 1659 + /packet-reader@1.0.0: 1660 + resolution: {integrity: sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==} 1661 + dev: false 1662 + 1663 + /parent-module@1.0.1: 1664 + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1665 + engines: {node: '>=6'} 1666 + dependencies: 1667 + callsites: 3.1.0 1668 + dev: true 1669 + 1670 + /parseurl@1.3.3: 1671 + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} 1672 + engines: {node: '>= 0.8'} 1673 + dev: false 1674 + 1675 + /path-exists@4.0.0: 1676 + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1677 + engines: {node: '>=8'} 1678 + dev: true 1679 + 1680 + /path-is-absolute@1.0.1: 1681 + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 1682 + engines: {node: '>=0.10.0'} 1683 + dev: true 1684 + 1685 + /path-key@3.1.1: 1686 + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1687 + engines: {node: '>=8'} 1688 + dev: true 1689 + 1690 + /path-to-regexp@0.1.7: 1691 + resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} 1692 + dev: false 1693 + 1694 + /path-type@4.0.0: 1695 + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 1696 + engines: {node: '>=8'} 1697 + dev: true 1698 + 1699 + /pg-cloudflare@1.1.0: 1700 + resolution: {integrity: sha512-tGM8/s6frwuAIyRcJ6nWcIvd3+3NmUKIs6OjviIm1HPPFEt5MzQDOTBQyhPWg/m0kCl95M6gA1JaIXtS8KovOA==} 1701 + requiresBuild: true 1702 + dev: false 1703 + optional: true 1704 + 1705 + /pg-connection-string@2.6.0: 1706 + resolution: {integrity: sha512-x14ibktcwlHKoHxx9X3uTVW9zIGR41ZB6QNhHb21OPNdCCO3NaRnpJuwKIQSR4u+Yqjx4HCvy7Hh7VSy1U4dGg==} 1707 + dev: false 1708 + 1709 + /pg-int8@1.0.1: 1710 + resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} 1711 + engines: {node: '>=4.0.0'} 1712 + 1713 + /pg-numeric@1.0.2: 1714 + resolution: {integrity: sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw==} 1715 + engines: {node: '>=4'} 1716 + dev: true 1717 + 1718 + /pg-pool@3.6.0(pg@8.11.0): 1719 + resolution: {integrity: sha512-clFRf2ksqd+F497kWFyM21tMjeikn60oGDmqMT8UBrynEwVEX/5R5xd2sdvdo1cZCFlguORNpVuqxIj+aK4cfQ==} 1720 + peerDependencies: 1721 + pg: '>=8.0' 1722 + dependencies: 1723 + pg: 8.11.0 1724 + dev: false 1725 + 1726 + /pg-protocol@1.6.0: 1727 + resolution: {integrity: sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==} 1728 + 1729 + /pg-types@2.2.0: 1730 + resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} 1731 + engines: {node: '>=4'} 1732 + dependencies: 1733 + pg-int8: 1.0.1 1734 + postgres-array: 2.0.0 1735 + postgres-bytea: 1.0.0 1736 + postgres-date: 1.0.7 1737 + postgres-interval: 1.2.0 1738 + dev: false 1739 + 1740 + /pg-types@4.0.1: 1741 + resolution: {integrity: sha512-hRCSDuLII9/LE3smys1hRHcu5QGcLs9ggT7I/TCs0IE+2Eesxi9+9RWAAwZ0yaGjxoWICF/YHLOEjydGujoJ+g==} 1742 + engines: {node: '>=10'} 1743 + dependencies: 1744 + pg-int8: 1.0.1 1745 + pg-numeric: 1.0.2 1746 + postgres-array: 3.0.2 1747 + postgres-bytea: 3.0.0 1748 + postgres-date: 2.0.1 1749 + postgres-interval: 3.0.0 1750 + postgres-range: 1.1.3 1751 + dev: true 1752 + 1753 + /pg@8.11.0: 1754 + resolution: {integrity: sha512-meLUVPn2TWgJyLmy7el3fQQVwft4gU5NGyvV0XbD41iU9Jbg8lCH4zexhIkihDzVHJStlt6r088G6/fWeNjhXA==} 1755 + engines: {node: '>= 8.0.0'} 1756 + peerDependencies: 1757 + pg-native: '>=3.0.1' 1758 + peerDependenciesMeta: 1759 + pg-native: 1760 + optional: true 1761 + dependencies: 1762 + buffer-writer: 2.0.0 1763 + packet-reader: 1.0.0 1764 + pg-connection-string: 2.6.0 1765 + pg-pool: 3.6.0(pg@8.11.0) 1766 + pg-protocol: 1.6.0 1767 + pg-types: 2.2.0 1768 + pgpass: 1.0.5 1769 + optionalDependencies: 1770 + pg-cloudflare: 1.1.0 1771 + dev: false 1772 + 1773 + /pgpass@1.0.5: 1774 + resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} 1775 + dependencies: 1776 + split2: 4.2.0 1777 + dev: false 1778 + 1779 + /picomatch@2.3.1: 1780 + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1781 + engines: {node: '>=8.6'} 1782 + dev: true 1783 + 1784 + /pino-abstract-transport@1.0.0: 1785 + resolution: {integrity: sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==} 1786 + dependencies: 1787 + readable-stream: 4.4.0 1788 + split2: 4.2.0 1789 + dev: false 1790 + 1791 + /pino-std-serializers@6.2.1: 1792 + resolution: {integrity: sha512-wHuWB+CvSVb2XqXM0W/WOYUkVSPbiJb9S5fNB7TBhd8s892Xq910bRxwHtC4l71hgztObTjXL6ZheZXFjhDrDQ==} 1793 + dev: false 1794 + 1795 + /pino@8.14.1: 1796 + resolution: {integrity: sha512-8LYNv7BKWXSfS+k6oEc6occy5La+q2sPwU3q2ljTX5AZk7v+5kND2o5W794FyRaqha6DJajmkNRsWtPpFyMUdw==} 1797 + hasBin: true 1798 + dependencies: 1799 + atomic-sleep: 1.0.0 1800 + fast-redact: 3.2.0 1801 + on-exit-leak-free: 2.1.0 1802 + pino-abstract-transport: 1.0.0 1803 + pino-std-serializers: 6.2.1 1804 + process-warning: 2.2.0 1805 + quick-format-unescaped: 4.0.4 1806 + real-require: 0.2.0 1807 + safe-stable-stringify: 2.4.3 1808 + sonic-boom: 3.3.0 1809 + thread-stream: 2.3.0 1810 + dev: false 1811 + 1812 + /postgres-array@2.0.0: 1813 + resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} 1814 + engines: {node: '>=4'} 1815 + dev: false 1816 + 1817 + /postgres-array@3.0.2: 1818 + resolution: {integrity: sha512-6faShkdFugNQCLwucjPcY5ARoW1SlbnrZjmGl0IrrqewpvxvhSLHimCVzqeuULCbG0fQv7Dtk1yDbG3xv7Veog==} 1819 + engines: {node: '>=12'} 1820 + dev: true 1821 + 1822 + /postgres-bytea@1.0.0: 1823 + resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==} 1824 + engines: {node: '>=0.10.0'} 1825 + dev: false 1826 + 1827 + /postgres-bytea@3.0.0: 1828 + resolution: {integrity: sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw==} 1829 + engines: {node: '>= 6'} 1830 + dependencies: 1831 + obuf: 1.1.2 1832 + dev: true 1833 + 1834 + /postgres-date@1.0.7: 1835 + resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} 1836 + engines: {node: '>=0.10.0'} 1837 + dev: false 1838 + 1839 + /postgres-date@2.0.1: 1840 + resolution: {integrity: sha512-YtMKdsDt5Ojv1wQRvUhnyDJNSr2dGIC96mQVKz7xufp07nfuFONzdaowrMHjlAzY6GDLd4f+LUHHAAM1h4MdUw==} 1841 + engines: {node: '>=12'} 1842 + dev: true 1843 + 1844 + /postgres-interval@1.2.0: 1845 + resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} 1846 + engines: {node: '>=0.10.0'} 1847 + dependencies: 1848 + xtend: 4.0.2 1849 + dev: false 1850 + 1851 + /postgres-interval@3.0.0: 1852 + resolution: {integrity: sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw==} 1853 + engines: {node: '>=12'} 1854 + dev: true 1855 + 1856 + /postgres-range@1.1.3: 1857 + resolution: {integrity: sha512-VdlZoocy5lCP0c/t66xAfclglEapXPCIVhqqJRncYpvbCgImF0w67aPKfbqUMr72tO2k5q0TdTZwCLjPTI6C9g==} 1858 + dev: true 1859 + 1860 + /prelude-ls@1.2.1: 1861 + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1862 + engines: {node: '>= 0.8.0'} 1863 + dev: true 1864 + 1865 + /process-warning@2.2.0: 1866 + resolution: {integrity: sha512-/1WZ8+VQjR6avWOgHeEPd7SDQmFQ1B5mC1eRXsCm5TarlNmx/wCsa5GEaxGm05BORRtyG/Ex/3xq3TuRvq57qg==} 1867 + dev: false 1868 + 1869 + /process@0.11.10: 1870 + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} 1871 + engines: {node: '>= 0.6.0'} 1872 + dev: false 1873 + 1874 + /proxy-addr@2.0.7: 1875 + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} 1876 + engines: {node: '>= 0.10'} 1877 + dependencies: 1878 + forwarded: 0.2.0 1879 + ipaddr.js: 1.9.1 1880 + dev: false 1881 + 1882 + /punycode@2.3.0: 1883 + resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} 1884 + engines: {node: '>=6'} 1885 + dev: true 1886 + 1887 + /qs@6.11.0: 1888 + resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} 1889 + engines: {node: '>=0.6'} 1890 + dependencies: 1891 + side-channel: 1.0.4 1892 + dev: false 1893 + 1894 + /queue-microtask@1.2.3: 1895 + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1896 + dev: true 1897 + 1898 + /quick-format-unescaped@4.0.4: 1899 + resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} 1900 + dev: false 1901 + 1902 + /range-parser@1.2.1: 1903 + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} 1904 + engines: {node: '>= 0.6'} 1905 + dev: false 1906 + 1907 + /raw-body@2.5.1: 1908 + resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} 1909 + engines: {node: '>= 0.8'} 1910 + dependencies: 1911 + bytes: 3.1.2 1912 + http-errors: 2.0.0 1913 + iconv-lite: 0.4.24 1914 + unpipe: 1.0.0 1915 + dev: false 1916 + 1917 + /readable-stream@4.4.0: 1918 + resolution: {integrity: sha512-kDMOq0qLtxV9f/SQv522h8cxZBqNZXuXNyjyezmfAAuribMyVXziljpQ/uQhfE1XLg2/TLTW2DsnoE4VAi/krg==} 1919 + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1920 + dependencies: 1921 + abort-controller: 3.0.0 1922 + buffer: 6.0.3 1923 + events: 3.3.0 1924 + process: 0.11.10 1925 + dev: false 1926 + 1927 + /real-require@0.2.0: 1928 + resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} 1929 + engines: {node: '>= 12.13.0'} 1930 + dev: false 1931 + 1932 + /require-directory@2.1.1: 1933 + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} 1934 + engines: {node: '>=0.10.0'} 1935 + dev: true 1936 + 1937 + /resolve-from@4.0.0: 1938 + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1939 + engines: {node: '>=4'} 1940 + dev: true 1941 + 1942 + /reusify@1.0.4: 1943 + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 1944 + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1945 + dev: true 1946 + 1947 + /rimraf@3.0.2: 1948 + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 1949 + hasBin: true 1950 + dependencies: 1951 + glob: 7.2.3 1952 + dev: true 1953 + 1954 + /run-parallel@1.2.0: 1955 + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1956 + dependencies: 1957 + queue-microtask: 1.2.3 1958 + dev: true 1959 + 1960 + /rxjs@7.8.1: 1961 + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} 1962 + requiresBuild: true 1963 + dependencies: 1964 + tslib: 2.5.2 1965 + dev: false 1966 + optional: true 1967 + 1968 + /safe-buffer@5.2.1: 1969 + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 1970 + dev: false 1971 + 1972 + /safe-stable-stringify@2.4.3: 1973 + resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} 1974 + engines: {node: '>=10'} 1975 + dev: false 1976 + 1977 + /safer-buffer@2.1.2: 1978 + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 1979 + dev: false 1980 + 1981 + /semver@7.5.1: 1982 + resolution: {integrity: sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==} 1983 + engines: {node: '>=10'} 1984 + hasBin: true 1985 + dependencies: 1986 + lru-cache: 6.0.0 1987 + dev: true 1988 + 1989 + /send@0.18.0: 1990 + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} 1991 + engines: {node: '>= 0.8.0'} 1992 + dependencies: 1993 + debug: 2.6.9 1994 + depd: 2.0.0 1995 + destroy: 1.2.0 1996 + encodeurl: 1.0.2 1997 + escape-html: 1.0.3 1998 + etag: 1.8.1 1999 + fresh: 0.5.2 2000 + http-errors: 2.0.0 2001 + mime: 1.6.0 2002 + ms: 2.1.3 2003 + on-finished: 2.4.1 2004 + range-parser: 1.2.1 2005 + statuses: 2.0.1 2006 + transitivePeerDependencies: 2007 + - supports-color 2008 + dev: false 2009 + 2010 + /serve-static@1.15.0: 2011 + resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} 2012 + engines: {node: '>= 0.8.0'} 2013 + dependencies: 2014 + encodeurl: 1.0.2 2015 + escape-html: 1.0.3 2016 + parseurl: 1.3.3 2017 + send: 0.18.0 2018 + transitivePeerDependencies: 2019 + - supports-color 2020 + dev: false 2021 + 2022 + /setprototypeof@1.2.0: 2023 + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} 2024 + dev: false 2025 + 2026 + /shebang-command@2.0.0: 2027 + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 2028 + engines: {node: '>=8'} 2029 + dependencies: 2030 + shebang-regex: 3.0.0 2031 + dev: true 2032 + 2033 + /shebang-regex@3.0.0: 2034 + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 2035 + engines: {node: '>=8'} 2036 + dev: true 2037 + 2038 + /shell-quote@1.8.1: 2039 + resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} 2040 + dev: true 2041 + 2042 + /side-channel@1.0.4: 2043 + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} 2044 + dependencies: 2045 + call-bind: 1.0.2 2046 + get-intrinsic: 1.2.1 2047 + object-inspect: 1.12.3 2048 + dev: false 2049 + 2050 + /slash@3.0.0: 2051 + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 2052 + engines: {node: '>=8'} 2053 + dev: true 2054 + 2055 + /sonic-boom@3.3.0: 2056 + resolution: {integrity: sha512-LYxp34KlZ1a2Jb8ZQgFCK3niIHzibdwtwNUWKg0qQRzsDoJ3Gfgkf8KdBTFU3SkejDEIlWwnSnpVdOZIhFMl/g==} 2057 + dependencies: 2058 + atomic-sleep: 1.0.0 2059 + dev: false 2060 + 2061 + /split2@4.2.0: 2062 + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} 2063 + engines: {node: '>= 10.x'} 2064 + dev: false 2065 + 2066 + /statuses@2.0.1: 2067 + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} 2068 + engines: {node: '>= 0.8'} 2069 + dev: false 2070 + 2071 + /string-width@4.2.3: 2072 + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 2073 + engines: {node: '>=8'} 2074 + dependencies: 2075 + emoji-regex: 8.0.0 2076 + is-fullwidth-code-point: 3.0.0 2077 + strip-ansi: 6.0.1 2078 + dev: true 2079 + 2080 + /strip-ansi@6.0.1: 2081 + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 2082 + engines: {node: '>=8'} 2083 + dependencies: 2084 + ansi-regex: 5.0.1 2085 + dev: true 2086 + 2087 + /strip-json-comments@3.1.1: 2088 + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 2089 + engines: {node: '>=8'} 2090 + dev: true 2091 + 2092 + /supports-color@7.2.0: 2093 + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 2094 + engines: {node: '>=8'} 2095 + dependencies: 2096 + has-flag: 4.0.0 2097 + dev: true 2098 + 2099 + /text-table@0.2.0: 2100 + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 2101 + dev: true 2102 + 2103 + /thread-stream@2.3.0: 2104 + resolution: {integrity: sha512-kaDqm1DET9pp3NXwR8382WHbnpXnRkN9xGN9dQt3B2+dmXiW8X1SOwmFOxAErEQ47ObhZ96J6yhZNXuyCOL7KA==} 2105 + dependencies: 2106 + real-require: 0.2.0 2107 + dev: false 2108 + 2109 + /tlds@1.238.0: 2110 + resolution: {integrity: sha512-lFPF9pZFhLrPodaJ0wt9QIN0l8jOxqmUezGZnm7BfkDSVd9q667oVIJukLVzhF+4oW7uDlrLlfJrL5yu9RWwew==} 2111 + hasBin: true 2112 + dev: false 2113 + 2114 + /to-regex-range@5.0.1: 2115 + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 2116 + engines: {node: '>=8.0'} 2117 + dependencies: 2118 + is-number: 7.0.0 2119 + dev: true 2120 + 2121 + /toidentifier@1.0.1: 2122 + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} 2123 + engines: {node: '>=0.6'} 2124 + dev: false 2125 + 2126 + /ts-node@10.9.1(@types/node@20.2.5)(typescript@5.0.4): 2127 + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} 2128 + hasBin: true 2129 + peerDependencies: 2130 + '@swc/core': '>=1.2.50' 2131 + '@swc/wasm': '>=1.2.50' 2132 + '@types/node': '*' 2133 + typescript: '>=2.7' 2134 + peerDependenciesMeta: 2135 + '@swc/core': 2136 + optional: true 2137 + '@swc/wasm': 2138 + optional: true 2139 + dependencies: 2140 + '@cspotcode/source-map-support': 0.8.1 2141 + '@tsconfig/node10': 1.0.9 2142 + '@tsconfig/node12': 1.0.11 2143 + '@tsconfig/node14': 1.0.3 2144 + '@tsconfig/node16': 1.0.4 2145 + '@types/node': 20.2.5 2146 + acorn: 8.8.2 2147 + acorn-walk: 8.2.0 2148 + arg: 4.1.3 2149 + create-require: 1.1.1 2150 + diff: 4.0.2 2151 + make-error: 1.3.6 2152 + typescript: 5.0.4 2153 + v8-compile-cache-lib: 3.0.1 2154 + yn: 3.1.1 2155 + dev: true 2156 + 2157 + /tslib@1.14.1: 2158 + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} 2159 + dev: true 2160 + 2161 + /tslib@2.5.2: 2162 + resolution: {integrity: sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==} 2163 + dev: false 2164 + optional: true 2165 + 2166 + /tsutils@3.21.0(typescript@5.0.4): 2167 + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} 2168 + engines: {node: '>= 6'} 2169 + peerDependencies: 2170 + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' 2171 + dependencies: 2172 + tslib: 1.14.1 2173 + typescript: 5.0.4 2174 + dev: true 2175 + 2176 + /type-check@0.4.0: 2177 + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 2178 + engines: {node: '>= 0.8.0'} 2179 + dependencies: 2180 + prelude-ls: 1.2.1 2181 + dev: true 2182 + 2183 + /type-fest@0.20.2: 2184 + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 2185 + engines: {node: '>=10'} 2186 + dev: true 2187 + 2188 + /type-is@1.6.18: 2189 + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} 2190 + engines: {node: '>= 0.6'} 2191 + dependencies: 2192 + media-typer: 0.3.0 2193 + mime-types: 2.1.35 2194 + dev: false 2195 + 2196 + /typed-emitter@2.1.0: 2197 + resolution: {integrity: sha512-g/KzbYKbH5C2vPkaXGu8DJlHrGKHLsM25Zg9WuC9pMGfuvT+X25tZQWo5fK1BjBm8+UrVE9LDCvaY0CQk+fXDA==} 2198 + optionalDependencies: 2199 + rxjs: 7.8.1 2200 + dev: false 2201 + 2202 + /typescript@5.0.4: 2203 + resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} 2204 + engines: {node: '>=12.20'} 2205 + hasBin: true 2206 + dev: true 2207 + 2208 + /uint8arrays@3.0.0: 2209 + resolution: {integrity: sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==} 2210 + dependencies: 2211 + multiformats: 9.9.0 2212 + dev: false 2213 + 2214 + /unpipe@1.0.0: 2215 + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} 2216 + engines: {node: '>= 0.8'} 2217 + dev: false 2218 + 2219 + /uri-js@4.4.1: 2220 + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 2221 + dependencies: 2222 + punycode: 2.3.0 2223 + dev: true 2224 + 2225 + /utils-merge@1.0.1: 2226 + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} 2227 + engines: {node: '>= 0.4.0'} 2228 + dev: false 2229 + 2230 + /v8-compile-cache-lib@3.0.1: 2231 + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} 2232 + dev: true 2233 + 2234 + /varint@6.0.0: 2235 + resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==} 2236 + dev: false 2237 + 2238 + /vary@1.1.2: 2239 + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} 2240 + engines: {node: '>= 0.8'} 2241 + dev: false 2242 + 2243 + /which@2.0.2: 2244 + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 2245 + engines: {node: '>= 8'} 2246 + hasBin: true 2247 + dependencies: 2248 + isexe: 2.0.0 2249 + dev: true 2250 + 2251 + /word-wrap@1.2.3: 2252 + resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} 2253 + engines: {node: '>=0.10.0'} 2254 + dev: true 2255 + 2256 + /wrap-ansi@7.0.0: 2257 + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 2258 + engines: {node: '>=10'} 2259 + dependencies: 2260 + ansi-styles: 4.3.0 2261 + string-width: 4.2.3 2262 + strip-ansi: 6.0.1 2263 + dev: true 2264 + 2265 + /wrappy@1.0.2: 2266 + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 2267 + dev: true 2268 + 2269 + /ws@8.13.0: 2270 + resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} 2271 + engines: {node: '>=10.0.0'} 2272 + peerDependencies: 2273 + bufferutil: ^4.0.1 2274 + utf-8-validate: '>=5.0.2' 2275 + peerDependenciesMeta: 2276 + bufferutil: 2277 + optional: true 2278 + utf-8-validate: 2279 + optional: true 2280 + dev: false 2281 + 2282 + /xtend@4.0.2: 2283 + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} 2284 + engines: {node: '>=0.4'} 2285 + dev: false 2286 + 2287 + /y18n@5.0.8: 2288 + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} 2289 + engines: {node: '>=10'} 2290 + dev: true 2291 + 2292 + /yallist@4.0.0: 2293 + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 2294 + dev: true 2295 + 2296 + /yargs-parser@21.1.1: 2297 + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} 2298 + engines: {node: '>=12'} 2299 + dev: true 2300 + 2301 + /yargs@17.7.2: 2302 + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} 2303 + engines: {node: '>=12'} 2304 + dependencies: 2305 + cliui: 8.0.1 2306 + escalade: 3.1.1 2307 + get-caller-file: 2.0.5 2308 + require-directory: 2.1.1 2309 + string-width: 4.2.3 2310 + y18n: 5.0.8 2311 + yargs-parser: 21.1.1 2312 + dev: true 2313 + 2314 + /yn@3.1.1: 2315 + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} 2316 + engines: {node: '>=6'} 2317 + dev: true 2318 + 2319 + /yocto-queue@0.1.0: 2320 + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 2321 + engines: {node: '>=10'} 2322 + dev: true 2323 + 2324 + /zod@3.21.4: 2325 + resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} 2326 + dev: false
+89
scripts/publishFeedGen.ts
··· 1 + import dotenv from 'dotenv' 2 + import { AtpAgent, BlobRef } from '@atproto/api' 3 + import fs from 'fs/promises' 4 + import { ids } from '../src/lexicon/lexicons' 5 + 6 + const run = async () => { 7 + dotenv.config() 8 + 9 + // YOUR bluesky handle 10 + // Ex: user.bsky.social 11 + const handle = process.env.HANDLE! 12 + 13 + // YOUR bluesky password, or preferably an App Password (found in your client settings) 14 + // Ex: abcd-1234-efgh-5678 15 + const password = process.env.PASSWORD! 16 + 17 + // A short name for the record that will show in urls 18 + // Lowercase with no spaces. 19 + // Ex: whats-hot 20 + const recordName = 'whos-eepy' 21 + 22 + // A display name for your feed 23 + // Ex: What's Hot 24 + const displayName = "who's eepy" 25 + 26 + // (Optional) A description of your feed 27 + // Ex: Top trending content from the whole network 28 + const description = 'eepy girls (gender-neutral)' 29 + 30 + // (Optional) The path to an image to be used as your feed's avatar 31 + // Ex: ~/path/to/avatar.jpeg 32 + const avatar = '' 33 + 34 + // ------------------------------------- 35 + // NO NEED TO TOUCH ANYTHING BELOW HERE 36 + // ------------------------------------- 37 + 38 + if (!process.env.FEEDGEN_SERVICE_DID && !process.env.FEEDGEN_HOSTNAME) { 39 + throw new Error('Please provide a hostname in the .env file') 40 + } 41 + const feedGenDid = 42 + process.env.FEEDGEN_SERVICE_DID ?? `did:web:${process.env.FEEDGEN_HOSTNAME}` 43 + 44 + // only update this if in a test environment 45 + const agent = new AtpAgent({ service: 'https://bsky.social' }) 46 + await agent.login({ identifier: handle, password }) 47 + 48 + // try { 49 + // await agent.api.app.bsky.feed.describeFeedGenerator() 50 + // } catch (err) { 51 + // throw new Error( 52 + // 'The bluesky server is not ready to accept published custom feeds yet', 53 + // ) 54 + // } 55 + 56 + let avatarRef: BlobRef | undefined 57 + if (avatar) { 58 + let encoding: string 59 + if (avatar.endsWith('png')) { 60 + encoding = 'image/png' 61 + } else if (avatar.endsWith('jpg') || avatar.endsWith('jpeg')) { 62 + encoding = 'image/jpeg' 63 + } else { 64 + throw new Error('expected png or jpeg') 65 + } 66 + const img = await fs.readFile(avatar) 67 + const blobRes = await agent.api.com.atproto.repo.uploadBlob(img, { 68 + encoding, 69 + }) 70 + avatarRef = blobRes.data.blob 71 + } 72 + 73 + await agent.api.com.atproto.repo.createRecord({ 74 + repo: agent.session?.did ?? '', 75 + collection: ids.AppBskyFeedGenerator, 76 + rkey: recordName, 77 + record: { 78 + did: feedGenDid, 79 + displayName: displayName, 80 + description: description, 81 + avatar: avatarRef, 82 + createdAt: new Date().toISOString(), 83 + }, 84 + }) 85 + 86 + console.log('All done 🎉') 87 + } 88 + 89 + run()
scripts/sun.png

This is a binary file and will not be displayed.

+14
src/algos/index.ts
··· 1 + import { AppContext } from '../config' 2 + import { 3 + QueryParams, 4 + OutputSchema as AlgoOutput, 5 + } from '../lexicon/types/app/bsky/feed/getFeedSkeleton' 6 + import * as whosAlice from './whos-eepy' 7 + 8 + type AlgoHandler = (ctx: AppContext, params: QueryParams) => Promise<AlgoOutput> 9 + 10 + const algos: Record<string, AlgoHandler> = { 11 + ['whos-eepy']: whosAlice.handler, 12 + } 13 + 14 + export default algos
+43
src/algos/whos-eepy.ts
··· 1 + import { InvalidRequestError } from '@atproto/xrpc-server' 2 + import { QueryParams } from '../lexicon/types/app/bsky/feed/getFeedSkeleton' 3 + import { AppContext } from '../config' 4 + 5 + export const uri = 6 + 'at://did:web:feeds.bsky.sh/app.bsky.feed.generator/whos-eepy' 7 + 8 + export const handler = async (ctx: AppContext, params: QueryParams) => { 9 + let builder = ctx.db 10 + .selectFrom('post') 11 + .select(['uri', 'cid', 'indexedAt']) 12 + .orderBy('indexedAt', 'desc') 13 + .orderBy('cid', 'desc') 14 + .limit(params.limit) 15 + 16 + if (params.cursor) { 17 + const [indexedAt, cid] = params.cursor.split('::') 18 + if (!indexedAt || !cid) { 19 + throw new InvalidRequestError('malformed cursor') 20 + } 21 + const timeStr = new Date(parseInt(indexedAt, 10)).toISOString() 22 + builder = builder 23 + .where('post.indexedAt', '<', timeStr) 24 + .orWhere((qb) => qb.where('post.indexedAt', '=', timeStr)) 25 + .where('post.cid', '<', cid) 26 + } 27 + const res = await builder.execute() 28 + 29 + const feed = res.map((row) => ({ 30 + post: row.uri, 31 + })) 32 + 33 + let cursor: string | undefined 34 + const last = res.at(-1) 35 + if (last) { 36 + cursor = `${new Date(last.indexedAt).getTime()}::${last.cid}` 37 + } 38 + 39 + return { 40 + cursor, 41 + feed, 42 + } 43 + }
+18
src/auth.ts
··· 1 + import express from 'express' 2 + import { verifyJwt, AuthRequiredError } from '@atproto/xrpc-server' 3 + import { DidResolver } from '@atproto/did-resolver' 4 + 5 + export const validateAuth = async ( 6 + req: express.Request, 7 + serviceDid: string, 8 + didResolver: DidResolver, 9 + ): Promise<string> => { 10 + const { authorization = '' } = req.headers 11 + if (!authorization.startsWith('Bearer ')) { 12 + throw new AuthRequiredError() 13 + } 14 + const jwt = authorization.replace('Bearer ', '').trim() 15 + return verifyJwt(jwt, serviceDid, async (did: string) => { 16 + return didResolver.resolveAtprotoKey(did) 17 + }) 18 + }
+16
src/config.ts
··· 1 + import { Database } from './db' 2 + import { DidResolver } from '@atproto/did-resolver' 3 + 4 + export type AppContext = { 5 + db: Database 6 + didResolver: DidResolver 7 + cfg: Config 8 + } 9 + 10 + export type Config = { 11 + port: number 12 + hostname: string 13 + postgresConnectionString: string 14 + subscriptionEndpoint: string 15 + serviceDid: string 16 + }
+22
src/db/index.ts
··· 1 + import { Pool } from 'pg' 2 + import { Kysely, Migrator, PostgresDialect } from 'kysely' 3 + import { DatabaseSchema } from './schema' 4 + import { migrationProvider } from './migrations' 5 + 6 + export const createDb = (location: string): Database => { 7 + return new Kysely<DatabaseSchema>({ 8 + dialect: new PostgresDialect({ 9 + pool: new Pool({ 10 + connectionString: location, 11 + }), 12 + }), 13 + }) 14 + } 15 + 16 + export const migrateToLatest = async (db: Database) => { 17 + const migrator = new Migrator({ db, provider: migrationProvider }) 18 + const { error } = await migrator.migrateToLatest() 19 + if (error) throw error 20 + } 21 + 22 + export type Database = Kysely<DatabaseSchema>
+79
src/db/migrations.ts
··· 1 + import { Kysely, Migration, MigrationProvider } from 'kysely' 2 + 3 + const migrations: Record<string, Migration> = {} 4 + 5 + export const migrationProvider: MigrationProvider = { 6 + async getMigrations() { 7 + return migrations 8 + }, 9 + } 10 + 11 + migrations['001'] = { 12 + async up(db: Kysely<unknown>) { 13 + await db.schema 14 + .createTable('post') 15 + .addColumn('uri', 'varchar', (col) => col.primaryKey()) 16 + .addColumn('cid', 'varchar', (col) => col.notNull()) 17 + .addColumn('replyParent', 'varchar') 18 + .addColumn('replyRoot', 'varchar') 19 + .addColumn('indexedAt', 'varchar', (col) => col.notNull()) 20 + .execute() 21 + await db.schema 22 + .createTable('sub_state') 23 + .addColumn('service', 'varchar', (col) => col.primaryKey()) 24 + .addColumn('cursor', 'integer', (col) => col.notNull()) 25 + .execute() 26 + }, 27 + async down(db: Kysely<unknown>) { 28 + await db.schema.dropTable('post').execute() 29 + await db.schema.dropTable('sub_state').execute() 30 + }, 31 + } 32 + 33 + // you cannot actually create a table called "user" in postgres because it's a reserved word :( 34 + migrations['002'] = { 35 + async up(db: Kysely<unknown>) { 36 + await db.schema 37 + .createTable('user') 38 + .addColumn('did', 'varchar', (col) => col.primaryKey()) 39 + .addColumn('handle', 'varchar', (col) => col.notNull()) 40 + .addColumn('displayName', 'varchar') 41 + .addColumn('bio', 'varchar') 42 + .addColumn('indexedAt', 'varchar', (col) => col.notNull()) 43 + .execute() 44 + }, 45 + async down(db: Kysely<unknown>) { 46 + await db.schema.dropTable('user').execute() 47 + }, 48 + } 49 + 50 + migrations['003'] = { 51 + async up(db: Kysely<unknown>) { 52 + await db.schema 53 + .createTable('repost') 54 + .addColumn('uri', 'varchar', (col) => col.primaryKey()) 55 + .addColumn('cid', 'varchar', (col) => col.notNull()) 56 + .addColumn('subject', 'varchar', (col) => col.notNull()) 57 + .addColumn('indexedAt', 'varchar', (col) => col.notNull()) 58 + .execute() 59 + }, 60 + async down(db: Kysely<unknown>) { 61 + await db.schema.dropTable('repost').execute() 62 + }, 63 + } 64 + 65 + migrations['004'] = { 66 + async up(db: Kysely<unknown>) { 67 + await db.schema 68 + .createTable('atproto_user') 69 + .addColumn('did', 'varchar', (col) => col.primaryKey()) 70 + .addColumn('handle', 'varchar', (col) => col.notNull()) 71 + .addColumn('displayName', 'varchar') 72 + .addColumn('bio', 'varchar') 73 + .addColumn('indexedAt', 'varchar', (col) => col.notNull()) 74 + .execute() 75 + }, 76 + async down(db: Kysely<unknown>) { 77 + await db.schema.dropTable('atproto_user').execute() 78 + }, 79 + }
+34
src/db/schema.ts
··· 1 + export type DatabaseSchema = { 2 + post: Post 3 + repost: Repost 4 + atproto_user: User 5 + sub_state: SubState 6 + } 7 + 8 + export type Post = { 9 + uri: string 10 + cid: string 11 + replyParent: string | null 12 + replyRoot: string | null 13 + indexedAt: string 14 + } 15 + 16 + export type Repost = { 17 + uri: string 18 + cid: string 19 + subject: string 20 + indexedAt: string 21 + } 22 + 23 + export type SubState = { 24 + service: string 25 + cursor: number 26 + } 27 + 28 + export type User = { 29 + did: string 30 + handle: string 31 + displayName: string | null 32 + bio: string | null 33 + indexedAt: string 34 + }
+39
src/index.ts
··· 1 + import dotenv from 'dotenv' 2 + import FeedGenerator from './server' 3 + import { AddressInfo } from 'net' 4 + 5 + const run = async () => { 6 + dotenv.config() 7 + const hostname = maybeStr(process.env.FEEDGEN_HOSTNAME) ?? 'localhost' 8 + const serviceDid = 9 + maybeStr(process.env.FEEDGEN_SERVICE_DID) ?? `did:web:${hostname}` 10 + const server = FeedGenerator.create({ 11 + port: maybeInt(process.env.FEEDGEN_PORT) ?? 3000, 12 + postgresConnectionString: process.env.DATABASE_URL!, 13 + subscriptionEndpoint: 14 + maybeStr(process.env.FEEDGEN_SUBSCRIPTION_ENDPOINT) ?? 15 + 'wss://bsky.social', 16 + hostname, 17 + serviceDid, 18 + }) 19 + await server.start() 20 + console.log( 21 + `🤖 running feed generator at http://${server.cfg.hostname}:${ 22 + server.cfg.port 23 + }, bound to ${(server.server?.address() as AddressInfo).address}`, 24 + ) 25 + } 26 + 27 + const maybeStr = (val?: string) => { 28 + if (!val) return undefined 29 + return val 30 + } 31 + 32 + const maybeInt = (val?: string) => { 33 + if (!val) return undefined 34 + const int = parseInt(val, 10) 35 + if (isNaN(int)) return undefined 36 + return int 37 + } 38 + 39 + run()
+1059
src/lexicon/index.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { 5 + createServer as createXrpcServer, 6 + Server as XrpcServer, 7 + Options as XrpcOptions, 8 + AuthVerifier, 9 + StreamAuthVerifier, 10 + } from '@atproto/xrpc-server' 11 + import { schemas } from './lexicons' 12 + import * as ComAtprotoAdminDisableAccountInvites from './types/com/atproto/admin/disableAccountInvites' 13 + import * as ComAtprotoAdminDisableInviteCodes from './types/com/atproto/admin/disableInviteCodes' 14 + import * as ComAtprotoAdminEnableAccountInvites from './types/com/atproto/admin/enableAccountInvites' 15 + import * as ComAtprotoAdminGetInviteCodes from './types/com/atproto/admin/getInviteCodes' 16 + import * as ComAtprotoAdminGetModerationAction from './types/com/atproto/admin/getModerationAction' 17 + import * as ComAtprotoAdminGetModerationActions from './types/com/atproto/admin/getModerationActions' 18 + import * as ComAtprotoAdminGetModerationReport from './types/com/atproto/admin/getModerationReport' 19 + import * as ComAtprotoAdminGetModerationReports from './types/com/atproto/admin/getModerationReports' 20 + import * as ComAtprotoAdminGetRecord from './types/com/atproto/admin/getRecord' 21 + import * as ComAtprotoAdminGetRepo from './types/com/atproto/admin/getRepo' 22 + import * as ComAtprotoAdminResolveModerationReports from './types/com/atproto/admin/resolveModerationReports' 23 + import * as ComAtprotoAdminReverseModerationAction from './types/com/atproto/admin/reverseModerationAction' 24 + import * as ComAtprotoAdminSearchRepos from './types/com/atproto/admin/searchRepos' 25 + import * as ComAtprotoAdminTakeModerationAction from './types/com/atproto/admin/takeModerationAction' 26 + import * as ComAtprotoAdminUpdateAccountEmail from './types/com/atproto/admin/updateAccountEmail' 27 + import * as ComAtprotoAdminUpdateAccountHandle from './types/com/atproto/admin/updateAccountHandle' 28 + import * as ComAtprotoIdentityResolveHandle from './types/com/atproto/identity/resolveHandle' 29 + import * as ComAtprotoIdentityUpdateHandle from './types/com/atproto/identity/updateHandle' 30 + import * as ComAtprotoLabelQueryLabels from './types/com/atproto/label/queryLabels' 31 + import * as ComAtprotoLabelSubscribeLabels from './types/com/atproto/label/subscribeLabels' 32 + import * as ComAtprotoModerationCreateReport from './types/com/atproto/moderation/createReport' 33 + import * as ComAtprotoRepoApplyWrites from './types/com/atproto/repo/applyWrites' 34 + import * as ComAtprotoRepoCreateRecord from './types/com/atproto/repo/createRecord' 35 + import * as ComAtprotoRepoDeleteRecord from './types/com/atproto/repo/deleteRecord' 36 + import * as ComAtprotoRepoDescribeRepo from './types/com/atproto/repo/describeRepo' 37 + import * as ComAtprotoRepoGetRecord from './types/com/atproto/repo/getRecord' 38 + import * as ComAtprotoRepoListRecords from './types/com/atproto/repo/listRecords' 39 + import * as ComAtprotoRepoPutRecord from './types/com/atproto/repo/putRecord' 40 + import * as ComAtprotoRepoRebaseRepo from './types/com/atproto/repo/rebaseRepo' 41 + import * as ComAtprotoRepoUploadBlob from './types/com/atproto/repo/uploadBlob' 42 + import * as ComAtprotoServerCreateAccount from './types/com/atproto/server/createAccount' 43 + import * as ComAtprotoServerCreateAppPassword from './types/com/atproto/server/createAppPassword' 44 + import * as ComAtprotoServerCreateInviteCode from './types/com/atproto/server/createInviteCode' 45 + import * as ComAtprotoServerCreateInviteCodes from './types/com/atproto/server/createInviteCodes' 46 + import * as ComAtprotoServerCreateSession from './types/com/atproto/server/createSession' 47 + import * as ComAtprotoServerDeleteAccount from './types/com/atproto/server/deleteAccount' 48 + import * as ComAtprotoServerDeleteSession from './types/com/atproto/server/deleteSession' 49 + import * as ComAtprotoServerDescribeServer from './types/com/atproto/server/describeServer' 50 + import * as ComAtprotoServerGetAccountInviteCodes from './types/com/atproto/server/getAccountInviteCodes' 51 + import * as ComAtprotoServerGetSession from './types/com/atproto/server/getSession' 52 + import * as ComAtprotoServerListAppPasswords from './types/com/atproto/server/listAppPasswords' 53 + import * as ComAtprotoServerRefreshSession from './types/com/atproto/server/refreshSession' 54 + import * as ComAtprotoServerRequestAccountDelete from './types/com/atproto/server/requestAccountDelete' 55 + import * as ComAtprotoServerRequestPasswordReset from './types/com/atproto/server/requestPasswordReset' 56 + import * as ComAtprotoServerResetPassword from './types/com/atproto/server/resetPassword' 57 + import * as ComAtprotoServerRevokeAppPassword from './types/com/atproto/server/revokeAppPassword' 58 + import * as ComAtprotoSyncGetBlob from './types/com/atproto/sync/getBlob' 59 + import * as ComAtprotoSyncGetBlocks from './types/com/atproto/sync/getBlocks' 60 + import * as ComAtprotoSyncGetCheckout from './types/com/atproto/sync/getCheckout' 61 + import * as ComAtprotoSyncGetCommitPath from './types/com/atproto/sync/getCommitPath' 62 + import * as ComAtprotoSyncGetHead from './types/com/atproto/sync/getHead' 63 + import * as ComAtprotoSyncGetRecord from './types/com/atproto/sync/getRecord' 64 + import * as ComAtprotoSyncGetRepo from './types/com/atproto/sync/getRepo' 65 + import * as ComAtprotoSyncListBlobs from './types/com/atproto/sync/listBlobs' 66 + import * as ComAtprotoSyncListRepos from './types/com/atproto/sync/listRepos' 67 + import * as ComAtprotoSyncNotifyOfUpdate from './types/com/atproto/sync/notifyOfUpdate' 68 + import * as ComAtprotoSyncRequestCrawl from './types/com/atproto/sync/requestCrawl' 69 + import * as ComAtprotoSyncSubscribeRepos from './types/com/atproto/sync/subscribeRepos' 70 + import * as AppBskyActorGetPreferences from './types/app/bsky/actor/getPreferences' 71 + import * as AppBskyActorGetProfile from './types/app/bsky/actor/getProfile' 72 + import * as AppBskyActorGetProfiles from './types/app/bsky/actor/getProfiles' 73 + import * as AppBskyActorGetSuggestions from './types/app/bsky/actor/getSuggestions' 74 + import * as AppBskyActorPutPreferences from './types/app/bsky/actor/putPreferences' 75 + import * as AppBskyActorSearchActors from './types/app/bsky/actor/searchActors' 76 + import * as AppBskyActorSearchActorsTypeahead from './types/app/bsky/actor/searchActorsTypeahead' 77 + import * as AppBskyFeedDescribeFeedGenerator from './types/app/bsky/feed/describeFeedGenerator' 78 + import * as AppBskyFeedGetActorFeeds from './types/app/bsky/feed/getActorFeeds' 79 + import * as AppBskyFeedGetAuthorFeed from './types/app/bsky/feed/getAuthorFeed' 80 + import * as AppBskyFeedGetFeed from './types/app/bsky/feed/getFeed' 81 + import * as AppBskyFeedGetFeedGenerator from './types/app/bsky/feed/getFeedGenerator' 82 + import * as AppBskyFeedGetFeedSkeleton from './types/app/bsky/feed/getFeedSkeleton' 83 + import * as AppBskyFeedGetLikes from './types/app/bsky/feed/getLikes' 84 + import * as AppBskyFeedGetPostThread from './types/app/bsky/feed/getPostThread' 85 + import * as AppBskyFeedGetPosts from './types/app/bsky/feed/getPosts' 86 + import * as AppBskyFeedGetRepostedBy from './types/app/bsky/feed/getRepostedBy' 87 + import * as AppBskyFeedGetSavedFeeds from './types/app/bsky/feed/getSavedFeeds' 88 + import * as AppBskyFeedGetTimeline from './types/app/bsky/feed/getTimeline' 89 + import * as AppBskyFeedSaveFeed from './types/app/bsky/feed/saveFeed' 90 + import * as AppBskyFeedUnsaveFeed from './types/app/bsky/feed/unsaveFeed' 91 + import * as AppBskyGraphGetBlocks from './types/app/bsky/graph/getBlocks' 92 + import * as AppBskyGraphGetFollowers from './types/app/bsky/graph/getFollowers' 93 + import * as AppBskyGraphGetFollows from './types/app/bsky/graph/getFollows' 94 + import * as AppBskyGraphGetList from './types/app/bsky/graph/getList' 95 + import * as AppBskyGraphGetListMutes from './types/app/bsky/graph/getListMutes' 96 + import * as AppBskyGraphGetLists from './types/app/bsky/graph/getLists' 97 + import * as AppBskyGraphGetMutes from './types/app/bsky/graph/getMutes' 98 + import * as AppBskyGraphMuteActor from './types/app/bsky/graph/muteActor' 99 + import * as AppBskyGraphMuteActorList from './types/app/bsky/graph/muteActorList' 100 + import * as AppBskyGraphUnmuteActor from './types/app/bsky/graph/unmuteActor' 101 + import * as AppBskyGraphUnmuteActorList from './types/app/bsky/graph/unmuteActorList' 102 + import * as AppBskyNotificationGetUnreadCount from './types/app/bsky/notification/getUnreadCount' 103 + import * as AppBskyNotificationListNotifications from './types/app/bsky/notification/listNotifications' 104 + import * as AppBskyNotificationUpdateSeen from './types/app/bsky/notification/updateSeen' 105 + import * as AppBskyUnspeccedGetPopular from './types/app/bsky/unspecced/getPopular' 106 + 107 + export const COM_ATPROTO_ADMIN = { 108 + DefsTakedown: 'com.atproto.admin.defs#takedown', 109 + DefsFlag: 'com.atproto.admin.defs#flag', 110 + DefsAcknowledge: 'com.atproto.admin.defs#acknowledge', 111 + DefsEscalate: 'com.atproto.admin.defs#escalate', 112 + } 113 + export const COM_ATPROTO_MODERATION = { 114 + DefsReasonSpam: 'com.atproto.moderation.defs#reasonSpam', 115 + DefsReasonViolation: 'com.atproto.moderation.defs#reasonViolation', 116 + DefsReasonMisleading: 'com.atproto.moderation.defs#reasonMisleading', 117 + DefsReasonSexual: 'com.atproto.moderation.defs#reasonSexual', 118 + DefsReasonRude: 'com.atproto.moderation.defs#reasonRude', 119 + DefsReasonOther: 'com.atproto.moderation.defs#reasonOther', 120 + } 121 + export const APP_BSKY_GRAPH = { 122 + DefsModlist: 'app.bsky.graph.defs#modlist', 123 + } 124 + 125 + export function createServer(options?: XrpcOptions): Server { 126 + return new Server(options) 127 + } 128 + 129 + export class Server { 130 + xrpc: XrpcServer 131 + com: ComNS 132 + app: AppNS 133 + 134 + constructor(options?: XrpcOptions) { 135 + this.xrpc = createXrpcServer(schemas, options) 136 + this.com = new ComNS(this) 137 + this.app = new AppNS(this) 138 + } 139 + } 140 + 141 + export class ComNS { 142 + _server: Server 143 + atproto: AtprotoNS 144 + 145 + constructor(server: Server) { 146 + this._server = server 147 + this.atproto = new AtprotoNS(server) 148 + } 149 + } 150 + 151 + export class AtprotoNS { 152 + _server: Server 153 + admin: AdminNS 154 + identity: IdentityNS 155 + label: LabelNS 156 + moderation: ModerationNS 157 + repo: RepoNS 158 + server: ServerNS 159 + sync: SyncNS 160 + 161 + constructor(server: Server) { 162 + this._server = server 163 + this.admin = new AdminNS(server) 164 + this.identity = new IdentityNS(server) 165 + this.label = new LabelNS(server) 166 + this.moderation = new ModerationNS(server) 167 + this.repo = new RepoNS(server) 168 + this.server = new ServerNS(server) 169 + this.sync = new SyncNS(server) 170 + } 171 + } 172 + 173 + export class AdminNS { 174 + _server: Server 175 + 176 + constructor(server: Server) { 177 + this._server = server 178 + } 179 + 180 + disableAccountInvites<AV extends AuthVerifier>( 181 + cfg: ConfigOf< 182 + AV, 183 + ComAtprotoAdminDisableAccountInvites.Handler<ExtractAuth<AV>> 184 + >, 185 + ) { 186 + const nsid = 'com.atproto.admin.disableAccountInvites' // @ts-ignore 187 + return this._server.xrpc.method(nsid, cfg) 188 + } 189 + 190 + disableInviteCodes<AV extends AuthVerifier>( 191 + cfg: ConfigOf< 192 + AV, 193 + ComAtprotoAdminDisableInviteCodes.Handler<ExtractAuth<AV>> 194 + >, 195 + ) { 196 + const nsid = 'com.atproto.admin.disableInviteCodes' // @ts-ignore 197 + return this._server.xrpc.method(nsid, cfg) 198 + } 199 + 200 + enableAccountInvites<AV extends AuthVerifier>( 201 + cfg: ConfigOf< 202 + AV, 203 + ComAtprotoAdminEnableAccountInvites.Handler<ExtractAuth<AV>> 204 + >, 205 + ) { 206 + const nsid = 'com.atproto.admin.enableAccountInvites' // @ts-ignore 207 + return this._server.xrpc.method(nsid, cfg) 208 + } 209 + 210 + getInviteCodes<AV extends AuthVerifier>( 211 + cfg: ConfigOf<AV, ComAtprotoAdminGetInviteCodes.Handler<ExtractAuth<AV>>>, 212 + ) { 213 + const nsid = 'com.atproto.admin.getInviteCodes' // @ts-ignore 214 + return this._server.xrpc.method(nsid, cfg) 215 + } 216 + 217 + getModerationAction<AV extends AuthVerifier>( 218 + cfg: ConfigOf< 219 + AV, 220 + ComAtprotoAdminGetModerationAction.Handler<ExtractAuth<AV>> 221 + >, 222 + ) { 223 + const nsid = 'com.atproto.admin.getModerationAction' // @ts-ignore 224 + return this._server.xrpc.method(nsid, cfg) 225 + } 226 + 227 + getModerationActions<AV extends AuthVerifier>( 228 + cfg: ConfigOf< 229 + AV, 230 + ComAtprotoAdminGetModerationActions.Handler<ExtractAuth<AV>> 231 + >, 232 + ) { 233 + const nsid = 'com.atproto.admin.getModerationActions' // @ts-ignore 234 + return this._server.xrpc.method(nsid, cfg) 235 + } 236 + 237 + getModerationReport<AV extends AuthVerifier>( 238 + cfg: ConfigOf< 239 + AV, 240 + ComAtprotoAdminGetModerationReport.Handler<ExtractAuth<AV>> 241 + >, 242 + ) { 243 + const nsid = 'com.atproto.admin.getModerationReport' // @ts-ignore 244 + return this._server.xrpc.method(nsid, cfg) 245 + } 246 + 247 + getModerationReports<AV extends AuthVerifier>( 248 + cfg: ConfigOf< 249 + AV, 250 + ComAtprotoAdminGetModerationReports.Handler<ExtractAuth<AV>> 251 + >, 252 + ) { 253 + const nsid = 'com.atproto.admin.getModerationReports' // @ts-ignore 254 + return this._server.xrpc.method(nsid, cfg) 255 + } 256 + 257 + getRecord<AV extends AuthVerifier>( 258 + cfg: ConfigOf<AV, ComAtprotoAdminGetRecord.Handler<ExtractAuth<AV>>>, 259 + ) { 260 + const nsid = 'com.atproto.admin.getRecord' // @ts-ignore 261 + return this._server.xrpc.method(nsid, cfg) 262 + } 263 + 264 + getRepo<AV extends AuthVerifier>( 265 + cfg: ConfigOf<AV, ComAtprotoAdminGetRepo.Handler<ExtractAuth<AV>>>, 266 + ) { 267 + const nsid = 'com.atproto.admin.getRepo' // @ts-ignore 268 + return this._server.xrpc.method(nsid, cfg) 269 + } 270 + 271 + resolveModerationReports<AV extends AuthVerifier>( 272 + cfg: ConfigOf< 273 + AV, 274 + ComAtprotoAdminResolveModerationReports.Handler<ExtractAuth<AV>> 275 + >, 276 + ) { 277 + const nsid = 'com.atproto.admin.resolveModerationReports' // @ts-ignore 278 + return this._server.xrpc.method(nsid, cfg) 279 + } 280 + 281 + reverseModerationAction<AV extends AuthVerifier>( 282 + cfg: ConfigOf< 283 + AV, 284 + ComAtprotoAdminReverseModerationAction.Handler<ExtractAuth<AV>> 285 + >, 286 + ) { 287 + const nsid = 'com.atproto.admin.reverseModerationAction' // @ts-ignore 288 + return this._server.xrpc.method(nsid, cfg) 289 + } 290 + 291 + searchRepos<AV extends AuthVerifier>( 292 + cfg: ConfigOf<AV, ComAtprotoAdminSearchRepos.Handler<ExtractAuth<AV>>>, 293 + ) { 294 + const nsid = 'com.atproto.admin.searchRepos' // @ts-ignore 295 + return this._server.xrpc.method(nsid, cfg) 296 + } 297 + 298 + takeModerationAction<AV extends AuthVerifier>( 299 + cfg: ConfigOf< 300 + AV, 301 + ComAtprotoAdminTakeModerationAction.Handler<ExtractAuth<AV>> 302 + >, 303 + ) { 304 + const nsid = 'com.atproto.admin.takeModerationAction' // @ts-ignore 305 + return this._server.xrpc.method(nsid, cfg) 306 + } 307 + 308 + updateAccountEmail<AV extends AuthVerifier>( 309 + cfg: ConfigOf< 310 + AV, 311 + ComAtprotoAdminUpdateAccountEmail.Handler<ExtractAuth<AV>> 312 + >, 313 + ) { 314 + const nsid = 'com.atproto.admin.updateAccountEmail' // @ts-ignore 315 + return this._server.xrpc.method(nsid, cfg) 316 + } 317 + 318 + updateAccountHandle<AV extends AuthVerifier>( 319 + cfg: ConfigOf< 320 + AV, 321 + ComAtprotoAdminUpdateAccountHandle.Handler<ExtractAuth<AV>> 322 + >, 323 + ) { 324 + const nsid = 'com.atproto.admin.updateAccountHandle' // @ts-ignore 325 + return this._server.xrpc.method(nsid, cfg) 326 + } 327 + } 328 + 329 + export class IdentityNS { 330 + _server: Server 331 + 332 + constructor(server: Server) { 333 + this._server = server 334 + } 335 + 336 + resolveHandle<AV extends AuthVerifier>( 337 + cfg: ConfigOf<AV, ComAtprotoIdentityResolveHandle.Handler<ExtractAuth<AV>>>, 338 + ) { 339 + const nsid = 'com.atproto.identity.resolveHandle' // @ts-ignore 340 + return this._server.xrpc.method(nsid, cfg) 341 + } 342 + 343 + updateHandle<AV extends AuthVerifier>( 344 + cfg: ConfigOf<AV, ComAtprotoIdentityUpdateHandle.Handler<ExtractAuth<AV>>>, 345 + ) { 346 + const nsid = 'com.atproto.identity.updateHandle' // @ts-ignore 347 + return this._server.xrpc.method(nsid, cfg) 348 + } 349 + } 350 + 351 + export class LabelNS { 352 + _server: Server 353 + 354 + constructor(server: Server) { 355 + this._server = server 356 + } 357 + 358 + queryLabels<AV extends AuthVerifier>( 359 + cfg: ConfigOf<AV, ComAtprotoLabelQueryLabels.Handler<ExtractAuth<AV>>>, 360 + ) { 361 + const nsid = 'com.atproto.label.queryLabels' // @ts-ignore 362 + return this._server.xrpc.method(nsid, cfg) 363 + } 364 + 365 + subscribeLabels<AV extends StreamAuthVerifier>( 366 + cfg: ConfigOf<AV, ComAtprotoLabelSubscribeLabels.Handler<ExtractAuth<AV>>>, 367 + ) { 368 + const nsid = 'com.atproto.label.subscribeLabels' // @ts-ignore 369 + return this._server.xrpc.streamMethod(nsid, cfg) 370 + } 371 + } 372 + 373 + export class ModerationNS { 374 + _server: Server 375 + 376 + constructor(server: Server) { 377 + this._server = server 378 + } 379 + 380 + createReport<AV extends AuthVerifier>( 381 + cfg: ConfigOf< 382 + AV, 383 + ComAtprotoModerationCreateReport.Handler<ExtractAuth<AV>> 384 + >, 385 + ) { 386 + const nsid = 'com.atproto.moderation.createReport' // @ts-ignore 387 + return this._server.xrpc.method(nsid, cfg) 388 + } 389 + } 390 + 391 + export class RepoNS { 392 + _server: Server 393 + 394 + constructor(server: Server) { 395 + this._server = server 396 + } 397 + 398 + applyWrites<AV extends AuthVerifier>( 399 + cfg: ConfigOf<AV, ComAtprotoRepoApplyWrites.Handler<ExtractAuth<AV>>>, 400 + ) { 401 + const nsid = 'com.atproto.repo.applyWrites' // @ts-ignore 402 + return this._server.xrpc.method(nsid, cfg) 403 + } 404 + 405 + createRecord<AV extends AuthVerifier>( 406 + cfg: ConfigOf<AV, ComAtprotoRepoCreateRecord.Handler<ExtractAuth<AV>>>, 407 + ) { 408 + const nsid = 'com.atproto.repo.createRecord' // @ts-ignore 409 + return this._server.xrpc.method(nsid, cfg) 410 + } 411 + 412 + deleteRecord<AV extends AuthVerifier>( 413 + cfg: ConfigOf<AV, ComAtprotoRepoDeleteRecord.Handler<ExtractAuth<AV>>>, 414 + ) { 415 + const nsid = 'com.atproto.repo.deleteRecord' // @ts-ignore 416 + return this._server.xrpc.method(nsid, cfg) 417 + } 418 + 419 + describeRepo<AV extends AuthVerifier>( 420 + cfg: ConfigOf<AV, ComAtprotoRepoDescribeRepo.Handler<ExtractAuth<AV>>>, 421 + ) { 422 + const nsid = 'com.atproto.repo.describeRepo' // @ts-ignore 423 + return this._server.xrpc.method(nsid, cfg) 424 + } 425 + 426 + getRecord<AV extends AuthVerifier>( 427 + cfg: ConfigOf<AV, ComAtprotoRepoGetRecord.Handler<ExtractAuth<AV>>>, 428 + ) { 429 + const nsid = 'com.atproto.repo.getRecord' // @ts-ignore 430 + return this._server.xrpc.method(nsid, cfg) 431 + } 432 + 433 + listRecords<AV extends AuthVerifier>( 434 + cfg: ConfigOf<AV, ComAtprotoRepoListRecords.Handler<ExtractAuth<AV>>>, 435 + ) { 436 + const nsid = 'com.atproto.repo.listRecords' // @ts-ignore 437 + return this._server.xrpc.method(nsid, cfg) 438 + } 439 + 440 + putRecord<AV extends AuthVerifier>( 441 + cfg: ConfigOf<AV, ComAtprotoRepoPutRecord.Handler<ExtractAuth<AV>>>, 442 + ) { 443 + const nsid = 'com.atproto.repo.putRecord' // @ts-ignore 444 + return this._server.xrpc.method(nsid, cfg) 445 + } 446 + 447 + rebaseRepo<AV extends AuthVerifier>( 448 + cfg: ConfigOf<AV, ComAtprotoRepoRebaseRepo.Handler<ExtractAuth<AV>>>, 449 + ) { 450 + const nsid = 'com.atproto.repo.rebaseRepo' // @ts-ignore 451 + return this._server.xrpc.method(nsid, cfg) 452 + } 453 + 454 + uploadBlob<AV extends AuthVerifier>( 455 + cfg: ConfigOf<AV, ComAtprotoRepoUploadBlob.Handler<ExtractAuth<AV>>>, 456 + ) { 457 + const nsid = 'com.atproto.repo.uploadBlob' // @ts-ignore 458 + return this._server.xrpc.method(nsid, cfg) 459 + } 460 + } 461 + 462 + export class ServerNS { 463 + _server: Server 464 + 465 + constructor(server: Server) { 466 + this._server = server 467 + } 468 + 469 + createAccount<AV extends AuthVerifier>( 470 + cfg: ConfigOf<AV, ComAtprotoServerCreateAccount.Handler<ExtractAuth<AV>>>, 471 + ) { 472 + const nsid = 'com.atproto.server.createAccount' // @ts-ignore 473 + return this._server.xrpc.method(nsid, cfg) 474 + } 475 + 476 + createAppPassword<AV extends AuthVerifier>( 477 + cfg: ConfigOf< 478 + AV, 479 + ComAtprotoServerCreateAppPassword.Handler<ExtractAuth<AV>> 480 + >, 481 + ) { 482 + const nsid = 'com.atproto.server.createAppPassword' // @ts-ignore 483 + return this._server.xrpc.method(nsid, cfg) 484 + } 485 + 486 + createInviteCode<AV extends AuthVerifier>( 487 + cfg: ConfigOf< 488 + AV, 489 + ComAtprotoServerCreateInviteCode.Handler<ExtractAuth<AV>> 490 + >, 491 + ) { 492 + const nsid = 'com.atproto.server.createInviteCode' // @ts-ignore 493 + return this._server.xrpc.method(nsid, cfg) 494 + } 495 + 496 + createInviteCodes<AV extends AuthVerifier>( 497 + cfg: ConfigOf< 498 + AV, 499 + ComAtprotoServerCreateInviteCodes.Handler<ExtractAuth<AV>> 500 + >, 501 + ) { 502 + const nsid = 'com.atproto.server.createInviteCodes' // @ts-ignore 503 + return this._server.xrpc.method(nsid, cfg) 504 + } 505 + 506 + createSession<AV extends AuthVerifier>( 507 + cfg: ConfigOf<AV, ComAtprotoServerCreateSession.Handler<ExtractAuth<AV>>>, 508 + ) { 509 + const nsid = 'com.atproto.server.createSession' // @ts-ignore 510 + return this._server.xrpc.method(nsid, cfg) 511 + } 512 + 513 + deleteAccount<AV extends AuthVerifier>( 514 + cfg: ConfigOf<AV, ComAtprotoServerDeleteAccount.Handler<ExtractAuth<AV>>>, 515 + ) { 516 + const nsid = 'com.atproto.server.deleteAccount' // @ts-ignore 517 + return this._server.xrpc.method(nsid, cfg) 518 + } 519 + 520 + deleteSession<AV extends AuthVerifier>( 521 + cfg: ConfigOf<AV, ComAtprotoServerDeleteSession.Handler<ExtractAuth<AV>>>, 522 + ) { 523 + const nsid = 'com.atproto.server.deleteSession' // @ts-ignore 524 + return this._server.xrpc.method(nsid, cfg) 525 + } 526 + 527 + describeServer<AV extends AuthVerifier>( 528 + cfg: ConfigOf<AV, ComAtprotoServerDescribeServer.Handler<ExtractAuth<AV>>>, 529 + ) { 530 + const nsid = 'com.atproto.server.describeServer' // @ts-ignore 531 + return this._server.xrpc.method(nsid, cfg) 532 + } 533 + 534 + getAccountInviteCodes<AV extends AuthVerifier>( 535 + cfg: ConfigOf< 536 + AV, 537 + ComAtprotoServerGetAccountInviteCodes.Handler<ExtractAuth<AV>> 538 + >, 539 + ) { 540 + const nsid = 'com.atproto.server.getAccountInviteCodes' // @ts-ignore 541 + return this._server.xrpc.method(nsid, cfg) 542 + } 543 + 544 + getSession<AV extends AuthVerifier>( 545 + cfg: ConfigOf<AV, ComAtprotoServerGetSession.Handler<ExtractAuth<AV>>>, 546 + ) { 547 + const nsid = 'com.atproto.server.getSession' // @ts-ignore 548 + return this._server.xrpc.method(nsid, cfg) 549 + } 550 + 551 + listAppPasswords<AV extends AuthVerifier>( 552 + cfg: ConfigOf< 553 + AV, 554 + ComAtprotoServerListAppPasswords.Handler<ExtractAuth<AV>> 555 + >, 556 + ) { 557 + const nsid = 'com.atproto.server.listAppPasswords' // @ts-ignore 558 + return this._server.xrpc.method(nsid, cfg) 559 + } 560 + 561 + refreshSession<AV extends AuthVerifier>( 562 + cfg: ConfigOf<AV, ComAtprotoServerRefreshSession.Handler<ExtractAuth<AV>>>, 563 + ) { 564 + const nsid = 'com.atproto.server.refreshSession' // @ts-ignore 565 + return this._server.xrpc.method(nsid, cfg) 566 + } 567 + 568 + requestAccountDelete<AV extends AuthVerifier>( 569 + cfg: ConfigOf< 570 + AV, 571 + ComAtprotoServerRequestAccountDelete.Handler<ExtractAuth<AV>> 572 + >, 573 + ) { 574 + const nsid = 'com.atproto.server.requestAccountDelete' // @ts-ignore 575 + return this._server.xrpc.method(nsid, cfg) 576 + } 577 + 578 + requestPasswordReset<AV extends AuthVerifier>( 579 + cfg: ConfigOf< 580 + AV, 581 + ComAtprotoServerRequestPasswordReset.Handler<ExtractAuth<AV>> 582 + >, 583 + ) { 584 + const nsid = 'com.atproto.server.requestPasswordReset' // @ts-ignore 585 + return this._server.xrpc.method(nsid, cfg) 586 + } 587 + 588 + resetPassword<AV extends AuthVerifier>( 589 + cfg: ConfigOf<AV, ComAtprotoServerResetPassword.Handler<ExtractAuth<AV>>>, 590 + ) { 591 + const nsid = 'com.atproto.server.resetPassword' // @ts-ignore 592 + return this._server.xrpc.method(nsid, cfg) 593 + } 594 + 595 + revokeAppPassword<AV extends AuthVerifier>( 596 + cfg: ConfigOf< 597 + AV, 598 + ComAtprotoServerRevokeAppPassword.Handler<ExtractAuth<AV>> 599 + >, 600 + ) { 601 + const nsid = 'com.atproto.server.revokeAppPassword' // @ts-ignore 602 + return this._server.xrpc.method(nsid, cfg) 603 + } 604 + } 605 + 606 + export class SyncNS { 607 + _server: Server 608 + 609 + constructor(server: Server) { 610 + this._server = server 611 + } 612 + 613 + getBlob<AV extends AuthVerifier>( 614 + cfg: ConfigOf<AV, ComAtprotoSyncGetBlob.Handler<ExtractAuth<AV>>>, 615 + ) { 616 + const nsid = 'com.atproto.sync.getBlob' // @ts-ignore 617 + return this._server.xrpc.method(nsid, cfg) 618 + } 619 + 620 + getBlocks<AV extends AuthVerifier>( 621 + cfg: ConfigOf<AV, ComAtprotoSyncGetBlocks.Handler<ExtractAuth<AV>>>, 622 + ) { 623 + const nsid = 'com.atproto.sync.getBlocks' // @ts-ignore 624 + return this._server.xrpc.method(nsid, cfg) 625 + } 626 + 627 + getCheckout<AV extends AuthVerifier>( 628 + cfg: ConfigOf<AV, ComAtprotoSyncGetCheckout.Handler<ExtractAuth<AV>>>, 629 + ) { 630 + const nsid = 'com.atproto.sync.getCheckout' // @ts-ignore 631 + return this._server.xrpc.method(nsid, cfg) 632 + } 633 + 634 + getCommitPath<AV extends AuthVerifier>( 635 + cfg: ConfigOf<AV, ComAtprotoSyncGetCommitPath.Handler<ExtractAuth<AV>>>, 636 + ) { 637 + const nsid = 'com.atproto.sync.getCommitPath' // @ts-ignore 638 + return this._server.xrpc.method(nsid, cfg) 639 + } 640 + 641 + getHead<AV extends AuthVerifier>( 642 + cfg: ConfigOf<AV, ComAtprotoSyncGetHead.Handler<ExtractAuth<AV>>>, 643 + ) { 644 + const nsid = 'com.atproto.sync.getHead' // @ts-ignore 645 + return this._server.xrpc.method(nsid, cfg) 646 + } 647 + 648 + getRecord<AV extends AuthVerifier>( 649 + cfg: ConfigOf<AV, ComAtprotoSyncGetRecord.Handler<ExtractAuth<AV>>>, 650 + ) { 651 + const nsid = 'com.atproto.sync.getRecord' // @ts-ignore 652 + return this._server.xrpc.method(nsid, cfg) 653 + } 654 + 655 + getRepo<AV extends AuthVerifier>( 656 + cfg: ConfigOf<AV, ComAtprotoSyncGetRepo.Handler<ExtractAuth<AV>>>, 657 + ) { 658 + const nsid = 'com.atproto.sync.getRepo' // @ts-ignore 659 + return this._server.xrpc.method(nsid, cfg) 660 + } 661 + 662 + listBlobs<AV extends AuthVerifier>( 663 + cfg: ConfigOf<AV, ComAtprotoSyncListBlobs.Handler<ExtractAuth<AV>>>, 664 + ) { 665 + const nsid = 'com.atproto.sync.listBlobs' // @ts-ignore 666 + return this._server.xrpc.method(nsid, cfg) 667 + } 668 + 669 + listRepos<AV extends AuthVerifier>( 670 + cfg: ConfigOf<AV, ComAtprotoSyncListRepos.Handler<ExtractAuth<AV>>>, 671 + ) { 672 + const nsid = 'com.atproto.sync.listRepos' // @ts-ignore 673 + return this._server.xrpc.method(nsid, cfg) 674 + } 675 + 676 + notifyOfUpdate<AV extends AuthVerifier>( 677 + cfg: ConfigOf<AV, ComAtprotoSyncNotifyOfUpdate.Handler<ExtractAuth<AV>>>, 678 + ) { 679 + const nsid = 'com.atproto.sync.notifyOfUpdate' // @ts-ignore 680 + return this._server.xrpc.method(nsid, cfg) 681 + } 682 + 683 + requestCrawl<AV extends AuthVerifier>( 684 + cfg: ConfigOf<AV, ComAtprotoSyncRequestCrawl.Handler<ExtractAuth<AV>>>, 685 + ) { 686 + const nsid = 'com.atproto.sync.requestCrawl' // @ts-ignore 687 + return this._server.xrpc.method(nsid, cfg) 688 + } 689 + 690 + subscribeRepos<AV extends StreamAuthVerifier>( 691 + cfg: ConfigOf<AV, ComAtprotoSyncSubscribeRepos.Handler<ExtractAuth<AV>>>, 692 + ) { 693 + const nsid = 'com.atproto.sync.subscribeRepos' // @ts-ignore 694 + return this._server.xrpc.streamMethod(nsid, cfg) 695 + } 696 + } 697 + 698 + export class AppNS { 699 + _server: Server 700 + bsky: BskyNS 701 + 702 + constructor(server: Server) { 703 + this._server = server 704 + this.bsky = new BskyNS(server) 705 + } 706 + } 707 + 708 + export class BskyNS { 709 + _server: Server 710 + actor: ActorNS 711 + embed: EmbedNS 712 + feed: FeedNS 713 + graph: GraphNS 714 + notification: NotificationNS 715 + richtext: RichtextNS 716 + unspecced: UnspeccedNS 717 + 718 + constructor(server: Server) { 719 + this._server = server 720 + this.actor = new ActorNS(server) 721 + this.embed = new EmbedNS(server) 722 + this.feed = new FeedNS(server) 723 + this.graph = new GraphNS(server) 724 + this.notification = new NotificationNS(server) 725 + this.richtext = new RichtextNS(server) 726 + this.unspecced = new UnspeccedNS(server) 727 + } 728 + } 729 + 730 + export class ActorNS { 731 + _server: Server 732 + 733 + constructor(server: Server) { 734 + this._server = server 735 + } 736 + 737 + getPreferences<AV extends AuthVerifier>( 738 + cfg: ConfigOf<AV, AppBskyActorGetPreferences.Handler<ExtractAuth<AV>>>, 739 + ) { 740 + const nsid = 'app.bsky.actor.getPreferences' // @ts-ignore 741 + return this._server.xrpc.method(nsid, cfg) 742 + } 743 + 744 + getProfile<AV extends AuthVerifier>( 745 + cfg: ConfigOf<AV, AppBskyActorGetProfile.Handler<ExtractAuth<AV>>>, 746 + ) { 747 + const nsid = 'app.bsky.actor.getProfile' // @ts-ignore 748 + return this._server.xrpc.method(nsid, cfg) 749 + } 750 + 751 + getProfiles<AV extends AuthVerifier>( 752 + cfg: ConfigOf<AV, AppBskyActorGetProfiles.Handler<ExtractAuth<AV>>>, 753 + ) { 754 + const nsid = 'app.bsky.actor.getProfiles' // @ts-ignore 755 + return this._server.xrpc.method(nsid, cfg) 756 + } 757 + 758 + getSuggestions<AV extends AuthVerifier>( 759 + cfg: ConfigOf<AV, AppBskyActorGetSuggestions.Handler<ExtractAuth<AV>>>, 760 + ) { 761 + const nsid = 'app.bsky.actor.getSuggestions' // @ts-ignore 762 + return this._server.xrpc.method(nsid, cfg) 763 + } 764 + 765 + putPreferences<AV extends AuthVerifier>( 766 + cfg: ConfigOf<AV, AppBskyActorPutPreferences.Handler<ExtractAuth<AV>>>, 767 + ) { 768 + const nsid = 'app.bsky.actor.putPreferences' // @ts-ignore 769 + return this._server.xrpc.method(nsid, cfg) 770 + } 771 + 772 + searchActors<AV extends AuthVerifier>( 773 + cfg: ConfigOf<AV, AppBskyActorSearchActors.Handler<ExtractAuth<AV>>>, 774 + ) { 775 + const nsid = 'app.bsky.actor.searchActors' // @ts-ignore 776 + return this._server.xrpc.method(nsid, cfg) 777 + } 778 + 779 + searchActorsTypeahead<AV extends AuthVerifier>( 780 + cfg: ConfigOf< 781 + AV, 782 + AppBskyActorSearchActorsTypeahead.Handler<ExtractAuth<AV>> 783 + >, 784 + ) { 785 + const nsid = 'app.bsky.actor.searchActorsTypeahead' // @ts-ignore 786 + return this._server.xrpc.method(nsid, cfg) 787 + } 788 + } 789 + 790 + export class EmbedNS { 791 + _server: Server 792 + 793 + constructor(server: Server) { 794 + this._server = server 795 + } 796 + } 797 + 798 + export class FeedNS { 799 + _server: Server 800 + 801 + constructor(server: Server) { 802 + this._server = server 803 + } 804 + 805 + describeFeedGenerator<AV extends AuthVerifier>( 806 + cfg: ConfigOf< 807 + AV, 808 + AppBskyFeedDescribeFeedGenerator.Handler<ExtractAuth<AV>> 809 + >, 810 + ) { 811 + const nsid = 'app.bsky.feed.describeFeedGenerator' // @ts-ignore 812 + return this._server.xrpc.method(nsid, cfg) 813 + } 814 + 815 + getActorFeeds<AV extends AuthVerifier>( 816 + cfg: ConfigOf<AV, AppBskyFeedGetActorFeeds.Handler<ExtractAuth<AV>>>, 817 + ) { 818 + const nsid = 'app.bsky.feed.getActorFeeds' // @ts-ignore 819 + return this._server.xrpc.method(nsid, cfg) 820 + } 821 + 822 + getAuthorFeed<AV extends AuthVerifier>( 823 + cfg: ConfigOf<AV, AppBskyFeedGetAuthorFeed.Handler<ExtractAuth<AV>>>, 824 + ) { 825 + const nsid = 'app.bsky.feed.getAuthorFeed' // @ts-ignore 826 + return this._server.xrpc.method(nsid, cfg) 827 + } 828 + 829 + getFeed<AV extends AuthVerifier>( 830 + cfg: ConfigOf<AV, AppBskyFeedGetFeed.Handler<ExtractAuth<AV>>>, 831 + ) { 832 + const nsid = 'app.bsky.feed.getFeed' // @ts-ignore 833 + return this._server.xrpc.method(nsid, cfg) 834 + } 835 + 836 + getFeedGenerator<AV extends AuthVerifier>( 837 + cfg: ConfigOf<AV, AppBskyFeedGetFeedGenerator.Handler<ExtractAuth<AV>>>, 838 + ) { 839 + const nsid = 'app.bsky.feed.getFeedGenerator' // @ts-ignore 840 + return this._server.xrpc.method(nsid, cfg) 841 + } 842 + 843 + getFeedSkeleton<AV extends AuthVerifier>( 844 + cfg: ConfigOf<AV, AppBskyFeedGetFeedSkeleton.Handler<ExtractAuth<AV>>>, 845 + ) { 846 + const nsid = 'app.bsky.feed.getFeedSkeleton' // @ts-ignore 847 + return this._server.xrpc.method(nsid, cfg) 848 + } 849 + 850 + getLikes<AV extends AuthVerifier>( 851 + cfg: ConfigOf<AV, AppBskyFeedGetLikes.Handler<ExtractAuth<AV>>>, 852 + ) { 853 + const nsid = 'app.bsky.feed.getLikes' // @ts-ignore 854 + return this._server.xrpc.method(nsid, cfg) 855 + } 856 + 857 + getPostThread<AV extends AuthVerifier>( 858 + cfg: ConfigOf<AV, AppBskyFeedGetPostThread.Handler<ExtractAuth<AV>>>, 859 + ) { 860 + const nsid = 'app.bsky.feed.getPostThread' // @ts-ignore 861 + return this._server.xrpc.method(nsid, cfg) 862 + } 863 + 864 + getPosts<AV extends AuthVerifier>( 865 + cfg: ConfigOf<AV, AppBskyFeedGetPosts.Handler<ExtractAuth<AV>>>, 866 + ) { 867 + const nsid = 'app.bsky.feed.getPosts' // @ts-ignore 868 + return this._server.xrpc.method(nsid, cfg) 869 + } 870 + 871 + getRepostedBy<AV extends AuthVerifier>( 872 + cfg: ConfigOf<AV, AppBskyFeedGetRepostedBy.Handler<ExtractAuth<AV>>>, 873 + ) { 874 + const nsid = 'app.bsky.feed.getRepostedBy' // @ts-ignore 875 + return this._server.xrpc.method(nsid, cfg) 876 + } 877 + 878 + getSavedFeeds<AV extends AuthVerifier>( 879 + cfg: ConfigOf<AV, AppBskyFeedGetSavedFeeds.Handler<ExtractAuth<AV>>>, 880 + ) { 881 + const nsid = 'app.bsky.feed.getSavedFeeds' // @ts-ignore 882 + return this._server.xrpc.method(nsid, cfg) 883 + } 884 + 885 + getTimeline<AV extends AuthVerifier>( 886 + cfg: ConfigOf<AV, AppBskyFeedGetTimeline.Handler<ExtractAuth<AV>>>, 887 + ) { 888 + const nsid = 'app.bsky.feed.getTimeline' // @ts-ignore 889 + return this._server.xrpc.method(nsid, cfg) 890 + } 891 + 892 + saveFeed<AV extends AuthVerifier>( 893 + cfg: ConfigOf<AV, AppBskyFeedSaveFeed.Handler<ExtractAuth<AV>>>, 894 + ) { 895 + const nsid = 'app.bsky.feed.saveFeed' // @ts-ignore 896 + return this._server.xrpc.method(nsid, cfg) 897 + } 898 + 899 + unsaveFeed<AV extends AuthVerifier>( 900 + cfg: ConfigOf<AV, AppBskyFeedUnsaveFeed.Handler<ExtractAuth<AV>>>, 901 + ) { 902 + const nsid = 'app.bsky.feed.unsaveFeed' // @ts-ignore 903 + return this._server.xrpc.method(nsid, cfg) 904 + } 905 + } 906 + 907 + export class GraphNS { 908 + _server: Server 909 + 910 + constructor(server: Server) { 911 + this._server = server 912 + } 913 + 914 + getBlocks<AV extends AuthVerifier>( 915 + cfg: ConfigOf<AV, AppBskyGraphGetBlocks.Handler<ExtractAuth<AV>>>, 916 + ) { 917 + const nsid = 'app.bsky.graph.getBlocks' // @ts-ignore 918 + return this._server.xrpc.method(nsid, cfg) 919 + } 920 + 921 + getFollowers<AV extends AuthVerifier>( 922 + cfg: ConfigOf<AV, AppBskyGraphGetFollowers.Handler<ExtractAuth<AV>>>, 923 + ) { 924 + const nsid = 'app.bsky.graph.getFollowers' // @ts-ignore 925 + return this._server.xrpc.method(nsid, cfg) 926 + } 927 + 928 + getFollows<AV extends AuthVerifier>( 929 + cfg: ConfigOf<AV, AppBskyGraphGetFollows.Handler<ExtractAuth<AV>>>, 930 + ) { 931 + const nsid = 'app.bsky.graph.getFollows' // @ts-ignore 932 + return this._server.xrpc.method(nsid, cfg) 933 + } 934 + 935 + getList<AV extends AuthVerifier>( 936 + cfg: ConfigOf<AV, AppBskyGraphGetList.Handler<ExtractAuth<AV>>>, 937 + ) { 938 + const nsid = 'app.bsky.graph.getList' // @ts-ignore 939 + return this._server.xrpc.method(nsid, cfg) 940 + } 941 + 942 + getListMutes<AV extends AuthVerifier>( 943 + cfg: ConfigOf<AV, AppBskyGraphGetListMutes.Handler<ExtractAuth<AV>>>, 944 + ) { 945 + const nsid = 'app.bsky.graph.getListMutes' // @ts-ignore 946 + return this._server.xrpc.method(nsid, cfg) 947 + } 948 + 949 + getLists<AV extends AuthVerifier>( 950 + cfg: ConfigOf<AV, AppBskyGraphGetLists.Handler<ExtractAuth<AV>>>, 951 + ) { 952 + const nsid = 'app.bsky.graph.getLists' // @ts-ignore 953 + return this._server.xrpc.method(nsid, cfg) 954 + } 955 + 956 + getMutes<AV extends AuthVerifier>( 957 + cfg: ConfigOf<AV, AppBskyGraphGetMutes.Handler<ExtractAuth<AV>>>, 958 + ) { 959 + const nsid = 'app.bsky.graph.getMutes' // @ts-ignore 960 + return this._server.xrpc.method(nsid, cfg) 961 + } 962 + 963 + muteActor<AV extends AuthVerifier>( 964 + cfg: ConfigOf<AV, AppBskyGraphMuteActor.Handler<ExtractAuth<AV>>>, 965 + ) { 966 + const nsid = 'app.bsky.graph.muteActor' // @ts-ignore 967 + return this._server.xrpc.method(nsid, cfg) 968 + } 969 + 970 + muteActorList<AV extends AuthVerifier>( 971 + cfg: ConfigOf<AV, AppBskyGraphMuteActorList.Handler<ExtractAuth<AV>>>, 972 + ) { 973 + const nsid = 'app.bsky.graph.muteActorList' // @ts-ignore 974 + return this._server.xrpc.method(nsid, cfg) 975 + } 976 + 977 + unmuteActor<AV extends AuthVerifier>( 978 + cfg: ConfigOf<AV, AppBskyGraphUnmuteActor.Handler<ExtractAuth<AV>>>, 979 + ) { 980 + const nsid = 'app.bsky.graph.unmuteActor' // @ts-ignore 981 + return this._server.xrpc.method(nsid, cfg) 982 + } 983 + 984 + unmuteActorList<AV extends AuthVerifier>( 985 + cfg: ConfigOf<AV, AppBskyGraphUnmuteActorList.Handler<ExtractAuth<AV>>>, 986 + ) { 987 + const nsid = 'app.bsky.graph.unmuteActorList' // @ts-ignore 988 + return this._server.xrpc.method(nsid, cfg) 989 + } 990 + } 991 + 992 + export class NotificationNS { 993 + _server: Server 994 + 995 + constructor(server: Server) { 996 + this._server = server 997 + } 998 + 999 + getUnreadCount<AV extends AuthVerifier>( 1000 + cfg: ConfigOf< 1001 + AV, 1002 + AppBskyNotificationGetUnreadCount.Handler<ExtractAuth<AV>> 1003 + >, 1004 + ) { 1005 + const nsid = 'app.bsky.notification.getUnreadCount' // @ts-ignore 1006 + return this._server.xrpc.method(nsid, cfg) 1007 + } 1008 + 1009 + listNotifications<AV extends AuthVerifier>( 1010 + cfg: ConfigOf< 1011 + AV, 1012 + AppBskyNotificationListNotifications.Handler<ExtractAuth<AV>> 1013 + >, 1014 + ) { 1015 + const nsid = 'app.bsky.notification.listNotifications' // @ts-ignore 1016 + return this._server.xrpc.method(nsid, cfg) 1017 + } 1018 + 1019 + updateSeen<AV extends AuthVerifier>( 1020 + cfg: ConfigOf<AV, AppBskyNotificationUpdateSeen.Handler<ExtractAuth<AV>>>, 1021 + ) { 1022 + const nsid = 'app.bsky.notification.updateSeen' // @ts-ignore 1023 + return this._server.xrpc.method(nsid, cfg) 1024 + } 1025 + } 1026 + 1027 + export class RichtextNS { 1028 + _server: Server 1029 + 1030 + constructor(server: Server) { 1031 + this._server = server 1032 + } 1033 + } 1034 + 1035 + export class UnspeccedNS { 1036 + _server: Server 1037 + 1038 + constructor(server: Server) { 1039 + this._server = server 1040 + } 1041 + 1042 + getPopular<AV extends AuthVerifier>( 1043 + cfg: ConfigOf<AV, AppBskyUnspeccedGetPopular.Handler<ExtractAuth<AV>>>, 1044 + ) { 1045 + const nsid = 'app.bsky.unspecced.getPopular' // @ts-ignore 1046 + return this._server.xrpc.method(nsid, cfg) 1047 + } 1048 + } 1049 + 1050 + type ConfigOf<Auth, Handler> = 1051 + | Handler 1052 + | { 1053 + auth?: Auth 1054 + handler: Handler 1055 + } 1056 + type ExtractAuth<AV extends AuthVerifier | StreamAuthVerifier> = Extract< 1057 + Awaited<ReturnType<AV>>, 1058 + { credentials: unknown } 1059 + >
+6301
src/lexicon/lexicons.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { LexiconDoc, Lexicons } from '@atproto/lexicon' 5 + 6 + export const schemaDict = { 7 + ComAtprotoAdminDefs: { 8 + lexicon: 1, 9 + id: 'com.atproto.admin.defs', 10 + defs: { 11 + actionView: { 12 + type: 'object', 13 + required: [ 14 + 'id', 15 + 'action', 16 + 'subject', 17 + 'subjectBlobCids', 18 + 'reason', 19 + 'createdBy', 20 + 'createdAt', 21 + 'resolvedReportIds', 22 + ], 23 + properties: { 24 + id: { 25 + type: 'integer', 26 + }, 27 + action: { 28 + type: 'ref', 29 + ref: 'lex:com.atproto.admin.defs#actionType', 30 + }, 31 + subject: { 32 + type: 'union', 33 + refs: [ 34 + 'lex:com.atproto.admin.defs#repoRef', 35 + 'lex:com.atproto.repo.strongRef', 36 + ], 37 + }, 38 + subjectBlobCids: { 39 + type: 'array', 40 + items: { 41 + type: 'string', 42 + }, 43 + }, 44 + createLabelVals: { 45 + type: 'array', 46 + items: { 47 + type: 'string', 48 + }, 49 + }, 50 + negateLabelVals: { 51 + type: 'array', 52 + items: { 53 + type: 'string', 54 + }, 55 + }, 56 + reason: { 57 + type: 'string', 58 + }, 59 + createdBy: { 60 + type: 'string', 61 + format: 'did', 62 + }, 63 + createdAt: { 64 + type: 'string', 65 + format: 'datetime', 66 + }, 67 + reversal: { 68 + type: 'ref', 69 + ref: 'lex:com.atproto.admin.defs#actionReversal', 70 + }, 71 + resolvedReportIds: { 72 + type: 'array', 73 + items: { 74 + type: 'integer', 75 + }, 76 + }, 77 + }, 78 + }, 79 + actionViewDetail: { 80 + type: 'object', 81 + required: [ 82 + 'id', 83 + 'action', 84 + 'subject', 85 + 'subjectBlobs', 86 + 'reason', 87 + 'createdBy', 88 + 'createdAt', 89 + 'resolvedReports', 90 + ], 91 + properties: { 92 + id: { 93 + type: 'integer', 94 + }, 95 + action: { 96 + type: 'ref', 97 + ref: 'lex:com.atproto.admin.defs#actionType', 98 + }, 99 + subject: { 100 + type: 'union', 101 + refs: [ 102 + 'lex:com.atproto.admin.defs#repoView', 103 + 'lex:com.atproto.admin.defs#recordView', 104 + ], 105 + }, 106 + subjectBlobs: { 107 + type: 'array', 108 + items: { 109 + type: 'ref', 110 + ref: 'lex:com.atproto.admin.defs#blobView', 111 + }, 112 + }, 113 + createLabelVals: { 114 + type: 'array', 115 + items: { 116 + type: 'string', 117 + }, 118 + }, 119 + negateLabelVals: { 120 + type: 'array', 121 + items: { 122 + type: 'string', 123 + }, 124 + }, 125 + reason: { 126 + type: 'string', 127 + }, 128 + createdBy: { 129 + type: 'string', 130 + format: 'did', 131 + }, 132 + createdAt: { 133 + type: 'string', 134 + format: 'datetime', 135 + }, 136 + reversal: { 137 + type: 'ref', 138 + ref: 'lex:com.atproto.admin.defs#actionReversal', 139 + }, 140 + resolvedReports: { 141 + type: 'array', 142 + items: { 143 + type: 'ref', 144 + ref: 'lex:com.atproto.admin.defs#reportView', 145 + }, 146 + }, 147 + }, 148 + }, 149 + actionViewCurrent: { 150 + type: 'object', 151 + required: ['id', 'action'], 152 + properties: { 153 + id: { 154 + type: 'integer', 155 + }, 156 + action: { 157 + type: 'ref', 158 + ref: 'lex:com.atproto.admin.defs#actionType', 159 + }, 160 + }, 161 + }, 162 + actionReversal: { 163 + type: 'object', 164 + required: ['reason', 'createdBy', 'createdAt'], 165 + properties: { 166 + reason: { 167 + type: 'string', 168 + }, 169 + createdBy: { 170 + type: 'string', 171 + format: 'did', 172 + }, 173 + createdAt: { 174 + type: 'string', 175 + format: 'datetime', 176 + }, 177 + }, 178 + }, 179 + actionType: { 180 + type: 'string', 181 + knownValues: [ 182 + 'lex:com.atproto.admin.defs#takedown', 183 + 'lex:com.atproto.admin.defs#flag', 184 + 'lex:com.atproto.admin.defs#acknowledge', 185 + 'lex:com.atproto.admin.defs#escalate', 186 + ], 187 + }, 188 + takedown: { 189 + type: 'token', 190 + description: 191 + 'Moderation action type: Takedown. Indicates that content should not be served by the PDS.', 192 + }, 193 + flag: { 194 + type: 'token', 195 + description: 196 + 'Moderation action type: Flag. Indicates that the content was reviewed and considered to violate PDS rules, but may still be served.', 197 + }, 198 + acknowledge: { 199 + type: 'token', 200 + description: 201 + 'Moderation action type: Acknowledge. Indicates that the content was reviewed and not considered to violate PDS rules.', 202 + }, 203 + escalate: { 204 + type: 'token', 205 + description: 206 + 'Moderation action type: Escalate. Indicates that the content has been flagged for additional review.', 207 + }, 208 + reportView: { 209 + type: 'object', 210 + required: [ 211 + 'id', 212 + 'reasonType', 213 + 'subject', 214 + 'reportedBy', 215 + 'createdAt', 216 + 'resolvedByActionIds', 217 + ], 218 + properties: { 219 + id: { 220 + type: 'integer', 221 + }, 222 + reasonType: { 223 + type: 'ref', 224 + ref: 'lex:com.atproto.moderation.defs#reasonType', 225 + }, 226 + reason: { 227 + type: 'string', 228 + }, 229 + subject: { 230 + type: 'union', 231 + refs: [ 232 + 'lex:com.atproto.admin.defs#repoRef', 233 + 'lex:com.atproto.repo.strongRef', 234 + ], 235 + }, 236 + reportedBy: { 237 + type: 'string', 238 + format: 'did', 239 + }, 240 + createdAt: { 241 + type: 'string', 242 + format: 'datetime', 243 + }, 244 + resolvedByActionIds: { 245 + type: 'array', 246 + items: { 247 + type: 'integer', 248 + }, 249 + }, 250 + }, 251 + }, 252 + reportViewDetail: { 253 + type: 'object', 254 + required: [ 255 + 'id', 256 + 'reasonType', 257 + 'subject', 258 + 'reportedBy', 259 + 'createdAt', 260 + 'resolvedByActions', 261 + ], 262 + properties: { 263 + id: { 264 + type: 'integer', 265 + }, 266 + reasonType: { 267 + type: 'ref', 268 + ref: 'lex:com.atproto.moderation.defs#reasonType', 269 + }, 270 + reason: { 271 + type: 'string', 272 + }, 273 + subject: { 274 + type: 'union', 275 + refs: [ 276 + 'lex:com.atproto.admin.defs#repoView', 277 + 'lex:com.atproto.admin.defs#recordView', 278 + ], 279 + }, 280 + reportedBy: { 281 + type: 'string', 282 + format: 'did', 283 + }, 284 + createdAt: { 285 + type: 'string', 286 + format: 'datetime', 287 + }, 288 + resolvedByActions: { 289 + type: 'array', 290 + items: { 291 + type: 'ref', 292 + ref: 'lex:com.atproto.admin.defs#actionView', 293 + }, 294 + }, 295 + }, 296 + }, 297 + repoView: { 298 + type: 'object', 299 + required: [ 300 + 'did', 301 + 'handle', 302 + 'relatedRecords', 303 + 'indexedAt', 304 + 'moderation', 305 + ], 306 + properties: { 307 + did: { 308 + type: 'string', 309 + format: 'did', 310 + }, 311 + handle: { 312 + type: 'string', 313 + format: 'handle', 314 + }, 315 + email: { 316 + type: 'string', 317 + }, 318 + relatedRecords: { 319 + type: 'array', 320 + items: { 321 + type: 'unknown', 322 + }, 323 + }, 324 + indexedAt: { 325 + type: 'string', 326 + format: 'datetime', 327 + }, 328 + moderation: { 329 + type: 'ref', 330 + ref: 'lex:com.atproto.admin.defs#moderation', 331 + }, 332 + invitedBy: { 333 + type: 'ref', 334 + ref: 'lex:com.atproto.server.defs#inviteCode', 335 + }, 336 + invitesDisabled: { 337 + type: 'boolean', 338 + }, 339 + }, 340 + }, 341 + repoViewDetail: { 342 + type: 'object', 343 + required: [ 344 + 'did', 345 + 'handle', 346 + 'relatedRecords', 347 + 'indexedAt', 348 + 'moderation', 349 + ], 350 + properties: { 351 + did: { 352 + type: 'string', 353 + format: 'did', 354 + }, 355 + handle: { 356 + type: 'string', 357 + format: 'handle', 358 + }, 359 + email: { 360 + type: 'string', 361 + }, 362 + relatedRecords: { 363 + type: 'array', 364 + items: { 365 + type: 'unknown', 366 + }, 367 + }, 368 + indexedAt: { 369 + type: 'string', 370 + format: 'datetime', 371 + }, 372 + moderation: { 373 + type: 'ref', 374 + ref: 'lex:com.atproto.admin.defs#moderationDetail', 375 + }, 376 + labels: { 377 + type: 'array', 378 + items: { 379 + type: 'ref', 380 + ref: 'lex:com.atproto.label.defs#label', 381 + }, 382 + }, 383 + invitedBy: { 384 + type: 'ref', 385 + ref: 'lex:com.atproto.server.defs#inviteCode', 386 + }, 387 + invites: { 388 + type: 'array', 389 + items: { 390 + type: 'ref', 391 + ref: 'lex:com.atproto.server.defs#inviteCode', 392 + }, 393 + }, 394 + invitesDisabled: { 395 + type: 'boolean', 396 + }, 397 + }, 398 + }, 399 + repoRef: { 400 + type: 'object', 401 + required: ['did'], 402 + properties: { 403 + did: { 404 + type: 'string', 405 + format: 'did', 406 + }, 407 + }, 408 + }, 409 + recordView: { 410 + type: 'object', 411 + required: [ 412 + 'uri', 413 + 'cid', 414 + 'value', 415 + 'blobCids', 416 + 'indexedAt', 417 + 'moderation', 418 + 'repo', 419 + ], 420 + properties: { 421 + uri: { 422 + type: 'string', 423 + format: 'at-uri', 424 + }, 425 + cid: { 426 + type: 'string', 427 + format: 'cid', 428 + }, 429 + value: { 430 + type: 'unknown', 431 + }, 432 + blobCids: { 433 + type: 'array', 434 + items: { 435 + type: 'string', 436 + format: 'cid', 437 + }, 438 + }, 439 + indexedAt: { 440 + type: 'string', 441 + format: 'datetime', 442 + }, 443 + moderation: { 444 + type: 'ref', 445 + ref: 'lex:com.atproto.admin.defs#moderation', 446 + }, 447 + repo: { 448 + type: 'ref', 449 + ref: 'lex:com.atproto.admin.defs#repoView', 450 + }, 451 + }, 452 + }, 453 + recordViewDetail: { 454 + type: 'object', 455 + required: [ 456 + 'uri', 457 + 'cid', 458 + 'value', 459 + 'blobs', 460 + 'indexedAt', 461 + 'moderation', 462 + 'repo', 463 + ], 464 + properties: { 465 + uri: { 466 + type: 'string', 467 + format: 'at-uri', 468 + }, 469 + cid: { 470 + type: 'string', 471 + format: 'cid', 472 + }, 473 + value: { 474 + type: 'unknown', 475 + }, 476 + blobs: { 477 + type: 'array', 478 + items: { 479 + type: 'ref', 480 + ref: 'lex:com.atproto.admin.defs#blobView', 481 + }, 482 + }, 483 + labels: { 484 + type: 'array', 485 + items: { 486 + type: 'ref', 487 + ref: 'lex:com.atproto.label.defs#label', 488 + }, 489 + }, 490 + indexedAt: { 491 + type: 'string', 492 + format: 'datetime', 493 + }, 494 + moderation: { 495 + type: 'ref', 496 + ref: 'lex:com.atproto.admin.defs#moderationDetail', 497 + }, 498 + repo: { 499 + type: 'ref', 500 + ref: 'lex:com.atproto.admin.defs#repoView', 501 + }, 502 + }, 503 + }, 504 + moderation: { 505 + type: 'object', 506 + required: [], 507 + properties: { 508 + currentAction: { 509 + type: 'ref', 510 + ref: 'lex:com.atproto.admin.defs#actionViewCurrent', 511 + }, 512 + }, 513 + }, 514 + moderationDetail: { 515 + type: 'object', 516 + required: ['actions', 'reports'], 517 + properties: { 518 + currentAction: { 519 + type: 'ref', 520 + ref: 'lex:com.atproto.admin.defs#actionViewCurrent', 521 + }, 522 + actions: { 523 + type: 'array', 524 + items: { 525 + type: 'ref', 526 + ref: 'lex:com.atproto.admin.defs#actionView', 527 + }, 528 + }, 529 + reports: { 530 + type: 'array', 531 + items: { 532 + type: 'ref', 533 + ref: 'lex:com.atproto.admin.defs#reportView', 534 + }, 535 + }, 536 + }, 537 + }, 538 + blobView: { 539 + type: 'object', 540 + required: ['cid', 'mimeType', 'size', 'createdAt'], 541 + properties: { 542 + cid: { 543 + type: 'string', 544 + format: 'cid', 545 + }, 546 + mimeType: { 547 + type: 'string', 548 + }, 549 + size: { 550 + type: 'integer', 551 + }, 552 + createdAt: { 553 + type: 'string', 554 + format: 'datetime', 555 + }, 556 + details: { 557 + type: 'union', 558 + refs: [ 559 + 'lex:com.atproto.admin.defs#imageDetails', 560 + 'lex:com.atproto.admin.defs#videoDetails', 561 + ], 562 + }, 563 + moderation: { 564 + type: 'ref', 565 + ref: 'lex:com.atproto.admin.defs#moderation', 566 + }, 567 + }, 568 + }, 569 + imageDetails: { 570 + type: 'object', 571 + required: ['width', 'height'], 572 + properties: { 573 + width: { 574 + type: 'integer', 575 + }, 576 + height: { 577 + type: 'integer', 578 + }, 579 + }, 580 + }, 581 + videoDetails: { 582 + type: 'object', 583 + required: ['width', 'height', 'length'], 584 + properties: { 585 + width: { 586 + type: 'integer', 587 + }, 588 + height: { 589 + type: 'integer', 590 + }, 591 + length: { 592 + type: 'integer', 593 + }, 594 + }, 595 + }, 596 + }, 597 + }, 598 + ComAtprotoAdminDisableAccountInvites: { 599 + lexicon: 1, 600 + id: 'com.atproto.admin.disableAccountInvites', 601 + defs: { 602 + main: { 603 + type: 'procedure', 604 + description: 605 + 'Disable an account from receiving new invite codes, but does not invalidate existing codes', 606 + input: { 607 + encoding: 'application/json', 608 + schema: { 609 + type: 'object', 610 + required: ['account'], 611 + properties: { 612 + account: { 613 + type: 'string', 614 + format: 'did', 615 + }, 616 + }, 617 + }, 618 + }, 619 + }, 620 + }, 621 + }, 622 + ComAtprotoAdminDisableInviteCodes: { 623 + lexicon: 1, 624 + id: 'com.atproto.admin.disableInviteCodes', 625 + defs: { 626 + main: { 627 + type: 'procedure', 628 + description: 629 + 'Disable some set of codes and/or all codes associated with a set of users', 630 + input: { 631 + encoding: 'application/json', 632 + schema: { 633 + type: 'object', 634 + properties: { 635 + codes: { 636 + type: 'array', 637 + items: { 638 + type: 'string', 639 + }, 640 + }, 641 + accounts: { 642 + type: 'array', 643 + items: { 644 + type: 'string', 645 + }, 646 + }, 647 + }, 648 + }, 649 + }, 650 + }, 651 + }, 652 + }, 653 + ComAtprotoAdminEnableAccountInvites: { 654 + lexicon: 1, 655 + id: 'com.atproto.admin.enableAccountInvites', 656 + defs: { 657 + main: { 658 + type: 'procedure', 659 + description: 'Re-enable an accounts ability to receive invite codes', 660 + input: { 661 + encoding: 'application/json', 662 + schema: { 663 + type: 'object', 664 + required: ['account'], 665 + properties: { 666 + account: { 667 + type: 'string', 668 + format: 'did', 669 + }, 670 + }, 671 + }, 672 + }, 673 + }, 674 + }, 675 + }, 676 + ComAtprotoAdminGetInviteCodes: { 677 + lexicon: 1, 678 + id: 'com.atproto.admin.getInviteCodes', 679 + defs: { 680 + main: { 681 + type: 'query', 682 + description: 'Admin view of invite codes', 683 + parameters: { 684 + type: 'params', 685 + properties: { 686 + sort: { 687 + type: 'string', 688 + knownValues: ['recent', 'usage'], 689 + default: 'recent', 690 + }, 691 + limit: { 692 + type: 'integer', 693 + minimum: 1, 694 + maximum: 500, 695 + default: 100, 696 + }, 697 + cursor: { 698 + type: 'string', 699 + }, 700 + }, 701 + }, 702 + output: { 703 + encoding: 'application/json', 704 + schema: { 705 + type: 'object', 706 + required: ['codes'], 707 + properties: { 708 + cursor: { 709 + type: 'string', 710 + }, 711 + codes: { 712 + type: 'array', 713 + items: { 714 + type: 'ref', 715 + ref: 'lex:com.atproto.server.defs#inviteCode', 716 + }, 717 + }, 718 + }, 719 + }, 720 + }, 721 + }, 722 + }, 723 + }, 724 + ComAtprotoAdminGetModerationAction: { 725 + lexicon: 1, 726 + id: 'com.atproto.admin.getModerationAction', 727 + defs: { 728 + main: { 729 + type: 'query', 730 + description: 'View details about a moderation action.', 731 + parameters: { 732 + type: 'params', 733 + required: ['id'], 734 + properties: { 735 + id: { 736 + type: 'integer', 737 + }, 738 + }, 739 + }, 740 + output: { 741 + encoding: 'application/json', 742 + schema: { 743 + type: 'ref', 744 + ref: 'lex:com.atproto.admin.defs#actionViewDetail', 745 + }, 746 + }, 747 + }, 748 + }, 749 + }, 750 + ComAtprotoAdminGetModerationActions: { 751 + lexicon: 1, 752 + id: 'com.atproto.admin.getModerationActions', 753 + defs: { 754 + main: { 755 + type: 'query', 756 + description: 'List moderation actions related to a subject.', 757 + parameters: { 758 + type: 'params', 759 + properties: { 760 + subject: { 761 + type: 'string', 762 + }, 763 + limit: { 764 + type: 'integer', 765 + minimum: 1, 766 + maximum: 100, 767 + default: 50, 768 + }, 769 + cursor: { 770 + type: 'string', 771 + }, 772 + }, 773 + }, 774 + output: { 775 + encoding: 'application/json', 776 + schema: { 777 + type: 'object', 778 + required: ['actions'], 779 + properties: { 780 + cursor: { 781 + type: 'string', 782 + }, 783 + actions: { 784 + type: 'array', 785 + items: { 786 + type: 'ref', 787 + ref: 'lex:com.atproto.admin.defs#actionView', 788 + }, 789 + }, 790 + }, 791 + }, 792 + }, 793 + }, 794 + }, 795 + }, 796 + ComAtprotoAdminGetModerationReport: { 797 + lexicon: 1, 798 + id: 'com.atproto.admin.getModerationReport', 799 + defs: { 800 + main: { 801 + type: 'query', 802 + description: 'View details about a moderation report.', 803 + parameters: { 804 + type: 'params', 805 + required: ['id'], 806 + properties: { 807 + id: { 808 + type: 'integer', 809 + }, 810 + }, 811 + }, 812 + output: { 813 + encoding: 'application/json', 814 + schema: { 815 + type: 'ref', 816 + ref: 'lex:com.atproto.admin.defs#reportViewDetail', 817 + }, 818 + }, 819 + }, 820 + }, 821 + }, 822 + ComAtprotoAdminGetModerationReports: { 823 + lexicon: 1, 824 + id: 'com.atproto.admin.getModerationReports', 825 + defs: { 826 + main: { 827 + type: 'query', 828 + description: 'List moderation reports related to a subject.', 829 + parameters: { 830 + type: 'params', 831 + properties: { 832 + subject: { 833 + type: 'string', 834 + }, 835 + resolved: { 836 + type: 'boolean', 837 + }, 838 + actionType: { 839 + type: 'string', 840 + knownValues: [ 841 + 'com.atproto.admin.defs#takedown', 842 + 'com.atproto.admin.defs#flag', 843 + 'com.atproto.admin.defs#acknowledge', 844 + 'com.atproto.admin.defs#escalate', 845 + ], 846 + }, 847 + limit: { 848 + type: 'integer', 849 + minimum: 1, 850 + maximum: 100, 851 + default: 50, 852 + }, 853 + cursor: { 854 + type: 'string', 855 + }, 856 + }, 857 + }, 858 + output: { 859 + encoding: 'application/json', 860 + schema: { 861 + type: 'object', 862 + required: ['reports'], 863 + properties: { 864 + cursor: { 865 + type: 'string', 866 + }, 867 + reports: { 868 + type: 'array', 869 + items: { 870 + type: 'ref', 871 + ref: 'lex:com.atproto.admin.defs#reportView', 872 + }, 873 + }, 874 + }, 875 + }, 876 + }, 877 + }, 878 + }, 879 + }, 880 + ComAtprotoAdminGetRecord: { 881 + lexicon: 1, 882 + id: 'com.atproto.admin.getRecord', 883 + defs: { 884 + main: { 885 + type: 'query', 886 + description: 'View details about a record.', 887 + parameters: { 888 + type: 'params', 889 + required: ['uri'], 890 + properties: { 891 + uri: { 892 + type: 'string', 893 + format: 'at-uri', 894 + }, 895 + cid: { 896 + type: 'string', 897 + format: 'cid', 898 + }, 899 + }, 900 + }, 901 + output: { 902 + encoding: 'application/json', 903 + schema: { 904 + type: 'ref', 905 + ref: 'lex:com.atproto.admin.defs#recordViewDetail', 906 + }, 907 + }, 908 + }, 909 + }, 910 + }, 911 + ComAtprotoAdminGetRepo: { 912 + lexicon: 1, 913 + id: 'com.atproto.admin.getRepo', 914 + defs: { 915 + main: { 916 + type: 'query', 917 + description: 'View details about a repository.', 918 + parameters: { 919 + type: 'params', 920 + required: ['did'], 921 + properties: { 922 + did: { 923 + type: 'string', 924 + format: 'did', 925 + }, 926 + }, 927 + }, 928 + output: { 929 + encoding: 'application/json', 930 + schema: { 931 + type: 'ref', 932 + ref: 'lex:com.atproto.admin.defs#repoViewDetail', 933 + }, 934 + }, 935 + }, 936 + }, 937 + }, 938 + ComAtprotoAdminResolveModerationReports: { 939 + lexicon: 1, 940 + id: 'com.atproto.admin.resolveModerationReports', 941 + defs: { 942 + main: { 943 + type: 'procedure', 944 + description: 'Resolve moderation reports by an action.', 945 + input: { 946 + encoding: 'application/json', 947 + schema: { 948 + type: 'object', 949 + required: ['actionId', 'reportIds', 'createdBy'], 950 + properties: { 951 + actionId: { 952 + type: 'integer', 953 + }, 954 + reportIds: { 955 + type: 'array', 956 + items: { 957 + type: 'integer', 958 + }, 959 + }, 960 + createdBy: { 961 + type: 'string', 962 + format: 'did', 963 + }, 964 + }, 965 + }, 966 + }, 967 + output: { 968 + encoding: 'application/json', 969 + schema: { 970 + type: 'ref', 971 + ref: 'lex:com.atproto.admin.defs#actionView', 972 + }, 973 + }, 974 + }, 975 + }, 976 + }, 977 + ComAtprotoAdminReverseModerationAction: { 978 + lexicon: 1, 979 + id: 'com.atproto.admin.reverseModerationAction', 980 + defs: { 981 + main: { 982 + type: 'procedure', 983 + description: 'Reverse a moderation action.', 984 + input: { 985 + encoding: 'application/json', 986 + schema: { 987 + type: 'object', 988 + required: ['id', 'reason', 'createdBy'], 989 + properties: { 990 + id: { 991 + type: 'integer', 992 + }, 993 + reason: { 994 + type: 'string', 995 + }, 996 + createdBy: { 997 + type: 'string', 998 + format: 'did', 999 + }, 1000 + }, 1001 + }, 1002 + }, 1003 + output: { 1004 + encoding: 'application/json', 1005 + schema: { 1006 + type: 'ref', 1007 + ref: 'lex:com.atproto.admin.defs#actionView', 1008 + }, 1009 + }, 1010 + }, 1011 + }, 1012 + }, 1013 + ComAtprotoAdminSearchRepos: { 1014 + lexicon: 1, 1015 + id: 'com.atproto.admin.searchRepos', 1016 + defs: { 1017 + main: { 1018 + type: 'query', 1019 + description: 'Find repositories based on a search term.', 1020 + parameters: { 1021 + type: 'params', 1022 + properties: { 1023 + term: { 1024 + type: 'string', 1025 + }, 1026 + invitedBy: { 1027 + type: 'string', 1028 + }, 1029 + limit: { 1030 + type: 'integer', 1031 + minimum: 1, 1032 + maximum: 100, 1033 + default: 50, 1034 + }, 1035 + cursor: { 1036 + type: 'string', 1037 + }, 1038 + }, 1039 + }, 1040 + output: { 1041 + encoding: 'application/json', 1042 + schema: { 1043 + type: 'object', 1044 + required: ['repos'], 1045 + properties: { 1046 + cursor: { 1047 + type: 'string', 1048 + }, 1049 + repos: { 1050 + type: 'array', 1051 + items: { 1052 + type: 'ref', 1053 + ref: 'lex:com.atproto.admin.defs#repoView', 1054 + }, 1055 + }, 1056 + }, 1057 + }, 1058 + }, 1059 + }, 1060 + }, 1061 + }, 1062 + ComAtprotoAdminTakeModerationAction: { 1063 + lexicon: 1, 1064 + id: 'com.atproto.admin.takeModerationAction', 1065 + defs: { 1066 + main: { 1067 + type: 'procedure', 1068 + description: 'Take a moderation action on a repo.', 1069 + input: { 1070 + encoding: 'application/json', 1071 + schema: { 1072 + type: 'object', 1073 + required: ['action', 'subject', 'reason', 'createdBy'], 1074 + properties: { 1075 + action: { 1076 + type: 'string', 1077 + knownValues: [ 1078 + 'com.atproto.admin.defs#takedown', 1079 + 'com.atproto.admin.defs#flag', 1080 + 'com.atproto.admin.defs#acknowledge', 1081 + ], 1082 + }, 1083 + subject: { 1084 + type: 'union', 1085 + refs: [ 1086 + 'lex:com.atproto.admin.defs#repoRef', 1087 + 'lex:com.atproto.repo.strongRef', 1088 + ], 1089 + }, 1090 + subjectBlobCids: { 1091 + type: 'array', 1092 + items: { 1093 + type: 'string', 1094 + format: 'cid', 1095 + }, 1096 + }, 1097 + createLabelVals: { 1098 + type: 'array', 1099 + items: { 1100 + type: 'string', 1101 + }, 1102 + }, 1103 + negateLabelVals: { 1104 + type: 'array', 1105 + items: { 1106 + type: 'string', 1107 + }, 1108 + }, 1109 + reason: { 1110 + type: 'string', 1111 + }, 1112 + createdBy: { 1113 + type: 'string', 1114 + format: 'did', 1115 + }, 1116 + }, 1117 + }, 1118 + }, 1119 + output: { 1120 + encoding: 'application/json', 1121 + schema: { 1122 + type: 'ref', 1123 + ref: 'lex:com.atproto.admin.defs#actionView', 1124 + }, 1125 + }, 1126 + errors: [ 1127 + { 1128 + name: 'SubjectHasAction', 1129 + }, 1130 + ], 1131 + }, 1132 + }, 1133 + }, 1134 + ComAtprotoAdminUpdateAccountEmail: { 1135 + lexicon: 1, 1136 + id: 'com.atproto.admin.updateAccountEmail', 1137 + defs: { 1138 + main: { 1139 + type: 'procedure', 1140 + description: "Administrative action to update an account's email", 1141 + input: { 1142 + encoding: 'application/json', 1143 + schema: { 1144 + type: 'object', 1145 + required: ['account', 'email'], 1146 + properties: { 1147 + account: { 1148 + type: 'string', 1149 + format: 'at-identifier', 1150 + description: 'The handle or DID of the repo.', 1151 + }, 1152 + email: { 1153 + type: 'string', 1154 + }, 1155 + }, 1156 + }, 1157 + }, 1158 + }, 1159 + }, 1160 + }, 1161 + ComAtprotoAdminUpdateAccountHandle: { 1162 + lexicon: 1, 1163 + id: 'com.atproto.admin.updateAccountHandle', 1164 + defs: { 1165 + main: { 1166 + type: 'procedure', 1167 + description: "Administrative action to update an account's handle", 1168 + input: { 1169 + encoding: 'application/json', 1170 + schema: { 1171 + type: 'object', 1172 + required: ['did', 'handle'], 1173 + properties: { 1174 + did: { 1175 + type: 'string', 1176 + format: 'did', 1177 + }, 1178 + handle: { 1179 + type: 'string', 1180 + format: 'handle', 1181 + }, 1182 + }, 1183 + }, 1184 + }, 1185 + }, 1186 + }, 1187 + }, 1188 + ComAtprotoIdentityResolveHandle: { 1189 + lexicon: 1, 1190 + id: 'com.atproto.identity.resolveHandle', 1191 + defs: { 1192 + main: { 1193 + type: 'query', 1194 + description: 'Provides the DID of a repo.', 1195 + parameters: { 1196 + type: 'params', 1197 + properties: { 1198 + handle: { 1199 + type: 'string', 1200 + format: 'handle', 1201 + description: 1202 + "The handle to resolve. If not supplied, will resolve the host's own handle.", 1203 + }, 1204 + }, 1205 + }, 1206 + output: { 1207 + encoding: 'application/json', 1208 + schema: { 1209 + type: 'object', 1210 + required: ['did'], 1211 + properties: { 1212 + did: { 1213 + type: 'string', 1214 + format: 'did', 1215 + }, 1216 + }, 1217 + }, 1218 + }, 1219 + }, 1220 + }, 1221 + }, 1222 + ComAtprotoIdentityUpdateHandle: { 1223 + lexicon: 1, 1224 + id: 'com.atproto.identity.updateHandle', 1225 + defs: { 1226 + main: { 1227 + type: 'procedure', 1228 + description: 'Updates the handle of the account', 1229 + input: { 1230 + encoding: 'application/json', 1231 + schema: { 1232 + type: 'object', 1233 + required: ['handle'], 1234 + properties: { 1235 + handle: { 1236 + type: 'string', 1237 + format: 'handle', 1238 + }, 1239 + }, 1240 + }, 1241 + }, 1242 + }, 1243 + }, 1244 + }, 1245 + ComAtprotoLabelDefs: { 1246 + lexicon: 1, 1247 + id: 'com.atproto.label.defs', 1248 + defs: { 1249 + label: { 1250 + type: 'object', 1251 + description: 'Metadata tag on an atproto resource (eg, repo or record)', 1252 + required: ['src', 'uri', 'val', 'cts'], 1253 + properties: { 1254 + src: { 1255 + type: 'string', 1256 + format: 'did', 1257 + description: 'DID of the actor who created this label', 1258 + }, 1259 + uri: { 1260 + type: 'string', 1261 + format: 'uri', 1262 + description: 1263 + 'AT URI of the record, repository (account), or other resource which this label applies to', 1264 + }, 1265 + cid: { 1266 + type: 'string', 1267 + format: 'cid', 1268 + description: 1269 + "optionally, CID specifying the specific version of 'uri' resource this label applies to", 1270 + }, 1271 + val: { 1272 + type: 'string', 1273 + maxLength: 128, 1274 + description: 1275 + 'the short string name of the value or type of this label', 1276 + }, 1277 + neg: { 1278 + type: 'boolean', 1279 + description: 1280 + 'if true, this is a negation label, overwriting a previous label', 1281 + }, 1282 + cts: { 1283 + type: 'string', 1284 + format: 'datetime', 1285 + description: 'timestamp when this label was created', 1286 + }, 1287 + }, 1288 + }, 1289 + }, 1290 + }, 1291 + ComAtprotoLabelQueryLabels: { 1292 + lexicon: 1, 1293 + id: 'com.atproto.label.queryLabels', 1294 + defs: { 1295 + main: { 1296 + type: 'query', 1297 + description: 'Find labels relevant to the provided URI patterns.', 1298 + parameters: { 1299 + type: 'params', 1300 + required: ['uriPatterns'], 1301 + properties: { 1302 + uriPatterns: { 1303 + type: 'array', 1304 + items: { 1305 + type: 'string', 1306 + }, 1307 + description: 1308 + "List of AT URI patterns to match (boolean 'OR'). Each may be a prefix (ending with '*'; will match inclusive of the string leading to '*'), or a full URI", 1309 + }, 1310 + sources: { 1311 + type: 'array', 1312 + items: { 1313 + type: 'string', 1314 + format: 'did', 1315 + }, 1316 + description: 'Optional list of label sources (DIDs) to filter on', 1317 + }, 1318 + limit: { 1319 + type: 'integer', 1320 + minimum: 1, 1321 + maximum: 250, 1322 + default: 50, 1323 + }, 1324 + cursor: { 1325 + type: 'string', 1326 + }, 1327 + }, 1328 + }, 1329 + output: { 1330 + encoding: 'application/json', 1331 + schema: { 1332 + type: 'object', 1333 + required: ['labels'], 1334 + properties: { 1335 + cursor: { 1336 + type: 'string', 1337 + }, 1338 + labels: { 1339 + type: 'array', 1340 + items: { 1341 + type: 'ref', 1342 + ref: 'lex:com.atproto.label.defs#label', 1343 + }, 1344 + }, 1345 + }, 1346 + }, 1347 + }, 1348 + }, 1349 + }, 1350 + }, 1351 + ComAtprotoLabelSubscribeLabels: { 1352 + lexicon: 1, 1353 + id: 'com.atproto.label.subscribeLabels', 1354 + defs: { 1355 + main: { 1356 + type: 'subscription', 1357 + description: 'Subscribe to label updates', 1358 + parameters: { 1359 + type: 'params', 1360 + properties: { 1361 + cursor: { 1362 + type: 'integer', 1363 + description: 'The last known event to backfill from.', 1364 + }, 1365 + }, 1366 + }, 1367 + message: { 1368 + schema: { 1369 + type: 'union', 1370 + refs: [ 1371 + 'lex:com.atproto.label.subscribeLabels#labels', 1372 + 'lex:com.atproto.label.subscribeLabels#info', 1373 + ], 1374 + }, 1375 + }, 1376 + errors: [ 1377 + { 1378 + name: 'FutureCursor', 1379 + }, 1380 + ], 1381 + }, 1382 + labels: { 1383 + type: 'object', 1384 + required: ['seq', 'labels'], 1385 + properties: { 1386 + seq: { 1387 + type: 'integer', 1388 + }, 1389 + labels: { 1390 + type: 'array', 1391 + items: { 1392 + type: 'ref', 1393 + ref: 'lex:com.atproto.label.defs#label', 1394 + }, 1395 + }, 1396 + }, 1397 + }, 1398 + info: { 1399 + type: 'object', 1400 + required: ['name'], 1401 + properties: { 1402 + name: { 1403 + type: 'string', 1404 + knownValues: ['OutdatedCursor'], 1405 + }, 1406 + message: { 1407 + type: 'string', 1408 + }, 1409 + }, 1410 + }, 1411 + }, 1412 + }, 1413 + ComAtprotoModerationCreateReport: { 1414 + lexicon: 1, 1415 + id: 'com.atproto.moderation.createReport', 1416 + defs: { 1417 + main: { 1418 + type: 'procedure', 1419 + description: 'Report a repo or a record.', 1420 + input: { 1421 + encoding: 'application/json', 1422 + schema: { 1423 + type: 'object', 1424 + required: ['reasonType', 'subject'], 1425 + properties: { 1426 + reasonType: { 1427 + type: 'ref', 1428 + ref: 'lex:com.atproto.moderation.defs#reasonType', 1429 + }, 1430 + reason: { 1431 + type: 'string', 1432 + }, 1433 + subject: { 1434 + type: 'union', 1435 + refs: [ 1436 + 'lex:com.atproto.admin.defs#repoRef', 1437 + 'lex:com.atproto.repo.strongRef', 1438 + ], 1439 + }, 1440 + }, 1441 + }, 1442 + }, 1443 + output: { 1444 + encoding: 'application/json', 1445 + schema: { 1446 + type: 'object', 1447 + required: [ 1448 + 'id', 1449 + 'reasonType', 1450 + 'subject', 1451 + 'reportedBy', 1452 + 'createdAt', 1453 + ], 1454 + properties: { 1455 + id: { 1456 + type: 'integer', 1457 + }, 1458 + reasonType: { 1459 + type: 'ref', 1460 + ref: 'lex:com.atproto.moderation.defs#reasonType', 1461 + }, 1462 + reason: { 1463 + type: 'string', 1464 + }, 1465 + subject: { 1466 + type: 'union', 1467 + refs: [ 1468 + 'lex:com.atproto.admin.defs#repoRef', 1469 + 'lex:com.atproto.repo.strongRef', 1470 + ], 1471 + }, 1472 + reportedBy: { 1473 + type: 'string', 1474 + format: 'did', 1475 + }, 1476 + createdAt: { 1477 + type: 'string', 1478 + format: 'datetime', 1479 + }, 1480 + }, 1481 + }, 1482 + }, 1483 + }, 1484 + }, 1485 + }, 1486 + ComAtprotoModerationDefs: { 1487 + lexicon: 1, 1488 + id: 'com.atproto.moderation.defs', 1489 + defs: { 1490 + reasonType: { 1491 + type: 'string', 1492 + knownValues: [ 1493 + 'com.atproto.moderation.defs#reasonSpam', 1494 + 'com.atproto.moderation.defs#reasonViolation', 1495 + 'com.atproto.moderation.defs#reasonMisleading', 1496 + 'com.atproto.moderation.defs#reasonSexual', 1497 + 'com.atproto.moderation.defs#reasonRude', 1498 + 'com.atproto.moderation.defs#reasonOther', 1499 + ], 1500 + }, 1501 + reasonSpam: { 1502 + type: 'token', 1503 + description: 'Spam: frequent unwanted promotion, replies, mentions', 1504 + }, 1505 + reasonViolation: { 1506 + type: 'token', 1507 + description: 'Direct violation of server rules, laws, terms of service', 1508 + }, 1509 + reasonMisleading: { 1510 + type: 'token', 1511 + description: 'Misleading identity, affiliation, or content', 1512 + }, 1513 + reasonSexual: { 1514 + type: 'token', 1515 + description: 'Unwanted or mis-labeled sexual content', 1516 + }, 1517 + reasonRude: { 1518 + type: 'token', 1519 + description: 1520 + 'Rude, harassing, explicit, or otherwise unwelcoming behavior', 1521 + }, 1522 + reasonOther: { 1523 + type: 'token', 1524 + description: 'Other: reports not falling under another report category', 1525 + }, 1526 + }, 1527 + }, 1528 + ComAtprotoRepoApplyWrites: { 1529 + lexicon: 1, 1530 + id: 'com.atproto.repo.applyWrites', 1531 + defs: { 1532 + main: { 1533 + type: 'procedure', 1534 + description: 1535 + 'Apply a batch transaction of creates, updates, and deletes.', 1536 + input: { 1537 + encoding: 'application/json', 1538 + schema: { 1539 + type: 'object', 1540 + required: ['repo', 'writes'], 1541 + properties: { 1542 + repo: { 1543 + type: 'string', 1544 + format: 'at-identifier', 1545 + description: 'The handle or DID of the repo.', 1546 + }, 1547 + validate: { 1548 + type: 'boolean', 1549 + default: true, 1550 + description: 'Validate the records?', 1551 + }, 1552 + writes: { 1553 + type: 'array', 1554 + items: { 1555 + type: 'union', 1556 + refs: [ 1557 + 'lex:com.atproto.repo.applyWrites#create', 1558 + 'lex:com.atproto.repo.applyWrites#update', 1559 + 'lex:com.atproto.repo.applyWrites#delete', 1560 + ], 1561 + closed: true, 1562 + }, 1563 + }, 1564 + swapCommit: { 1565 + type: 'string', 1566 + format: 'cid', 1567 + }, 1568 + }, 1569 + }, 1570 + }, 1571 + errors: [ 1572 + { 1573 + name: 'InvalidSwap', 1574 + }, 1575 + ], 1576 + }, 1577 + create: { 1578 + type: 'object', 1579 + description: 'Create a new record.', 1580 + required: ['action', 'collection', 'value'], 1581 + properties: { 1582 + collection: { 1583 + type: 'string', 1584 + format: 'nsid', 1585 + }, 1586 + rkey: { 1587 + type: 'string', 1588 + }, 1589 + value: { 1590 + type: 'unknown', 1591 + }, 1592 + }, 1593 + }, 1594 + update: { 1595 + type: 'object', 1596 + description: 'Update an existing record.', 1597 + required: ['action', 'collection', 'rkey', 'value'], 1598 + properties: { 1599 + collection: { 1600 + type: 'string', 1601 + format: 'nsid', 1602 + }, 1603 + rkey: { 1604 + type: 'string', 1605 + }, 1606 + value: { 1607 + type: 'unknown', 1608 + }, 1609 + }, 1610 + }, 1611 + delete: { 1612 + type: 'object', 1613 + description: 'Delete an existing record.', 1614 + required: ['action', 'collection', 'rkey'], 1615 + properties: { 1616 + collection: { 1617 + type: 'string', 1618 + format: 'nsid', 1619 + }, 1620 + rkey: { 1621 + type: 'string', 1622 + }, 1623 + }, 1624 + }, 1625 + }, 1626 + }, 1627 + ComAtprotoRepoCreateRecord: { 1628 + lexicon: 1, 1629 + id: 'com.atproto.repo.createRecord', 1630 + defs: { 1631 + main: { 1632 + type: 'procedure', 1633 + description: 'Create a new record.', 1634 + input: { 1635 + encoding: 'application/json', 1636 + schema: { 1637 + type: 'object', 1638 + required: ['repo', 'collection', 'record'], 1639 + properties: { 1640 + repo: { 1641 + type: 'string', 1642 + format: 'at-identifier', 1643 + description: 'The handle or DID of the repo.', 1644 + }, 1645 + collection: { 1646 + type: 'string', 1647 + format: 'nsid', 1648 + description: 'The NSID of the record collection.', 1649 + }, 1650 + rkey: { 1651 + type: 'string', 1652 + description: 'The key of the record.', 1653 + }, 1654 + validate: { 1655 + type: 'boolean', 1656 + default: true, 1657 + description: 'Validate the record?', 1658 + }, 1659 + record: { 1660 + type: 'unknown', 1661 + description: 'The record to create.', 1662 + }, 1663 + swapCommit: { 1664 + type: 'string', 1665 + format: 'cid', 1666 + description: 1667 + 'Compare and swap with the previous commit by cid.', 1668 + }, 1669 + }, 1670 + }, 1671 + }, 1672 + output: { 1673 + encoding: 'application/json', 1674 + schema: { 1675 + type: 'object', 1676 + required: ['uri', 'cid'], 1677 + properties: { 1678 + uri: { 1679 + type: 'string', 1680 + format: 'at-uri', 1681 + }, 1682 + cid: { 1683 + type: 'string', 1684 + format: 'cid', 1685 + }, 1686 + }, 1687 + }, 1688 + }, 1689 + errors: [ 1690 + { 1691 + name: 'InvalidSwap', 1692 + }, 1693 + ], 1694 + }, 1695 + }, 1696 + }, 1697 + ComAtprotoRepoDeleteRecord: { 1698 + lexicon: 1, 1699 + id: 'com.atproto.repo.deleteRecord', 1700 + defs: { 1701 + main: { 1702 + type: 'procedure', 1703 + description: "Delete a record, or ensure it doesn't exist.", 1704 + input: { 1705 + encoding: 'application/json', 1706 + schema: { 1707 + type: 'object', 1708 + required: ['repo', 'collection', 'rkey'], 1709 + properties: { 1710 + repo: { 1711 + type: 'string', 1712 + format: 'at-identifier', 1713 + description: 'The handle or DID of the repo.', 1714 + }, 1715 + collection: { 1716 + type: 'string', 1717 + format: 'nsid', 1718 + description: 'The NSID of the record collection.', 1719 + }, 1720 + rkey: { 1721 + type: 'string', 1722 + description: 'The key of the record.', 1723 + }, 1724 + swapRecord: { 1725 + type: 'string', 1726 + format: 'cid', 1727 + description: 1728 + 'Compare and swap with the previous record by cid.', 1729 + }, 1730 + swapCommit: { 1731 + type: 'string', 1732 + format: 'cid', 1733 + description: 1734 + 'Compare and swap with the previous commit by cid.', 1735 + }, 1736 + }, 1737 + }, 1738 + }, 1739 + errors: [ 1740 + { 1741 + name: 'InvalidSwap', 1742 + }, 1743 + ], 1744 + }, 1745 + }, 1746 + }, 1747 + ComAtprotoRepoDescribeRepo: { 1748 + lexicon: 1, 1749 + id: 'com.atproto.repo.describeRepo', 1750 + defs: { 1751 + main: { 1752 + type: 'query', 1753 + description: 1754 + 'Get information about the repo, including the list of collections.', 1755 + parameters: { 1756 + type: 'params', 1757 + required: ['repo'], 1758 + properties: { 1759 + repo: { 1760 + type: 'string', 1761 + format: 'at-identifier', 1762 + description: 'The handle or DID of the repo.', 1763 + }, 1764 + }, 1765 + }, 1766 + output: { 1767 + encoding: 'application/json', 1768 + schema: { 1769 + type: 'object', 1770 + required: [ 1771 + 'handle', 1772 + 'did', 1773 + 'didDoc', 1774 + 'collections', 1775 + 'handleIsCorrect', 1776 + ], 1777 + properties: { 1778 + handle: { 1779 + type: 'string', 1780 + format: 'handle', 1781 + }, 1782 + did: { 1783 + type: 'string', 1784 + format: 'did', 1785 + }, 1786 + didDoc: { 1787 + type: 'unknown', 1788 + }, 1789 + collections: { 1790 + type: 'array', 1791 + items: { 1792 + type: 'string', 1793 + format: 'nsid', 1794 + }, 1795 + }, 1796 + handleIsCorrect: { 1797 + type: 'boolean', 1798 + }, 1799 + }, 1800 + }, 1801 + }, 1802 + }, 1803 + }, 1804 + }, 1805 + ComAtprotoRepoGetRecord: { 1806 + lexicon: 1, 1807 + id: 'com.atproto.repo.getRecord', 1808 + defs: { 1809 + main: { 1810 + type: 'query', 1811 + description: 'Get a record.', 1812 + parameters: { 1813 + type: 'params', 1814 + required: ['repo', 'collection', 'rkey'], 1815 + properties: { 1816 + repo: { 1817 + type: 'string', 1818 + format: 'at-identifier', 1819 + description: 'The handle or DID of the repo.', 1820 + }, 1821 + collection: { 1822 + type: 'string', 1823 + format: 'nsid', 1824 + description: 'The NSID of the record collection.', 1825 + }, 1826 + rkey: { 1827 + type: 'string', 1828 + description: 'The key of the record.', 1829 + }, 1830 + cid: { 1831 + type: 'string', 1832 + format: 'cid', 1833 + description: 1834 + 'The CID of the version of the record. If not specified, then return the most recent version.', 1835 + }, 1836 + }, 1837 + }, 1838 + output: { 1839 + encoding: 'application/json', 1840 + schema: { 1841 + type: 'object', 1842 + required: ['uri', 'value'], 1843 + properties: { 1844 + uri: { 1845 + type: 'string', 1846 + format: 'at-uri', 1847 + }, 1848 + cid: { 1849 + type: 'string', 1850 + format: 'cid', 1851 + }, 1852 + value: { 1853 + type: 'unknown', 1854 + }, 1855 + }, 1856 + }, 1857 + }, 1858 + }, 1859 + }, 1860 + }, 1861 + ComAtprotoRepoListRecords: { 1862 + lexicon: 1, 1863 + id: 'com.atproto.repo.listRecords', 1864 + defs: { 1865 + main: { 1866 + type: 'query', 1867 + description: 'List a range of records in a collection.', 1868 + parameters: { 1869 + type: 'params', 1870 + required: ['repo', 'collection'], 1871 + properties: { 1872 + repo: { 1873 + type: 'string', 1874 + format: 'at-identifier', 1875 + description: 'The handle or DID of the repo.', 1876 + }, 1877 + collection: { 1878 + type: 'string', 1879 + format: 'nsid', 1880 + description: 'The NSID of the record type.', 1881 + }, 1882 + limit: { 1883 + type: 'integer', 1884 + minimum: 1, 1885 + maximum: 100, 1886 + default: 50, 1887 + description: 'The number of records to return.', 1888 + }, 1889 + cursor: { 1890 + type: 'string', 1891 + }, 1892 + rkeyStart: { 1893 + type: 'string', 1894 + description: 1895 + 'DEPRECATED: The lowest sort-ordered rkey to start from (exclusive)', 1896 + }, 1897 + rkeyEnd: { 1898 + type: 'string', 1899 + description: 1900 + 'DEPRECATED: The highest sort-ordered rkey to stop at (exclusive)', 1901 + }, 1902 + reverse: { 1903 + type: 'boolean', 1904 + description: 'Reverse the order of the returned records?', 1905 + }, 1906 + }, 1907 + }, 1908 + output: { 1909 + encoding: 'application/json', 1910 + schema: { 1911 + type: 'object', 1912 + required: ['records'], 1913 + properties: { 1914 + cursor: { 1915 + type: 'string', 1916 + }, 1917 + records: { 1918 + type: 'array', 1919 + items: { 1920 + type: 'ref', 1921 + ref: 'lex:com.atproto.repo.listRecords#record', 1922 + }, 1923 + }, 1924 + }, 1925 + }, 1926 + }, 1927 + }, 1928 + record: { 1929 + type: 'object', 1930 + required: ['uri', 'cid', 'value'], 1931 + properties: { 1932 + uri: { 1933 + type: 'string', 1934 + format: 'at-uri', 1935 + }, 1936 + cid: { 1937 + type: 'string', 1938 + format: 'cid', 1939 + }, 1940 + value: { 1941 + type: 'unknown', 1942 + }, 1943 + }, 1944 + }, 1945 + }, 1946 + }, 1947 + ComAtprotoRepoPutRecord: { 1948 + lexicon: 1, 1949 + id: 'com.atproto.repo.putRecord', 1950 + defs: { 1951 + main: { 1952 + type: 'procedure', 1953 + description: 'Write a record, creating or updating it as needed.', 1954 + input: { 1955 + encoding: 'application/json', 1956 + schema: { 1957 + type: 'object', 1958 + required: ['repo', 'collection', 'rkey', 'record'], 1959 + nullable: ['swapRecord'], 1960 + properties: { 1961 + repo: { 1962 + type: 'string', 1963 + format: 'at-identifier', 1964 + description: 'The handle or DID of the repo.', 1965 + }, 1966 + collection: { 1967 + type: 'string', 1968 + format: 'nsid', 1969 + description: 'The NSID of the record collection.', 1970 + }, 1971 + rkey: { 1972 + type: 'string', 1973 + description: 'The key of the record.', 1974 + }, 1975 + validate: { 1976 + type: 'boolean', 1977 + default: true, 1978 + description: 'Validate the record?', 1979 + }, 1980 + record: { 1981 + type: 'unknown', 1982 + description: 'The record to write.', 1983 + }, 1984 + swapRecord: { 1985 + type: 'string', 1986 + format: 'cid', 1987 + description: 1988 + 'Compare and swap with the previous record by cid.', 1989 + }, 1990 + swapCommit: { 1991 + type: 'string', 1992 + format: 'cid', 1993 + description: 1994 + 'Compare and swap with the previous commit by cid.', 1995 + }, 1996 + }, 1997 + }, 1998 + }, 1999 + output: { 2000 + encoding: 'application/json', 2001 + schema: { 2002 + type: 'object', 2003 + required: ['uri', 'cid'], 2004 + properties: { 2005 + uri: { 2006 + type: 'string', 2007 + format: 'at-uri', 2008 + }, 2009 + cid: { 2010 + type: 'string', 2011 + format: 'cid', 2012 + }, 2013 + }, 2014 + }, 2015 + }, 2016 + errors: [ 2017 + { 2018 + name: 'InvalidSwap', 2019 + }, 2020 + ], 2021 + }, 2022 + }, 2023 + }, 2024 + ComAtprotoRepoRebaseRepo: { 2025 + lexicon: 1, 2026 + id: 'com.atproto.repo.rebaseRepo', 2027 + defs: { 2028 + main: { 2029 + type: 'procedure', 2030 + description: 'Simple rebase of repo that deletes history', 2031 + input: { 2032 + encoding: 'application/json', 2033 + schema: { 2034 + type: 'object', 2035 + required: ['repo'], 2036 + properties: { 2037 + repo: { 2038 + type: 'string', 2039 + format: 'at-identifier', 2040 + description: 'The handle or DID of the repo.', 2041 + }, 2042 + swapCommit: { 2043 + type: 'string', 2044 + format: 'cid', 2045 + description: 2046 + 'Compare and swap with the previous commit by cid.', 2047 + }, 2048 + }, 2049 + }, 2050 + }, 2051 + errors: [ 2052 + { 2053 + name: 'InvalidSwap', 2054 + }, 2055 + ], 2056 + }, 2057 + }, 2058 + }, 2059 + ComAtprotoRepoStrongRef: { 2060 + lexicon: 1, 2061 + id: 'com.atproto.repo.strongRef', 2062 + description: 'A URI with a content-hash fingerprint.', 2063 + defs: { 2064 + main: { 2065 + type: 'object', 2066 + required: ['uri', 'cid'], 2067 + properties: { 2068 + uri: { 2069 + type: 'string', 2070 + format: 'at-uri', 2071 + }, 2072 + cid: { 2073 + type: 'string', 2074 + format: 'cid', 2075 + }, 2076 + }, 2077 + }, 2078 + }, 2079 + }, 2080 + ComAtprotoRepoUploadBlob: { 2081 + lexicon: 1, 2082 + id: 'com.atproto.repo.uploadBlob', 2083 + defs: { 2084 + main: { 2085 + type: 'procedure', 2086 + description: 2087 + 'Upload a new blob to be added to repo in a later request.', 2088 + input: { 2089 + encoding: '*/*', 2090 + }, 2091 + output: { 2092 + encoding: 'application/json', 2093 + schema: { 2094 + type: 'object', 2095 + required: ['blob'], 2096 + properties: { 2097 + blob: { 2098 + type: 'blob', 2099 + }, 2100 + }, 2101 + }, 2102 + }, 2103 + }, 2104 + }, 2105 + }, 2106 + ComAtprotoServerCreateAccount: { 2107 + lexicon: 1, 2108 + id: 'com.atproto.server.createAccount', 2109 + defs: { 2110 + main: { 2111 + type: 'procedure', 2112 + description: 'Create an account.', 2113 + input: { 2114 + encoding: 'application/json', 2115 + schema: { 2116 + type: 'object', 2117 + required: ['handle', 'email', 'password'], 2118 + properties: { 2119 + email: { 2120 + type: 'string', 2121 + }, 2122 + handle: { 2123 + type: 'string', 2124 + format: 'handle', 2125 + }, 2126 + did: { 2127 + type: 'string', 2128 + format: 'did', 2129 + }, 2130 + inviteCode: { 2131 + type: 'string', 2132 + }, 2133 + password: { 2134 + type: 'string', 2135 + }, 2136 + recoveryKey: { 2137 + type: 'string', 2138 + }, 2139 + }, 2140 + }, 2141 + }, 2142 + output: { 2143 + encoding: 'application/json', 2144 + schema: { 2145 + type: 'object', 2146 + required: ['accessJwt', 'refreshJwt', 'handle', 'did'], 2147 + properties: { 2148 + accessJwt: { 2149 + type: 'string', 2150 + }, 2151 + refreshJwt: { 2152 + type: 'string', 2153 + }, 2154 + handle: { 2155 + type: 'string', 2156 + format: 'handle', 2157 + }, 2158 + did: { 2159 + type: 'string', 2160 + format: 'did', 2161 + }, 2162 + }, 2163 + }, 2164 + }, 2165 + errors: [ 2166 + { 2167 + name: 'InvalidHandle', 2168 + }, 2169 + { 2170 + name: 'InvalidPassword', 2171 + }, 2172 + { 2173 + name: 'InvalidInviteCode', 2174 + }, 2175 + { 2176 + name: 'HandleNotAvailable', 2177 + }, 2178 + { 2179 + name: 'UnsupportedDomain', 2180 + }, 2181 + { 2182 + name: 'UnresolvableDid', 2183 + }, 2184 + { 2185 + name: 'IncompatibleDidDoc', 2186 + }, 2187 + ], 2188 + }, 2189 + }, 2190 + }, 2191 + ComAtprotoServerCreateAppPassword: { 2192 + lexicon: 1, 2193 + id: 'com.atproto.server.createAppPassword', 2194 + defs: { 2195 + main: { 2196 + type: 'procedure', 2197 + description: 'Create an app-specific password.', 2198 + input: { 2199 + encoding: 'application/json', 2200 + schema: { 2201 + type: 'object', 2202 + required: ['name'], 2203 + properties: { 2204 + name: { 2205 + type: 'string', 2206 + }, 2207 + }, 2208 + }, 2209 + }, 2210 + output: { 2211 + encoding: 'application/json', 2212 + schema: { 2213 + type: 'ref', 2214 + ref: 'lex:com.atproto.server.createAppPassword#appPassword', 2215 + }, 2216 + }, 2217 + errors: [ 2218 + { 2219 + name: 'AccountTakedown', 2220 + }, 2221 + ], 2222 + }, 2223 + appPassword: { 2224 + type: 'object', 2225 + required: ['name', 'password', 'createdAt'], 2226 + properties: { 2227 + name: { 2228 + type: 'string', 2229 + }, 2230 + password: { 2231 + type: 'string', 2232 + }, 2233 + createdAt: { 2234 + type: 'string', 2235 + format: 'datetime', 2236 + }, 2237 + }, 2238 + }, 2239 + }, 2240 + }, 2241 + ComAtprotoServerCreateInviteCode: { 2242 + lexicon: 1, 2243 + id: 'com.atproto.server.createInviteCode', 2244 + defs: { 2245 + main: { 2246 + type: 'procedure', 2247 + description: 'Create an invite code.', 2248 + input: { 2249 + encoding: 'application/json', 2250 + schema: { 2251 + type: 'object', 2252 + required: ['useCount'], 2253 + properties: { 2254 + useCount: { 2255 + type: 'integer', 2256 + }, 2257 + forAccount: { 2258 + type: 'string', 2259 + format: 'did', 2260 + }, 2261 + }, 2262 + }, 2263 + }, 2264 + output: { 2265 + encoding: 'application/json', 2266 + schema: { 2267 + type: 'object', 2268 + required: ['code'], 2269 + properties: { 2270 + code: { 2271 + type: 'string', 2272 + }, 2273 + }, 2274 + }, 2275 + }, 2276 + }, 2277 + }, 2278 + }, 2279 + ComAtprotoServerCreateInviteCodes: { 2280 + lexicon: 1, 2281 + id: 'com.atproto.server.createInviteCodes', 2282 + defs: { 2283 + main: { 2284 + type: 'procedure', 2285 + description: 'Create an invite code.', 2286 + input: { 2287 + encoding: 'application/json', 2288 + schema: { 2289 + type: 'object', 2290 + required: ['codeCount', 'useCount'], 2291 + properties: { 2292 + codeCount: { 2293 + type: 'integer', 2294 + default: 1, 2295 + }, 2296 + useCount: { 2297 + type: 'integer', 2298 + }, 2299 + forAccounts: { 2300 + type: 'array', 2301 + items: { 2302 + type: 'string', 2303 + format: 'did', 2304 + }, 2305 + }, 2306 + }, 2307 + }, 2308 + }, 2309 + output: { 2310 + encoding: 'application/json', 2311 + schema: { 2312 + type: 'object', 2313 + required: ['codes'], 2314 + properties: { 2315 + codes: { 2316 + type: 'array', 2317 + items: { 2318 + type: 'ref', 2319 + ref: 'lex:com.atproto.server.createInviteCodes#accountCodes', 2320 + }, 2321 + }, 2322 + }, 2323 + }, 2324 + }, 2325 + }, 2326 + accountCodes: { 2327 + type: 'object', 2328 + required: ['account', 'codes'], 2329 + properties: { 2330 + account: { 2331 + type: 'string', 2332 + }, 2333 + codes: { 2334 + type: 'array', 2335 + items: { 2336 + type: 'string', 2337 + }, 2338 + }, 2339 + }, 2340 + }, 2341 + }, 2342 + }, 2343 + ComAtprotoServerCreateSession: { 2344 + lexicon: 1, 2345 + id: 'com.atproto.server.createSession', 2346 + defs: { 2347 + main: { 2348 + type: 'procedure', 2349 + description: 'Create an authentication session.', 2350 + input: { 2351 + encoding: 'application/json', 2352 + schema: { 2353 + type: 'object', 2354 + required: ['identifier', 'password'], 2355 + properties: { 2356 + identifier: { 2357 + type: 'string', 2358 + description: 2359 + 'Handle or other identifier supported by the server for the authenticating user.', 2360 + }, 2361 + password: { 2362 + type: 'string', 2363 + }, 2364 + }, 2365 + }, 2366 + }, 2367 + output: { 2368 + encoding: 'application/json', 2369 + schema: { 2370 + type: 'object', 2371 + required: ['accessJwt', 'refreshJwt', 'handle', 'did'], 2372 + properties: { 2373 + accessJwt: { 2374 + type: 'string', 2375 + }, 2376 + refreshJwt: { 2377 + type: 'string', 2378 + }, 2379 + handle: { 2380 + type: 'string', 2381 + format: 'handle', 2382 + }, 2383 + did: { 2384 + type: 'string', 2385 + format: 'did', 2386 + }, 2387 + email: { 2388 + type: 'string', 2389 + }, 2390 + }, 2391 + }, 2392 + }, 2393 + errors: [ 2394 + { 2395 + name: 'AccountTakedown', 2396 + }, 2397 + ], 2398 + }, 2399 + }, 2400 + }, 2401 + ComAtprotoServerDefs: { 2402 + lexicon: 1, 2403 + id: 'com.atproto.server.defs', 2404 + defs: { 2405 + inviteCode: { 2406 + type: 'object', 2407 + required: [ 2408 + 'code', 2409 + 'available', 2410 + 'disabled', 2411 + 'forAccount', 2412 + 'createdBy', 2413 + 'createdAt', 2414 + 'uses', 2415 + ], 2416 + properties: { 2417 + code: { 2418 + type: 'string', 2419 + }, 2420 + available: { 2421 + type: 'integer', 2422 + }, 2423 + disabled: { 2424 + type: 'boolean', 2425 + }, 2426 + forAccount: { 2427 + type: 'string', 2428 + }, 2429 + createdBy: { 2430 + type: 'string', 2431 + }, 2432 + createdAt: { 2433 + type: 'string', 2434 + format: 'datetime', 2435 + }, 2436 + uses: { 2437 + type: 'array', 2438 + items: { 2439 + type: 'ref', 2440 + ref: 'lex:com.atproto.server.defs#inviteCodeUse', 2441 + }, 2442 + }, 2443 + }, 2444 + }, 2445 + inviteCodeUse: { 2446 + type: 'object', 2447 + required: ['usedBy', 'usedAt'], 2448 + properties: { 2449 + usedBy: { 2450 + type: 'string', 2451 + format: 'did', 2452 + }, 2453 + usedAt: { 2454 + type: 'string', 2455 + format: 'datetime', 2456 + }, 2457 + }, 2458 + }, 2459 + }, 2460 + }, 2461 + ComAtprotoServerDeleteAccount: { 2462 + lexicon: 1, 2463 + id: 'com.atproto.server.deleteAccount', 2464 + defs: { 2465 + main: { 2466 + type: 'procedure', 2467 + description: 'Delete a user account with a token and password.', 2468 + input: { 2469 + encoding: 'application/json', 2470 + schema: { 2471 + type: 'object', 2472 + required: ['did', 'password', 'token'], 2473 + properties: { 2474 + did: { 2475 + type: 'string', 2476 + format: 'did', 2477 + }, 2478 + password: { 2479 + type: 'string', 2480 + }, 2481 + token: { 2482 + type: 'string', 2483 + }, 2484 + }, 2485 + }, 2486 + }, 2487 + errors: [ 2488 + { 2489 + name: 'ExpiredToken', 2490 + }, 2491 + { 2492 + name: 'InvalidToken', 2493 + }, 2494 + ], 2495 + }, 2496 + }, 2497 + }, 2498 + ComAtprotoServerDeleteSession: { 2499 + lexicon: 1, 2500 + id: 'com.atproto.server.deleteSession', 2501 + defs: { 2502 + main: { 2503 + type: 'procedure', 2504 + description: 'Delete the current session.', 2505 + }, 2506 + }, 2507 + }, 2508 + ComAtprotoServerDescribeServer: { 2509 + lexicon: 1, 2510 + id: 'com.atproto.server.describeServer', 2511 + defs: { 2512 + main: { 2513 + type: 'query', 2514 + description: 2515 + "Get a document describing the service's accounts configuration.", 2516 + output: { 2517 + encoding: 'application/json', 2518 + schema: { 2519 + type: 'object', 2520 + required: ['availableUserDomains'], 2521 + properties: { 2522 + inviteCodeRequired: { 2523 + type: 'boolean', 2524 + }, 2525 + availableUserDomains: { 2526 + type: 'array', 2527 + items: { 2528 + type: 'string', 2529 + }, 2530 + }, 2531 + links: { 2532 + type: 'ref', 2533 + ref: 'lex:com.atproto.server.describeServer#links', 2534 + }, 2535 + }, 2536 + }, 2537 + }, 2538 + }, 2539 + links: { 2540 + type: 'object', 2541 + properties: { 2542 + privacyPolicy: { 2543 + type: 'string', 2544 + }, 2545 + termsOfService: { 2546 + type: 'string', 2547 + }, 2548 + }, 2549 + }, 2550 + }, 2551 + }, 2552 + ComAtprotoServerGetAccountInviteCodes: { 2553 + lexicon: 1, 2554 + id: 'com.atproto.server.getAccountInviteCodes', 2555 + defs: { 2556 + main: { 2557 + type: 'query', 2558 + description: 'Get all invite codes for a given account', 2559 + parameters: { 2560 + type: 'params', 2561 + properties: { 2562 + includeUsed: { 2563 + type: 'boolean', 2564 + default: true, 2565 + }, 2566 + createAvailable: { 2567 + type: 'boolean', 2568 + default: true, 2569 + }, 2570 + }, 2571 + }, 2572 + output: { 2573 + encoding: 'application/json', 2574 + schema: { 2575 + type: 'object', 2576 + required: ['codes'], 2577 + properties: { 2578 + codes: { 2579 + type: 'array', 2580 + items: { 2581 + type: 'ref', 2582 + ref: 'lex:com.atproto.server.defs#inviteCode', 2583 + }, 2584 + }, 2585 + }, 2586 + }, 2587 + }, 2588 + errors: [ 2589 + { 2590 + name: 'DuplicateCreate', 2591 + }, 2592 + ], 2593 + }, 2594 + }, 2595 + }, 2596 + ComAtprotoServerGetSession: { 2597 + lexicon: 1, 2598 + id: 'com.atproto.server.getSession', 2599 + defs: { 2600 + main: { 2601 + type: 'query', 2602 + description: 'Get information about the current session.', 2603 + output: { 2604 + encoding: 'application/json', 2605 + schema: { 2606 + type: 'object', 2607 + required: ['handle', 'did'], 2608 + properties: { 2609 + handle: { 2610 + type: 'string', 2611 + format: 'handle', 2612 + }, 2613 + did: { 2614 + type: 'string', 2615 + format: 'did', 2616 + }, 2617 + email: { 2618 + type: 'string', 2619 + }, 2620 + }, 2621 + }, 2622 + }, 2623 + }, 2624 + }, 2625 + }, 2626 + ComAtprotoServerListAppPasswords: { 2627 + lexicon: 1, 2628 + id: 'com.atproto.server.listAppPasswords', 2629 + defs: { 2630 + main: { 2631 + type: 'query', 2632 + description: 'List all app-specific passwords.', 2633 + output: { 2634 + encoding: 'application/json', 2635 + schema: { 2636 + type: 'object', 2637 + required: ['passwords'], 2638 + properties: { 2639 + passwords: { 2640 + type: 'array', 2641 + items: { 2642 + type: 'ref', 2643 + ref: 'lex:com.atproto.server.listAppPasswords#appPassword', 2644 + }, 2645 + }, 2646 + }, 2647 + }, 2648 + }, 2649 + errors: [ 2650 + { 2651 + name: 'AccountTakedown', 2652 + }, 2653 + ], 2654 + }, 2655 + appPassword: { 2656 + type: 'object', 2657 + required: ['name', 'createdAt'], 2658 + properties: { 2659 + name: { 2660 + type: 'string', 2661 + }, 2662 + createdAt: { 2663 + type: 'string', 2664 + format: 'datetime', 2665 + }, 2666 + }, 2667 + }, 2668 + }, 2669 + }, 2670 + ComAtprotoServerRefreshSession: { 2671 + lexicon: 1, 2672 + id: 'com.atproto.server.refreshSession', 2673 + defs: { 2674 + main: { 2675 + type: 'procedure', 2676 + description: 'Refresh an authentication session.', 2677 + output: { 2678 + encoding: 'application/json', 2679 + schema: { 2680 + type: 'object', 2681 + required: ['accessJwt', 'refreshJwt', 'handle', 'did'], 2682 + properties: { 2683 + accessJwt: { 2684 + type: 'string', 2685 + }, 2686 + refreshJwt: { 2687 + type: 'string', 2688 + }, 2689 + handle: { 2690 + type: 'string', 2691 + format: 'handle', 2692 + }, 2693 + did: { 2694 + type: 'string', 2695 + format: 'did', 2696 + }, 2697 + }, 2698 + }, 2699 + }, 2700 + errors: [ 2701 + { 2702 + name: 'AccountTakedown', 2703 + }, 2704 + ], 2705 + }, 2706 + }, 2707 + }, 2708 + ComAtprotoServerRequestAccountDelete: { 2709 + lexicon: 1, 2710 + id: 'com.atproto.server.requestAccountDelete', 2711 + defs: { 2712 + main: { 2713 + type: 'procedure', 2714 + description: 'Initiate a user account deletion via email.', 2715 + }, 2716 + }, 2717 + }, 2718 + ComAtprotoServerRequestPasswordReset: { 2719 + lexicon: 1, 2720 + id: 'com.atproto.server.requestPasswordReset', 2721 + defs: { 2722 + main: { 2723 + type: 'procedure', 2724 + description: 'Initiate a user account password reset via email.', 2725 + input: { 2726 + encoding: 'application/json', 2727 + schema: { 2728 + type: 'object', 2729 + required: ['email'], 2730 + properties: { 2731 + email: { 2732 + type: 'string', 2733 + }, 2734 + }, 2735 + }, 2736 + }, 2737 + }, 2738 + }, 2739 + }, 2740 + ComAtprotoServerResetPassword: { 2741 + lexicon: 1, 2742 + id: 'com.atproto.server.resetPassword', 2743 + defs: { 2744 + main: { 2745 + type: 'procedure', 2746 + description: 'Reset a user account password using a token.', 2747 + input: { 2748 + encoding: 'application/json', 2749 + schema: { 2750 + type: 'object', 2751 + required: ['token', 'password'], 2752 + properties: { 2753 + token: { 2754 + type: 'string', 2755 + }, 2756 + password: { 2757 + type: 'string', 2758 + }, 2759 + }, 2760 + }, 2761 + }, 2762 + errors: [ 2763 + { 2764 + name: 'ExpiredToken', 2765 + }, 2766 + { 2767 + name: 'InvalidToken', 2768 + }, 2769 + ], 2770 + }, 2771 + }, 2772 + }, 2773 + ComAtprotoServerRevokeAppPassword: { 2774 + lexicon: 1, 2775 + id: 'com.atproto.server.revokeAppPassword', 2776 + defs: { 2777 + main: { 2778 + type: 'procedure', 2779 + description: 'Revoke an app-specific password by name.', 2780 + input: { 2781 + encoding: 'application/json', 2782 + schema: { 2783 + type: 'object', 2784 + required: ['name'], 2785 + properties: { 2786 + name: { 2787 + type: 'string', 2788 + }, 2789 + }, 2790 + }, 2791 + }, 2792 + }, 2793 + }, 2794 + }, 2795 + ComAtprotoSyncGetBlob: { 2796 + lexicon: 1, 2797 + id: 'com.atproto.sync.getBlob', 2798 + defs: { 2799 + main: { 2800 + type: 'query', 2801 + description: 'Get a blob associated with a given repo.', 2802 + parameters: { 2803 + type: 'params', 2804 + required: ['did', 'cid'], 2805 + properties: { 2806 + did: { 2807 + type: 'string', 2808 + format: 'did', 2809 + description: 'The DID of the repo.', 2810 + }, 2811 + cid: { 2812 + type: 'string', 2813 + format: 'cid', 2814 + description: 'The CID of the blob to fetch', 2815 + }, 2816 + }, 2817 + }, 2818 + output: { 2819 + encoding: '*/*', 2820 + }, 2821 + }, 2822 + }, 2823 + }, 2824 + ComAtprotoSyncGetBlocks: { 2825 + lexicon: 1, 2826 + id: 'com.atproto.sync.getBlocks', 2827 + defs: { 2828 + main: { 2829 + type: 'query', 2830 + description: 'Gets blocks from a given repo.', 2831 + parameters: { 2832 + type: 'params', 2833 + required: ['did', 'cids'], 2834 + properties: { 2835 + did: { 2836 + type: 'string', 2837 + format: 'did', 2838 + description: 'The DID of the repo.', 2839 + }, 2840 + cids: { 2841 + type: 'array', 2842 + items: { 2843 + type: 'string', 2844 + format: 'cid', 2845 + }, 2846 + }, 2847 + }, 2848 + }, 2849 + output: { 2850 + encoding: 'application/vnd.ipld.car', 2851 + }, 2852 + }, 2853 + }, 2854 + }, 2855 + ComAtprotoSyncGetCheckout: { 2856 + lexicon: 1, 2857 + id: 'com.atproto.sync.getCheckout', 2858 + defs: { 2859 + main: { 2860 + type: 'query', 2861 + description: 'Gets the repo state.', 2862 + parameters: { 2863 + type: 'params', 2864 + required: ['did'], 2865 + properties: { 2866 + did: { 2867 + type: 'string', 2868 + format: 'did', 2869 + description: 'The DID of the repo.', 2870 + }, 2871 + commit: { 2872 + type: 'string', 2873 + format: 'cid', 2874 + description: 2875 + 'The commit to get the checkout from. Defaults to current HEAD.', 2876 + }, 2877 + }, 2878 + }, 2879 + output: { 2880 + encoding: 'application/vnd.ipld.car', 2881 + }, 2882 + }, 2883 + }, 2884 + }, 2885 + ComAtprotoSyncGetCommitPath: { 2886 + lexicon: 1, 2887 + id: 'com.atproto.sync.getCommitPath', 2888 + defs: { 2889 + main: { 2890 + type: 'query', 2891 + description: 'Gets the path of repo commits', 2892 + parameters: { 2893 + type: 'params', 2894 + required: ['did'], 2895 + properties: { 2896 + did: { 2897 + type: 'string', 2898 + format: 'did', 2899 + description: 'The DID of the repo.', 2900 + }, 2901 + latest: { 2902 + type: 'string', 2903 + format: 'cid', 2904 + description: 'The most recent commit', 2905 + }, 2906 + earliest: { 2907 + type: 'string', 2908 + format: 'cid', 2909 + description: 'The earliest commit to start from', 2910 + }, 2911 + }, 2912 + }, 2913 + output: { 2914 + encoding: 'application/json', 2915 + schema: { 2916 + type: 'object', 2917 + required: ['commits'], 2918 + properties: { 2919 + commits: { 2920 + type: 'array', 2921 + items: { 2922 + type: 'string', 2923 + format: 'cid', 2924 + }, 2925 + }, 2926 + }, 2927 + }, 2928 + }, 2929 + }, 2930 + }, 2931 + }, 2932 + ComAtprotoSyncGetHead: { 2933 + lexicon: 1, 2934 + id: 'com.atproto.sync.getHead', 2935 + defs: { 2936 + main: { 2937 + type: 'query', 2938 + description: 'Gets the current HEAD CID of a repo.', 2939 + parameters: { 2940 + type: 'params', 2941 + required: ['did'], 2942 + properties: { 2943 + did: { 2944 + type: 'string', 2945 + format: 'did', 2946 + description: 'The DID of the repo.', 2947 + }, 2948 + }, 2949 + }, 2950 + output: { 2951 + encoding: 'application/json', 2952 + schema: { 2953 + type: 'object', 2954 + required: ['root'], 2955 + properties: { 2956 + root: { 2957 + type: 'string', 2958 + format: 'cid', 2959 + }, 2960 + }, 2961 + }, 2962 + }, 2963 + }, 2964 + }, 2965 + }, 2966 + ComAtprotoSyncGetRecord: { 2967 + lexicon: 1, 2968 + id: 'com.atproto.sync.getRecord', 2969 + defs: { 2970 + main: { 2971 + type: 'query', 2972 + description: 2973 + 'Gets blocks needed for existence or non-existence of record.', 2974 + parameters: { 2975 + type: 'params', 2976 + required: ['did', 'collection', 'rkey'], 2977 + properties: { 2978 + did: { 2979 + type: 'string', 2980 + format: 'did', 2981 + description: 'The DID of the repo.', 2982 + }, 2983 + collection: { 2984 + type: 'string', 2985 + format: 'nsid', 2986 + }, 2987 + rkey: { 2988 + type: 'string', 2989 + }, 2990 + commit: { 2991 + type: 'string', 2992 + format: 'cid', 2993 + description: 'An optional past commit CID.', 2994 + }, 2995 + }, 2996 + }, 2997 + output: { 2998 + encoding: 'application/vnd.ipld.car', 2999 + }, 3000 + }, 3001 + }, 3002 + }, 3003 + ComAtprotoSyncGetRepo: { 3004 + lexicon: 1, 3005 + id: 'com.atproto.sync.getRepo', 3006 + defs: { 3007 + main: { 3008 + type: 'query', 3009 + description: 'Gets the repo state.', 3010 + parameters: { 3011 + type: 'params', 3012 + required: ['did'], 3013 + properties: { 3014 + did: { 3015 + type: 'string', 3016 + format: 'did', 3017 + description: 'The DID of the repo.', 3018 + }, 3019 + earliest: { 3020 + type: 'string', 3021 + format: 'cid', 3022 + description: 3023 + 'The earliest commit in the commit range (not inclusive)', 3024 + }, 3025 + latest: { 3026 + type: 'string', 3027 + format: 'cid', 3028 + description: 'The latest commit in the commit range (inclusive)', 3029 + }, 3030 + }, 3031 + }, 3032 + output: { 3033 + encoding: 'application/vnd.ipld.car', 3034 + }, 3035 + }, 3036 + }, 3037 + }, 3038 + ComAtprotoSyncListBlobs: { 3039 + lexicon: 1, 3040 + id: 'com.atproto.sync.listBlobs', 3041 + defs: { 3042 + main: { 3043 + type: 'query', 3044 + description: 'List blob cids for some range of commits', 3045 + parameters: { 3046 + type: 'params', 3047 + required: ['did'], 3048 + properties: { 3049 + did: { 3050 + type: 'string', 3051 + format: 'did', 3052 + description: 'The DID of the repo.', 3053 + }, 3054 + latest: { 3055 + type: 'string', 3056 + format: 'cid', 3057 + description: 'The most recent commit', 3058 + }, 3059 + earliest: { 3060 + type: 'string', 3061 + format: 'cid', 3062 + description: 'The earliest commit to start from', 3063 + }, 3064 + }, 3065 + }, 3066 + output: { 3067 + encoding: 'application/json', 3068 + schema: { 3069 + type: 'object', 3070 + required: ['cids'], 3071 + properties: { 3072 + cids: { 3073 + type: 'array', 3074 + items: { 3075 + type: 'string', 3076 + format: 'cid', 3077 + }, 3078 + }, 3079 + }, 3080 + }, 3081 + }, 3082 + }, 3083 + }, 3084 + }, 3085 + ComAtprotoSyncListRepos: { 3086 + lexicon: 1, 3087 + id: 'com.atproto.sync.listRepos', 3088 + defs: { 3089 + main: { 3090 + type: 'query', 3091 + description: 'List dids and root cids of hosted repos', 3092 + parameters: { 3093 + type: 'params', 3094 + properties: { 3095 + limit: { 3096 + type: 'integer', 3097 + minimum: 1, 3098 + maximum: 1000, 3099 + default: 500, 3100 + }, 3101 + cursor: { 3102 + type: 'string', 3103 + }, 3104 + }, 3105 + }, 3106 + output: { 3107 + encoding: 'application/json', 3108 + schema: { 3109 + type: 'object', 3110 + required: ['repos'], 3111 + properties: { 3112 + cursor: { 3113 + type: 'string', 3114 + }, 3115 + repos: { 3116 + type: 'array', 3117 + items: { 3118 + type: 'ref', 3119 + ref: 'lex:com.atproto.sync.listRepos#repo', 3120 + }, 3121 + }, 3122 + }, 3123 + }, 3124 + }, 3125 + }, 3126 + repo: { 3127 + type: 'object', 3128 + required: ['did', 'head'], 3129 + properties: { 3130 + did: { 3131 + type: 'string', 3132 + format: 'did', 3133 + }, 3134 + head: { 3135 + type: 'string', 3136 + format: 'cid', 3137 + }, 3138 + }, 3139 + }, 3140 + }, 3141 + }, 3142 + ComAtprotoSyncNotifyOfUpdate: { 3143 + lexicon: 1, 3144 + id: 'com.atproto.sync.notifyOfUpdate', 3145 + defs: { 3146 + main: { 3147 + type: 'query', 3148 + description: 3149 + 'Notify a crawling service of a recent update. Often when a long break between updates causes the connection with the crawling service to break.', 3150 + parameters: { 3151 + type: 'params', 3152 + required: ['hostname'], 3153 + properties: { 3154 + hostname: { 3155 + type: 'string', 3156 + description: 3157 + 'Hostname of the service that is notifying of update.', 3158 + }, 3159 + }, 3160 + }, 3161 + }, 3162 + }, 3163 + }, 3164 + ComAtprotoSyncRequestCrawl: { 3165 + lexicon: 1, 3166 + id: 'com.atproto.sync.requestCrawl', 3167 + defs: { 3168 + main: { 3169 + type: 'query', 3170 + description: 'Request a service to persistently crawl hosted repos.', 3171 + parameters: { 3172 + type: 'params', 3173 + required: ['hostname'], 3174 + properties: { 3175 + hostname: { 3176 + type: 'string', 3177 + description: 3178 + 'Hostname of the service that is requesting to be crawled.', 3179 + }, 3180 + }, 3181 + }, 3182 + }, 3183 + }, 3184 + }, 3185 + ComAtprotoSyncSubscribeRepos: { 3186 + lexicon: 1, 3187 + id: 'com.atproto.sync.subscribeRepos', 3188 + defs: { 3189 + main: { 3190 + type: 'subscription', 3191 + description: 'Subscribe to repo updates', 3192 + parameters: { 3193 + type: 'params', 3194 + properties: { 3195 + cursor: { 3196 + type: 'integer', 3197 + description: 'The last known event to backfill from.', 3198 + }, 3199 + }, 3200 + }, 3201 + message: { 3202 + schema: { 3203 + type: 'union', 3204 + refs: [ 3205 + 'lex:com.atproto.sync.subscribeRepos#commit', 3206 + 'lex:com.atproto.sync.subscribeRepos#handle', 3207 + 'lex:com.atproto.sync.subscribeRepos#migrate', 3208 + 'lex:com.atproto.sync.subscribeRepos#tombstone', 3209 + 'lex:com.atproto.sync.subscribeRepos#info', 3210 + ], 3211 + }, 3212 + }, 3213 + errors: [ 3214 + { 3215 + name: 'FutureCursor', 3216 + }, 3217 + ], 3218 + }, 3219 + commit: { 3220 + type: 'object', 3221 + required: [ 3222 + 'seq', 3223 + 'rebase', 3224 + 'tooBig', 3225 + 'repo', 3226 + 'commit', 3227 + 'prev', 3228 + 'blocks', 3229 + 'ops', 3230 + 'blobs', 3231 + 'time', 3232 + ], 3233 + nullable: ['prev'], 3234 + properties: { 3235 + seq: { 3236 + type: 'integer', 3237 + }, 3238 + rebase: { 3239 + type: 'boolean', 3240 + }, 3241 + tooBig: { 3242 + type: 'boolean', 3243 + }, 3244 + repo: { 3245 + type: 'string', 3246 + format: 'did', 3247 + }, 3248 + commit: { 3249 + type: 'cid-link', 3250 + }, 3251 + prev: { 3252 + type: 'cid-link', 3253 + }, 3254 + blocks: { 3255 + type: 'bytes', 3256 + description: 'CAR file containing relevant blocks', 3257 + maxLength: 1000000, 3258 + }, 3259 + ops: { 3260 + type: 'array', 3261 + items: { 3262 + type: 'ref', 3263 + ref: 'lex:com.atproto.sync.subscribeRepos#repoOp', 3264 + }, 3265 + maxLength: 200, 3266 + }, 3267 + blobs: { 3268 + type: 'array', 3269 + items: { 3270 + type: 'cid-link', 3271 + }, 3272 + }, 3273 + time: { 3274 + type: 'string', 3275 + format: 'datetime', 3276 + }, 3277 + }, 3278 + }, 3279 + handle: { 3280 + type: 'object', 3281 + required: ['seq', 'did', 'handle', 'time'], 3282 + properties: { 3283 + seq: { 3284 + type: 'integer', 3285 + }, 3286 + did: { 3287 + type: 'string', 3288 + format: 'did', 3289 + }, 3290 + handle: { 3291 + type: 'string', 3292 + format: 'handle', 3293 + }, 3294 + time: { 3295 + type: 'string', 3296 + format: 'datetime', 3297 + }, 3298 + }, 3299 + }, 3300 + migrate: { 3301 + type: 'object', 3302 + required: ['seq', 'did', 'migrateTo', 'time'], 3303 + nullable: ['migrateTo'], 3304 + properties: { 3305 + seq: { 3306 + type: 'integer', 3307 + }, 3308 + did: { 3309 + type: 'string', 3310 + format: 'did', 3311 + }, 3312 + migrateTo: { 3313 + type: 'string', 3314 + }, 3315 + time: { 3316 + type: 'string', 3317 + format: 'datetime', 3318 + }, 3319 + }, 3320 + }, 3321 + tombstone: { 3322 + type: 'object', 3323 + required: ['seq', 'did', 'time'], 3324 + properties: { 3325 + seq: { 3326 + type: 'integer', 3327 + }, 3328 + did: { 3329 + type: 'string', 3330 + format: 'did', 3331 + }, 3332 + time: { 3333 + type: 'string', 3334 + format: 'datetime', 3335 + }, 3336 + }, 3337 + }, 3338 + info: { 3339 + type: 'object', 3340 + required: ['name'], 3341 + properties: { 3342 + name: { 3343 + type: 'string', 3344 + knownValues: ['OutdatedCursor'], 3345 + }, 3346 + message: { 3347 + type: 'string', 3348 + }, 3349 + }, 3350 + }, 3351 + repoOp: { 3352 + type: 'object', 3353 + required: ['action', 'path', 'cid'], 3354 + nullable: ['cid'], 3355 + properties: { 3356 + action: { 3357 + type: 'string', 3358 + knownValues: ['create', 'update', 'delete'], 3359 + }, 3360 + path: { 3361 + type: 'string', 3362 + }, 3363 + cid: { 3364 + type: 'cid-link', 3365 + }, 3366 + }, 3367 + }, 3368 + }, 3369 + }, 3370 + AppBskyActorDefs: { 3371 + lexicon: 1, 3372 + id: 'app.bsky.actor.defs', 3373 + description: 'A reference to an actor in the network.', 3374 + defs: { 3375 + profileViewBasic: { 3376 + type: 'object', 3377 + required: ['did', 'handle'], 3378 + properties: { 3379 + did: { 3380 + type: 'string', 3381 + format: 'did', 3382 + }, 3383 + handle: { 3384 + type: 'string', 3385 + format: 'handle', 3386 + }, 3387 + displayName: { 3388 + type: 'string', 3389 + maxGraphemes: 64, 3390 + maxLength: 640, 3391 + }, 3392 + avatar: { 3393 + type: 'string', 3394 + }, 3395 + viewer: { 3396 + type: 'ref', 3397 + ref: 'lex:app.bsky.actor.defs#viewerState', 3398 + }, 3399 + labels: { 3400 + type: 'array', 3401 + items: { 3402 + type: 'ref', 3403 + ref: 'lex:com.atproto.label.defs#label', 3404 + }, 3405 + }, 3406 + }, 3407 + }, 3408 + profileView: { 3409 + type: 'object', 3410 + required: ['did', 'handle'], 3411 + properties: { 3412 + did: { 3413 + type: 'string', 3414 + format: 'did', 3415 + }, 3416 + handle: { 3417 + type: 'string', 3418 + format: 'handle', 3419 + }, 3420 + displayName: { 3421 + type: 'string', 3422 + maxGraphemes: 64, 3423 + maxLength: 640, 3424 + }, 3425 + description: { 3426 + type: 'string', 3427 + maxGraphemes: 256, 3428 + maxLength: 2560, 3429 + }, 3430 + avatar: { 3431 + type: 'string', 3432 + }, 3433 + indexedAt: { 3434 + type: 'string', 3435 + format: 'datetime', 3436 + }, 3437 + viewer: { 3438 + type: 'ref', 3439 + ref: 'lex:app.bsky.actor.defs#viewerState', 3440 + }, 3441 + labels: { 3442 + type: 'array', 3443 + items: { 3444 + type: 'ref', 3445 + ref: 'lex:com.atproto.label.defs#label', 3446 + }, 3447 + }, 3448 + }, 3449 + }, 3450 + profileViewDetailed: { 3451 + type: 'object', 3452 + required: ['did', 'handle'], 3453 + properties: { 3454 + did: { 3455 + type: 'string', 3456 + format: 'did', 3457 + }, 3458 + handle: { 3459 + type: 'string', 3460 + format: 'handle', 3461 + }, 3462 + displayName: { 3463 + type: 'string', 3464 + maxGraphemes: 64, 3465 + maxLength: 640, 3466 + }, 3467 + description: { 3468 + type: 'string', 3469 + maxGraphemes: 256, 3470 + maxLength: 2560, 3471 + }, 3472 + avatar: { 3473 + type: 'string', 3474 + }, 3475 + banner: { 3476 + type: 'string', 3477 + }, 3478 + followersCount: { 3479 + type: 'integer', 3480 + }, 3481 + followsCount: { 3482 + type: 'integer', 3483 + }, 3484 + postsCount: { 3485 + type: 'integer', 3486 + }, 3487 + indexedAt: { 3488 + type: 'string', 3489 + format: 'datetime', 3490 + }, 3491 + viewer: { 3492 + type: 'ref', 3493 + ref: 'lex:app.bsky.actor.defs#viewerState', 3494 + }, 3495 + labels: { 3496 + type: 'array', 3497 + items: { 3498 + type: 'ref', 3499 + ref: 'lex:com.atproto.label.defs#label', 3500 + }, 3501 + }, 3502 + }, 3503 + }, 3504 + viewerState: { 3505 + type: 'object', 3506 + properties: { 3507 + muted: { 3508 + type: 'boolean', 3509 + }, 3510 + mutedByList: { 3511 + type: 'ref', 3512 + ref: 'lex:app.bsky.graph.defs#listViewBasic', 3513 + }, 3514 + blockedBy: { 3515 + type: 'boolean', 3516 + }, 3517 + blocking: { 3518 + type: 'string', 3519 + format: 'at-uri', 3520 + }, 3521 + following: { 3522 + type: 'string', 3523 + format: 'at-uri', 3524 + }, 3525 + followedBy: { 3526 + type: 'string', 3527 + format: 'at-uri', 3528 + }, 3529 + }, 3530 + }, 3531 + preferences: { 3532 + type: 'array', 3533 + items: { 3534 + type: 'union', 3535 + refs: [ 3536 + 'lex:app.bsky.actor.defs#adultContentPref', 3537 + 'lex:app.bsky.actor.defs#contentLabelPref', 3538 + ], 3539 + }, 3540 + }, 3541 + adultContentPref: { 3542 + type: 'object', 3543 + required: ['enabled'], 3544 + properties: { 3545 + enabled: { 3546 + type: 'boolean', 3547 + default: false, 3548 + }, 3549 + }, 3550 + }, 3551 + contentLabelPref: { 3552 + type: 'object', 3553 + required: ['label', 'visibility'], 3554 + properties: { 3555 + label: { 3556 + type: 'string', 3557 + }, 3558 + visibility: { 3559 + type: 'string', 3560 + knownValues: ['show', 'warn', 'hide'], 3561 + }, 3562 + }, 3563 + }, 3564 + }, 3565 + }, 3566 + AppBskyActorGetPreferences: { 3567 + lexicon: 1, 3568 + id: 'app.bsky.actor.getPreferences', 3569 + defs: { 3570 + main: { 3571 + type: 'query', 3572 + description: 'Get private preferences attached to the account.', 3573 + parameters: { 3574 + type: 'params', 3575 + properties: {}, 3576 + }, 3577 + output: { 3578 + encoding: 'application/json', 3579 + schema: { 3580 + type: 'object', 3581 + required: ['preferences'], 3582 + properties: { 3583 + preferences: { 3584 + type: 'ref', 3585 + ref: 'lex:app.bsky.actor.defs#preferences', 3586 + }, 3587 + }, 3588 + }, 3589 + }, 3590 + }, 3591 + }, 3592 + }, 3593 + AppBskyActorGetProfile: { 3594 + lexicon: 1, 3595 + id: 'app.bsky.actor.getProfile', 3596 + defs: { 3597 + main: { 3598 + type: 'query', 3599 + parameters: { 3600 + type: 'params', 3601 + required: ['actor'], 3602 + properties: { 3603 + actor: { 3604 + type: 'string', 3605 + format: 'at-identifier', 3606 + }, 3607 + }, 3608 + }, 3609 + output: { 3610 + encoding: 'application/json', 3611 + schema: { 3612 + type: 'ref', 3613 + ref: 'lex:app.bsky.actor.defs#profileViewDetailed', 3614 + }, 3615 + }, 3616 + }, 3617 + }, 3618 + }, 3619 + AppBskyActorGetProfiles: { 3620 + lexicon: 1, 3621 + id: 'app.bsky.actor.getProfiles', 3622 + defs: { 3623 + main: { 3624 + type: 'query', 3625 + parameters: { 3626 + type: 'params', 3627 + required: ['actors'], 3628 + properties: { 3629 + actors: { 3630 + type: 'array', 3631 + items: { 3632 + type: 'string', 3633 + format: 'at-identifier', 3634 + }, 3635 + maxLength: 25, 3636 + }, 3637 + }, 3638 + }, 3639 + output: { 3640 + encoding: 'application/json', 3641 + schema: { 3642 + type: 'object', 3643 + required: ['profiles'], 3644 + properties: { 3645 + profiles: { 3646 + type: 'array', 3647 + items: { 3648 + type: 'ref', 3649 + ref: 'lex:app.bsky.actor.defs#profileViewDetailed', 3650 + }, 3651 + }, 3652 + }, 3653 + }, 3654 + }, 3655 + }, 3656 + }, 3657 + }, 3658 + AppBskyActorGetSuggestions: { 3659 + lexicon: 1, 3660 + id: 'app.bsky.actor.getSuggestions', 3661 + defs: { 3662 + main: { 3663 + type: 'query', 3664 + description: 3665 + 'Get a list of actors suggested for following. Used in discovery UIs.', 3666 + parameters: { 3667 + type: 'params', 3668 + properties: { 3669 + limit: { 3670 + type: 'integer', 3671 + minimum: 1, 3672 + maximum: 100, 3673 + default: 50, 3674 + }, 3675 + cursor: { 3676 + type: 'string', 3677 + }, 3678 + }, 3679 + }, 3680 + output: { 3681 + encoding: 'application/json', 3682 + schema: { 3683 + type: 'object', 3684 + required: ['actors'], 3685 + properties: { 3686 + cursor: { 3687 + type: 'string', 3688 + }, 3689 + actors: { 3690 + type: 'array', 3691 + items: { 3692 + type: 'ref', 3693 + ref: 'lex:app.bsky.actor.defs#profileView', 3694 + }, 3695 + }, 3696 + }, 3697 + }, 3698 + }, 3699 + }, 3700 + }, 3701 + }, 3702 + AppBskyActorProfile: { 3703 + lexicon: 1, 3704 + id: 'app.bsky.actor.profile', 3705 + defs: { 3706 + main: { 3707 + type: 'record', 3708 + key: 'literal:self', 3709 + record: { 3710 + type: 'object', 3711 + properties: { 3712 + displayName: { 3713 + type: 'string', 3714 + maxGraphemes: 64, 3715 + maxLength: 640, 3716 + }, 3717 + description: { 3718 + type: 'string', 3719 + maxGraphemes: 256, 3720 + maxLength: 2560, 3721 + }, 3722 + avatar: { 3723 + type: 'blob', 3724 + accept: ['image/png', 'image/jpeg'], 3725 + maxSize: 1000000, 3726 + }, 3727 + banner: { 3728 + type: 'blob', 3729 + accept: ['image/png', 'image/jpeg'], 3730 + maxSize: 1000000, 3731 + }, 3732 + }, 3733 + }, 3734 + }, 3735 + }, 3736 + }, 3737 + AppBskyActorPutPreferences: { 3738 + lexicon: 1, 3739 + id: 'app.bsky.actor.putPreferences', 3740 + defs: { 3741 + main: { 3742 + type: 'procedure', 3743 + description: 'Sets the private preferences attached to the account.', 3744 + input: { 3745 + encoding: 'application/json', 3746 + schema: { 3747 + type: 'object', 3748 + required: ['preferences'], 3749 + properties: { 3750 + preferences: { 3751 + type: 'ref', 3752 + ref: 'lex:app.bsky.actor.defs#preferences', 3753 + }, 3754 + }, 3755 + }, 3756 + }, 3757 + }, 3758 + }, 3759 + }, 3760 + AppBskyActorSearchActors: { 3761 + lexicon: 1, 3762 + id: 'app.bsky.actor.searchActors', 3763 + defs: { 3764 + main: { 3765 + type: 'query', 3766 + description: 'Find actors matching search criteria.', 3767 + parameters: { 3768 + type: 'params', 3769 + properties: { 3770 + term: { 3771 + type: 'string', 3772 + }, 3773 + limit: { 3774 + type: 'integer', 3775 + minimum: 1, 3776 + maximum: 100, 3777 + default: 50, 3778 + }, 3779 + cursor: { 3780 + type: 'string', 3781 + }, 3782 + }, 3783 + }, 3784 + output: { 3785 + encoding: 'application/json', 3786 + schema: { 3787 + type: 'object', 3788 + required: ['actors'], 3789 + properties: { 3790 + cursor: { 3791 + type: 'string', 3792 + }, 3793 + actors: { 3794 + type: 'array', 3795 + items: { 3796 + type: 'ref', 3797 + ref: 'lex:app.bsky.actor.defs#profileView', 3798 + }, 3799 + }, 3800 + }, 3801 + }, 3802 + }, 3803 + }, 3804 + }, 3805 + }, 3806 + AppBskyActorSearchActorsTypeahead: { 3807 + lexicon: 1, 3808 + id: 'app.bsky.actor.searchActorsTypeahead', 3809 + defs: { 3810 + main: { 3811 + type: 'query', 3812 + description: 'Find actor suggestions for a search term.', 3813 + parameters: { 3814 + type: 'params', 3815 + properties: { 3816 + term: { 3817 + type: 'string', 3818 + }, 3819 + limit: { 3820 + type: 'integer', 3821 + minimum: 1, 3822 + maximum: 100, 3823 + default: 50, 3824 + }, 3825 + }, 3826 + }, 3827 + output: { 3828 + encoding: 'application/json', 3829 + schema: { 3830 + type: 'object', 3831 + required: ['actors'], 3832 + properties: { 3833 + actors: { 3834 + type: 'array', 3835 + items: { 3836 + type: 'ref', 3837 + ref: 'lex:app.bsky.actor.defs#profileViewBasic', 3838 + }, 3839 + }, 3840 + }, 3841 + }, 3842 + }, 3843 + }, 3844 + }, 3845 + }, 3846 + AppBskyEmbedExternal: { 3847 + lexicon: 1, 3848 + id: 'app.bsky.embed.external', 3849 + description: 3850 + 'A representation of some externally linked content, embedded in another form of content', 3851 + defs: { 3852 + main: { 3853 + type: 'object', 3854 + required: ['external'], 3855 + properties: { 3856 + external: { 3857 + type: 'ref', 3858 + ref: 'lex:app.bsky.embed.external#external', 3859 + }, 3860 + }, 3861 + }, 3862 + external: { 3863 + type: 'object', 3864 + required: ['uri', 'title', 'description'], 3865 + properties: { 3866 + uri: { 3867 + type: 'string', 3868 + format: 'uri', 3869 + }, 3870 + title: { 3871 + type: 'string', 3872 + }, 3873 + description: { 3874 + type: 'string', 3875 + }, 3876 + thumb: { 3877 + type: 'blob', 3878 + accept: ['image/*'], 3879 + maxSize: 1000000, 3880 + }, 3881 + }, 3882 + }, 3883 + view: { 3884 + type: 'object', 3885 + required: ['external'], 3886 + properties: { 3887 + external: { 3888 + type: 'ref', 3889 + ref: 'lex:app.bsky.embed.external#viewExternal', 3890 + }, 3891 + }, 3892 + }, 3893 + viewExternal: { 3894 + type: 'object', 3895 + required: ['uri', 'title', 'description'], 3896 + properties: { 3897 + uri: { 3898 + type: 'string', 3899 + format: 'uri', 3900 + }, 3901 + title: { 3902 + type: 'string', 3903 + }, 3904 + description: { 3905 + type: 'string', 3906 + }, 3907 + thumb: { 3908 + type: 'string', 3909 + }, 3910 + }, 3911 + }, 3912 + }, 3913 + }, 3914 + AppBskyEmbedImages: { 3915 + lexicon: 1, 3916 + id: 'app.bsky.embed.images', 3917 + description: 'A set of images embedded in some other form of content', 3918 + defs: { 3919 + main: { 3920 + type: 'object', 3921 + required: ['images'], 3922 + properties: { 3923 + images: { 3924 + type: 'array', 3925 + items: { 3926 + type: 'ref', 3927 + ref: 'lex:app.bsky.embed.images#image', 3928 + }, 3929 + maxLength: 4, 3930 + }, 3931 + }, 3932 + }, 3933 + image: { 3934 + type: 'object', 3935 + required: ['image', 'alt'], 3936 + properties: { 3937 + image: { 3938 + type: 'blob', 3939 + accept: ['image/*'], 3940 + maxSize: 1000000, 3941 + }, 3942 + alt: { 3943 + type: 'string', 3944 + }, 3945 + }, 3946 + }, 3947 + view: { 3948 + type: 'object', 3949 + required: ['images'], 3950 + properties: { 3951 + images: { 3952 + type: 'array', 3953 + items: { 3954 + type: 'ref', 3955 + ref: 'lex:app.bsky.embed.images#viewImage', 3956 + }, 3957 + maxLength: 4, 3958 + }, 3959 + }, 3960 + }, 3961 + viewImage: { 3962 + type: 'object', 3963 + required: ['thumb', 'fullsize', 'alt'], 3964 + properties: { 3965 + thumb: { 3966 + type: 'string', 3967 + }, 3968 + fullsize: { 3969 + type: 'string', 3970 + }, 3971 + alt: { 3972 + type: 'string', 3973 + }, 3974 + }, 3975 + }, 3976 + }, 3977 + }, 3978 + AppBskyEmbedRecord: { 3979 + lexicon: 1, 3980 + id: 'app.bsky.embed.record', 3981 + description: 3982 + 'A representation of a record embedded in another form of content', 3983 + defs: { 3984 + main: { 3985 + type: 'object', 3986 + required: ['record'], 3987 + properties: { 3988 + record: { 3989 + type: 'ref', 3990 + ref: 'lex:com.atproto.repo.strongRef', 3991 + }, 3992 + }, 3993 + }, 3994 + view: { 3995 + type: 'object', 3996 + required: ['record'], 3997 + properties: { 3998 + record: { 3999 + type: 'union', 4000 + refs: [ 4001 + 'lex:app.bsky.embed.record#viewRecord', 4002 + 'lex:app.bsky.embed.record#viewNotFound', 4003 + 'lex:app.bsky.embed.record#viewBlocked', 4004 + 'lex:app.bsky.feed.defs#generatorView', 4005 + ], 4006 + }, 4007 + }, 4008 + }, 4009 + viewRecord: { 4010 + type: 'object', 4011 + required: ['uri', 'cid', 'author', 'value', 'indexedAt'], 4012 + properties: { 4013 + uri: { 4014 + type: 'string', 4015 + format: 'at-uri', 4016 + }, 4017 + cid: { 4018 + type: 'string', 4019 + format: 'cid', 4020 + }, 4021 + author: { 4022 + type: 'ref', 4023 + ref: 'lex:app.bsky.actor.defs#profileViewBasic', 4024 + }, 4025 + value: { 4026 + type: 'unknown', 4027 + }, 4028 + labels: { 4029 + type: 'array', 4030 + items: { 4031 + type: 'ref', 4032 + ref: 'lex:com.atproto.label.defs#label', 4033 + }, 4034 + }, 4035 + embeds: { 4036 + type: 'array', 4037 + items: { 4038 + type: 'union', 4039 + refs: [ 4040 + 'lex:app.bsky.embed.images#view', 4041 + 'lex:app.bsky.embed.external#view', 4042 + 'lex:app.bsky.embed.record#view', 4043 + 'lex:app.bsky.embed.recordWithMedia#view', 4044 + ], 4045 + }, 4046 + }, 4047 + indexedAt: { 4048 + type: 'string', 4049 + format: 'datetime', 4050 + }, 4051 + }, 4052 + }, 4053 + viewNotFound: { 4054 + type: 'object', 4055 + required: ['uri'], 4056 + properties: { 4057 + uri: { 4058 + type: 'string', 4059 + format: 'at-uri', 4060 + }, 4061 + }, 4062 + }, 4063 + viewBlocked: { 4064 + type: 'object', 4065 + required: ['uri'], 4066 + properties: { 4067 + uri: { 4068 + type: 'string', 4069 + format: 'at-uri', 4070 + }, 4071 + }, 4072 + }, 4073 + }, 4074 + }, 4075 + AppBskyEmbedRecordWithMedia: { 4076 + lexicon: 1, 4077 + id: 'app.bsky.embed.recordWithMedia', 4078 + description: 4079 + 'A representation of a record embedded in another form of content, alongside other compatible embeds', 4080 + defs: { 4081 + main: { 4082 + type: 'object', 4083 + required: ['record', 'media'], 4084 + properties: { 4085 + record: { 4086 + type: 'ref', 4087 + ref: 'lex:app.bsky.embed.record', 4088 + }, 4089 + media: { 4090 + type: 'union', 4091 + refs: ['lex:app.bsky.embed.images', 'lex:app.bsky.embed.external'], 4092 + }, 4093 + }, 4094 + }, 4095 + view: { 4096 + type: 'object', 4097 + required: ['record', 'media'], 4098 + properties: { 4099 + record: { 4100 + type: 'ref', 4101 + ref: 'lex:app.bsky.embed.record#view', 4102 + }, 4103 + media: { 4104 + type: 'union', 4105 + refs: [ 4106 + 'lex:app.bsky.embed.images#view', 4107 + 'lex:app.bsky.embed.external#view', 4108 + ], 4109 + }, 4110 + }, 4111 + }, 4112 + }, 4113 + }, 4114 + AppBskyFeedDefs: { 4115 + lexicon: 1, 4116 + id: 'app.bsky.feed.defs', 4117 + defs: { 4118 + postView: { 4119 + type: 'object', 4120 + required: ['uri', 'cid', 'author', 'record', 'indexedAt'], 4121 + properties: { 4122 + uri: { 4123 + type: 'string', 4124 + format: 'at-uri', 4125 + }, 4126 + cid: { 4127 + type: 'string', 4128 + format: 'cid', 4129 + }, 4130 + author: { 4131 + type: 'ref', 4132 + ref: 'lex:app.bsky.actor.defs#profileViewBasic', 4133 + }, 4134 + record: { 4135 + type: 'unknown', 4136 + }, 4137 + embed: { 4138 + type: 'union', 4139 + refs: [ 4140 + 'lex:app.bsky.embed.images#view', 4141 + 'lex:app.bsky.embed.external#view', 4142 + 'lex:app.bsky.embed.record#view', 4143 + 'lex:app.bsky.embed.recordWithMedia#view', 4144 + ], 4145 + }, 4146 + replyCount: { 4147 + type: 'integer', 4148 + }, 4149 + repostCount: { 4150 + type: 'integer', 4151 + }, 4152 + likeCount: { 4153 + type: 'integer', 4154 + }, 4155 + indexedAt: { 4156 + type: 'string', 4157 + format: 'datetime', 4158 + }, 4159 + viewer: { 4160 + type: 'ref', 4161 + ref: 'lex:app.bsky.feed.defs#viewerState', 4162 + }, 4163 + labels: { 4164 + type: 'array', 4165 + items: { 4166 + type: 'ref', 4167 + ref: 'lex:com.atproto.label.defs#label', 4168 + }, 4169 + }, 4170 + }, 4171 + }, 4172 + viewerState: { 4173 + type: 'object', 4174 + properties: { 4175 + repost: { 4176 + type: 'string', 4177 + format: 'at-uri', 4178 + }, 4179 + like: { 4180 + type: 'string', 4181 + format: 'at-uri', 4182 + }, 4183 + }, 4184 + }, 4185 + feedViewPost: { 4186 + type: 'object', 4187 + required: ['post'], 4188 + properties: { 4189 + post: { 4190 + type: 'ref', 4191 + ref: 'lex:app.bsky.feed.defs#postView', 4192 + }, 4193 + reply: { 4194 + type: 'ref', 4195 + ref: 'lex:app.bsky.feed.defs#replyRef', 4196 + }, 4197 + reason: { 4198 + type: 'union', 4199 + refs: ['lex:app.bsky.feed.defs#reasonRepost'], 4200 + }, 4201 + }, 4202 + }, 4203 + replyRef: { 4204 + type: 'object', 4205 + required: ['root', 'parent'], 4206 + properties: { 4207 + root: { 4208 + type: 'union', 4209 + refs: [ 4210 + 'lex:app.bsky.feed.defs#postView', 4211 + 'lex:app.bsky.feed.defs#notFoundPost', 4212 + 'lex:app.bsky.feed.defs#blockedPost', 4213 + ], 4214 + }, 4215 + parent: { 4216 + type: 'union', 4217 + refs: [ 4218 + 'lex:app.bsky.feed.defs#postView', 4219 + 'lex:app.bsky.feed.defs#notFoundPost', 4220 + 'lex:app.bsky.feed.defs#blockedPost', 4221 + ], 4222 + }, 4223 + }, 4224 + }, 4225 + reasonRepost: { 4226 + type: 'object', 4227 + required: ['by', 'indexedAt'], 4228 + properties: { 4229 + by: { 4230 + type: 'ref', 4231 + ref: 'lex:app.bsky.actor.defs#profileViewBasic', 4232 + }, 4233 + indexedAt: { 4234 + type: 'string', 4235 + format: 'datetime', 4236 + }, 4237 + }, 4238 + }, 4239 + threadViewPost: { 4240 + type: 'object', 4241 + required: ['post'], 4242 + properties: { 4243 + post: { 4244 + type: 'ref', 4245 + ref: 'lex:app.bsky.feed.defs#postView', 4246 + }, 4247 + parent: { 4248 + type: 'union', 4249 + refs: [ 4250 + 'lex:app.bsky.feed.defs#threadViewPost', 4251 + 'lex:app.bsky.feed.defs#notFoundPost', 4252 + 'lex:app.bsky.feed.defs#blockedPost', 4253 + ], 4254 + }, 4255 + replies: { 4256 + type: 'array', 4257 + items: { 4258 + type: 'union', 4259 + refs: [ 4260 + 'lex:app.bsky.feed.defs#threadViewPost', 4261 + 'lex:app.bsky.feed.defs#notFoundPost', 4262 + 'lex:app.bsky.feed.defs#blockedPost', 4263 + ], 4264 + }, 4265 + }, 4266 + }, 4267 + }, 4268 + notFoundPost: { 4269 + type: 'object', 4270 + required: ['uri', 'notFound'], 4271 + properties: { 4272 + uri: { 4273 + type: 'string', 4274 + format: 'at-uri', 4275 + }, 4276 + notFound: { 4277 + type: 'boolean', 4278 + const: true, 4279 + }, 4280 + }, 4281 + }, 4282 + blockedPost: { 4283 + type: 'object', 4284 + required: ['uri', 'blocked'], 4285 + properties: { 4286 + uri: { 4287 + type: 'string', 4288 + format: 'at-uri', 4289 + }, 4290 + blocked: { 4291 + type: 'boolean', 4292 + const: true, 4293 + }, 4294 + }, 4295 + }, 4296 + generatorView: { 4297 + type: 'object', 4298 + required: ['uri', 'cid', 'creator', 'indexedAt'], 4299 + properties: { 4300 + uri: { 4301 + type: 'string', 4302 + format: 'at-uri', 4303 + }, 4304 + cid: { 4305 + type: 'string', 4306 + format: 'cid', 4307 + }, 4308 + did: { 4309 + type: 'string', 4310 + format: 'did', 4311 + }, 4312 + creator: { 4313 + type: 'ref', 4314 + ref: 'lex:app.bsky.actor.defs#profileView', 4315 + }, 4316 + displayName: { 4317 + type: 'string', 4318 + }, 4319 + description: { 4320 + type: 'string', 4321 + maxGraphemes: 300, 4322 + maxLength: 3000, 4323 + }, 4324 + descriptionFacets: { 4325 + type: 'array', 4326 + items: { 4327 + type: 'ref', 4328 + ref: 'lex:app.bsky.richtext.facet', 4329 + }, 4330 + }, 4331 + avatar: { 4332 + type: 'string', 4333 + }, 4334 + likeCount: { 4335 + type: 'integer', 4336 + minimum: 0, 4337 + }, 4338 + viewer: { 4339 + type: 'ref', 4340 + ref: 'lex:app.bsky.feed.defs#generatorViewerState', 4341 + }, 4342 + indexedAt: { 4343 + type: 'string', 4344 + format: 'datetime', 4345 + }, 4346 + }, 4347 + }, 4348 + generatorViewerState: { 4349 + type: 'object', 4350 + properties: { 4351 + saved: { 4352 + type: 'boolean', 4353 + }, 4354 + like: { 4355 + type: 'string', 4356 + format: 'at-uri', 4357 + }, 4358 + }, 4359 + }, 4360 + skeletonFeedPost: { 4361 + type: 'object', 4362 + required: ['post'], 4363 + properties: { 4364 + post: { 4365 + type: 'string', 4366 + format: 'at-uri', 4367 + }, 4368 + reason: { 4369 + type: 'union', 4370 + refs: ['lex:app.bsky.feed.defs#skeletonReasonRepost'], 4371 + }, 4372 + }, 4373 + }, 4374 + skeletonReasonRepost: { 4375 + type: 'object', 4376 + required: ['repost'], 4377 + properties: { 4378 + repost: { 4379 + type: 'string', 4380 + ref: 'at-uri', 4381 + }, 4382 + }, 4383 + }, 4384 + }, 4385 + }, 4386 + AppBskyFeedDescribeFeedGenerator: { 4387 + lexicon: 1, 4388 + id: 'app.bsky.feed.describeFeedGenerator', 4389 + defs: { 4390 + main: { 4391 + type: 'query', 4392 + description: 4393 + 'Returns information about a given feed generator including TOS & offered feed URIs', 4394 + output: { 4395 + encoding: 'application/json', 4396 + schema: { 4397 + type: 'object', 4398 + required: ['did', 'feeds'], 4399 + properties: { 4400 + did: { 4401 + type: 'string', 4402 + format: 'did', 4403 + }, 4404 + feeds: { 4405 + type: 'array', 4406 + items: { 4407 + type: 'ref', 4408 + ref: 'lex:app.bsky.feed.describeFeedGenerator#feed', 4409 + }, 4410 + }, 4411 + links: { 4412 + type: 'ref', 4413 + ref: 'lex:app.bsky.feed.describeFeedGenerator#links', 4414 + }, 4415 + }, 4416 + }, 4417 + }, 4418 + }, 4419 + feed: { 4420 + type: 'object', 4421 + required: ['uri'], 4422 + properties: { 4423 + uri: { 4424 + type: 'string', 4425 + format: 'at-uri', 4426 + }, 4427 + }, 4428 + }, 4429 + links: { 4430 + type: 'object', 4431 + properties: { 4432 + privacyPolicy: { 4433 + type: 'string', 4434 + }, 4435 + termsOfService: { 4436 + type: 'string', 4437 + }, 4438 + }, 4439 + }, 4440 + }, 4441 + }, 4442 + AppBskyFeedGenerator: { 4443 + lexicon: 1, 4444 + id: 'app.bsky.feed.generator', 4445 + defs: { 4446 + main: { 4447 + type: 'record', 4448 + description: 'A declaration of the existence of a feed generator', 4449 + key: 'any', 4450 + record: { 4451 + type: 'object', 4452 + required: ['did', 'createdAt'], 4453 + properties: { 4454 + did: { 4455 + type: 'string', 4456 + format: 'did', 4457 + }, 4458 + displayName: { 4459 + type: 'string', 4460 + maxGraphemes: 64, 4461 + maxLength: 640, 4462 + }, 4463 + description: { 4464 + type: 'string', 4465 + maxGraphemes: 300, 4466 + maxLength: 3000, 4467 + }, 4468 + descriptionFacets: { 4469 + type: 'array', 4470 + items: { 4471 + type: 'ref', 4472 + ref: 'lex:app.bsky.richtext.facet', 4473 + }, 4474 + }, 4475 + avatar: { 4476 + type: 'blob', 4477 + accept: ['image/png', 'image/jpeg'], 4478 + maxSize: 1000000, 4479 + }, 4480 + createdAt: { 4481 + type: 'string', 4482 + format: 'datetime', 4483 + }, 4484 + }, 4485 + }, 4486 + }, 4487 + }, 4488 + }, 4489 + AppBskyFeedGetActorFeeds: { 4490 + lexicon: 1, 4491 + id: 'app.bsky.feed.getActorFeeds', 4492 + defs: { 4493 + main: { 4494 + type: 'query', 4495 + description: 'Retrieve a list of feeds created by a given actor', 4496 + parameters: { 4497 + type: 'params', 4498 + required: ['actor'], 4499 + properties: { 4500 + actor: { 4501 + type: 'string', 4502 + format: 'at-identifier', 4503 + }, 4504 + limit: { 4505 + type: 'integer', 4506 + minimum: 1, 4507 + maximum: 100, 4508 + default: 50, 4509 + }, 4510 + cursor: { 4511 + type: 'string', 4512 + }, 4513 + }, 4514 + }, 4515 + output: { 4516 + encoding: 'application/json', 4517 + schema: { 4518 + type: 'object', 4519 + required: ['feeds'], 4520 + properties: { 4521 + cursor: { 4522 + type: 'string', 4523 + }, 4524 + feeds: { 4525 + type: 'array', 4526 + items: { 4527 + type: 'ref', 4528 + ref: 'lex:app.bsky.feed.defs#generatorView', 4529 + }, 4530 + }, 4531 + }, 4532 + }, 4533 + }, 4534 + }, 4535 + }, 4536 + }, 4537 + AppBskyFeedGetAuthorFeed: { 4538 + lexicon: 1, 4539 + id: 'app.bsky.feed.getAuthorFeed', 4540 + defs: { 4541 + main: { 4542 + type: 'query', 4543 + description: "A view of an actor's feed.", 4544 + parameters: { 4545 + type: 'params', 4546 + required: ['actor'], 4547 + properties: { 4548 + actor: { 4549 + type: 'string', 4550 + format: 'at-identifier', 4551 + }, 4552 + limit: { 4553 + type: 'integer', 4554 + minimum: 1, 4555 + maximum: 100, 4556 + default: 50, 4557 + }, 4558 + cursor: { 4559 + type: 'string', 4560 + }, 4561 + }, 4562 + }, 4563 + output: { 4564 + encoding: 'application/json', 4565 + schema: { 4566 + type: 'object', 4567 + required: ['feed'], 4568 + properties: { 4569 + cursor: { 4570 + type: 'string', 4571 + }, 4572 + feed: { 4573 + type: 'array', 4574 + items: { 4575 + type: 'ref', 4576 + ref: 'lex:app.bsky.feed.defs#feedViewPost', 4577 + }, 4578 + }, 4579 + }, 4580 + }, 4581 + }, 4582 + errors: [ 4583 + { 4584 + name: 'BlockedActor', 4585 + }, 4586 + { 4587 + name: 'BlockedByActor', 4588 + }, 4589 + ], 4590 + }, 4591 + }, 4592 + }, 4593 + AppBskyFeedGetFeed: { 4594 + lexicon: 1, 4595 + id: 'app.bsky.feed.getFeed', 4596 + defs: { 4597 + main: { 4598 + type: 'query', 4599 + description: 4600 + "Compose and hydrate a feed from a user's selected feed generator", 4601 + parameters: { 4602 + type: 'params', 4603 + required: ['feed'], 4604 + properties: { 4605 + feed: { 4606 + type: 'string', 4607 + format: 'at-uri', 4608 + }, 4609 + limit: { 4610 + type: 'integer', 4611 + minimum: 1, 4612 + maximum: 100, 4613 + default: 50, 4614 + }, 4615 + cursor: { 4616 + type: 'string', 4617 + }, 4618 + }, 4619 + }, 4620 + output: { 4621 + encoding: 'application/json', 4622 + schema: { 4623 + type: 'object', 4624 + required: ['feed'], 4625 + properties: { 4626 + cursor: { 4627 + type: 'string', 4628 + }, 4629 + feed: { 4630 + type: 'array', 4631 + items: { 4632 + type: 'ref', 4633 + ref: 'lex:app.bsky.feed.defs#feedViewPost', 4634 + }, 4635 + }, 4636 + }, 4637 + }, 4638 + }, 4639 + errors: [ 4640 + { 4641 + name: 'UnknownFeed', 4642 + }, 4643 + ], 4644 + }, 4645 + }, 4646 + }, 4647 + AppBskyFeedGetFeedGenerator: { 4648 + lexicon: 1, 4649 + id: 'app.bsky.feed.getFeedGenerator', 4650 + defs: { 4651 + main: { 4652 + type: 'query', 4653 + description: 4654 + 'Get information about a specific feed offered by a feed generator, such as its online status', 4655 + parameters: { 4656 + type: 'params', 4657 + required: ['feed'], 4658 + properties: { 4659 + feed: { 4660 + type: 'string', 4661 + format: 'at-uri', 4662 + }, 4663 + }, 4664 + }, 4665 + output: { 4666 + encoding: 'application/json', 4667 + schema: { 4668 + type: 'object', 4669 + required: ['view', 'isOnline', 'isValid'], 4670 + properties: { 4671 + view: { 4672 + type: 'ref', 4673 + ref: 'lex:app.bsky.feed.defs#generatorView', 4674 + }, 4675 + isOnline: { 4676 + type: 'boolean', 4677 + }, 4678 + isValid: { 4679 + type: 'boolean', 4680 + }, 4681 + }, 4682 + }, 4683 + }, 4684 + }, 4685 + }, 4686 + }, 4687 + AppBskyFeedGetFeedSkeleton: { 4688 + lexicon: 1, 4689 + id: 'app.bsky.feed.getFeedSkeleton', 4690 + defs: { 4691 + main: { 4692 + type: 'query', 4693 + description: 'A skeleton of a feed provided by a feed generator', 4694 + parameters: { 4695 + type: 'params', 4696 + required: ['feed'], 4697 + properties: { 4698 + feed: { 4699 + type: 'string', 4700 + format: 'at-uri', 4701 + }, 4702 + limit: { 4703 + type: 'integer', 4704 + minimum: 1, 4705 + maximum: 100, 4706 + default: 50, 4707 + }, 4708 + cursor: { 4709 + type: 'string', 4710 + }, 4711 + }, 4712 + }, 4713 + output: { 4714 + encoding: 'application/json', 4715 + schema: { 4716 + type: 'object', 4717 + required: ['feed'], 4718 + properties: { 4719 + cursor: { 4720 + type: 'string', 4721 + }, 4722 + feed: { 4723 + type: 'array', 4724 + items: { 4725 + type: 'ref', 4726 + ref: 'lex:app.bsky.feed.defs#skeletonFeedPost', 4727 + }, 4728 + }, 4729 + }, 4730 + }, 4731 + }, 4732 + errors: [ 4733 + { 4734 + name: 'UnknownFeed', 4735 + }, 4736 + ], 4737 + }, 4738 + }, 4739 + }, 4740 + AppBskyFeedGetLikes: { 4741 + lexicon: 1, 4742 + id: 'app.bsky.feed.getLikes', 4743 + defs: { 4744 + main: { 4745 + type: 'query', 4746 + parameters: { 4747 + type: 'params', 4748 + required: ['uri'], 4749 + properties: { 4750 + uri: { 4751 + type: 'string', 4752 + format: 'at-uri', 4753 + }, 4754 + cid: { 4755 + type: 'string', 4756 + format: 'cid', 4757 + }, 4758 + limit: { 4759 + type: 'integer', 4760 + minimum: 1, 4761 + maximum: 100, 4762 + default: 50, 4763 + }, 4764 + cursor: { 4765 + type: 'string', 4766 + }, 4767 + }, 4768 + }, 4769 + output: { 4770 + encoding: 'application/json', 4771 + schema: { 4772 + type: 'object', 4773 + required: ['uri', 'likes'], 4774 + properties: { 4775 + uri: { 4776 + type: 'string', 4777 + format: 'at-uri', 4778 + }, 4779 + cid: { 4780 + type: 'string', 4781 + format: 'cid', 4782 + }, 4783 + cursor: { 4784 + type: 'string', 4785 + }, 4786 + likes: { 4787 + type: 'array', 4788 + items: { 4789 + type: 'ref', 4790 + ref: 'lex:app.bsky.feed.getLikes#like', 4791 + }, 4792 + }, 4793 + }, 4794 + }, 4795 + }, 4796 + }, 4797 + like: { 4798 + type: 'object', 4799 + required: ['indexedAt', 'createdAt', 'actor'], 4800 + properties: { 4801 + indexedAt: { 4802 + type: 'string', 4803 + format: 'datetime', 4804 + }, 4805 + createdAt: { 4806 + type: 'string', 4807 + format: 'datetime', 4808 + }, 4809 + actor: { 4810 + type: 'ref', 4811 + ref: 'lex:app.bsky.actor.defs#profileView', 4812 + }, 4813 + }, 4814 + }, 4815 + }, 4816 + }, 4817 + AppBskyFeedGetPostThread: { 4818 + lexicon: 1, 4819 + id: 'app.bsky.feed.getPostThread', 4820 + defs: { 4821 + main: { 4822 + type: 'query', 4823 + parameters: { 4824 + type: 'params', 4825 + required: ['uri'], 4826 + properties: { 4827 + uri: { 4828 + type: 'string', 4829 + format: 'at-uri', 4830 + }, 4831 + depth: { 4832 + type: 'integer', 4833 + }, 4834 + }, 4835 + }, 4836 + output: { 4837 + encoding: 'application/json', 4838 + schema: { 4839 + type: 'object', 4840 + required: ['thread'], 4841 + properties: { 4842 + thread: { 4843 + type: 'union', 4844 + refs: [ 4845 + 'lex:app.bsky.feed.defs#threadViewPost', 4846 + 'lex:app.bsky.feed.defs#notFoundPost', 4847 + 'lex:app.bsky.feed.defs#blockedPost', 4848 + ], 4849 + }, 4850 + }, 4851 + }, 4852 + }, 4853 + errors: [ 4854 + { 4855 + name: 'NotFound', 4856 + }, 4857 + ], 4858 + }, 4859 + }, 4860 + }, 4861 + AppBskyFeedGetPosts: { 4862 + lexicon: 1, 4863 + id: 'app.bsky.feed.getPosts', 4864 + defs: { 4865 + main: { 4866 + type: 'query', 4867 + description: "A view of an actor's feed.", 4868 + parameters: { 4869 + type: 'params', 4870 + required: ['uris'], 4871 + properties: { 4872 + uris: { 4873 + type: 'array', 4874 + items: { 4875 + type: 'string', 4876 + format: 'at-uri', 4877 + }, 4878 + maxLength: 25, 4879 + }, 4880 + }, 4881 + }, 4882 + output: { 4883 + encoding: 'application/json', 4884 + schema: { 4885 + type: 'object', 4886 + required: ['posts'], 4887 + properties: { 4888 + posts: { 4889 + type: 'array', 4890 + items: { 4891 + type: 'ref', 4892 + ref: 'lex:app.bsky.feed.defs#postView', 4893 + }, 4894 + }, 4895 + }, 4896 + }, 4897 + }, 4898 + }, 4899 + }, 4900 + }, 4901 + AppBskyFeedGetRepostedBy: { 4902 + lexicon: 1, 4903 + id: 'app.bsky.feed.getRepostedBy', 4904 + defs: { 4905 + main: { 4906 + type: 'query', 4907 + parameters: { 4908 + type: 'params', 4909 + required: ['uri'], 4910 + properties: { 4911 + uri: { 4912 + type: 'string', 4913 + format: 'at-uri', 4914 + }, 4915 + cid: { 4916 + type: 'string', 4917 + format: 'cid', 4918 + }, 4919 + limit: { 4920 + type: 'integer', 4921 + minimum: 1, 4922 + maximum: 100, 4923 + default: 50, 4924 + }, 4925 + cursor: { 4926 + type: 'string', 4927 + }, 4928 + }, 4929 + }, 4930 + output: { 4931 + encoding: 'application/json', 4932 + schema: { 4933 + type: 'object', 4934 + required: ['uri', 'repostedBy'], 4935 + properties: { 4936 + uri: { 4937 + type: 'string', 4938 + format: 'at-uri', 4939 + }, 4940 + cid: { 4941 + type: 'string', 4942 + format: 'cid', 4943 + }, 4944 + cursor: { 4945 + type: 'string', 4946 + }, 4947 + repostedBy: { 4948 + type: 'array', 4949 + items: { 4950 + type: 'ref', 4951 + ref: 'lex:app.bsky.actor.defs#profileView', 4952 + }, 4953 + }, 4954 + }, 4955 + }, 4956 + }, 4957 + }, 4958 + }, 4959 + }, 4960 + AppBskyFeedGetSavedFeeds: { 4961 + lexicon: 1, 4962 + id: 'app.bsky.feed.getSavedFeeds', 4963 + defs: { 4964 + main: { 4965 + type: 'query', 4966 + description: "Retrieve a list of the authenticated user's saved feeds", 4967 + parameters: { 4968 + type: 'params', 4969 + properties: { 4970 + limit: { 4971 + type: 'integer', 4972 + minimum: 1, 4973 + maximum: 100, 4974 + default: 50, 4975 + }, 4976 + cursor: { 4977 + type: 'string', 4978 + }, 4979 + }, 4980 + }, 4981 + output: { 4982 + encoding: 'application/json', 4983 + schema: { 4984 + type: 'object', 4985 + required: ['feeds'], 4986 + properties: { 4987 + cursor: { 4988 + type: 'string', 4989 + }, 4990 + feeds: { 4991 + type: 'array', 4992 + items: { 4993 + type: 'ref', 4994 + ref: 'lex:app.bsky.feed.defs#generatorView', 4995 + }, 4996 + }, 4997 + }, 4998 + }, 4999 + }, 5000 + }, 5001 + }, 5002 + }, 5003 + AppBskyFeedGetTimeline: { 5004 + lexicon: 1, 5005 + id: 'app.bsky.feed.getTimeline', 5006 + defs: { 5007 + main: { 5008 + type: 'query', 5009 + description: "A view of the user's home timeline.", 5010 + parameters: { 5011 + type: 'params', 5012 + properties: { 5013 + algorithm: { 5014 + type: 'string', 5015 + }, 5016 + limit: { 5017 + type: 'integer', 5018 + minimum: 1, 5019 + maximum: 100, 5020 + default: 50, 5021 + }, 5022 + cursor: { 5023 + type: 'string', 5024 + }, 5025 + }, 5026 + }, 5027 + output: { 5028 + encoding: 'application/json', 5029 + schema: { 5030 + type: 'object', 5031 + required: ['feed'], 5032 + properties: { 5033 + cursor: { 5034 + type: 'string', 5035 + }, 5036 + feed: { 5037 + type: 'array', 5038 + items: { 5039 + type: 'ref', 5040 + ref: 'lex:app.bsky.feed.defs#feedViewPost', 5041 + }, 5042 + }, 5043 + }, 5044 + }, 5045 + }, 5046 + }, 5047 + }, 5048 + }, 5049 + AppBskyFeedLike: { 5050 + lexicon: 1, 5051 + id: 'app.bsky.feed.like', 5052 + defs: { 5053 + main: { 5054 + type: 'record', 5055 + key: 'tid', 5056 + record: { 5057 + type: 'object', 5058 + required: ['subject', 'createdAt'], 5059 + properties: { 5060 + subject: { 5061 + type: 'ref', 5062 + ref: 'lex:com.atproto.repo.strongRef', 5063 + }, 5064 + createdAt: { 5065 + type: 'string', 5066 + format: 'datetime', 5067 + }, 5068 + }, 5069 + }, 5070 + }, 5071 + }, 5072 + }, 5073 + AppBskyFeedPost: { 5074 + lexicon: 1, 5075 + id: 'app.bsky.feed.post', 5076 + defs: { 5077 + main: { 5078 + type: 'record', 5079 + key: 'tid', 5080 + record: { 5081 + type: 'object', 5082 + required: ['text', 'createdAt'], 5083 + properties: { 5084 + text: { 5085 + type: 'string', 5086 + maxLength: 3000, 5087 + maxGraphemes: 300, 5088 + }, 5089 + entities: { 5090 + type: 'array', 5091 + description: 'Deprecated: replaced by app.bsky.richtext.facet.', 5092 + items: { 5093 + type: 'ref', 5094 + ref: 'lex:app.bsky.feed.post#entity', 5095 + }, 5096 + }, 5097 + facets: { 5098 + type: 'array', 5099 + items: { 5100 + type: 'ref', 5101 + ref: 'lex:app.bsky.richtext.facet', 5102 + }, 5103 + }, 5104 + reply: { 5105 + type: 'ref', 5106 + ref: 'lex:app.bsky.feed.post#replyRef', 5107 + }, 5108 + embed: { 5109 + type: 'union', 5110 + refs: [ 5111 + 'lex:app.bsky.embed.images', 5112 + 'lex:app.bsky.embed.external', 5113 + 'lex:app.bsky.embed.record', 5114 + 'lex:app.bsky.embed.recordWithMedia', 5115 + ], 5116 + }, 5117 + createdAt: { 5118 + type: 'string', 5119 + format: 'datetime', 5120 + }, 5121 + }, 5122 + }, 5123 + }, 5124 + replyRef: { 5125 + type: 'object', 5126 + required: ['root', 'parent'], 5127 + properties: { 5128 + root: { 5129 + type: 'ref', 5130 + ref: 'lex:com.atproto.repo.strongRef', 5131 + }, 5132 + parent: { 5133 + type: 'ref', 5134 + ref: 'lex:com.atproto.repo.strongRef', 5135 + }, 5136 + }, 5137 + }, 5138 + entity: { 5139 + type: 'object', 5140 + description: 'Deprecated: use facets instead.', 5141 + required: ['index', 'type', 'value'], 5142 + properties: { 5143 + index: { 5144 + type: 'ref', 5145 + ref: 'lex:app.bsky.feed.post#textSlice', 5146 + }, 5147 + type: { 5148 + type: 'string', 5149 + description: "Expected values are 'mention' and 'link'.", 5150 + }, 5151 + value: { 5152 + type: 'string', 5153 + }, 5154 + }, 5155 + }, 5156 + textSlice: { 5157 + type: 'object', 5158 + description: 5159 + 'Deprecated. Use app.bsky.richtext instead -- A text segment. Start is inclusive, end is exclusive. Indices are for utf16-encoded strings.', 5160 + required: ['start', 'end'], 5161 + properties: { 5162 + start: { 5163 + type: 'integer', 5164 + minimum: 0, 5165 + }, 5166 + end: { 5167 + type: 'integer', 5168 + minimum: 0, 5169 + }, 5170 + }, 5171 + }, 5172 + }, 5173 + }, 5174 + AppBskyFeedRepost: { 5175 + lexicon: 1, 5176 + id: 'app.bsky.feed.repost', 5177 + defs: { 5178 + main: { 5179 + type: 'record', 5180 + key: 'tid', 5181 + record: { 5182 + type: 'object', 5183 + required: ['subject', 'createdAt'], 5184 + properties: { 5185 + subject: { 5186 + type: 'ref', 5187 + ref: 'lex:com.atproto.repo.strongRef', 5188 + }, 5189 + createdAt: { 5190 + type: 'string', 5191 + format: 'datetime', 5192 + }, 5193 + }, 5194 + }, 5195 + }, 5196 + }, 5197 + }, 5198 + AppBskyFeedSaveFeed: { 5199 + lexicon: 1, 5200 + id: 'app.bsky.feed.saveFeed', 5201 + defs: { 5202 + main: { 5203 + type: 'procedure', 5204 + description: 'Save a 3rd party feed for use across clients', 5205 + input: { 5206 + encoding: 'application/json', 5207 + schema: { 5208 + type: 'object', 5209 + required: ['feed'], 5210 + properties: { 5211 + feed: { 5212 + type: 'string', 5213 + format: 'at-uri', 5214 + }, 5215 + }, 5216 + }, 5217 + }, 5218 + }, 5219 + }, 5220 + }, 5221 + AppBskyFeedUnsaveFeed: { 5222 + lexicon: 1, 5223 + id: 'app.bsky.feed.unsaveFeed', 5224 + defs: { 5225 + main: { 5226 + type: 'procedure', 5227 + description: 'Unsave a 3rd party feed', 5228 + input: { 5229 + encoding: 'application/json', 5230 + schema: { 5231 + type: 'object', 5232 + required: ['feed'], 5233 + properties: { 5234 + feed: { 5235 + type: 'string', 5236 + format: 'at-uri', 5237 + }, 5238 + }, 5239 + }, 5240 + }, 5241 + }, 5242 + }, 5243 + }, 5244 + AppBskyGraphBlock: { 5245 + lexicon: 1, 5246 + id: 'app.bsky.graph.block', 5247 + defs: { 5248 + main: { 5249 + type: 'record', 5250 + description: 'A block.', 5251 + key: 'tid', 5252 + record: { 5253 + type: 'object', 5254 + required: ['subject', 'createdAt'], 5255 + properties: { 5256 + subject: { 5257 + type: 'string', 5258 + format: 'did', 5259 + }, 5260 + createdAt: { 5261 + type: 'string', 5262 + format: 'datetime', 5263 + }, 5264 + }, 5265 + }, 5266 + }, 5267 + }, 5268 + }, 5269 + AppBskyGraphDefs: { 5270 + lexicon: 1, 5271 + id: 'app.bsky.graph.defs', 5272 + defs: { 5273 + listViewBasic: { 5274 + type: 'object', 5275 + required: ['uri', 'creator', 'name', 'purpose'], 5276 + properties: { 5277 + uri: { 5278 + type: 'string', 5279 + format: 'at-uri', 5280 + }, 5281 + name: { 5282 + type: 'string', 5283 + maxLength: 64, 5284 + minLength: 1, 5285 + }, 5286 + purpose: { 5287 + type: 'ref', 5288 + ref: 'lex:app.bsky.graph.defs#listPurpose', 5289 + }, 5290 + avatar: { 5291 + type: 'string', 5292 + }, 5293 + viewer: { 5294 + type: 'ref', 5295 + ref: 'lex:app.bsky.graph.defs#listViewerState', 5296 + }, 5297 + indexedAt: { 5298 + type: 'string', 5299 + format: 'datetime', 5300 + }, 5301 + }, 5302 + }, 5303 + listView: { 5304 + type: 'object', 5305 + required: ['uri', 'creator', 'name', 'purpose', 'indexedAt'], 5306 + properties: { 5307 + uri: { 5308 + type: 'string', 5309 + format: 'at-uri', 5310 + }, 5311 + creator: { 5312 + type: 'ref', 5313 + ref: 'lex:app.bsky.actor.defs#profileView', 5314 + }, 5315 + name: { 5316 + type: 'string', 5317 + maxLength: 64, 5318 + minLength: 1, 5319 + }, 5320 + purpose: { 5321 + type: 'ref', 5322 + ref: 'lex:app.bsky.graph.defs#listPurpose', 5323 + }, 5324 + description: { 5325 + type: 'string', 5326 + maxGraphemes: 300, 5327 + maxLength: 3000, 5328 + }, 5329 + descriptionFacets: { 5330 + type: 'array', 5331 + items: { 5332 + type: 'ref', 5333 + ref: 'lex:app.bsky.richtext.facet', 5334 + }, 5335 + }, 5336 + avatar: { 5337 + type: 'string', 5338 + }, 5339 + viewer: { 5340 + type: 'ref', 5341 + ref: 'lex:app.bsky.graph.defs#listViewerState', 5342 + }, 5343 + indexedAt: { 5344 + type: 'string', 5345 + format: 'datetime', 5346 + }, 5347 + }, 5348 + }, 5349 + listItemView: { 5350 + type: 'object', 5351 + required: ['subject'], 5352 + properties: { 5353 + subject: { 5354 + type: 'ref', 5355 + ref: 'lex:app.bsky.actor.defs#profileView', 5356 + }, 5357 + }, 5358 + }, 5359 + listPurpose: { 5360 + type: 'string', 5361 + knownValues: ['app.bsky.graph.defs#modlist'], 5362 + }, 5363 + modlist: { 5364 + type: 'token', 5365 + description: 5366 + 'A list of actors to apply an aggregate moderation action (mute/block) on', 5367 + }, 5368 + listViewerState: { 5369 + type: 'object', 5370 + properties: { 5371 + muted: { 5372 + type: 'boolean', 5373 + }, 5374 + }, 5375 + }, 5376 + }, 5377 + }, 5378 + AppBskyGraphFollow: { 5379 + lexicon: 1, 5380 + id: 'app.bsky.graph.follow', 5381 + defs: { 5382 + main: { 5383 + type: 'record', 5384 + description: 'A social follow.', 5385 + key: 'tid', 5386 + record: { 5387 + type: 'object', 5388 + required: ['subject', 'createdAt'], 5389 + properties: { 5390 + subject: { 5391 + type: 'string', 5392 + format: 'did', 5393 + }, 5394 + createdAt: { 5395 + type: 'string', 5396 + format: 'datetime', 5397 + }, 5398 + }, 5399 + }, 5400 + }, 5401 + }, 5402 + }, 5403 + AppBskyGraphGetBlocks: { 5404 + lexicon: 1, 5405 + id: 'app.bsky.graph.getBlocks', 5406 + defs: { 5407 + main: { 5408 + type: 'query', 5409 + description: "Who is the requester's account blocking?", 5410 + parameters: { 5411 + type: 'params', 5412 + properties: { 5413 + limit: { 5414 + type: 'integer', 5415 + minimum: 1, 5416 + maximum: 100, 5417 + default: 50, 5418 + }, 5419 + cursor: { 5420 + type: 'string', 5421 + }, 5422 + }, 5423 + }, 5424 + output: { 5425 + encoding: 'application/json', 5426 + schema: { 5427 + type: 'object', 5428 + required: ['blocks'], 5429 + properties: { 5430 + cursor: { 5431 + type: 'string', 5432 + }, 5433 + blocks: { 5434 + type: 'array', 5435 + items: { 5436 + type: 'ref', 5437 + ref: 'lex:app.bsky.actor.defs#profileView', 5438 + }, 5439 + }, 5440 + }, 5441 + }, 5442 + }, 5443 + }, 5444 + }, 5445 + }, 5446 + AppBskyGraphGetFollowers: { 5447 + lexicon: 1, 5448 + id: 'app.bsky.graph.getFollowers', 5449 + defs: { 5450 + main: { 5451 + type: 'query', 5452 + description: 'Who is following an actor?', 5453 + parameters: { 5454 + type: 'params', 5455 + required: ['actor'], 5456 + properties: { 5457 + actor: { 5458 + type: 'string', 5459 + format: 'at-identifier', 5460 + }, 5461 + limit: { 5462 + type: 'integer', 5463 + minimum: 1, 5464 + maximum: 100, 5465 + default: 50, 5466 + }, 5467 + cursor: { 5468 + type: 'string', 5469 + }, 5470 + }, 5471 + }, 5472 + output: { 5473 + encoding: 'application/json', 5474 + schema: { 5475 + type: 'object', 5476 + required: ['subject', 'followers'], 5477 + properties: { 5478 + subject: { 5479 + type: 'ref', 5480 + ref: 'lex:app.bsky.actor.defs#profileView', 5481 + }, 5482 + cursor: { 5483 + type: 'string', 5484 + }, 5485 + followers: { 5486 + type: 'array', 5487 + items: { 5488 + type: 'ref', 5489 + ref: 'lex:app.bsky.actor.defs#profileView', 5490 + }, 5491 + }, 5492 + }, 5493 + }, 5494 + }, 5495 + }, 5496 + }, 5497 + }, 5498 + AppBskyGraphGetFollows: { 5499 + lexicon: 1, 5500 + id: 'app.bsky.graph.getFollows', 5501 + defs: { 5502 + main: { 5503 + type: 'query', 5504 + description: 'Who is an actor following?', 5505 + parameters: { 5506 + type: 'params', 5507 + required: ['actor'], 5508 + properties: { 5509 + actor: { 5510 + type: 'string', 5511 + format: 'at-identifier', 5512 + }, 5513 + limit: { 5514 + type: 'integer', 5515 + minimum: 1, 5516 + maximum: 100, 5517 + default: 50, 5518 + }, 5519 + cursor: { 5520 + type: 'string', 5521 + }, 5522 + }, 5523 + }, 5524 + output: { 5525 + encoding: 'application/json', 5526 + schema: { 5527 + type: 'object', 5528 + required: ['subject', 'follows'], 5529 + properties: { 5530 + subject: { 5531 + type: 'ref', 5532 + ref: 'lex:app.bsky.actor.defs#profileView', 5533 + }, 5534 + cursor: { 5535 + type: 'string', 5536 + }, 5537 + follows: { 5538 + type: 'array', 5539 + items: { 5540 + type: 'ref', 5541 + ref: 'lex:app.bsky.actor.defs#profileView', 5542 + }, 5543 + }, 5544 + }, 5545 + }, 5546 + }, 5547 + }, 5548 + }, 5549 + }, 5550 + AppBskyGraphGetList: { 5551 + lexicon: 1, 5552 + id: 'app.bsky.graph.getList', 5553 + defs: { 5554 + main: { 5555 + type: 'query', 5556 + description: 'Fetch a list of actors', 5557 + parameters: { 5558 + type: 'params', 5559 + required: ['list'], 5560 + properties: { 5561 + list: { 5562 + type: 'string', 5563 + format: 'at-uri', 5564 + }, 5565 + limit: { 5566 + type: 'integer', 5567 + minimum: 1, 5568 + maximum: 100, 5569 + default: 50, 5570 + }, 5571 + cursor: { 5572 + type: 'string', 5573 + }, 5574 + }, 5575 + }, 5576 + output: { 5577 + encoding: 'application/json', 5578 + schema: { 5579 + type: 'object', 5580 + required: ['list', 'items'], 5581 + properties: { 5582 + cursor: { 5583 + type: 'string', 5584 + }, 5585 + list: { 5586 + type: 'ref', 5587 + ref: 'lex:app.bsky.graph.defs#listView', 5588 + }, 5589 + items: { 5590 + type: 'array', 5591 + items: { 5592 + type: 'ref', 5593 + ref: 'lex:app.bsky.graph.defs#listItemView', 5594 + }, 5595 + }, 5596 + }, 5597 + }, 5598 + }, 5599 + }, 5600 + }, 5601 + }, 5602 + AppBskyGraphGetListMutes: { 5603 + lexicon: 1, 5604 + id: 'app.bsky.graph.getListMutes', 5605 + defs: { 5606 + main: { 5607 + type: 'query', 5608 + description: "Which lists is the requester's account muting?", 5609 + parameters: { 5610 + type: 'params', 5611 + properties: { 5612 + limit: { 5613 + type: 'integer', 5614 + minimum: 1, 5615 + maximum: 100, 5616 + default: 50, 5617 + }, 5618 + cursor: { 5619 + type: 'string', 5620 + }, 5621 + }, 5622 + }, 5623 + output: { 5624 + encoding: 'application/json', 5625 + schema: { 5626 + type: 'object', 5627 + required: ['lists'], 5628 + properties: { 5629 + cursor: { 5630 + type: 'string', 5631 + }, 5632 + lists: { 5633 + type: 'array', 5634 + items: { 5635 + type: 'ref', 5636 + ref: 'lex:app.bsky.graph.defs#listView', 5637 + }, 5638 + }, 5639 + }, 5640 + }, 5641 + }, 5642 + }, 5643 + }, 5644 + }, 5645 + AppBskyGraphGetLists: { 5646 + lexicon: 1, 5647 + id: 'app.bsky.graph.getLists', 5648 + defs: { 5649 + main: { 5650 + type: 'query', 5651 + description: 'Fetch a list of lists that belong to an actor', 5652 + parameters: { 5653 + type: 'params', 5654 + required: ['actor'], 5655 + properties: { 5656 + actor: { 5657 + type: 'string', 5658 + format: 'at-identifier', 5659 + }, 5660 + limit: { 5661 + type: 'integer', 5662 + minimum: 1, 5663 + maximum: 100, 5664 + default: 50, 5665 + }, 5666 + cursor: { 5667 + type: 'string', 5668 + }, 5669 + }, 5670 + }, 5671 + output: { 5672 + encoding: 'application/json', 5673 + schema: { 5674 + type: 'object', 5675 + required: ['lists'], 5676 + properties: { 5677 + cursor: { 5678 + type: 'string', 5679 + }, 5680 + lists: { 5681 + type: 'array', 5682 + items: { 5683 + type: 'ref', 5684 + ref: 'lex:app.bsky.graph.defs#listView', 5685 + }, 5686 + }, 5687 + }, 5688 + }, 5689 + }, 5690 + }, 5691 + }, 5692 + }, 5693 + AppBskyGraphGetMutes: { 5694 + lexicon: 1, 5695 + id: 'app.bsky.graph.getMutes', 5696 + defs: { 5697 + main: { 5698 + type: 'query', 5699 + description: 'Who does the viewer mute?', 5700 + parameters: { 5701 + type: 'params', 5702 + properties: { 5703 + limit: { 5704 + type: 'integer', 5705 + minimum: 1, 5706 + maximum: 100, 5707 + default: 50, 5708 + }, 5709 + cursor: { 5710 + type: 'string', 5711 + }, 5712 + }, 5713 + }, 5714 + output: { 5715 + encoding: 'application/json', 5716 + schema: { 5717 + type: 'object', 5718 + required: ['mutes'], 5719 + properties: { 5720 + cursor: { 5721 + type: 'string', 5722 + }, 5723 + mutes: { 5724 + type: 'array', 5725 + items: { 5726 + type: 'ref', 5727 + ref: 'lex:app.bsky.actor.defs#profileView', 5728 + }, 5729 + }, 5730 + }, 5731 + }, 5732 + }, 5733 + }, 5734 + }, 5735 + }, 5736 + AppBskyGraphList: { 5737 + lexicon: 1, 5738 + id: 'app.bsky.graph.list', 5739 + defs: { 5740 + main: { 5741 + type: 'record', 5742 + description: 'A declaration of a list of actors.', 5743 + key: 'tid', 5744 + record: { 5745 + type: 'object', 5746 + required: ['name', 'purpose', 'createdAt'], 5747 + properties: { 5748 + purpose: { 5749 + type: 'ref', 5750 + ref: 'lex:app.bsky.graph.defs#listPurpose', 5751 + }, 5752 + name: { 5753 + type: 'string', 5754 + maxLength: 64, 5755 + minLength: 1, 5756 + }, 5757 + description: { 5758 + type: 'string', 5759 + maxGraphemes: 300, 5760 + maxLength: 3000, 5761 + }, 5762 + descriptionFacets: { 5763 + type: 'array', 5764 + items: { 5765 + type: 'ref', 5766 + ref: 'lex:app.bsky.richtext.facet', 5767 + }, 5768 + }, 5769 + avatar: { 5770 + type: 'blob', 5771 + accept: ['image/png', 'image/jpeg'], 5772 + maxSize: 1000000, 5773 + }, 5774 + createdAt: { 5775 + type: 'string', 5776 + format: 'datetime', 5777 + }, 5778 + }, 5779 + }, 5780 + }, 5781 + }, 5782 + }, 5783 + AppBskyGraphListitem: { 5784 + lexicon: 1, 5785 + id: 'app.bsky.graph.listitem', 5786 + defs: { 5787 + main: { 5788 + type: 'record', 5789 + description: 'An item under a declared list of actors', 5790 + key: 'tid', 5791 + record: { 5792 + type: 'object', 5793 + required: ['subject', 'list', 'createdAt'], 5794 + properties: { 5795 + subject: { 5796 + type: 'string', 5797 + format: 'did', 5798 + }, 5799 + list: { 5800 + type: 'string', 5801 + format: 'at-uri', 5802 + }, 5803 + createdAt: { 5804 + type: 'string', 5805 + format: 'datetime', 5806 + }, 5807 + }, 5808 + }, 5809 + }, 5810 + }, 5811 + }, 5812 + AppBskyGraphMuteActor: { 5813 + lexicon: 1, 5814 + id: 'app.bsky.graph.muteActor', 5815 + defs: { 5816 + main: { 5817 + type: 'procedure', 5818 + description: 'Mute an actor by did or handle.', 5819 + input: { 5820 + encoding: 'application/json', 5821 + schema: { 5822 + type: 'object', 5823 + required: ['actor'], 5824 + properties: { 5825 + actor: { 5826 + type: 'string', 5827 + format: 'at-identifier', 5828 + }, 5829 + }, 5830 + }, 5831 + }, 5832 + }, 5833 + }, 5834 + }, 5835 + AppBskyGraphMuteActorList: { 5836 + lexicon: 1, 5837 + id: 'app.bsky.graph.muteActorList', 5838 + defs: { 5839 + main: { 5840 + type: 'procedure', 5841 + description: 'Mute a list of actors.', 5842 + input: { 5843 + encoding: 'application/json', 5844 + schema: { 5845 + type: 'object', 5846 + required: ['list'], 5847 + properties: { 5848 + list: { 5849 + type: 'string', 5850 + format: 'at-uri', 5851 + }, 5852 + }, 5853 + }, 5854 + }, 5855 + }, 5856 + }, 5857 + }, 5858 + AppBskyGraphUnmuteActor: { 5859 + lexicon: 1, 5860 + id: 'app.bsky.graph.unmuteActor', 5861 + defs: { 5862 + main: { 5863 + type: 'procedure', 5864 + description: 'Unmute an actor by did or handle.', 5865 + input: { 5866 + encoding: 'application/json', 5867 + schema: { 5868 + type: 'object', 5869 + required: ['actor'], 5870 + properties: { 5871 + actor: { 5872 + type: 'string', 5873 + format: 'at-identifier', 5874 + }, 5875 + }, 5876 + }, 5877 + }, 5878 + }, 5879 + }, 5880 + }, 5881 + AppBskyGraphUnmuteActorList: { 5882 + lexicon: 1, 5883 + id: 'app.bsky.graph.unmuteActorList', 5884 + defs: { 5885 + main: { 5886 + type: 'procedure', 5887 + description: 'Unmute a list of actors.', 5888 + input: { 5889 + encoding: 'application/json', 5890 + schema: { 5891 + type: 'object', 5892 + required: ['list'], 5893 + properties: { 5894 + list: { 5895 + type: 'string', 5896 + format: 'at-uri', 5897 + }, 5898 + }, 5899 + }, 5900 + }, 5901 + }, 5902 + }, 5903 + }, 5904 + AppBskyNotificationGetUnreadCount: { 5905 + lexicon: 1, 5906 + id: 'app.bsky.notification.getUnreadCount', 5907 + defs: { 5908 + main: { 5909 + type: 'query', 5910 + parameters: { 5911 + type: 'params', 5912 + properties: { 5913 + seenAt: { 5914 + type: 'string', 5915 + format: 'datetime', 5916 + }, 5917 + }, 5918 + }, 5919 + output: { 5920 + encoding: 'application/json', 5921 + schema: { 5922 + type: 'object', 5923 + required: ['count'], 5924 + properties: { 5925 + count: { 5926 + type: 'integer', 5927 + }, 5928 + }, 5929 + }, 5930 + }, 5931 + }, 5932 + }, 5933 + }, 5934 + AppBskyNotificationListNotifications: { 5935 + lexicon: 1, 5936 + id: 'app.bsky.notification.listNotifications', 5937 + defs: { 5938 + main: { 5939 + type: 'query', 5940 + parameters: { 5941 + type: 'params', 5942 + properties: { 5943 + limit: { 5944 + type: 'integer', 5945 + minimum: 1, 5946 + maximum: 100, 5947 + default: 50, 5948 + }, 5949 + cursor: { 5950 + type: 'string', 5951 + }, 5952 + seenAt: { 5953 + type: 'string', 5954 + format: 'datetime', 5955 + }, 5956 + }, 5957 + }, 5958 + output: { 5959 + encoding: 'application/json', 5960 + schema: { 5961 + type: 'object', 5962 + required: ['notifications'], 5963 + properties: { 5964 + cursor: { 5965 + type: 'string', 5966 + }, 5967 + notifications: { 5968 + type: 'array', 5969 + items: { 5970 + type: 'ref', 5971 + ref: 'lex:app.bsky.notification.listNotifications#notification', 5972 + }, 5973 + }, 5974 + }, 5975 + }, 5976 + }, 5977 + }, 5978 + notification: { 5979 + type: 'object', 5980 + required: [ 5981 + 'uri', 5982 + 'cid', 5983 + 'author', 5984 + 'reason', 5985 + 'record', 5986 + 'isRead', 5987 + 'indexedAt', 5988 + ], 5989 + properties: { 5990 + uri: { 5991 + type: 'string', 5992 + format: 'at-uri', 5993 + }, 5994 + cid: { 5995 + type: 'string', 5996 + format: 'cid', 5997 + }, 5998 + author: { 5999 + type: 'ref', 6000 + ref: 'lex:app.bsky.actor.defs#profileView', 6001 + }, 6002 + reason: { 6003 + type: 'string', 6004 + description: 6005 + "Expected values are 'like', 'repost', 'follow', 'mention', 'reply', and 'quote'.", 6006 + knownValues: [ 6007 + 'like', 6008 + 'repost', 6009 + 'follow', 6010 + 'mention', 6011 + 'reply', 6012 + 'quote', 6013 + ], 6014 + }, 6015 + reasonSubject: { 6016 + type: 'string', 6017 + format: 'at-uri', 6018 + }, 6019 + record: { 6020 + type: 'unknown', 6021 + }, 6022 + isRead: { 6023 + type: 'boolean', 6024 + }, 6025 + indexedAt: { 6026 + type: 'string', 6027 + format: 'datetime', 6028 + }, 6029 + labels: { 6030 + type: 'array', 6031 + items: { 6032 + type: 'ref', 6033 + ref: 'lex:com.atproto.label.defs#label', 6034 + }, 6035 + }, 6036 + }, 6037 + }, 6038 + }, 6039 + }, 6040 + AppBskyNotificationUpdateSeen: { 6041 + lexicon: 1, 6042 + id: 'app.bsky.notification.updateSeen', 6043 + defs: { 6044 + main: { 6045 + type: 'procedure', 6046 + description: 'Notify server that the user has seen notifications.', 6047 + input: { 6048 + encoding: 'application/json', 6049 + schema: { 6050 + type: 'object', 6051 + required: ['seenAt'], 6052 + properties: { 6053 + seenAt: { 6054 + type: 'string', 6055 + format: 'datetime', 6056 + }, 6057 + }, 6058 + }, 6059 + }, 6060 + }, 6061 + }, 6062 + }, 6063 + AppBskyRichtextFacet: { 6064 + lexicon: 1, 6065 + id: 'app.bsky.richtext.facet', 6066 + defs: { 6067 + main: { 6068 + type: 'object', 6069 + required: ['index', 'features'], 6070 + properties: { 6071 + index: { 6072 + type: 'ref', 6073 + ref: 'lex:app.bsky.richtext.facet#byteSlice', 6074 + }, 6075 + features: { 6076 + type: 'array', 6077 + items: { 6078 + type: 'union', 6079 + refs: [ 6080 + 'lex:app.bsky.richtext.facet#mention', 6081 + 'lex:app.bsky.richtext.facet#link', 6082 + ], 6083 + }, 6084 + }, 6085 + }, 6086 + }, 6087 + mention: { 6088 + type: 'object', 6089 + description: 'A facet feature for actor mentions.', 6090 + required: ['did'], 6091 + properties: { 6092 + did: { 6093 + type: 'string', 6094 + format: 'did', 6095 + }, 6096 + }, 6097 + }, 6098 + link: { 6099 + type: 'object', 6100 + description: 'A facet feature for links.', 6101 + required: ['uri'], 6102 + properties: { 6103 + uri: { 6104 + type: 'string', 6105 + format: 'uri', 6106 + }, 6107 + }, 6108 + }, 6109 + byteSlice: { 6110 + type: 'object', 6111 + description: 6112 + 'A text segment. Start is inclusive, end is exclusive. Indices are for utf8-encoded strings.', 6113 + required: ['byteStart', 'byteEnd'], 6114 + properties: { 6115 + byteStart: { 6116 + type: 'integer', 6117 + minimum: 0, 6118 + }, 6119 + byteEnd: { 6120 + type: 'integer', 6121 + minimum: 0, 6122 + }, 6123 + }, 6124 + }, 6125 + }, 6126 + }, 6127 + AppBskyUnspeccedGetPopular: { 6128 + lexicon: 1, 6129 + id: 'app.bsky.unspecced.getPopular', 6130 + defs: { 6131 + main: { 6132 + type: 'query', 6133 + description: 'An unspecced view of globally popular items', 6134 + parameters: { 6135 + type: 'params', 6136 + properties: { 6137 + includeNsfw: { 6138 + type: 'boolean', 6139 + default: false, 6140 + }, 6141 + limit: { 6142 + type: 'integer', 6143 + minimum: 1, 6144 + maximum: 100, 6145 + default: 50, 6146 + }, 6147 + cursor: { 6148 + type: 'string', 6149 + }, 6150 + }, 6151 + }, 6152 + output: { 6153 + encoding: 'application/json', 6154 + schema: { 6155 + type: 'object', 6156 + required: ['feed'], 6157 + properties: { 6158 + cursor: { 6159 + type: 'string', 6160 + }, 6161 + feed: { 6162 + type: 'array', 6163 + items: { 6164 + type: 'ref', 6165 + ref: 'lex:app.bsky.feed.defs#feedViewPost', 6166 + }, 6167 + }, 6168 + }, 6169 + }, 6170 + }, 6171 + }, 6172 + }, 6173 + }, 6174 + } 6175 + export const schemas: LexiconDoc[] = Object.values(schemaDict) as LexiconDoc[] 6176 + export const lexicons: Lexicons = new Lexicons(schemas) 6177 + export const ids = { 6178 + ComAtprotoAdminDefs: 'com.atproto.admin.defs', 6179 + ComAtprotoAdminDisableAccountInvites: 6180 + 'com.atproto.admin.disableAccountInvites', 6181 + ComAtprotoAdminDisableInviteCodes: 'com.atproto.admin.disableInviteCodes', 6182 + ComAtprotoAdminEnableAccountInvites: 'com.atproto.admin.enableAccountInvites', 6183 + ComAtprotoAdminGetInviteCodes: 'com.atproto.admin.getInviteCodes', 6184 + ComAtprotoAdminGetModerationAction: 'com.atproto.admin.getModerationAction', 6185 + ComAtprotoAdminGetModerationActions: 'com.atproto.admin.getModerationActions', 6186 + ComAtprotoAdminGetModerationReport: 'com.atproto.admin.getModerationReport', 6187 + ComAtprotoAdminGetModerationReports: 'com.atproto.admin.getModerationReports', 6188 + ComAtprotoAdminGetRecord: 'com.atproto.admin.getRecord', 6189 + ComAtprotoAdminGetRepo: 'com.atproto.admin.getRepo', 6190 + ComAtprotoAdminResolveModerationReports: 6191 + 'com.atproto.admin.resolveModerationReports', 6192 + ComAtprotoAdminReverseModerationAction: 6193 + 'com.atproto.admin.reverseModerationAction', 6194 + ComAtprotoAdminSearchRepos: 'com.atproto.admin.searchRepos', 6195 + ComAtprotoAdminTakeModerationAction: 'com.atproto.admin.takeModerationAction', 6196 + ComAtprotoAdminUpdateAccountEmail: 'com.atproto.admin.updateAccountEmail', 6197 + ComAtprotoAdminUpdateAccountHandle: 'com.atproto.admin.updateAccountHandle', 6198 + ComAtprotoIdentityResolveHandle: 'com.atproto.identity.resolveHandle', 6199 + ComAtprotoIdentityUpdateHandle: 'com.atproto.identity.updateHandle', 6200 + ComAtprotoLabelDefs: 'com.atproto.label.defs', 6201 + ComAtprotoLabelQueryLabels: 'com.atproto.label.queryLabels', 6202 + ComAtprotoLabelSubscribeLabels: 'com.atproto.label.subscribeLabels', 6203 + ComAtprotoModerationCreateReport: 'com.atproto.moderation.createReport', 6204 + ComAtprotoModerationDefs: 'com.atproto.moderation.defs', 6205 + ComAtprotoRepoApplyWrites: 'com.atproto.repo.applyWrites', 6206 + ComAtprotoRepoCreateRecord: 'com.atproto.repo.createRecord', 6207 + ComAtprotoRepoDeleteRecord: 'com.atproto.repo.deleteRecord', 6208 + ComAtprotoRepoDescribeRepo: 'com.atproto.repo.describeRepo', 6209 + ComAtprotoRepoGetRecord: 'com.atproto.repo.getRecord', 6210 + ComAtprotoRepoListRecords: 'com.atproto.repo.listRecords', 6211 + ComAtprotoRepoPutRecord: 'com.atproto.repo.putRecord', 6212 + ComAtprotoRepoRebaseRepo: 'com.atproto.repo.rebaseRepo', 6213 + ComAtprotoRepoStrongRef: 'com.atproto.repo.strongRef', 6214 + ComAtprotoRepoUploadBlob: 'com.atproto.repo.uploadBlob', 6215 + ComAtprotoServerCreateAccount: 'com.atproto.server.createAccount', 6216 + ComAtprotoServerCreateAppPassword: 'com.atproto.server.createAppPassword', 6217 + ComAtprotoServerCreateInviteCode: 'com.atproto.server.createInviteCode', 6218 + ComAtprotoServerCreateInviteCodes: 'com.atproto.server.createInviteCodes', 6219 + ComAtprotoServerCreateSession: 'com.atproto.server.createSession', 6220 + ComAtprotoServerDefs: 'com.atproto.server.defs', 6221 + ComAtprotoServerDeleteAccount: 'com.atproto.server.deleteAccount', 6222 + ComAtprotoServerDeleteSession: 'com.atproto.server.deleteSession', 6223 + ComAtprotoServerDescribeServer: 'com.atproto.server.describeServer', 6224 + ComAtprotoServerGetAccountInviteCodes: 6225 + 'com.atproto.server.getAccountInviteCodes', 6226 + ComAtprotoServerGetSession: 'com.atproto.server.getSession', 6227 + ComAtprotoServerListAppPasswords: 'com.atproto.server.listAppPasswords', 6228 + ComAtprotoServerRefreshSession: 'com.atproto.server.refreshSession', 6229 + ComAtprotoServerRequestAccountDelete: 6230 + 'com.atproto.server.requestAccountDelete', 6231 + ComAtprotoServerRequestPasswordReset: 6232 + 'com.atproto.server.requestPasswordReset', 6233 + ComAtprotoServerResetPassword: 'com.atproto.server.resetPassword', 6234 + ComAtprotoServerRevokeAppPassword: 'com.atproto.server.revokeAppPassword', 6235 + ComAtprotoSyncGetBlob: 'com.atproto.sync.getBlob', 6236 + ComAtprotoSyncGetBlocks: 'com.atproto.sync.getBlocks', 6237 + ComAtprotoSyncGetCheckout: 'com.atproto.sync.getCheckout', 6238 + ComAtprotoSyncGetCommitPath: 'com.atproto.sync.getCommitPath', 6239 + ComAtprotoSyncGetHead: 'com.atproto.sync.getHead', 6240 + ComAtprotoSyncGetRecord: 'com.atproto.sync.getRecord', 6241 + ComAtprotoSyncGetRepo: 'com.atproto.sync.getRepo', 6242 + ComAtprotoSyncListBlobs: 'com.atproto.sync.listBlobs', 6243 + ComAtprotoSyncListRepos: 'com.atproto.sync.listRepos', 6244 + ComAtprotoSyncNotifyOfUpdate: 'com.atproto.sync.notifyOfUpdate', 6245 + ComAtprotoSyncRequestCrawl: 'com.atproto.sync.requestCrawl', 6246 + ComAtprotoSyncSubscribeRepos: 'com.atproto.sync.subscribeRepos', 6247 + AppBskyActorDefs: 'app.bsky.actor.defs', 6248 + AppBskyActorGetPreferences: 'app.bsky.actor.getPreferences', 6249 + AppBskyActorGetProfile: 'app.bsky.actor.getProfile', 6250 + AppBskyActorGetProfiles: 'app.bsky.actor.getProfiles', 6251 + AppBskyActorGetSuggestions: 'app.bsky.actor.getSuggestions', 6252 + AppBskyActorProfile: 'app.bsky.actor.profile', 6253 + AppBskyActorPutPreferences: 'app.bsky.actor.putPreferences', 6254 + AppBskyActorSearchActors: 'app.bsky.actor.searchActors', 6255 + AppBskyActorSearchActorsTypeahead: 'app.bsky.actor.searchActorsTypeahead', 6256 + AppBskyEmbedExternal: 'app.bsky.embed.external', 6257 + AppBskyEmbedImages: 'app.bsky.embed.images', 6258 + AppBskyEmbedRecord: 'app.bsky.embed.record', 6259 + AppBskyEmbedRecordWithMedia: 'app.bsky.embed.recordWithMedia', 6260 + AppBskyFeedDefs: 'app.bsky.feed.defs', 6261 + AppBskyFeedDescribeFeedGenerator: 'app.bsky.feed.describeFeedGenerator', 6262 + AppBskyFeedGenerator: 'app.bsky.feed.generator', 6263 + AppBskyFeedGetActorFeeds: 'app.bsky.feed.getActorFeeds', 6264 + AppBskyFeedGetAuthorFeed: 'app.bsky.feed.getAuthorFeed', 6265 + AppBskyFeedGetFeed: 'app.bsky.feed.getFeed', 6266 + AppBskyFeedGetFeedGenerator: 'app.bsky.feed.getFeedGenerator', 6267 + AppBskyFeedGetFeedSkeleton: 'app.bsky.feed.getFeedSkeleton', 6268 + AppBskyFeedGetLikes: 'app.bsky.feed.getLikes', 6269 + AppBskyFeedGetPostThread: 'app.bsky.feed.getPostThread', 6270 + AppBskyFeedGetPosts: 'app.bsky.feed.getPosts', 6271 + AppBskyFeedGetRepostedBy: 'app.bsky.feed.getRepostedBy', 6272 + AppBskyFeedGetSavedFeeds: 'app.bsky.feed.getSavedFeeds', 6273 + AppBskyFeedGetTimeline: 'app.bsky.feed.getTimeline', 6274 + AppBskyFeedLike: 'app.bsky.feed.like', 6275 + AppBskyFeedPost: 'app.bsky.feed.post', 6276 + AppBskyFeedRepost: 'app.bsky.feed.repost', 6277 + AppBskyFeedSaveFeed: 'app.bsky.feed.saveFeed', 6278 + AppBskyFeedUnsaveFeed: 'app.bsky.feed.unsaveFeed', 6279 + AppBskyGraphBlock: 'app.bsky.graph.block', 6280 + AppBskyGraphDefs: 'app.bsky.graph.defs', 6281 + AppBskyGraphFollow: 'app.bsky.graph.follow', 6282 + AppBskyGraphGetBlocks: 'app.bsky.graph.getBlocks', 6283 + AppBskyGraphGetFollowers: 'app.bsky.graph.getFollowers', 6284 + AppBskyGraphGetFollows: 'app.bsky.graph.getFollows', 6285 + AppBskyGraphGetList: 'app.bsky.graph.getList', 6286 + AppBskyGraphGetListMutes: 'app.bsky.graph.getListMutes', 6287 + AppBskyGraphGetLists: 'app.bsky.graph.getLists', 6288 + AppBskyGraphGetMutes: 'app.bsky.graph.getMutes', 6289 + AppBskyGraphList: 'app.bsky.graph.list', 6290 + AppBskyGraphListitem: 'app.bsky.graph.listitem', 6291 + AppBskyGraphMuteActor: 'app.bsky.graph.muteActor', 6292 + AppBskyGraphMuteActorList: 'app.bsky.graph.muteActorList', 6293 + AppBskyGraphUnmuteActor: 'app.bsky.graph.unmuteActor', 6294 + AppBskyGraphUnmuteActorList: 'app.bsky.graph.unmuteActorList', 6295 + AppBskyNotificationGetUnreadCount: 'app.bsky.notification.getUnreadCount', 6296 + AppBskyNotificationListNotifications: 6297 + 'app.bsky.notification.listNotifications', 6298 + AppBskyNotificationUpdateSeen: 'app.bsky.notification.updateSeen', 6299 + AppBskyRichtextFacet: 'app.bsky.richtext.facet', 6300 + AppBskyUnspeccedGetPopular: 'app.bsky.unspecced.getPopular', 6301 + }
+146
src/lexicon/types/app/bsky/actor/defs.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 5 + import { lexicons } from '../../../../lexicons' 6 + import { isObj, hasProp } from '../../../../util' 7 + import { CID } from 'multiformats/cid' 8 + import * as ComAtprotoLabelDefs from '../../../com/atproto/label/defs' 9 + import * as AppBskyGraphDefs from '../graph/defs' 10 + 11 + export interface ProfileViewBasic { 12 + did: string 13 + handle: string 14 + displayName?: string 15 + avatar?: string 16 + viewer?: ViewerState 17 + labels?: ComAtprotoLabelDefs.Label[] 18 + [k: string]: unknown 19 + } 20 + 21 + export function isProfileViewBasic(v: unknown): v is ProfileViewBasic { 22 + return ( 23 + isObj(v) && 24 + hasProp(v, '$type') && 25 + v.$type === 'app.bsky.actor.defs#profileViewBasic' 26 + ) 27 + } 28 + 29 + export function validateProfileViewBasic(v: unknown): ValidationResult { 30 + return lexicons.validate('app.bsky.actor.defs#profileViewBasic', v) 31 + } 32 + 33 + export interface ProfileView { 34 + did: string 35 + handle: string 36 + displayName?: string 37 + description?: string 38 + avatar?: string 39 + indexedAt?: string 40 + viewer?: ViewerState 41 + labels?: ComAtprotoLabelDefs.Label[] 42 + [k: string]: unknown 43 + } 44 + 45 + export function isProfileView(v: unknown): v is ProfileView { 46 + return ( 47 + isObj(v) && 48 + hasProp(v, '$type') && 49 + v.$type === 'app.bsky.actor.defs#profileView' 50 + ) 51 + } 52 + 53 + export function validateProfileView(v: unknown): ValidationResult { 54 + return lexicons.validate('app.bsky.actor.defs#profileView', v) 55 + } 56 + 57 + export interface ProfileViewDetailed { 58 + did: string 59 + handle: string 60 + displayName?: string 61 + description?: string 62 + avatar?: string 63 + banner?: string 64 + followersCount?: number 65 + followsCount?: number 66 + postsCount?: number 67 + indexedAt?: string 68 + viewer?: ViewerState 69 + labels?: ComAtprotoLabelDefs.Label[] 70 + [k: string]: unknown 71 + } 72 + 73 + export function isProfileViewDetailed(v: unknown): v is ProfileViewDetailed { 74 + return ( 75 + isObj(v) && 76 + hasProp(v, '$type') && 77 + v.$type === 'app.bsky.actor.defs#profileViewDetailed' 78 + ) 79 + } 80 + 81 + export function validateProfileViewDetailed(v: unknown): ValidationResult { 82 + return lexicons.validate('app.bsky.actor.defs#profileViewDetailed', v) 83 + } 84 + 85 + export interface ViewerState { 86 + muted?: boolean 87 + mutedByList?: AppBskyGraphDefs.ListViewBasic 88 + blockedBy?: boolean 89 + blocking?: string 90 + following?: string 91 + followedBy?: string 92 + [k: string]: unknown 93 + } 94 + 95 + export function isViewerState(v: unknown): v is ViewerState { 96 + return ( 97 + isObj(v) && 98 + hasProp(v, '$type') && 99 + v.$type === 'app.bsky.actor.defs#viewerState' 100 + ) 101 + } 102 + 103 + export function validateViewerState(v: unknown): ValidationResult { 104 + return lexicons.validate('app.bsky.actor.defs#viewerState', v) 105 + } 106 + 107 + export type Preferences = ( 108 + | AdultContentPref 109 + | ContentLabelPref 110 + | { $type: string; [k: string]: unknown } 111 + )[] 112 + 113 + export interface AdultContentPref { 114 + enabled: boolean 115 + [k: string]: unknown 116 + } 117 + 118 + export function isAdultContentPref(v: unknown): v is AdultContentPref { 119 + return ( 120 + isObj(v) && 121 + hasProp(v, '$type') && 122 + v.$type === 'app.bsky.actor.defs#adultContentPref' 123 + ) 124 + } 125 + 126 + export function validateAdultContentPref(v: unknown): ValidationResult { 127 + return lexicons.validate('app.bsky.actor.defs#adultContentPref', v) 128 + } 129 + 130 + export interface ContentLabelPref { 131 + label: string 132 + visibility: 'show' | 'warn' | 'hide' | (string & {}) 133 + [k: string]: unknown 134 + } 135 + 136 + export function isContentLabelPref(v: unknown): v is ContentLabelPref { 137 + return ( 138 + isObj(v) && 139 + hasProp(v, '$type') && 140 + v.$type === 'app.bsky.actor.defs#contentLabelPref' 141 + ) 142 + } 143 + 144 + export function validateContentLabelPref(v: unknown): ValidationResult { 145 + return lexicons.validate('app.bsky.actor.defs#contentLabelPref', v) 146 + }
+40
src/lexicon/types/app/bsky/actor/getPreferences.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + import * as AppBskyActorDefs from './defs' 11 + 12 + export interface QueryParams {} 13 + 14 + export type InputSchema = undefined 15 + 16 + export interface OutputSchema { 17 + preferences: AppBskyActorDefs.Preferences 18 + [k: string]: unknown 19 + } 20 + 21 + export type HandlerInput = undefined 22 + 23 + export interface HandlerSuccess { 24 + encoding: 'application/json' 25 + body: OutputSchema 26 + } 27 + 28 + export interface HandlerError { 29 + status: number 30 + message?: string 31 + } 32 + 33 + export type HandlerOutput = HandlerError | HandlerSuccess 34 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 35 + auth: HA 36 + params: QueryParams 37 + input: HandlerInput 38 + req: express.Request 39 + res: express.Response 40 + }) => Promise<HandlerOutput> | HandlerOutput
+37
src/lexicon/types/app/bsky/actor/getProfile.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + import * as AppBskyActorDefs from './defs' 11 + 12 + export interface QueryParams { 13 + actor: string 14 + } 15 + 16 + export type InputSchema = undefined 17 + export type OutputSchema = AppBskyActorDefs.ProfileViewDetailed 18 + export type HandlerInput = undefined 19 + 20 + export interface HandlerSuccess { 21 + encoding: 'application/json' 22 + body: OutputSchema 23 + } 24 + 25 + export interface HandlerError { 26 + status: number 27 + message?: string 28 + } 29 + 30 + export type HandlerOutput = HandlerError | HandlerSuccess 31 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 32 + auth: HA 33 + params: QueryParams 34 + input: HandlerInput 35 + req: express.Request 36 + res: express.Response 37 + }) => Promise<HandlerOutput> | HandlerOutput
+42
src/lexicon/types/app/bsky/actor/getProfiles.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + import * as AppBskyActorDefs from './defs' 11 + 12 + export interface QueryParams { 13 + actors: string[] 14 + } 15 + 16 + export type InputSchema = undefined 17 + 18 + export interface OutputSchema { 19 + profiles: AppBskyActorDefs.ProfileViewDetailed[] 20 + [k: string]: unknown 21 + } 22 + 23 + export type HandlerInput = undefined 24 + 25 + export interface HandlerSuccess { 26 + encoding: 'application/json' 27 + body: OutputSchema 28 + } 29 + 30 + export interface HandlerError { 31 + status: number 32 + message?: string 33 + } 34 + 35 + export type HandlerOutput = HandlerError | HandlerSuccess 36 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 37 + auth: HA 38 + params: QueryParams 39 + input: HandlerInput 40 + req: express.Request 41 + res: express.Response 42 + }) => Promise<HandlerOutput> | HandlerOutput
+44
src/lexicon/types/app/bsky/actor/getSuggestions.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + import * as AppBskyActorDefs from './defs' 11 + 12 + export interface QueryParams { 13 + limit: number 14 + cursor?: string 15 + } 16 + 17 + export type InputSchema = undefined 18 + 19 + export interface OutputSchema { 20 + cursor?: string 21 + actors: AppBskyActorDefs.ProfileView[] 22 + [k: string]: unknown 23 + } 24 + 25 + export type HandlerInput = undefined 26 + 27 + export interface HandlerSuccess { 28 + encoding: 'application/json' 29 + body: OutputSchema 30 + } 31 + 32 + export interface HandlerError { 33 + status: number 34 + message?: string 35 + } 36 + 37 + export type HandlerOutput = HandlerError | HandlerSuccess 38 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 39 + auth: HA 40 + params: QueryParams 41 + input: HandlerInput 42 + req: express.Request 43 + res: express.Response 44 + }) => Promise<HandlerOutput> | HandlerOutput
+28
src/lexicon/types/app/bsky/actor/profile.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 5 + import { lexicons } from '../../../../lexicons' 6 + import { isObj, hasProp } from '../../../../util' 7 + import { CID } from 'multiformats/cid' 8 + 9 + export interface Record { 10 + displayName?: string 11 + description?: string 12 + avatar?: BlobRef 13 + banner?: BlobRef 14 + [k: string]: unknown 15 + } 16 + 17 + export function isRecord(v: unknown): v is Record { 18 + return ( 19 + isObj(v) && 20 + hasProp(v, '$type') && 21 + (v.$type === 'app.bsky.actor.profile#main' || 22 + v.$type === 'app.bsky.actor.profile') 23 + ) 24 + } 25 + 26 + export function validateRecord(v: unknown): ValidationResult { 27 + return lexicons.validate('app.bsky.actor.profile#main', v) 28 + }
+36
src/lexicon/types/app/bsky/actor/putPreferences.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + import * as AppBskyActorDefs from './defs' 11 + 12 + export interface QueryParams {} 13 + 14 + export interface InputSchema { 15 + preferences: AppBskyActorDefs.Preferences 16 + [k: string]: unknown 17 + } 18 + 19 + export interface HandlerInput { 20 + encoding: 'application/json' 21 + body: InputSchema 22 + } 23 + 24 + export interface HandlerError { 25 + status: number 26 + message?: string 27 + } 28 + 29 + export type HandlerOutput = HandlerError | void 30 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 31 + auth: HA 32 + params: QueryParams 33 + input: HandlerInput 34 + req: express.Request 35 + res: express.Response 36 + }) => Promise<HandlerOutput> | HandlerOutput
+45
src/lexicon/types/app/bsky/actor/searchActors.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + import * as AppBskyActorDefs from './defs' 11 + 12 + export interface QueryParams { 13 + term?: string 14 + limit: number 15 + cursor?: string 16 + } 17 + 18 + export type InputSchema = undefined 19 + 20 + export interface OutputSchema { 21 + cursor?: string 22 + actors: AppBskyActorDefs.ProfileView[] 23 + [k: string]: unknown 24 + } 25 + 26 + export type HandlerInput = undefined 27 + 28 + export interface HandlerSuccess { 29 + encoding: 'application/json' 30 + body: OutputSchema 31 + } 32 + 33 + export interface HandlerError { 34 + status: number 35 + message?: string 36 + } 37 + 38 + export type HandlerOutput = HandlerError | HandlerSuccess 39 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 40 + auth: HA 41 + params: QueryParams 42 + input: HandlerInput 43 + req: express.Request 44 + res: express.Response 45 + }) => Promise<HandlerOutput> | HandlerOutput
+43
src/lexicon/types/app/bsky/actor/searchActorsTypeahead.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + import * as AppBskyActorDefs from './defs' 11 + 12 + export interface QueryParams { 13 + term?: string 14 + limit: number 15 + } 16 + 17 + export type InputSchema = undefined 18 + 19 + export interface OutputSchema { 20 + actors: AppBskyActorDefs.ProfileViewBasic[] 21 + [k: string]: unknown 22 + } 23 + 24 + export type HandlerInput = undefined 25 + 26 + export interface HandlerSuccess { 27 + encoding: 'application/json' 28 + body: OutputSchema 29 + } 30 + 31 + export interface HandlerError { 32 + status: number 33 + message?: string 34 + } 35 + 36 + export type HandlerOutput = HandlerError | HandlerSuccess 37 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 38 + auth: HA 39 + params: QueryParams 40 + input: HandlerInput 41 + req: express.Request 42 + res: express.Response 43 + }) => Promise<HandlerOutput> | HandlerOutput
+82
src/lexicon/types/app/bsky/embed/external.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 5 + import { lexicons } from '../../../../lexicons' 6 + import { isObj, hasProp } from '../../../../util' 7 + import { CID } from 'multiformats/cid' 8 + 9 + export interface Main { 10 + external: External 11 + [k: string]: unknown 12 + } 13 + 14 + export function isMain(v: unknown): v is Main { 15 + return ( 16 + isObj(v) && 17 + hasProp(v, '$type') && 18 + (v.$type === 'app.bsky.embed.external#main' || 19 + v.$type === 'app.bsky.embed.external') 20 + ) 21 + } 22 + 23 + export function validateMain(v: unknown): ValidationResult { 24 + return lexicons.validate('app.bsky.embed.external#main', v) 25 + } 26 + 27 + export interface External { 28 + uri: string 29 + title: string 30 + description: string 31 + thumb?: BlobRef 32 + [k: string]: unknown 33 + } 34 + 35 + export function isExternal(v: unknown): v is External { 36 + return ( 37 + isObj(v) && 38 + hasProp(v, '$type') && 39 + v.$type === 'app.bsky.embed.external#external' 40 + ) 41 + } 42 + 43 + export function validateExternal(v: unknown): ValidationResult { 44 + return lexicons.validate('app.bsky.embed.external#external', v) 45 + } 46 + 47 + export interface View { 48 + external: ViewExternal 49 + [k: string]: unknown 50 + } 51 + 52 + export function isView(v: unknown): v is View { 53 + return ( 54 + isObj(v) && 55 + hasProp(v, '$type') && 56 + v.$type === 'app.bsky.embed.external#view' 57 + ) 58 + } 59 + 60 + export function validateView(v: unknown): ValidationResult { 61 + return lexicons.validate('app.bsky.embed.external#view', v) 62 + } 63 + 64 + export interface ViewExternal { 65 + uri: string 66 + title: string 67 + description: string 68 + thumb?: string 69 + [k: string]: unknown 70 + } 71 + 72 + export function isViewExternal(v: unknown): v is ViewExternal { 73 + return ( 74 + isObj(v) && 75 + hasProp(v, '$type') && 76 + v.$type === 'app.bsky.embed.external#viewExternal' 77 + ) 78 + } 79 + 80 + export function validateViewExternal(v: unknown): ValidationResult { 81 + return lexicons.validate('app.bsky.embed.external#viewExternal', v) 82 + }
+75
src/lexicon/types/app/bsky/embed/images.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 5 + import { lexicons } from '../../../../lexicons' 6 + import { isObj, hasProp } from '../../../../util' 7 + import { CID } from 'multiformats/cid' 8 + 9 + export interface Main { 10 + images: Image[] 11 + [k: string]: unknown 12 + } 13 + 14 + export function isMain(v: unknown): v is Main { 15 + return ( 16 + isObj(v) && 17 + hasProp(v, '$type') && 18 + (v.$type === 'app.bsky.embed.images#main' || 19 + v.$type === 'app.bsky.embed.images') 20 + ) 21 + } 22 + 23 + export function validateMain(v: unknown): ValidationResult { 24 + return lexicons.validate('app.bsky.embed.images#main', v) 25 + } 26 + 27 + export interface Image { 28 + image: BlobRef 29 + alt: string 30 + [k: string]: unknown 31 + } 32 + 33 + export function isImage(v: unknown): v is Image { 34 + return ( 35 + isObj(v) && hasProp(v, '$type') && v.$type === 'app.bsky.embed.images#image' 36 + ) 37 + } 38 + 39 + export function validateImage(v: unknown): ValidationResult { 40 + return lexicons.validate('app.bsky.embed.images#image', v) 41 + } 42 + 43 + export interface View { 44 + images: ViewImage[] 45 + [k: string]: unknown 46 + } 47 + 48 + export function isView(v: unknown): v is View { 49 + return ( 50 + isObj(v) && hasProp(v, '$type') && v.$type === 'app.bsky.embed.images#view' 51 + ) 52 + } 53 + 54 + export function validateView(v: unknown): ValidationResult { 55 + return lexicons.validate('app.bsky.embed.images#view', v) 56 + } 57 + 58 + export interface ViewImage { 59 + thumb: string 60 + fullsize: string 61 + alt: string 62 + [k: string]: unknown 63 + } 64 + 65 + export function isViewImage(v: unknown): v is ViewImage { 66 + return ( 67 + isObj(v) && 68 + hasProp(v, '$type') && 69 + v.$type === 'app.bsky.embed.images#viewImage' 70 + ) 71 + } 72 + 73 + export function validateViewImage(v: unknown): ValidationResult { 74 + return lexicons.validate('app.bsky.embed.images#viewImage', v) 75 + }
+115
src/lexicon/types/app/bsky/embed/record.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 5 + import { lexicons } from '../../../../lexicons' 6 + import { isObj, hasProp } from '../../../../util' 7 + import { CID } from 'multiformats/cid' 8 + import * as ComAtprotoRepoStrongRef from '../../../com/atproto/repo/strongRef' 9 + import * as AppBskyFeedDefs from '../feed/defs' 10 + import * as AppBskyActorDefs from '../actor/defs' 11 + import * as ComAtprotoLabelDefs from '../../../com/atproto/label/defs' 12 + import * as AppBskyEmbedImages from './images' 13 + import * as AppBskyEmbedExternal from './external' 14 + import * as AppBskyEmbedRecordWithMedia from './recordWithMedia' 15 + 16 + export interface Main { 17 + record: ComAtprotoRepoStrongRef.Main 18 + [k: string]: unknown 19 + } 20 + 21 + export function isMain(v: unknown): v is Main { 22 + return ( 23 + isObj(v) && 24 + hasProp(v, '$type') && 25 + (v.$type === 'app.bsky.embed.record#main' || 26 + v.$type === 'app.bsky.embed.record') 27 + ) 28 + } 29 + 30 + export function validateMain(v: unknown): ValidationResult { 31 + return lexicons.validate('app.bsky.embed.record#main', v) 32 + } 33 + 34 + export interface View { 35 + record: 36 + | ViewRecord 37 + | ViewNotFound 38 + | ViewBlocked 39 + | AppBskyFeedDefs.GeneratorView 40 + | { $type: string; [k: string]: unknown } 41 + [k: string]: unknown 42 + } 43 + 44 + export function isView(v: unknown): v is View { 45 + return ( 46 + isObj(v) && hasProp(v, '$type') && v.$type === 'app.bsky.embed.record#view' 47 + ) 48 + } 49 + 50 + export function validateView(v: unknown): ValidationResult { 51 + return lexicons.validate('app.bsky.embed.record#view', v) 52 + } 53 + 54 + export interface ViewRecord { 55 + uri: string 56 + cid: string 57 + author: AppBskyActorDefs.ProfileViewBasic 58 + value: {} 59 + labels?: ComAtprotoLabelDefs.Label[] 60 + embeds?: ( 61 + | AppBskyEmbedImages.View 62 + | AppBskyEmbedExternal.View 63 + | View 64 + | AppBskyEmbedRecordWithMedia.View 65 + | { $type: string; [k: string]: unknown } 66 + )[] 67 + indexedAt: string 68 + [k: string]: unknown 69 + } 70 + 71 + export function isViewRecord(v: unknown): v is ViewRecord { 72 + return ( 73 + isObj(v) && 74 + hasProp(v, '$type') && 75 + v.$type === 'app.bsky.embed.record#viewRecord' 76 + ) 77 + } 78 + 79 + export function validateViewRecord(v: unknown): ValidationResult { 80 + return lexicons.validate('app.bsky.embed.record#viewRecord', v) 81 + } 82 + 83 + export interface ViewNotFound { 84 + uri: string 85 + [k: string]: unknown 86 + } 87 + 88 + export function isViewNotFound(v: unknown): v is ViewNotFound { 89 + return ( 90 + isObj(v) && 91 + hasProp(v, '$type') && 92 + v.$type === 'app.bsky.embed.record#viewNotFound' 93 + ) 94 + } 95 + 96 + export function validateViewNotFound(v: unknown): ValidationResult { 97 + return lexicons.validate('app.bsky.embed.record#viewNotFound', v) 98 + } 99 + 100 + export interface ViewBlocked { 101 + uri: string 102 + [k: string]: unknown 103 + } 104 + 105 + export function isViewBlocked(v: unknown): v is ViewBlocked { 106 + return ( 107 + isObj(v) && 108 + hasProp(v, '$type') && 109 + v.$type === 'app.bsky.embed.record#viewBlocked' 110 + ) 111 + } 112 + 113 + export function validateViewBlocked(v: unknown): ValidationResult { 114 + return lexicons.validate('app.bsky.embed.record#viewBlocked', v) 115 + }
+53
src/lexicon/types/app/bsky/embed/recordWithMedia.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 5 + import { lexicons } from '../../../../lexicons' 6 + import { isObj, hasProp } from '../../../../util' 7 + import { CID } from 'multiformats/cid' 8 + import * as AppBskyEmbedRecord from './record' 9 + import * as AppBskyEmbedImages from './images' 10 + import * as AppBskyEmbedExternal from './external' 11 + 12 + export interface Main { 13 + record: AppBskyEmbedRecord.Main 14 + media: 15 + | AppBskyEmbedImages.Main 16 + | AppBskyEmbedExternal.Main 17 + | { $type: string; [k: string]: unknown } 18 + [k: string]: unknown 19 + } 20 + 21 + export function isMain(v: unknown): v is Main { 22 + return ( 23 + isObj(v) && 24 + hasProp(v, '$type') && 25 + (v.$type === 'app.bsky.embed.recordWithMedia#main' || 26 + v.$type === 'app.bsky.embed.recordWithMedia') 27 + ) 28 + } 29 + 30 + export function validateMain(v: unknown): ValidationResult { 31 + return lexicons.validate('app.bsky.embed.recordWithMedia#main', v) 32 + } 33 + 34 + export interface View { 35 + record: AppBskyEmbedRecord.View 36 + media: 37 + | AppBskyEmbedImages.View 38 + | AppBskyEmbedExternal.View 39 + | { $type: string; [k: string]: unknown } 40 + [k: string]: unknown 41 + } 42 + 43 + export function isView(v: unknown): v is View { 44 + return ( 45 + isObj(v) && 46 + hasProp(v, '$type') && 47 + v.$type === 'app.bsky.embed.recordWithMedia#view' 48 + ) 49 + } 50 + 51 + export function validateView(v: unknown): ValidationResult { 52 + return lexicons.validate('app.bsky.embed.recordWithMedia#view', v) 53 + }
+267
src/lexicon/types/app/bsky/feed/defs.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 5 + import { lexicons } from '../../../../lexicons' 6 + import { isObj, hasProp } from '../../../../util' 7 + import { CID } from 'multiformats/cid' 8 + import * as AppBskyActorDefs from '../actor/defs' 9 + import * as AppBskyEmbedImages from '../embed/images' 10 + import * as AppBskyEmbedExternal from '../embed/external' 11 + import * as AppBskyEmbedRecord from '../embed/record' 12 + import * as AppBskyEmbedRecordWithMedia from '../embed/recordWithMedia' 13 + import * as ComAtprotoLabelDefs from '../../../com/atproto/label/defs' 14 + import * as AppBskyRichtextFacet from '../richtext/facet' 15 + 16 + export interface PostView { 17 + uri: string 18 + cid: string 19 + author: AppBskyActorDefs.ProfileViewBasic 20 + record: {} 21 + embed?: 22 + | AppBskyEmbedImages.View 23 + | AppBskyEmbedExternal.View 24 + | AppBskyEmbedRecord.View 25 + | AppBskyEmbedRecordWithMedia.View 26 + | { $type: string; [k: string]: unknown } 27 + replyCount?: number 28 + repostCount?: number 29 + likeCount?: number 30 + indexedAt: string 31 + viewer?: ViewerState 32 + labels?: ComAtprotoLabelDefs.Label[] 33 + [k: string]: unknown 34 + } 35 + 36 + export function isPostView(v: unknown): v is PostView { 37 + return ( 38 + isObj(v) && hasProp(v, '$type') && v.$type === 'app.bsky.feed.defs#postView' 39 + ) 40 + } 41 + 42 + export function validatePostView(v: unknown): ValidationResult { 43 + return lexicons.validate('app.bsky.feed.defs#postView', v) 44 + } 45 + 46 + export interface ViewerState { 47 + repost?: string 48 + like?: string 49 + [k: string]: unknown 50 + } 51 + 52 + export function isViewerState(v: unknown): v is ViewerState { 53 + return ( 54 + isObj(v) && 55 + hasProp(v, '$type') && 56 + v.$type === 'app.bsky.feed.defs#viewerState' 57 + ) 58 + } 59 + 60 + export function validateViewerState(v: unknown): ValidationResult { 61 + return lexicons.validate('app.bsky.feed.defs#viewerState', v) 62 + } 63 + 64 + export interface FeedViewPost { 65 + post: PostView 66 + reply?: ReplyRef 67 + reason?: ReasonRepost | { $type: string; [k: string]: unknown } 68 + [k: string]: unknown 69 + } 70 + 71 + export function isFeedViewPost(v: unknown): v is FeedViewPost { 72 + return ( 73 + isObj(v) && 74 + hasProp(v, '$type') && 75 + v.$type === 'app.bsky.feed.defs#feedViewPost' 76 + ) 77 + } 78 + 79 + export function validateFeedViewPost(v: unknown): ValidationResult { 80 + return lexicons.validate('app.bsky.feed.defs#feedViewPost', v) 81 + } 82 + 83 + export interface ReplyRef { 84 + root: 85 + | PostView 86 + | NotFoundPost 87 + | BlockedPost 88 + | { $type: string; [k: string]: unknown } 89 + parent: 90 + | PostView 91 + | NotFoundPost 92 + | BlockedPost 93 + | { $type: string; [k: string]: unknown } 94 + [k: string]: unknown 95 + } 96 + 97 + export function isReplyRef(v: unknown): v is ReplyRef { 98 + return ( 99 + isObj(v) && hasProp(v, '$type') && v.$type === 'app.bsky.feed.defs#replyRef' 100 + ) 101 + } 102 + 103 + export function validateReplyRef(v: unknown): ValidationResult { 104 + return lexicons.validate('app.bsky.feed.defs#replyRef', v) 105 + } 106 + 107 + export interface ReasonRepost { 108 + by: AppBskyActorDefs.ProfileViewBasic 109 + indexedAt: string 110 + [k: string]: unknown 111 + } 112 + 113 + export function isReasonRepost(v: unknown): v is ReasonRepost { 114 + return ( 115 + isObj(v) && 116 + hasProp(v, '$type') && 117 + v.$type === 'app.bsky.feed.defs#reasonRepost' 118 + ) 119 + } 120 + 121 + export function validateReasonRepost(v: unknown): ValidationResult { 122 + return lexicons.validate('app.bsky.feed.defs#reasonRepost', v) 123 + } 124 + 125 + export interface ThreadViewPost { 126 + post: PostView 127 + parent?: 128 + | ThreadViewPost 129 + | NotFoundPost 130 + | BlockedPost 131 + | { $type: string; [k: string]: unknown } 132 + replies?: ( 133 + | ThreadViewPost 134 + | NotFoundPost 135 + | BlockedPost 136 + | { $type: string; [k: string]: unknown } 137 + )[] 138 + [k: string]: unknown 139 + } 140 + 141 + export function isThreadViewPost(v: unknown): v is ThreadViewPost { 142 + return ( 143 + isObj(v) && 144 + hasProp(v, '$type') && 145 + v.$type === 'app.bsky.feed.defs#threadViewPost' 146 + ) 147 + } 148 + 149 + export function validateThreadViewPost(v: unknown): ValidationResult { 150 + return lexicons.validate('app.bsky.feed.defs#threadViewPost', v) 151 + } 152 + 153 + export interface NotFoundPost { 154 + uri: string 155 + notFound: true 156 + [k: string]: unknown 157 + } 158 + 159 + export function isNotFoundPost(v: unknown): v is NotFoundPost { 160 + return ( 161 + isObj(v) && 162 + hasProp(v, '$type') && 163 + v.$type === 'app.bsky.feed.defs#notFoundPost' 164 + ) 165 + } 166 + 167 + export function validateNotFoundPost(v: unknown): ValidationResult { 168 + return lexicons.validate('app.bsky.feed.defs#notFoundPost', v) 169 + } 170 + 171 + export interface BlockedPost { 172 + uri: string 173 + blocked: true 174 + [k: string]: unknown 175 + } 176 + 177 + export function isBlockedPost(v: unknown): v is BlockedPost { 178 + return ( 179 + isObj(v) && 180 + hasProp(v, '$type') && 181 + v.$type === 'app.bsky.feed.defs#blockedPost' 182 + ) 183 + } 184 + 185 + export function validateBlockedPost(v: unknown): ValidationResult { 186 + return lexicons.validate('app.bsky.feed.defs#blockedPost', v) 187 + } 188 + 189 + export interface GeneratorView { 190 + uri: string 191 + cid: string 192 + did?: string 193 + creator: AppBskyActorDefs.ProfileView 194 + displayName?: string 195 + description?: string 196 + descriptionFacets?: AppBskyRichtextFacet.Main[] 197 + avatar?: string 198 + likeCount?: number 199 + viewer?: GeneratorViewerState 200 + indexedAt: string 201 + [k: string]: unknown 202 + } 203 + 204 + export function isGeneratorView(v: unknown): v is GeneratorView { 205 + return ( 206 + isObj(v) && 207 + hasProp(v, '$type') && 208 + v.$type === 'app.bsky.feed.defs#generatorView' 209 + ) 210 + } 211 + 212 + export function validateGeneratorView(v: unknown): ValidationResult { 213 + return lexicons.validate('app.bsky.feed.defs#generatorView', v) 214 + } 215 + 216 + export interface GeneratorViewerState { 217 + saved?: boolean 218 + like?: string 219 + [k: string]: unknown 220 + } 221 + 222 + export function isGeneratorViewerState(v: unknown): v is GeneratorViewerState { 223 + return ( 224 + isObj(v) && 225 + hasProp(v, '$type') && 226 + v.$type === 'app.bsky.feed.defs#generatorViewerState' 227 + ) 228 + } 229 + 230 + export function validateGeneratorViewerState(v: unknown): ValidationResult { 231 + return lexicons.validate('app.bsky.feed.defs#generatorViewerState', v) 232 + } 233 + 234 + export interface SkeletonFeedPost { 235 + post: string 236 + reason?: SkeletonReasonRepost | { $type: string; [k: string]: unknown } 237 + [k: string]: unknown 238 + } 239 + 240 + export function isSkeletonFeedPost(v: unknown): v is SkeletonFeedPost { 241 + return ( 242 + isObj(v) && 243 + hasProp(v, '$type') && 244 + v.$type === 'app.bsky.feed.defs#skeletonFeedPost' 245 + ) 246 + } 247 + 248 + export function validateSkeletonFeedPost(v: unknown): ValidationResult { 249 + return lexicons.validate('app.bsky.feed.defs#skeletonFeedPost', v) 250 + } 251 + 252 + export interface SkeletonReasonRepost { 253 + repost: string 254 + [k: string]: unknown 255 + } 256 + 257 + export function isSkeletonReasonRepost(v: unknown): v is SkeletonReasonRepost { 258 + return ( 259 + isObj(v) && 260 + hasProp(v, '$type') && 261 + v.$type === 'app.bsky.feed.defs#skeletonReasonRepost' 262 + ) 263 + } 264 + 265 + export function validateSkeletonReasonRepost(v: unknown): ValidationResult { 266 + return lexicons.validate('app.bsky.feed.defs#skeletonReasonRepost', v) 267 + }
+76
src/lexicon/types/app/bsky/feed/describeFeedGenerator.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + 11 + export interface QueryParams {} 12 + 13 + export type InputSchema = undefined 14 + 15 + export interface OutputSchema { 16 + did: string 17 + feeds: Feed[] 18 + links?: Links 19 + [k: string]: unknown 20 + } 21 + 22 + export type HandlerInput = undefined 23 + 24 + export interface HandlerSuccess { 25 + encoding: 'application/json' 26 + body: OutputSchema 27 + } 28 + 29 + export interface HandlerError { 30 + status: number 31 + message?: string 32 + } 33 + 34 + export type HandlerOutput = HandlerError | HandlerSuccess 35 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 36 + auth: HA 37 + params: QueryParams 38 + input: HandlerInput 39 + req: express.Request 40 + res: express.Response 41 + }) => Promise<HandlerOutput> | HandlerOutput 42 + 43 + export interface Feed { 44 + uri: string 45 + [k: string]: unknown 46 + } 47 + 48 + export function isFeed(v: unknown): v is Feed { 49 + return ( 50 + isObj(v) && 51 + hasProp(v, '$type') && 52 + v.$type === 'app.bsky.feed.describeFeedGenerator#feed' 53 + ) 54 + } 55 + 56 + export function validateFeed(v: unknown): ValidationResult { 57 + return lexicons.validate('app.bsky.feed.describeFeedGenerator#feed', v) 58 + } 59 + 60 + export interface Links { 61 + privacyPolicy?: string 62 + termsOfService?: string 63 + [k: string]: unknown 64 + } 65 + 66 + export function isLinks(v: unknown): v is Links { 67 + return ( 68 + isObj(v) && 69 + hasProp(v, '$type') && 70 + v.$type === 'app.bsky.feed.describeFeedGenerator#links' 71 + ) 72 + } 73 + 74 + export function validateLinks(v: unknown): ValidationResult { 75 + return lexicons.validate('app.bsky.feed.describeFeedGenerator#links', v) 76 + }
+31
src/lexicon/types/app/bsky/feed/generator.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 5 + import { lexicons } from '../../../../lexicons' 6 + import { isObj, hasProp } from '../../../../util' 7 + import { CID } from 'multiformats/cid' 8 + import * as AppBskyRichtextFacet from '../richtext/facet' 9 + 10 + export interface Record { 11 + did: string 12 + displayName?: string 13 + description?: string 14 + descriptionFacets?: AppBskyRichtextFacet.Main[] 15 + avatar?: BlobRef 16 + createdAt: string 17 + [k: string]: unknown 18 + } 19 + 20 + export function isRecord(v: unknown): v is Record { 21 + return ( 22 + isObj(v) && 23 + hasProp(v, '$type') && 24 + (v.$type === 'app.bsky.feed.generator#main' || 25 + v.$type === 'app.bsky.feed.generator') 26 + ) 27 + } 28 + 29 + export function validateRecord(v: unknown): ValidationResult { 30 + return lexicons.validate('app.bsky.feed.generator#main', v) 31 + }
+45
src/lexicon/types/app/bsky/feed/getActorFeeds.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + import * as AppBskyFeedDefs from './defs' 11 + 12 + export interface QueryParams { 13 + actor: string 14 + limit: number 15 + cursor?: string 16 + } 17 + 18 + export type InputSchema = undefined 19 + 20 + export interface OutputSchema { 21 + cursor?: string 22 + feeds: AppBskyFeedDefs.GeneratorView[] 23 + [k: string]: unknown 24 + } 25 + 26 + export type HandlerInput = undefined 27 + 28 + export interface HandlerSuccess { 29 + encoding: 'application/json' 30 + body: OutputSchema 31 + } 32 + 33 + export interface HandlerError { 34 + status: number 35 + message?: string 36 + } 37 + 38 + export type HandlerOutput = HandlerError | HandlerSuccess 39 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 40 + auth: HA 41 + params: QueryParams 42 + input: HandlerInput 43 + req: express.Request 44 + res: express.Response 45 + }) => Promise<HandlerOutput> | HandlerOutput
+46
src/lexicon/types/app/bsky/feed/getAuthorFeed.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + import * as AppBskyFeedDefs from './defs' 11 + 12 + export interface QueryParams { 13 + actor: string 14 + limit: number 15 + cursor?: string 16 + } 17 + 18 + export type InputSchema = undefined 19 + 20 + export interface OutputSchema { 21 + cursor?: string 22 + feed: AppBskyFeedDefs.FeedViewPost[] 23 + [k: string]: unknown 24 + } 25 + 26 + export type HandlerInput = undefined 27 + 28 + export interface HandlerSuccess { 29 + encoding: 'application/json' 30 + body: OutputSchema 31 + } 32 + 33 + export interface HandlerError { 34 + status: number 35 + message?: string 36 + error?: 'BlockedActor' | 'BlockedByActor' 37 + } 38 + 39 + export type HandlerOutput = HandlerError | HandlerSuccess 40 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 41 + auth: HA 42 + params: QueryParams 43 + input: HandlerInput 44 + req: express.Request 45 + res: express.Response 46 + }) => Promise<HandlerOutput> | HandlerOutput
+46
src/lexicon/types/app/bsky/feed/getFeed.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + import * as AppBskyFeedDefs from './defs' 11 + 12 + export interface QueryParams { 13 + feed: string 14 + limit: number 15 + cursor?: string 16 + } 17 + 18 + export type InputSchema = undefined 19 + 20 + export interface OutputSchema { 21 + cursor?: string 22 + feed: AppBskyFeedDefs.FeedViewPost[] 23 + [k: string]: unknown 24 + } 25 + 26 + export type HandlerInput = undefined 27 + 28 + export interface HandlerSuccess { 29 + encoding: 'application/json' 30 + body: OutputSchema 31 + } 32 + 33 + export interface HandlerError { 34 + status: number 35 + message?: string 36 + error?: 'UnknownFeed' 37 + } 38 + 39 + export type HandlerOutput = HandlerError | HandlerSuccess 40 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 41 + auth: HA 42 + params: QueryParams 43 + input: HandlerInput 44 + req: express.Request 45 + res: express.Response 46 + }) => Promise<HandlerOutput> | HandlerOutput
+44
src/lexicon/types/app/bsky/feed/getFeedGenerator.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + import * as AppBskyFeedDefs from './defs' 11 + 12 + export interface QueryParams { 13 + feed: string 14 + } 15 + 16 + export type InputSchema = undefined 17 + 18 + export interface OutputSchema { 19 + view: AppBskyFeedDefs.GeneratorView 20 + isOnline: boolean 21 + isValid: boolean 22 + [k: string]: unknown 23 + } 24 + 25 + export type HandlerInput = undefined 26 + 27 + export interface HandlerSuccess { 28 + encoding: 'application/json' 29 + body: OutputSchema 30 + } 31 + 32 + export interface HandlerError { 33 + status: number 34 + message?: string 35 + } 36 + 37 + export type HandlerOutput = HandlerError | HandlerSuccess 38 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 39 + auth: HA 40 + params: QueryParams 41 + input: HandlerInput 42 + req: express.Request 43 + res: express.Response 44 + }) => Promise<HandlerOutput> | HandlerOutput
+46
src/lexicon/types/app/bsky/feed/getFeedSkeleton.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + import * as AppBskyFeedDefs from './defs' 11 + 12 + export interface QueryParams { 13 + feed: string 14 + limit: number 15 + cursor?: string 16 + } 17 + 18 + export type InputSchema = undefined 19 + 20 + export interface OutputSchema { 21 + cursor?: string 22 + feed: AppBskyFeedDefs.SkeletonFeedPost[] 23 + [k: string]: unknown 24 + } 25 + 26 + export type HandlerInput = undefined 27 + 28 + export interface HandlerSuccess { 29 + encoding: 'application/json' 30 + body: OutputSchema 31 + } 32 + 33 + export interface HandlerError { 34 + status: number 35 + message?: string 36 + error?: 'UnknownFeed' 37 + } 38 + 39 + export type HandlerOutput = HandlerError | HandlerSuccess 40 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 41 + auth: HA 42 + params: QueryParams 43 + input: HandlerInput 44 + req: express.Request 45 + res: express.Response 46 + }) => Promise<HandlerOutput> | HandlerOutput
+65
src/lexicon/types/app/bsky/feed/getLikes.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + import * as AppBskyActorDefs from '../actor/defs' 11 + 12 + export interface QueryParams { 13 + uri: string 14 + cid?: string 15 + limit: number 16 + cursor?: string 17 + } 18 + 19 + export type InputSchema = undefined 20 + 21 + export interface OutputSchema { 22 + uri: string 23 + cid?: string 24 + cursor?: string 25 + likes: Like[] 26 + [k: string]: unknown 27 + } 28 + 29 + export type HandlerInput = undefined 30 + 31 + export interface HandlerSuccess { 32 + encoding: 'application/json' 33 + body: OutputSchema 34 + } 35 + 36 + export interface HandlerError { 37 + status: number 38 + message?: string 39 + } 40 + 41 + export type HandlerOutput = HandlerError | HandlerSuccess 42 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 43 + auth: HA 44 + params: QueryParams 45 + input: HandlerInput 46 + req: express.Request 47 + res: express.Response 48 + }) => Promise<HandlerOutput> | HandlerOutput 49 + 50 + export interface Like { 51 + indexedAt: string 52 + createdAt: string 53 + actor: AppBskyActorDefs.ProfileView 54 + [k: string]: unknown 55 + } 56 + 57 + export function isLike(v: unknown): v is Like { 58 + return ( 59 + isObj(v) && hasProp(v, '$type') && v.$type === 'app.bsky.feed.getLikes#like' 60 + ) 61 + } 62 + 63 + export function validateLike(v: unknown): ValidationResult { 64 + return lexicons.validate('app.bsky.feed.getLikes#like', v) 65 + }
+48
src/lexicon/types/app/bsky/feed/getPostThread.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + import * as AppBskyFeedDefs from './defs' 11 + 12 + export interface QueryParams { 13 + uri: string 14 + depth?: number 15 + } 16 + 17 + export type InputSchema = undefined 18 + 19 + export interface OutputSchema { 20 + thread: 21 + | AppBskyFeedDefs.ThreadViewPost 22 + | AppBskyFeedDefs.NotFoundPost 23 + | AppBskyFeedDefs.BlockedPost 24 + | { $type: string; [k: string]: unknown } 25 + [k: string]: unknown 26 + } 27 + 28 + export type HandlerInput = undefined 29 + 30 + export interface HandlerSuccess { 31 + encoding: 'application/json' 32 + body: OutputSchema 33 + } 34 + 35 + export interface HandlerError { 36 + status: number 37 + message?: string 38 + error?: 'NotFound' 39 + } 40 + 41 + export type HandlerOutput = HandlerError | HandlerSuccess 42 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 43 + auth: HA 44 + params: QueryParams 45 + input: HandlerInput 46 + req: express.Request 47 + res: express.Response 48 + }) => Promise<HandlerOutput> | HandlerOutput
+42
src/lexicon/types/app/bsky/feed/getPosts.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + import * as AppBskyFeedDefs from './defs' 11 + 12 + export interface QueryParams { 13 + uris: string[] 14 + } 15 + 16 + export type InputSchema = undefined 17 + 18 + export interface OutputSchema { 19 + posts: AppBskyFeedDefs.PostView[] 20 + [k: string]: unknown 21 + } 22 + 23 + export type HandlerInput = undefined 24 + 25 + export interface HandlerSuccess { 26 + encoding: 'application/json' 27 + body: OutputSchema 28 + } 29 + 30 + export interface HandlerError { 31 + status: number 32 + message?: string 33 + } 34 + 35 + export type HandlerOutput = HandlerError | HandlerSuccess 36 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 37 + auth: HA 38 + params: QueryParams 39 + input: HandlerInput 40 + req: express.Request 41 + res: express.Response 42 + }) => Promise<HandlerOutput> | HandlerOutput
+48
src/lexicon/types/app/bsky/feed/getRepostedBy.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + import * as AppBskyActorDefs from '../actor/defs' 11 + 12 + export interface QueryParams { 13 + uri: string 14 + cid?: string 15 + limit: number 16 + cursor?: string 17 + } 18 + 19 + export type InputSchema = undefined 20 + 21 + export interface OutputSchema { 22 + uri: string 23 + cid?: string 24 + cursor?: string 25 + repostedBy: AppBskyActorDefs.ProfileView[] 26 + [k: string]: unknown 27 + } 28 + 29 + export type HandlerInput = undefined 30 + 31 + export interface HandlerSuccess { 32 + encoding: 'application/json' 33 + body: OutputSchema 34 + } 35 + 36 + export interface HandlerError { 37 + status: number 38 + message?: string 39 + } 40 + 41 + export type HandlerOutput = HandlerError | HandlerSuccess 42 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 43 + auth: HA 44 + params: QueryParams 45 + input: HandlerInput 46 + req: express.Request 47 + res: express.Response 48 + }) => Promise<HandlerOutput> | HandlerOutput
+44
src/lexicon/types/app/bsky/feed/getSavedFeeds.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + import * as AppBskyFeedDefs from './defs' 11 + 12 + export interface QueryParams { 13 + limit: number 14 + cursor?: string 15 + } 16 + 17 + export type InputSchema = undefined 18 + 19 + export interface OutputSchema { 20 + cursor?: string 21 + feeds: AppBskyFeedDefs.GeneratorView[] 22 + [k: string]: unknown 23 + } 24 + 25 + export type HandlerInput = undefined 26 + 27 + export interface HandlerSuccess { 28 + encoding: 'application/json' 29 + body: OutputSchema 30 + } 31 + 32 + export interface HandlerError { 33 + status: number 34 + message?: string 35 + } 36 + 37 + export type HandlerOutput = HandlerError | HandlerSuccess 38 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 39 + auth: HA 40 + params: QueryParams 41 + input: HandlerInput 42 + req: express.Request 43 + res: express.Response 44 + }) => Promise<HandlerOutput> | HandlerOutput
+45
src/lexicon/types/app/bsky/feed/getTimeline.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + import * as AppBskyFeedDefs from './defs' 11 + 12 + export interface QueryParams { 13 + algorithm?: string 14 + limit: number 15 + cursor?: string 16 + } 17 + 18 + export type InputSchema = undefined 19 + 20 + export interface OutputSchema { 21 + cursor?: string 22 + feed: AppBskyFeedDefs.FeedViewPost[] 23 + [k: string]: unknown 24 + } 25 + 26 + export type HandlerInput = undefined 27 + 28 + export interface HandlerSuccess { 29 + encoding: 'application/json' 30 + body: OutputSchema 31 + } 32 + 33 + export interface HandlerError { 34 + status: number 35 + message?: string 36 + } 37 + 38 + export type HandlerOutput = HandlerError | HandlerSuccess 39 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 40 + auth: HA 41 + params: QueryParams 42 + input: HandlerInput 43 + req: express.Request 44 + res: express.Response 45 + }) => Promise<HandlerOutput> | HandlerOutput
+26
src/lexicon/types/app/bsky/feed/like.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 5 + import { lexicons } from '../../../../lexicons' 6 + import { isObj, hasProp } from '../../../../util' 7 + import { CID } from 'multiformats/cid' 8 + import * as ComAtprotoRepoStrongRef from '../../../com/atproto/repo/strongRef' 9 + 10 + export interface Record { 11 + subject: ComAtprotoRepoStrongRef.Main 12 + createdAt: string 13 + [k: string]: unknown 14 + } 15 + 16 + export function isRecord(v: unknown): v is Record { 17 + return ( 18 + isObj(v) && 19 + hasProp(v, '$type') && 20 + (v.$type === 'app.bsky.feed.like#main' || v.$type === 'app.bsky.feed.like') 21 + ) 22 + } 23 + 24 + export function validateRecord(v: unknown): ValidationResult { 25 + return lexicons.validate('app.bsky.feed.like#main', v) 26 + }
+95
src/lexicon/types/app/bsky/feed/post.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 5 + import { lexicons } from '../../../../lexicons' 6 + import { isObj, hasProp } from '../../../../util' 7 + import { CID } from 'multiformats/cid' 8 + import * as AppBskyRichtextFacet from '../richtext/facet' 9 + import * as AppBskyEmbedImages from '../embed/images' 10 + import * as AppBskyEmbedExternal from '../embed/external' 11 + import * as AppBskyEmbedRecord from '../embed/record' 12 + import * as AppBskyEmbedRecordWithMedia from '../embed/recordWithMedia' 13 + import * as ComAtprotoRepoStrongRef from '../../../com/atproto/repo/strongRef' 14 + 15 + export interface Record { 16 + text: string 17 + /** Deprecated: replaced by app.bsky.richtext.facet. */ 18 + entities?: Entity[] 19 + facets?: AppBskyRichtextFacet.Main[] 20 + reply?: ReplyRef 21 + embed?: 22 + | AppBskyEmbedImages.Main 23 + | AppBskyEmbedExternal.Main 24 + | AppBskyEmbedRecord.Main 25 + | AppBskyEmbedRecordWithMedia.Main 26 + | { $type: string; [k: string]: unknown } 27 + createdAt: string 28 + [k: string]: unknown 29 + } 30 + 31 + export function isRecord(v: unknown): v is Record { 32 + return ( 33 + isObj(v) && 34 + hasProp(v, '$type') && 35 + (v.$type === 'app.bsky.feed.post#main' || v.$type === 'app.bsky.feed.post') 36 + ) 37 + } 38 + 39 + export function validateRecord(v: unknown): ValidationResult { 40 + return lexicons.validate('app.bsky.feed.post#main', v) 41 + } 42 + 43 + export interface ReplyRef { 44 + root: ComAtprotoRepoStrongRef.Main 45 + parent: ComAtprotoRepoStrongRef.Main 46 + [k: string]: unknown 47 + } 48 + 49 + export function isReplyRef(v: unknown): v is ReplyRef { 50 + return ( 51 + isObj(v) && hasProp(v, '$type') && v.$type === 'app.bsky.feed.post#replyRef' 52 + ) 53 + } 54 + 55 + export function validateReplyRef(v: unknown): ValidationResult { 56 + return lexicons.validate('app.bsky.feed.post#replyRef', v) 57 + } 58 + 59 + /** Deprecated: use facets instead. */ 60 + export interface Entity { 61 + index: TextSlice 62 + /** Expected values are 'mention' and 'link'. */ 63 + type: string 64 + value: string 65 + [k: string]: unknown 66 + } 67 + 68 + export function isEntity(v: unknown): v is Entity { 69 + return ( 70 + isObj(v) && hasProp(v, '$type') && v.$type === 'app.bsky.feed.post#entity' 71 + ) 72 + } 73 + 74 + export function validateEntity(v: unknown): ValidationResult { 75 + return lexicons.validate('app.bsky.feed.post#entity', v) 76 + } 77 + 78 + /** Deprecated. Use app.bsky.richtext instead -- A text segment. Start is inclusive, end is exclusive. Indices are for utf16-encoded strings. */ 79 + export interface TextSlice { 80 + start: number 81 + end: number 82 + [k: string]: unknown 83 + } 84 + 85 + export function isTextSlice(v: unknown): v is TextSlice { 86 + return ( 87 + isObj(v) && 88 + hasProp(v, '$type') && 89 + v.$type === 'app.bsky.feed.post#textSlice' 90 + ) 91 + } 92 + 93 + export function validateTextSlice(v: unknown): ValidationResult { 94 + return lexicons.validate('app.bsky.feed.post#textSlice', v) 95 + }
+27
src/lexicon/types/app/bsky/feed/repost.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 5 + import { lexicons } from '../../../../lexicons' 6 + import { isObj, hasProp } from '../../../../util' 7 + import { CID } from 'multiformats/cid' 8 + import * as ComAtprotoRepoStrongRef from '../../../com/atproto/repo/strongRef' 9 + 10 + export interface Record { 11 + subject: ComAtprotoRepoStrongRef.Main 12 + createdAt: string 13 + [k: string]: unknown 14 + } 15 + 16 + export function isRecord(v: unknown): v is Record { 17 + return ( 18 + isObj(v) && 19 + hasProp(v, '$type') && 20 + (v.$type === 'app.bsky.feed.repost#main' || 21 + v.$type === 'app.bsky.feed.repost') 22 + ) 23 + } 24 + 25 + export function validateRecord(v: unknown): ValidationResult { 26 + return lexicons.validate('app.bsky.feed.repost#main', v) 27 + }
+35
src/lexicon/types/app/bsky/feed/saveFeed.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + 11 + export interface QueryParams {} 12 + 13 + export interface InputSchema { 14 + feed: string 15 + [k: string]: unknown 16 + } 17 + 18 + export interface HandlerInput { 19 + encoding: 'application/json' 20 + body: InputSchema 21 + } 22 + 23 + export interface HandlerError { 24 + status: number 25 + message?: string 26 + } 27 + 28 + export type HandlerOutput = HandlerError | void 29 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 30 + auth: HA 31 + params: QueryParams 32 + input: HandlerInput 33 + req: express.Request 34 + res: express.Response 35 + }) => Promise<HandlerOutput> | HandlerOutput
+35
src/lexicon/types/app/bsky/feed/unsaveFeed.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + 11 + export interface QueryParams {} 12 + 13 + export interface InputSchema { 14 + feed: string 15 + [k: string]: unknown 16 + } 17 + 18 + export interface HandlerInput { 19 + encoding: 'application/json' 20 + body: InputSchema 21 + } 22 + 23 + export interface HandlerError { 24 + status: number 25 + message?: string 26 + } 27 + 28 + export type HandlerOutput = HandlerError | void 29 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 30 + auth: HA 31 + params: QueryParams 32 + input: HandlerInput 33 + req: express.Request 34 + res: express.Response 35 + }) => Promise<HandlerOutput> | HandlerOutput
+26
src/lexicon/types/app/bsky/graph/block.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 5 + import { lexicons } from '../../../../lexicons' 6 + import { isObj, hasProp } from '../../../../util' 7 + import { CID } from 'multiformats/cid' 8 + 9 + export interface Record { 10 + subject: string 11 + createdAt: string 12 + [k: string]: unknown 13 + } 14 + 15 + export function isRecord(v: unknown): v is Record { 16 + return ( 17 + isObj(v) && 18 + hasProp(v, '$type') && 19 + (v.$type === 'app.bsky.graph.block#main' || 20 + v.$type === 'app.bsky.graph.block') 21 + ) 22 + } 23 + 24 + export function validateRecord(v: unknown): ValidationResult { 25 + return lexicons.validate('app.bsky.graph.block#main', v) 26 + }
+95
src/lexicon/types/app/bsky/graph/defs.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 5 + import { lexicons } from '../../../../lexicons' 6 + import { isObj, hasProp } from '../../../../util' 7 + import { CID } from 'multiformats/cid' 8 + import * as AppBskyActorDefs from '../actor/defs' 9 + import * as AppBskyRichtextFacet from '../richtext/facet' 10 + 11 + export interface ListViewBasic { 12 + uri: string 13 + name: string 14 + purpose: ListPurpose 15 + avatar?: string 16 + viewer?: ListViewerState 17 + indexedAt?: string 18 + [k: string]: unknown 19 + } 20 + 21 + export function isListViewBasic(v: unknown): v is ListViewBasic { 22 + return ( 23 + isObj(v) && 24 + hasProp(v, '$type') && 25 + v.$type === 'app.bsky.graph.defs#listViewBasic' 26 + ) 27 + } 28 + 29 + export function validateListViewBasic(v: unknown): ValidationResult { 30 + return lexicons.validate('app.bsky.graph.defs#listViewBasic', v) 31 + } 32 + 33 + export interface ListView { 34 + uri: string 35 + creator: AppBskyActorDefs.ProfileView 36 + name: string 37 + purpose: ListPurpose 38 + description?: string 39 + descriptionFacets?: AppBskyRichtextFacet.Main[] 40 + avatar?: string 41 + viewer?: ListViewerState 42 + indexedAt: string 43 + [k: string]: unknown 44 + } 45 + 46 + export function isListView(v: unknown): v is ListView { 47 + return ( 48 + isObj(v) && 49 + hasProp(v, '$type') && 50 + v.$type === 'app.bsky.graph.defs#listView' 51 + ) 52 + } 53 + 54 + export function validateListView(v: unknown): ValidationResult { 55 + return lexicons.validate('app.bsky.graph.defs#listView', v) 56 + } 57 + 58 + export interface ListItemView { 59 + subject: AppBskyActorDefs.ProfileView 60 + [k: string]: unknown 61 + } 62 + 63 + export function isListItemView(v: unknown): v is ListItemView { 64 + return ( 65 + isObj(v) && 66 + hasProp(v, '$type') && 67 + v.$type === 'app.bsky.graph.defs#listItemView' 68 + ) 69 + } 70 + 71 + export function validateListItemView(v: unknown): ValidationResult { 72 + return lexicons.validate('app.bsky.graph.defs#listItemView', v) 73 + } 74 + 75 + export type ListPurpose = 'app.bsky.graph.defs#modlist' | (string & {}) 76 + 77 + /** A list of actors to apply an aggregate moderation action (mute/block) on */ 78 + export const MODLIST = 'app.bsky.graph.defs#modlist' 79 + 80 + export interface ListViewerState { 81 + muted?: boolean 82 + [k: string]: unknown 83 + } 84 + 85 + export function isListViewerState(v: unknown): v is ListViewerState { 86 + return ( 87 + isObj(v) && 88 + hasProp(v, '$type') && 89 + v.$type === 'app.bsky.graph.defs#listViewerState' 90 + ) 91 + } 92 + 93 + export function validateListViewerState(v: unknown): ValidationResult { 94 + return lexicons.validate('app.bsky.graph.defs#listViewerState', v) 95 + }
+26
src/lexicon/types/app/bsky/graph/follow.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 5 + import { lexicons } from '../../../../lexicons' 6 + import { isObj, hasProp } from '../../../../util' 7 + import { CID } from 'multiformats/cid' 8 + 9 + export interface Record { 10 + subject: string 11 + createdAt: string 12 + [k: string]: unknown 13 + } 14 + 15 + export function isRecord(v: unknown): v is Record { 16 + return ( 17 + isObj(v) && 18 + hasProp(v, '$type') && 19 + (v.$type === 'app.bsky.graph.follow#main' || 20 + v.$type === 'app.bsky.graph.follow') 21 + ) 22 + } 23 + 24 + export function validateRecord(v: unknown): ValidationResult { 25 + return lexicons.validate('app.bsky.graph.follow#main', v) 26 + }
+44
src/lexicon/types/app/bsky/graph/getBlocks.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + import * as AppBskyActorDefs from '../actor/defs' 11 + 12 + export interface QueryParams { 13 + limit: number 14 + cursor?: string 15 + } 16 + 17 + export type InputSchema = undefined 18 + 19 + export interface OutputSchema { 20 + cursor?: string 21 + blocks: AppBskyActorDefs.ProfileView[] 22 + [k: string]: unknown 23 + } 24 + 25 + export type HandlerInput = undefined 26 + 27 + export interface HandlerSuccess { 28 + encoding: 'application/json' 29 + body: OutputSchema 30 + } 31 + 32 + export interface HandlerError { 33 + status: number 34 + message?: string 35 + } 36 + 37 + export type HandlerOutput = HandlerError | HandlerSuccess 38 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 39 + auth: HA 40 + params: QueryParams 41 + input: HandlerInput 42 + req: express.Request 43 + res: express.Response 44 + }) => Promise<HandlerOutput> | HandlerOutput
+46
src/lexicon/types/app/bsky/graph/getFollowers.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + import * as AppBskyActorDefs from '../actor/defs' 11 + 12 + export interface QueryParams { 13 + actor: string 14 + limit: number 15 + cursor?: string 16 + } 17 + 18 + export type InputSchema = undefined 19 + 20 + export interface OutputSchema { 21 + subject: AppBskyActorDefs.ProfileView 22 + cursor?: string 23 + followers: AppBskyActorDefs.ProfileView[] 24 + [k: string]: unknown 25 + } 26 + 27 + export type HandlerInput = undefined 28 + 29 + export interface HandlerSuccess { 30 + encoding: 'application/json' 31 + body: OutputSchema 32 + } 33 + 34 + export interface HandlerError { 35 + status: number 36 + message?: string 37 + } 38 + 39 + export type HandlerOutput = HandlerError | HandlerSuccess 40 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 41 + auth: HA 42 + params: QueryParams 43 + input: HandlerInput 44 + req: express.Request 45 + res: express.Response 46 + }) => Promise<HandlerOutput> | HandlerOutput
+46
src/lexicon/types/app/bsky/graph/getFollows.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + import * as AppBskyActorDefs from '../actor/defs' 11 + 12 + export interface QueryParams { 13 + actor: string 14 + limit: number 15 + cursor?: string 16 + } 17 + 18 + export type InputSchema = undefined 19 + 20 + export interface OutputSchema { 21 + subject: AppBskyActorDefs.ProfileView 22 + cursor?: string 23 + follows: AppBskyActorDefs.ProfileView[] 24 + [k: string]: unknown 25 + } 26 + 27 + export type HandlerInput = undefined 28 + 29 + export interface HandlerSuccess { 30 + encoding: 'application/json' 31 + body: OutputSchema 32 + } 33 + 34 + export interface HandlerError { 35 + status: number 36 + message?: string 37 + } 38 + 39 + export type HandlerOutput = HandlerError | HandlerSuccess 40 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 41 + auth: HA 42 + params: QueryParams 43 + input: HandlerInput 44 + req: express.Request 45 + res: express.Response 46 + }) => Promise<HandlerOutput> | HandlerOutput
+46
src/lexicon/types/app/bsky/graph/getList.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + import * as AppBskyGraphDefs from './defs' 11 + 12 + export interface QueryParams { 13 + list: string 14 + limit: number 15 + cursor?: string 16 + } 17 + 18 + export type InputSchema = undefined 19 + 20 + export interface OutputSchema { 21 + cursor?: string 22 + list: AppBskyGraphDefs.ListView 23 + items: AppBskyGraphDefs.ListItemView[] 24 + [k: string]: unknown 25 + } 26 + 27 + export type HandlerInput = undefined 28 + 29 + export interface HandlerSuccess { 30 + encoding: 'application/json' 31 + body: OutputSchema 32 + } 33 + 34 + export interface HandlerError { 35 + status: number 36 + message?: string 37 + } 38 + 39 + export type HandlerOutput = HandlerError | HandlerSuccess 40 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 41 + auth: HA 42 + params: QueryParams 43 + input: HandlerInput 44 + req: express.Request 45 + res: express.Response 46 + }) => Promise<HandlerOutput> | HandlerOutput
+44
src/lexicon/types/app/bsky/graph/getListMutes.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + import * as AppBskyGraphDefs from './defs' 11 + 12 + export interface QueryParams { 13 + limit: number 14 + cursor?: string 15 + } 16 + 17 + export type InputSchema = undefined 18 + 19 + export interface OutputSchema { 20 + cursor?: string 21 + lists: AppBskyGraphDefs.ListView[] 22 + [k: string]: unknown 23 + } 24 + 25 + export type HandlerInput = undefined 26 + 27 + export interface HandlerSuccess { 28 + encoding: 'application/json' 29 + body: OutputSchema 30 + } 31 + 32 + export interface HandlerError { 33 + status: number 34 + message?: string 35 + } 36 + 37 + export type HandlerOutput = HandlerError | HandlerSuccess 38 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 39 + auth: HA 40 + params: QueryParams 41 + input: HandlerInput 42 + req: express.Request 43 + res: express.Response 44 + }) => Promise<HandlerOutput> | HandlerOutput
+45
src/lexicon/types/app/bsky/graph/getLists.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + import * as AppBskyGraphDefs from './defs' 11 + 12 + export interface QueryParams { 13 + actor: string 14 + limit: number 15 + cursor?: string 16 + } 17 + 18 + export type InputSchema = undefined 19 + 20 + export interface OutputSchema { 21 + cursor?: string 22 + lists: AppBskyGraphDefs.ListView[] 23 + [k: string]: unknown 24 + } 25 + 26 + export type HandlerInput = undefined 27 + 28 + export interface HandlerSuccess { 29 + encoding: 'application/json' 30 + body: OutputSchema 31 + } 32 + 33 + export interface HandlerError { 34 + status: number 35 + message?: string 36 + } 37 + 38 + export type HandlerOutput = HandlerError | HandlerSuccess 39 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 40 + auth: HA 41 + params: QueryParams 42 + input: HandlerInput 43 + req: express.Request 44 + res: express.Response 45 + }) => Promise<HandlerOutput> | HandlerOutput
+44
src/lexicon/types/app/bsky/graph/getMutes.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + import * as AppBskyActorDefs from '../actor/defs' 11 + 12 + export interface QueryParams { 13 + limit: number 14 + cursor?: string 15 + } 16 + 17 + export type InputSchema = undefined 18 + 19 + export interface OutputSchema { 20 + cursor?: string 21 + mutes: AppBskyActorDefs.ProfileView[] 22 + [k: string]: unknown 23 + } 24 + 25 + export type HandlerInput = undefined 26 + 27 + export interface HandlerSuccess { 28 + encoding: 'application/json' 29 + body: OutputSchema 30 + } 31 + 32 + export interface HandlerError { 33 + status: number 34 + message?: string 35 + } 36 + 37 + export type HandlerOutput = HandlerError | HandlerSuccess 38 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 39 + auth: HA 40 + params: QueryParams 41 + input: HandlerInput 42 + req: express.Request 43 + res: express.Response 44 + }) => Promise<HandlerOutput> | HandlerOutput
+32
src/lexicon/types/app/bsky/graph/list.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 5 + import { lexicons } from '../../../../lexicons' 6 + import { isObj, hasProp } from '../../../../util' 7 + import { CID } from 'multiformats/cid' 8 + import * as AppBskyGraphDefs from './defs' 9 + import * as AppBskyRichtextFacet from '../richtext/facet' 10 + 11 + export interface Record { 12 + purpose: AppBskyGraphDefs.ListPurpose 13 + name: string 14 + description?: string 15 + descriptionFacets?: AppBskyRichtextFacet.Main[] 16 + avatar?: BlobRef 17 + createdAt: string 18 + [k: string]: unknown 19 + } 20 + 21 + export function isRecord(v: unknown): v is Record { 22 + return ( 23 + isObj(v) && 24 + hasProp(v, '$type') && 25 + (v.$type === 'app.bsky.graph.list#main' || 26 + v.$type === 'app.bsky.graph.list') 27 + ) 28 + } 29 + 30 + export function validateRecord(v: unknown): ValidationResult { 31 + return lexicons.validate('app.bsky.graph.list#main', v) 32 + }
+27
src/lexicon/types/app/bsky/graph/listitem.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 5 + import { lexicons } from '../../../../lexicons' 6 + import { isObj, hasProp } from '../../../../util' 7 + import { CID } from 'multiformats/cid' 8 + 9 + export interface Record { 10 + subject: string 11 + list: string 12 + createdAt: string 13 + [k: string]: unknown 14 + } 15 + 16 + export function isRecord(v: unknown): v is Record { 17 + return ( 18 + isObj(v) && 19 + hasProp(v, '$type') && 20 + (v.$type === 'app.bsky.graph.listitem#main' || 21 + v.$type === 'app.bsky.graph.listitem') 22 + ) 23 + } 24 + 25 + export function validateRecord(v: unknown): ValidationResult { 26 + return lexicons.validate('app.bsky.graph.listitem#main', v) 27 + }
+35
src/lexicon/types/app/bsky/graph/muteActor.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + 11 + export interface QueryParams {} 12 + 13 + export interface InputSchema { 14 + actor: string 15 + [k: string]: unknown 16 + } 17 + 18 + export interface HandlerInput { 19 + encoding: 'application/json' 20 + body: InputSchema 21 + } 22 + 23 + export interface HandlerError { 24 + status: number 25 + message?: string 26 + } 27 + 28 + export type HandlerOutput = HandlerError | void 29 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 30 + auth: HA 31 + params: QueryParams 32 + input: HandlerInput 33 + req: express.Request 34 + res: express.Response 35 + }) => Promise<HandlerOutput> | HandlerOutput
+35
src/lexicon/types/app/bsky/graph/muteActorList.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + 11 + export interface QueryParams {} 12 + 13 + export interface InputSchema { 14 + list: string 15 + [k: string]: unknown 16 + } 17 + 18 + export interface HandlerInput { 19 + encoding: 'application/json' 20 + body: InputSchema 21 + } 22 + 23 + export interface HandlerError { 24 + status: number 25 + message?: string 26 + } 27 + 28 + export type HandlerOutput = HandlerError | void 29 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 30 + auth: HA 31 + params: QueryParams 32 + input: HandlerInput 33 + req: express.Request 34 + res: express.Response 35 + }) => Promise<HandlerOutput> | HandlerOutput
+35
src/lexicon/types/app/bsky/graph/unmuteActor.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + 11 + export interface QueryParams {} 12 + 13 + export interface InputSchema { 14 + actor: string 15 + [k: string]: unknown 16 + } 17 + 18 + export interface HandlerInput { 19 + encoding: 'application/json' 20 + body: InputSchema 21 + } 22 + 23 + export interface HandlerError { 24 + status: number 25 + message?: string 26 + } 27 + 28 + export type HandlerOutput = HandlerError | void 29 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 30 + auth: HA 31 + params: QueryParams 32 + input: HandlerInput 33 + req: express.Request 34 + res: express.Response 35 + }) => Promise<HandlerOutput> | HandlerOutput
+35
src/lexicon/types/app/bsky/graph/unmuteActorList.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + 11 + export interface QueryParams {} 12 + 13 + export interface InputSchema { 14 + list: string 15 + [k: string]: unknown 16 + } 17 + 18 + export interface HandlerInput { 19 + encoding: 'application/json' 20 + body: InputSchema 21 + } 22 + 23 + export interface HandlerError { 24 + status: number 25 + message?: string 26 + } 27 + 28 + export type HandlerOutput = HandlerError | void 29 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 30 + auth: HA 31 + params: QueryParams 32 + input: HandlerInput 33 + req: express.Request 34 + res: express.Response 35 + }) => Promise<HandlerOutput> | HandlerOutput
+41
src/lexicon/types/app/bsky/notification/getUnreadCount.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + 11 + export interface QueryParams { 12 + seenAt?: string 13 + } 14 + 15 + export type InputSchema = undefined 16 + 17 + export interface OutputSchema { 18 + count: number 19 + [k: string]: unknown 20 + } 21 + 22 + export type HandlerInput = undefined 23 + 24 + export interface HandlerSuccess { 25 + encoding: 'application/json' 26 + body: OutputSchema 27 + } 28 + 29 + export interface HandlerError { 30 + status: number 31 + message?: string 32 + } 33 + 34 + export type HandlerOutput = HandlerError | HandlerSuccess 35 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 36 + auth: HA 37 + params: QueryParams 38 + input: HandlerInput 39 + req: express.Request 40 + res: express.Response 41 + }) => Promise<HandlerOutput> | HandlerOutput
+82
src/lexicon/types/app/bsky/notification/listNotifications.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + import * as AppBskyActorDefs from '../actor/defs' 11 + import * as ComAtprotoLabelDefs from '../../../com/atproto/label/defs' 12 + 13 + export interface QueryParams { 14 + limit: number 15 + cursor?: string 16 + seenAt?: string 17 + } 18 + 19 + export type InputSchema = undefined 20 + 21 + export interface OutputSchema { 22 + cursor?: string 23 + notifications: Notification[] 24 + [k: string]: unknown 25 + } 26 + 27 + export type HandlerInput = undefined 28 + 29 + export interface HandlerSuccess { 30 + encoding: 'application/json' 31 + body: OutputSchema 32 + } 33 + 34 + export interface HandlerError { 35 + status: number 36 + message?: string 37 + } 38 + 39 + export type HandlerOutput = HandlerError | HandlerSuccess 40 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 41 + auth: HA 42 + params: QueryParams 43 + input: HandlerInput 44 + req: express.Request 45 + res: express.Response 46 + }) => Promise<HandlerOutput> | HandlerOutput 47 + 48 + export interface Notification { 49 + uri: string 50 + cid: string 51 + author: AppBskyActorDefs.ProfileView 52 + /** Expected values are 'like', 'repost', 'follow', 'mention', 'reply', and 'quote'. */ 53 + reason: 54 + | 'like' 55 + | 'repost' 56 + | 'follow' 57 + | 'mention' 58 + | 'reply' 59 + | 'quote' 60 + | (string & {}) 61 + reasonSubject?: string 62 + record: {} 63 + isRead: boolean 64 + indexedAt: string 65 + labels?: ComAtprotoLabelDefs.Label[] 66 + [k: string]: unknown 67 + } 68 + 69 + export function isNotification(v: unknown): v is Notification { 70 + return ( 71 + isObj(v) && 72 + hasProp(v, '$type') && 73 + v.$type === 'app.bsky.notification.listNotifications#notification' 74 + ) 75 + } 76 + 77 + export function validateNotification(v: unknown): ValidationResult { 78 + return lexicons.validate( 79 + 'app.bsky.notification.listNotifications#notification', 80 + v, 81 + ) 82 + }
+35
src/lexicon/types/app/bsky/notification/updateSeen.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + 11 + export interface QueryParams {} 12 + 13 + export interface InputSchema { 14 + seenAt: string 15 + [k: string]: unknown 16 + } 17 + 18 + export interface HandlerInput { 19 + encoding: 'application/json' 20 + body: InputSchema 21 + } 22 + 23 + export interface HandlerError { 24 + status: number 25 + message?: string 26 + } 27 + 28 + export type HandlerOutput = HandlerError | void 29 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 30 + auth: HA 31 + params: QueryParams 32 + input: HandlerInput 33 + req: express.Request 34 + res: express.Response 35 + }) => Promise<HandlerOutput> | HandlerOutput
+81
src/lexicon/types/app/bsky/richtext/facet.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 5 + import { lexicons } from '../../../../lexicons' 6 + import { isObj, hasProp } from '../../../../util' 7 + import { CID } from 'multiformats/cid' 8 + 9 + export interface Main { 10 + index: ByteSlice 11 + features: (Mention | Link | { $type: string; [k: string]: unknown })[] 12 + [k: string]: unknown 13 + } 14 + 15 + export function isMain(v: unknown): v is Main { 16 + return ( 17 + isObj(v) && 18 + hasProp(v, '$type') && 19 + (v.$type === 'app.bsky.richtext.facet#main' || 20 + v.$type === 'app.bsky.richtext.facet') 21 + ) 22 + } 23 + 24 + export function validateMain(v: unknown): ValidationResult { 25 + return lexicons.validate('app.bsky.richtext.facet#main', v) 26 + } 27 + 28 + /** A facet feature for actor mentions. */ 29 + export interface Mention { 30 + did: string 31 + [k: string]: unknown 32 + } 33 + 34 + export function isMention(v: unknown): v is Mention { 35 + return ( 36 + isObj(v) && 37 + hasProp(v, '$type') && 38 + v.$type === 'app.bsky.richtext.facet#mention' 39 + ) 40 + } 41 + 42 + export function validateMention(v: unknown): ValidationResult { 43 + return lexicons.validate('app.bsky.richtext.facet#mention', v) 44 + } 45 + 46 + /** A facet feature for links. */ 47 + export interface Link { 48 + uri: string 49 + [k: string]: unknown 50 + } 51 + 52 + export function isLink(v: unknown): v is Link { 53 + return ( 54 + isObj(v) && 55 + hasProp(v, '$type') && 56 + v.$type === 'app.bsky.richtext.facet#link' 57 + ) 58 + } 59 + 60 + export function validateLink(v: unknown): ValidationResult { 61 + return lexicons.validate('app.bsky.richtext.facet#link', v) 62 + } 63 + 64 + /** A text segment. Start is inclusive, end is exclusive. Indices are for utf8-encoded strings. */ 65 + export interface ByteSlice { 66 + byteStart: number 67 + byteEnd: number 68 + [k: string]: unknown 69 + } 70 + 71 + export function isByteSlice(v: unknown): v is ByteSlice { 72 + return ( 73 + isObj(v) && 74 + hasProp(v, '$type') && 75 + v.$type === 'app.bsky.richtext.facet#byteSlice' 76 + ) 77 + } 78 + 79 + export function validateByteSlice(v: unknown): ValidationResult { 80 + return lexicons.validate('app.bsky.richtext.facet#byteSlice', v) 81 + }
+45
src/lexicon/types/app/bsky/unspecced/getPopular.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + import * as AppBskyFeedDefs from '../feed/defs' 11 + 12 + export interface QueryParams { 13 + includeNsfw: boolean 14 + limit: number 15 + cursor?: string 16 + } 17 + 18 + export type InputSchema = undefined 19 + 20 + export interface OutputSchema { 21 + cursor?: string 22 + feed: AppBskyFeedDefs.FeedViewPost[] 23 + [k: string]: unknown 24 + } 25 + 26 + export type HandlerInput = undefined 27 + 28 + export interface HandlerSuccess { 29 + encoding: 'application/json' 30 + body: OutputSchema 31 + } 32 + 33 + export interface HandlerError { 34 + status: number 35 + message?: string 36 + } 37 + 38 + export type HandlerOutput = HandlerError | HandlerSuccess 39 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 40 + auth: HA 41 + params: QueryParams 42 + input: HandlerInput 43 + req: express.Request 44 + res: express.Response 45 + }) => Promise<HandlerOutput> | HandlerOutput
+382
src/lexicon/types/com/atproto/admin/defs.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 5 + import { lexicons } from '../../../../lexicons' 6 + import { isObj, hasProp } from '../../../../util' 7 + import { CID } from 'multiformats/cid' 8 + import * as ComAtprotoRepoStrongRef from '../repo/strongRef' 9 + import * as ComAtprotoModerationDefs from '../moderation/defs' 10 + import * as ComAtprotoServerDefs from '../server/defs' 11 + import * as ComAtprotoLabelDefs from '../label/defs' 12 + 13 + export interface ActionView { 14 + id: number 15 + action: ActionType 16 + subject: 17 + | RepoRef 18 + | ComAtprotoRepoStrongRef.Main 19 + | { $type: string; [k: string]: unknown } 20 + subjectBlobCids: string[] 21 + createLabelVals?: string[] 22 + negateLabelVals?: string[] 23 + reason: string 24 + createdBy: string 25 + createdAt: string 26 + reversal?: ActionReversal 27 + resolvedReportIds: number[] 28 + [k: string]: unknown 29 + } 30 + 31 + export function isActionView(v: unknown): v is ActionView { 32 + return ( 33 + isObj(v) && 34 + hasProp(v, '$type') && 35 + v.$type === 'com.atproto.admin.defs#actionView' 36 + ) 37 + } 38 + 39 + export function validateActionView(v: unknown): ValidationResult { 40 + return lexicons.validate('com.atproto.admin.defs#actionView', v) 41 + } 42 + 43 + export interface ActionViewDetail { 44 + id: number 45 + action: ActionType 46 + subject: RepoView | RecordView | { $type: string; [k: string]: unknown } 47 + subjectBlobs: BlobView[] 48 + createLabelVals?: string[] 49 + negateLabelVals?: string[] 50 + reason: string 51 + createdBy: string 52 + createdAt: string 53 + reversal?: ActionReversal 54 + resolvedReports: ReportView[] 55 + [k: string]: unknown 56 + } 57 + 58 + export function isActionViewDetail(v: unknown): v is ActionViewDetail { 59 + return ( 60 + isObj(v) && 61 + hasProp(v, '$type') && 62 + v.$type === 'com.atproto.admin.defs#actionViewDetail' 63 + ) 64 + } 65 + 66 + export function validateActionViewDetail(v: unknown): ValidationResult { 67 + return lexicons.validate('com.atproto.admin.defs#actionViewDetail', v) 68 + } 69 + 70 + export interface ActionViewCurrent { 71 + id: number 72 + action: ActionType 73 + [k: string]: unknown 74 + } 75 + 76 + export function isActionViewCurrent(v: unknown): v is ActionViewCurrent { 77 + return ( 78 + isObj(v) && 79 + hasProp(v, '$type') && 80 + v.$type === 'com.atproto.admin.defs#actionViewCurrent' 81 + ) 82 + } 83 + 84 + export function validateActionViewCurrent(v: unknown): ValidationResult { 85 + return lexicons.validate('com.atproto.admin.defs#actionViewCurrent', v) 86 + } 87 + 88 + export interface ActionReversal { 89 + reason: string 90 + createdBy: string 91 + createdAt: string 92 + [k: string]: unknown 93 + } 94 + 95 + export function isActionReversal(v: unknown): v is ActionReversal { 96 + return ( 97 + isObj(v) && 98 + hasProp(v, '$type') && 99 + v.$type === 'com.atproto.admin.defs#actionReversal' 100 + ) 101 + } 102 + 103 + export function validateActionReversal(v: unknown): ValidationResult { 104 + return lexicons.validate('com.atproto.admin.defs#actionReversal', v) 105 + } 106 + 107 + export type ActionType = 108 + | 'lex:com.atproto.admin.defs#takedown' 109 + | 'lex:com.atproto.admin.defs#flag' 110 + | 'lex:com.atproto.admin.defs#acknowledge' 111 + | 'lex:com.atproto.admin.defs#escalate' 112 + | (string & {}) 113 + 114 + /** Moderation action type: Takedown. Indicates that content should not be served by the PDS. */ 115 + export const TAKEDOWN = 'com.atproto.admin.defs#takedown' 116 + /** Moderation action type: Flag. Indicates that the content was reviewed and considered to violate PDS rules, but may still be served. */ 117 + export const FLAG = 'com.atproto.admin.defs#flag' 118 + /** Moderation action type: Acknowledge. Indicates that the content was reviewed and not considered to violate PDS rules. */ 119 + export const ACKNOWLEDGE = 'com.atproto.admin.defs#acknowledge' 120 + /** Moderation action type: Escalate. Indicates that the content has been flagged for additional review. */ 121 + export const ESCALATE = 'com.atproto.admin.defs#escalate' 122 + 123 + export interface ReportView { 124 + id: number 125 + reasonType: ComAtprotoModerationDefs.ReasonType 126 + reason?: string 127 + subject: 128 + | RepoRef 129 + | ComAtprotoRepoStrongRef.Main 130 + | { $type: string; [k: string]: unknown } 131 + reportedBy: string 132 + createdAt: string 133 + resolvedByActionIds: number[] 134 + [k: string]: unknown 135 + } 136 + 137 + export function isReportView(v: unknown): v is ReportView { 138 + return ( 139 + isObj(v) && 140 + hasProp(v, '$type') && 141 + v.$type === 'com.atproto.admin.defs#reportView' 142 + ) 143 + } 144 + 145 + export function validateReportView(v: unknown): ValidationResult { 146 + return lexicons.validate('com.atproto.admin.defs#reportView', v) 147 + } 148 + 149 + export interface ReportViewDetail { 150 + id: number 151 + reasonType: ComAtprotoModerationDefs.ReasonType 152 + reason?: string 153 + subject: RepoView | RecordView | { $type: string; [k: string]: unknown } 154 + reportedBy: string 155 + createdAt: string 156 + resolvedByActions: ActionView[] 157 + [k: string]: unknown 158 + } 159 + 160 + export function isReportViewDetail(v: unknown): v is ReportViewDetail { 161 + return ( 162 + isObj(v) && 163 + hasProp(v, '$type') && 164 + v.$type === 'com.atproto.admin.defs#reportViewDetail' 165 + ) 166 + } 167 + 168 + export function validateReportViewDetail(v: unknown): ValidationResult { 169 + return lexicons.validate('com.atproto.admin.defs#reportViewDetail', v) 170 + } 171 + 172 + export interface RepoView { 173 + did: string 174 + handle: string 175 + email?: string 176 + relatedRecords: {}[] 177 + indexedAt: string 178 + moderation: Moderation 179 + invitedBy?: ComAtprotoServerDefs.InviteCode 180 + invitesDisabled?: boolean 181 + [k: string]: unknown 182 + } 183 + 184 + export function isRepoView(v: unknown): v is RepoView { 185 + return ( 186 + isObj(v) && 187 + hasProp(v, '$type') && 188 + v.$type === 'com.atproto.admin.defs#repoView' 189 + ) 190 + } 191 + 192 + export function validateRepoView(v: unknown): ValidationResult { 193 + return lexicons.validate('com.atproto.admin.defs#repoView', v) 194 + } 195 + 196 + export interface RepoViewDetail { 197 + did: string 198 + handle: string 199 + email?: string 200 + relatedRecords: {}[] 201 + indexedAt: string 202 + moderation: ModerationDetail 203 + labels?: ComAtprotoLabelDefs.Label[] 204 + invitedBy?: ComAtprotoServerDefs.InviteCode 205 + invites?: ComAtprotoServerDefs.InviteCode[] 206 + invitesDisabled?: boolean 207 + [k: string]: unknown 208 + } 209 + 210 + export function isRepoViewDetail(v: unknown): v is RepoViewDetail { 211 + return ( 212 + isObj(v) && 213 + hasProp(v, '$type') && 214 + v.$type === 'com.atproto.admin.defs#repoViewDetail' 215 + ) 216 + } 217 + 218 + export function validateRepoViewDetail(v: unknown): ValidationResult { 219 + return lexicons.validate('com.atproto.admin.defs#repoViewDetail', v) 220 + } 221 + 222 + export interface RepoRef { 223 + did: string 224 + [k: string]: unknown 225 + } 226 + 227 + export function isRepoRef(v: unknown): v is RepoRef { 228 + return ( 229 + isObj(v) && 230 + hasProp(v, '$type') && 231 + v.$type === 'com.atproto.admin.defs#repoRef' 232 + ) 233 + } 234 + 235 + export function validateRepoRef(v: unknown): ValidationResult { 236 + return lexicons.validate('com.atproto.admin.defs#repoRef', v) 237 + } 238 + 239 + export interface RecordView { 240 + uri: string 241 + cid: string 242 + value: {} 243 + blobCids: string[] 244 + indexedAt: string 245 + moderation: Moderation 246 + repo: RepoView 247 + [k: string]: unknown 248 + } 249 + 250 + export function isRecordView(v: unknown): v is RecordView { 251 + return ( 252 + isObj(v) && 253 + hasProp(v, '$type') && 254 + v.$type === 'com.atproto.admin.defs#recordView' 255 + ) 256 + } 257 + 258 + export function validateRecordView(v: unknown): ValidationResult { 259 + return lexicons.validate('com.atproto.admin.defs#recordView', v) 260 + } 261 + 262 + export interface RecordViewDetail { 263 + uri: string 264 + cid: string 265 + value: {} 266 + blobs: BlobView[] 267 + labels?: ComAtprotoLabelDefs.Label[] 268 + indexedAt: string 269 + moderation: ModerationDetail 270 + repo: RepoView 271 + [k: string]: unknown 272 + } 273 + 274 + export function isRecordViewDetail(v: unknown): v is RecordViewDetail { 275 + return ( 276 + isObj(v) && 277 + hasProp(v, '$type') && 278 + v.$type === 'com.atproto.admin.defs#recordViewDetail' 279 + ) 280 + } 281 + 282 + export function validateRecordViewDetail(v: unknown): ValidationResult { 283 + return lexicons.validate('com.atproto.admin.defs#recordViewDetail', v) 284 + } 285 + 286 + export interface Moderation { 287 + currentAction?: ActionViewCurrent 288 + [k: string]: unknown 289 + } 290 + 291 + export function isModeration(v: unknown): v is Moderation { 292 + return ( 293 + isObj(v) && 294 + hasProp(v, '$type') && 295 + v.$type === 'com.atproto.admin.defs#moderation' 296 + ) 297 + } 298 + 299 + export function validateModeration(v: unknown): ValidationResult { 300 + return lexicons.validate('com.atproto.admin.defs#moderation', v) 301 + } 302 + 303 + export interface ModerationDetail { 304 + currentAction?: ActionViewCurrent 305 + actions: ActionView[] 306 + reports: ReportView[] 307 + [k: string]: unknown 308 + } 309 + 310 + export function isModerationDetail(v: unknown): v is ModerationDetail { 311 + return ( 312 + isObj(v) && 313 + hasProp(v, '$type') && 314 + v.$type === 'com.atproto.admin.defs#moderationDetail' 315 + ) 316 + } 317 + 318 + export function validateModerationDetail(v: unknown): ValidationResult { 319 + return lexicons.validate('com.atproto.admin.defs#moderationDetail', v) 320 + } 321 + 322 + export interface BlobView { 323 + cid: string 324 + mimeType: string 325 + size: number 326 + createdAt: string 327 + details?: 328 + | ImageDetails 329 + | VideoDetails 330 + | { $type: string; [k: string]: unknown } 331 + moderation?: Moderation 332 + [k: string]: unknown 333 + } 334 + 335 + export function isBlobView(v: unknown): v is BlobView { 336 + return ( 337 + isObj(v) && 338 + hasProp(v, '$type') && 339 + v.$type === 'com.atproto.admin.defs#blobView' 340 + ) 341 + } 342 + 343 + export function validateBlobView(v: unknown): ValidationResult { 344 + return lexicons.validate('com.atproto.admin.defs#blobView', v) 345 + } 346 + 347 + export interface ImageDetails { 348 + width: number 349 + height: number 350 + [k: string]: unknown 351 + } 352 + 353 + export function isImageDetails(v: unknown): v is ImageDetails { 354 + return ( 355 + isObj(v) && 356 + hasProp(v, '$type') && 357 + v.$type === 'com.atproto.admin.defs#imageDetails' 358 + ) 359 + } 360 + 361 + export function validateImageDetails(v: unknown): ValidationResult { 362 + return lexicons.validate('com.atproto.admin.defs#imageDetails', v) 363 + } 364 + 365 + export interface VideoDetails { 366 + width: number 367 + height: number 368 + length: number 369 + [k: string]: unknown 370 + } 371 + 372 + export function isVideoDetails(v: unknown): v is VideoDetails { 373 + return ( 374 + isObj(v) && 375 + hasProp(v, '$type') && 376 + v.$type === 'com.atproto.admin.defs#videoDetails' 377 + ) 378 + } 379 + 380 + export function validateVideoDetails(v: unknown): ValidationResult { 381 + return lexicons.validate('com.atproto.admin.defs#videoDetails', v) 382 + }
+35
src/lexicon/types/com/atproto/admin/disableAccountInvites.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + 11 + export interface QueryParams {} 12 + 13 + export interface InputSchema { 14 + account: string 15 + [k: string]: unknown 16 + } 17 + 18 + export interface HandlerInput { 19 + encoding: 'application/json' 20 + body: InputSchema 21 + } 22 + 23 + export interface HandlerError { 24 + status: number 25 + message?: string 26 + } 27 + 28 + export type HandlerOutput = HandlerError | void 29 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 30 + auth: HA 31 + params: QueryParams 32 + input: HandlerInput 33 + req: express.Request 34 + res: express.Response 35 + }) => Promise<HandlerOutput> | HandlerOutput
+36
src/lexicon/types/com/atproto/admin/disableInviteCodes.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + 11 + export interface QueryParams {} 12 + 13 + export interface InputSchema { 14 + codes?: string[] 15 + accounts?: string[] 16 + [k: string]: unknown 17 + } 18 + 19 + export interface HandlerInput { 20 + encoding: 'application/json' 21 + body: InputSchema 22 + } 23 + 24 + export interface HandlerError { 25 + status: number 26 + message?: string 27 + } 28 + 29 + export type HandlerOutput = HandlerError | void 30 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 31 + auth: HA 32 + params: QueryParams 33 + input: HandlerInput 34 + req: express.Request 35 + res: express.Response 36 + }) => Promise<HandlerOutput> | HandlerOutput
+35
src/lexicon/types/com/atproto/admin/enableAccountInvites.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + 11 + export interface QueryParams {} 12 + 13 + export interface InputSchema { 14 + account: string 15 + [k: string]: unknown 16 + } 17 + 18 + export interface HandlerInput { 19 + encoding: 'application/json' 20 + body: InputSchema 21 + } 22 + 23 + export interface HandlerError { 24 + status: number 25 + message?: string 26 + } 27 + 28 + export type HandlerOutput = HandlerError | void 29 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 30 + auth: HA 31 + params: QueryParams 32 + input: HandlerInput 33 + req: express.Request 34 + res: express.Response 35 + }) => Promise<HandlerOutput> | HandlerOutput
+45
src/lexicon/types/com/atproto/admin/getInviteCodes.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + import * as ComAtprotoServerDefs from '../server/defs' 11 + 12 + export interface QueryParams { 13 + sort: 'recent' | 'usage' | (string & {}) 14 + limit: number 15 + cursor?: string 16 + } 17 + 18 + export type InputSchema = undefined 19 + 20 + export interface OutputSchema { 21 + cursor?: string 22 + codes: ComAtprotoServerDefs.InviteCode[] 23 + [k: string]: unknown 24 + } 25 + 26 + export type HandlerInput = undefined 27 + 28 + export interface HandlerSuccess { 29 + encoding: 'application/json' 30 + body: OutputSchema 31 + } 32 + 33 + export interface HandlerError { 34 + status: number 35 + message?: string 36 + } 37 + 38 + export type HandlerOutput = HandlerError | HandlerSuccess 39 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 40 + auth: HA 41 + params: QueryParams 42 + input: HandlerInput 43 + req: express.Request 44 + res: express.Response 45 + }) => Promise<HandlerOutput> | HandlerOutput
+37
src/lexicon/types/com/atproto/admin/getModerationAction.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + import * as ComAtprotoAdminDefs from './defs' 11 + 12 + export interface QueryParams { 13 + id: number 14 + } 15 + 16 + export type InputSchema = undefined 17 + export type OutputSchema = ComAtprotoAdminDefs.ActionViewDetail 18 + export type HandlerInput = undefined 19 + 20 + export interface HandlerSuccess { 21 + encoding: 'application/json' 22 + body: OutputSchema 23 + } 24 + 25 + export interface HandlerError { 26 + status: number 27 + message?: string 28 + } 29 + 30 + export type HandlerOutput = HandlerError | HandlerSuccess 31 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 32 + auth: HA 33 + params: QueryParams 34 + input: HandlerInput 35 + req: express.Request 36 + res: express.Response 37 + }) => Promise<HandlerOutput> | HandlerOutput
+45
src/lexicon/types/com/atproto/admin/getModerationActions.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + import * as ComAtprotoAdminDefs from './defs' 11 + 12 + export interface QueryParams { 13 + subject?: string 14 + limit: number 15 + cursor?: string 16 + } 17 + 18 + export type InputSchema = undefined 19 + 20 + export interface OutputSchema { 21 + cursor?: string 22 + actions: ComAtprotoAdminDefs.ActionView[] 23 + [k: string]: unknown 24 + } 25 + 26 + export type HandlerInput = undefined 27 + 28 + export interface HandlerSuccess { 29 + encoding: 'application/json' 30 + body: OutputSchema 31 + } 32 + 33 + export interface HandlerError { 34 + status: number 35 + message?: string 36 + } 37 + 38 + export type HandlerOutput = HandlerError | HandlerSuccess 39 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 40 + auth: HA 41 + params: QueryParams 42 + input: HandlerInput 43 + req: express.Request 44 + res: express.Response 45 + }) => Promise<HandlerOutput> | HandlerOutput
+37
src/lexicon/types/com/atproto/admin/getModerationReport.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + import * as ComAtprotoAdminDefs from './defs' 11 + 12 + export interface QueryParams { 13 + id: number 14 + } 15 + 16 + export type InputSchema = undefined 17 + export type OutputSchema = ComAtprotoAdminDefs.ReportViewDetail 18 + export type HandlerInput = undefined 19 + 20 + export interface HandlerSuccess { 21 + encoding: 'application/json' 22 + body: OutputSchema 23 + } 24 + 25 + export interface HandlerError { 26 + status: number 27 + message?: string 28 + } 29 + 30 + export type HandlerOutput = HandlerError | HandlerSuccess 31 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 32 + auth: HA 33 + params: QueryParams 34 + input: HandlerInput 35 + req: express.Request 36 + res: express.Response 37 + }) => Promise<HandlerOutput> | HandlerOutput
+52
src/lexicon/types/com/atproto/admin/getModerationReports.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + import * as ComAtprotoAdminDefs from './defs' 11 + 12 + export interface QueryParams { 13 + subject?: string 14 + resolved?: boolean 15 + actionType?: 16 + | 'com.atproto.admin.defs#takedown' 17 + | 'com.atproto.admin.defs#flag' 18 + | 'com.atproto.admin.defs#acknowledge' 19 + | 'com.atproto.admin.defs#escalate' 20 + | (string & {}) 21 + limit: number 22 + cursor?: string 23 + } 24 + 25 + export type InputSchema = undefined 26 + 27 + export interface OutputSchema { 28 + cursor?: string 29 + reports: ComAtprotoAdminDefs.ReportView[] 30 + [k: string]: unknown 31 + } 32 + 33 + export type HandlerInput = undefined 34 + 35 + export interface HandlerSuccess { 36 + encoding: 'application/json' 37 + body: OutputSchema 38 + } 39 + 40 + export interface HandlerError { 41 + status: number 42 + message?: string 43 + } 44 + 45 + export type HandlerOutput = HandlerError | HandlerSuccess 46 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 47 + auth: HA 48 + params: QueryParams 49 + input: HandlerInput 50 + req: express.Request 51 + res: express.Response 52 + }) => Promise<HandlerOutput> | HandlerOutput
+38
src/lexicon/types/com/atproto/admin/getRecord.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + import * as ComAtprotoAdminDefs from './defs' 11 + 12 + export interface QueryParams { 13 + uri: string 14 + cid?: string 15 + } 16 + 17 + export type InputSchema = undefined 18 + export type OutputSchema = ComAtprotoAdminDefs.RecordViewDetail 19 + export type HandlerInput = undefined 20 + 21 + export interface HandlerSuccess { 22 + encoding: 'application/json' 23 + body: OutputSchema 24 + } 25 + 26 + export interface HandlerError { 27 + status: number 28 + message?: string 29 + } 30 + 31 + export type HandlerOutput = HandlerError | HandlerSuccess 32 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 33 + auth: HA 34 + params: QueryParams 35 + input: HandlerInput 36 + req: express.Request 37 + res: express.Response 38 + }) => Promise<HandlerOutput> | HandlerOutput
+37
src/lexicon/types/com/atproto/admin/getRepo.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + import * as ComAtprotoAdminDefs from './defs' 11 + 12 + export interface QueryParams { 13 + did: string 14 + } 15 + 16 + export type InputSchema = undefined 17 + export type OutputSchema = ComAtprotoAdminDefs.RepoViewDetail 18 + export type HandlerInput = undefined 19 + 20 + export interface HandlerSuccess { 21 + encoding: 'application/json' 22 + body: OutputSchema 23 + } 24 + 25 + export interface HandlerError { 26 + status: number 27 + message?: string 28 + } 29 + 30 + export type HandlerOutput = HandlerError | HandlerSuccess 31 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 32 + auth: HA 33 + params: QueryParams 34 + input: HandlerInput 35 + req: express.Request 36 + res: express.Response 37 + }) => Promise<HandlerOutput> | HandlerOutput
+45
src/lexicon/types/com/atproto/admin/resolveModerationReports.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + import * as ComAtprotoAdminDefs from './defs' 11 + 12 + export interface QueryParams {} 13 + 14 + export interface InputSchema { 15 + actionId: number 16 + reportIds: number[] 17 + createdBy: string 18 + [k: string]: unknown 19 + } 20 + 21 + export type OutputSchema = ComAtprotoAdminDefs.ActionView 22 + 23 + export interface HandlerInput { 24 + encoding: 'application/json' 25 + body: InputSchema 26 + } 27 + 28 + export interface HandlerSuccess { 29 + encoding: 'application/json' 30 + body: OutputSchema 31 + } 32 + 33 + export interface HandlerError { 34 + status: number 35 + message?: string 36 + } 37 + 38 + export type HandlerOutput = HandlerError | HandlerSuccess 39 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 40 + auth: HA 41 + params: QueryParams 42 + input: HandlerInput 43 + req: express.Request 44 + res: express.Response 45 + }) => Promise<HandlerOutput> | HandlerOutput
+45
src/lexicon/types/com/atproto/admin/reverseModerationAction.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + import * as ComAtprotoAdminDefs from './defs' 11 + 12 + export interface QueryParams {} 13 + 14 + export interface InputSchema { 15 + id: number 16 + reason: string 17 + createdBy: string 18 + [k: string]: unknown 19 + } 20 + 21 + export type OutputSchema = ComAtprotoAdminDefs.ActionView 22 + 23 + export interface HandlerInput { 24 + encoding: 'application/json' 25 + body: InputSchema 26 + } 27 + 28 + export interface HandlerSuccess { 29 + encoding: 'application/json' 30 + body: OutputSchema 31 + } 32 + 33 + export interface HandlerError { 34 + status: number 35 + message?: string 36 + } 37 + 38 + export type HandlerOutput = HandlerError | HandlerSuccess 39 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 40 + auth: HA 41 + params: QueryParams 42 + input: HandlerInput 43 + req: express.Request 44 + res: express.Response 45 + }) => Promise<HandlerOutput> | HandlerOutput
+46
src/lexicon/types/com/atproto/admin/searchRepos.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + import * as ComAtprotoAdminDefs from './defs' 11 + 12 + export interface QueryParams { 13 + term?: string 14 + invitedBy?: string 15 + limit: number 16 + cursor?: string 17 + } 18 + 19 + export type InputSchema = undefined 20 + 21 + export interface OutputSchema { 22 + cursor?: string 23 + repos: ComAtprotoAdminDefs.RepoView[] 24 + [k: string]: unknown 25 + } 26 + 27 + export type HandlerInput = undefined 28 + 29 + export interface HandlerSuccess { 30 + encoding: 'application/json' 31 + body: OutputSchema 32 + } 33 + 34 + export interface HandlerError { 35 + status: number 36 + message?: string 37 + } 38 + 39 + export type HandlerOutput = HandlerError | HandlerSuccess 40 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 41 + auth: HA 42 + params: QueryParams 43 + input: HandlerInput 44 + req: express.Request 45 + res: express.Response 46 + }) => Promise<HandlerOutput> | HandlerOutput
+58
src/lexicon/types/com/atproto/admin/takeModerationAction.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + import * as ComAtprotoAdminDefs from './defs' 11 + import * as ComAtprotoRepoStrongRef from '../repo/strongRef' 12 + 13 + export interface QueryParams {} 14 + 15 + export interface InputSchema { 16 + action: 17 + | 'com.atproto.admin.defs#takedown' 18 + | 'com.atproto.admin.defs#flag' 19 + | 'com.atproto.admin.defs#acknowledge' 20 + | (string & {}) 21 + subject: 22 + | ComAtprotoAdminDefs.RepoRef 23 + | ComAtprotoRepoStrongRef.Main 24 + | { $type: string; [k: string]: unknown } 25 + subjectBlobCids?: string[] 26 + createLabelVals?: string[] 27 + negateLabelVals?: string[] 28 + reason: string 29 + createdBy: string 30 + [k: string]: unknown 31 + } 32 + 33 + export type OutputSchema = ComAtprotoAdminDefs.ActionView 34 + 35 + export interface HandlerInput { 36 + encoding: 'application/json' 37 + body: InputSchema 38 + } 39 + 40 + export interface HandlerSuccess { 41 + encoding: 'application/json' 42 + body: OutputSchema 43 + } 44 + 45 + export interface HandlerError { 46 + status: number 47 + message?: string 48 + error?: 'SubjectHasAction' 49 + } 50 + 51 + export type HandlerOutput = HandlerError | HandlerSuccess 52 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 53 + auth: HA 54 + params: QueryParams 55 + input: HandlerInput 56 + req: express.Request 57 + res: express.Response 58 + }) => Promise<HandlerOutput> | HandlerOutput
+37
src/lexicon/types/com/atproto/admin/updateAccountEmail.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + 11 + export interface QueryParams {} 12 + 13 + export interface InputSchema { 14 + /** The handle or DID of the repo. */ 15 + account: string 16 + email: string 17 + [k: string]: unknown 18 + } 19 + 20 + export interface HandlerInput { 21 + encoding: 'application/json' 22 + body: InputSchema 23 + } 24 + 25 + export interface HandlerError { 26 + status: number 27 + message?: string 28 + } 29 + 30 + export type HandlerOutput = HandlerError | void 31 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 32 + auth: HA 33 + params: QueryParams 34 + input: HandlerInput 35 + req: express.Request 36 + res: express.Response 37 + }) => Promise<HandlerOutput> | HandlerOutput
+36
src/lexicon/types/com/atproto/admin/updateAccountHandle.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + 11 + export interface QueryParams {} 12 + 13 + export interface InputSchema { 14 + did: string 15 + handle: string 16 + [k: string]: unknown 17 + } 18 + 19 + export interface HandlerInput { 20 + encoding: 'application/json' 21 + body: InputSchema 22 + } 23 + 24 + export interface HandlerError { 25 + status: number 26 + message?: string 27 + } 28 + 29 + export type HandlerOutput = HandlerError | void 30 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 31 + auth: HA 32 + params: QueryParams 33 + input: HandlerInput 34 + req: express.Request 35 + res: express.Response 36 + }) => Promise<HandlerOutput> | HandlerOutput
+42
src/lexicon/types/com/atproto/identity/resolveHandle.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + 11 + export interface QueryParams { 12 + /** The handle to resolve. If not supplied, will resolve the host's own handle. */ 13 + handle?: string 14 + } 15 + 16 + export type InputSchema = undefined 17 + 18 + export interface OutputSchema { 19 + did: string 20 + [k: string]: unknown 21 + } 22 + 23 + export type HandlerInput = undefined 24 + 25 + export interface HandlerSuccess { 26 + encoding: 'application/json' 27 + body: OutputSchema 28 + } 29 + 30 + export interface HandlerError { 31 + status: number 32 + message?: string 33 + } 34 + 35 + export type HandlerOutput = HandlerError | HandlerSuccess 36 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 37 + auth: HA 38 + params: QueryParams 39 + input: HandlerInput 40 + req: express.Request 41 + res: express.Response 42 + }) => Promise<HandlerOutput> | HandlerOutput
+35
src/lexicon/types/com/atproto/identity/updateHandle.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + 11 + export interface QueryParams {} 12 + 13 + export interface InputSchema { 14 + handle: string 15 + [k: string]: unknown 16 + } 17 + 18 + export interface HandlerInput { 19 + encoding: 'application/json' 20 + body: InputSchema 21 + } 22 + 23 + export interface HandlerError { 24 + status: number 25 + message?: string 26 + } 27 + 28 + export type HandlerOutput = HandlerError | void 29 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 30 + auth: HA 31 + params: QueryParams 32 + input: HandlerInput 33 + req: express.Request 34 + res: express.Response 35 + }) => Promise<HandlerOutput> | HandlerOutput
+36
src/lexicon/types/com/atproto/label/defs.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 5 + import { lexicons } from '../../../../lexicons' 6 + import { isObj, hasProp } from '../../../../util' 7 + import { CID } from 'multiformats/cid' 8 + 9 + /** Metadata tag on an atproto resource (eg, repo or record) */ 10 + export interface Label { 11 + /** DID of the actor who created this label */ 12 + src: string 13 + /** AT URI of the record, repository (account), or other resource which this label applies to */ 14 + uri: string 15 + /** optionally, CID specifying the specific version of 'uri' resource this label applies to */ 16 + cid?: string 17 + /** the short string name of the value or type of this label */ 18 + val: string 19 + /** if true, this is a negation label, overwriting a previous label */ 20 + neg?: boolean 21 + /** timestamp when this label was created */ 22 + cts: string 23 + [k: string]: unknown 24 + } 25 + 26 + export function isLabel(v: unknown): v is Label { 27 + return ( 28 + isObj(v) && 29 + hasProp(v, '$type') && 30 + v.$type === 'com.atproto.label.defs#label' 31 + ) 32 + } 33 + 34 + export function validateLabel(v: unknown): ValidationResult { 35 + return lexicons.validate('com.atproto.label.defs#label', v) 36 + }
+48
src/lexicon/types/com/atproto/label/queryLabels.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + import * as ComAtprotoLabelDefs from './defs' 11 + 12 + export interface QueryParams { 13 + /** List of AT URI patterns to match (boolean 'OR'). Each may be a prefix (ending with '*'; will match inclusive of the string leading to '*'), or a full URI */ 14 + uriPatterns: string[] 15 + /** Optional list of label sources (DIDs) to filter on */ 16 + sources?: string[] 17 + limit: number 18 + cursor?: string 19 + } 20 + 21 + export type InputSchema = undefined 22 + 23 + export interface OutputSchema { 24 + cursor?: string 25 + labels: ComAtprotoLabelDefs.Label[] 26 + [k: string]: unknown 27 + } 28 + 29 + export type HandlerInput = undefined 30 + 31 + export interface HandlerSuccess { 32 + encoding: 'application/json' 33 + body: OutputSchema 34 + } 35 + 36 + export interface HandlerError { 37 + status: number 38 + message?: string 39 + } 40 + 41 + export type HandlerOutput = HandlerError | HandlerSuccess 42 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 43 + auth: HA 44 + params: QueryParams 45 + input: HandlerInput 46 + req: express.Request 47 + res: express.Response 48 + }) => Promise<HandlerOutput> | HandlerOutput
+64
src/lexicon/types/com/atproto/label/subscribeLabels.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 5 + import { lexicons } from '../../../../lexicons' 6 + import { isObj, hasProp } from '../../../../util' 7 + import { CID } from 'multiformats/cid' 8 + import { HandlerAuth, ErrorFrame } from '@atproto/xrpc-server' 9 + import { IncomingMessage } from 'http' 10 + import * as ComAtprotoLabelDefs from './defs' 11 + 12 + export interface QueryParams { 13 + /** The last known event to backfill from. */ 14 + cursor?: number 15 + } 16 + 17 + export type OutputSchema = 18 + | Labels 19 + | Info 20 + | { $type: string; [k: string]: unknown } 21 + export type HandlerError = ErrorFrame<'FutureCursor'> 22 + export type HandlerOutput = HandlerError | OutputSchema 23 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 24 + auth: HA 25 + params: QueryParams 26 + req: IncomingMessage 27 + signal: AbortSignal 28 + }) => AsyncIterable<HandlerOutput> 29 + 30 + export interface Labels { 31 + seq: number 32 + labels: ComAtprotoLabelDefs.Label[] 33 + [k: string]: unknown 34 + } 35 + 36 + export function isLabels(v: unknown): v is Labels { 37 + return ( 38 + isObj(v) && 39 + hasProp(v, '$type') && 40 + v.$type === 'com.atproto.label.subscribeLabels#labels' 41 + ) 42 + } 43 + 44 + export function validateLabels(v: unknown): ValidationResult { 45 + return lexicons.validate('com.atproto.label.subscribeLabels#labels', v) 46 + } 47 + 48 + export interface Info { 49 + name: 'OutdatedCursor' | (string & {}) 50 + message?: string 51 + [k: string]: unknown 52 + } 53 + 54 + export function isInfo(v: unknown): v is Info { 55 + return ( 56 + isObj(v) && 57 + hasProp(v, '$type') && 58 + v.$type === 'com.atproto.label.subscribeLabels#info' 59 + ) 60 + } 61 + 62 + export function validateInfo(v: unknown): ValidationResult { 63 + return lexicons.validate('com.atproto.label.subscribeLabels#info', v) 64 + }
+61
src/lexicon/types/com/atproto/moderation/createReport.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + import * as ComAtprotoModerationDefs from './defs' 11 + import * as ComAtprotoAdminDefs from '../admin/defs' 12 + import * as ComAtprotoRepoStrongRef from '../repo/strongRef' 13 + 14 + export interface QueryParams {} 15 + 16 + export interface InputSchema { 17 + reasonType: ComAtprotoModerationDefs.ReasonType 18 + reason?: string 19 + subject: 20 + | ComAtprotoAdminDefs.RepoRef 21 + | ComAtprotoRepoStrongRef.Main 22 + | { $type: string; [k: string]: unknown } 23 + [k: string]: unknown 24 + } 25 + 26 + export interface OutputSchema { 27 + id: number 28 + reasonType: ComAtprotoModerationDefs.ReasonType 29 + reason?: string 30 + subject: 31 + | ComAtprotoAdminDefs.RepoRef 32 + | ComAtprotoRepoStrongRef.Main 33 + | { $type: string; [k: string]: unknown } 34 + reportedBy: string 35 + createdAt: string 36 + [k: string]: unknown 37 + } 38 + 39 + export interface HandlerInput { 40 + encoding: 'application/json' 41 + body: InputSchema 42 + } 43 + 44 + export interface HandlerSuccess { 45 + encoding: 'application/json' 46 + body: OutputSchema 47 + } 48 + 49 + export interface HandlerError { 50 + status: number 51 + message?: string 52 + } 53 + 54 + export type HandlerOutput = HandlerError | HandlerSuccess 55 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 56 + auth: HA 57 + params: QueryParams 58 + input: HandlerInput 59 + req: express.Request 60 + res: express.Response 61 + }) => Promise<HandlerOutput> | HandlerOutput
+29
src/lexicon/types/com/atproto/moderation/defs.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 5 + import { lexicons } from '../../../../lexicons' 6 + import { isObj, hasProp } from '../../../../util' 7 + import { CID } from 'multiformats/cid' 8 + 9 + export type ReasonType = 10 + | 'com.atproto.moderation.defs#reasonSpam' 11 + | 'com.atproto.moderation.defs#reasonViolation' 12 + | 'com.atproto.moderation.defs#reasonMisleading' 13 + | 'com.atproto.moderation.defs#reasonSexual' 14 + | 'com.atproto.moderation.defs#reasonRude' 15 + | 'com.atproto.moderation.defs#reasonOther' 16 + | (string & {}) 17 + 18 + /** Spam: frequent unwanted promotion, replies, mentions */ 19 + export const REASONSPAM = 'com.atproto.moderation.defs#reasonSpam' 20 + /** Direct violation of server rules, laws, terms of service */ 21 + export const REASONVIOLATION = 'com.atproto.moderation.defs#reasonViolation' 22 + /** Misleading identity, affiliation, or content */ 23 + export const REASONMISLEADING = 'com.atproto.moderation.defs#reasonMisleading' 24 + /** Unwanted or mis-labeled sexual content */ 25 + export const REASONSEXUAL = 'com.atproto.moderation.defs#reasonSexual' 26 + /** Rude, harassing, explicit, or otherwise unwelcoming behavior */ 27 + export const REASONRUDE = 'com.atproto.moderation.defs#reasonRude' 28 + /** Other: reports not falling under another report category */ 29 + export const REASONOTHER = 'com.atproto.moderation.defs#reasonOther'
+100
src/lexicon/types/com/atproto/repo/applyWrites.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + 11 + export interface QueryParams {} 12 + 13 + export interface InputSchema { 14 + /** The handle or DID of the repo. */ 15 + repo: string 16 + /** Validate the records? */ 17 + validate: boolean 18 + writes: (Create | Update | Delete)[] 19 + swapCommit?: string 20 + [k: string]: unknown 21 + } 22 + 23 + export interface HandlerInput { 24 + encoding: 'application/json' 25 + body: InputSchema 26 + } 27 + 28 + export interface HandlerError { 29 + status: number 30 + message?: string 31 + error?: 'InvalidSwap' 32 + } 33 + 34 + export type HandlerOutput = HandlerError | void 35 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 36 + auth: HA 37 + params: QueryParams 38 + input: HandlerInput 39 + req: express.Request 40 + res: express.Response 41 + }) => Promise<HandlerOutput> | HandlerOutput 42 + 43 + /** Create a new record. */ 44 + export interface Create { 45 + collection: string 46 + rkey?: string 47 + value: {} 48 + [k: string]: unknown 49 + } 50 + 51 + export function isCreate(v: unknown): v is Create { 52 + return ( 53 + isObj(v) && 54 + hasProp(v, '$type') && 55 + v.$type === 'com.atproto.repo.applyWrites#create' 56 + ) 57 + } 58 + 59 + export function validateCreate(v: unknown): ValidationResult { 60 + return lexicons.validate('com.atproto.repo.applyWrites#create', v) 61 + } 62 + 63 + /** Update an existing record. */ 64 + export interface Update { 65 + collection: string 66 + rkey: string 67 + value: {} 68 + [k: string]: unknown 69 + } 70 + 71 + export function isUpdate(v: unknown): v is Update { 72 + return ( 73 + isObj(v) && 74 + hasProp(v, '$type') && 75 + v.$type === 'com.atproto.repo.applyWrites#update' 76 + ) 77 + } 78 + 79 + export function validateUpdate(v: unknown): ValidationResult { 80 + return lexicons.validate('com.atproto.repo.applyWrites#update', v) 81 + } 82 + 83 + /** Delete an existing record. */ 84 + export interface Delete { 85 + collection: string 86 + rkey: string 87 + [k: string]: unknown 88 + } 89 + 90 + export function isDelete(v: unknown): v is Delete { 91 + return ( 92 + isObj(v) && 93 + hasProp(v, '$type') && 94 + v.$type === 'com.atproto.repo.applyWrites#delete' 95 + ) 96 + } 97 + 98 + export function validateDelete(v: unknown): ValidationResult { 99 + return lexicons.validate('com.atproto.repo.applyWrites#delete', v) 100 + }
+58
src/lexicon/types/com/atproto/repo/createRecord.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + 11 + export interface QueryParams {} 12 + 13 + export interface InputSchema { 14 + /** The handle or DID of the repo. */ 15 + repo: string 16 + /** The NSID of the record collection. */ 17 + collection: string 18 + /** The key of the record. */ 19 + rkey?: string 20 + /** Validate the record? */ 21 + validate: boolean 22 + /** The record to create. */ 23 + record: {} 24 + /** Compare and swap with the previous commit by cid. */ 25 + swapCommit?: string 26 + [k: string]: unknown 27 + } 28 + 29 + export interface OutputSchema { 30 + uri: string 31 + cid: string 32 + [k: string]: unknown 33 + } 34 + 35 + export interface HandlerInput { 36 + encoding: 'application/json' 37 + body: InputSchema 38 + } 39 + 40 + export interface HandlerSuccess { 41 + encoding: 'application/json' 42 + body: OutputSchema 43 + } 44 + 45 + export interface HandlerError { 46 + status: number 47 + message?: string 48 + error?: 'InvalidSwap' 49 + } 50 + 51 + export type HandlerOutput = HandlerError | HandlerSuccess 52 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 53 + auth: HA 54 + params: QueryParams 55 + input: HandlerInput 56 + req: express.Request 57 + res: express.Response 58 + }) => Promise<HandlerOutput> | HandlerOutput
+45
src/lexicon/types/com/atproto/repo/deleteRecord.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + 11 + export interface QueryParams {} 12 + 13 + export interface InputSchema { 14 + /** The handle or DID of the repo. */ 15 + repo: string 16 + /** The NSID of the record collection. */ 17 + collection: string 18 + /** The key of the record. */ 19 + rkey: string 20 + /** Compare and swap with the previous record by cid. */ 21 + swapRecord?: string 22 + /** Compare and swap with the previous commit by cid. */ 23 + swapCommit?: string 24 + [k: string]: unknown 25 + } 26 + 27 + export interface HandlerInput { 28 + encoding: 'application/json' 29 + body: InputSchema 30 + } 31 + 32 + export interface HandlerError { 33 + status: number 34 + message?: string 35 + error?: 'InvalidSwap' 36 + } 37 + 38 + export type HandlerOutput = HandlerError | void 39 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 40 + auth: HA 41 + params: QueryParams 42 + input: HandlerInput 43 + req: express.Request 44 + res: express.Response 45 + }) => Promise<HandlerOutput> | HandlerOutput
+46
src/lexicon/types/com/atproto/repo/describeRepo.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + 11 + export interface QueryParams { 12 + /** The handle or DID of the repo. */ 13 + repo: string 14 + } 15 + 16 + export type InputSchema = undefined 17 + 18 + export interface OutputSchema { 19 + handle: string 20 + did: string 21 + didDoc: {} 22 + collections: string[] 23 + handleIsCorrect: boolean 24 + [k: string]: unknown 25 + } 26 + 27 + export type HandlerInput = undefined 28 + 29 + export interface HandlerSuccess { 30 + encoding: 'application/json' 31 + body: OutputSchema 32 + } 33 + 34 + export interface HandlerError { 35 + status: number 36 + message?: string 37 + } 38 + 39 + export type HandlerOutput = HandlerError | HandlerSuccess 40 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 41 + auth: HA 42 + params: QueryParams 43 + input: HandlerInput 44 + req: express.Request 45 + res: express.Response 46 + }) => Promise<HandlerOutput> | HandlerOutput
+50
src/lexicon/types/com/atproto/repo/getRecord.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + 11 + export interface QueryParams { 12 + /** The handle or DID of the repo. */ 13 + repo: string 14 + /** The NSID of the record collection. */ 15 + collection: string 16 + /** The key of the record. */ 17 + rkey: string 18 + /** The CID of the version of the record. If not specified, then return the most recent version. */ 19 + cid?: string 20 + } 21 + 22 + export type InputSchema = undefined 23 + 24 + export interface OutputSchema { 25 + uri: string 26 + cid?: string 27 + value: {} 28 + [k: string]: unknown 29 + } 30 + 31 + export type HandlerInput = undefined 32 + 33 + export interface HandlerSuccess { 34 + encoding: 'application/json' 35 + body: OutputSchema 36 + } 37 + 38 + export interface HandlerError { 39 + status: number 40 + message?: string 41 + } 42 + 43 + export type HandlerOutput = HandlerError | HandlerSuccess 44 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 45 + auth: HA 46 + params: QueryParams 47 + input: HandlerInput 48 + req: express.Request 49 + res: express.Response 50 + }) => Promise<HandlerOutput> | HandlerOutput
+73
src/lexicon/types/com/atproto/repo/listRecords.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + 11 + export interface QueryParams { 12 + /** The handle or DID of the repo. */ 13 + repo: string 14 + /** The NSID of the record type. */ 15 + collection: string 16 + /** The number of records to return. */ 17 + limit: number 18 + cursor?: string 19 + /** DEPRECATED: The lowest sort-ordered rkey to start from (exclusive) */ 20 + rkeyStart?: string 21 + /** DEPRECATED: The highest sort-ordered rkey to stop at (exclusive) */ 22 + rkeyEnd?: string 23 + /** Reverse the order of the returned records? */ 24 + reverse?: boolean 25 + } 26 + 27 + export type InputSchema = undefined 28 + 29 + export interface OutputSchema { 30 + cursor?: string 31 + records: Record[] 32 + [k: string]: unknown 33 + } 34 + 35 + export type HandlerInput = undefined 36 + 37 + export interface HandlerSuccess { 38 + encoding: 'application/json' 39 + body: OutputSchema 40 + } 41 + 42 + export interface HandlerError { 43 + status: number 44 + message?: string 45 + } 46 + 47 + export type HandlerOutput = HandlerError | HandlerSuccess 48 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 49 + auth: HA 50 + params: QueryParams 51 + input: HandlerInput 52 + req: express.Request 53 + res: express.Response 54 + }) => Promise<HandlerOutput> | HandlerOutput 55 + 56 + export interface Record { 57 + uri: string 58 + cid: string 59 + value: {} 60 + [k: string]: unknown 61 + } 62 + 63 + export function isRecord(v: unknown): v is Record { 64 + return ( 65 + isObj(v) && 66 + hasProp(v, '$type') && 67 + v.$type === 'com.atproto.repo.listRecords#record' 68 + ) 69 + } 70 + 71 + export function validateRecord(v: unknown): ValidationResult { 72 + return lexicons.validate('com.atproto.repo.listRecords#record', v) 73 + }
+60
src/lexicon/types/com/atproto/repo/putRecord.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + 11 + export interface QueryParams {} 12 + 13 + export interface InputSchema { 14 + /** The handle or DID of the repo. */ 15 + repo: string 16 + /** The NSID of the record collection. */ 17 + collection: string 18 + /** The key of the record. */ 19 + rkey: string 20 + /** Validate the record? */ 21 + validate: boolean 22 + /** The record to write. */ 23 + record: {} 24 + /** Compare and swap with the previous record by cid. */ 25 + swapRecord?: string | null 26 + /** Compare and swap with the previous commit by cid. */ 27 + swapCommit?: string 28 + [k: string]: unknown 29 + } 30 + 31 + export interface OutputSchema { 32 + uri: string 33 + cid: string 34 + [k: string]: unknown 35 + } 36 + 37 + export interface HandlerInput { 38 + encoding: 'application/json' 39 + body: InputSchema 40 + } 41 + 42 + export interface HandlerSuccess { 43 + encoding: 'application/json' 44 + body: OutputSchema 45 + } 46 + 47 + export interface HandlerError { 48 + status: number 49 + message?: string 50 + error?: 'InvalidSwap' 51 + } 52 + 53 + export type HandlerOutput = HandlerError | HandlerSuccess 54 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 55 + auth: HA 56 + params: QueryParams 57 + input: HandlerInput 58 + req: express.Request 59 + res: express.Response 60 + }) => Promise<HandlerOutput> | HandlerOutput
+39
src/lexicon/types/com/atproto/repo/rebaseRepo.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + 11 + export interface QueryParams {} 12 + 13 + export interface InputSchema { 14 + /** The handle or DID of the repo. */ 15 + repo: string 16 + /** Compare and swap with the previous commit by cid. */ 17 + swapCommit?: string 18 + [k: string]: unknown 19 + } 20 + 21 + export interface HandlerInput { 22 + encoding: 'application/json' 23 + body: InputSchema 24 + } 25 + 26 + export interface HandlerError { 27 + status: number 28 + message?: string 29 + error?: 'InvalidSwap' 30 + } 31 + 32 + export type HandlerOutput = HandlerError | void 33 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 34 + auth: HA 35 + params: QueryParams 36 + input: HandlerInput 37 + req: express.Request 38 + res: express.Response 39 + }) => Promise<HandlerOutput> | HandlerOutput
+26
src/lexicon/types/com/atproto/repo/strongRef.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 5 + import { lexicons } from '../../../../lexicons' 6 + import { isObj, hasProp } from '../../../../util' 7 + import { CID } from 'multiformats/cid' 8 + 9 + export interface Main { 10 + uri: string 11 + cid: string 12 + [k: string]: unknown 13 + } 14 + 15 + export function isMain(v: unknown): v is Main { 16 + return ( 17 + isObj(v) && 18 + hasProp(v, '$type') && 19 + (v.$type === 'com.atproto.repo.strongRef#main' || 20 + v.$type === 'com.atproto.repo.strongRef') 21 + ) 22 + } 23 + 24 + export function validateMain(v: unknown): ValidationResult { 25 + return lexicons.validate('com.atproto.repo.strongRef#main', v) 26 + }
+43
src/lexicon/types/com/atproto/repo/uploadBlob.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import stream from 'stream' 6 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 7 + import { lexicons } from '../../../../lexicons' 8 + import { isObj, hasProp } from '../../../../util' 9 + import { CID } from 'multiformats/cid' 10 + import { HandlerAuth } from '@atproto/xrpc-server' 11 + 12 + export interface QueryParams {} 13 + 14 + export type InputSchema = string | Uint8Array 15 + 16 + export interface OutputSchema { 17 + blob: BlobRef 18 + [k: string]: unknown 19 + } 20 + 21 + export interface HandlerInput { 22 + encoding: '*/*' 23 + body: stream.Readable 24 + } 25 + 26 + export interface HandlerSuccess { 27 + encoding: 'application/json' 28 + body: OutputSchema 29 + } 30 + 31 + export interface HandlerError { 32 + status: number 33 + message?: string 34 + } 35 + 36 + export type HandlerOutput = HandlerError | HandlerSuccess 37 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 38 + auth: HA 39 + params: QueryParams 40 + input: HandlerInput 41 + req: express.Request 42 + res: express.Response 43 + }) => Promise<HandlerOutput> | HandlerOutput
+61
src/lexicon/types/com/atproto/server/createAccount.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + 11 + export interface QueryParams {} 12 + 13 + export interface InputSchema { 14 + email: string 15 + handle: string 16 + did?: string 17 + inviteCode?: string 18 + password: string 19 + recoveryKey?: string 20 + [k: string]: unknown 21 + } 22 + 23 + export interface OutputSchema { 24 + accessJwt: string 25 + refreshJwt: string 26 + handle: string 27 + did: string 28 + [k: string]: unknown 29 + } 30 + 31 + export interface HandlerInput { 32 + encoding: 'application/json' 33 + body: InputSchema 34 + } 35 + 36 + export interface HandlerSuccess { 37 + encoding: 'application/json' 38 + body: OutputSchema 39 + } 40 + 41 + export interface HandlerError { 42 + status: number 43 + message?: string 44 + error?: 45 + | 'InvalidHandle' 46 + | 'InvalidPassword' 47 + | 'InvalidInviteCode' 48 + | 'HandleNotAvailable' 49 + | 'UnsupportedDomain' 50 + | 'UnresolvableDid' 51 + | 'IncompatibleDidDoc' 52 + } 53 + 54 + export type HandlerOutput = HandlerError | HandlerSuccess 55 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 56 + auth: HA 57 + params: QueryParams 58 + input: HandlerInput 59 + req: express.Request 60 + res: express.Response 61 + }) => Promise<HandlerOutput> | HandlerOutput
+65
src/lexicon/types/com/atproto/server/createAppPassword.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + 11 + export interface QueryParams {} 12 + 13 + export interface InputSchema { 14 + name: string 15 + [k: string]: unknown 16 + } 17 + 18 + export type OutputSchema = AppPassword 19 + 20 + export interface HandlerInput { 21 + encoding: 'application/json' 22 + body: InputSchema 23 + } 24 + 25 + export interface HandlerSuccess { 26 + encoding: 'application/json' 27 + body: OutputSchema 28 + } 29 + 30 + export interface HandlerError { 31 + status: number 32 + message?: string 33 + error?: 'AccountTakedown' 34 + } 35 + 36 + export type HandlerOutput = HandlerError | HandlerSuccess 37 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 38 + auth: HA 39 + params: QueryParams 40 + input: HandlerInput 41 + req: express.Request 42 + res: express.Response 43 + }) => Promise<HandlerOutput> | HandlerOutput 44 + 45 + export interface AppPassword { 46 + name: string 47 + password: string 48 + createdAt: string 49 + [k: string]: unknown 50 + } 51 + 52 + export function isAppPassword(v: unknown): v is AppPassword { 53 + return ( 54 + isObj(v) && 55 + hasProp(v, '$type') && 56 + v.$type === 'com.atproto.server.createAppPassword#appPassword' 57 + ) 58 + } 59 + 60 + export function validateAppPassword(v: unknown): ValidationResult { 61 + return lexicons.validate( 62 + 'com.atproto.server.createAppPassword#appPassword', 63 + v, 64 + ) 65 + }
+46
src/lexicon/types/com/atproto/server/createInviteCode.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + 11 + export interface QueryParams {} 12 + 13 + export interface InputSchema { 14 + useCount: number 15 + forAccount?: string 16 + [k: string]: unknown 17 + } 18 + 19 + export interface OutputSchema { 20 + code: string 21 + [k: string]: unknown 22 + } 23 + 24 + export interface HandlerInput { 25 + encoding: 'application/json' 26 + body: InputSchema 27 + } 28 + 29 + export interface HandlerSuccess { 30 + encoding: 'application/json' 31 + body: OutputSchema 32 + } 33 + 34 + export interface HandlerError { 35 + status: number 36 + message?: string 37 + } 38 + 39 + export type HandlerOutput = HandlerError | HandlerSuccess 40 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 41 + auth: HA 42 + params: QueryParams 43 + input: HandlerInput 44 + req: express.Request 45 + res: express.Response 46 + }) => Promise<HandlerOutput> | HandlerOutput
+68
src/lexicon/types/com/atproto/server/createInviteCodes.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + 11 + export interface QueryParams {} 12 + 13 + export interface InputSchema { 14 + codeCount: number 15 + useCount: number 16 + forAccounts?: string[] 17 + [k: string]: unknown 18 + } 19 + 20 + export interface OutputSchema { 21 + codes: AccountCodes[] 22 + [k: string]: unknown 23 + } 24 + 25 + export interface HandlerInput { 26 + encoding: 'application/json' 27 + body: InputSchema 28 + } 29 + 30 + export interface HandlerSuccess { 31 + encoding: 'application/json' 32 + body: OutputSchema 33 + } 34 + 35 + export interface HandlerError { 36 + status: number 37 + message?: string 38 + } 39 + 40 + export type HandlerOutput = HandlerError | HandlerSuccess 41 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 42 + auth: HA 43 + params: QueryParams 44 + input: HandlerInput 45 + req: express.Request 46 + res: express.Response 47 + }) => Promise<HandlerOutput> | HandlerOutput 48 + 49 + export interface AccountCodes { 50 + account: string 51 + codes: string[] 52 + [k: string]: unknown 53 + } 54 + 55 + export function isAccountCodes(v: unknown): v is AccountCodes { 56 + return ( 57 + isObj(v) && 58 + hasProp(v, '$type') && 59 + v.$type === 'com.atproto.server.createInviteCodes#accountCodes' 60 + ) 61 + } 62 + 63 + export function validateAccountCodes(v: unknown): ValidationResult { 64 + return lexicons.validate( 65 + 'com.atproto.server.createInviteCodes#accountCodes', 66 + v, 67 + ) 68 + }
+52
src/lexicon/types/com/atproto/server/createSession.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + 11 + export interface QueryParams {} 12 + 13 + export interface InputSchema { 14 + /** Handle or other identifier supported by the server for the authenticating user. */ 15 + identifier: string 16 + password: string 17 + [k: string]: unknown 18 + } 19 + 20 + export interface OutputSchema { 21 + accessJwt: string 22 + refreshJwt: string 23 + handle: string 24 + did: string 25 + email?: string 26 + [k: string]: unknown 27 + } 28 + 29 + export interface HandlerInput { 30 + encoding: 'application/json' 31 + body: InputSchema 32 + } 33 + 34 + export interface HandlerSuccess { 35 + encoding: 'application/json' 36 + body: OutputSchema 37 + } 38 + 39 + export interface HandlerError { 40 + status: number 41 + message?: string 42 + error?: 'AccountTakedown' 43 + } 44 + 45 + export type HandlerOutput = HandlerError | HandlerSuccess 46 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 47 + auth: HA 48 + params: QueryParams 49 + input: HandlerInput 50 + req: express.Request 51 + res: express.Response 52 + }) => Promise<HandlerOutput> | HandlerOutput
+48
src/lexicon/types/com/atproto/server/defs.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 5 + import { lexicons } from '../../../../lexicons' 6 + import { isObj, hasProp } from '../../../../util' 7 + import { CID } from 'multiformats/cid' 8 + 9 + export interface InviteCode { 10 + code: string 11 + available: number 12 + disabled: boolean 13 + forAccount: string 14 + createdBy: string 15 + createdAt: string 16 + uses: InviteCodeUse[] 17 + [k: string]: unknown 18 + } 19 + 20 + export function isInviteCode(v: unknown): v is InviteCode { 21 + return ( 22 + isObj(v) && 23 + hasProp(v, '$type') && 24 + v.$type === 'com.atproto.server.defs#inviteCode' 25 + ) 26 + } 27 + 28 + export function validateInviteCode(v: unknown): ValidationResult { 29 + return lexicons.validate('com.atproto.server.defs#inviteCode', v) 30 + } 31 + 32 + export interface InviteCodeUse { 33 + usedBy: string 34 + usedAt: string 35 + [k: string]: unknown 36 + } 37 + 38 + export function isInviteCodeUse(v: unknown): v is InviteCodeUse { 39 + return ( 40 + isObj(v) && 41 + hasProp(v, '$type') && 42 + v.$type === 'com.atproto.server.defs#inviteCodeUse' 43 + ) 44 + } 45 + 46 + export function validateInviteCodeUse(v: unknown): ValidationResult { 47 + return lexicons.validate('com.atproto.server.defs#inviteCodeUse', v) 48 + }
+38
src/lexicon/types/com/atproto/server/deleteAccount.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + 11 + export interface QueryParams {} 12 + 13 + export interface InputSchema { 14 + did: string 15 + password: string 16 + token: string 17 + [k: string]: unknown 18 + } 19 + 20 + export interface HandlerInput { 21 + encoding: 'application/json' 22 + body: InputSchema 23 + } 24 + 25 + export interface HandlerError { 26 + status: number 27 + message?: string 28 + error?: 'ExpiredToken' | 'InvalidToken' 29 + } 30 + 31 + export type HandlerOutput = HandlerError | void 32 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 33 + auth: HA 34 + params: QueryParams 35 + input: HandlerInput 36 + req: express.Request 37 + res: express.Response 38 + }) => Promise<HandlerOutput> | HandlerOutput
+28
src/lexicon/types/com/atproto/server/deleteSession.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + 11 + export interface QueryParams {} 12 + 13 + export type InputSchema = undefined 14 + export type HandlerInput = undefined 15 + 16 + export interface HandlerError { 17 + status: number 18 + message?: string 19 + } 20 + 21 + export type HandlerOutput = HandlerError | void 22 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 23 + auth: HA 24 + params: QueryParams 25 + input: HandlerInput 26 + req: express.Request 27 + res: express.Response 28 + }) => Promise<HandlerOutput> | HandlerOutput
+59
src/lexicon/types/com/atproto/server/describeServer.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + 11 + export interface QueryParams {} 12 + 13 + export type InputSchema = undefined 14 + 15 + export interface OutputSchema { 16 + inviteCodeRequired?: boolean 17 + availableUserDomains: string[] 18 + links?: Links 19 + [k: string]: unknown 20 + } 21 + 22 + export type HandlerInput = undefined 23 + 24 + export interface HandlerSuccess { 25 + encoding: 'application/json' 26 + body: OutputSchema 27 + } 28 + 29 + export interface HandlerError { 30 + status: number 31 + message?: string 32 + } 33 + 34 + export type HandlerOutput = HandlerError | HandlerSuccess 35 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 36 + auth: HA 37 + params: QueryParams 38 + input: HandlerInput 39 + req: express.Request 40 + res: express.Response 41 + }) => Promise<HandlerOutput> | HandlerOutput 42 + 43 + export interface Links { 44 + privacyPolicy?: string 45 + termsOfService?: string 46 + [k: string]: unknown 47 + } 48 + 49 + export function isLinks(v: unknown): v is Links { 50 + return ( 51 + isObj(v) && 52 + hasProp(v, '$type') && 53 + v.$type === 'com.atproto.server.describeServer#links' 54 + ) 55 + } 56 + 57 + export function validateLinks(v: unknown): ValidationResult { 58 + return lexicons.validate('com.atproto.server.describeServer#links', v) 59 + }
+44
src/lexicon/types/com/atproto/server/getAccountInviteCodes.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + import * as ComAtprotoServerDefs from './defs' 11 + 12 + export interface QueryParams { 13 + includeUsed: boolean 14 + createAvailable: boolean 15 + } 16 + 17 + export type InputSchema = undefined 18 + 19 + export interface OutputSchema { 20 + codes: ComAtprotoServerDefs.InviteCode[] 21 + [k: string]: unknown 22 + } 23 + 24 + export type HandlerInput = undefined 25 + 26 + export interface HandlerSuccess { 27 + encoding: 'application/json' 28 + body: OutputSchema 29 + } 30 + 31 + export interface HandlerError { 32 + status: number 33 + message?: string 34 + error?: 'DuplicateCreate' 35 + } 36 + 37 + export type HandlerOutput = HandlerError | HandlerSuccess 38 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 39 + auth: HA 40 + params: QueryParams 41 + input: HandlerInput 42 + req: express.Request 43 + res: express.Response 44 + }) => Promise<HandlerOutput> | HandlerOutput
+41
src/lexicon/types/com/atproto/server/getSession.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + 11 + export interface QueryParams {} 12 + 13 + export type InputSchema = undefined 14 + 15 + export interface OutputSchema { 16 + handle: string 17 + did: string 18 + email?: string 19 + [k: string]: unknown 20 + } 21 + 22 + export type HandlerInput = undefined 23 + 24 + export interface HandlerSuccess { 25 + encoding: 'application/json' 26 + body: OutputSchema 27 + } 28 + 29 + export interface HandlerError { 30 + status: number 31 + message?: string 32 + } 33 + 34 + export type HandlerOutput = HandlerError | HandlerSuccess 35 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 36 + auth: HA 37 + params: QueryParams 38 + input: HandlerInput 39 + req: express.Request 40 + res: express.Response 41 + }) => Promise<HandlerOutput> | HandlerOutput
+58
src/lexicon/types/com/atproto/server/listAppPasswords.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + 11 + export interface QueryParams {} 12 + 13 + export type InputSchema = undefined 14 + 15 + export interface OutputSchema { 16 + passwords: AppPassword[] 17 + [k: string]: unknown 18 + } 19 + 20 + export type HandlerInput = undefined 21 + 22 + export interface HandlerSuccess { 23 + encoding: 'application/json' 24 + body: OutputSchema 25 + } 26 + 27 + export interface HandlerError { 28 + status: number 29 + message?: string 30 + error?: 'AccountTakedown' 31 + } 32 + 33 + export type HandlerOutput = HandlerError | HandlerSuccess 34 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 35 + auth: HA 36 + params: QueryParams 37 + input: HandlerInput 38 + req: express.Request 39 + res: express.Response 40 + }) => Promise<HandlerOutput> | HandlerOutput 41 + 42 + export interface AppPassword { 43 + name: string 44 + createdAt: string 45 + [k: string]: unknown 46 + } 47 + 48 + export function isAppPassword(v: unknown): v is AppPassword { 49 + return ( 50 + isObj(v) && 51 + hasProp(v, '$type') && 52 + v.$type === 'com.atproto.server.listAppPasswords#appPassword' 53 + ) 54 + } 55 + 56 + export function validateAppPassword(v: unknown): ValidationResult { 57 + return lexicons.validate('com.atproto.server.listAppPasswords#appPassword', v) 58 + }
+43
src/lexicon/types/com/atproto/server/refreshSession.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + 11 + export interface QueryParams {} 12 + 13 + export type InputSchema = undefined 14 + 15 + export interface OutputSchema { 16 + accessJwt: string 17 + refreshJwt: string 18 + handle: string 19 + did: string 20 + [k: string]: unknown 21 + } 22 + 23 + export type HandlerInput = undefined 24 + 25 + export interface HandlerSuccess { 26 + encoding: 'application/json' 27 + body: OutputSchema 28 + } 29 + 30 + export interface HandlerError { 31 + status: number 32 + message?: string 33 + error?: 'AccountTakedown' 34 + } 35 + 36 + export type HandlerOutput = HandlerError | HandlerSuccess 37 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 38 + auth: HA 39 + params: QueryParams 40 + input: HandlerInput 41 + req: express.Request 42 + res: express.Response 43 + }) => Promise<HandlerOutput> | HandlerOutput
+28
src/lexicon/types/com/atproto/server/requestAccountDelete.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + 11 + export interface QueryParams {} 12 + 13 + export type InputSchema = undefined 14 + export type HandlerInput = undefined 15 + 16 + export interface HandlerError { 17 + status: number 18 + message?: string 19 + } 20 + 21 + export type HandlerOutput = HandlerError | void 22 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 23 + auth: HA 24 + params: QueryParams 25 + input: HandlerInput 26 + req: express.Request 27 + res: express.Response 28 + }) => Promise<HandlerOutput> | HandlerOutput
+35
src/lexicon/types/com/atproto/server/requestPasswordReset.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + 11 + export interface QueryParams {} 12 + 13 + export interface InputSchema { 14 + email: string 15 + [k: string]: unknown 16 + } 17 + 18 + export interface HandlerInput { 19 + encoding: 'application/json' 20 + body: InputSchema 21 + } 22 + 23 + export interface HandlerError { 24 + status: number 25 + message?: string 26 + } 27 + 28 + export type HandlerOutput = HandlerError | void 29 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 30 + auth: HA 31 + params: QueryParams 32 + input: HandlerInput 33 + req: express.Request 34 + res: express.Response 35 + }) => Promise<HandlerOutput> | HandlerOutput
+37
src/lexicon/types/com/atproto/server/resetPassword.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + 11 + export interface QueryParams {} 12 + 13 + export interface InputSchema { 14 + token: string 15 + password: string 16 + [k: string]: unknown 17 + } 18 + 19 + export interface HandlerInput { 20 + encoding: 'application/json' 21 + body: InputSchema 22 + } 23 + 24 + export interface HandlerError { 25 + status: number 26 + message?: string 27 + error?: 'ExpiredToken' | 'InvalidToken' 28 + } 29 + 30 + export type HandlerOutput = HandlerError | void 31 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 32 + auth: HA 33 + params: QueryParams 34 + input: HandlerInput 35 + req: express.Request 36 + res: express.Response 37 + }) => Promise<HandlerOutput> | HandlerOutput
+35
src/lexicon/types/com/atproto/server/revokeAppPassword.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + 11 + export interface QueryParams {} 12 + 13 + export interface InputSchema { 14 + name: string 15 + [k: string]: unknown 16 + } 17 + 18 + export interface HandlerInput { 19 + encoding: 'application/json' 20 + body: InputSchema 21 + } 22 + 23 + export interface HandlerError { 24 + status: number 25 + message?: string 26 + } 27 + 28 + export type HandlerOutput = HandlerError | void 29 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 30 + auth: HA 31 + params: QueryParams 32 + input: HandlerInput 33 + req: express.Request 34 + res: express.Response 35 + }) => Promise<HandlerOutput> | HandlerOutput
+39
src/lexicon/types/com/atproto/sync/getBlob.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import stream from 'stream' 6 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 7 + import { lexicons } from '../../../../lexicons' 8 + import { isObj, hasProp } from '../../../../util' 9 + import { CID } from 'multiformats/cid' 10 + import { HandlerAuth } from '@atproto/xrpc-server' 11 + 12 + export interface QueryParams { 13 + /** The DID of the repo. */ 14 + did: string 15 + /** The CID of the blob to fetch */ 16 + cid: string 17 + } 18 + 19 + export type InputSchema = undefined 20 + export type HandlerInput = undefined 21 + 22 + export interface HandlerSuccess { 23 + encoding: '*/*' 24 + body: Uint8Array | stream.Readable 25 + } 26 + 27 + export interface HandlerError { 28 + status: number 29 + message?: string 30 + } 31 + 32 + export type HandlerOutput = HandlerError | HandlerSuccess 33 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 34 + auth: HA 35 + params: QueryParams 36 + input: HandlerInput 37 + req: express.Request 38 + res: express.Response 39 + }) => Promise<HandlerOutput> | HandlerOutput
+38
src/lexicon/types/com/atproto/sync/getBlocks.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import stream from 'stream' 6 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 7 + import { lexicons } from '../../../../lexicons' 8 + import { isObj, hasProp } from '../../../../util' 9 + import { CID } from 'multiformats/cid' 10 + import { HandlerAuth } from '@atproto/xrpc-server' 11 + 12 + export interface QueryParams { 13 + /** The DID of the repo. */ 14 + did: string 15 + cids: string[] 16 + } 17 + 18 + export type InputSchema = undefined 19 + export type HandlerInput = undefined 20 + 21 + export interface HandlerSuccess { 22 + encoding: 'application/vnd.ipld.car' 23 + body: Uint8Array | stream.Readable 24 + } 25 + 26 + export interface HandlerError { 27 + status: number 28 + message?: string 29 + } 30 + 31 + export type HandlerOutput = HandlerError | HandlerSuccess 32 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 33 + auth: HA 34 + params: QueryParams 35 + input: HandlerInput 36 + req: express.Request 37 + res: express.Response 38 + }) => Promise<HandlerOutput> | HandlerOutput
+39
src/lexicon/types/com/atproto/sync/getCheckout.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import stream from 'stream' 6 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 7 + import { lexicons } from '../../../../lexicons' 8 + import { isObj, hasProp } from '../../../../util' 9 + import { CID } from 'multiformats/cid' 10 + import { HandlerAuth } from '@atproto/xrpc-server' 11 + 12 + export interface QueryParams { 13 + /** The DID of the repo. */ 14 + did: string 15 + /** The commit to get the checkout from. Defaults to current HEAD. */ 16 + commit?: string 17 + } 18 + 19 + export type InputSchema = undefined 20 + export type HandlerInput = undefined 21 + 22 + export interface HandlerSuccess { 23 + encoding: 'application/vnd.ipld.car' 24 + body: Uint8Array | stream.Readable 25 + } 26 + 27 + export interface HandlerError { 28 + status: number 29 + message?: string 30 + } 31 + 32 + export type HandlerOutput = HandlerError | HandlerSuccess 33 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 34 + auth: HA 35 + params: QueryParams 36 + input: HandlerInput 37 + req: express.Request 38 + res: express.Response 39 + }) => Promise<HandlerOutput> | HandlerOutput
+46
src/lexicon/types/com/atproto/sync/getCommitPath.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + 11 + export interface QueryParams { 12 + /** The DID of the repo. */ 13 + did: string 14 + /** The most recent commit */ 15 + latest?: string 16 + /** The earliest commit to start from */ 17 + earliest?: string 18 + } 19 + 20 + export type InputSchema = undefined 21 + 22 + export interface OutputSchema { 23 + commits: string[] 24 + [k: string]: unknown 25 + } 26 + 27 + export type HandlerInput = undefined 28 + 29 + export interface HandlerSuccess { 30 + encoding: 'application/json' 31 + body: OutputSchema 32 + } 33 + 34 + export interface HandlerError { 35 + status: number 36 + message?: string 37 + } 38 + 39 + export type HandlerOutput = HandlerError | HandlerSuccess 40 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 41 + auth: HA 42 + params: QueryParams 43 + input: HandlerInput 44 + req: express.Request 45 + res: express.Response 46 + }) => Promise<HandlerOutput> | HandlerOutput
+42
src/lexicon/types/com/atproto/sync/getHead.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + 11 + export interface QueryParams { 12 + /** The DID of the repo. */ 13 + did: string 14 + } 15 + 16 + export type InputSchema = undefined 17 + 18 + export interface OutputSchema { 19 + root: string 20 + [k: string]: unknown 21 + } 22 + 23 + export type HandlerInput = undefined 24 + 25 + export interface HandlerSuccess { 26 + encoding: 'application/json' 27 + body: OutputSchema 28 + } 29 + 30 + export interface HandlerError { 31 + status: number 32 + message?: string 33 + } 34 + 35 + export type HandlerOutput = HandlerError | HandlerSuccess 36 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 37 + auth: HA 38 + params: QueryParams 39 + input: HandlerInput 40 + req: express.Request 41 + res: express.Response 42 + }) => Promise<HandlerOutput> | HandlerOutput
+41
src/lexicon/types/com/atproto/sync/getRecord.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import stream from 'stream' 6 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 7 + import { lexicons } from '../../../../lexicons' 8 + import { isObj, hasProp } from '../../../../util' 9 + import { CID } from 'multiformats/cid' 10 + import { HandlerAuth } from '@atproto/xrpc-server' 11 + 12 + export interface QueryParams { 13 + /** The DID of the repo. */ 14 + did: string 15 + collection: string 16 + rkey: string 17 + /** An optional past commit CID. */ 18 + commit?: string 19 + } 20 + 21 + export type InputSchema = undefined 22 + export type HandlerInput = undefined 23 + 24 + export interface HandlerSuccess { 25 + encoding: 'application/vnd.ipld.car' 26 + body: Uint8Array | stream.Readable 27 + } 28 + 29 + export interface HandlerError { 30 + status: number 31 + message?: string 32 + } 33 + 34 + export type HandlerOutput = HandlerError | HandlerSuccess 35 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 36 + auth: HA 37 + params: QueryParams 38 + input: HandlerInput 39 + req: express.Request 40 + res: express.Response 41 + }) => Promise<HandlerOutput> | HandlerOutput
+41
src/lexicon/types/com/atproto/sync/getRepo.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import stream from 'stream' 6 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 7 + import { lexicons } from '../../../../lexicons' 8 + import { isObj, hasProp } from '../../../../util' 9 + import { CID } from 'multiformats/cid' 10 + import { HandlerAuth } from '@atproto/xrpc-server' 11 + 12 + export interface QueryParams { 13 + /** The DID of the repo. */ 14 + did: string 15 + /** The earliest commit in the commit range (not inclusive) */ 16 + earliest?: string 17 + /** The latest commit in the commit range (inclusive) */ 18 + latest?: string 19 + } 20 + 21 + export type InputSchema = undefined 22 + export type HandlerInput = undefined 23 + 24 + export interface HandlerSuccess { 25 + encoding: 'application/vnd.ipld.car' 26 + body: Uint8Array | stream.Readable 27 + } 28 + 29 + export interface HandlerError { 30 + status: number 31 + message?: string 32 + } 33 + 34 + export type HandlerOutput = HandlerError | HandlerSuccess 35 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 36 + auth: HA 37 + params: QueryParams 38 + input: HandlerInput 39 + req: express.Request 40 + res: express.Response 41 + }) => Promise<HandlerOutput> | HandlerOutput
+46
src/lexicon/types/com/atproto/sync/listBlobs.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + 11 + export interface QueryParams { 12 + /** The DID of the repo. */ 13 + did: string 14 + /** The most recent commit */ 15 + latest?: string 16 + /** The earliest commit to start from */ 17 + earliest?: string 18 + } 19 + 20 + export type InputSchema = undefined 21 + 22 + export interface OutputSchema { 23 + cids: string[] 24 + [k: string]: unknown 25 + } 26 + 27 + export type HandlerInput = undefined 28 + 29 + export interface HandlerSuccess { 30 + encoding: 'application/json' 31 + body: OutputSchema 32 + } 33 + 34 + export interface HandlerError { 35 + status: number 36 + message?: string 37 + } 38 + 39 + export type HandlerOutput = HandlerError | HandlerSuccess 40 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 41 + auth: HA 42 + params: QueryParams 43 + input: HandlerInput 44 + req: express.Request 45 + res: express.Response 46 + }) => Promise<HandlerOutput> | HandlerOutput
+61
src/lexicon/types/com/atproto/sync/listRepos.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + 11 + export interface QueryParams { 12 + limit: number 13 + cursor?: string 14 + } 15 + 16 + export type InputSchema = undefined 17 + 18 + export interface OutputSchema { 19 + cursor?: string 20 + repos: Repo[] 21 + [k: string]: unknown 22 + } 23 + 24 + export type HandlerInput = undefined 25 + 26 + export interface HandlerSuccess { 27 + encoding: 'application/json' 28 + body: OutputSchema 29 + } 30 + 31 + export interface HandlerError { 32 + status: number 33 + message?: string 34 + } 35 + 36 + export type HandlerOutput = HandlerError | HandlerSuccess 37 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 38 + auth: HA 39 + params: QueryParams 40 + input: HandlerInput 41 + req: express.Request 42 + res: express.Response 43 + }) => Promise<HandlerOutput> | HandlerOutput 44 + 45 + export interface Repo { 46 + did: string 47 + head: string 48 + [k: string]: unknown 49 + } 50 + 51 + export function isRepo(v: unknown): v is Repo { 52 + return ( 53 + isObj(v) && 54 + hasProp(v, '$type') && 55 + v.$type === 'com.atproto.sync.listRepos#repo' 56 + ) 57 + } 58 + 59 + export function validateRepo(v: unknown): ValidationResult { 60 + return lexicons.validate('com.atproto.sync.listRepos#repo', v) 61 + }
+31
src/lexicon/types/com/atproto/sync/notifyOfUpdate.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + 11 + export interface QueryParams { 12 + /** Hostname of the service that is notifying of update. */ 13 + hostname: string 14 + } 15 + 16 + export type InputSchema = undefined 17 + export type HandlerInput = undefined 18 + 19 + export interface HandlerError { 20 + status: number 21 + message?: string 22 + } 23 + 24 + export type HandlerOutput = HandlerError | void 25 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 26 + auth: HA 27 + params: QueryParams 28 + input: HandlerInput 29 + req: express.Request 30 + res: express.Response 31 + }) => Promise<HandlerOutput> | HandlerOutput
+31
src/lexicon/types/com/atproto/sync/requestCrawl.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import express from 'express' 5 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 6 + import { lexicons } from '../../../../lexicons' 7 + import { isObj, hasProp } from '../../../../util' 8 + import { CID } from 'multiformats/cid' 9 + import { HandlerAuth } from '@atproto/xrpc-server' 10 + 11 + export interface QueryParams { 12 + /** Hostname of the service that is requesting to be crawled. */ 13 + hostname: string 14 + } 15 + 16 + export type InputSchema = undefined 17 + export type HandlerInput = undefined 18 + 19 + export interface HandlerError { 20 + status: number 21 + message?: string 22 + } 23 + 24 + export type HandlerOutput = HandlerError | void 25 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 26 + auth: HA 27 + params: QueryParams 28 + input: HandlerInput 29 + req: express.Request 30 + res: express.Response 31 + }) => Promise<HandlerOutput> | HandlerOutput
+153
src/lexicon/types/com/atproto/sync/subscribeRepos.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + import { ValidationResult, BlobRef } from '@atproto/lexicon' 5 + import { lexicons } from '../../../../lexicons' 6 + import { isObj, hasProp } from '../../../../util' 7 + import { CID } from 'multiformats/cid' 8 + import { HandlerAuth, ErrorFrame } from '@atproto/xrpc-server' 9 + import { IncomingMessage } from 'http' 10 + 11 + export interface QueryParams { 12 + /** The last known event to backfill from. */ 13 + cursor?: number 14 + } 15 + 16 + export type OutputSchema = 17 + | Commit 18 + | Handle 19 + | Migrate 20 + | Tombstone 21 + | Info 22 + | { $type: string; [k: string]: unknown } 23 + export type HandlerError = ErrorFrame<'FutureCursor'> 24 + export type HandlerOutput = HandlerError | OutputSchema 25 + export type Handler<HA extends HandlerAuth = never> = (ctx: { 26 + auth: HA 27 + params: QueryParams 28 + req: IncomingMessage 29 + signal: AbortSignal 30 + }) => AsyncIterable<HandlerOutput> 31 + 32 + export interface Commit { 33 + seq: number 34 + rebase: boolean 35 + tooBig: boolean 36 + repo: string 37 + commit: CID 38 + prev: CID | null 39 + /** CAR file containing relevant blocks */ 40 + blocks: Uint8Array 41 + ops: RepoOp[] 42 + blobs: CID[] 43 + time: string 44 + [k: string]: unknown 45 + } 46 + 47 + export function isCommit(v: unknown): v is Commit { 48 + return ( 49 + isObj(v) && 50 + hasProp(v, '$type') && 51 + v.$type === 'com.atproto.sync.subscribeRepos#commit' 52 + ) 53 + } 54 + 55 + export function validateCommit(v: unknown): ValidationResult { 56 + return lexicons.validate('com.atproto.sync.subscribeRepos#commit', v) 57 + } 58 + 59 + export interface Handle { 60 + seq: number 61 + did: string 62 + handle: string 63 + time: string 64 + [k: string]: unknown 65 + } 66 + 67 + export function isHandle(v: unknown): v is Handle { 68 + return ( 69 + isObj(v) && 70 + hasProp(v, '$type') && 71 + v.$type === 'com.atproto.sync.subscribeRepos#handle' 72 + ) 73 + } 74 + 75 + export function validateHandle(v: unknown): ValidationResult { 76 + return lexicons.validate('com.atproto.sync.subscribeRepos#handle', v) 77 + } 78 + 79 + export interface Migrate { 80 + seq: number 81 + did: string 82 + migrateTo: string | null 83 + time: string 84 + [k: string]: unknown 85 + } 86 + 87 + export function isMigrate(v: unknown): v is Migrate { 88 + return ( 89 + isObj(v) && 90 + hasProp(v, '$type') && 91 + v.$type === 'com.atproto.sync.subscribeRepos#migrate' 92 + ) 93 + } 94 + 95 + export function validateMigrate(v: unknown): ValidationResult { 96 + return lexicons.validate('com.atproto.sync.subscribeRepos#migrate', v) 97 + } 98 + 99 + export interface Tombstone { 100 + seq: number 101 + did: string 102 + time: string 103 + [k: string]: unknown 104 + } 105 + 106 + export function isTombstone(v: unknown): v is Tombstone { 107 + return ( 108 + isObj(v) && 109 + hasProp(v, '$type') && 110 + v.$type === 'com.atproto.sync.subscribeRepos#tombstone' 111 + ) 112 + } 113 + 114 + export function validateTombstone(v: unknown): ValidationResult { 115 + return lexicons.validate('com.atproto.sync.subscribeRepos#tombstone', v) 116 + } 117 + 118 + export interface Info { 119 + name: 'OutdatedCursor' | (string & {}) 120 + message?: string 121 + [k: string]: unknown 122 + } 123 + 124 + export function isInfo(v: unknown): v is Info { 125 + return ( 126 + isObj(v) && 127 + hasProp(v, '$type') && 128 + v.$type === 'com.atproto.sync.subscribeRepos#info' 129 + ) 130 + } 131 + 132 + export function validateInfo(v: unknown): ValidationResult { 133 + return lexicons.validate('com.atproto.sync.subscribeRepos#info', v) 134 + } 135 + 136 + export interface RepoOp { 137 + action: 'create' | 'update' | 'delete' | (string & {}) 138 + path: string 139 + cid: CID | null 140 + [k: string]: unknown 141 + } 142 + 143 + export function isRepoOp(v: unknown): v is RepoOp { 144 + return ( 145 + isObj(v) && 146 + hasProp(v, '$type') && 147 + v.$type === 'com.atproto.sync.subscribeRepos#repoOp' 148 + ) 149 + } 150 + 151 + export function validateRepoOp(v: unknown): ValidationResult { 152 + return lexicons.validate('com.atproto.sync.subscribeRepos#repoOp', v) 153 + }
+13
src/lexicon/util.ts
··· 1 + /** 2 + * GENERATED CODE - DO NOT MODIFY 3 + */ 4 + export function isObj(v: unknown): v is Record<string, unknown> { 5 + return typeof v === 'object' && v !== null 6 + } 7 + 8 + export function hasProp<K extends PropertyKey>( 9 + data: object, 10 + prop: K, 11 + ): data is Record<K, unknown> { 12 + return prop in data 13 + }
+16
src/methods/describe-generator.ts
··· 1 + import { Server } from '../lexicon' 2 + import { AppContext } from '../config' 3 + import algos from '../algos' 4 + 5 + export default function (server: Server, ctx: AppContext) { 6 + server.app.bsky.feed.describeFeedGenerator(async () => { 7 + const feeds = Object.keys(algos).map((uri) => ({ uri })) 8 + return { 9 + encoding: 'application/json', 10 + body: { 11 + did: ctx.cfg.serviceDid, 12 + feeds, 13 + }, 14 + } 15 + }) 16 + }
+31
src/methods/feed-generation.ts
··· 1 + import { InvalidRequestError } from '@atproto/xrpc-server' 2 + import { Server } from '../lexicon' 3 + import { AppContext } from '../config' 4 + import algos from '../algos' 5 + 6 + export default function (server: Server, ctx: AppContext) { 7 + server.app.bsky.feed.getFeedSkeleton(async ({ params, req }) => { 8 + const algo = algos[params.feed.split('/').pop()!] 9 + if (!algo) { 10 + throw new InvalidRequestError( 11 + 'Unsupported algorithm', 12 + 'UnsupportedAlgorithm', 13 + ) 14 + } 15 + /** 16 + * Example of how to check auth if giving user-specific results: 17 + * 18 + * const requesterDid = await validateAuth( 19 + * req, 20 + * ctx.cfg.serviceDid, 21 + * ctx.didResolver, 22 + * ) 23 + */ 24 + 25 + const body = await algo(ctx, params) 26 + return { 27 + encoding: 'application/json', 28 + body: body, 29 + } 30 + }) 31 + }
+106
src/server.ts
··· 1 + import http from 'http' 2 + import events from 'events' 3 + import express from 'express' 4 + import { DidResolver, MemoryCache } from '@atproto/did-resolver' 5 + import { createServer } from './lexicon' 6 + import feedGeneration from './methods/feed-generation' 7 + import describeGenerator from './methods/describe-generator' 8 + import { createDb, Database, migrateToLatest } from './db' 9 + import { FirehoseSubscription } from './subscription' 10 + import { AppContext, Config } from './config' 11 + import wellKnown from './well-known' 12 + import BskyAgent, { AtpSessionData, AtpSessionEvent } from '@atproto/api' 13 + import * as process from 'node:process' 14 + 15 + export class FeedGenerator { 16 + public app: express.Application 17 + public server?: http.Server 18 + public db: Database 19 + public firehose: FirehoseSubscription 20 + public cfg: Config 21 + public agent: BskyAgent 22 + public didResolver: DidResolver 23 + public session: string | null 24 + 25 + constructor( 26 + app: express.Application, 27 + db: Database, 28 + firehose: FirehoseSubscription, 29 + cfg: Config, 30 + ) { 31 + this.app = app 32 + this.db = db 33 + this.firehose = firehose 34 + this.cfg = cfg 35 + } 36 + 37 + static create(cfg: Config) { 38 + const app = express() 39 + const db = createDb(cfg.postgresConnectionString) 40 + const firehose = new FirehoseSubscription(db, cfg.subscriptionEndpoint) 41 + 42 + const didCache = new MemoryCache() 43 + const didResolver = new DidResolver( 44 + { plcUrl: 'https://plc.directory' }, 45 + didCache, 46 + ) 47 + 48 + const server = createServer({ 49 + validateResponse: true, 50 + payload: { 51 + jsonLimit: 100 * 1024, // 100kb 52 + textLimit: 100 * 1024, // 100kb 53 + blobLimit: 5 * 1024 * 1024, // 5mb 54 + }, 55 + }) 56 + const ctx: AppContext = { 57 + db, 58 + didResolver, 59 + cfg, 60 + } 61 + feedGeneration(server, ctx) 62 + describeGenerator(server, ctx) 63 + app.use(server.xrpc.router) 64 + app.use(wellKnown(ctx)) 65 + 66 + return new FeedGenerator(app, db, firehose, cfg) 67 + } 68 + 69 + async start(): Promise<http.Server> { 70 + await migrateToLatest(this.db) 71 + this.agent = new BskyAgent({ 72 + service: 'https://bsky.social', 73 + persistSession: (evt: AtpSessionEvent, sess?: AtpSessionData) => { 74 + // store the session-data for reuse 75 + switch (evt) { 76 + case 'create': 77 + if (!sess) throw new Error('should be unreachable') 78 + this.session = JSON.stringify(sess) 79 + break 80 + case 'create-failed': 81 + this.session = null 82 + console.error('Could not create session') 83 + break 84 + case 'update': 85 + if (!sess) throw new Error('should be unreachable') 86 + this.session = JSON.stringify(sess) 87 + break 88 + case 'expired': 89 + this.session = null 90 + break 91 + } 92 + }, 93 + }) 94 + await this.agent.login({ 95 + identifier: process.env.HANDLE!, 96 + password: process.env.PASSWORD!, 97 + }) 98 + console.log('🗝️ logged in 🗝️') 99 + this.firehose.run(this.agent) 100 + this.server = this.app.listen(this.cfg.port, '0.0.0.0') 101 + await events.once(this.server, 'listening') 102 + return this.server 103 + } 104 + } 105 + 106 + export default FeedGenerator
+91
src/subscription.ts
··· 1 + import { BskyAgent } from '@atproto/api' 2 + import { 3 + OutputSchema as RepoEvent, 4 + isCommit, 5 + } from './lexicon/types/com/atproto/sync/subscribeRepos' 6 + import { FirehoseSubscriptionBase, getOpsByType } from './util/subscription' 7 + 8 + export class FirehoseSubscription extends FirehoseSubscriptionBase { 9 + async handleEvent(evt: RepoEvent, agent: BskyAgent) { 10 + if (!isCommit(evt)) return 11 + const ops = await getOpsByType(evt) 12 + const postsToDelete = ops.posts.deletes 13 + .map((del) => ({ 14 + uri: del.uri, 15 + author: del.uri.split('/')[2], 16 + })) 17 + .map((del) => del.uri) 18 + const postsToCreate = ops.posts.creates.map((create) => { 19 + return { 20 + uri: create.uri, 21 + cid: create.cid, 22 + replyParent: create.record?.reply?.parent.uri ?? null, 23 + replyRoot: create.record?.reply?.root.uri ?? null, 24 + indexedAt: new Date().toISOString(), 25 + } 26 + }) 27 + 28 + if (postsToDelete.length > 0) { 29 + console.log('🗑️ new deletes 🗑️: ', postsToDelete) 30 + await this.db 31 + .deleteFrom('post') 32 + .where('uri', 'in', postsToDelete) 33 + .execute() 34 + } 35 + 36 + if (postsToCreate.length > 0) { 37 + postsToCreate.forEach(async (post) => { 38 + console.log('fetching post ', post.uri) 39 + const postContent = await agent.api.app.bsky.feed.post.get({ 40 + cid: post.cid, 41 + repo: post.uri.split('/')[2], 42 + rkey: post.uri.split('/')[4], 43 + }) 44 + 45 + if (postContent.value.text.match(/\beepy\b/)) { 46 + console.log('❗️ new post ❗️: ', postsToCreate) 47 + await this.db 48 + .insertInto('post') 49 + .values(postsToCreate) 50 + .onConflict((oc) => oc.doNothing()) 51 + .execute() 52 + } 53 + }) 54 + } 55 + 56 + ops.posts.creates.forEach(async (create) => { 57 + const user = await this.db 58 + .selectFrom('atproto_user') 59 + .select('did') 60 + .where('did', '=', create.author) 61 + .execute() 62 + if (user.length === 0) { 63 + console.log(`!!!!! fetching profile for ${create.author}`) 64 + let profile 65 + try { 66 + profile = await agent.api.app.bsky.actor.getProfile({ 67 + actor: create.author, 68 + }) 69 + } catch (e) { 70 + console.error('error fetching profile: ', e) 71 + return 72 + } 73 + 74 + try { 75 + await this.db 76 + .insertInto('atproto_user') 77 + .values({ 78 + did: create.author, 79 + handle: profile.data.handle, 80 + displayName: profile.data.displayName, 81 + bio: profile.data.description, 82 + indexedAt: new Date().toISOString(), 83 + }) 84 + .execute() 85 + } catch (e) { 86 + console.error('error inserting user: ', e) 87 + } 88 + } 89 + }) 90 + } 91 + }
+206
src/util/subscription.ts
··· 1 + import { Subscription } from '@atproto/xrpc-server' 2 + import { cborToLexRecord, readCar } from '@atproto/repo' 3 + import { BlobRef } from '@atproto/lexicon' 4 + import { ids, lexicons } from '../lexicon/lexicons' 5 + import { Record as PostRecord } from '../lexicon/types/app/bsky/feed/post' 6 + import { Record as RepostRecord } from '../lexicon/types/app/bsky/feed/repost' 7 + import { Record as LikeRecord } from '../lexicon/types/app/bsky/feed/like' 8 + import { Record as FollowRecord } from '../lexicon/types/app/bsky/graph/follow' 9 + import { 10 + Commit, 11 + OutputSchema as RepoEvent, 12 + isCommit, 13 + } from '../lexicon/types/com/atproto/sync/subscribeRepos' 14 + import { Database } from '../db' 15 + 16 + export abstract class FirehoseSubscriptionBase { 17 + public sub: Subscription<RepoEvent> 18 + public agent 19 + 20 + constructor(public db: Database, public service: string) { 21 + this.sub = new Subscription({ 22 + service: service, 23 + method: ids.ComAtprotoSyncSubscribeRepos, 24 + getParams: () => this.getCursor(), 25 + validate: (value: unknown) => { 26 + try { 27 + return lexicons.assertValidXrpcMessage<RepoEvent>( 28 + ids.ComAtprotoSyncSubscribeRepos, 29 + value, 30 + ) 31 + } catch (err) { 32 + console.error('repo subscription skipped invalid message', err) 33 + } 34 + }, 35 + }) 36 + } 37 + 38 + abstract handleEvent(evt: RepoEvent, agent): Promise<void> 39 + 40 + async run(agent) { 41 + // eslint-disable-next-line no-constant-condition 42 + while (true) { 43 + try { 44 + try { 45 + for await (const evt of this.sub) { 46 + try { 47 + await this.handleEvent(evt, agent) 48 + } catch (err) { 49 + console.error('repo subscription could not handle message', err) 50 + } 51 + // update stored cursor every 20 events or so 52 + if (isCommit(evt) && evt.seq % 20 === 0) { 53 + await this.updateCursor(evt.seq) 54 + } 55 + } 56 + } catch (err) { 57 + console.error( 58 + 'util/subscription/run/FirehoseSubscriptionBase/run got borked: ', 59 + err, 60 + ) 61 + } 62 + } catch (err) { 63 + // handle the error 64 + // Wait for 2 seconds before trying to wait on the subscription again 65 + console.error( 66 + 'We had a worse error at util/subscription/run/FirehoseSubscriptionBase/run got borked: ', 67 + err, 68 + ) 69 + await new Promise((r) => setTimeout(r, 2000)) 70 + } 71 + } 72 + } 73 + 74 + async updateCursor(cursor: number) { 75 + await this.db 76 + .updateTable('sub_state') 77 + .set({ cursor }) 78 + .where('service', '=', this.service) 79 + .execute() 80 + } 81 + 82 + async getCursor(): Promise<{ cursor?: number }> { 83 + const res = await this.db 84 + .selectFrom('sub_state') 85 + .selectAll() 86 + .where('service', '=', this.service) 87 + .executeTakeFirst() 88 + return res ? { cursor: res.cursor } : {} 89 + } 90 + } 91 + 92 + export const getOpsByType = async (evt: Commit): Promise<OperationsByType> => { 93 + const car = await readCar(evt.blocks) 94 + const opsByType: OperationsByType = { 95 + posts: { creates: [], deletes: [] }, 96 + reposts: { creates: [], deletes: [] }, 97 + likes: { creates: [], deletes: [] }, 98 + follows: { creates: [], deletes: [] }, 99 + } 100 + 101 + for (const op of evt.ops) { 102 + const uri = `at://${evt.repo}/${op.path}` 103 + const [collection] = op.path.split('/') 104 + 105 + if (op.action === 'update') continue // updates not supported yet 106 + 107 + if (op.action === 'create') { 108 + if (!op.cid) continue 109 + const recordBytes = car.blocks.get(op.cid) 110 + if (!recordBytes) continue 111 + const record = cborToLexRecord(recordBytes) 112 + const create = { uri, cid: op.cid.toString(), author: evt.repo } 113 + if (collection === ids.AppBskyFeedPost && isPost(record)) { 114 + opsByType.posts.creates.push({ record, ...create }) 115 + } else if (collection === ids.AppBskyFeedRepost && isRepost(record)) { 116 + opsByType.reposts.creates.push({ record, ...create }) 117 + } else if (collection === ids.AppBskyFeedLike && isLike(record)) { 118 + opsByType.likes.creates.push({ record, ...create }) 119 + } else if (collection === ids.AppBskyGraphFollow && isFollow(record)) { 120 + opsByType.follows.creates.push({ record, ...create }) 121 + } 122 + } 123 + 124 + if (op.action === 'delete') { 125 + if (collection === ids.AppBskyFeedPost) { 126 + opsByType.posts.deletes.push({ uri }) 127 + } else if (collection === ids.AppBskyFeedRepost) { 128 + opsByType.reposts.deletes.push({ uri }) 129 + } else if (collection === ids.AppBskyFeedLike) { 130 + opsByType.likes.deletes.push({ uri }) 131 + } else if (collection === ids.AppBskyGraphFollow) { 132 + opsByType.follows.deletes.push({ uri }) 133 + } 134 + } 135 + } 136 + 137 + return opsByType 138 + } 139 + 140 + type OperationsByType = { 141 + posts: Operations<PostRecord> 142 + reposts: Operations<RepostRecord> 143 + likes: Operations<LikeRecord> 144 + follows: Operations<FollowRecord> 145 + } 146 + 147 + type Operations<T = Record<string, unknown>> = { 148 + creates: CreateOp<T>[] 149 + deletes: DeleteOp[] 150 + } 151 + 152 + type CreateOp<T> = { 153 + uri: string 154 + cid: string 155 + author: string 156 + record: T 157 + } 158 + 159 + type DeleteOp = { 160 + uri: string 161 + } 162 + 163 + export const isPost = (obj: unknown): obj is PostRecord => { 164 + return isType(obj, ids.AppBskyFeedPost) 165 + } 166 + 167 + export const isRepost = (obj: unknown): obj is RepostRecord => { 168 + return isType(obj, ids.AppBskyFeedRepost) 169 + } 170 + 171 + export const isLike = (obj: unknown): obj is LikeRecord => { 172 + return isType(obj, ids.AppBskyFeedLike) 173 + } 174 + 175 + export const isFollow = (obj: unknown): obj is FollowRecord => { 176 + return isType(obj, ids.AppBskyGraphFollow) 177 + } 178 + 179 + const isType = (obj: unknown, nsid: string) => { 180 + try { 181 + lexicons.assertValidRecord(nsid, fixBlobRefs(obj)) 182 + return true 183 + } catch (err) { 184 + return false 185 + } 186 + } 187 + 188 + // @TODO right now record validation fails on BlobRefs 189 + // simply because multiple packages have their own copy 190 + // of the BlobRef class, causing instanceof checks to fail. 191 + // This is a temporary solution. 192 + const fixBlobRefs = (obj: unknown): unknown => { 193 + if (Array.isArray(obj)) { 194 + return obj.map(fixBlobRefs) 195 + } 196 + if (obj && typeof obj === 'object') { 197 + if (obj.constructor.name === 'BlobRef') { 198 + const blob = obj as BlobRef 199 + return new BlobRef(blob.ref, blob.mimeType, blob.size, blob.original) 200 + } 201 + return Object.entries(obj).reduce((acc, [key, val]) => { 202 + return Object.assign(acc, { [key]: fixBlobRefs(val) }) 203 + }, {} as Record<string, unknown>) 204 + } 205 + return obj 206 + }
+26
src/well-known.ts
··· 1 + import express from 'express' 2 + import { AppContext } from './config' 3 + 4 + const makeRouter = (ctx: AppContext) => { 5 + const router = express.Router() 6 + 7 + router.get('/.well-known/did.json', (_req, res) => { 8 + if (!ctx.cfg.serviceDid.endsWith(ctx.cfg.hostname)) { 9 + return res.sendStatus(404) 10 + } 11 + res.json({ 12 + '@context': ['https://www.w3.org/ns/did/v1'], 13 + id: ctx.cfg.serviceDid, 14 + service: [ 15 + { 16 + id: '#bsky_fg', 17 + type: 'BskyFeedGenerator', 18 + serviceEndpoint: `https://${ctx.cfg.hostname}`, 19 + }, 20 + ], 21 + }) 22 + }) 23 + 24 + return router 25 + } 26 + export default makeRouter
+16
tsconfig.json
··· 1 + { 2 + "compilerOptions": { 3 + "lib": ["ESNext"], 4 + "outDir": "dist", 5 + "module": "CommonJS", 6 + "target": "ES6", 7 + "esModuleInterop": true, 8 + "moduleResolution": "node", 9 + "alwaysStrict": true, 10 + "allowUnreachableCode": false, 11 + "strictNullChecks": true, 12 + "skipLibCheck": true 13 + }, 14 + "include": ["./src/**/*.ts"], 15 + "exclude": ["node_modules"] 16 + }