this repo has no description
0
fork

Configure Feed

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

feed generator starter kit

dholms 7421e718

+13584
+1
.gitignore
··· 1 + node_modules
+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 + }
+147
README.md
··· 1 + # ATProto Feed Generator 2 + 3 + 🚧 Work in Progress 🚧 4 + 5 + We are actively developing Feed Generator integration into the Bluesky PDS. Though we are reasonably confident about the general shape and interfaces laid out here, these interfaces and implementation details _are_ subject to change. 6 + 7 + We've put together a starter kit for devs. It doesn't do everything, but it should be enough to get you familiar with the system & started building! 8 + 9 + ## Overview 10 + 11 + Feed Generators are services that provide custom algorithms to users through the AT protocol. 12 + 13 + They work very simply: the server receives a request from a user's server and returns a list of [post URIs](https://atproto.com/specs/at-uri-scheme) with some optional metadata attached. Those posts are then "hydrated" into full objects by the requesting server and sent back to the client. This route is described in the `com.atproto.feed.getFeedSkeleton` lexicon. (@TODO insert link) 14 + 15 + Think of Feed Generators like a user with an API attached. Like atproto users, a Feed Generator is identified by a DID/handle and uses a data repository which holds information like its profile. However, a Feed Generator's DID Document also declares a `#bsky_fg` service endpoint that fulfills the interface for a Feed Generator. 16 + 17 + The general flow of providing a custom algorithm to a user is as follows: 18 + - A user requests a feed from their server (PDS). Let's say the feed is identified by `@custom-algo.xyz` 19 + - The PDS resolves `@custom-algo.xyz` to its corresponding DID document 20 + - The PDS sends a `getFeedSkeleton` request to the service endpoint with ID `#bsky_fg` 21 + - This request is authenticated by a JWT signed by the user's repo signing key 22 + - The Feed Generator returns a skeleton of the feed to the user's PDS 23 + - The PDS hydrates the feed (user info, post contents, aggregates, etc) 24 + - In the future, the PDS will hydrate the feed with the help of an App View, but for now the PDS handles hydration itself 25 + - The PDS returns the hydrated feed to the user 26 + 27 + To the user this should feel like visiting a page in the app. Once they subscribe, it will appear in their home interface as one of their available feeds. 28 + 29 + ## Getting Started 30 + 31 + For now, your algorithm will need to have an account & repository on the `bsky.social` PDS. 32 + 33 + First, edit the provided `setup.json` to include your preferred handle, password & invite code, along with the hostname that you will be running this server at. Then run with `yarn setup`. 34 + 35 + If you need an invite code, please reach out to a Bluesky team member & inform them that you are building a Feed Generator 36 + 37 + Note: _do not_ use your handle/password from you personal bluesky account. This is a _new account_ for the Feed Generator. 38 + 39 + We've setup this simple server with sqlite to store & query data. Feel free to switch this out for whichever database you prefer. 40 + 41 + Next you will need to do two things: 42 + 43 + - Implement indexing logic in `src/subscription.ts`. 44 + 45 + This will subscribe to the repo subscription stream on startup, parse event & index them according to your provided logic 46 + 47 + - Implement feed generation logic in `src/feed-generation.ts` 48 + 49 + The types are in place and you will just need to return something that satisfies the `SkeletonFeedPost[]` type 50 + 51 + For inspiration, we've provided a very simple feed algorithm that returns recent posts from the Bluesky team. 52 + 53 + ## Some Details 54 + 55 + ### Skeleton Metadata 56 + 57 + The skeleton that a Feed Generator puts together is, in its simplest form, a list of post uris. 58 + 59 + ```ts 60 + [ 61 + {post: 'at://did:example:1234/app.bsky.feed.post/1'}, 62 + {post: 'at://did:example:1234/app.bsky.feed.post/2'}, 63 + {post: 'at://did:example:1234/app.bsky.feed.post/3'} 64 + ] 65 + ``` 66 + 67 + However, we include two locations to attach some additional context. Here is the full schema: 68 + 69 + ```ts 70 + type SkeletonItem = { 71 + post: string // post URI 72 + 73 + // optional metadata about the thread that this post is in reply to 74 + replyTo?: { 75 + root: string, // reply root URI 76 + parent: string, // reply parent URI 77 + } 78 + 79 + // optional reason for inclusion in the feed 80 + // (generally to be displayed in client) 81 + reason?: Reason 82 + } 83 + 84 + // for now, the only defined reason is a repost, but this is open to extension 85 + type Reason = ReasonRepost 86 + 87 + type ReasonRepost = { 88 + $type: @TODO 89 + by: string // the did of the reposting user 90 + indexedAt: string // the time that the repost took place 91 + } 92 + ``` 93 + 94 + This metadata serves two purposes: 95 + 96 + 1. To aid the PDS in hydrating all relevant post information 97 + 2. To give a cue to the client in terms of context to display when rendering a post 98 + 99 + ### Authentication 100 + 101 + If you are creating a generic feed that does not differ for different users, you do not need to check auth. But if a user's state (such as follows or likes) is taken into account, we _strongly_ encourage you to validate their auth token. 102 + 103 + Users are authenticated with a simple JWT signed by the user's repo signing key. 104 + 105 + This JWT header/payload takes the format: 106 + ```ts 107 + const header = { 108 + type: "JWT", 109 + alg: "ES256K" // (key algorithm) - in this case secp256k1 110 + } 111 + const payload = { 112 + iss: "did:example:alice", // (issuer) the requesting user's DID 113 + aud: "did:example:feedGenerator", // (audience) the DID of the Feed Generator 114 + exp: 1683643619 // (expiration) unix timestamp in seconds 115 + } 116 + ``` 117 + 118 + We provide utilities for verifying user JWTs in `@TODO_PACKAGE` 119 + 120 + ### Pagination 121 + You'll notice that the `getFeedSkeleton` method returns a `cursor` in its response & takes a `cursor` param as input. 122 + 123 + This cursor is treated as an opaque value & fully at the Feed Generator's discretion. It is simply pased through he PDS directly to & from the client. 124 + 125 + We strongly encourage that the cursor be _unique per feed item_ to prevent unexpected behavior in pagination. 126 + 127 + We recommend, for instance, a compound cursor with a timestamp + a CID: 128 + `1683654690921::bafyreia3tbsfxe3cc75xrxyyn6qc42oupi73fxiox76prlyi5bpx7hr72u` 129 + 130 + ## Suggestions for Implementation 131 + 132 + How a feed generator fulfills the `getFeedSkeleton` request is completely at their discretion. At the simplest end, a Feed Generator could supply a "feed" that only contains some hardcoded posts. 133 + 134 + For most usecases, we recommend subscribing to the firehose at `com.atproto.sync.subscribeRepos`. This websocket will send you every record that is published on the network. Since Feed Generators do not need to provide hydrated posts, you can index as much or as little of the firehose as necessary. 135 + 136 + Depending on your algorithm, you likely do not need to keep posts around for long. Unless your algorithm is intended to provide "posts you missed" or something similar, you can likely garbage collect any data that is older than 48 hours. 137 + 138 + Some examples: 139 + 140 + ### Reimplementing What's Hot 141 + To reimplement "What's Hot", you may subscribe to the firehose & filter for all posts & likes (ignoring profiles/reposts/follows/etc). You would keep a running tally of likes per post & when a PDS requests a feed, you would send the most recent posts that pass some threshold of likes. 142 + 143 + ### A Community Feed 144 + You might create a feed for a given community by compiling a list of DIDs within that community & filtering the firehose for all posts from users within that list. 145 + 146 + ### A Topical Feed 147 + To implement a topical feed, you might filter the algorithm for posts and pass the post text through some filtering mechanism (an LLM, a keyword matcher, etc) that filters for the topic of your choice.
+27
package.json
··· 1 + { 2 + "name": "feed-generator", 3 + "version": "1.0.0", 4 + "description": "atproto feed generator starter kit", 5 + "main": "index.js", 6 + "repository": "git@github.com:bluesky-social/feed-generator.git", 7 + "author": "dholms <dtholmgren@gmail.com>", 8 + "license": "MIT", 9 + "scripts": { 10 + "start": "ts-node src/index.ts" 11 + }, 12 + "dependencies": { 13 + "@atproto/repo": "^0.1.0", 14 + "@atproto/uri": "^0.0.2", 15 + "@atproto/xrpc-server": "^0.1.0", 16 + "better-sqlite3": "^8.3.0", 17 + "express": "^4.18.2", 18 + "kysely": "^0.22.0" 19 + }, 20 + "devDependencies": { 21 + "@types/better-sqlite3": "^7.6.4", 22 + "@types/express": "^4.17.17", 23 + "@types/node": "^20.1.1", 24 + "ts-node": "^10.9.1", 25 + "typescript": "^5.0.4" 26 + } 27 + }
+30
src/db/index.ts
··· 1 + import { Kysely, SqliteDialect } from 'kysely' 2 + import SqliteDb from 'better-sqlite3' 3 + 4 + export const createDb = (location: string): Database => { 5 + return new Kysely<DatabaseSchema>({ 6 + dialect: new SqliteDialect({ 7 + database: new SqliteDb(location), 8 + }), 9 + }) 10 + } 11 + 12 + export type Database = Kysely<DatabaseSchema> 13 + 14 + export type PostTable = { 15 + uri: string 16 + cid: string 17 + replyParent: string | null 18 + replyRoot: string | null 19 + indexedAt: string 20 + } 21 + 22 + export type SubStateTable = { 23 + service: string 24 + cursor: number 25 + } 26 + 27 + export type DatabaseSchema = { 28 + posts: PostTable 29 + sub_state: SubStateTable 30 + }
+54
src/feed-generation.ts
··· 1 + import { InvalidRequestError } from '@atproto/xrpc-server' 2 + import { Database } from './db' 3 + import { Server } from './lexicon' 4 + 5 + export default function (server: Server, db: Database) { 6 + server.app.bsky.feed.getFeedSkeleton(async ({ params, auth }) => { 7 + if (params.feed !== 'alf.bsky.social') { 8 + throw new InvalidRequestError('algorithm unsupported') 9 + } 10 + let builder = db 11 + .selectFrom('posts') 12 + .selectAll() 13 + .orderBy('indexedAt', 'desc') 14 + .orderBy('cid', 'desc') 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('posts.indexedAt', '<', timeStr) 24 + .orWhere((qb) => qb.where('posts.indexedAt', '=', timeStr)) 25 + .where('posts.cid', '<', cid) 26 + } 27 + const res = await builder.execute() 28 + 29 + const feed = res.map((row) => ({ 30 + post: row.uri, 31 + replyTo: 32 + row.replyParent && row.replyRoot 33 + ? { 34 + root: row.replyRoot, 35 + parent: row.replyParent, 36 + } 37 + : undefined, 38 + })) 39 + 40 + let cursor: string | undefined 41 + const last = res.at(-1) 42 + if (last) { 43 + cursor = `${new Date(last.indexedAt).getTime()}::${last.cid}` 44 + } 45 + 46 + return { 47 + encoding: 'application/json', 48 + body: { 49 + cursor, 50 + feed, 51 + }, 52 + } 53 + }) 54 + }
+10
src/index.ts
··· 1 + import FeedGenerator from './server' 2 + 3 + const run = async () => { 4 + // we'll add .env soon 5 + const server = FeedGenerator.create() 6 + await server.start() 7 + console.log(`🤖 running feed generator at localhost${server.cfg.port}`) 8 + } 9 + 10 + run()
+947
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 ComAtprotoAdminDisableInviteCodes from './types/com/atproto/admin/disableInviteCodes' 13 + import * as ComAtprotoAdminGetInviteCodes from './types/com/atproto/admin/getInviteCodes' 14 + import * as ComAtprotoAdminGetModerationAction from './types/com/atproto/admin/getModerationAction' 15 + import * as ComAtprotoAdminGetModerationActions from './types/com/atproto/admin/getModerationActions' 16 + import * as ComAtprotoAdminGetModerationReport from './types/com/atproto/admin/getModerationReport' 17 + import * as ComAtprotoAdminGetModerationReports from './types/com/atproto/admin/getModerationReports' 18 + import * as ComAtprotoAdminGetRecord from './types/com/atproto/admin/getRecord' 19 + import * as ComAtprotoAdminGetRepo from './types/com/atproto/admin/getRepo' 20 + import * as ComAtprotoAdminResolveModerationReports from './types/com/atproto/admin/resolveModerationReports' 21 + import * as ComAtprotoAdminReverseModerationAction from './types/com/atproto/admin/reverseModerationAction' 22 + import * as ComAtprotoAdminSearchRepos from './types/com/atproto/admin/searchRepos' 23 + import * as ComAtprotoAdminTakeModerationAction from './types/com/atproto/admin/takeModerationAction' 24 + import * as ComAtprotoAdminUpdateAccountEmail from './types/com/atproto/admin/updateAccountEmail' 25 + import * as ComAtprotoAdminUpdateAccountHandle from './types/com/atproto/admin/updateAccountHandle' 26 + import * as ComAtprotoIdentityResolveHandle from './types/com/atproto/identity/resolveHandle' 27 + import * as ComAtprotoIdentityUpdateHandle from './types/com/atproto/identity/updateHandle' 28 + import * as ComAtprotoLabelQueryLabels from './types/com/atproto/label/queryLabels' 29 + import * as ComAtprotoLabelSubscribeLabels from './types/com/atproto/label/subscribeLabels' 30 + import * as ComAtprotoModerationCreateReport from './types/com/atproto/moderation/createReport' 31 + import * as ComAtprotoRepoApplyWrites from './types/com/atproto/repo/applyWrites' 32 + import * as ComAtprotoRepoCreateRecord from './types/com/atproto/repo/createRecord' 33 + import * as ComAtprotoRepoDeleteRecord from './types/com/atproto/repo/deleteRecord' 34 + import * as ComAtprotoRepoDescribeRepo from './types/com/atproto/repo/describeRepo' 35 + import * as ComAtprotoRepoGetRecord from './types/com/atproto/repo/getRecord' 36 + import * as ComAtprotoRepoListRecords from './types/com/atproto/repo/listRecords' 37 + import * as ComAtprotoRepoPutRecord from './types/com/atproto/repo/putRecord' 38 + import * as ComAtprotoRepoUploadBlob from './types/com/atproto/repo/uploadBlob' 39 + import * as ComAtprotoServerCreateAccount from './types/com/atproto/server/createAccount' 40 + import * as ComAtprotoServerCreateAppPassword from './types/com/atproto/server/createAppPassword' 41 + import * as ComAtprotoServerCreateInviteCode from './types/com/atproto/server/createInviteCode' 42 + import * as ComAtprotoServerCreateInviteCodes from './types/com/atproto/server/createInviteCodes' 43 + import * as ComAtprotoServerCreateSession from './types/com/atproto/server/createSession' 44 + import * as ComAtprotoServerDeleteAccount from './types/com/atproto/server/deleteAccount' 45 + import * as ComAtprotoServerDeleteSession from './types/com/atproto/server/deleteSession' 46 + import * as ComAtprotoServerDescribeServer from './types/com/atproto/server/describeServer' 47 + import * as ComAtprotoServerGetAccountInviteCodes from './types/com/atproto/server/getAccountInviteCodes' 48 + import * as ComAtprotoServerGetSession from './types/com/atproto/server/getSession' 49 + import * as ComAtprotoServerListAppPasswords from './types/com/atproto/server/listAppPasswords' 50 + import * as ComAtprotoServerRefreshSession from './types/com/atproto/server/refreshSession' 51 + import * as ComAtprotoServerRequestAccountDelete from './types/com/atproto/server/requestAccountDelete' 52 + import * as ComAtprotoServerRequestPasswordReset from './types/com/atproto/server/requestPasswordReset' 53 + import * as ComAtprotoServerResetPassword from './types/com/atproto/server/resetPassword' 54 + import * as ComAtprotoServerRevokeAppPassword from './types/com/atproto/server/revokeAppPassword' 55 + import * as ComAtprotoSyncGetBlob from './types/com/atproto/sync/getBlob' 56 + import * as ComAtprotoSyncGetBlocks from './types/com/atproto/sync/getBlocks' 57 + import * as ComAtprotoSyncGetCheckout from './types/com/atproto/sync/getCheckout' 58 + import * as ComAtprotoSyncGetCommitPath from './types/com/atproto/sync/getCommitPath' 59 + import * as ComAtprotoSyncGetHead from './types/com/atproto/sync/getHead' 60 + import * as ComAtprotoSyncGetRecord from './types/com/atproto/sync/getRecord' 61 + import * as ComAtprotoSyncGetRepo from './types/com/atproto/sync/getRepo' 62 + import * as ComAtprotoSyncListBlobs from './types/com/atproto/sync/listBlobs' 63 + import * as ComAtprotoSyncListRepos from './types/com/atproto/sync/listRepos' 64 + import * as ComAtprotoSyncNotifyOfUpdate from './types/com/atproto/sync/notifyOfUpdate' 65 + import * as ComAtprotoSyncRequestCrawl from './types/com/atproto/sync/requestCrawl' 66 + import * as ComAtprotoSyncSubscribeRepos from './types/com/atproto/sync/subscribeRepos' 67 + import * as AppBskyActorGetProfile from './types/app/bsky/actor/getProfile' 68 + import * as AppBskyActorGetProfiles from './types/app/bsky/actor/getProfiles' 69 + import * as AppBskyActorGetSuggestions from './types/app/bsky/actor/getSuggestions' 70 + import * as AppBskyActorSearchActors from './types/app/bsky/actor/searchActors' 71 + import * as AppBskyActorSearchActorsTypeahead from './types/app/bsky/actor/searchActorsTypeahead' 72 + import * as AppBskyFeedBookmarkFeed from './types/app/bsky/feed/bookmarkFeed' 73 + import * as AppBskyFeedGetAuthorFeed from './types/app/bsky/feed/getAuthorFeed' 74 + import * as AppBskyFeedGetBookmarkedFeeds from './types/app/bsky/feed/getBookmarkedFeeds' 75 + import * as AppBskyFeedGetFeed from './types/app/bsky/feed/getFeed' 76 + import * as AppBskyFeedGetFeedSkeleton from './types/app/bsky/feed/getFeedSkeleton' 77 + import * as AppBskyFeedGetLikes from './types/app/bsky/feed/getLikes' 78 + import * as AppBskyFeedGetPostThread from './types/app/bsky/feed/getPostThread' 79 + import * as AppBskyFeedGetPosts from './types/app/bsky/feed/getPosts' 80 + import * as AppBskyFeedGetRepostedBy from './types/app/bsky/feed/getRepostedBy' 81 + import * as AppBskyFeedGetTimeline from './types/app/bsky/feed/getTimeline' 82 + import * as AppBskyFeedUnbookmarkFeed from './types/app/bsky/feed/unbookmarkFeed' 83 + import * as AppBskyGraphGetBlocks from './types/app/bsky/graph/getBlocks' 84 + import * as AppBskyGraphGetFollowers from './types/app/bsky/graph/getFollowers' 85 + import * as AppBskyGraphGetFollows from './types/app/bsky/graph/getFollows' 86 + import * as AppBskyGraphGetMutes from './types/app/bsky/graph/getMutes' 87 + import * as AppBskyGraphMuteActor from './types/app/bsky/graph/muteActor' 88 + import * as AppBskyGraphUnmuteActor from './types/app/bsky/graph/unmuteActor' 89 + import * as AppBskyNotificationGetUnreadCount from './types/app/bsky/notification/getUnreadCount' 90 + import * as AppBskyNotificationListNotifications from './types/app/bsky/notification/listNotifications' 91 + import * as AppBskyNotificationUpdateSeen from './types/app/bsky/notification/updateSeen' 92 + import * as AppBskyUnspeccedGetPopular from './types/app/bsky/unspecced/getPopular' 93 + 94 + export const COM_ATPROTO_ADMIN = { 95 + DefsTakedown: 'com.atproto.admin.defs#takedown', 96 + DefsFlag: 'com.atproto.admin.defs#flag', 97 + DefsAcknowledge: 'com.atproto.admin.defs#acknowledge', 98 + DefsEscalate: 'com.atproto.admin.defs#escalate', 99 + } 100 + export const COM_ATPROTO_MODERATION = { 101 + DefsReasonSpam: 'com.atproto.moderation.defs#reasonSpam', 102 + DefsReasonViolation: 'com.atproto.moderation.defs#reasonViolation', 103 + DefsReasonMisleading: 'com.atproto.moderation.defs#reasonMisleading', 104 + DefsReasonSexual: 'com.atproto.moderation.defs#reasonSexual', 105 + DefsReasonRude: 'com.atproto.moderation.defs#reasonRude', 106 + DefsReasonOther: 'com.atproto.moderation.defs#reasonOther', 107 + } 108 + export const APP_BSKY_ACTOR = { 109 + DefsUser: 'app.bsky.actor.defs#user', 110 + DefsFeedGenerator: 'app.bsky.actor.defs#feedGenerator', 111 + } 112 + 113 + export function createServer(options?: XrpcOptions): Server { 114 + return new Server(options) 115 + } 116 + 117 + export class Server { 118 + xrpc: XrpcServer 119 + com: ComNS 120 + app: AppNS 121 + 122 + constructor(options?: XrpcOptions) { 123 + this.xrpc = createXrpcServer(schemas, options) 124 + this.com = new ComNS(this) 125 + this.app = new AppNS(this) 126 + } 127 + } 128 + 129 + export class ComNS { 130 + _server: Server 131 + atproto: AtprotoNS 132 + 133 + constructor(server: Server) { 134 + this._server = server 135 + this.atproto = new AtprotoNS(server) 136 + } 137 + } 138 + 139 + export class AtprotoNS { 140 + _server: Server 141 + admin: AdminNS 142 + identity: IdentityNS 143 + label: LabelNS 144 + moderation: ModerationNS 145 + repo: RepoNS 146 + server: ServerNS 147 + sync: SyncNS 148 + 149 + constructor(server: Server) { 150 + this._server = server 151 + this.admin = new AdminNS(server) 152 + this.identity = new IdentityNS(server) 153 + this.label = new LabelNS(server) 154 + this.moderation = new ModerationNS(server) 155 + this.repo = new RepoNS(server) 156 + this.server = new ServerNS(server) 157 + this.sync = new SyncNS(server) 158 + } 159 + } 160 + 161 + export class AdminNS { 162 + _server: Server 163 + 164 + constructor(server: Server) { 165 + this._server = server 166 + } 167 + 168 + disableInviteCodes<AV extends AuthVerifier>( 169 + cfg: ConfigOf< 170 + AV, 171 + ComAtprotoAdminDisableInviteCodes.Handler<ExtractAuth<AV>> 172 + >, 173 + ) { 174 + const nsid = 'com.atproto.admin.disableInviteCodes' // @ts-ignore 175 + return this._server.xrpc.method(nsid, cfg) 176 + } 177 + 178 + getInviteCodes<AV extends AuthVerifier>( 179 + cfg: ConfigOf<AV, ComAtprotoAdminGetInviteCodes.Handler<ExtractAuth<AV>>>, 180 + ) { 181 + const nsid = 'com.atproto.admin.getInviteCodes' // @ts-ignore 182 + return this._server.xrpc.method(nsid, cfg) 183 + } 184 + 185 + getModerationAction<AV extends AuthVerifier>( 186 + cfg: ConfigOf< 187 + AV, 188 + ComAtprotoAdminGetModerationAction.Handler<ExtractAuth<AV>> 189 + >, 190 + ) { 191 + const nsid = 'com.atproto.admin.getModerationAction' // @ts-ignore 192 + return this._server.xrpc.method(nsid, cfg) 193 + } 194 + 195 + getModerationActions<AV extends AuthVerifier>( 196 + cfg: ConfigOf< 197 + AV, 198 + ComAtprotoAdminGetModerationActions.Handler<ExtractAuth<AV>> 199 + >, 200 + ) { 201 + const nsid = 'com.atproto.admin.getModerationActions' // @ts-ignore 202 + return this._server.xrpc.method(nsid, cfg) 203 + } 204 + 205 + getModerationReport<AV extends AuthVerifier>( 206 + cfg: ConfigOf< 207 + AV, 208 + ComAtprotoAdminGetModerationReport.Handler<ExtractAuth<AV>> 209 + >, 210 + ) { 211 + const nsid = 'com.atproto.admin.getModerationReport' // @ts-ignore 212 + return this._server.xrpc.method(nsid, cfg) 213 + } 214 + 215 + getModerationReports<AV extends AuthVerifier>( 216 + cfg: ConfigOf< 217 + AV, 218 + ComAtprotoAdminGetModerationReports.Handler<ExtractAuth<AV>> 219 + >, 220 + ) { 221 + const nsid = 'com.atproto.admin.getModerationReports' // @ts-ignore 222 + return this._server.xrpc.method(nsid, cfg) 223 + } 224 + 225 + getRecord<AV extends AuthVerifier>( 226 + cfg: ConfigOf<AV, ComAtprotoAdminGetRecord.Handler<ExtractAuth<AV>>>, 227 + ) { 228 + const nsid = 'com.atproto.admin.getRecord' // @ts-ignore 229 + return this._server.xrpc.method(nsid, cfg) 230 + } 231 + 232 + getRepo<AV extends AuthVerifier>( 233 + cfg: ConfigOf<AV, ComAtprotoAdminGetRepo.Handler<ExtractAuth<AV>>>, 234 + ) { 235 + const nsid = 'com.atproto.admin.getRepo' // @ts-ignore 236 + return this._server.xrpc.method(nsid, cfg) 237 + } 238 + 239 + resolveModerationReports<AV extends AuthVerifier>( 240 + cfg: ConfigOf< 241 + AV, 242 + ComAtprotoAdminResolveModerationReports.Handler<ExtractAuth<AV>> 243 + >, 244 + ) { 245 + const nsid = 'com.atproto.admin.resolveModerationReports' // @ts-ignore 246 + return this._server.xrpc.method(nsid, cfg) 247 + } 248 + 249 + reverseModerationAction<AV extends AuthVerifier>( 250 + cfg: ConfigOf< 251 + AV, 252 + ComAtprotoAdminReverseModerationAction.Handler<ExtractAuth<AV>> 253 + >, 254 + ) { 255 + const nsid = 'com.atproto.admin.reverseModerationAction' // @ts-ignore 256 + return this._server.xrpc.method(nsid, cfg) 257 + } 258 + 259 + searchRepos<AV extends AuthVerifier>( 260 + cfg: ConfigOf<AV, ComAtprotoAdminSearchRepos.Handler<ExtractAuth<AV>>>, 261 + ) { 262 + const nsid = 'com.atproto.admin.searchRepos' // @ts-ignore 263 + return this._server.xrpc.method(nsid, cfg) 264 + } 265 + 266 + takeModerationAction<AV extends AuthVerifier>( 267 + cfg: ConfigOf< 268 + AV, 269 + ComAtprotoAdminTakeModerationAction.Handler<ExtractAuth<AV>> 270 + >, 271 + ) { 272 + const nsid = 'com.atproto.admin.takeModerationAction' // @ts-ignore 273 + return this._server.xrpc.method(nsid, cfg) 274 + } 275 + 276 + updateAccountEmail<AV extends AuthVerifier>( 277 + cfg: ConfigOf< 278 + AV, 279 + ComAtprotoAdminUpdateAccountEmail.Handler<ExtractAuth<AV>> 280 + >, 281 + ) { 282 + const nsid = 'com.atproto.admin.updateAccountEmail' // @ts-ignore 283 + return this._server.xrpc.method(nsid, cfg) 284 + } 285 + 286 + updateAccountHandle<AV extends AuthVerifier>( 287 + cfg: ConfigOf< 288 + AV, 289 + ComAtprotoAdminUpdateAccountHandle.Handler<ExtractAuth<AV>> 290 + >, 291 + ) { 292 + const nsid = 'com.atproto.admin.updateAccountHandle' // @ts-ignore 293 + return this._server.xrpc.method(nsid, cfg) 294 + } 295 + } 296 + 297 + export class IdentityNS { 298 + _server: Server 299 + 300 + constructor(server: Server) { 301 + this._server = server 302 + } 303 + 304 + resolveHandle<AV extends AuthVerifier>( 305 + cfg: ConfigOf<AV, ComAtprotoIdentityResolveHandle.Handler<ExtractAuth<AV>>>, 306 + ) { 307 + const nsid = 'com.atproto.identity.resolveHandle' // @ts-ignore 308 + return this._server.xrpc.method(nsid, cfg) 309 + } 310 + 311 + updateHandle<AV extends AuthVerifier>( 312 + cfg: ConfigOf<AV, ComAtprotoIdentityUpdateHandle.Handler<ExtractAuth<AV>>>, 313 + ) { 314 + const nsid = 'com.atproto.identity.updateHandle' // @ts-ignore 315 + return this._server.xrpc.method(nsid, cfg) 316 + } 317 + } 318 + 319 + export class LabelNS { 320 + _server: Server 321 + 322 + constructor(server: Server) { 323 + this._server = server 324 + } 325 + 326 + queryLabels<AV extends AuthVerifier>( 327 + cfg: ConfigOf<AV, ComAtprotoLabelQueryLabels.Handler<ExtractAuth<AV>>>, 328 + ) { 329 + const nsid = 'com.atproto.label.queryLabels' // @ts-ignore 330 + return this._server.xrpc.method(nsid, cfg) 331 + } 332 + 333 + subscribeLabels<AV extends StreamAuthVerifier>( 334 + cfg: ConfigOf<AV, ComAtprotoLabelSubscribeLabels.Handler<ExtractAuth<AV>>>, 335 + ) { 336 + const nsid = 'com.atproto.label.subscribeLabels' // @ts-ignore 337 + return this._server.xrpc.streamMethod(nsid, cfg) 338 + } 339 + } 340 + 341 + export class ModerationNS { 342 + _server: Server 343 + 344 + constructor(server: Server) { 345 + this._server = server 346 + } 347 + 348 + createReport<AV extends AuthVerifier>( 349 + cfg: ConfigOf< 350 + AV, 351 + ComAtprotoModerationCreateReport.Handler<ExtractAuth<AV>> 352 + >, 353 + ) { 354 + const nsid = 'com.atproto.moderation.createReport' // @ts-ignore 355 + return this._server.xrpc.method(nsid, cfg) 356 + } 357 + } 358 + 359 + export class RepoNS { 360 + _server: Server 361 + 362 + constructor(server: Server) { 363 + this._server = server 364 + } 365 + 366 + applyWrites<AV extends AuthVerifier>( 367 + cfg: ConfigOf<AV, ComAtprotoRepoApplyWrites.Handler<ExtractAuth<AV>>>, 368 + ) { 369 + const nsid = 'com.atproto.repo.applyWrites' // @ts-ignore 370 + return this._server.xrpc.method(nsid, cfg) 371 + } 372 + 373 + createRecord<AV extends AuthVerifier>( 374 + cfg: ConfigOf<AV, ComAtprotoRepoCreateRecord.Handler<ExtractAuth<AV>>>, 375 + ) { 376 + const nsid = 'com.atproto.repo.createRecord' // @ts-ignore 377 + return this._server.xrpc.method(nsid, cfg) 378 + } 379 + 380 + deleteRecord<AV extends AuthVerifier>( 381 + cfg: ConfigOf<AV, ComAtprotoRepoDeleteRecord.Handler<ExtractAuth<AV>>>, 382 + ) { 383 + const nsid = 'com.atproto.repo.deleteRecord' // @ts-ignore 384 + return this._server.xrpc.method(nsid, cfg) 385 + } 386 + 387 + describeRepo<AV extends AuthVerifier>( 388 + cfg: ConfigOf<AV, ComAtprotoRepoDescribeRepo.Handler<ExtractAuth<AV>>>, 389 + ) { 390 + const nsid = 'com.atproto.repo.describeRepo' // @ts-ignore 391 + return this._server.xrpc.method(nsid, cfg) 392 + } 393 + 394 + getRecord<AV extends AuthVerifier>( 395 + cfg: ConfigOf<AV, ComAtprotoRepoGetRecord.Handler<ExtractAuth<AV>>>, 396 + ) { 397 + const nsid = 'com.atproto.repo.getRecord' // @ts-ignore 398 + return this._server.xrpc.method(nsid, cfg) 399 + } 400 + 401 + listRecords<AV extends AuthVerifier>( 402 + cfg: ConfigOf<AV, ComAtprotoRepoListRecords.Handler<ExtractAuth<AV>>>, 403 + ) { 404 + const nsid = 'com.atproto.repo.listRecords' // @ts-ignore 405 + return this._server.xrpc.method(nsid, cfg) 406 + } 407 + 408 + putRecord<AV extends AuthVerifier>( 409 + cfg: ConfigOf<AV, ComAtprotoRepoPutRecord.Handler<ExtractAuth<AV>>>, 410 + ) { 411 + const nsid = 'com.atproto.repo.putRecord' // @ts-ignore 412 + return this._server.xrpc.method(nsid, cfg) 413 + } 414 + 415 + uploadBlob<AV extends AuthVerifier>( 416 + cfg: ConfigOf<AV, ComAtprotoRepoUploadBlob.Handler<ExtractAuth<AV>>>, 417 + ) { 418 + const nsid = 'com.atproto.repo.uploadBlob' // @ts-ignore 419 + return this._server.xrpc.method(nsid, cfg) 420 + } 421 + } 422 + 423 + export class ServerNS { 424 + _server: Server 425 + 426 + constructor(server: Server) { 427 + this._server = server 428 + } 429 + 430 + createAccount<AV extends AuthVerifier>( 431 + cfg: ConfigOf<AV, ComAtprotoServerCreateAccount.Handler<ExtractAuth<AV>>>, 432 + ) { 433 + const nsid = 'com.atproto.server.createAccount' // @ts-ignore 434 + return this._server.xrpc.method(nsid, cfg) 435 + } 436 + 437 + createAppPassword<AV extends AuthVerifier>( 438 + cfg: ConfigOf< 439 + AV, 440 + ComAtprotoServerCreateAppPassword.Handler<ExtractAuth<AV>> 441 + >, 442 + ) { 443 + const nsid = 'com.atproto.server.createAppPassword' // @ts-ignore 444 + return this._server.xrpc.method(nsid, cfg) 445 + } 446 + 447 + createInviteCode<AV extends AuthVerifier>( 448 + cfg: ConfigOf< 449 + AV, 450 + ComAtprotoServerCreateInviteCode.Handler<ExtractAuth<AV>> 451 + >, 452 + ) { 453 + const nsid = 'com.atproto.server.createInviteCode' // @ts-ignore 454 + return this._server.xrpc.method(nsid, cfg) 455 + } 456 + 457 + createInviteCodes<AV extends AuthVerifier>( 458 + cfg: ConfigOf< 459 + AV, 460 + ComAtprotoServerCreateInviteCodes.Handler<ExtractAuth<AV>> 461 + >, 462 + ) { 463 + const nsid = 'com.atproto.server.createInviteCodes' // @ts-ignore 464 + return this._server.xrpc.method(nsid, cfg) 465 + } 466 + 467 + createSession<AV extends AuthVerifier>( 468 + cfg: ConfigOf<AV, ComAtprotoServerCreateSession.Handler<ExtractAuth<AV>>>, 469 + ) { 470 + const nsid = 'com.atproto.server.createSession' // @ts-ignore 471 + return this._server.xrpc.method(nsid, cfg) 472 + } 473 + 474 + deleteAccount<AV extends AuthVerifier>( 475 + cfg: ConfigOf<AV, ComAtprotoServerDeleteAccount.Handler<ExtractAuth<AV>>>, 476 + ) { 477 + const nsid = 'com.atproto.server.deleteAccount' // @ts-ignore 478 + return this._server.xrpc.method(nsid, cfg) 479 + } 480 + 481 + deleteSession<AV extends AuthVerifier>( 482 + cfg: ConfigOf<AV, ComAtprotoServerDeleteSession.Handler<ExtractAuth<AV>>>, 483 + ) { 484 + const nsid = 'com.atproto.server.deleteSession' // @ts-ignore 485 + return this._server.xrpc.method(nsid, cfg) 486 + } 487 + 488 + describeServer<AV extends AuthVerifier>( 489 + cfg: ConfigOf<AV, ComAtprotoServerDescribeServer.Handler<ExtractAuth<AV>>>, 490 + ) { 491 + const nsid = 'com.atproto.server.describeServer' // @ts-ignore 492 + return this._server.xrpc.method(nsid, cfg) 493 + } 494 + 495 + getAccountInviteCodes<AV extends AuthVerifier>( 496 + cfg: ConfigOf< 497 + AV, 498 + ComAtprotoServerGetAccountInviteCodes.Handler<ExtractAuth<AV>> 499 + >, 500 + ) { 501 + const nsid = 'com.atproto.server.getAccountInviteCodes' // @ts-ignore 502 + return this._server.xrpc.method(nsid, cfg) 503 + } 504 + 505 + getSession<AV extends AuthVerifier>( 506 + cfg: ConfigOf<AV, ComAtprotoServerGetSession.Handler<ExtractAuth<AV>>>, 507 + ) { 508 + const nsid = 'com.atproto.server.getSession' // @ts-ignore 509 + return this._server.xrpc.method(nsid, cfg) 510 + } 511 + 512 + listAppPasswords<AV extends AuthVerifier>( 513 + cfg: ConfigOf< 514 + AV, 515 + ComAtprotoServerListAppPasswords.Handler<ExtractAuth<AV>> 516 + >, 517 + ) { 518 + const nsid = 'com.atproto.server.listAppPasswords' // @ts-ignore 519 + return this._server.xrpc.method(nsid, cfg) 520 + } 521 + 522 + refreshSession<AV extends AuthVerifier>( 523 + cfg: ConfigOf<AV, ComAtprotoServerRefreshSession.Handler<ExtractAuth<AV>>>, 524 + ) { 525 + const nsid = 'com.atproto.server.refreshSession' // @ts-ignore 526 + return this._server.xrpc.method(nsid, cfg) 527 + } 528 + 529 + requestAccountDelete<AV extends AuthVerifier>( 530 + cfg: ConfigOf< 531 + AV, 532 + ComAtprotoServerRequestAccountDelete.Handler<ExtractAuth<AV>> 533 + >, 534 + ) { 535 + const nsid = 'com.atproto.server.requestAccountDelete' // @ts-ignore 536 + return this._server.xrpc.method(nsid, cfg) 537 + } 538 + 539 + requestPasswordReset<AV extends AuthVerifier>( 540 + cfg: ConfigOf< 541 + AV, 542 + ComAtprotoServerRequestPasswordReset.Handler<ExtractAuth<AV>> 543 + >, 544 + ) { 545 + const nsid = 'com.atproto.server.requestPasswordReset' // @ts-ignore 546 + return this._server.xrpc.method(nsid, cfg) 547 + } 548 + 549 + resetPassword<AV extends AuthVerifier>( 550 + cfg: ConfigOf<AV, ComAtprotoServerResetPassword.Handler<ExtractAuth<AV>>>, 551 + ) { 552 + const nsid = 'com.atproto.server.resetPassword' // @ts-ignore 553 + return this._server.xrpc.method(nsid, cfg) 554 + } 555 + 556 + revokeAppPassword<AV extends AuthVerifier>( 557 + cfg: ConfigOf< 558 + AV, 559 + ComAtprotoServerRevokeAppPassword.Handler<ExtractAuth<AV>> 560 + >, 561 + ) { 562 + const nsid = 'com.atproto.server.revokeAppPassword' // @ts-ignore 563 + return this._server.xrpc.method(nsid, cfg) 564 + } 565 + } 566 + 567 + export class SyncNS { 568 + _server: Server 569 + 570 + constructor(server: Server) { 571 + this._server = server 572 + } 573 + 574 + getBlob<AV extends AuthVerifier>( 575 + cfg: ConfigOf<AV, ComAtprotoSyncGetBlob.Handler<ExtractAuth<AV>>>, 576 + ) { 577 + const nsid = 'com.atproto.sync.getBlob' // @ts-ignore 578 + return this._server.xrpc.method(nsid, cfg) 579 + } 580 + 581 + getBlocks<AV extends AuthVerifier>( 582 + cfg: ConfigOf<AV, ComAtprotoSyncGetBlocks.Handler<ExtractAuth<AV>>>, 583 + ) { 584 + const nsid = 'com.atproto.sync.getBlocks' // @ts-ignore 585 + return this._server.xrpc.method(nsid, cfg) 586 + } 587 + 588 + getCheckout<AV extends AuthVerifier>( 589 + cfg: ConfigOf<AV, ComAtprotoSyncGetCheckout.Handler<ExtractAuth<AV>>>, 590 + ) { 591 + const nsid = 'com.atproto.sync.getCheckout' // @ts-ignore 592 + return this._server.xrpc.method(nsid, cfg) 593 + } 594 + 595 + getCommitPath<AV extends AuthVerifier>( 596 + cfg: ConfigOf<AV, ComAtprotoSyncGetCommitPath.Handler<ExtractAuth<AV>>>, 597 + ) { 598 + const nsid = 'com.atproto.sync.getCommitPath' // @ts-ignore 599 + return this._server.xrpc.method(nsid, cfg) 600 + } 601 + 602 + getHead<AV extends AuthVerifier>( 603 + cfg: ConfigOf<AV, ComAtprotoSyncGetHead.Handler<ExtractAuth<AV>>>, 604 + ) { 605 + const nsid = 'com.atproto.sync.getHead' // @ts-ignore 606 + return this._server.xrpc.method(nsid, cfg) 607 + } 608 + 609 + getRecord<AV extends AuthVerifier>( 610 + cfg: ConfigOf<AV, ComAtprotoSyncGetRecord.Handler<ExtractAuth<AV>>>, 611 + ) { 612 + const nsid = 'com.atproto.sync.getRecord' // @ts-ignore 613 + return this._server.xrpc.method(nsid, cfg) 614 + } 615 + 616 + getRepo<AV extends AuthVerifier>( 617 + cfg: ConfigOf<AV, ComAtprotoSyncGetRepo.Handler<ExtractAuth<AV>>>, 618 + ) { 619 + const nsid = 'com.atproto.sync.getRepo' // @ts-ignore 620 + return this._server.xrpc.method(nsid, cfg) 621 + } 622 + 623 + listBlobs<AV extends AuthVerifier>( 624 + cfg: ConfigOf<AV, ComAtprotoSyncListBlobs.Handler<ExtractAuth<AV>>>, 625 + ) { 626 + const nsid = 'com.atproto.sync.listBlobs' // @ts-ignore 627 + return this._server.xrpc.method(nsid, cfg) 628 + } 629 + 630 + listRepos<AV extends AuthVerifier>( 631 + cfg: ConfigOf<AV, ComAtprotoSyncListRepos.Handler<ExtractAuth<AV>>>, 632 + ) { 633 + const nsid = 'com.atproto.sync.listRepos' // @ts-ignore 634 + return this._server.xrpc.method(nsid, cfg) 635 + } 636 + 637 + notifyOfUpdate<AV extends AuthVerifier>( 638 + cfg: ConfigOf<AV, ComAtprotoSyncNotifyOfUpdate.Handler<ExtractAuth<AV>>>, 639 + ) { 640 + const nsid = 'com.atproto.sync.notifyOfUpdate' // @ts-ignore 641 + return this._server.xrpc.method(nsid, cfg) 642 + } 643 + 644 + requestCrawl<AV extends AuthVerifier>( 645 + cfg: ConfigOf<AV, ComAtprotoSyncRequestCrawl.Handler<ExtractAuth<AV>>>, 646 + ) { 647 + const nsid = 'com.atproto.sync.requestCrawl' // @ts-ignore 648 + return this._server.xrpc.method(nsid, cfg) 649 + } 650 + 651 + subscribeRepos<AV extends StreamAuthVerifier>( 652 + cfg: ConfigOf<AV, ComAtprotoSyncSubscribeRepos.Handler<ExtractAuth<AV>>>, 653 + ) { 654 + const nsid = 'com.atproto.sync.subscribeRepos' // @ts-ignore 655 + return this._server.xrpc.streamMethod(nsid, cfg) 656 + } 657 + } 658 + 659 + export class AppNS { 660 + _server: Server 661 + bsky: BskyNS 662 + 663 + constructor(server: Server) { 664 + this._server = server 665 + this.bsky = new BskyNS(server) 666 + } 667 + } 668 + 669 + export class BskyNS { 670 + _server: Server 671 + actor: ActorNS 672 + embed: EmbedNS 673 + feed: FeedNS 674 + graph: GraphNS 675 + notification: NotificationNS 676 + richtext: RichtextNS 677 + unspecced: UnspeccedNS 678 + 679 + constructor(server: Server) { 680 + this._server = server 681 + this.actor = new ActorNS(server) 682 + this.embed = new EmbedNS(server) 683 + this.feed = new FeedNS(server) 684 + this.graph = new GraphNS(server) 685 + this.notification = new NotificationNS(server) 686 + this.richtext = new RichtextNS(server) 687 + this.unspecced = new UnspeccedNS(server) 688 + } 689 + } 690 + 691 + export class ActorNS { 692 + _server: Server 693 + 694 + constructor(server: Server) { 695 + this._server = server 696 + } 697 + 698 + getProfile<AV extends AuthVerifier>( 699 + cfg: ConfigOf<AV, AppBskyActorGetProfile.Handler<ExtractAuth<AV>>>, 700 + ) { 701 + const nsid = 'app.bsky.actor.getProfile' // @ts-ignore 702 + return this._server.xrpc.method(nsid, cfg) 703 + } 704 + 705 + getProfiles<AV extends AuthVerifier>( 706 + cfg: ConfigOf<AV, AppBskyActorGetProfiles.Handler<ExtractAuth<AV>>>, 707 + ) { 708 + const nsid = 'app.bsky.actor.getProfiles' // @ts-ignore 709 + return this._server.xrpc.method(nsid, cfg) 710 + } 711 + 712 + getSuggestions<AV extends AuthVerifier>( 713 + cfg: ConfigOf<AV, AppBskyActorGetSuggestions.Handler<ExtractAuth<AV>>>, 714 + ) { 715 + const nsid = 'app.bsky.actor.getSuggestions' // @ts-ignore 716 + return this._server.xrpc.method(nsid, cfg) 717 + } 718 + 719 + searchActors<AV extends AuthVerifier>( 720 + cfg: ConfigOf<AV, AppBskyActorSearchActors.Handler<ExtractAuth<AV>>>, 721 + ) { 722 + const nsid = 'app.bsky.actor.searchActors' // @ts-ignore 723 + return this._server.xrpc.method(nsid, cfg) 724 + } 725 + 726 + searchActorsTypeahead<AV extends AuthVerifier>( 727 + cfg: ConfigOf< 728 + AV, 729 + AppBskyActorSearchActorsTypeahead.Handler<ExtractAuth<AV>> 730 + >, 731 + ) { 732 + const nsid = 'app.bsky.actor.searchActorsTypeahead' // @ts-ignore 733 + return this._server.xrpc.method(nsid, cfg) 734 + } 735 + } 736 + 737 + export class EmbedNS { 738 + _server: Server 739 + 740 + constructor(server: Server) { 741 + this._server = server 742 + } 743 + } 744 + 745 + export class FeedNS { 746 + _server: Server 747 + 748 + constructor(server: Server) { 749 + this._server = server 750 + } 751 + 752 + bookmarkFeed<AV extends AuthVerifier>( 753 + cfg: ConfigOf<AV, AppBskyFeedBookmarkFeed.Handler<ExtractAuth<AV>>>, 754 + ) { 755 + const nsid = 'app.bsky.feed.bookmarkFeed' // @ts-ignore 756 + return this._server.xrpc.method(nsid, cfg) 757 + } 758 + 759 + getAuthorFeed<AV extends AuthVerifier>( 760 + cfg: ConfigOf<AV, AppBskyFeedGetAuthorFeed.Handler<ExtractAuth<AV>>>, 761 + ) { 762 + const nsid = 'app.bsky.feed.getAuthorFeed' // @ts-ignore 763 + return this._server.xrpc.method(nsid, cfg) 764 + } 765 + 766 + getBookmarkedFeeds<AV extends AuthVerifier>( 767 + cfg: ConfigOf<AV, AppBskyFeedGetBookmarkedFeeds.Handler<ExtractAuth<AV>>>, 768 + ) { 769 + const nsid = 'app.bsky.feed.getBookmarkedFeeds' // @ts-ignore 770 + return this._server.xrpc.method(nsid, cfg) 771 + } 772 + 773 + getFeed<AV extends AuthVerifier>( 774 + cfg: ConfigOf<AV, AppBskyFeedGetFeed.Handler<ExtractAuth<AV>>>, 775 + ) { 776 + const nsid = 'app.bsky.feed.getFeed' // @ts-ignore 777 + return this._server.xrpc.method(nsid, cfg) 778 + } 779 + 780 + getFeedSkeleton<AV extends AuthVerifier>( 781 + cfg: ConfigOf<AV, AppBskyFeedGetFeedSkeleton.Handler<ExtractAuth<AV>>>, 782 + ) { 783 + const nsid = 'app.bsky.feed.getFeedSkeleton' // @ts-ignore 784 + return this._server.xrpc.method(nsid, cfg) 785 + } 786 + 787 + getLikes<AV extends AuthVerifier>( 788 + cfg: ConfigOf<AV, AppBskyFeedGetLikes.Handler<ExtractAuth<AV>>>, 789 + ) { 790 + const nsid = 'app.bsky.feed.getLikes' // @ts-ignore 791 + return this._server.xrpc.method(nsid, cfg) 792 + } 793 + 794 + getPostThread<AV extends AuthVerifier>( 795 + cfg: ConfigOf<AV, AppBskyFeedGetPostThread.Handler<ExtractAuth<AV>>>, 796 + ) { 797 + const nsid = 'app.bsky.feed.getPostThread' // @ts-ignore 798 + return this._server.xrpc.method(nsid, cfg) 799 + } 800 + 801 + getPosts<AV extends AuthVerifier>( 802 + cfg: ConfigOf<AV, AppBskyFeedGetPosts.Handler<ExtractAuth<AV>>>, 803 + ) { 804 + const nsid = 'app.bsky.feed.getPosts' // @ts-ignore 805 + return this._server.xrpc.method(nsid, cfg) 806 + } 807 + 808 + getRepostedBy<AV extends AuthVerifier>( 809 + cfg: ConfigOf<AV, AppBskyFeedGetRepostedBy.Handler<ExtractAuth<AV>>>, 810 + ) { 811 + const nsid = 'app.bsky.feed.getRepostedBy' // @ts-ignore 812 + return this._server.xrpc.method(nsid, cfg) 813 + } 814 + 815 + getTimeline<AV extends AuthVerifier>( 816 + cfg: ConfigOf<AV, AppBskyFeedGetTimeline.Handler<ExtractAuth<AV>>>, 817 + ) { 818 + const nsid = 'app.bsky.feed.getTimeline' // @ts-ignore 819 + return this._server.xrpc.method(nsid, cfg) 820 + } 821 + 822 + unbookmarkFeed<AV extends AuthVerifier>( 823 + cfg: ConfigOf<AV, AppBskyFeedUnbookmarkFeed.Handler<ExtractAuth<AV>>>, 824 + ) { 825 + const nsid = 'app.bsky.feed.unbookmarkFeed' // @ts-ignore 826 + return this._server.xrpc.method(nsid, cfg) 827 + } 828 + } 829 + 830 + export class GraphNS { 831 + _server: Server 832 + 833 + constructor(server: Server) { 834 + this._server = server 835 + } 836 + 837 + getBlocks<AV extends AuthVerifier>( 838 + cfg: ConfigOf<AV, AppBskyGraphGetBlocks.Handler<ExtractAuth<AV>>>, 839 + ) { 840 + const nsid = 'app.bsky.graph.getBlocks' // @ts-ignore 841 + return this._server.xrpc.method(nsid, cfg) 842 + } 843 + 844 + getFollowers<AV extends AuthVerifier>( 845 + cfg: ConfigOf<AV, AppBskyGraphGetFollowers.Handler<ExtractAuth<AV>>>, 846 + ) { 847 + const nsid = 'app.bsky.graph.getFollowers' // @ts-ignore 848 + return this._server.xrpc.method(nsid, cfg) 849 + } 850 + 851 + getFollows<AV extends AuthVerifier>( 852 + cfg: ConfigOf<AV, AppBskyGraphGetFollows.Handler<ExtractAuth<AV>>>, 853 + ) { 854 + const nsid = 'app.bsky.graph.getFollows' // @ts-ignore 855 + return this._server.xrpc.method(nsid, cfg) 856 + } 857 + 858 + getMutes<AV extends AuthVerifier>( 859 + cfg: ConfigOf<AV, AppBskyGraphGetMutes.Handler<ExtractAuth<AV>>>, 860 + ) { 861 + const nsid = 'app.bsky.graph.getMutes' // @ts-ignore 862 + return this._server.xrpc.method(nsid, cfg) 863 + } 864 + 865 + muteActor<AV extends AuthVerifier>( 866 + cfg: ConfigOf<AV, AppBskyGraphMuteActor.Handler<ExtractAuth<AV>>>, 867 + ) { 868 + const nsid = 'app.bsky.graph.muteActor' // @ts-ignore 869 + return this._server.xrpc.method(nsid, cfg) 870 + } 871 + 872 + unmuteActor<AV extends AuthVerifier>( 873 + cfg: ConfigOf<AV, AppBskyGraphUnmuteActor.Handler<ExtractAuth<AV>>>, 874 + ) { 875 + const nsid = 'app.bsky.graph.unmuteActor' // @ts-ignore 876 + return this._server.xrpc.method(nsid, cfg) 877 + } 878 + } 879 + 880 + export class NotificationNS { 881 + _server: Server 882 + 883 + constructor(server: Server) { 884 + this._server = server 885 + } 886 + 887 + getUnreadCount<AV extends AuthVerifier>( 888 + cfg: ConfigOf< 889 + AV, 890 + AppBskyNotificationGetUnreadCount.Handler<ExtractAuth<AV>> 891 + >, 892 + ) { 893 + const nsid = 'app.bsky.notification.getUnreadCount' // @ts-ignore 894 + return this._server.xrpc.method(nsid, cfg) 895 + } 896 + 897 + listNotifications<AV extends AuthVerifier>( 898 + cfg: ConfigOf< 899 + AV, 900 + AppBskyNotificationListNotifications.Handler<ExtractAuth<AV>> 901 + >, 902 + ) { 903 + const nsid = 'app.bsky.notification.listNotifications' // @ts-ignore 904 + return this._server.xrpc.method(nsid, cfg) 905 + } 906 + 907 + updateSeen<AV extends AuthVerifier>( 908 + cfg: ConfigOf<AV, AppBskyNotificationUpdateSeen.Handler<ExtractAuth<AV>>>, 909 + ) { 910 + const nsid = 'app.bsky.notification.updateSeen' // @ts-ignore 911 + return this._server.xrpc.method(nsid, cfg) 912 + } 913 + } 914 + 915 + export class RichtextNS { 916 + _server: Server 917 + 918 + constructor(server: Server) { 919 + this._server = server 920 + } 921 + } 922 + 923 + export class UnspeccedNS { 924 + _server: Server 925 + 926 + constructor(server: Server) { 927 + this._server = server 928 + } 929 + 930 + getPopular<AV extends AuthVerifier>( 931 + cfg: ConfigOf<AV, AppBskyUnspeccedGetPopular.Handler<ExtractAuth<AV>>>, 932 + ) { 933 + const nsid = 'app.bsky.unspecced.getPopular' // @ts-ignore 934 + return this._server.xrpc.method(nsid, cfg) 935 + } 936 + } 937 + 938 + type ConfigOf<Auth, Handler> = 939 + | Handler 940 + | { 941 + auth?: Auth 942 + handler: Handler 943 + } 944 + type ExtractAuth<AV extends AuthVerifier | StreamAuthVerifier> = Extract< 945 + Awaited<ReturnType<AV>>, 946 + { credentials: unknown } 947 + >
+5513
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 + }, 337 + }, 338 + repoViewDetail: { 339 + type: 'object', 340 + required: [ 341 + 'did', 342 + 'handle', 343 + 'relatedRecords', 344 + 'indexedAt', 345 + 'moderation', 346 + ], 347 + properties: { 348 + did: { 349 + type: 'string', 350 + format: 'did', 351 + }, 352 + handle: { 353 + type: 'string', 354 + format: 'handle', 355 + }, 356 + email: { 357 + type: 'string', 358 + }, 359 + relatedRecords: { 360 + type: 'array', 361 + items: { 362 + type: 'unknown', 363 + }, 364 + }, 365 + indexedAt: { 366 + type: 'string', 367 + format: 'datetime', 368 + }, 369 + moderation: { 370 + type: 'ref', 371 + ref: 'lex:com.atproto.admin.defs#moderationDetail', 372 + }, 373 + labels: { 374 + type: 'array', 375 + items: { 376 + type: 'ref', 377 + ref: 'lex:com.atproto.label.defs#label', 378 + }, 379 + }, 380 + invitedBy: { 381 + type: 'ref', 382 + ref: 'lex:com.atproto.server.defs#inviteCode', 383 + }, 384 + invites: { 385 + type: 'array', 386 + items: { 387 + type: 'ref', 388 + ref: 'lex:com.atproto.server.defs#inviteCode', 389 + }, 390 + }, 391 + }, 392 + }, 393 + repoRef: { 394 + type: 'object', 395 + required: ['did'], 396 + properties: { 397 + did: { 398 + type: 'string', 399 + format: 'did', 400 + }, 401 + }, 402 + }, 403 + recordView: { 404 + type: 'object', 405 + required: [ 406 + 'uri', 407 + 'cid', 408 + 'value', 409 + 'blobCids', 410 + 'indexedAt', 411 + 'moderation', 412 + 'repo', 413 + ], 414 + properties: { 415 + uri: { 416 + type: 'string', 417 + format: 'at-uri', 418 + }, 419 + cid: { 420 + type: 'string', 421 + format: 'cid', 422 + }, 423 + value: { 424 + type: 'unknown', 425 + }, 426 + blobCids: { 427 + type: 'array', 428 + items: { 429 + type: 'string', 430 + format: 'cid', 431 + }, 432 + }, 433 + indexedAt: { 434 + type: 'string', 435 + format: 'datetime', 436 + }, 437 + moderation: { 438 + type: 'ref', 439 + ref: 'lex:com.atproto.admin.defs#moderation', 440 + }, 441 + repo: { 442 + type: 'ref', 443 + ref: 'lex:com.atproto.admin.defs#repoView', 444 + }, 445 + }, 446 + }, 447 + recordViewDetail: { 448 + type: 'object', 449 + required: [ 450 + 'uri', 451 + 'cid', 452 + 'value', 453 + 'blobs', 454 + 'indexedAt', 455 + 'moderation', 456 + 'repo', 457 + ], 458 + properties: { 459 + uri: { 460 + type: 'string', 461 + format: 'at-uri', 462 + }, 463 + cid: { 464 + type: 'string', 465 + format: 'cid', 466 + }, 467 + value: { 468 + type: 'unknown', 469 + }, 470 + blobs: { 471 + type: 'array', 472 + items: { 473 + type: 'ref', 474 + ref: 'lex:com.atproto.admin.defs#blobView', 475 + }, 476 + }, 477 + labels: { 478 + type: 'array', 479 + items: { 480 + type: 'ref', 481 + ref: 'lex:com.atproto.label.defs#label', 482 + }, 483 + }, 484 + indexedAt: { 485 + type: 'string', 486 + format: 'datetime', 487 + }, 488 + moderation: { 489 + type: 'ref', 490 + ref: 'lex:com.atproto.admin.defs#moderationDetail', 491 + }, 492 + repo: { 493 + type: 'ref', 494 + ref: 'lex:com.atproto.admin.defs#repoView', 495 + }, 496 + }, 497 + }, 498 + moderation: { 499 + type: 'object', 500 + required: [], 501 + properties: { 502 + currentAction: { 503 + type: 'ref', 504 + ref: 'lex:com.atproto.admin.defs#actionViewCurrent', 505 + }, 506 + }, 507 + }, 508 + moderationDetail: { 509 + type: 'object', 510 + required: ['actions', 'reports'], 511 + properties: { 512 + currentAction: { 513 + type: 'ref', 514 + ref: 'lex:com.atproto.admin.defs#actionViewCurrent', 515 + }, 516 + actions: { 517 + type: 'array', 518 + items: { 519 + type: 'ref', 520 + ref: 'lex:com.atproto.admin.defs#actionView', 521 + }, 522 + }, 523 + reports: { 524 + type: 'array', 525 + items: { 526 + type: 'ref', 527 + ref: 'lex:com.atproto.admin.defs#reportView', 528 + }, 529 + }, 530 + }, 531 + }, 532 + blobView: { 533 + type: 'object', 534 + required: ['cid', 'mimeType', 'size', 'createdAt'], 535 + properties: { 536 + cid: { 537 + type: 'string', 538 + format: 'cid', 539 + }, 540 + mimeType: { 541 + type: 'string', 542 + }, 543 + size: { 544 + type: 'integer', 545 + }, 546 + createdAt: { 547 + type: 'string', 548 + format: 'datetime', 549 + }, 550 + details: { 551 + type: 'union', 552 + refs: [ 553 + 'lex:com.atproto.admin.defs#imageDetails', 554 + 'lex:com.atproto.admin.defs#videoDetails', 555 + ], 556 + }, 557 + moderation: { 558 + type: 'ref', 559 + ref: 'lex:com.atproto.admin.defs#moderation', 560 + }, 561 + }, 562 + }, 563 + imageDetails: { 564 + type: 'object', 565 + required: ['width', 'height'], 566 + properties: { 567 + width: { 568 + type: 'integer', 569 + }, 570 + height: { 571 + type: 'integer', 572 + }, 573 + }, 574 + }, 575 + videoDetails: { 576 + type: 'object', 577 + required: ['width', 'height', 'length'], 578 + properties: { 579 + width: { 580 + type: 'integer', 581 + }, 582 + height: { 583 + type: 'integer', 584 + }, 585 + length: { 586 + type: 'integer', 587 + }, 588 + }, 589 + }, 590 + }, 591 + }, 592 + ComAtprotoAdminDisableInviteCodes: { 593 + lexicon: 1, 594 + id: 'com.atproto.admin.disableInviteCodes', 595 + defs: { 596 + main: { 597 + type: 'procedure', 598 + description: 599 + 'Disable some set of codes and/or all codes associated with a set of users', 600 + input: { 601 + encoding: 'application/json', 602 + schema: { 603 + type: 'object', 604 + properties: { 605 + codes: { 606 + type: 'array', 607 + items: { 608 + type: 'string', 609 + }, 610 + }, 611 + accounts: { 612 + type: 'array', 613 + items: { 614 + type: 'string', 615 + }, 616 + }, 617 + }, 618 + }, 619 + }, 620 + }, 621 + }, 622 + }, 623 + ComAtprotoAdminGetInviteCodes: { 624 + lexicon: 1, 625 + id: 'com.atproto.admin.getInviteCodes', 626 + defs: { 627 + main: { 628 + type: 'query', 629 + description: 'Admin view of invite codes', 630 + parameters: { 631 + type: 'params', 632 + properties: { 633 + sort: { 634 + type: 'string', 635 + knownValues: ['recent', 'usage'], 636 + default: 'recent', 637 + }, 638 + limit: { 639 + type: 'integer', 640 + minimum: 1, 641 + maximum: 500, 642 + default: 100, 643 + }, 644 + cursor: { 645 + type: 'string', 646 + }, 647 + }, 648 + }, 649 + output: { 650 + encoding: 'application/json', 651 + schema: { 652 + type: 'object', 653 + required: ['codes'], 654 + properties: { 655 + cursor: { 656 + type: 'string', 657 + }, 658 + codes: { 659 + type: 'array', 660 + items: { 661 + type: 'ref', 662 + ref: 'lex:com.atproto.server.defs#inviteCode', 663 + }, 664 + }, 665 + }, 666 + }, 667 + }, 668 + }, 669 + }, 670 + }, 671 + ComAtprotoAdminGetModerationAction: { 672 + lexicon: 1, 673 + id: 'com.atproto.admin.getModerationAction', 674 + defs: { 675 + main: { 676 + type: 'query', 677 + description: 'View details about a moderation action.', 678 + parameters: { 679 + type: 'params', 680 + required: ['id'], 681 + properties: { 682 + id: { 683 + type: 'integer', 684 + }, 685 + }, 686 + }, 687 + output: { 688 + encoding: 'application/json', 689 + schema: { 690 + type: 'ref', 691 + ref: 'lex:com.atproto.admin.defs#actionViewDetail', 692 + }, 693 + }, 694 + }, 695 + }, 696 + }, 697 + ComAtprotoAdminGetModerationActions: { 698 + lexicon: 1, 699 + id: 'com.atproto.admin.getModerationActions', 700 + defs: { 701 + main: { 702 + type: 'query', 703 + description: 'List moderation actions related to a subject.', 704 + parameters: { 705 + type: 'params', 706 + properties: { 707 + subject: { 708 + type: 'string', 709 + }, 710 + limit: { 711 + type: 'integer', 712 + minimum: 1, 713 + maximum: 100, 714 + default: 50, 715 + }, 716 + cursor: { 717 + type: 'string', 718 + }, 719 + }, 720 + }, 721 + output: { 722 + encoding: 'application/json', 723 + schema: { 724 + type: 'object', 725 + required: ['actions'], 726 + properties: { 727 + cursor: { 728 + type: 'string', 729 + }, 730 + actions: { 731 + type: 'array', 732 + items: { 733 + type: 'ref', 734 + ref: 'lex:com.atproto.admin.defs#actionView', 735 + }, 736 + }, 737 + }, 738 + }, 739 + }, 740 + }, 741 + }, 742 + }, 743 + ComAtprotoAdminGetModerationReport: { 744 + lexicon: 1, 745 + id: 'com.atproto.admin.getModerationReport', 746 + defs: { 747 + main: { 748 + type: 'query', 749 + description: 'View details about a moderation report.', 750 + parameters: { 751 + type: 'params', 752 + required: ['id'], 753 + properties: { 754 + id: { 755 + type: 'integer', 756 + }, 757 + }, 758 + }, 759 + output: { 760 + encoding: 'application/json', 761 + schema: { 762 + type: 'ref', 763 + ref: 'lex:com.atproto.admin.defs#reportViewDetail', 764 + }, 765 + }, 766 + }, 767 + }, 768 + }, 769 + ComAtprotoAdminGetModerationReports: { 770 + lexicon: 1, 771 + id: 'com.atproto.admin.getModerationReports', 772 + defs: { 773 + main: { 774 + type: 'query', 775 + description: 'List moderation reports related to a subject.', 776 + parameters: { 777 + type: 'params', 778 + properties: { 779 + subject: { 780 + type: 'string', 781 + }, 782 + resolved: { 783 + type: 'boolean', 784 + }, 785 + limit: { 786 + type: 'integer', 787 + minimum: 1, 788 + maximum: 100, 789 + default: 50, 790 + }, 791 + cursor: { 792 + type: 'string', 793 + }, 794 + }, 795 + }, 796 + output: { 797 + encoding: 'application/json', 798 + schema: { 799 + type: 'object', 800 + required: ['reports'], 801 + properties: { 802 + cursor: { 803 + type: 'string', 804 + }, 805 + reports: { 806 + type: 'array', 807 + items: { 808 + type: 'ref', 809 + ref: 'lex:com.atproto.admin.defs#reportView', 810 + }, 811 + }, 812 + }, 813 + }, 814 + }, 815 + }, 816 + }, 817 + }, 818 + ComAtprotoAdminGetRecord: { 819 + lexicon: 1, 820 + id: 'com.atproto.admin.getRecord', 821 + defs: { 822 + main: { 823 + type: 'query', 824 + description: 'View details about a record.', 825 + parameters: { 826 + type: 'params', 827 + required: ['uri'], 828 + properties: { 829 + uri: { 830 + type: 'string', 831 + format: 'at-uri', 832 + }, 833 + cid: { 834 + type: 'string', 835 + format: 'cid', 836 + }, 837 + }, 838 + }, 839 + output: { 840 + encoding: 'application/json', 841 + schema: { 842 + type: 'ref', 843 + ref: 'lex:com.atproto.admin.defs#recordViewDetail', 844 + }, 845 + }, 846 + }, 847 + }, 848 + }, 849 + ComAtprotoAdminGetRepo: { 850 + lexicon: 1, 851 + id: 'com.atproto.admin.getRepo', 852 + defs: { 853 + main: { 854 + type: 'query', 855 + description: 'View details about a repository.', 856 + parameters: { 857 + type: 'params', 858 + required: ['did'], 859 + properties: { 860 + did: { 861 + type: 'string', 862 + format: 'did', 863 + }, 864 + }, 865 + }, 866 + output: { 867 + encoding: 'application/json', 868 + schema: { 869 + type: 'ref', 870 + ref: 'lex:com.atproto.admin.defs#repoViewDetail', 871 + }, 872 + }, 873 + }, 874 + }, 875 + }, 876 + ComAtprotoAdminResolveModerationReports: { 877 + lexicon: 1, 878 + id: 'com.atproto.admin.resolveModerationReports', 879 + defs: { 880 + main: { 881 + type: 'procedure', 882 + description: 'Resolve moderation reports by an action.', 883 + input: { 884 + encoding: 'application/json', 885 + schema: { 886 + type: 'object', 887 + required: ['actionId', 'reportIds', 'createdBy'], 888 + properties: { 889 + actionId: { 890 + type: 'integer', 891 + }, 892 + reportIds: { 893 + type: 'array', 894 + items: { 895 + type: 'integer', 896 + }, 897 + }, 898 + createdBy: { 899 + type: 'string', 900 + format: 'did', 901 + }, 902 + }, 903 + }, 904 + }, 905 + output: { 906 + encoding: 'application/json', 907 + schema: { 908 + type: 'ref', 909 + ref: 'lex:com.atproto.admin.defs#actionView', 910 + }, 911 + }, 912 + }, 913 + }, 914 + }, 915 + ComAtprotoAdminReverseModerationAction: { 916 + lexicon: 1, 917 + id: 'com.atproto.admin.reverseModerationAction', 918 + defs: { 919 + main: { 920 + type: 'procedure', 921 + description: 'Reverse a moderation action.', 922 + input: { 923 + encoding: 'application/json', 924 + schema: { 925 + type: 'object', 926 + required: ['id', 'reason', 'createdBy'], 927 + properties: { 928 + id: { 929 + type: 'integer', 930 + }, 931 + reason: { 932 + type: 'string', 933 + }, 934 + createdBy: { 935 + type: 'string', 936 + format: 'did', 937 + }, 938 + }, 939 + }, 940 + }, 941 + output: { 942 + encoding: 'application/json', 943 + schema: { 944 + type: 'ref', 945 + ref: 'lex:com.atproto.admin.defs#actionView', 946 + }, 947 + }, 948 + }, 949 + }, 950 + }, 951 + ComAtprotoAdminSearchRepos: { 952 + lexicon: 1, 953 + id: 'com.atproto.admin.searchRepos', 954 + defs: { 955 + main: { 956 + type: 'query', 957 + description: 'Find repositories based on a search term.', 958 + parameters: { 959 + type: 'params', 960 + properties: { 961 + term: { 962 + type: 'string', 963 + }, 964 + invitedBy: { 965 + type: 'string', 966 + }, 967 + limit: { 968 + type: 'integer', 969 + minimum: 1, 970 + maximum: 100, 971 + default: 50, 972 + }, 973 + cursor: { 974 + type: 'string', 975 + }, 976 + }, 977 + }, 978 + output: { 979 + encoding: 'application/json', 980 + schema: { 981 + type: 'object', 982 + required: ['repos'], 983 + properties: { 984 + cursor: { 985 + type: 'string', 986 + }, 987 + repos: { 988 + type: 'array', 989 + items: { 990 + type: 'ref', 991 + ref: 'lex:com.atproto.admin.defs#repoView', 992 + }, 993 + }, 994 + }, 995 + }, 996 + }, 997 + }, 998 + }, 999 + }, 1000 + ComAtprotoAdminTakeModerationAction: { 1001 + lexicon: 1, 1002 + id: 'com.atproto.admin.takeModerationAction', 1003 + defs: { 1004 + main: { 1005 + type: 'procedure', 1006 + description: 'Take a moderation action on a repo.', 1007 + input: { 1008 + encoding: 'application/json', 1009 + schema: { 1010 + type: 'object', 1011 + required: ['action', 'subject', 'reason', 'createdBy'], 1012 + properties: { 1013 + action: { 1014 + type: 'string', 1015 + knownValues: [ 1016 + 'com.atproto.admin.defs#takedown', 1017 + 'com.atproto.admin.defs#flag', 1018 + 'com.atproto.admin.defs#acknowledge', 1019 + ], 1020 + }, 1021 + subject: { 1022 + type: 'union', 1023 + refs: [ 1024 + 'lex:com.atproto.admin.defs#repoRef', 1025 + 'lex:com.atproto.repo.strongRef', 1026 + ], 1027 + }, 1028 + subjectBlobCids: { 1029 + type: 'array', 1030 + items: { 1031 + type: 'string', 1032 + format: 'cid', 1033 + }, 1034 + }, 1035 + createLabelVals: { 1036 + type: 'array', 1037 + items: { 1038 + type: 'string', 1039 + }, 1040 + }, 1041 + negateLabelVals: { 1042 + type: 'array', 1043 + items: { 1044 + type: 'string', 1045 + }, 1046 + }, 1047 + reason: { 1048 + type: 'string', 1049 + }, 1050 + createdBy: { 1051 + type: 'string', 1052 + format: 'did', 1053 + }, 1054 + }, 1055 + }, 1056 + }, 1057 + output: { 1058 + encoding: 'application/json', 1059 + schema: { 1060 + type: 'ref', 1061 + ref: 'lex:com.atproto.admin.defs#actionView', 1062 + }, 1063 + }, 1064 + errors: [ 1065 + { 1066 + name: 'SubjectHasAction', 1067 + }, 1068 + ], 1069 + }, 1070 + }, 1071 + }, 1072 + ComAtprotoAdminUpdateAccountEmail: { 1073 + lexicon: 1, 1074 + id: 'com.atproto.admin.updateAccountEmail', 1075 + defs: { 1076 + main: { 1077 + type: 'procedure', 1078 + description: "Administrative action to update an account's email", 1079 + input: { 1080 + encoding: 'application/json', 1081 + schema: { 1082 + type: 'object', 1083 + required: ['account', 'email'], 1084 + properties: { 1085 + account: { 1086 + type: 'string', 1087 + format: 'at-identifier', 1088 + description: 'The handle or DID of the repo.', 1089 + }, 1090 + email: { 1091 + type: 'string', 1092 + }, 1093 + }, 1094 + }, 1095 + }, 1096 + }, 1097 + }, 1098 + }, 1099 + ComAtprotoAdminUpdateAccountHandle: { 1100 + lexicon: 1, 1101 + id: 'com.atproto.admin.updateAccountHandle', 1102 + defs: { 1103 + main: { 1104 + type: 'procedure', 1105 + description: "Administrative action to update an account's handle", 1106 + input: { 1107 + encoding: 'application/json', 1108 + schema: { 1109 + type: 'object', 1110 + required: ['did', 'handle'], 1111 + properties: { 1112 + did: { 1113 + type: 'string', 1114 + format: 'did', 1115 + }, 1116 + handle: { 1117 + type: 'string', 1118 + format: 'handle', 1119 + }, 1120 + }, 1121 + }, 1122 + }, 1123 + }, 1124 + }, 1125 + }, 1126 + ComAtprotoIdentityResolveHandle: { 1127 + lexicon: 1, 1128 + id: 'com.atproto.identity.resolveHandle', 1129 + defs: { 1130 + main: { 1131 + type: 'query', 1132 + description: 'Provides the DID of a repo.', 1133 + parameters: { 1134 + type: 'params', 1135 + properties: { 1136 + handle: { 1137 + type: 'string', 1138 + format: 'handle', 1139 + description: 1140 + "The handle to resolve. If not supplied, will resolve the host's own handle.", 1141 + }, 1142 + }, 1143 + }, 1144 + output: { 1145 + encoding: 'application/json', 1146 + schema: { 1147 + type: 'object', 1148 + required: ['did'], 1149 + properties: { 1150 + did: { 1151 + type: 'string', 1152 + format: 'did', 1153 + }, 1154 + }, 1155 + }, 1156 + }, 1157 + }, 1158 + }, 1159 + }, 1160 + ComAtprotoIdentityUpdateHandle: { 1161 + lexicon: 1, 1162 + id: 'com.atproto.identity.updateHandle', 1163 + defs: { 1164 + main: { 1165 + type: 'procedure', 1166 + description: 'Updates the handle of the account', 1167 + input: { 1168 + encoding: 'application/json', 1169 + schema: { 1170 + type: 'object', 1171 + required: ['handle'], 1172 + properties: { 1173 + handle: { 1174 + type: 'string', 1175 + format: 'handle', 1176 + }, 1177 + }, 1178 + }, 1179 + }, 1180 + }, 1181 + }, 1182 + }, 1183 + ComAtprotoLabelDefs: { 1184 + lexicon: 1, 1185 + id: 'com.atproto.label.defs', 1186 + defs: { 1187 + label: { 1188 + type: 'object', 1189 + description: 'Metadata tag on an atproto resource (eg, repo or record)', 1190 + required: ['src', 'uri', 'val', 'cts'], 1191 + properties: { 1192 + src: { 1193 + type: 'string', 1194 + format: 'did', 1195 + description: 'DID of the actor who created this label', 1196 + }, 1197 + uri: { 1198 + type: 'string', 1199 + format: 'uri', 1200 + description: 1201 + 'AT URI of the record, repository (account), or other resource which this label applies to', 1202 + }, 1203 + cid: { 1204 + type: 'string', 1205 + format: 'cid', 1206 + description: 1207 + "optionally, CID specifying the specific version of 'uri' resource this label applies to", 1208 + }, 1209 + val: { 1210 + type: 'string', 1211 + maxLength: 128, 1212 + description: 1213 + 'the short string name of the value or type of this label', 1214 + }, 1215 + neg: { 1216 + type: 'boolean', 1217 + description: 1218 + 'if true, this is a negation label, overwriting a previous label', 1219 + }, 1220 + cts: { 1221 + type: 'string', 1222 + format: 'datetime', 1223 + description: 'timestamp when this label was created', 1224 + }, 1225 + }, 1226 + }, 1227 + }, 1228 + }, 1229 + ComAtprotoLabelQueryLabels: { 1230 + lexicon: 1, 1231 + id: 'com.atproto.label.queryLabels', 1232 + defs: { 1233 + main: { 1234 + type: 'query', 1235 + description: 'Find labels relevant to the provided URI patterns.', 1236 + parameters: { 1237 + type: 'params', 1238 + required: ['uriPatterns'], 1239 + properties: { 1240 + uriPatterns: { 1241 + type: 'array', 1242 + items: { 1243 + type: 'string', 1244 + }, 1245 + description: 1246 + "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", 1247 + }, 1248 + sources: { 1249 + type: 'array', 1250 + items: { 1251 + type: 'string', 1252 + format: 'did', 1253 + }, 1254 + description: 'Optional list of label sources (DIDs) to filter on', 1255 + }, 1256 + limit: { 1257 + type: 'integer', 1258 + minimum: 1, 1259 + maximum: 250, 1260 + default: 50, 1261 + }, 1262 + cursor: { 1263 + type: 'string', 1264 + }, 1265 + }, 1266 + }, 1267 + output: { 1268 + encoding: 'application/json', 1269 + schema: { 1270 + type: 'object', 1271 + required: ['labels'], 1272 + properties: { 1273 + cursor: { 1274 + type: 'string', 1275 + }, 1276 + labels: { 1277 + type: 'array', 1278 + items: { 1279 + type: 'ref', 1280 + ref: 'lex:com.atproto.label.defs#label', 1281 + }, 1282 + }, 1283 + }, 1284 + }, 1285 + }, 1286 + }, 1287 + }, 1288 + }, 1289 + ComAtprotoLabelSubscribeLabels: { 1290 + lexicon: 1, 1291 + id: 'com.atproto.label.subscribeLabels', 1292 + defs: { 1293 + main: { 1294 + type: 'subscription', 1295 + description: 'Subscribe to label updates', 1296 + parameters: { 1297 + type: 'params', 1298 + properties: { 1299 + cursor: { 1300 + type: 'integer', 1301 + description: 'The last known event to backfill from.', 1302 + }, 1303 + }, 1304 + }, 1305 + message: { 1306 + schema: { 1307 + type: 'union', 1308 + refs: [ 1309 + 'lex:com.atproto.label.subscribeLabels#labels', 1310 + 'lex:com.atproto.label.subscribeLabels#info', 1311 + ], 1312 + }, 1313 + }, 1314 + errors: [ 1315 + { 1316 + name: 'FutureCursor', 1317 + }, 1318 + ], 1319 + }, 1320 + labels: { 1321 + type: 'object', 1322 + required: ['seq', 'labels'], 1323 + properties: { 1324 + seq: { 1325 + type: 'integer', 1326 + }, 1327 + labels: { 1328 + type: 'array', 1329 + items: { 1330 + type: 'ref', 1331 + ref: 'lex:com.atproto.label.defs#label', 1332 + }, 1333 + }, 1334 + }, 1335 + }, 1336 + info: { 1337 + type: 'object', 1338 + required: ['name'], 1339 + properties: { 1340 + name: { 1341 + type: 'string', 1342 + knownValues: ['OutdatedCursor'], 1343 + }, 1344 + message: { 1345 + type: 'string', 1346 + }, 1347 + }, 1348 + }, 1349 + }, 1350 + }, 1351 + ComAtprotoModerationCreateReport: { 1352 + lexicon: 1, 1353 + id: 'com.atproto.moderation.createReport', 1354 + defs: { 1355 + main: { 1356 + type: 'procedure', 1357 + description: 'Report a repo or a record.', 1358 + input: { 1359 + encoding: 'application/json', 1360 + schema: { 1361 + type: 'object', 1362 + required: ['reasonType', 'subject'], 1363 + properties: { 1364 + reasonType: { 1365 + type: 'ref', 1366 + ref: 'lex:com.atproto.moderation.defs#reasonType', 1367 + }, 1368 + reason: { 1369 + type: 'string', 1370 + }, 1371 + subject: { 1372 + type: 'union', 1373 + refs: [ 1374 + 'lex:com.atproto.admin.defs#repoRef', 1375 + 'lex:com.atproto.repo.strongRef', 1376 + ], 1377 + }, 1378 + }, 1379 + }, 1380 + }, 1381 + output: { 1382 + encoding: 'application/json', 1383 + schema: { 1384 + type: 'object', 1385 + required: [ 1386 + 'id', 1387 + 'reasonType', 1388 + 'subject', 1389 + 'reportedBy', 1390 + 'createdAt', 1391 + ], 1392 + properties: { 1393 + id: { 1394 + type: 'integer', 1395 + }, 1396 + reasonType: { 1397 + type: 'ref', 1398 + ref: 'lex:com.atproto.moderation.defs#reasonType', 1399 + }, 1400 + reason: { 1401 + type: 'string', 1402 + }, 1403 + subject: { 1404 + type: 'union', 1405 + refs: [ 1406 + 'lex:com.atproto.admin.defs#repoRef', 1407 + 'lex:com.atproto.repo.strongRef', 1408 + ], 1409 + }, 1410 + reportedBy: { 1411 + type: 'string', 1412 + format: 'did', 1413 + }, 1414 + createdAt: { 1415 + type: 'string', 1416 + format: 'datetime', 1417 + }, 1418 + }, 1419 + }, 1420 + }, 1421 + }, 1422 + }, 1423 + }, 1424 + ComAtprotoModerationDefs: { 1425 + lexicon: 1, 1426 + id: 'com.atproto.moderation.defs', 1427 + defs: { 1428 + reasonType: { 1429 + type: 'string', 1430 + knownValues: [ 1431 + 'com.atproto.moderation.defs#reasonSpam', 1432 + 'com.atproto.moderation.defs#reasonViolation', 1433 + 'com.atproto.moderation.defs#reasonMisleading', 1434 + 'com.atproto.moderation.defs#reasonSexual', 1435 + 'com.atproto.moderation.defs#reasonRude', 1436 + 'com.atproto.moderation.defs#reasonOther', 1437 + ], 1438 + }, 1439 + reasonSpam: { 1440 + type: 'token', 1441 + description: 'Spam: frequent unwanted promotion, replies, mentions', 1442 + }, 1443 + reasonViolation: { 1444 + type: 'token', 1445 + description: 'Direct violation of server rules, laws, terms of service', 1446 + }, 1447 + reasonMisleading: { 1448 + type: 'token', 1449 + description: 'Misleading identity, affiliation, or content', 1450 + }, 1451 + reasonSexual: { 1452 + type: 'token', 1453 + description: 'Unwanted or mis-labeled sexual content', 1454 + }, 1455 + reasonRude: { 1456 + type: 'token', 1457 + description: 1458 + 'Rude, harassing, explicit, or otherwise unwelcoming behavior', 1459 + }, 1460 + reasonOther: { 1461 + type: 'token', 1462 + description: 'Other: reports not falling under another report category', 1463 + }, 1464 + }, 1465 + }, 1466 + ComAtprotoRepoApplyWrites: { 1467 + lexicon: 1, 1468 + id: 'com.atproto.repo.applyWrites', 1469 + defs: { 1470 + main: { 1471 + type: 'procedure', 1472 + description: 1473 + 'Apply a batch transaction of creates, updates, and deletes.', 1474 + input: { 1475 + encoding: 'application/json', 1476 + schema: { 1477 + type: 'object', 1478 + required: ['repo', 'writes'], 1479 + properties: { 1480 + repo: { 1481 + type: 'string', 1482 + format: 'at-identifier', 1483 + description: 'The handle or DID of the repo.', 1484 + }, 1485 + validate: { 1486 + type: 'boolean', 1487 + default: true, 1488 + description: 'Validate the records?', 1489 + }, 1490 + writes: { 1491 + type: 'array', 1492 + items: { 1493 + type: 'union', 1494 + refs: [ 1495 + 'lex:com.atproto.repo.applyWrites#create', 1496 + 'lex:com.atproto.repo.applyWrites#update', 1497 + 'lex:com.atproto.repo.applyWrites#delete', 1498 + ], 1499 + closed: true, 1500 + }, 1501 + }, 1502 + swapCommit: { 1503 + type: 'string', 1504 + format: 'cid', 1505 + }, 1506 + }, 1507 + }, 1508 + }, 1509 + errors: [ 1510 + { 1511 + name: 'InvalidSwap', 1512 + }, 1513 + ], 1514 + }, 1515 + create: { 1516 + type: 'object', 1517 + description: 'Create a new record.', 1518 + required: ['action', 'collection', 'value'], 1519 + properties: { 1520 + collection: { 1521 + type: 'string', 1522 + format: 'nsid', 1523 + }, 1524 + rkey: { 1525 + type: 'string', 1526 + }, 1527 + value: { 1528 + type: 'unknown', 1529 + }, 1530 + }, 1531 + }, 1532 + update: { 1533 + type: 'object', 1534 + description: 'Update an existing record.', 1535 + required: ['action', 'collection', 'rkey', 'value'], 1536 + properties: { 1537 + collection: { 1538 + type: 'string', 1539 + format: 'nsid', 1540 + }, 1541 + rkey: { 1542 + type: 'string', 1543 + }, 1544 + value: { 1545 + type: 'unknown', 1546 + }, 1547 + }, 1548 + }, 1549 + delete: { 1550 + type: 'object', 1551 + description: 'Delete an existing record.', 1552 + required: ['action', 'collection', 'rkey'], 1553 + properties: { 1554 + collection: { 1555 + type: 'string', 1556 + format: 'nsid', 1557 + }, 1558 + rkey: { 1559 + type: 'string', 1560 + }, 1561 + }, 1562 + }, 1563 + }, 1564 + }, 1565 + ComAtprotoRepoCreateRecord: { 1566 + lexicon: 1, 1567 + id: 'com.atproto.repo.createRecord', 1568 + defs: { 1569 + main: { 1570 + type: 'procedure', 1571 + description: 'Create a new record.', 1572 + input: { 1573 + encoding: 'application/json', 1574 + schema: { 1575 + type: 'object', 1576 + required: ['repo', 'collection', 'record'], 1577 + properties: { 1578 + repo: { 1579 + type: 'string', 1580 + format: 'at-identifier', 1581 + description: 'The handle or DID of the repo.', 1582 + }, 1583 + collection: { 1584 + type: 'string', 1585 + format: 'nsid', 1586 + description: 'The NSID of the record collection.', 1587 + }, 1588 + rkey: { 1589 + type: 'string', 1590 + description: 'The key of the record.', 1591 + }, 1592 + validate: { 1593 + type: 'boolean', 1594 + default: true, 1595 + description: 'Validate the record?', 1596 + }, 1597 + record: { 1598 + type: 'unknown', 1599 + description: 'The record to create.', 1600 + }, 1601 + swapCommit: { 1602 + type: 'string', 1603 + format: 'cid', 1604 + description: 1605 + 'Compare and swap with the previous commit by cid.', 1606 + }, 1607 + }, 1608 + }, 1609 + }, 1610 + output: { 1611 + encoding: 'application/json', 1612 + schema: { 1613 + type: 'object', 1614 + required: ['uri', 'cid'], 1615 + properties: { 1616 + uri: { 1617 + type: 'string', 1618 + format: 'at-uri', 1619 + }, 1620 + cid: { 1621 + type: 'string', 1622 + format: 'cid', 1623 + }, 1624 + }, 1625 + }, 1626 + }, 1627 + errors: [ 1628 + { 1629 + name: 'InvalidSwap', 1630 + }, 1631 + ], 1632 + }, 1633 + }, 1634 + }, 1635 + ComAtprotoRepoDeleteRecord: { 1636 + lexicon: 1, 1637 + id: 'com.atproto.repo.deleteRecord', 1638 + defs: { 1639 + main: { 1640 + type: 'procedure', 1641 + description: "Delete a record, or ensure it doesn't exist.", 1642 + input: { 1643 + encoding: 'application/json', 1644 + schema: { 1645 + type: 'object', 1646 + required: ['repo', 'collection', 'rkey'], 1647 + properties: { 1648 + repo: { 1649 + type: 'string', 1650 + format: 'at-identifier', 1651 + description: 'The handle or DID of the repo.', 1652 + }, 1653 + collection: { 1654 + type: 'string', 1655 + format: 'nsid', 1656 + description: 'The NSID of the record collection.', 1657 + }, 1658 + rkey: { 1659 + type: 'string', 1660 + description: 'The key of the record.', 1661 + }, 1662 + swapRecord: { 1663 + type: 'string', 1664 + format: 'cid', 1665 + description: 1666 + 'Compare and swap with the previous record by cid.', 1667 + }, 1668 + swapCommit: { 1669 + type: 'string', 1670 + format: 'cid', 1671 + description: 1672 + 'Compare and swap with the previous commit by cid.', 1673 + }, 1674 + }, 1675 + }, 1676 + }, 1677 + errors: [ 1678 + { 1679 + name: 'InvalidSwap', 1680 + }, 1681 + ], 1682 + }, 1683 + }, 1684 + }, 1685 + ComAtprotoRepoDescribeRepo: { 1686 + lexicon: 1, 1687 + id: 'com.atproto.repo.describeRepo', 1688 + defs: { 1689 + main: { 1690 + type: 'query', 1691 + description: 1692 + 'Get information about the repo, including the list of collections.', 1693 + parameters: { 1694 + type: 'params', 1695 + required: ['repo'], 1696 + properties: { 1697 + repo: { 1698 + type: 'string', 1699 + format: 'at-identifier', 1700 + description: 'The handle or DID of the repo.', 1701 + }, 1702 + }, 1703 + }, 1704 + output: { 1705 + encoding: 'application/json', 1706 + schema: { 1707 + type: 'object', 1708 + required: [ 1709 + 'handle', 1710 + 'did', 1711 + 'didDoc', 1712 + 'collections', 1713 + 'handleIsCorrect', 1714 + ], 1715 + properties: { 1716 + handle: { 1717 + type: 'string', 1718 + format: 'handle', 1719 + }, 1720 + did: { 1721 + type: 'string', 1722 + format: 'did', 1723 + }, 1724 + didDoc: { 1725 + type: 'unknown', 1726 + }, 1727 + collections: { 1728 + type: 'array', 1729 + items: { 1730 + type: 'string', 1731 + format: 'nsid', 1732 + }, 1733 + }, 1734 + handleIsCorrect: { 1735 + type: 'boolean', 1736 + }, 1737 + }, 1738 + }, 1739 + }, 1740 + }, 1741 + }, 1742 + }, 1743 + ComAtprotoRepoGetRecord: { 1744 + lexicon: 1, 1745 + id: 'com.atproto.repo.getRecord', 1746 + defs: { 1747 + main: { 1748 + type: 'query', 1749 + description: 'Get a record.', 1750 + parameters: { 1751 + type: 'params', 1752 + required: ['repo', 'collection', 'rkey'], 1753 + properties: { 1754 + repo: { 1755 + type: 'string', 1756 + format: 'at-identifier', 1757 + description: 'The handle or DID of the repo.', 1758 + }, 1759 + collection: { 1760 + type: 'string', 1761 + format: 'nsid', 1762 + description: 'The NSID of the record collection.', 1763 + }, 1764 + rkey: { 1765 + type: 'string', 1766 + description: 'The key of the record.', 1767 + }, 1768 + cid: { 1769 + type: 'string', 1770 + format: 'cid', 1771 + description: 1772 + 'The CID of the version of the record. If not specified, then return the most recent version.', 1773 + }, 1774 + }, 1775 + }, 1776 + output: { 1777 + encoding: 'application/json', 1778 + schema: { 1779 + type: 'object', 1780 + required: ['uri', 'value'], 1781 + properties: { 1782 + uri: { 1783 + type: 'string', 1784 + format: 'at-uri', 1785 + }, 1786 + cid: { 1787 + type: 'string', 1788 + format: 'cid', 1789 + }, 1790 + value: { 1791 + type: 'unknown', 1792 + }, 1793 + }, 1794 + }, 1795 + }, 1796 + }, 1797 + }, 1798 + }, 1799 + ComAtprotoRepoListRecords: { 1800 + lexicon: 1, 1801 + id: 'com.atproto.repo.listRecords', 1802 + defs: { 1803 + main: { 1804 + type: 'query', 1805 + description: 'List a range of records in a collection.', 1806 + parameters: { 1807 + type: 'params', 1808 + required: ['repo', 'collection'], 1809 + properties: { 1810 + repo: { 1811 + type: 'string', 1812 + format: 'at-identifier', 1813 + description: 'The handle or DID of the repo.', 1814 + }, 1815 + collection: { 1816 + type: 'string', 1817 + format: 'nsid', 1818 + description: 'The NSID of the record type.', 1819 + }, 1820 + limit: { 1821 + type: 'integer', 1822 + minimum: 1, 1823 + maximum: 100, 1824 + default: 50, 1825 + description: 'The number of records to return.', 1826 + }, 1827 + cursor: { 1828 + type: 'string', 1829 + }, 1830 + rkeyStart: { 1831 + type: 'string', 1832 + description: 1833 + 'DEPRECATED: The lowest sort-ordered rkey to start from (exclusive)', 1834 + }, 1835 + rkeyEnd: { 1836 + type: 'string', 1837 + description: 1838 + 'DEPRECATED: The highest sort-ordered rkey to stop at (exclusive)', 1839 + }, 1840 + reverse: { 1841 + type: 'boolean', 1842 + description: 'Reverse the order of the returned records?', 1843 + }, 1844 + }, 1845 + }, 1846 + output: { 1847 + encoding: 'application/json', 1848 + schema: { 1849 + type: 'object', 1850 + required: ['records'], 1851 + properties: { 1852 + cursor: { 1853 + type: 'string', 1854 + }, 1855 + records: { 1856 + type: 'array', 1857 + items: { 1858 + type: 'ref', 1859 + ref: 'lex:com.atproto.repo.listRecords#record', 1860 + }, 1861 + }, 1862 + }, 1863 + }, 1864 + }, 1865 + }, 1866 + record: { 1867 + type: 'object', 1868 + required: ['uri', 'cid', 'value'], 1869 + properties: { 1870 + uri: { 1871 + type: 'string', 1872 + format: 'at-uri', 1873 + }, 1874 + cid: { 1875 + type: 'string', 1876 + format: 'cid', 1877 + }, 1878 + value: { 1879 + type: 'unknown', 1880 + }, 1881 + }, 1882 + }, 1883 + }, 1884 + }, 1885 + ComAtprotoRepoPutRecord: { 1886 + lexicon: 1, 1887 + id: 'com.atproto.repo.putRecord', 1888 + defs: { 1889 + main: { 1890 + type: 'procedure', 1891 + description: 'Write a record, creating or updating it as needed.', 1892 + input: { 1893 + encoding: 'application/json', 1894 + schema: { 1895 + type: 'object', 1896 + required: ['repo', 'collection', 'rkey', 'record'], 1897 + nullable: ['swapRecord'], 1898 + properties: { 1899 + repo: { 1900 + type: 'string', 1901 + format: 'at-identifier', 1902 + description: 'The handle or DID of the repo.', 1903 + }, 1904 + collection: { 1905 + type: 'string', 1906 + format: 'nsid', 1907 + description: 'The NSID of the record collection.', 1908 + }, 1909 + rkey: { 1910 + type: 'string', 1911 + description: 'The key of the record.', 1912 + }, 1913 + validate: { 1914 + type: 'boolean', 1915 + default: true, 1916 + description: 'Validate the record?', 1917 + }, 1918 + record: { 1919 + type: 'unknown', 1920 + description: 'The record to write.', 1921 + }, 1922 + swapRecord: { 1923 + type: 'string', 1924 + format: 'cid', 1925 + description: 1926 + 'Compare and swap with the previous record by cid.', 1927 + }, 1928 + swapCommit: { 1929 + type: 'string', 1930 + format: 'cid', 1931 + description: 1932 + 'Compare and swap with the previous commit by cid.', 1933 + }, 1934 + }, 1935 + }, 1936 + }, 1937 + output: { 1938 + encoding: 'application/json', 1939 + schema: { 1940 + type: 'object', 1941 + required: ['uri', 'cid'], 1942 + properties: { 1943 + uri: { 1944 + type: 'string', 1945 + format: 'at-uri', 1946 + }, 1947 + cid: { 1948 + type: 'string', 1949 + format: 'cid', 1950 + }, 1951 + }, 1952 + }, 1953 + }, 1954 + errors: [ 1955 + { 1956 + name: 'InvalidSwap', 1957 + }, 1958 + ], 1959 + }, 1960 + }, 1961 + }, 1962 + ComAtprotoRepoStrongRef: { 1963 + lexicon: 1, 1964 + id: 'com.atproto.repo.strongRef', 1965 + description: 'A URI with a content-hash fingerprint.', 1966 + defs: { 1967 + main: { 1968 + type: 'object', 1969 + required: ['uri', 'cid'], 1970 + properties: { 1971 + uri: { 1972 + type: 'string', 1973 + format: 'at-uri', 1974 + }, 1975 + cid: { 1976 + type: 'string', 1977 + format: 'cid', 1978 + }, 1979 + }, 1980 + }, 1981 + }, 1982 + }, 1983 + ComAtprotoRepoUploadBlob: { 1984 + lexicon: 1, 1985 + id: 'com.atproto.repo.uploadBlob', 1986 + defs: { 1987 + main: { 1988 + type: 'procedure', 1989 + description: 1990 + 'Upload a new blob to be added to repo in a later request.', 1991 + input: { 1992 + encoding: '*/*', 1993 + }, 1994 + output: { 1995 + encoding: 'application/json', 1996 + schema: { 1997 + type: 'object', 1998 + required: ['blob'], 1999 + properties: { 2000 + blob: { 2001 + type: 'blob', 2002 + }, 2003 + }, 2004 + }, 2005 + }, 2006 + }, 2007 + }, 2008 + }, 2009 + ComAtprotoServerCreateAccount: { 2010 + lexicon: 1, 2011 + id: 'com.atproto.server.createAccount', 2012 + defs: { 2013 + main: { 2014 + type: 'procedure', 2015 + description: 'Create an account.', 2016 + input: { 2017 + encoding: 'application/json', 2018 + schema: { 2019 + type: 'object', 2020 + required: ['handle', 'email', 'password'], 2021 + properties: { 2022 + email: { 2023 + type: 'string', 2024 + }, 2025 + handle: { 2026 + type: 'string', 2027 + format: 'handle', 2028 + }, 2029 + inviteCode: { 2030 + type: 'string', 2031 + }, 2032 + password: { 2033 + type: 'string', 2034 + }, 2035 + recoveryKey: { 2036 + type: 'string', 2037 + }, 2038 + }, 2039 + }, 2040 + }, 2041 + output: { 2042 + encoding: 'application/json', 2043 + schema: { 2044 + type: 'object', 2045 + required: ['accessJwt', 'refreshJwt', 'handle', 'did'], 2046 + properties: { 2047 + accessJwt: { 2048 + type: 'string', 2049 + }, 2050 + refreshJwt: { 2051 + type: 'string', 2052 + }, 2053 + handle: { 2054 + type: 'string', 2055 + format: 'handle', 2056 + }, 2057 + did: { 2058 + type: 'string', 2059 + format: 'did', 2060 + }, 2061 + }, 2062 + }, 2063 + }, 2064 + errors: [ 2065 + { 2066 + name: 'InvalidHandle', 2067 + }, 2068 + { 2069 + name: 'InvalidPassword', 2070 + }, 2071 + { 2072 + name: 'InvalidInviteCode', 2073 + }, 2074 + { 2075 + name: 'HandleNotAvailable', 2076 + }, 2077 + { 2078 + name: 'UnsupportedDomain', 2079 + }, 2080 + ], 2081 + }, 2082 + }, 2083 + }, 2084 + ComAtprotoServerCreateAppPassword: { 2085 + lexicon: 1, 2086 + id: 'com.atproto.server.createAppPassword', 2087 + defs: { 2088 + main: { 2089 + type: 'procedure', 2090 + description: 'Create an app-specific password.', 2091 + input: { 2092 + encoding: 'application/json', 2093 + schema: { 2094 + type: 'object', 2095 + required: ['name'], 2096 + properties: { 2097 + name: { 2098 + type: 'string', 2099 + }, 2100 + }, 2101 + }, 2102 + }, 2103 + output: { 2104 + encoding: 'application/json', 2105 + schema: { 2106 + type: 'ref', 2107 + ref: 'lex:com.atproto.server.createAppPassword#appPassword', 2108 + }, 2109 + }, 2110 + errors: [ 2111 + { 2112 + name: 'AccountTakedown', 2113 + }, 2114 + ], 2115 + }, 2116 + appPassword: { 2117 + type: 'object', 2118 + required: ['name', 'password', 'createdAt'], 2119 + properties: { 2120 + name: { 2121 + type: 'string', 2122 + }, 2123 + password: { 2124 + type: 'string', 2125 + }, 2126 + createdAt: { 2127 + type: 'string', 2128 + format: 'datetime', 2129 + }, 2130 + }, 2131 + }, 2132 + }, 2133 + }, 2134 + ComAtprotoServerCreateInviteCode: { 2135 + lexicon: 1, 2136 + id: 'com.atproto.server.createInviteCode', 2137 + defs: { 2138 + main: { 2139 + type: 'procedure', 2140 + description: 'Create an invite code.', 2141 + input: { 2142 + encoding: 'application/json', 2143 + schema: { 2144 + type: 'object', 2145 + required: ['useCount'], 2146 + properties: { 2147 + useCount: { 2148 + type: 'integer', 2149 + }, 2150 + forAccount: { 2151 + type: 'string', 2152 + format: 'did', 2153 + }, 2154 + }, 2155 + }, 2156 + }, 2157 + output: { 2158 + encoding: 'application/json', 2159 + schema: { 2160 + type: 'object', 2161 + required: ['code'], 2162 + properties: { 2163 + code: { 2164 + type: 'string', 2165 + }, 2166 + }, 2167 + }, 2168 + }, 2169 + }, 2170 + }, 2171 + }, 2172 + ComAtprotoServerCreateInviteCodes: { 2173 + lexicon: 1, 2174 + id: 'com.atproto.server.createInviteCodes', 2175 + defs: { 2176 + main: { 2177 + type: 'procedure', 2178 + description: 'Create an invite code.', 2179 + input: { 2180 + encoding: 'application/json', 2181 + schema: { 2182 + type: 'object', 2183 + required: ['codeCount', 'useCount'], 2184 + properties: { 2185 + codeCount: { 2186 + type: 'integer', 2187 + default: 1, 2188 + }, 2189 + useCount: { 2190 + type: 'integer', 2191 + }, 2192 + forAccounts: { 2193 + type: 'array', 2194 + items: { 2195 + type: 'string', 2196 + format: 'did', 2197 + }, 2198 + }, 2199 + }, 2200 + }, 2201 + }, 2202 + output: { 2203 + encoding: 'application/json', 2204 + schema: { 2205 + type: 'object', 2206 + required: ['codes'], 2207 + properties: { 2208 + codes: { 2209 + type: 'array', 2210 + items: { 2211 + type: 'ref', 2212 + ref: 'lex:com.atproto.server.createInviteCodes#accountCodes', 2213 + }, 2214 + }, 2215 + }, 2216 + }, 2217 + }, 2218 + }, 2219 + accountCodes: { 2220 + type: 'object', 2221 + required: ['account', 'codes'], 2222 + properties: { 2223 + account: { 2224 + type: 'string', 2225 + }, 2226 + codes: { 2227 + type: 'array', 2228 + items: { 2229 + type: 'string', 2230 + }, 2231 + }, 2232 + }, 2233 + }, 2234 + }, 2235 + }, 2236 + ComAtprotoServerCreateSession: { 2237 + lexicon: 1, 2238 + id: 'com.atproto.server.createSession', 2239 + defs: { 2240 + main: { 2241 + type: 'procedure', 2242 + description: 'Create an authentication session.', 2243 + input: { 2244 + encoding: 'application/json', 2245 + schema: { 2246 + type: 'object', 2247 + required: ['identifier', 'password'], 2248 + properties: { 2249 + identifier: { 2250 + type: 'string', 2251 + description: 2252 + 'Handle or other identifier supported by the server for the authenticating user.', 2253 + }, 2254 + password: { 2255 + type: 'string', 2256 + }, 2257 + }, 2258 + }, 2259 + }, 2260 + output: { 2261 + encoding: 'application/json', 2262 + schema: { 2263 + type: 'object', 2264 + required: ['accessJwt', 'refreshJwt', 'handle', 'did'], 2265 + properties: { 2266 + accessJwt: { 2267 + type: 'string', 2268 + }, 2269 + refreshJwt: { 2270 + type: 'string', 2271 + }, 2272 + handle: { 2273 + type: 'string', 2274 + format: 'handle', 2275 + }, 2276 + did: { 2277 + type: 'string', 2278 + format: 'did', 2279 + }, 2280 + email: { 2281 + type: 'string', 2282 + }, 2283 + }, 2284 + }, 2285 + }, 2286 + errors: [ 2287 + { 2288 + name: 'AccountTakedown', 2289 + }, 2290 + ], 2291 + }, 2292 + }, 2293 + }, 2294 + ComAtprotoServerDefs: { 2295 + lexicon: 1, 2296 + id: 'com.atproto.server.defs', 2297 + defs: { 2298 + inviteCode: { 2299 + type: 'object', 2300 + required: [ 2301 + 'code', 2302 + 'available', 2303 + 'disabled', 2304 + 'forAccount', 2305 + 'createdBy', 2306 + 'createdAt', 2307 + 'uses', 2308 + ], 2309 + properties: { 2310 + code: { 2311 + type: 'string', 2312 + }, 2313 + available: { 2314 + type: 'integer', 2315 + }, 2316 + disabled: { 2317 + type: 'boolean', 2318 + }, 2319 + forAccount: { 2320 + type: 'string', 2321 + }, 2322 + createdBy: { 2323 + type: 'string', 2324 + }, 2325 + createdAt: { 2326 + type: 'string', 2327 + format: 'datetime', 2328 + }, 2329 + uses: { 2330 + type: 'array', 2331 + items: { 2332 + type: 'ref', 2333 + ref: 'lex:com.atproto.server.defs#inviteCodeUse', 2334 + }, 2335 + }, 2336 + }, 2337 + }, 2338 + inviteCodeUse: { 2339 + type: 'object', 2340 + required: ['usedBy', 'usedAt'], 2341 + properties: { 2342 + usedBy: { 2343 + type: 'string', 2344 + format: 'did', 2345 + }, 2346 + usedAt: { 2347 + type: 'string', 2348 + format: 'datetime', 2349 + }, 2350 + }, 2351 + }, 2352 + }, 2353 + }, 2354 + ComAtprotoServerDeleteAccount: { 2355 + lexicon: 1, 2356 + id: 'com.atproto.server.deleteAccount', 2357 + defs: { 2358 + main: { 2359 + type: 'procedure', 2360 + description: 'Delete a user account with a token and password.', 2361 + input: { 2362 + encoding: 'application/json', 2363 + schema: { 2364 + type: 'object', 2365 + required: ['did', 'password', 'token'], 2366 + properties: { 2367 + did: { 2368 + type: 'string', 2369 + format: 'did', 2370 + }, 2371 + password: { 2372 + type: 'string', 2373 + }, 2374 + token: { 2375 + type: 'string', 2376 + }, 2377 + }, 2378 + }, 2379 + }, 2380 + errors: [ 2381 + { 2382 + name: 'ExpiredToken', 2383 + }, 2384 + { 2385 + name: 'InvalidToken', 2386 + }, 2387 + ], 2388 + }, 2389 + }, 2390 + }, 2391 + ComAtprotoServerDeleteSession: { 2392 + lexicon: 1, 2393 + id: 'com.atproto.server.deleteSession', 2394 + defs: { 2395 + main: { 2396 + type: 'procedure', 2397 + description: 'Delete the current session.', 2398 + }, 2399 + }, 2400 + }, 2401 + ComAtprotoServerDescribeServer: { 2402 + lexicon: 1, 2403 + id: 'com.atproto.server.describeServer', 2404 + defs: { 2405 + main: { 2406 + type: 'query', 2407 + description: 2408 + "Get a document describing the service's accounts configuration.", 2409 + output: { 2410 + encoding: 'application/json', 2411 + schema: { 2412 + type: 'object', 2413 + required: ['availableUserDomains'], 2414 + properties: { 2415 + inviteCodeRequired: { 2416 + type: 'boolean', 2417 + }, 2418 + availableUserDomains: { 2419 + type: 'array', 2420 + items: { 2421 + type: 'string', 2422 + }, 2423 + }, 2424 + links: { 2425 + type: 'ref', 2426 + ref: 'lex:com.atproto.server.describeServer#links', 2427 + }, 2428 + }, 2429 + }, 2430 + }, 2431 + }, 2432 + links: { 2433 + type: 'object', 2434 + properties: { 2435 + privacyPolicy: { 2436 + type: 'string', 2437 + }, 2438 + termsOfService: { 2439 + type: 'string', 2440 + }, 2441 + }, 2442 + }, 2443 + }, 2444 + }, 2445 + ComAtprotoServerGetAccountInviteCodes: { 2446 + lexicon: 1, 2447 + id: 'com.atproto.server.getAccountInviteCodes', 2448 + defs: { 2449 + main: { 2450 + type: 'query', 2451 + description: 'Get all invite codes for a given account', 2452 + parameters: { 2453 + type: 'params', 2454 + properties: { 2455 + includeUsed: { 2456 + type: 'boolean', 2457 + default: true, 2458 + }, 2459 + createAvailable: { 2460 + type: 'boolean', 2461 + default: true, 2462 + }, 2463 + }, 2464 + }, 2465 + output: { 2466 + encoding: 'application/json', 2467 + schema: { 2468 + type: 'object', 2469 + required: ['codes'], 2470 + properties: { 2471 + codes: { 2472 + type: 'array', 2473 + items: { 2474 + type: 'ref', 2475 + ref: 'lex:com.atproto.server.defs#inviteCode', 2476 + }, 2477 + }, 2478 + }, 2479 + }, 2480 + }, 2481 + errors: [ 2482 + { 2483 + name: 'DuplicateCreate', 2484 + }, 2485 + ], 2486 + }, 2487 + }, 2488 + }, 2489 + ComAtprotoServerGetSession: { 2490 + lexicon: 1, 2491 + id: 'com.atproto.server.getSession', 2492 + defs: { 2493 + main: { 2494 + type: 'query', 2495 + description: 'Get information about the current session.', 2496 + output: { 2497 + encoding: 'application/json', 2498 + schema: { 2499 + type: 'object', 2500 + required: ['handle', 'did'], 2501 + properties: { 2502 + handle: { 2503 + type: 'string', 2504 + format: 'handle', 2505 + }, 2506 + did: { 2507 + type: 'string', 2508 + format: 'did', 2509 + }, 2510 + email: { 2511 + type: 'string', 2512 + }, 2513 + }, 2514 + }, 2515 + }, 2516 + }, 2517 + }, 2518 + }, 2519 + ComAtprotoServerListAppPasswords: { 2520 + lexicon: 1, 2521 + id: 'com.atproto.server.listAppPasswords', 2522 + defs: { 2523 + main: { 2524 + type: 'query', 2525 + description: 'List all app-specific passwords.', 2526 + output: { 2527 + encoding: 'application/json', 2528 + schema: { 2529 + type: 'object', 2530 + required: ['passwords'], 2531 + properties: { 2532 + passwords: { 2533 + type: 'array', 2534 + items: { 2535 + type: 'ref', 2536 + ref: 'lex:com.atproto.server.listAppPasswords#appPassword', 2537 + }, 2538 + }, 2539 + }, 2540 + }, 2541 + }, 2542 + errors: [ 2543 + { 2544 + name: 'AccountTakedown', 2545 + }, 2546 + ], 2547 + }, 2548 + appPassword: { 2549 + type: 'object', 2550 + required: ['name', 'createdAt'], 2551 + properties: { 2552 + name: { 2553 + type: 'string', 2554 + }, 2555 + createdAt: { 2556 + type: 'string', 2557 + format: 'datetime', 2558 + }, 2559 + }, 2560 + }, 2561 + }, 2562 + }, 2563 + ComAtprotoServerRefreshSession: { 2564 + lexicon: 1, 2565 + id: 'com.atproto.server.refreshSession', 2566 + defs: { 2567 + main: { 2568 + type: 'procedure', 2569 + description: 'Refresh an authentication session.', 2570 + output: { 2571 + encoding: 'application/json', 2572 + schema: { 2573 + type: 'object', 2574 + required: ['accessJwt', 'refreshJwt', 'handle', 'did'], 2575 + properties: { 2576 + accessJwt: { 2577 + type: 'string', 2578 + }, 2579 + refreshJwt: { 2580 + type: 'string', 2581 + }, 2582 + handle: { 2583 + type: 'string', 2584 + format: 'handle', 2585 + }, 2586 + did: { 2587 + type: 'string', 2588 + format: 'did', 2589 + }, 2590 + }, 2591 + }, 2592 + }, 2593 + errors: [ 2594 + { 2595 + name: 'AccountTakedown', 2596 + }, 2597 + ], 2598 + }, 2599 + }, 2600 + }, 2601 + ComAtprotoServerRequestAccountDelete: { 2602 + lexicon: 1, 2603 + id: 'com.atproto.server.requestAccountDelete', 2604 + defs: { 2605 + main: { 2606 + type: 'procedure', 2607 + description: 'Initiate a user account deletion via email.', 2608 + }, 2609 + }, 2610 + }, 2611 + ComAtprotoServerRequestPasswordReset: { 2612 + lexicon: 1, 2613 + id: 'com.atproto.server.requestPasswordReset', 2614 + defs: { 2615 + main: { 2616 + type: 'procedure', 2617 + description: 'Initiate a user account password reset via email.', 2618 + input: { 2619 + encoding: 'application/json', 2620 + schema: { 2621 + type: 'object', 2622 + required: ['email'], 2623 + properties: { 2624 + email: { 2625 + type: 'string', 2626 + }, 2627 + }, 2628 + }, 2629 + }, 2630 + }, 2631 + }, 2632 + }, 2633 + ComAtprotoServerResetPassword: { 2634 + lexicon: 1, 2635 + id: 'com.atproto.server.resetPassword', 2636 + defs: { 2637 + main: { 2638 + type: 'procedure', 2639 + description: 'Reset a user account password using a token.', 2640 + input: { 2641 + encoding: 'application/json', 2642 + schema: { 2643 + type: 'object', 2644 + required: ['token', 'password'], 2645 + properties: { 2646 + token: { 2647 + type: 'string', 2648 + }, 2649 + password: { 2650 + type: 'string', 2651 + }, 2652 + }, 2653 + }, 2654 + }, 2655 + errors: [ 2656 + { 2657 + name: 'ExpiredToken', 2658 + }, 2659 + { 2660 + name: 'InvalidToken', 2661 + }, 2662 + ], 2663 + }, 2664 + }, 2665 + }, 2666 + ComAtprotoServerRevokeAppPassword: { 2667 + lexicon: 1, 2668 + id: 'com.atproto.server.revokeAppPassword', 2669 + defs: { 2670 + main: { 2671 + type: 'procedure', 2672 + description: 'Revoke an app-specific password by name.', 2673 + input: { 2674 + encoding: 'application/json', 2675 + schema: { 2676 + type: 'object', 2677 + required: ['name'], 2678 + properties: { 2679 + name: { 2680 + type: 'string', 2681 + }, 2682 + }, 2683 + }, 2684 + }, 2685 + }, 2686 + }, 2687 + }, 2688 + ComAtprotoSyncGetBlob: { 2689 + lexicon: 1, 2690 + id: 'com.atproto.sync.getBlob', 2691 + defs: { 2692 + main: { 2693 + type: 'query', 2694 + description: 'Get a blob associated with a given repo.', 2695 + parameters: { 2696 + type: 'params', 2697 + required: ['did', 'cid'], 2698 + properties: { 2699 + did: { 2700 + type: 'string', 2701 + format: 'did', 2702 + description: 'The DID of the repo.', 2703 + }, 2704 + cid: { 2705 + type: 'string', 2706 + format: 'cid', 2707 + description: 'The CID of the blob to fetch', 2708 + }, 2709 + }, 2710 + }, 2711 + output: { 2712 + encoding: '*/*', 2713 + }, 2714 + }, 2715 + }, 2716 + }, 2717 + ComAtprotoSyncGetBlocks: { 2718 + lexicon: 1, 2719 + id: 'com.atproto.sync.getBlocks', 2720 + defs: { 2721 + main: { 2722 + type: 'query', 2723 + description: 'Gets blocks from a given repo.', 2724 + parameters: { 2725 + type: 'params', 2726 + required: ['did', 'cids'], 2727 + properties: { 2728 + did: { 2729 + type: 'string', 2730 + format: 'did', 2731 + description: 'The DID of the repo.', 2732 + }, 2733 + cids: { 2734 + type: 'array', 2735 + items: { 2736 + type: 'string', 2737 + format: 'cid', 2738 + }, 2739 + }, 2740 + }, 2741 + }, 2742 + output: { 2743 + encoding: 'application/vnd.ipld.car', 2744 + }, 2745 + }, 2746 + }, 2747 + }, 2748 + ComAtprotoSyncGetCheckout: { 2749 + lexicon: 1, 2750 + id: 'com.atproto.sync.getCheckout', 2751 + defs: { 2752 + main: { 2753 + type: 'query', 2754 + description: 'Gets the repo state.', 2755 + parameters: { 2756 + type: 'params', 2757 + required: ['did'], 2758 + properties: { 2759 + did: { 2760 + type: 'string', 2761 + format: 'did', 2762 + description: 'The DID of the repo.', 2763 + }, 2764 + commit: { 2765 + type: 'string', 2766 + format: 'cid', 2767 + description: 2768 + 'The commit to get the checkout from. Defaults to current HEAD.', 2769 + }, 2770 + }, 2771 + }, 2772 + output: { 2773 + encoding: 'application/vnd.ipld.car', 2774 + }, 2775 + }, 2776 + }, 2777 + }, 2778 + ComAtprotoSyncGetCommitPath: { 2779 + lexicon: 1, 2780 + id: 'com.atproto.sync.getCommitPath', 2781 + defs: { 2782 + main: { 2783 + type: 'query', 2784 + description: 'Gets the path of repo commits', 2785 + parameters: { 2786 + type: 'params', 2787 + required: ['did'], 2788 + properties: { 2789 + did: { 2790 + type: 'string', 2791 + format: 'did', 2792 + description: 'The DID of the repo.', 2793 + }, 2794 + latest: { 2795 + type: 'string', 2796 + format: 'cid', 2797 + description: 'The most recent commit', 2798 + }, 2799 + earliest: { 2800 + type: 'string', 2801 + format: 'cid', 2802 + description: 'The earliest commit to start from', 2803 + }, 2804 + }, 2805 + }, 2806 + output: { 2807 + encoding: 'application/json', 2808 + schema: { 2809 + type: 'object', 2810 + required: ['commits'], 2811 + properties: { 2812 + commits: { 2813 + type: 'array', 2814 + items: { 2815 + type: 'string', 2816 + format: 'cid', 2817 + }, 2818 + }, 2819 + }, 2820 + }, 2821 + }, 2822 + }, 2823 + }, 2824 + }, 2825 + ComAtprotoSyncGetHead: { 2826 + lexicon: 1, 2827 + id: 'com.atproto.sync.getHead', 2828 + defs: { 2829 + main: { 2830 + type: 'query', 2831 + description: 'Gets the current HEAD CID of a repo.', 2832 + parameters: { 2833 + type: 'params', 2834 + required: ['did'], 2835 + properties: { 2836 + did: { 2837 + type: 'string', 2838 + format: 'did', 2839 + description: 'The DID of the repo.', 2840 + }, 2841 + }, 2842 + }, 2843 + output: { 2844 + encoding: 'application/json', 2845 + schema: { 2846 + type: 'object', 2847 + required: ['root'], 2848 + properties: { 2849 + root: { 2850 + type: 'string', 2851 + format: 'cid', 2852 + }, 2853 + }, 2854 + }, 2855 + }, 2856 + }, 2857 + }, 2858 + }, 2859 + ComAtprotoSyncGetRecord: { 2860 + lexicon: 1, 2861 + id: 'com.atproto.sync.getRecord', 2862 + defs: { 2863 + main: { 2864 + type: 'query', 2865 + description: 2866 + 'Gets blocks needed for existence or non-existence of record.', 2867 + parameters: { 2868 + type: 'params', 2869 + required: ['did', 'collection', 'rkey'], 2870 + properties: { 2871 + did: { 2872 + type: 'string', 2873 + format: 'did', 2874 + description: 'The DID of the repo.', 2875 + }, 2876 + collection: { 2877 + type: 'string', 2878 + format: 'nsid', 2879 + }, 2880 + rkey: { 2881 + type: 'string', 2882 + }, 2883 + commit: { 2884 + type: 'string', 2885 + format: 'cid', 2886 + description: 'An optional past commit CID.', 2887 + }, 2888 + }, 2889 + }, 2890 + output: { 2891 + encoding: 'application/vnd.ipld.car', 2892 + }, 2893 + }, 2894 + }, 2895 + }, 2896 + ComAtprotoSyncGetRepo: { 2897 + lexicon: 1, 2898 + id: 'com.atproto.sync.getRepo', 2899 + defs: { 2900 + main: { 2901 + type: 'query', 2902 + description: 'Gets the repo state.', 2903 + parameters: { 2904 + type: 'params', 2905 + required: ['did'], 2906 + properties: { 2907 + did: { 2908 + type: 'string', 2909 + format: 'did', 2910 + description: 'The DID of the repo.', 2911 + }, 2912 + earliest: { 2913 + type: 'string', 2914 + format: 'cid', 2915 + description: 2916 + 'The earliest commit in the commit range (not inclusive)', 2917 + }, 2918 + latest: { 2919 + type: 'string', 2920 + format: 'cid', 2921 + description: 'The latest commit in the commit range (inclusive)', 2922 + }, 2923 + }, 2924 + }, 2925 + output: { 2926 + encoding: 'application/vnd.ipld.car', 2927 + }, 2928 + }, 2929 + }, 2930 + }, 2931 + ComAtprotoSyncListBlobs: { 2932 + lexicon: 1, 2933 + id: 'com.atproto.sync.listBlobs', 2934 + defs: { 2935 + main: { 2936 + type: 'query', 2937 + description: 'List blob cids for some range of commits', 2938 + parameters: { 2939 + type: 'params', 2940 + required: ['did'], 2941 + properties: { 2942 + did: { 2943 + type: 'string', 2944 + format: 'did', 2945 + description: 'The DID of the repo.', 2946 + }, 2947 + latest: { 2948 + type: 'string', 2949 + format: 'cid', 2950 + description: 'The most recent commit', 2951 + }, 2952 + earliest: { 2953 + type: 'string', 2954 + format: 'cid', 2955 + description: 'The earliest commit to start from', 2956 + }, 2957 + }, 2958 + }, 2959 + output: { 2960 + encoding: 'application/json', 2961 + schema: { 2962 + type: 'object', 2963 + required: ['cids'], 2964 + properties: { 2965 + cids: { 2966 + type: 'array', 2967 + items: { 2968 + type: 'string', 2969 + format: 'cid', 2970 + }, 2971 + }, 2972 + }, 2973 + }, 2974 + }, 2975 + }, 2976 + }, 2977 + }, 2978 + ComAtprotoSyncListRepos: { 2979 + lexicon: 1, 2980 + id: 'com.atproto.sync.listRepos', 2981 + defs: { 2982 + main: { 2983 + type: 'query', 2984 + description: 'List dids and root cids of hosted repos', 2985 + parameters: { 2986 + type: 'params', 2987 + properties: { 2988 + limit: { 2989 + type: 'integer', 2990 + minimum: 1, 2991 + maximum: 1000, 2992 + default: 500, 2993 + }, 2994 + cursor: { 2995 + type: 'string', 2996 + }, 2997 + }, 2998 + }, 2999 + output: { 3000 + encoding: 'application/json', 3001 + schema: { 3002 + type: 'object', 3003 + required: ['repos'], 3004 + properties: { 3005 + cursor: { 3006 + type: 'string', 3007 + }, 3008 + repos: { 3009 + type: 'array', 3010 + items: { 3011 + type: 'ref', 3012 + ref: 'lex:com.atproto.sync.listRepos#repo', 3013 + }, 3014 + }, 3015 + }, 3016 + }, 3017 + }, 3018 + }, 3019 + repo: { 3020 + type: 'object', 3021 + required: ['did', 'head'], 3022 + properties: { 3023 + did: { 3024 + type: 'string', 3025 + format: 'did', 3026 + }, 3027 + head: { 3028 + type: 'string', 3029 + format: 'cid', 3030 + }, 3031 + }, 3032 + }, 3033 + }, 3034 + }, 3035 + ComAtprotoSyncNotifyOfUpdate: { 3036 + lexicon: 1, 3037 + id: 'com.atproto.sync.notifyOfUpdate', 3038 + defs: { 3039 + main: { 3040 + type: 'query', 3041 + description: 3042 + 'Notify a crawling service of a recent update. Often when a long break between updates causes the connection with the crawling service to break.', 3043 + parameters: { 3044 + type: 'params', 3045 + required: ['hostname'], 3046 + properties: { 3047 + hostname: { 3048 + type: 'string', 3049 + description: 3050 + 'Hostname of the service that is notifying of update.', 3051 + }, 3052 + }, 3053 + }, 3054 + }, 3055 + }, 3056 + }, 3057 + ComAtprotoSyncRequestCrawl: { 3058 + lexicon: 1, 3059 + id: 'com.atproto.sync.requestCrawl', 3060 + defs: { 3061 + main: { 3062 + type: 'query', 3063 + description: 'Request a service to persistently crawl hosted repos.', 3064 + parameters: { 3065 + type: 'params', 3066 + required: ['hostname'], 3067 + properties: { 3068 + hostname: { 3069 + type: 'string', 3070 + description: 3071 + 'Hostname of the service that is requesting to be crawled.', 3072 + }, 3073 + }, 3074 + }, 3075 + }, 3076 + }, 3077 + }, 3078 + ComAtprotoSyncSubscribeRepos: { 3079 + lexicon: 1, 3080 + id: 'com.atproto.sync.subscribeRepos', 3081 + defs: { 3082 + main: { 3083 + type: 'subscription', 3084 + description: 'Subscribe to repo updates', 3085 + parameters: { 3086 + type: 'params', 3087 + properties: { 3088 + cursor: { 3089 + type: 'integer', 3090 + description: 'The last known event to backfill from.', 3091 + }, 3092 + }, 3093 + }, 3094 + message: { 3095 + schema: { 3096 + type: 'union', 3097 + refs: [ 3098 + 'lex:com.atproto.sync.subscribeRepos#commit', 3099 + 'lex:com.atproto.sync.subscribeRepos#handle', 3100 + 'lex:com.atproto.sync.subscribeRepos#migrate', 3101 + 'lex:com.atproto.sync.subscribeRepos#tombstone', 3102 + 'lex:com.atproto.sync.subscribeRepos#info', 3103 + ], 3104 + }, 3105 + }, 3106 + errors: [ 3107 + { 3108 + name: 'FutureCursor', 3109 + }, 3110 + ], 3111 + }, 3112 + commit: { 3113 + type: 'object', 3114 + required: [ 3115 + 'seq', 3116 + 'rebase', 3117 + 'tooBig', 3118 + 'repo', 3119 + 'commit', 3120 + 'prev', 3121 + 'blocks', 3122 + 'ops', 3123 + 'blobs', 3124 + 'time', 3125 + ], 3126 + nullable: ['prev'], 3127 + properties: { 3128 + seq: { 3129 + type: 'integer', 3130 + }, 3131 + rebase: { 3132 + type: 'boolean', 3133 + }, 3134 + tooBig: { 3135 + type: 'boolean', 3136 + }, 3137 + repo: { 3138 + type: 'string', 3139 + format: 'did', 3140 + }, 3141 + commit: { 3142 + type: 'cid-link', 3143 + }, 3144 + prev: { 3145 + type: 'cid-link', 3146 + }, 3147 + blocks: { 3148 + type: 'bytes', 3149 + description: 'CAR file containing relevant blocks', 3150 + maxLength: 1000000, 3151 + }, 3152 + ops: { 3153 + type: 'array', 3154 + items: { 3155 + type: 'ref', 3156 + ref: 'lex:com.atproto.sync.subscribeRepos#repoOp', 3157 + }, 3158 + maxLength: 200, 3159 + }, 3160 + blobs: { 3161 + type: 'array', 3162 + items: { 3163 + type: 'cid-link', 3164 + }, 3165 + }, 3166 + time: { 3167 + type: 'string', 3168 + format: 'datetime', 3169 + }, 3170 + }, 3171 + }, 3172 + handle: { 3173 + type: 'object', 3174 + required: ['seq', 'did', 'handle', 'time'], 3175 + properties: { 3176 + seq: { 3177 + type: 'integer', 3178 + }, 3179 + did: { 3180 + type: 'string', 3181 + format: 'did', 3182 + }, 3183 + handle: { 3184 + type: 'string', 3185 + format: 'handle', 3186 + }, 3187 + time: { 3188 + type: 'string', 3189 + format: 'datetime', 3190 + }, 3191 + }, 3192 + }, 3193 + migrate: { 3194 + type: 'object', 3195 + required: ['seq', 'did', 'migrateTo', 'time'], 3196 + nullable: ['migrateTo'], 3197 + properties: { 3198 + seq: { 3199 + type: 'integer', 3200 + }, 3201 + did: { 3202 + type: 'string', 3203 + format: 'did', 3204 + }, 3205 + migrateTo: { 3206 + type: 'string', 3207 + }, 3208 + time: { 3209 + type: 'string', 3210 + format: 'datetime', 3211 + }, 3212 + }, 3213 + }, 3214 + tombstone: { 3215 + type: 'object', 3216 + required: ['seq', 'did', 'time'], 3217 + properties: { 3218 + seq: { 3219 + type: 'integer', 3220 + }, 3221 + did: { 3222 + type: 'string', 3223 + format: 'did', 3224 + }, 3225 + time: { 3226 + type: 'string', 3227 + format: 'datetime', 3228 + }, 3229 + }, 3230 + }, 3231 + info: { 3232 + type: 'object', 3233 + required: ['name'], 3234 + properties: { 3235 + name: { 3236 + type: 'string', 3237 + knownValues: ['OutdatedCursor'], 3238 + }, 3239 + message: { 3240 + type: 'string', 3241 + }, 3242 + }, 3243 + }, 3244 + repoOp: { 3245 + type: 'object', 3246 + required: ['action', 'path', 'cid'], 3247 + nullable: ['cid'], 3248 + properties: { 3249 + action: { 3250 + type: 'string', 3251 + knownValues: ['create', 'update', 'delete'], 3252 + }, 3253 + path: { 3254 + type: 'string', 3255 + }, 3256 + cid: { 3257 + type: 'cid-link', 3258 + }, 3259 + }, 3260 + }, 3261 + }, 3262 + }, 3263 + AppBskyActorDefs: { 3264 + lexicon: 1, 3265 + id: 'app.bsky.actor.defs', 3266 + description: 'A reference to an actor in the network.', 3267 + defs: { 3268 + profileViewBasic: { 3269 + type: 'object', 3270 + required: ['did', 'handle'], 3271 + properties: { 3272 + did: { 3273 + type: 'string', 3274 + format: 'did', 3275 + }, 3276 + handle: { 3277 + type: 'string', 3278 + format: 'handle', 3279 + }, 3280 + displayName: { 3281 + type: 'string', 3282 + maxGraphemes: 64, 3283 + maxLength: 640, 3284 + }, 3285 + avatar: { 3286 + type: 'string', 3287 + }, 3288 + actorType: { 3289 + type: 'ref', 3290 + ref: 'lex:app.bsky.actor.defs#actorType', 3291 + }, 3292 + viewer: { 3293 + type: 'ref', 3294 + ref: 'lex:app.bsky.actor.defs#viewerState', 3295 + }, 3296 + labels: { 3297 + type: 'array', 3298 + items: { 3299 + type: 'ref', 3300 + ref: 'lex:com.atproto.label.defs#label', 3301 + }, 3302 + }, 3303 + }, 3304 + }, 3305 + profileView: { 3306 + type: 'object', 3307 + required: ['did', 'handle'], 3308 + properties: { 3309 + did: { 3310 + type: 'string', 3311 + format: 'did', 3312 + }, 3313 + handle: { 3314 + type: 'string', 3315 + format: 'handle', 3316 + }, 3317 + displayName: { 3318 + type: 'string', 3319 + maxGraphemes: 64, 3320 + maxLength: 640, 3321 + }, 3322 + description: { 3323 + type: 'string', 3324 + maxGraphemes: 256, 3325 + maxLength: 2560, 3326 + }, 3327 + avatar: { 3328 + type: 'string', 3329 + }, 3330 + actorType: { 3331 + type: 'ref', 3332 + ref: 'lex:app.bsky.actor.defs#actorType', 3333 + }, 3334 + indexedAt: { 3335 + type: 'string', 3336 + format: 'datetime', 3337 + }, 3338 + viewer: { 3339 + type: 'ref', 3340 + ref: 'lex:app.bsky.actor.defs#viewerState', 3341 + }, 3342 + labels: { 3343 + type: 'array', 3344 + items: { 3345 + type: 'ref', 3346 + ref: 'lex:com.atproto.label.defs#label', 3347 + }, 3348 + }, 3349 + }, 3350 + }, 3351 + profileViewDetailed: { 3352 + type: 'object', 3353 + required: ['did', 'handle'], 3354 + properties: { 3355 + did: { 3356 + type: 'string', 3357 + format: 'did', 3358 + }, 3359 + handle: { 3360 + type: 'string', 3361 + format: 'handle', 3362 + }, 3363 + displayName: { 3364 + type: 'string', 3365 + maxGraphemes: 64, 3366 + maxLength: 640, 3367 + }, 3368 + description: { 3369 + type: 'string', 3370 + maxGraphemes: 256, 3371 + maxLength: 2560, 3372 + }, 3373 + avatar: { 3374 + type: 'string', 3375 + }, 3376 + actorType: { 3377 + type: 'ref', 3378 + ref: 'lex:app.bsky.actor.defs#actorType', 3379 + }, 3380 + actorInfo: { 3381 + type: 'union', 3382 + refs: ['lex:app.bsky.actor.defs#infoFeedGenerator'], 3383 + }, 3384 + banner: { 3385 + type: 'string', 3386 + }, 3387 + followersCount: { 3388 + type: 'integer', 3389 + }, 3390 + followsCount: { 3391 + type: 'integer', 3392 + }, 3393 + postsCount: { 3394 + type: 'integer', 3395 + }, 3396 + indexedAt: { 3397 + type: 'string', 3398 + format: 'datetime', 3399 + }, 3400 + viewer: { 3401 + type: 'ref', 3402 + ref: 'lex:app.bsky.actor.defs#viewerState', 3403 + }, 3404 + labels: { 3405 + type: 'array', 3406 + items: { 3407 + type: 'ref', 3408 + ref: 'lex:com.atproto.label.defs#label', 3409 + }, 3410 + }, 3411 + }, 3412 + }, 3413 + viewerState: { 3414 + type: 'object', 3415 + properties: { 3416 + muted: { 3417 + type: 'boolean', 3418 + }, 3419 + blockedBy: { 3420 + type: 'boolean', 3421 + }, 3422 + blocking: { 3423 + type: 'string', 3424 + format: 'at-uri', 3425 + }, 3426 + following: { 3427 + type: 'string', 3428 + format: 'at-uri', 3429 + }, 3430 + followedBy: { 3431 + type: 'string', 3432 + format: 'at-uri', 3433 + }, 3434 + }, 3435 + }, 3436 + infoFeedGenerator: { 3437 + type: 'object', 3438 + required: ['likes'], 3439 + properties: { 3440 + likes: { 3441 + type: 'integer', 3442 + }, 3443 + }, 3444 + }, 3445 + actorType: { 3446 + type: 'string', 3447 + knownValues: [ 3448 + 'app.bsky.actor.defs#user', 3449 + 'app.bsky.actor.defs#feedGenerator', 3450 + ], 3451 + }, 3452 + user: { 3453 + type: 'token', 3454 + description: 3455 + 'Actor type: User. This is the default option and an actor is assumed to be a user unless suggested otherwise.', 3456 + }, 3457 + feedGenerator: { 3458 + type: 'token', 3459 + description: 3460 + 'Actor type: Feed Generator. A service that provides a custom feed.', 3461 + }, 3462 + }, 3463 + }, 3464 + AppBskyActorGetProfile: { 3465 + lexicon: 1, 3466 + id: 'app.bsky.actor.getProfile', 3467 + defs: { 3468 + main: { 3469 + type: 'query', 3470 + parameters: { 3471 + type: 'params', 3472 + required: ['actor'], 3473 + properties: { 3474 + actor: { 3475 + type: 'string', 3476 + format: 'at-identifier', 3477 + }, 3478 + }, 3479 + }, 3480 + output: { 3481 + encoding: 'application/json', 3482 + schema: { 3483 + type: 'ref', 3484 + ref: 'lex:app.bsky.actor.defs#profileViewDetailed', 3485 + }, 3486 + }, 3487 + }, 3488 + }, 3489 + }, 3490 + AppBskyActorGetProfiles: { 3491 + lexicon: 1, 3492 + id: 'app.bsky.actor.getProfiles', 3493 + defs: { 3494 + main: { 3495 + type: 'query', 3496 + parameters: { 3497 + type: 'params', 3498 + required: ['actors'], 3499 + properties: { 3500 + actors: { 3501 + type: 'array', 3502 + items: { 3503 + type: 'string', 3504 + format: 'at-identifier', 3505 + }, 3506 + maxLength: 25, 3507 + }, 3508 + }, 3509 + }, 3510 + output: { 3511 + encoding: 'application/json', 3512 + schema: { 3513 + type: 'object', 3514 + required: ['profiles'], 3515 + properties: { 3516 + profiles: { 3517 + type: 'array', 3518 + items: { 3519 + type: 'ref', 3520 + ref: 'lex:app.bsky.actor.defs#profileViewDetailed', 3521 + }, 3522 + }, 3523 + }, 3524 + }, 3525 + }, 3526 + }, 3527 + }, 3528 + }, 3529 + AppBskyActorGetSuggestions: { 3530 + lexicon: 1, 3531 + id: 'app.bsky.actor.getSuggestions', 3532 + defs: { 3533 + main: { 3534 + type: 'query', 3535 + description: 3536 + 'Get a list of actors suggested for following. Used in discovery UIs.', 3537 + parameters: { 3538 + type: 'params', 3539 + properties: { 3540 + limit: { 3541 + type: 'integer', 3542 + minimum: 1, 3543 + maximum: 100, 3544 + default: 50, 3545 + }, 3546 + cursor: { 3547 + type: 'string', 3548 + }, 3549 + }, 3550 + }, 3551 + output: { 3552 + encoding: 'application/json', 3553 + schema: { 3554 + type: 'object', 3555 + required: ['actors'], 3556 + properties: { 3557 + cursor: { 3558 + type: 'string', 3559 + }, 3560 + actors: { 3561 + type: 'array', 3562 + items: { 3563 + type: 'ref', 3564 + ref: 'lex:app.bsky.actor.defs#profileView', 3565 + }, 3566 + }, 3567 + }, 3568 + }, 3569 + }, 3570 + }, 3571 + }, 3572 + }, 3573 + AppBskyActorProfile: { 3574 + lexicon: 1, 3575 + id: 'app.bsky.actor.profile', 3576 + defs: { 3577 + main: { 3578 + type: 'record', 3579 + key: 'literal:self', 3580 + record: { 3581 + type: 'object', 3582 + properties: { 3583 + displayName: { 3584 + type: 'string', 3585 + maxGraphemes: 64, 3586 + maxLength: 640, 3587 + }, 3588 + description: { 3589 + type: 'string', 3590 + maxGraphemes: 256, 3591 + maxLength: 2560, 3592 + }, 3593 + avatar: { 3594 + type: 'blob', 3595 + accept: ['image/png', 'image/jpeg'], 3596 + maxSize: 1000000, 3597 + }, 3598 + banner: { 3599 + type: 'blob', 3600 + accept: ['image/png', 'image/jpeg'], 3601 + maxSize: 1000000, 3602 + }, 3603 + }, 3604 + }, 3605 + }, 3606 + }, 3607 + }, 3608 + AppBskyActorSearchActors: { 3609 + lexicon: 1, 3610 + id: 'app.bsky.actor.searchActors', 3611 + defs: { 3612 + main: { 3613 + type: 'query', 3614 + description: 'Find actors matching search criteria.', 3615 + parameters: { 3616 + type: 'params', 3617 + properties: { 3618 + term: { 3619 + type: 'string', 3620 + }, 3621 + limit: { 3622 + type: 'integer', 3623 + minimum: 1, 3624 + maximum: 100, 3625 + default: 50, 3626 + }, 3627 + cursor: { 3628 + type: 'string', 3629 + }, 3630 + }, 3631 + }, 3632 + output: { 3633 + encoding: 'application/json', 3634 + schema: { 3635 + type: 'object', 3636 + required: ['actors'], 3637 + properties: { 3638 + cursor: { 3639 + type: 'string', 3640 + }, 3641 + actors: { 3642 + type: 'array', 3643 + items: { 3644 + type: 'ref', 3645 + ref: 'lex:app.bsky.actor.defs#profileView', 3646 + }, 3647 + }, 3648 + }, 3649 + }, 3650 + }, 3651 + }, 3652 + }, 3653 + }, 3654 + AppBskyActorSearchActorsTypeahead: { 3655 + lexicon: 1, 3656 + id: 'app.bsky.actor.searchActorsTypeahead', 3657 + defs: { 3658 + main: { 3659 + type: 'query', 3660 + description: 'Find actor suggestions for a search term.', 3661 + parameters: { 3662 + type: 'params', 3663 + properties: { 3664 + term: { 3665 + type: 'string', 3666 + }, 3667 + limit: { 3668 + type: 'integer', 3669 + minimum: 1, 3670 + maximum: 100, 3671 + default: 50, 3672 + }, 3673 + }, 3674 + }, 3675 + output: { 3676 + encoding: 'application/json', 3677 + schema: { 3678 + type: 'object', 3679 + required: ['actors'], 3680 + properties: { 3681 + actors: { 3682 + type: 'array', 3683 + items: { 3684 + type: 'ref', 3685 + ref: 'lex:app.bsky.actor.defs#profileViewBasic', 3686 + }, 3687 + }, 3688 + }, 3689 + }, 3690 + }, 3691 + }, 3692 + }, 3693 + }, 3694 + AppBskyEmbedExternal: { 3695 + lexicon: 1, 3696 + id: 'app.bsky.embed.external', 3697 + description: 3698 + 'A representation of some externally linked content, embedded in another form of content', 3699 + defs: { 3700 + main: { 3701 + type: 'object', 3702 + required: ['external'], 3703 + properties: { 3704 + external: { 3705 + type: 'ref', 3706 + ref: 'lex:app.bsky.embed.external#external', 3707 + }, 3708 + }, 3709 + }, 3710 + external: { 3711 + type: 'object', 3712 + required: ['uri', 'title', 'description'], 3713 + properties: { 3714 + uri: { 3715 + type: 'string', 3716 + format: 'uri', 3717 + }, 3718 + title: { 3719 + type: 'string', 3720 + }, 3721 + description: { 3722 + type: 'string', 3723 + }, 3724 + thumb: { 3725 + type: 'blob', 3726 + accept: ['image/*'], 3727 + maxSize: 1000000, 3728 + }, 3729 + }, 3730 + }, 3731 + view: { 3732 + type: 'object', 3733 + required: ['external'], 3734 + properties: { 3735 + external: { 3736 + type: 'ref', 3737 + ref: 'lex:app.bsky.embed.external#viewExternal', 3738 + }, 3739 + }, 3740 + }, 3741 + viewExternal: { 3742 + type: 'object', 3743 + required: ['uri', 'title', 'description'], 3744 + properties: { 3745 + uri: { 3746 + type: 'string', 3747 + format: 'uri', 3748 + }, 3749 + title: { 3750 + type: 'string', 3751 + }, 3752 + description: { 3753 + type: 'string', 3754 + }, 3755 + thumb: { 3756 + type: 'string', 3757 + }, 3758 + }, 3759 + }, 3760 + }, 3761 + }, 3762 + AppBskyEmbedImages: { 3763 + lexicon: 1, 3764 + id: 'app.bsky.embed.images', 3765 + description: 'A set of images embedded in some other form of content', 3766 + defs: { 3767 + main: { 3768 + type: 'object', 3769 + required: ['images'], 3770 + properties: { 3771 + images: { 3772 + type: 'array', 3773 + items: { 3774 + type: 'ref', 3775 + ref: 'lex:app.bsky.embed.images#image', 3776 + }, 3777 + maxLength: 4, 3778 + }, 3779 + }, 3780 + }, 3781 + image: { 3782 + type: 'object', 3783 + required: ['image', 'alt'], 3784 + properties: { 3785 + image: { 3786 + type: 'blob', 3787 + accept: ['image/*'], 3788 + maxSize: 1000000, 3789 + }, 3790 + alt: { 3791 + type: 'string', 3792 + }, 3793 + }, 3794 + }, 3795 + view: { 3796 + type: 'object', 3797 + required: ['images'], 3798 + properties: { 3799 + images: { 3800 + type: 'array', 3801 + items: { 3802 + type: 'ref', 3803 + ref: 'lex:app.bsky.embed.images#viewImage', 3804 + }, 3805 + maxLength: 4, 3806 + }, 3807 + }, 3808 + }, 3809 + viewImage: { 3810 + type: 'object', 3811 + required: ['thumb', 'fullsize', 'alt'], 3812 + properties: { 3813 + thumb: { 3814 + type: 'string', 3815 + }, 3816 + fullsize: { 3817 + type: 'string', 3818 + }, 3819 + alt: { 3820 + type: 'string', 3821 + }, 3822 + }, 3823 + }, 3824 + }, 3825 + }, 3826 + AppBskyEmbedRecord: { 3827 + lexicon: 1, 3828 + id: 'app.bsky.embed.record', 3829 + description: 3830 + 'A representation of a record embedded in another form of content', 3831 + defs: { 3832 + main: { 3833 + type: 'object', 3834 + required: ['record'], 3835 + properties: { 3836 + record: { 3837 + type: 'ref', 3838 + ref: 'lex:com.atproto.repo.strongRef', 3839 + }, 3840 + }, 3841 + }, 3842 + view: { 3843 + type: 'object', 3844 + required: ['record'], 3845 + properties: { 3846 + record: { 3847 + type: 'union', 3848 + refs: [ 3849 + 'lex:app.bsky.embed.record#viewRecord', 3850 + 'lex:app.bsky.embed.record#viewNotFound', 3851 + 'lex:app.bsky.embed.record#viewBlocked', 3852 + ], 3853 + }, 3854 + }, 3855 + }, 3856 + viewRecord: { 3857 + type: 'object', 3858 + required: ['uri', 'cid', 'author', 'value', 'indexedAt'], 3859 + properties: { 3860 + uri: { 3861 + type: 'string', 3862 + format: 'at-uri', 3863 + }, 3864 + cid: { 3865 + type: 'string', 3866 + format: 'cid', 3867 + }, 3868 + author: { 3869 + type: 'ref', 3870 + ref: 'lex:app.bsky.actor.defs#profileViewBasic', 3871 + }, 3872 + value: { 3873 + type: 'unknown', 3874 + }, 3875 + labels: { 3876 + type: 'array', 3877 + items: { 3878 + type: 'ref', 3879 + ref: 'lex:com.atproto.label.defs#label', 3880 + }, 3881 + }, 3882 + embeds: { 3883 + type: 'array', 3884 + items: { 3885 + type: 'union', 3886 + refs: [ 3887 + 'lex:app.bsky.embed.images#view', 3888 + 'lex:app.bsky.embed.external#view', 3889 + 'lex:app.bsky.embed.record#view', 3890 + 'lex:app.bsky.embed.recordWithMedia#view', 3891 + ], 3892 + }, 3893 + }, 3894 + indexedAt: { 3895 + type: 'string', 3896 + format: 'datetime', 3897 + }, 3898 + }, 3899 + }, 3900 + viewNotFound: { 3901 + type: 'object', 3902 + required: ['uri'], 3903 + properties: { 3904 + uri: { 3905 + type: 'string', 3906 + format: 'at-uri', 3907 + }, 3908 + }, 3909 + }, 3910 + viewBlocked: { 3911 + type: 'object', 3912 + required: ['uri'], 3913 + properties: { 3914 + uri: { 3915 + type: 'string', 3916 + format: 'at-uri', 3917 + }, 3918 + }, 3919 + }, 3920 + }, 3921 + }, 3922 + AppBskyEmbedRecordWithMedia: { 3923 + lexicon: 1, 3924 + id: 'app.bsky.embed.recordWithMedia', 3925 + description: 3926 + 'A representation of a record embedded in another form of content, alongside other compatible embeds', 3927 + defs: { 3928 + main: { 3929 + type: 'object', 3930 + required: ['record', 'media'], 3931 + properties: { 3932 + record: { 3933 + type: 'ref', 3934 + ref: 'lex:app.bsky.embed.record', 3935 + }, 3936 + media: { 3937 + type: 'union', 3938 + refs: ['lex:app.bsky.embed.images', 'lex:app.bsky.embed.external'], 3939 + }, 3940 + }, 3941 + }, 3942 + view: { 3943 + type: 'object', 3944 + required: ['record', 'media'], 3945 + properties: { 3946 + record: { 3947 + type: 'ref', 3948 + ref: 'lex:app.bsky.embed.record#view', 3949 + }, 3950 + media: { 3951 + type: 'union', 3952 + refs: [ 3953 + 'lex:app.bsky.embed.images#view', 3954 + 'lex:app.bsky.embed.external#view', 3955 + ], 3956 + }, 3957 + }, 3958 + }, 3959 + }, 3960 + }, 3961 + AppBskyFeedBookmarkFeed: { 3962 + lexicon: 1, 3963 + id: 'app.bsky.feed.bookmarkFeed', 3964 + defs: { 3965 + main: { 3966 + type: 'procedure', 3967 + description: 'Bookmark a 3rd party feed for use across clients', 3968 + input: { 3969 + encoding: 'application/json', 3970 + schema: { 3971 + type: 'object', 3972 + required: ['feed'], 3973 + properties: { 3974 + feed: { 3975 + type: 'string', 3976 + format: 'at-identifier', 3977 + }, 3978 + }, 3979 + }, 3980 + }, 3981 + }, 3982 + }, 3983 + }, 3984 + AppBskyFeedDefs: { 3985 + lexicon: 1, 3986 + id: 'app.bsky.feed.defs', 3987 + defs: { 3988 + postView: { 3989 + type: 'object', 3990 + required: ['uri', 'cid', 'author', 'record', 'indexedAt'], 3991 + properties: { 3992 + uri: { 3993 + type: 'string', 3994 + format: 'at-uri', 3995 + }, 3996 + cid: { 3997 + type: 'string', 3998 + format: 'cid', 3999 + }, 4000 + author: { 4001 + type: 'ref', 4002 + ref: 'lex:app.bsky.actor.defs#profileViewBasic', 4003 + }, 4004 + record: { 4005 + type: 'unknown', 4006 + }, 4007 + embed: { 4008 + type: 'union', 4009 + refs: [ 4010 + 'lex:app.bsky.embed.images#view', 4011 + 'lex:app.bsky.embed.external#view', 4012 + 'lex:app.bsky.embed.record#view', 4013 + 'lex:app.bsky.embed.recordWithMedia#view', 4014 + ], 4015 + }, 4016 + replyCount: { 4017 + type: 'integer', 4018 + }, 4019 + repostCount: { 4020 + type: 'integer', 4021 + }, 4022 + likeCount: { 4023 + type: 'integer', 4024 + }, 4025 + indexedAt: { 4026 + type: 'string', 4027 + format: 'datetime', 4028 + }, 4029 + viewer: { 4030 + type: 'ref', 4031 + ref: 'lex:app.bsky.feed.defs#viewerState', 4032 + }, 4033 + labels: { 4034 + type: 'array', 4035 + items: { 4036 + type: 'ref', 4037 + ref: 'lex:com.atproto.label.defs#label', 4038 + }, 4039 + }, 4040 + }, 4041 + }, 4042 + viewerState: { 4043 + type: 'object', 4044 + properties: { 4045 + repost: { 4046 + type: 'string', 4047 + format: 'at-uri', 4048 + }, 4049 + like: { 4050 + type: 'string', 4051 + format: 'at-uri', 4052 + }, 4053 + }, 4054 + }, 4055 + feedViewPost: { 4056 + type: 'object', 4057 + required: ['post'], 4058 + properties: { 4059 + post: { 4060 + type: 'ref', 4061 + ref: 'lex:app.bsky.feed.defs#postView', 4062 + }, 4063 + reply: { 4064 + type: 'ref', 4065 + ref: 'lex:app.bsky.feed.defs#replyRef', 4066 + }, 4067 + reason: { 4068 + type: 'union', 4069 + refs: ['lex:app.bsky.feed.defs#reasonRepost'], 4070 + }, 4071 + }, 4072 + }, 4073 + replyRef: { 4074 + type: 'object', 4075 + required: ['root', 'parent'], 4076 + properties: { 4077 + root: { 4078 + type: 'union', 4079 + refs: [ 4080 + 'lex:app.bsky.feed.defs#postView', 4081 + 'lex:app.bsky.feed.defs#notFoundPost', 4082 + 'lex:app.bsky.feed.defs#blockedPost', 4083 + ], 4084 + }, 4085 + parent: { 4086 + type: 'union', 4087 + refs: [ 4088 + 'lex:app.bsky.feed.defs#postView', 4089 + 'lex:app.bsky.feed.defs#notFoundPost', 4090 + 'lex:app.bsky.feed.defs#blockedPost', 4091 + ], 4092 + }, 4093 + }, 4094 + }, 4095 + reasonRepost: { 4096 + type: 'object', 4097 + required: ['by', 'indexedAt'], 4098 + properties: { 4099 + by: { 4100 + type: 'ref', 4101 + ref: 'lex:app.bsky.actor.defs#profileViewBasic', 4102 + }, 4103 + indexedAt: { 4104 + type: 'string', 4105 + format: 'datetime', 4106 + }, 4107 + }, 4108 + }, 4109 + threadViewPost: { 4110 + type: 'object', 4111 + required: ['post'], 4112 + properties: { 4113 + post: { 4114 + type: 'ref', 4115 + ref: 'lex:app.bsky.feed.defs#postView', 4116 + }, 4117 + parent: { 4118 + type: 'union', 4119 + refs: [ 4120 + 'lex:app.bsky.feed.defs#threadViewPost', 4121 + 'lex:app.bsky.feed.defs#notFoundPost', 4122 + 'lex:app.bsky.feed.defs#blockedPost', 4123 + ], 4124 + }, 4125 + replies: { 4126 + type: 'array', 4127 + items: { 4128 + type: 'union', 4129 + refs: [ 4130 + 'lex:app.bsky.feed.defs#threadViewPost', 4131 + 'lex:app.bsky.feed.defs#notFoundPost', 4132 + 'lex:app.bsky.feed.defs#blockedPost', 4133 + ], 4134 + }, 4135 + }, 4136 + }, 4137 + }, 4138 + notFoundPost: { 4139 + type: 'object', 4140 + required: ['uri', 'notFound'], 4141 + properties: { 4142 + uri: { 4143 + type: 'string', 4144 + format: 'at-uri', 4145 + }, 4146 + notFound: { 4147 + type: 'boolean', 4148 + const: true, 4149 + }, 4150 + }, 4151 + }, 4152 + blockedPost: { 4153 + type: 'object', 4154 + required: ['uri', 'blocked'], 4155 + properties: { 4156 + uri: { 4157 + type: 'string', 4158 + format: 'at-uri', 4159 + }, 4160 + blocked: { 4161 + type: 'boolean', 4162 + const: true, 4163 + }, 4164 + }, 4165 + }, 4166 + skeletonFeedPost: { 4167 + type: 'object', 4168 + required: ['post'], 4169 + properties: { 4170 + post: { 4171 + type: 'string', 4172 + format: 'at-uri', 4173 + }, 4174 + replyTo: { 4175 + type: 'ref', 4176 + ref: 'lex:app.bsky.feed.defs#skeletonReplyRef', 4177 + }, 4178 + reason: { 4179 + type: 'union', 4180 + refs: ['lex:app.bsky.feed.defs#skeletonReasonRepost'], 4181 + }, 4182 + }, 4183 + }, 4184 + skeletonReplyRef: { 4185 + type: 'object', 4186 + required: ['root', 'parent'], 4187 + properties: { 4188 + root: { 4189 + type: 'string', 4190 + ref: 'at-uri', 4191 + }, 4192 + parent: { 4193 + type: 'string', 4194 + ref: 'at-uri', 4195 + }, 4196 + }, 4197 + }, 4198 + skeletonReasonRepost: { 4199 + type: 'object', 4200 + required: ['by', 'indexedAt'], 4201 + properties: { 4202 + by: { 4203 + type: 'string', 4204 + format: 'did', 4205 + }, 4206 + indexedAt: { 4207 + type: 'string', 4208 + format: 'datetime', 4209 + }, 4210 + }, 4211 + }, 4212 + }, 4213 + }, 4214 + AppBskyFeedGetAuthorFeed: { 4215 + lexicon: 1, 4216 + id: 'app.bsky.feed.getAuthorFeed', 4217 + defs: { 4218 + main: { 4219 + type: 'query', 4220 + description: "A view of an actor's feed.", 4221 + parameters: { 4222 + type: 'params', 4223 + required: ['actor'], 4224 + properties: { 4225 + actor: { 4226 + type: 'string', 4227 + format: 'at-identifier', 4228 + }, 4229 + limit: { 4230 + type: 'integer', 4231 + minimum: 1, 4232 + maximum: 100, 4233 + default: 50, 4234 + }, 4235 + cursor: { 4236 + type: 'string', 4237 + }, 4238 + }, 4239 + }, 4240 + output: { 4241 + encoding: 'application/json', 4242 + schema: { 4243 + type: 'object', 4244 + required: ['feed'], 4245 + properties: { 4246 + cursor: { 4247 + type: 'string', 4248 + }, 4249 + feed: { 4250 + type: 'array', 4251 + items: { 4252 + type: 'ref', 4253 + ref: 'lex:app.bsky.feed.defs#feedViewPost', 4254 + }, 4255 + }, 4256 + }, 4257 + }, 4258 + }, 4259 + errors: [ 4260 + { 4261 + name: 'BlockedActor', 4262 + }, 4263 + { 4264 + name: 'BlockedByActor', 4265 + }, 4266 + ], 4267 + }, 4268 + }, 4269 + }, 4270 + AppBskyFeedGetBookmarkedFeeds: { 4271 + lexicon: 1, 4272 + id: 'app.bsky.feed.getBookmarkedFeeds', 4273 + defs: { 4274 + main: { 4275 + type: 'query', 4276 + description: 4277 + "Retrieve a list of the authenticated user's bookmarked feeds", 4278 + parameters: { 4279 + type: 'params', 4280 + properties: { 4281 + limit: { 4282 + type: 'integer', 4283 + minimum: 1, 4284 + maximum: 100, 4285 + default: 50, 4286 + }, 4287 + cursor: { 4288 + type: 'string', 4289 + }, 4290 + }, 4291 + }, 4292 + output: { 4293 + encoding: 'application/json', 4294 + schema: { 4295 + type: 'object', 4296 + required: ['feeds'], 4297 + properties: { 4298 + cursor: { 4299 + type: 'string', 4300 + }, 4301 + feeds: { 4302 + type: 'array', 4303 + items: { 4304 + type: 'ref', 4305 + ref: 'lex:app.bsky.actor.defs#profileView', 4306 + }, 4307 + }, 4308 + }, 4309 + }, 4310 + }, 4311 + }, 4312 + }, 4313 + }, 4314 + AppBskyFeedGetFeed: { 4315 + lexicon: 1, 4316 + id: 'app.bsky.feed.getFeed', 4317 + defs: { 4318 + main: { 4319 + type: 'query', 4320 + description: 4321 + "Compose and hydrate a feed from a user's selected feed generator", 4322 + parameters: { 4323 + type: 'params', 4324 + required: ['feed'], 4325 + properties: { 4326 + feed: { 4327 + type: 'string', 4328 + format: 'at-identifier', 4329 + }, 4330 + limit: { 4331 + type: 'integer', 4332 + minimum: 1, 4333 + maximum: 100, 4334 + default: 50, 4335 + }, 4336 + cursor: { 4337 + type: 'string', 4338 + }, 4339 + }, 4340 + }, 4341 + output: { 4342 + encoding: 'application/json', 4343 + schema: { 4344 + type: 'object', 4345 + required: ['feed'], 4346 + properties: { 4347 + cursor: { 4348 + type: 'string', 4349 + }, 4350 + feed: { 4351 + type: 'array', 4352 + items: { 4353 + type: 'ref', 4354 + ref: 'lex:app.bsky.feed.defs#feedViewPost', 4355 + }, 4356 + }, 4357 + }, 4358 + }, 4359 + }, 4360 + }, 4361 + }, 4362 + }, 4363 + AppBskyFeedGetFeedSkeleton: { 4364 + lexicon: 1, 4365 + id: 'app.bsky.feed.getFeedSkeleton', 4366 + defs: { 4367 + main: { 4368 + type: 'query', 4369 + description: 'A skeleton of a feed provided by a feed generator', 4370 + parameters: { 4371 + type: 'params', 4372 + required: ['feed'], 4373 + properties: { 4374 + feed: { 4375 + type: 'string', 4376 + }, 4377 + limit: { 4378 + type: 'integer', 4379 + minimum: 1, 4380 + maximum: 100, 4381 + default: 50, 4382 + }, 4383 + cursor: { 4384 + type: 'string', 4385 + }, 4386 + }, 4387 + }, 4388 + output: { 4389 + encoding: 'application/json', 4390 + schema: { 4391 + type: 'object', 4392 + required: ['feed'], 4393 + properties: { 4394 + cursor: { 4395 + type: 'string', 4396 + }, 4397 + feed: { 4398 + type: 'array', 4399 + items: { 4400 + type: 'ref', 4401 + ref: 'lex:app.bsky.feed.defs#skeletonFeedPost', 4402 + }, 4403 + }, 4404 + }, 4405 + }, 4406 + }, 4407 + }, 4408 + }, 4409 + }, 4410 + AppBskyFeedGetLikes: { 4411 + lexicon: 1, 4412 + id: 'app.bsky.feed.getLikes', 4413 + defs: { 4414 + main: { 4415 + type: 'query', 4416 + parameters: { 4417 + type: 'params', 4418 + required: ['uri'], 4419 + properties: { 4420 + uri: { 4421 + type: 'string', 4422 + format: 'at-uri', 4423 + }, 4424 + cid: { 4425 + type: 'string', 4426 + format: 'cid', 4427 + }, 4428 + limit: { 4429 + type: 'integer', 4430 + minimum: 1, 4431 + maximum: 100, 4432 + default: 50, 4433 + }, 4434 + cursor: { 4435 + type: 'string', 4436 + }, 4437 + }, 4438 + }, 4439 + output: { 4440 + encoding: 'application/json', 4441 + schema: { 4442 + type: 'object', 4443 + required: ['uri', 'likes'], 4444 + properties: { 4445 + uri: { 4446 + type: 'string', 4447 + format: 'at-uri', 4448 + }, 4449 + cid: { 4450 + type: 'string', 4451 + format: 'cid', 4452 + }, 4453 + cursor: { 4454 + type: 'string', 4455 + }, 4456 + likes: { 4457 + type: 'array', 4458 + items: { 4459 + type: 'ref', 4460 + ref: 'lex:app.bsky.feed.getLikes#like', 4461 + }, 4462 + }, 4463 + }, 4464 + }, 4465 + }, 4466 + }, 4467 + like: { 4468 + type: 'object', 4469 + required: ['indexedAt', 'createdAt', 'actor'], 4470 + properties: { 4471 + indexedAt: { 4472 + type: 'string', 4473 + format: 'datetime', 4474 + }, 4475 + createdAt: { 4476 + type: 'string', 4477 + format: 'datetime', 4478 + }, 4479 + actor: { 4480 + type: 'ref', 4481 + ref: 'lex:app.bsky.actor.defs#profileView', 4482 + }, 4483 + }, 4484 + }, 4485 + }, 4486 + }, 4487 + AppBskyFeedGetPostThread: { 4488 + lexicon: 1, 4489 + id: 'app.bsky.feed.getPostThread', 4490 + defs: { 4491 + main: { 4492 + type: 'query', 4493 + parameters: { 4494 + type: 'params', 4495 + required: ['uri'], 4496 + properties: { 4497 + uri: { 4498 + type: 'string', 4499 + format: 'at-uri', 4500 + }, 4501 + depth: { 4502 + type: 'integer', 4503 + }, 4504 + }, 4505 + }, 4506 + output: { 4507 + encoding: 'application/json', 4508 + schema: { 4509 + type: 'object', 4510 + required: ['thread'], 4511 + properties: { 4512 + thread: { 4513 + type: 'union', 4514 + refs: [ 4515 + 'lex:app.bsky.feed.defs#threadViewPost', 4516 + 'lex:app.bsky.feed.defs#notFoundPost', 4517 + 'lex:app.bsky.feed.defs#blockedPost', 4518 + ], 4519 + }, 4520 + }, 4521 + }, 4522 + }, 4523 + errors: [ 4524 + { 4525 + name: 'NotFound', 4526 + }, 4527 + ], 4528 + }, 4529 + }, 4530 + }, 4531 + AppBskyFeedGetPosts: { 4532 + lexicon: 1, 4533 + id: 'app.bsky.feed.getPosts', 4534 + defs: { 4535 + main: { 4536 + type: 'query', 4537 + description: "A view of an actor's feed.", 4538 + parameters: { 4539 + type: 'params', 4540 + required: ['uris'], 4541 + properties: { 4542 + uris: { 4543 + type: 'array', 4544 + items: { 4545 + type: 'string', 4546 + format: 'at-uri', 4547 + }, 4548 + maxLength: 25, 4549 + }, 4550 + }, 4551 + }, 4552 + output: { 4553 + encoding: 'application/json', 4554 + schema: { 4555 + type: 'object', 4556 + required: ['posts'], 4557 + properties: { 4558 + posts: { 4559 + type: 'array', 4560 + items: { 4561 + type: 'ref', 4562 + ref: 'lex:app.bsky.feed.defs#postView', 4563 + }, 4564 + }, 4565 + }, 4566 + }, 4567 + }, 4568 + }, 4569 + }, 4570 + }, 4571 + AppBskyFeedGetRepostedBy: { 4572 + lexicon: 1, 4573 + id: 'app.bsky.feed.getRepostedBy', 4574 + defs: { 4575 + main: { 4576 + type: 'query', 4577 + parameters: { 4578 + type: 'params', 4579 + required: ['uri'], 4580 + properties: { 4581 + uri: { 4582 + type: 'string', 4583 + format: 'at-uri', 4584 + }, 4585 + cid: { 4586 + type: 'string', 4587 + format: 'cid', 4588 + }, 4589 + limit: { 4590 + type: 'integer', 4591 + minimum: 1, 4592 + maximum: 100, 4593 + default: 50, 4594 + }, 4595 + cursor: { 4596 + type: 'string', 4597 + }, 4598 + }, 4599 + }, 4600 + output: { 4601 + encoding: 'application/json', 4602 + schema: { 4603 + type: 'object', 4604 + required: ['uri', 'repostedBy'], 4605 + properties: { 4606 + uri: { 4607 + type: 'string', 4608 + format: 'at-uri', 4609 + }, 4610 + cid: { 4611 + type: 'string', 4612 + format: 'cid', 4613 + }, 4614 + cursor: { 4615 + type: 'string', 4616 + }, 4617 + repostedBy: { 4618 + type: 'array', 4619 + items: { 4620 + type: 'ref', 4621 + ref: 'lex:app.bsky.actor.defs#profileView', 4622 + }, 4623 + }, 4624 + }, 4625 + }, 4626 + }, 4627 + }, 4628 + }, 4629 + }, 4630 + AppBskyFeedGetTimeline: { 4631 + lexicon: 1, 4632 + id: 'app.bsky.feed.getTimeline', 4633 + defs: { 4634 + main: { 4635 + type: 'query', 4636 + description: "A view of the user's home timeline.", 4637 + parameters: { 4638 + type: 'params', 4639 + properties: { 4640 + algorithm: { 4641 + type: 'string', 4642 + }, 4643 + limit: { 4644 + type: 'integer', 4645 + minimum: 1, 4646 + maximum: 100, 4647 + default: 50, 4648 + }, 4649 + cursor: { 4650 + type: 'string', 4651 + }, 4652 + }, 4653 + }, 4654 + output: { 4655 + encoding: 'application/json', 4656 + schema: { 4657 + type: 'object', 4658 + required: ['feed'], 4659 + properties: { 4660 + cursor: { 4661 + type: 'string', 4662 + }, 4663 + feed: { 4664 + type: 'array', 4665 + items: { 4666 + type: 'ref', 4667 + ref: 'lex:app.bsky.feed.defs#feedViewPost', 4668 + }, 4669 + }, 4670 + }, 4671 + }, 4672 + }, 4673 + }, 4674 + }, 4675 + }, 4676 + AppBskyFeedLike: { 4677 + lexicon: 1, 4678 + id: 'app.bsky.feed.like', 4679 + defs: { 4680 + main: { 4681 + type: 'record', 4682 + key: 'tid', 4683 + record: { 4684 + type: 'object', 4685 + required: ['subject', 'createdAt'], 4686 + properties: { 4687 + subject: { 4688 + type: 'ref', 4689 + ref: 'lex:com.atproto.repo.strongRef', 4690 + }, 4691 + createdAt: { 4692 + type: 'string', 4693 + format: 'datetime', 4694 + }, 4695 + }, 4696 + }, 4697 + }, 4698 + }, 4699 + }, 4700 + AppBskyFeedPost: { 4701 + lexicon: 1, 4702 + id: 'app.bsky.feed.post', 4703 + defs: { 4704 + main: { 4705 + type: 'record', 4706 + key: 'tid', 4707 + record: { 4708 + type: 'object', 4709 + required: ['text', 'createdAt'], 4710 + properties: { 4711 + text: { 4712 + type: 'string', 4713 + maxLength: 3000, 4714 + maxGraphemes: 300, 4715 + }, 4716 + entities: { 4717 + type: 'array', 4718 + description: 'Deprecated: replaced by app.bsky.richtext.facet.', 4719 + items: { 4720 + type: 'ref', 4721 + ref: 'lex:app.bsky.feed.post#entity', 4722 + }, 4723 + }, 4724 + facets: { 4725 + type: 'array', 4726 + items: { 4727 + type: 'ref', 4728 + ref: 'lex:app.bsky.richtext.facet', 4729 + }, 4730 + }, 4731 + reply: { 4732 + type: 'ref', 4733 + ref: 'lex:app.bsky.feed.post#replyRef', 4734 + }, 4735 + embed: { 4736 + type: 'union', 4737 + refs: [ 4738 + 'lex:app.bsky.embed.images', 4739 + 'lex:app.bsky.embed.external', 4740 + 'lex:app.bsky.embed.record', 4741 + 'lex:app.bsky.embed.recordWithMedia', 4742 + ], 4743 + }, 4744 + createdAt: { 4745 + type: 'string', 4746 + format: 'datetime', 4747 + }, 4748 + }, 4749 + }, 4750 + }, 4751 + replyRef: { 4752 + type: 'object', 4753 + required: ['root', 'parent'], 4754 + properties: { 4755 + root: { 4756 + type: 'ref', 4757 + ref: 'lex:com.atproto.repo.strongRef', 4758 + }, 4759 + parent: { 4760 + type: 'ref', 4761 + ref: 'lex:com.atproto.repo.strongRef', 4762 + }, 4763 + }, 4764 + }, 4765 + entity: { 4766 + type: 'object', 4767 + description: 'Deprecated: use facets instead.', 4768 + required: ['index', 'type', 'value'], 4769 + properties: { 4770 + index: { 4771 + type: 'ref', 4772 + ref: 'lex:app.bsky.feed.post#textSlice', 4773 + }, 4774 + type: { 4775 + type: 'string', 4776 + description: "Expected values are 'mention' and 'link'.", 4777 + }, 4778 + value: { 4779 + type: 'string', 4780 + }, 4781 + }, 4782 + }, 4783 + textSlice: { 4784 + type: 'object', 4785 + description: 4786 + 'Deprecated. Use app.bsky.richtext instead -- A text segment. Start is inclusive, end is exclusive. Indices are for utf16-encoded strings.', 4787 + required: ['start', 'end'], 4788 + properties: { 4789 + start: { 4790 + type: 'integer', 4791 + minimum: 0, 4792 + }, 4793 + end: { 4794 + type: 'integer', 4795 + minimum: 0, 4796 + }, 4797 + }, 4798 + }, 4799 + }, 4800 + }, 4801 + AppBskyFeedRepost: { 4802 + lexicon: 1, 4803 + id: 'app.bsky.feed.repost', 4804 + defs: { 4805 + main: { 4806 + type: 'record', 4807 + key: 'tid', 4808 + record: { 4809 + type: 'object', 4810 + required: ['subject', 'createdAt'], 4811 + properties: { 4812 + subject: { 4813 + type: 'ref', 4814 + ref: 'lex:com.atproto.repo.strongRef', 4815 + }, 4816 + createdAt: { 4817 + type: 'string', 4818 + format: 'datetime', 4819 + }, 4820 + }, 4821 + }, 4822 + }, 4823 + }, 4824 + }, 4825 + AppBskyFeedUnbookmarkFeed: { 4826 + lexicon: 1, 4827 + id: 'app.bsky.feed.unbookmarkFeed', 4828 + defs: { 4829 + main: { 4830 + type: 'procedure', 4831 + description: 'Remove a bookmark for a 3rd party feed', 4832 + input: { 4833 + encoding: 'application/json', 4834 + schema: { 4835 + type: 'object', 4836 + required: ['feed'], 4837 + properties: { 4838 + feed: { 4839 + type: 'string', 4840 + format: 'at-identifier', 4841 + }, 4842 + }, 4843 + }, 4844 + }, 4845 + }, 4846 + }, 4847 + }, 4848 + AppBskyGraphBlock: { 4849 + lexicon: 1, 4850 + id: 'app.bsky.graph.block', 4851 + defs: { 4852 + main: { 4853 + type: 'record', 4854 + description: 'A block.', 4855 + key: 'tid', 4856 + record: { 4857 + type: 'object', 4858 + required: ['subject', 'createdAt'], 4859 + properties: { 4860 + subject: { 4861 + type: 'string', 4862 + format: 'did', 4863 + }, 4864 + createdAt: { 4865 + type: 'string', 4866 + format: 'datetime', 4867 + }, 4868 + }, 4869 + }, 4870 + }, 4871 + }, 4872 + }, 4873 + AppBskyGraphFollow: { 4874 + lexicon: 1, 4875 + id: 'app.bsky.graph.follow', 4876 + defs: { 4877 + main: { 4878 + type: 'record', 4879 + description: 'A social follow.', 4880 + key: 'tid', 4881 + record: { 4882 + type: 'object', 4883 + required: ['subject', 'createdAt'], 4884 + properties: { 4885 + subject: { 4886 + type: 'string', 4887 + format: 'did', 4888 + }, 4889 + createdAt: { 4890 + type: 'string', 4891 + format: 'datetime', 4892 + }, 4893 + }, 4894 + }, 4895 + }, 4896 + }, 4897 + }, 4898 + AppBskyGraphGetBlocks: { 4899 + lexicon: 1, 4900 + id: 'app.bsky.graph.getBlocks', 4901 + defs: { 4902 + main: { 4903 + type: 'query', 4904 + description: "Who is the requester's account blocking?", 4905 + parameters: { 4906 + type: 'params', 4907 + properties: { 4908 + limit: { 4909 + type: 'integer', 4910 + minimum: 1, 4911 + maximum: 100, 4912 + default: 50, 4913 + }, 4914 + cursor: { 4915 + type: 'string', 4916 + }, 4917 + }, 4918 + }, 4919 + output: { 4920 + encoding: 'application/json', 4921 + schema: { 4922 + type: 'object', 4923 + required: ['blocks'], 4924 + properties: { 4925 + cursor: { 4926 + type: 'string', 4927 + }, 4928 + blocks: { 4929 + type: 'array', 4930 + items: { 4931 + type: 'ref', 4932 + ref: 'lex:app.bsky.actor.defs#profileView', 4933 + }, 4934 + }, 4935 + }, 4936 + }, 4937 + }, 4938 + }, 4939 + }, 4940 + }, 4941 + AppBskyGraphGetFollowers: { 4942 + lexicon: 1, 4943 + id: 'app.bsky.graph.getFollowers', 4944 + defs: { 4945 + main: { 4946 + type: 'query', 4947 + description: 'Who is following an actor?', 4948 + parameters: { 4949 + type: 'params', 4950 + required: ['actor'], 4951 + properties: { 4952 + actor: { 4953 + type: 'string', 4954 + format: 'at-identifier', 4955 + }, 4956 + limit: { 4957 + type: 'integer', 4958 + minimum: 1, 4959 + maximum: 100, 4960 + default: 50, 4961 + }, 4962 + cursor: { 4963 + type: 'string', 4964 + }, 4965 + }, 4966 + }, 4967 + output: { 4968 + encoding: 'application/json', 4969 + schema: { 4970 + type: 'object', 4971 + required: ['subject', 'followers'], 4972 + properties: { 4973 + subject: { 4974 + type: 'ref', 4975 + ref: 'lex:app.bsky.actor.defs#profileView', 4976 + }, 4977 + cursor: { 4978 + type: 'string', 4979 + }, 4980 + followers: { 4981 + type: 'array', 4982 + items: { 4983 + type: 'ref', 4984 + ref: 'lex:app.bsky.actor.defs#profileView', 4985 + }, 4986 + }, 4987 + }, 4988 + }, 4989 + }, 4990 + }, 4991 + }, 4992 + }, 4993 + AppBskyGraphGetFollows: { 4994 + lexicon: 1, 4995 + id: 'app.bsky.graph.getFollows', 4996 + defs: { 4997 + main: { 4998 + type: 'query', 4999 + description: 'Who is an actor following?', 5000 + parameters: { 5001 + type: 'params', 5002 + required: ['actor'], 5003 + properties: { 5004 + actor: { 5005 + type: 'string', 5006 + format: 'at-identifier', 5007 + }, 5008 + limit: { 5009 + type: 'integer', 5010 + minimum: 1, 5011 + maximum: 100, 5012 + default: 50, 5013 + }, 5014 + cursor: { 5015 + type: 'string', 5016 + }, 5017 + }, 5018 + }, 5019 + output: { 5020 + encoding: 'application/json', 5021 + schema: { 5022 + type: 'object', 5023 + required: ['subject', 'follows'], 5024 + properties: { 5025 + subject: { 5026 + type: 'ref', 5027 + ref: 'lex:app.bsky.actor.defs#profileView', 5028 + }, 5029 + cursor: { 5030 + type: 'string', 5031 + }, 5032 + follows: { 5033 + type: 'array', 5034 + items: { 5035 + type: 'ref', 5036 + ref: 'lex:app.bsky.actor.defs#profileView', 5037 + }, 5038 + }, 5039 + }, 5040 + }, 5041 + }, 5042 + }, 5043 + }, 5044 + }, 5045 + AppBskyGraphGetMutes: { 5046 + lexicon: 1, 5047 + id: 'app.bsky.graph.getMutes', 5048 + defs: { 5049 + main: { 5050 + type: 'query', 5051 + description: 'Who does the viewer mute?', 5052 + parameters: { 5053 + type: 'params', 5054 + properties: { 5055 + limit: { 5056 + type: 'integer', 5057 + minimum: 1, 5058 + maximum: 100, 5059 + default: 50, 5060 + }, 5061 + cursor: { 5062 + type: 'string', 5063 + }, 5064 + }, 5065 + }, 5066 + output: { 5067 + encoding: 'application/json', 5068 + schema: { 5069 + type: 'object', 5070 + required: ['mutes'], 5071 + properties: { 5072 + cursor: { 5073 + type: 'string', 5074 + }, 5075 + mutes: { 5076 + type: 'array', 5077 + items: { 5078 + type: 'ref', 5079 + ref: 'lex:app.bsky.actor.defs#profileView', 5080 + }, 5081 + }, 5082 + }, 5083 + }, 5084 + }, 5085 + }, 5086 + }, 5087 + }, 5088 + AppBskyGraphMuteActor: { 5089 + lexicon: 1, 5090 + id: 'app.bsky.graph.muteActor', 5091 + defs: { 5092 + main: { 5093 + type: 'procedure', 5094 + description: 'Mute an actor by did or handle.', 5095 + input: { 5096 + encoding: 'application/json', 5097 + schema: { 5098 + type: 'object', 5099 + required: ['actor'], 5100 + properties: { 5101 + actor: { 5102 + type: 'string', 5103 + format: 'at-identifier', 5104 + }, 5105 + }, 5106 + }, 5107 + }, 5108 + }, 5109 + }, 5110 + }, 5111 + AppBskyGraphUnmuteActor: { 5112 + lexicon: 1, 5113 + id: 'app.bsky.graph.unmuteActor', 5114 + defs: { 5115 + main: { 5116 + type: 'procedure', 5117 + description: 'Unmute an actor by did or handle.', 5118 + input: { 5119 + encoding: 'application/json', 5120 + schema: { 5121 + type: 'object', 5122 + required: ['actor'], 5123 + properties: { 5124 + actor: { 5125 + type: 'string', 5126 + format: 'at-identifier', 5127 + }, 5128 + }, 5129 + }, 5130 + }, 5131 + }, 5132 + }, 5133 + }, 5134 + AppBskyNotificationGetUnreadCount: { 5135 + lexicon: 1, 5136 + id: 'app.bsky.notification.getUnreadCount', 5137 + defs: { 5138 + main: { 5139 + type: 'query', 5140 + parameters: { 5141 + type: 'params', 5142 + properties: { 5143 + seenAt: { 5144 + type: 'string', 5145 + format: 'datetime', 5146 + }, 5147 + }, 5148 + }, 5149 + output: { 5150 + encoding: 'application/json', 5151 + schema: { 5152 + type: 'object', 5153 + required: ['count'], 5154 + properties: { 5155 + count: { 5156 + type: 'integer', 5157 + }, 5158 + }, 5159 + }, 5160 + }, 5161 + }, 5162 + }, 5163 + }, 5164 + AppBskyNotificationListNotifications: { 5165 + lexicon: 1, 5166 + id: 'app.bsky.notification.listNotifications', 5167 + defs: { 5168 + main: { 5169 + type: 'query', 5170 + parameters: { 5171 + type: 'params', 5172 + properties: { 5173 + limit: { 5174 + type: 'integer', 5175 + minimum: 1, 5176 + maximum: 100, 5177 + default: 50, 5178 + }, 5179 + cursor: { 5180 + type: 'string', 5181 + }, 5182 + seenAt: { 5183 + type: 'string', 5184 + format: 'datetime', 5185 + }, 5186 + }, 5187 + }, 5188 + output: { 5189 + encoding: 'application/json', 5190 + schema: { 5191 + type: 'object', 5192 + required: ['notifications'], 5193 + properties: { 5194 + cursor: { 5195 + type: 'string', 5196 + }, 5197 + notifications: { 5198 + type: 'array', 5199 + items: { 5200 + type: 'ref', 5201 + ref: 'lex:app.bsky.notification.listNotifications#notification', 5202 + }, 5203 + }, 5204 + }, 5205 + }, 5206 + }, 5207 + }, 5208 + notification: { 5209 + type: 'object', 5210 + required: [ 5211 + 'uri', 5212 + 'cid', 5213 + 'author', 5214 + 'reason', 5215 + 'record', 5216 + 'isRead', 5217 + 'indexedAt', 5218 + ], 5219 + properties: { 5220 + uri: { 5221 + type: 'string', 5222 + format: 'at-uri', 5223 + }, 5224 + cid: { 5225 + type: 'string', 5226 + format: 'cid', 5227 + }, 5228 + author: { 5229 + type: 'ref', 5230 + ref: 'lex:app.bsky.actor.defs#profileView', 5231 + }, 5232 + reason: { 5233 + type: 'string', 5234 + description: 5235 + "Expected values are 'like', 'repost', 'follow', 'mention', 'reply', and 'quote'.", 5236 + knownValues: [ 5237 + 'like', 5238 + 'repost', 5239 + 'follow', 5240 + 'mention', 5241 + 'reply', 5242 + 'quote', 5243 + ], 5244 + }, 5245 + reasonSubject: { 5246 + type: 'string', 5247 + format: 'at-uri', 5248 + }, 5249 + record: { 5250 + type: 'unknown', 5251 + }, 5252 + isRead: { 5253 + type: 'boolean', 5254 + }, 5255 + indexedAt: { 5256 + type: 'string', 5257 + format: 'datetime', 5258 + }, 5259 + labels: { 5260 + type: 'array', 5261 + items: { 5262 + type: 'ref', 5263 + ref: 'lex:com.atproto.label.defs#label', 5264 + }, 5265 + }, 5266 + }, 5267 + }, 5268 + }, 5269 + }, 5270 + AppBskyNotificationUpdateSeen: { 5271 + lexicon: 1, 5272 + id: 'app.bsky.notification.updateSeen', 5273 + defs: { 5274 + main: { 5275 + type: 'procedure', 5276 + description: 'Notify server that the user has seen notifications.', 5277 + input: { 5278 + encoding: 'application/json', 5279 + schema: { 5280 + type: 'object', 5281 + required: ['seenAt'], 5282 + properties: { 5283 + seenAt: { 5284 + type: 'string', 5285 + format: 'datetime', 5286 + }, 5287 + }, 5288 + }, 5289 + }, 5290 + }, 5291 + }, 5292 + }, 5293 + AppBskyRichtextFacet: { 5294 + lexicon: 1, 5295 + id: 'app.bsky.richtext.facet', 5296 + defs: { 5297 + main: { 5298 + type: 'object', 5299 + required: ['index', 'features'], 5300 + properties: { 5301 + index: { 5302 + type: 'ref', 5303 + ref: 'lex:app.bsky.richtext.facet#byteSlice', 5304 + }, 5305 + features: { 5306 + type: 'array', 5307 + items: { 5308 + type: 'union', 5309 + refs: [ 5310 + 'lex:app.bsky.richtext.facet#mention', 5311 + 'lex:app.bsky.richtext.facet#link', 5312 + ], 5313 + }, 5314 + }, 5315 + }, 5316 + }, 5317 + mention: { 5318 + type: 'object', 5319 + description: 'A facet feature for actor mentions.', 5320 + required: ['did'], 5321 + properties: { 5322 + did: { 5323 + type: 'string', 5324 + format: 'did', 5325 + }, 5326 + }, 5327 + }, 5328 + link: { 5329 + type: 'object', 5330 + description: 'A facet feature for links.', 5331 + required: ['uri'], 5332 + properties: { 5333 + uri: { 5334 + type: 'string', 5335 + format: 'uri', 5336 + }, 5337 + }, 5338 + }, 5339 + byteSlice: { 5340 + type: 'object', 5341 + description: 5342 + 'A text segment. Start is inclusive, end is exclusive. Indices are for utf8-encoded strings.', 5343 + required: ['byteStart', 'byteEnd'], 5344 + properties: { 5345 + byteStart: { 5346 + type: 'integer', 5347 + minimum: 0, 5348 + }, 5349 + byteEnd: { 5350 + type: 'integer', 5351 + minimum: 0, 5352 + }, 5353 + }, 5354 + }, 5355 + }, 5356 + }, 5357 + AppBskyUnspeccedGetPopular: { 5358 + lexicon: 1, 5359 + id: 'app.bsky.unspecced.getPopular', 5360 + defs: { 5361 + main: { 5362 + type: 'query', 5363 + description: 'An unspecced view of globally popular items', 5364 + parameters: { 5365 + type: 'params', 5366 + properties: { 5367 + includeNsfw: { 5368 + type: 'boolean', 5369 + default: false, 5370 + }, 5371 + limit: { 5372 + type: 'integer', 5373 + minimum: 1, 5374 + maximum: 100, 5375 + default: 50, 5376 + }, 5377 + cursor: { 5378 + type: 'string', 5379 + }, 5380 + }, 5381 + }, 5382 + output: { 5383 + encoding: 'application/json', 5384 + schema: { 5385 + type: 'object', 5386 + required: ['feed'], 5387 + properties: { 5388 + cursor: { 5389 + type: 'string', 5390 + }, 5391 + feed: { 5392 + type: 'array', 5393 + items: { 5394 + type: 'ref', 5395 + ref: 'lex:app.bsky.feed.defs#feedViewPost', 5396 + }, 5397 + }, 5398 + }, 5399 + }, 5400 + }, 5401 + }, 5402 + }, 5403 + }, 5404 + } 5405 + export const schemas: LexiconDoc[] = Object.values(schemaDict) as LexiconDoc[] 5406 + export const lexicons: Lexicons = new Lexicons(schemas) 5407 + export const ids = { 5408 + ComAtprotoAdminDefs: 'com.atproto.admin.defs', 5409 + ComAtprotoAdminDisableInviteCodes: 'com.atproto.admin.disableInviteCodes', 5410 + ComAtprotoAdminGetInviteCodes: 'com.atproto.admin.getInviteCodes', 5411 + ComAtprotoAdminGetModerationAction: 'com.atproto.admin.getModerationAction', 5412 + ComAtprotoAdminGetModerationActions: 'com.atproto.admin.getModerationActions', 5413 + ComAtprotoAdminGetModerationReport: 'com.atproto.admin.getModerationReport', 5414 + ComAtprotoAdminGetModerationReports: 'com.atproto.admin.getModerationReports', 5415 + ComAtprotoAdminGetRecord: 'com.atproto.admin.getRecord', 5416 + ComAtprotoAdminGetRepo: 'com.atproto.admin.getRepo', 5417 + ComAtprotoAdminResolveModerationReports: 5418 + 'com.atproto.admin.resolveModerationReports', 5419 + ComAtprotoAdminReverseModerationAction: 5420 + 'com.atproto.admin.reverseModerationAction', 5421 + ComAtprotoAdminSearchRepos: 'com.atproto.admin.searchRepos', 5422 + ComAtprotoAdminTakeModerationAction: 'com.atproto.admin.takeModerationAction', 5423 + ComAtprotoAdminUpdateAccountEmail: 'com.atproto.admin.updateAccountEmail', 5424 + ComAtprotoAdminUpdateAccountHandle: 'com.atproto.admin.updateAccountHandle', 5425 + ComAtprotoIdentityResolveHandle: 'com.atproto.identity.resolveHandle', 5426 + ComAtprotoIdentityUpdateHandle: 'com.atproto.identity.updateHandle', 5427 + ComAtprotoLabelDefs: 'com.atproto.label.defs', 5428 + ComAtprotoLabelQueryLabels: 'com.atproto.label.queryLabels', 5429 + ComAtprotoLabelSubscribeLabels: 'com.atproto.label.subscribeLabels', 5430 + ComAtprotoModerationCreateReport: 'com.atproto.moderation.createReport', 5431 + ComAtprotoModerationDefs: 'com.atproto.moderation.defs', 5432 + ComAtprotoRepoApplyWrites: 'com.atproto.repo.applyWrites', 5433 + ComAtprotoRepoCreateRecord: 'com.atproto.repo.createRecord', 5434 + ComAtprotoRepoDeleteRecord: 'com.atproto.repo.deleteRecord', 5435 + ComAtprotoRepoDescribeRepo: 'com.atproto.repo.describeRepo', 5436 + ComAtprotoRepoGetRecord: 'com.atproto.repo.getRecord', 5437 + ComAtprotoRepoListRecords: 'com.atproto.repo.listRecords', 5438 + ComAtprotoRepoPutRecord: 'com.atproto.repo.putRecord', 5439 + ComAtprotoRepoStrongRef: 'com.atproto.repo.strongRef', 5440 + ComAtprotoRepoUploadBlob: 'com.atproto.repo.uploadBlob', 5441 + ComAtprotoServerCreateAccount: 'com.atproto.server.createAccount', 5442 + ComAtprotoServerCreateAppPassword: 'com.atproto.server.createAppPassword', 5443 + ComAtprotoServerCreateInviteCode: 'com.atproto.server.createInviteCode', 5444 + ComAtprotoServerCreateInviteCodes: 'com.atproto.server.createInviteCodes', 5445 + ComAtprotoServerCreateSession: 'com.atproto.server.createSession', 5446 + ComAtprotoServerDefs: 'com.atproto.server.defs', 5447 + ComAtprotoServerDeleteAccount: 'com.atproto.server.deleteAccount', 5448 + ComAtprotoServerDeleteSession: 'com.atproto.server.deleteSession', 5449 + ComAtprotoServerDescribeServer: 'com.atproto.server.describeServer', 5450 + ComAtprotoServerGetAccountInviteCodes: 5451 + 'com.atproto.server.getAccountInviteCodes', 5452 + ComAtprotoServerGetSession: 'com.atproto.server.getSession', 5453 + ComAtprotoServerListAppPasswords: 'com.atproto.server.listAppPasswords', 5454 + ComAtprotoServerRefreshSession: 'com.atproto.server.refreshSession', 5455 + ComAtprotoServerRequestAccountDelete: 5456 + 'com.atproto.server.requestAccountDelete', 5457 + ComAtprotoServerRequestPasswordReset: 5458 + 'com.atproto.server.requestPasswordReset', 5459 + ComAtprotoServerResetPassword: 'com.atproto.server.resetPassword', 5460 + ComAtprotoServerRevokeAppPassword: 'com.atproto.server.revokeAppPassword', 5461 + ComAtprotoSyncGetBlob: 'com.atproto.sync.getBlob', 5462 + ComAtprotoSyncGetBlocks: 'com.atproto.sync.getBlocks', 5463 + ComAtprotoSyncGetCheckout: 'com.atproto.sync.getCheckout', 5464 + ComAtprotoSyncGetCommitPath: 'com.atproto.sync.getCommitPath', 5465 + ComAtprotoSyncGetHead: 'com.atproto.sync.getHead', 5466 + ComAtprotoSyncGetRecord: 'com.atproto.sync.getRecord', 5467 + ComAtprotoSyncGetRepo: 'com.atproto.sync.getRepo', 5468 + ComAtprotoSyncListBlobs: 'com.atproto.sync.listBlobs', 5469 + ComAtprotoSyncListRepos: 'com.atproto.sync.listRepos', 5470 + ComAtprotoSyncNotifyOfUpdate: 'com.atproto.sync.notifyOfUpdate', 5471 + ComAtprotoSyncRequestCrawl: 'com.atproto.sync.requestCrawl', 5472 + ComAtprotoSyncSubscribeRepos: 'com.atproto.sync.subscribeRepos', 5473 + AppBskyActorDefs: 'app.bsky.actor.defs', 5474 + AppBskyActorGetProfile: 'app.bsky.actor.getProfile', 5475 + AppBskyActorGetProfiles: 'app.bsky.actor.getProfiles', 5476 + AppBskyActorGetSuggestions: 'app.bsky.actor.getSuggestions', 5477 + AppBskyActorProfile: 'app.bsky.actor.profile', 5478 + AppBskyActorSearchActors: 'app.bsky.actor.searchActors', 5479 + AppBskyActorSearchActorsTypeahead: 'app.bsky.actor.searchActorsTypeahead', 5480 + AppBskyEmbedExternal: 'app.bsky.embed.external', 5481 + AppBskyEmbedImages: 'app.bsky.embed.images', 5482 + AppBskyEmbedRecord: 'app.bsky.embed.record', 5483 + AppBskyEmbedRecordWithMedia: 'app.bsky.embed.recordWithMedia', 5484 + AppBskyFeedBookmarkFeed: 'app.bsky.feed.bookmarkFeed', 5485 + AppBskyFeedDefs: 'app.bsky.feed.defs', 5486 + AppBskyFeedGetAuthorFeed: 'app.bsky.feed.getAuthorFeed', 5487 + AppBskyFeedGetBookmarkedFeeds: 'app.bsky.feed.getBookmarkedFeeds', 5488 + AppBskyFeedGetFeed: 'app.bsky.feed.getFeed', 5489 + AppBskyFeedGetFeedSkeleton: 'app.bsky.feed.getFeedSkeleton', 5490 + AppBskyFeedGetLikes: 'app.bsky.feed.getLikes', 5491 + AppBskyFeedGetPostThread: 'app.bsky.feed.getPostThread', 5492 + AppBskyFeedGetPosts: 'app.bsky.feed.getPosts', 5493 + AppBskyFeedGetRepostedBy: 'app.bsky.feed.getRepostedBy', 5494 + AppBskyFeedGetTimeline: 'app.bsky.feed.getTimeline', 5495 + AppBskyFeedLike: 'app.bsky.feed.like', 5496 + AppBskyFeedPost: 'app.bsky.feed.post', 5497 + AppBskyFeedRepost: 'app.bsky.feed.repost', 5498 + AppBskyFeedUnbookmarkFeed: 'app.bsky.feed.unbookmarkFeed', 5499 + AppBskyGraphBlock: 'app.bsky.graph.block', 5500 + AppBskyGraphFollow: 'app.bsky.graph.follow', 5501 + AppBskyGraphGetBlocks: 'app.bsky.graph.getBlocks', 5502 + AppBskyGraphGetFollowers: 'app.bsky.graph.getFollowers', 5503 + AppBskyGraphGetFollows: 'app.bsky.graph.getFollows', 5504 + AppBskyGraphGetMutes: 'app.bsky.graph.getMutes', 5505 + AppBskyGraphMuteActor: 'app.bsky.graph.muteActor', 5506 + AppBskyGraphUnmuteActor: 'app.bsky.graph.unmuteActor', 5507 + AppBskyNotificationGetUnreadCount: 'app.bsky.notification.getUnreadCount', 5508 + AppBskyNotificationListNotifications: 5509 + 'app.bsky.notification.listNotifications', 5510 + AppBskyNotificationUpdateSeen: 'app.bsky.notification.updateSeen', 5511 + AppBskyRichtextFacet: 'app.bsky.richtext.facet', 5512 + AppBskyUnspeccedGetPopular: 'app.bsky.unspecced.getPopular', 5513 + }
+134
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 + 10 + export interface ProfileViewBasic { 11 + did: string 12 + handle: string 13 + displayName?: string 14 + avatar?: string 15 + actorType?: ActorType 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 + actorType?: ActorType 40 + indexedAt?: string 41 + viewer?: ViewerState 42 + labels?: ComAtprotoLabelDefs.Label[] 43 + [k: string]: unknown 44 + } 45 + 46 + export function isProfileView(v: unknown): v is ProfileView { 47 + return ( 48 + isObj(v) && 49 + hasProp(v, '$type') && 50 + v.$type === 'app.bsky.actor.defs#profileView' 51 + ) 52 + } 53 + 54 + export function validateProfileView(v: unknown): ValidationResult { 55 + return lexicons.validate('app.bsky.actor.defs#profileView', v) 56 + } 57 + 58 + export interface ProfileViewDetailed { 59 + did: string 60 + handle: string 61 + displayName?: string 62 + description?: string 63 + avatar?: string 64 + actorType?: ActorType 65 + actorInfo?: InfoFeedGenerator | { $type: string; [k: string]: unknown } 66 + banner?: string 67 + followersCount?: number 68 + followsCount?: number 69 + postsCount?: number 70 + indexedAt?: string 71 + viewer?: ViewerState 72 + labels?: ComAtprotoLabelDefs.Label[] 73 + [k: string]: unknown 74 + } 75 + 76 + export function isProfileViewDetailed(v: unknown): v is ProfileViewDetailed { 77 + return ( 78 + isObj(v) && 79 + hasProp(v, '$type') && 80 + v.$type === 'app.bsky.actor.defs#profileViewDetailed' 81 + ) 82 + } 83 + 84 + export function validateProfileViewDetailed(v: unknown): ValidationResult { 85 + return lexicons.validate('app.bsky.actor.defs#profileViewDetailed', v) 86 + } 87 + 88 + export interface ViewerState { 89 + muted?: boolean 90 + blockedBy?: boolean 91 + blocking?: string 92 + following?: string 93 + followedBy?: string 94 + [k: string]: unknown 95 + } 96 + 97 + export function isViewerState(v: unknown): v is ViewerState { 98 + return ( 99 + isObj(v) && 100 + hasProp(v, '$type') && 101 + v.$type === 'app.bsky.actor.defs#viewerState' 102 + ) 103 + } 104 + 105 + export function validateViewerState(v: unknown): ValidationResult { 106 + return lexicons.validate('app.bsky.actor.defs#viewerState', v) 107 + } 108 + 109 + export interface InfoFeedGenerator { 110 + likes: number 111 + [k: string]: unknown 112 + } 113 + 114 + export function isInfoFeedGenerator(v: unknown): v is InfoFeedGenerator { 115 + return ( 116 + isObj(v) && 117 + hasProp(v, '$type') && 118 + v.$type === 'app.bsky.actor.defs#infoFeedGenerator' 119 + ) 120 + } 121 + 122 + export function validateInfoFeedGenerator(v: unknown): ValidationResult { 123 + return lexicons.validate('app.bsky.actor.defs#infoFeedGenerator', v) 124 + } 125 + 126 + export type ActorType = 127 + | 'app.bsky.actor.defs#user' 128 + | 'app.bsky.actor.defs#feedGenerator' 129 + | (string & {}) 130 + 131 + /** Actor type: User. This is the default option and an actor is assumed to be a user unless suggested otherwise. */ 132 + export const USER = 'app.bsky.actor.defs#user' 133 + /** Actor type: Feed Generator. A service that provides a custom feed. */ 134 + export const FEEDGENERATOR = 'app.bsky.actor.defs#feedGenerator'
+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 + }
+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 + }
+113
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 AppBskyActorDefs from '../actor/defs' 10 + import * as ComAtprotoLabelDefs from '../../../com/atproto/label/defs' 11 + import * as AppBskyEmbedImages from './images' 12 + import * as AppBskyEmbedExternal from './external' 13 + import * as AppBskyEmbedRecordWithMedia from './recordWithMedia' 14 + 15 + export interface Main { 16 + record: ComAtprotoRepoStrongRef.Main 17 + [k: string]: unknown 18 + } 19 + 20 + export function isMain(v: unknown): v is Main { 21 + return ( 22 + isObj(v) && 23 + hasProp(v, '$type') && 24 + (v.$type === 'app.bsky.embed.record#main' || 25 + v.$type === 'app.bsky.embed.record') 26 + ) 27 + } 28 + 29 + export function validateMain(v: unknown): ValidationResult { 30 + return lexicons.validate('app.bsky.embed.record#main', v) 31 + } 32 + 33 + export interface View { 34 + record: 35 + | ViewRecord 36 + | ViewNotFound 37 + | ViewBlocked 38 + | { $type: string; [k: string]: unknown } 39 + [k: string]: unknown 40 + } 41 + 42 + export function isView(v: unknown): v is View { 43 + return ( 44 + isObj(v) && hasProp(v, '$type') && v.$type === 'app.bsky.embed.record#view' 45 + ) 46 + } 47 + 48 + export function validateView(v: unknown): ValidationResult { 49 + return lexicons.validate('app.bsky.embed.record#view', v) 50 + } 51 + 52 + export interface ViewRecord { 53 + uri: string 54 + cid: string 55 + author: AppBskyActorDefs.ProfileViewBasic 56 + value: {} 57 + labels?: ComAtprotoLabelDefs.Label[] 58 + embeds?: ( 59 + | AppBskyEmbedImages.View 60 + | AppBskyEmbedExternal.View 61 + | View 62 + | AppBskyEmbedRecordWithMedia.View 63 + | { $type: string; [k: string]: unknown } 64 + )[] 65 + indexedAt: string 66 + [k: string]: unknown 67 + } 68 + 69 + export function isViewRecord(v: unknown): v is ViewRecord { 70 + return ( 71 + isObj(v) && 72 + hasProp(v, '$type') && 73 + v.$type === 'app.bsky.embed.record#viewRecord' 74 + ) 75 + } 76 + 77 + export function validateViewRecord(v: unknown): ValidationResult { 78 + return lexicons.validate('app.bsky.embed.record#viewRecord', v) 79 + } 80 + 81 + export interface ViewNotFound { 82 + uri: string 83 + [k: string]: unknown 84 + } 85 + 86 + export function isViewNotFound(v: unknown): v is ViewNotFound { 87 + return ( 88 + isObj(v) && 89 + hasProp(v, '$type') && 90 + v.$type === 'app.bsky.embed.record#viewNotFound' 91 + ) 92 + } 93 + 94 + export function validateViewNotFound(v: unknown): ValidationResult { 95 + return lexicons.validate('app.bsky.embed.record#viewNotFound', v) 96 + } 97 + 98 + export interface ViewBlocked { 99 + uri: string 100 + [k: string]: unknown 101 + } 102 + 103 + export function isViewBlocked(v: unknown): v is ViewBlocked { 104 + return ( 105 + isObj(v) && 106 + hasProp(v, '$type') && 107 + v.$type === 'app.bsky.embed.record#viewBlocked' 108 + ) 109 + } 110 + 111 + export function validateViewBlocked(v: unknown): ValidationResult { 112 + return lexicons.validate('app.bsky.embed.record#viewBlocked', v) 113 + }
+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 + }
+35
src/lexicon/types/app/bsky/feed/bookmarkFeed.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
+241
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 + 15 + export interface PostView { 16 + uri: string 17 + cid: string 18 + author: AppBskyActorDefs.ProfileViewBasic 19 + record: {} 20 + embed?: 21 + | AppBskyEmbedImages.View 22 + | AppBskyEmbedExternal.View 23 + | AppBskyEmbedRecord.View 24 + | AppBskyEmbedRecordWithMedia.View 25 + | { $type: string; [k: string]: unknown } 26 + replyCount?: number 27 + repostCount?: number 28 + likeCount?: number 29 + indexedAt: string 30 + viewer?: ViewerState 31 + labels?: ComAtprotoLabelDefs.Label[] 32 + [k: string]: unknown 33 + } 34 + 35 + export function isPostView(v: unknown): v is PostView { 36 + return ( 37 + isObj(v) && hasProp(v, '$type') && v.$type === 'app.bsky.feed.defs#postView' 38 + ) 39 + } 40 + 41 + export function validatePostView(v: unknown): ValidationResult { 42 + return lexicons.validate('app.bsky.feed.defs#postView', v) 43 + } 44 + 45 + export interface ViewerState { 46 + repost?: string 47 + like?: string 48 + [k: string]: unknown 49 + } 50 + 51 + export function isViewerState(v: unknown): v is ViewerState { 52 + return ( 53 + isObj(v) && 54 + hasProp(v, '$type') && 55 + v.$type === 'app.bsky.feed.defs#viewerState' 56 + ) 57 + } 58 + 59 + export function validateViewerState(v: unknown): ValidationResult { 60 + return lexicons.validate('app.bsky.feed.defs#viewerState', v) 61 + } 62 + 63 + export interface FeedViewPost { 64 + post: PostView 65 + reply?: ReplyRef 66 + reason?: ReasonRepost | { $type: string; [k: string]: unknown } 67 + [k: string]: unknown 68 + } 69 + 70 + export function isFeedViewPost(v: unknown): v is FeedViewPost { 71 + return ( 72 + isObj(v) && 73 + hasProp(v, '$type') && 74 + v.$type === 'app.bsky.feed.defs#feedViewPost' 75 + ) 76 + } 77 + 78 + export function validateFeedViewPost(v: unknown): ValidationResult { 79 + return lexicons.validate('app.bsky.feed.defs#feedViewPost', v) 80 + } 81 + 82 + export interface ReplyRef { 83 + root: 84 + | PostView 85 + | NotFoundPost 86 + | BlockedPost 87 + | { $type: string; [k: string]: unknown } 88 + parent: 89 + | PostView 90 + | NotFoundPost 91 + | BlockedPost 92 + | { $type: string; [k: string]: unknown } 93 + [k: string]: unknown 94 + } 95 + 96 + export function isReplyRef(v: unknown): v is ReplyRef { 97 + return ( 98 + isObj(v) && hasProp(v, '$type') && v.$type === 'app.bsky.feed.defs#replyRef' 99 + ) 100 + } 101 + 102 + export function validateReplyRef(v: unknown): ValidationResult { 103 + return lexicons.validate('app.bsky.feed.defs#replyRef', v) 104 + } 105 + 106 + export interface ReasonRepost { 107 + by: AppBskyActorDefs.ProfileViewBasic 108 + indexedAt: string 109 + [k: string]: unknown 110 + } 111 + 112 + export function isReasonRepost(v: unknown): v is ReasonRepost { 113 + return ( 114 + isObj(v) && 115 + hasProp(v, '$type') && 116 + v.$type === 'app.bsky.feed.defs#reasonRepost' 117 + ) 118 + } 119 + 120 + export function validateReasonRepost(v: unknown): ValidationResult { 121 + return lexicons.validate('app.bsky.feed.defs#reasonRepost', v) 122 + } 123 + 124 + export interface ThreadViewPost { 125 + post: PostView 126 + parent?: 127 + | ThreadViewPost 128 + | NotFoundPost 129 + | BlockedPost 130 + | { $type: string; [k: string]: unknown } 131 + replies?: ( 132 + | ThreadViewPost 133 + | NotFoundPost 134 + | BlockedPost 135 + | { $type: string; [k: string]: unknown } 136 + )[] 137 + [k: string]: unknown 138 + } 139 + 140 + export function isThreadViewPost(v: unknown): v is ThreadViewPost { 141 + return ( 142 + isObj(v) && 143 + hasProp(v, '$type') && 144 + v.$type === 'app.bsky.feed.defs#threadViewPost' 145 + ) 146 + } 147 + 148 + export function validateThreadViewPost(v: unknown): ValidationResult { 149 + return lexicons.validate('app.bsky.feed.defs#threadViewPost', v) 150 + } 151 + 152 + export interface NotFoundPost { 153 + uri: string 154 + notFound: true 155 + [k: string]: unknown 156 + } 157 + 158 + export function isNotFoundPost(v: unknown): v is NotFoundPost { 159 + return ( 160 + isObj(v) && 161 + hasProp(v, '$type') && 162 + v.$type === 'app.bsky.feed.defs#notFoundPost' 163 + ) 164 + } 165 + 166 + export function validateNotFoundPost(v: unknown): ValidationResult { 167 + return lexicons.validate('app.bsky.feed.defs#notFoundPost', v) 168 + } 169 + 170 + export interface BlockedPost { 171 + uri: string 172 + blocked: true 173 + [k: string]: unknown 174 + } 175 + 176 + export function isBlockedPost(v: unknown): v is BlockedPost { 177 + return ( 178 + isObj(v) && 179 + hasProp(v, '$type') && 180 + v.$type === 'app.bsky.feed.defs#blockedPost' 181 + ) 182 + } 183 + 184 + export function validateBlockedPost(v: unknown): ValidationResult { 185 + return lexicons.validate('app.bsky.feed.defs#blockedPost', v) 186 + } 187 + 188 + export interface SkeletonFeedPost { 189 + post: string 190 + replyTo?: SkeletonReplyRef 191 + reason?: SkeletonReasonRepost | { $type: string; [k: string]: unknown } 192 + [k: string]: unknown 193 + } 194 + 195 + export function isSkeletonFeedPost(v: unknown): v is SkeletonFeedPost { 196 + return ( 197 + isObj(v) && 198 + hasProp(v, '$type') && 199 + v.$type === 'app.bsky.feed.defs#skeletonFeedPost' 200 + ) 201 + } 202 + 203 + export function validateSkeletonFeedPost(v: unknown): ValidationResult { 204 + return lexicons.validate('app.bsky.feed.defs#skeletonFeedPost', v) 205 + } 206 + 207 + export interface SkeletonReplyRef { 208 + root: string 209 + parent: string 210 + [k: string]: unknown 211 + } 212 + 213 + export function isSkeletonReplyRef(v: unknown): v is SkeletonReplyRef { 214 + return ( 215 + isObj(v) && 216 + hasProp(v, '$type') && 217 + v.$type === 'app.bsky.feed.defs#skeletonReplyRef' 218 + ) 219 + } 220 + 221 + export function validateSkeletonReplyRef(v: unknown): ValidationResult { 222 + return lexicons.validate('app.bsky.feed.defs#skeletonReplyRef', v) 223 + } 224 + 225 + export interface SkeletonReasonRepost { 226 + by: string 227 + indexedAt: string 228 + [k: string]: unknown 229 + } 230 + 231 + export function isSkeletonReasonRepost(v: unknown): v is SkeletonReasonRepost { 232 + return ( 233 + isObj(v) && 234 + hasProp(v, '$type') && 235 + v.$type === 'app.bsky.feed.defs#skeletonReasonRepost' 236 + ) 237 + } 238 + 239 + export function validateSkeletonReasonRepost(v: unknown): ValidationResult { 240 + return lexicons.validate('app.bsky.feed.defs#skeletonReasonRepost', v) 241 + }
+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
+44
src/lexicon/types/app/bsky/feed/getBookmarkedFeeds.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 + feeds: 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
+45
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 + } 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/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 + } 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
+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
+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/unbookmarkFeed.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 + }
+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
+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
+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/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
+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
+380
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 + [k: string]: unknown 181 + } 182 + 183 + export function isRepoView(v: unknown): v is RepoView { 184 + return ( 185 + isObj(v) && 186 + hasProp(v, '$type') && 187 + v.$type === 'com.atproto.admin.defs#repoView' 188 + ) 189 + } 190 + 191 + export function validateRepoView(v: unknown): ValidationResult { 192 + return lexicons.validate('com.atproto.admin.defs#repoView', v) 193 + } 194 + 195 + export interface RepoViewDetail { 196 + did: string 197 + handle: string 198 + email?: string 199 + relatedRecords: {}[] 200 + indexedAt: string 201 + moderation: ModerationDetail 202 + labels?: ComAtprotoLabelDefs.Label[] 203 + invitedBy?: ComAtprotoServerDefs.InviteCode 204 + invites?: ComAtprotoServerDefs.InviteCode[] 205 + [k: string]: unknown 206 + } 207 + 208 + export function isRepoViewDetail(v: unknown): v is RepoViewDetail { 209 + return ( 210 + isObj(v) && 211 + hasProp(v, '$type') && 212 + v.$type === 'com.atproto.admin.defs#repoViewDetail' 213 + ) 214 + } 215 + 216 + export function validateRepoViewDetail(v: unknown): ValidationResult { 217 + return lexicons.validate('com.atproto.admin.defs#repoViewDetail', v) 218 + } 219 + 220 + export interface RepoRef { 221 + did: string 222 + [k: string]: unknown 223 + } 224 + 225 + export function isRepoRef(v: unknown): v is RepoRef { 226 + return ( 227 + isObj(v) && 228 + hasProp(v, '$type') && 229 + v.$type === 'com.atproto.admin.defs#repoRef' 230 + ) 231 + } 232 + 233 + export function validateRepoRef(v: unknown): ValidationResult { 234 + return lexicons.validate('com.atproto.admin.defs#repoRef', v) 235 + } 236 + 237 + export interface RecordView { 238 + uri: string 239 + cid: string 240 + value: {} 241 + blobCids: string[] 242 + indexedAt: string 243 + moderation: Moderation 244 + repo: RepoView 245 + [k: string]: unknown 246 + } 247 + 248 + export function isRecordView(v: unknown): v is RecordView { 249 + return ( 250 + isObj(v) && 251 + hasProp(v, '$type') && 252 + v.$type === 'com.atproto.admin.defs#recordView' 253 + ) 254 + } 255 + 256 + export function validateRecordView(v: unknown): ValidationResult { 257 + return lexicons.validate('com.atproto.admin.defs#recordView', v) 258 + } 259 + 260 + export interface RecordViewDetail { 261 + uri: string 262 + cid: string 263 + value: {} 264 + blobs: BlobView[] 265 + labels?: ComAtprotoLabelDefs.Label[] 266 + indexedAt: string 267 + moderation: ModerationDetail 268 + repo: RepoView 269 + [k: string]: unknown 270 + } 271 + 272 + export function isRecordViewDetail(v: unknown): v is RecordViewDetail { 273 + return ( 274 + isObj(v) && 275 + hasProp(v, '$type') && 276 + v.$type === 'com.atproto.admin.defs#recordViewDetail' 277 + ) 278 + } 279 + 280 + export function validateRecordViewDetail(v: unknown): ValidationResult { 281 + return lexicons.validate('com.atproto.admin.defs#recordViewDetail', v) 282 + } 283 + 284 + export interface Moderation { 285 + currentAction?: ActionViewCurrent 286 + [k: string]: unknown 287 + } 288 + 289 + export function isModeration(v: unknown): v is Moderation { 290 + return ( 291 + isObj(v) && 292 + hasProp(v, '$type') && 293 + v.$type === 'com.atproto.admin.defs#moderation' 294 + ) 295 + } 296 + 297 + export function validateModeration(v: unknown): ValidationResult { 298 + return lexicons.validate('com.atproto.admin.defs#moderation', v) 299 + } 300 + 301 + export interface ModerationDetail { 302 + currentAction?: ActionViewCurrent 303 + actions: ActionView[] 304 + reports: ReportView[] 305 + [k: string]: unknown 306 + } 307 + 308 + export function isModerationDetail(v: unknown): v is ModerationDetail { 309 + return ( 310 + isObj(v) && 311 + hasProp(v, '$type') && 312 + v.$type === 'com.atproto.admin.defs#moderationDetail' 313 + ) 314 + } 315 + 316 + export function validateModerationDetail(v: unknown): ValidationResult { 317 + return lexicons.validate('com.atproto.admin.defs#moderationDetail', v) 318 + } 319 + 320 + export interface BlobView { 321 + cid: string 322 + mimeType: string 323 + size: number 324 + createdAt: string 325 + details?: 326 + | ImageDetails 327 + | VideoDetails 328 + | { $type: string; [k: string]: unknown } 329 + moderation?: Moderation 330 + [k: string]: unknown 331 + } 332 + 333 + export function isBlobView(v: unknown): v is BlobView { 334 + return ( 335 + isObj(v) && 336 + hasProp(v, '$type') && 337 + v.$type === 'com.atproto.admin.defs#blobView' 338 + ) 339 + } 340 + 341 + export function validateBlobView(v: unknown): ValidationResult { 342 + return lexicons.validate('com.atproto.admin.defs#blobView', v) 343 + } 344 + 345 + export interface ImageDetails { 346 + width: number 347 + height: number 348 + [k: string]: unknown 349 + } 350 + 351 + export function isImageDetails(v: unknown): v is ImageDetails { 352 + return ( 353 + isObj(v) && 354 + hasProp(v, '$type') && 355 + v.$type === 'com.atproto.admin.defs#imageDetails' 356 + ) 357 + } 358 + 359 + export function validateImageDetails(v: unknown): ValidationResult { 360 + return lexicons.validate('com.atproto.admin.defs#imageDetails', v) 361 + } 362 + 363 + export interface VideoDetails { 364 + width: number 365 + height: number 366 + length: number 367 + [k: string]: unknown 368 + } 369 + 370 + export function isVideoDetails(v: unknown): v is VideoDetails { 371 + return ( 372 + isObj(v) && 373 + hasProp(v, '$type') && 374 + v.$type === 'com.atproto.admin.defs#videoDetails' 375 + ) 376 + } 377 + 378 + export function validateVideoDetails(v: unknown): ValidationResult { 379 + return lexicons.validate('com.atproto.admin.defs#videoDetails', v) 380 + }
+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
+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
+46
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 + limit: number 16 + cursor?: string 17 + } 18 + 19 + export type InputSchema = undefined 20 + 21 + export interface OutputSchema { 22 + cursor?: string 23 + reports: ComAtprotoAdminDefs.ReportView[] 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
+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
+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
+58
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 + inviteCode?: string 17 + password: string 18 + recoveryKey?: string 19 + [k: string]: unknown 20 + } 21 + 22 + export interface OutputSchema { 23 + accessJwt: string 24 + refreshJwt: string 25 + handle: string 26 + did: string 27 + [k: string]: unknown 28 + } 29 + 30 + export interface HandlerInput { 31 + encoding: 'application/json' 32 + body: InputSchema 33 + } 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 + error?: 44 + | 'InvalidHandle' 45 + | 'InvalidPassword' 46 + | 'InvalidInviteCode' 47 + | 'HandleNotAvailable' 48 + | 'UnsupportedDomain' 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
+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 + }
+69
src/server.ts
··· 1 + import http from 'http' 2 + import events from 'events' 3 + import express from 'express' 4 + import { createServer } from './lexicon' 5 + import feedGeneration from './feed-generation' 6 + import { createDb, Database } from './db' 7 + import { FirehoseSubscription } from './subscription' 8 + 9 + export type Config = { 10 + port: number 11 + sqliteLocation: string 12 + subscriptionEndpoint: string 13 + } 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 + 22 + constructor( 23 + app: express.Application, 24 + db: Database, 25 + firehose: FirehoseSubscription, 26 + cfg: Config, 27 + ) { 28 + this.app = app 29 + this.db = db 30 + this.firehose = firehose 31 + this.cfg = cfg 32 + } 33 + 34 + static create(config?: Partial<Config>) { 35 + const cfg = { 36 + port: config?.port ?? 3000, 37 + sqliteLocation: config?.sqliteLocation ?? 'test.sqlite', 38 + subscriptionEndpoint: 39 + config?.subscriptionEndpoint ?? 'https://bsky.social', 40 + } 41 + const app = express() 42 + const db = createDb(cfg.sqliteLocation) 43 + const firehose = new FirehoseSubscription(db, cfg.subscriptionEndpoint) 44 + 45 + const server = createServer({ 46 + validateResponse: true, 47 + payload: { 48 + jsonLimit: 100 * 1024, // 100kb 49 + textLimit: 100 * 1024, // 100kb 50 + blobLimit: 5 * 1024 * 1024, // 5mb 51 + }, 52 + }) 53 + feedGeneration(server, db) 54 + app.use(server.xrpc.router) 55 + 56 + return new FeedGenerator(app, db, firehose, cfg) 57 + } 58 + 59 + async start(): Promise<http.Server> { 60 + await this.firehose.run() 61 + const server = this.app.listen(this.cfg.port) 62 + server.keepAliveTimeout = 90000 63 + this.server = server 64 + await events.once(server, 'listening') 65 + return server 66 + } 67 + } 68 + 69 + export default FeedGenerator
+60
src/subscription.ts
··· 1 + import { ids, lexicons } from './lexicon/lexicons' 2 + import { Record as PostRecord } from './lexicon/types/app/bsky/feed/post' 3 + import { 4 + OutputSchema as RepoEvent, 5 + isCommit, 6 + } from './lexicon/types/com/atproto/sync/subscribeRepos' 7 + import { 8 + FirehoseSubscriptionBase, 9 + getPostOperations, 10 + } from './util/subscription' 11 + 12 + export class FirehoseSubscription extends FirehoseSubscriptionBase { 13 + async handleEvent(evt: RepoEvent) { 14 + if (!isCommit(evt)) return 15 + const postOps = await getPostOperations(evt) 16 + const postsToDelete = postOps.deletes.map((del) => del.uri) 17 + const postsToCreate = postOps.creates 18 + .filter((create) => { 19 + // only alf-related posts 20 + return ( 21 + isPost(create.record) && 22 + create.record.text.toLowerCase().includes('alf') 23 + ) 24 + }) 25 + .map((create) => { 26 + // map alf-related posts to a db row 27 + const record = isPost(create.record) ? create.record : null 28 + return { 29 + uri: create.uri, 30 + cid: create.cid, 31 + replyParent: record?.reply?.parent.uri ?? null, 32 + replyRoot: record?.reply?.root.uri ?? null, 33 + indexedAt: new Date().toISOString(), 34 + } 35 + }) 36 + 37 + if (postsToDelete.length > 0) { 38 + await this.db 39 + .deleteFrom('posts') 40 + .where('uri', 'in', postsToDelete) 41 + .execute() 42 + } 43 + if (postsToCreate.length > 0) { 44 + await this.db 45 + .insertInto('posts') 46 + .values(postsToCreate) 47 + .onConflict((oc) => oc.doNothing()) 48 + .execute() 49 + } 50 + } 51 + } 52 + 53 + export const isPost = (obj: unknown): obj is PostRecord => { 54 + try { 55 + lexicons.assertValidRecord(ids.AppBskyFeedPost, obj) 56 + return true 57 + } catch (err) { 58 + return false 59 + } 60 + }
+124
src/util/subscription.ts
··· 1 + import { Subscription } from '@atproto/xrpc-server' 2 + import { ids, lexicons } from '../lexicon/lexicons' 3 + import { 4 + Commit, 5 + OutputSchema as RepoEvent, 6 + isCommit, 7 + } from '../lexicon/types/com/atproto/sync/subscribeRepos' 8 + import { Database } from '../db' 9 + import { cborToLexRecord, readCar } from '@atproto/repo' 10 + 11 + export abstract class FirehoseSubscriptionBase { 12 + public sub: Subscription<RepoEvent> 13 + 14 + constructor(public db: Database, public service: string) { 15 + this.sub = new Subscription({ 16 + service: service, 17 + method: ids.ComAtprotoSyncSubscribeRepos, 18 + getParams: () => this.getCursor(), 19 + validate: (value: unknown) => { 20 + try { 21 + return lexicons.assertValidXrpcMessage<RepoEvent>( 22 + ids.ComAtprotoSyncSubscribeRepos, 23 + value, 24 + ) 25 + } catch (err) { 26 + console.error('repo subscription skipped invalid message', err) 27 + } 28 + }, 29 + }) 30 + } 31 + 32 + abstract handleEvent(evt: RepoEvent): Promise<void> 33 + 34 + async run() { 35 + await this.ensureCursor() 36 + for await (const evt of this.sub) { 37 + try { 38 + await this.handleEvent(evt) 39 + } catch (err) { 40 + console.error('repo subscription could not handle message', err) 41 + } 42 + // update stored cursor every 20 events or so 43 + if (isCommit(evt) && evt.seq % 20 === 0) { 44 + await this.updateCursor(evt.seq) 45 + } 46 + } 47 + } 48 + 49 + async ensureCursor() { 50 + await this.db 51 + .insertInto('sub_state') 52 + .values({ 53 + service: this.service, 54 + cursor: 0, 55 + }) 56 + .onConflict((oc) => oc.doNothing()) 57 + .execute() 58 + } 59 + 60 + async updateCursor(cursor: number) { 61 + await this.db 62 + .updateTable('sub_state') 63 + .set({ cursor }) 64 + .where('service', '=', this.service) 65 + .execute() 66 + } 67 + 68 + async getCursor(): Promise<{ cursor: number }> { 69 + const res = await this.db 70 + .selectFrom('sub_state') 71 + .selectAll() 72 + .where('service', '=', this.service) 73 + .executeTakeFirst() 74 + return res ? { cursor: res.cursor } : { cursor: 0 } 75 + } 76 + } 77 + 78 + export const getPostOperations = async (evt: Commit): Promise<Operations> => { 79 + const ops: Operations = { creates: [], deletes: [] } 80 + const postOps = evt.ops.filter( 81 + (op) => op.path.split('/')[1] === ids.AppBskyFeedPost, 82 + ) 83 + 84 + if (postOps.length < 1) return ops 85 + 86 + const car = await readCar(evt.blocks) 87 + 88 + for (const op of postOps) { 89 + // updates not supported yet 90 + if (op.action === 'update') continue 91 + const uri = `at://${evt.repo}/${op.path}` 92 + if (op.action === 'delete') { 93 + ops.deletes.push({ uri }) 94 + } else if (op.action === 'create') { 95 + if (!op.cid) continue 96 + const postBytes = await car.blocks.get(op.cid) 97 + if (!postBytes) continue 98 + ops.creates.push({ 99 + uri, 100 + cid: op.cid.toString(), 101 + author: evt.repo, 102 + record: cborToLexRecord(postBytes), 103 + }) 104 + } 105 + } 106 + 107 + return ops 108 + } 109 + 110 + type CreateOp = { 111 + uri: string 112 + cid: string 113 + author: string 114 + record: Record<string, unknown> 115 + } 116 + 117 + type DeleteOp = { 118 + uri: string 119 + } 120 + 121 + type Operations = { 122 + creates: CreateOp[] 123 + deletes: DeleteOp[] 124 + }
test.sqlite

This is a binary file and will not be displayed.

+1231
yarn.lock
··· 1 + # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 + # yarn lockfile v1 3 + 4 + 5 + "@atproto/common-web@*": 6 + version "0.1.0" 7 + resolved "https://registry.yarnpkg.com/@atproto/common-web/-/common-web-0.1.0.tgz#5529fa66f9533aa00cfd13f0a25757df7b26bd3d" 8 + integrity sha512-qD6xF60hvH+cP++fk/mt+0S9cxs94KsK+rNWypNlgnlp7r9By4ltXwtDSR/DNTA8mwDeularUno4VbTd2IWIzA== 9 + dependencies: 10 + multiformats "^9.6.4" 11 + uint8arrays "3.0.0" 12 + zod "^3.14.2" 13 + 14 + "@atproto/common@*": 15 + version "0.2.0" 16 + resolved "https://registry.yarnpkg.com/@atproto/common/-/common-0.2.0.tgz#e74502edf636f30e332f516dcb96f7342b71ff1b" 17 + integrity sha512-PVYSC30pyonz2MOxuBLk27uGdwyZQ42gJfCA/NE9jLeuenVDmZnVrK5WqJ7eGg+F88rZj7NcGfRsZdP0GMykEQ== 18 + dependencies: 19 + "@atproto/common-web" "*" 20 + "@ipld/dag-cbor" "^7.0.3" 21 + cbor-x "^1.5.1" 22 + multiformats "^9.6.4" 23 + pino "^8.6.1" 24 + 25 + "@atproto/crypto@*": 26 + version "0.1.1" 27 + resolved "https://registry.yarnpkg.com/@atproto/crypto/-/crypto-0.1.1.tgz#54afad2124c3867091e4d9b271f22d375fcfdf9e" 28 + integrity sha512-/7Ntn55dRZPtCnOd6dVo1IvZzpVut6YTAkZ8iFry9JW29l7ZeNkJd+NTnmWRz3aGQody10jngb4SNxQNi/f3+A== 29 + dependencies: 30 + "@noble/secp256k1" "^1.7.0" 31 + big-integer "^1.6.51" 32 + multiformats "^9.6.4" 33 + one-webcrypto "^1.0.3" 34 + uint8arrays "3.0.0" 35 + 36 + "@atproto/did-resolver@*": 37 + version "0.0.1" 38 + resolved "https://registry.yarnpkg.com/@atproto/did-resolver/-/did-resolver-0.0.1.tgz#e54c1b7fddff2cd6adf87c044b4a3b6f00d5eff7" 39 + integrity sha512-sdva3+nydMaWXwHJED558UZdVZuajfC2CHcsIZz0pQybicm3VI+khkf42ClZeOhf4Bwa4V4SOaaAqwyf86bDew== 40 + dependencies: 41 + "@atproto/common" "*" 42 + "@atproto/crypto" "*" 43 + axios "^0.24.0" 44 + did-resolver "^4.0.0" 45 + 46 + "@atproto/identifier@*": 47 + version "0.1.0" 48 + resolved "https://registry.yarnpkg.com/@atproto/identifier/-/identifier-0.1.0.tgz#6b600c8a3da08d9a7d5eab076f8b7064457dde75" 49 + integrity sha512-3LV7+4E6S0k8Rru7NBkyDF6Zf6NHVUXVS9d4l9fiXWMC49ghZMjq0vPmz80xjG1rRuFdJFbpRf4ApFciGxLIyQ== 50 + dependencies: 51 + "@atproto/common-web" "*" 52 + 53 + "@atproto/lexicon@*": 54 + version "0.1.0" 55 + resolved "https://registry.yarnpkg.com/@atproto/lexicon/-/lexicon-0.1.0.tgz#e7784cc868c734314d5bf9af83487aba7ccae0b3" 56 + integrity sha512-Iy+gV9w42xLhrZrmcbZh7VFoHjXuzWvecGHIfz44owNjjv7aE/d2P5BbOX/XicSkmQ8Qkpg0BqwYDD1XBVS+DQ== 57 + dependencies: 58 + "@atproto/common-web" "*" 59 + "@atproto/identifier" "*" 60 + "@atproto/nsid" "*" 61 + "@atproto/uri" "*" 62 + iso-datestring-validator "^2.2.2" 63 + multiformats "^9.6.4" 64 + zod "^3.14.2" 65 + 66 + "@atproto/nsid@*": 67 + version "0.0.1" 68 + resolved "https://registry.yarnpkg.com/@atproto/nsid/-/nsid-0.0.1.tgz#0cdc00cefe8f0b1385f352b9f57b3ad37fff09a4" 69 + integrity sha512-t5M6/CzWBVYoBbIvfKDpqPj/+ZmyoK9ydZSStcTXosJ27XXwOPhz0VDUGKK2SM9G5Y7TPes8S5KTAU0UdVYFCw== 70 + 71 + "@atproto/repo@^0.1.0": 72 + version "0.1.0" 73 + resolved "https://registry.yarnpkg.com/@atproto/repo/-/repo-0.1.0.tgz#8c546af16c30fe5ba4c883ac73b68be9d7eca273" 74 + integrity sha512-O4qs5WfSjEFvUtpOTB4n9cLcK6YP/w/ly6Qxc3S8IFevLGYX58NPPr5zlg3dxs64uLKbWWjzhQM7JAqO44MEKw== 75 + dependencies: 76 + "@atproto/common" "*" 77 + "@atproto/crypto" "*" 78 + "@atproto/did-resolver" "*" 79 + "@atproto/lexicon" "*" 80 + "@atproto/nsid" "*" 81 + "@ipld/car" "^3.2.3" 82 + "@ipld/dag-cbor" "^7.0.0" 83 + multiformats "^9.6.4" 84 + uint8arrays "3.0.0" 85 + zod "^3.14.2" 86 + 87 + "@atproto/uri@*", "@atproto/uri@^0.0.2": 88 + version "0.0.2" 89 + resolved "https://registry.yarnpkg.com/@atproto/uri/-/uri-0.0.2.tgz#c6d3788e6f12d66ba72690d2d70fe6c291b4acfb" 90 + integrity sha512-/6otLZF7BLpT9suSdHuXLbL12nINcWPsLmcOI+dctqovWUjH+XIRVNXDQgBYSrPVetxMiknuEwWelmnA33AEXg== 91 + dependencies: 92 + "@atproto/identifier" "*" 93 + "@atproto/nsid" "*" 94 + 95 + "@atproto/xrpc-server@^0.1.0": 96 + version "0.1.0" 97 + resolved "https://registry.yarnpkg.com/@atproto/xrpc-server/-/xrpc-server-0.1.0.tgz#2dd3172bb35fbfefb98c3d727d29be8eca5c3d9b" 98 + integrity sha512-I7EjhnLUrlqQKTe2jDEnyAaOTvj26pg9NRjTXflbIOqCOkh+K9+5ztGSI0djF7TSQ7pegXroj3qRnmpVVCBr7Q== 99 + dependencies: 100 + "@atproto/common" "*" 101 + "@atproto/lexicon" "*" 102 + cbor-x "^1.5.1" 103 + express "^4.17.2" 104 + http-errors "^2.0.0" 105 + mime-types "^2.1.35" 106 + uint8arrays "3.0.0" 107 + ws "^8.12.0" 108 + zod "^3.14.2" 109 + 110 + "@cbor-extract/cbor-extract-darwin-arm64@2.1.1": 111 + version "2.1.1" 112 + resolved "https://registry.yarnpkg.com/@cbor-extract/cbor-extract-darwin-arm64/-/cbor-extract-darwin-arm64-2.1.1.tgz#5721f6dd3feae0b96d23122853ce977e0671b7a6" 113 + integrity sha512-blVBy5MXz6m36Vx0DfLd7PChOQKEs8lK2bD1WJn/vVgG4FXZiZmZb2GECHFvVPA5T7OnODd9xZiL3nMCv6QUhA== 114 + 115 + "@cbor-extract/cbor-extract-darwin-x64@2.1.1": 116 + version "2.1.1" 117 + resolved "https://registry.yarnpkg.com/@cbor-extract/cbor-extract-darwin-x64/-/cbor-extract-darwin-x64-2.1.1.tgz#c25e7d0133950d87d101d7b3afafea8d50d83f5f" 118 + integrity sha512-h6KFOzqk8jXTvkOftyRIWGrd7sKQzQv2jVdTL9nKSf3D2drCvQB/LHUxAOpPXo3pv2clDtKs3xnHalpEh3rDsw== 119 + 120 + "@cbor-extract/cbor-extract-linux-arm64@2.1.1": 121 + version "2.1.1" 122 + resolved "https://registry.yarnpkg.com/@cbor-extract/cbor-extract-linux-arm64/-/cbor-extract-linux-arm64-2.1.1.tgz#48f78e7d8f0fcc84ed074b6bfa6d15dd83187c63" 123 + integrity sha512-SxAaRcYf8S0QHaMc7gvRSiTSr7nUYMqbUdErBEu+HYA4Q6UNydx1VwFE68hGcp1qvxcy9yT5U7gA+a5XikfwSQ== 124 + 125 + "@cbor-extract/cbor-extract-linux-arm@2.1.1": 126 + version "2.1.1" 127 + resolved "https://registry.yarnpkg.com/@cbor-extract/cbor-extract-linux-arm/-/cbor-extract-linux-arm-2.1.1.tgz#7507d346389cb682e44fab8fae9534edd52e2e41" 128 + integrity sha512-ds0uikdcIGUjPyraV4oJqyVE5gl/qYBpa/Wnh6l6xLE2lj/hwnjT2XcZCChdXwW/YFZ1LUHs6waoYN8PmK0nKQ== 129 + 130 + "@cbor-extract/cbor-extract-linux-x64@2.1.1": 131 + version "2.1.1" 132 + resolved "https://registry.yarnpkg.com/@cbor-extract/cbor-extract-linux-x64/-/cbor-extract-linux-x64-2.1.1.tgz#b7c1d2be61c58ec18d58afbad52411ded63cd4cd" 133 + integrity sha512-GVK+8fNIE9lJQHAlhOROYiI0Yd4bAZ4u++C2ZjlkS3YmO6hi+FUxe6Dqm+OKWTcMpL/l71N6CQAmaRcb4zyJuA== 134 + 135 + "@cbor-extract/cbor-extract-win32-x64@2.1.1": 136 + version "2.1.1" 137 + resolved "https://registry.yarnpkg.com/@cbor-extract/cbor-extract-win32-x64/-/cbor-extract-win32-x64-2.1.1.tgz#21b11a1a3f18c3e7d62fd5f87438b7ed2c64c1f7" 138 + integrity sha512-2Niq1C41dCRIDeD8LddiH+mxGlO7HJ612Ll3D/E73ZWBmycued+8ghTr/Ho3CMOWPUEr08XtyBMVXAjqF+TcKw== 139 + 140 + "@cspotcode/source-map-support@^0.8.0": 141 + version "0.8.1" 142 + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" 143 + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== 144 + dependencies: 145 + "@jridgewell/trace-mapping" "0.3.9" 146 + 147 + "@ipld/car@^3.2.3": 148 + version "3.2.4" 149 + resolved "https://registry.yarnpkg.com/@ipld/car/-/car-3.2.4.tgz#115951ba2255ec51d865773a074e422c169fb01c" 150 + integrity sha512-rezKd+jk8AsTGOoJKqzfjLJ3WVft7NZNH95f0pfPbicROvzTyvHCNy567HzSUd6gRXZ9im29z5ZEv9Hw49jSYw== 151 + dependencies: 152 + "@ipld/dag-cbor" "^7.0.0" 153 + multiformats "^9.5.4" 154 + varint "^6.0.0" 155 + 156 + "@ipld/dag-cbor@^7.0.0", "@ipld/dag-cbor@^7.0.3": 157 + version "7.0.3" 158 + resolved "https://registry.yarnpkg.com/@ipld/dag-cbor/-/dag-cbor-7.0.3.tgz#aa31b28afb11a807c3d627828a344e5521ac4a1e" 159 + integrity sha512-1VVh2huHsuohdXC1bGJNE8WR72slZ9XE2T3wbBBq31dm7ZBatmKLLxrB+XAqafxfRFjv08RZmj/W/ZqaM13AuA== 160 + dependencies: 161 + cborg "^1.6.0" 162 + multiformats "^9.5.4" 163 + 164 + "@jridgewell/resolve-uri@^3.0.3": 165 + version "3.1.1" 166 + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" 167 + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== 168 + 169 + "@jridgewell/sourcemap-codec@^1.4.10": 170 + version "1.4.15" 171 + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" 172 + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== 173 + 174 + "@jridgewell/trace-mapping@0.3.9": 175 + version "0.3.9" 176 + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" 177 + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== 178 + dependencies: 179 + "@jridgewell/resolve-uri" "^3.0.3" 180 + "@jridgewell/sourcemap-codec" "^1.4.10" 181 + 182 + "@noble/secp256k1@^1.7.0": 183 + version "1.7.1" 184 + resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.1.tgz#b251c70f824ce3ca7f8dc3df08d58f005cc0507c" 185 + integrity sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw== 186 + 187 + "@tsconfig/node10@^1.0.7": 188 + version "1.0.9" 189 + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" 190 + integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== 191 + 192 + "@tsconfig/node12@^1.0.7": 193 + version "1.0.11" 194 + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" 195 + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== 196 + 197 + "@tsconfig/node14@^1.0.0": 198 + version "1.0.3" 199 + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" 200 + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== 201 + 202 + "@tsconfig/node16@^1.0.2": 203 + version "1.0.3" 204 + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e" 205 + integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== 206 + 207 + "@types/better-sqlite3@^7.6.4": 208 + version "7.6.4" 209 + resolved "https://registry.yarnpkg.com/@types/better-sqlite3/-/better-sqlite3-7.6.4.tgz#102462611e67aadf950d3ccca10292de91e6f35b" 210 + integrity sha512-dzrRZCYPXIXfSR1/surNbJ/grU3scTaygS0OMzjlGf71i9sc2fGyHPXXiXmEvNIoE0cGwsanEFMVJxPXmco9Eg== 211 + dependencies: 212 + "@types/node" "*" 213 + 214 + "@types/body-parser@*": 215 + version "1.19.2" 216 + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" 217 + integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== 218 + dependencies: 219 + "@types/connect" "*" 220 + "@types/node" "*" 221 + 222 + "@types/connect@*": 223 + version "3.4.35" 224 + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" 225 + integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== 226 + dependencies: 227 + "@types/node" "*" 228 + 229 + "@types/express-serve-static-core@^4.17.33": 230 + version "4.17.34" 231 + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.34.tgz#c119e85b75215178bc127de588e93100698ab4cc" 232 + integrity sha512-fvr49XlCGoUj2Pp730AItckfjat4WNb0lb3kfrLWffd+RLeoGAMsq7UOy04PAPtoL01uKwcp6u8nhzpgpDYr3w== 233 + dependencies: 234 + "@types/node" "*" 235 + "@types/qs" "*" 236 + "@types/range-parser" "*" 237 + "@types/send" "*" 238 + 239 + "@types/express@^4.17.17": 240 + version "4.17.17" 241 + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.17.tgz#01d5437f6ef9cfa8668e616e13c2f2ac9a491ae4" 242 + integrity sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q== 243 + dependencies: 244 + "@types/body-parser" "*" 245 + "@types/express-serve-static-core" "^4.17.33" 246 + "@types/qs" "*" 247 + "@types/serve-static" "*" 248 + 249 + "@types/mime@*": 250 + version "3.0.1" 251 + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" 252 + integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== 253 + 254 + "@types/mime@^1": 255 + version "1.3.2" 256 + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" 257 + integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== 258 + 259 + "@types/node@*", "@types/node@^20.1.1": 260 + version "20.1.1" 261 + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.1.1.tgz#afc492e8dbe7f672dd3a13674823522b467a45ad" 262 + integrity sha512-uKBEevTNb+l6/aCQaKVnUModfEMjAl98lw2Si9P5y4hLu9tm6AlX2ZIoXZX6Wh9lJueYPrGPKk5WMCNHg/u6/A== 263 + 264 + "@types/qs@*": 265 + version "6.9.7" 266 + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" 267 + integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== 268 + 269 + "@types/range-parser@*": 270 + version "1.2.4" 271 + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" 272 + integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== 273 + 274 + "@types/send@*": 275 + version "0.17.1" 276 + resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.1.tgz#ed4932b8a2a805f1fe362a70f4e62d0ac994e301" 277 + integrity sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q== 278 + dependencies: 279 + "@types/mime" "^1" 280 + "@types/node" "*" 281 + 282 + "@types/serve-static@*": 283 + version "1.15.1" 284 + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.1.tgz#86b1753f0be4f9a1bee68d459fcda5be4ea52b5d" 285 + integrity sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ== 286 + dependencies: 287 + "@types/mime" "*" 288 + "@types/node" "*" 289 + 290 + abort-controller@^3.0.0: 291 + version "3.0.0" 292 + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" 293 + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== 294 + dependencies: 295 + event-target-shim "^5.0.0" 296 + 297 + accepts@~1.3.8: 298 + version "1.3.8" 299 + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" 300 + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== 301 + dependencies: 302 + mime-types "~2.1.34" 303 + negotiator "0.6.3" 304 + 305 + acorn-walk@^8.1.1: 306 + version "8.2.0" 307 + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" 308 + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== 309 + 310 + acorn@^8.4.1: 311 + version "8.8.2" 312 + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" 313 + integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== 314 + 315 + arg@^4.1.0: 316 + version "4.1.3" 317 + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" 318 + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== 319 + 320 + array-flatten@1.1.1: 321 + version "1.1.1" 322 + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" 323 + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== 324 + 325 + atomic-sleep@^1.0.0: 326 + version "1.0.0" 327 + resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" 328 + integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ== 329 + 330 + axios@^0.24.0: 331 + version "0.24.0" 332 + resolved "https://registry.yarnpkg.com/axios/-/axios-0.24.0.tgz#804e6fa1e4b9c5288501dd9dff56a7a0940d20d6" 333 + integrity sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA== 334 + dependencies: 335 + follow-redirects "^1.14.4" 336 + 337 + base64-js@^1.3.1: 338 + version "1.5.1" 339 + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" 340 + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== 341 + 342 + better-sqlite3@^8.3.0: 343 + version "8.3.0" 344 + resolved "https://registry.yarnpkg.com/better-sqlite3/-/better-sqlite3-8.3.0.tgz#3873ddfd9f2af90b628657e8ff221786c93d1984" 345 + integrity sha512-JTmvBZL/JLTc+3Msbvq6gK6elbU9/wVMqiudplHrVJpr7sVMR9KJrNhZAbW+RhXKlpMcuEhYkdcHa3TXKNXQ1w== 346 + dependencies: 347 + bindings "^1.5.0" 348 + prebuild-install "^7.1.0" 349 + 350 + big-integer@^1.6.51: 351 + version "1.6.51" 352 + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" 353 + integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== 354 + 355 + bindings@^1.5.0: 356 + version "1.5.0" 357 + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" 358 + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== 359 + dependencies: 360 + file-uri-to-path "1.0.0" 361 + 362 + bl@^4.0.3: 363 + version "4.1.0" 364 + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" 365 + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== 366 + dependencies: 367 + buffer "^5.5.0" 368 + inherits "^2.0.4" 369 + readable-stream "^3.4.0" 370 + 371 + body-parser@1.20.1: 372 + version "1.20.1" 373 + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" 374 + integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== 375 + dependencies: 376 + bytes "3.1.2" 377 + content-type "~1.0.4" 378 + debug "2.6.9" 379 + depd "2.0.0" 380 + destroy "1.2.0" 381 + http-errors "2.0.0" 382 + iconv-lite "0.4.24" 383 + on-finished "2.4.1" 384 + qs "6.11.0" 385 + raw-body "2.5.1" 386 + type-is "~1.6.18" 387 + unpipe "1.0.0" 388 + 389 + buffer@^5.5.0: 390 + version "5.7.1" 391 + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" 392 + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== 393 + dependencies: 394 + base64-js "^1.3.1" 395 + ieee754 "^1.1.13" 396 + 397 + buffer@^6.0.3: 398 + version "6.0.3" 399 + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" 400 + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== 401 + dependencies: 402 + base64-js "^1.3.1" 403 + ieee754 "^1.2.1" 404 + 405 + bytes@3.1.2: 406 + version "3.1.2" 407 + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" 408 + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== 409 + 410 + call-bind@^1.0.0: 411 + version "1.0.2" 412 + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" 413 + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== 414 + dependencies: 415 + function-bind "^1.1.1" 416 + get-intrinsic "^1.0.2" 417 + 418 + cbor-extract@^2.1.1: 419 + version "2.1.1" 420 + resolved "https://registry.yarnpkg.com/cbor-extract/-/cbor-extract-2.1.1.tgz#f154b31529fdb6b7c70fb3ca448f44eda96a1b42" 421 + integrity sha512-1UX977+L+zOJHsp0mWFG13GLwO6ucKgSmSW6JTl8B9GUvACvHeIVpFqhU92299Z6PfD09aTXDell5p+lp1rUFA== 422 + dependencies: 423 + node-gyp-build-optional-packages "5.0.3" 424 + optionalDependencies: 425 + "@cbor-extract/cbor-extract-darwin-arm64" "2.1.1" 426 + "@cbor-extract/cbor-extract-darwin-x64" "2.1.1" 427 + "@cbor-extract/cbor-extract-linux-arm" "2.1.1" 428 + "@cbor-extract/cbor-extract-linux-arm64" "2.1.1" 429 + "@cbor-extract/cbor-extract-linux-x64" "2.1.1" 430 + "@cbor-extract/cbor-extract-win32-x64" "2.1.1" 431 + 432 + cbor-x@^1.5.1: 433 + version "1.5.2" 434 + resolved "https://registry.yarnpkg.com/cbor-x/-/cbor-x-1.5.2.tgz#ceabc48bda06185de1f3a078bb4a793e6e222de5" 435 + integrity sha512-JArE6xcgj3eo13fpnShO42QFBUuXP2uG12RLeF2Nb+dJcETFYxkUa27gXQrRYp67Ahtaxyfbg+ihc62XTyQqsQ== 436 + optionalDependencies: 437 + cbor-extract "^2.1.1" 438 + 439 + cborg@^1.6.0: 440 + version "1.10.1" 441 + resolved "https://registry.yarnpkg.com/cborg/-/cborg-1.10.1.tgz#24cfe52c69ec0f66f95e23dc57f2086954c8d718" 442 + integrity sha512-et6Qm8MOUY2kCWa5GKk2MlBVoPjHv0hQBmlzI/Z7+5V3VJCeIkGehIB3vWknNsm2kOkAIs6wEKJFJo8luWQQ/w== 443 + 444 + chownr@^1.1.1: 445 + version "1.1.4" 446 + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" 447 + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== 448 + 449 + content-disposition@0.5.4: 450 + version "0.5.4" 451 + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" 452 + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== 453 + dependencies: 454 + safe-buffer "5.2.1" 455 + 456 + content-type@~1.0.4: 457 + version "1.0.5" 458 + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" 459 + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== 460 + 461 + cookie-signature@1.0.6: 462 + version "1.0.6" 463 + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" 464 + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== 465 + 466 + cookie@0.5.0: 467 + version "0.5.0" 468 + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" 469 + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== 470 + 471 + create-require@^1.1.0: 472 + version "1.1.1" 473 + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" 474 + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== 475 + 476 + debug@2.6.9: 477 + version "2.6.9" 478 + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 479 + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 480 + dependencies: 481 + ms "2.0.0" 482 + 483 + decompress-response@^6.0.0: 484 + version "6.0.0" 485 + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" 486 + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== 487 + dependencies: 488 + mimic-response "^3.1.0" 489 + 490 + deep-extend@^0.6.0: 491 + version "0.6.0" 492 + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" 493 + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== 494 + 495 + depd@2.0.0: 496 + version "2.0.0" 497 + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" 498 + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== 499 + 500 + destroy@1.2.0: 501 + version "1.2.0" 502 + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" 503 + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== 504 + 505 + detect-libc@^2.0.0: 506 + version "2.0.1" 507 + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd" 508 + integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w== 509 + 510 + did-resolver@^4.0.0: 511 + version "4.1.0" 512 + resolved "https://registry.yarnpkg.com/did-resolver/-/did-resolver-4.1.0.tgz#740852083c4fd5bf9729d528eca5d105aff45eb6" 513 + integrity sha512-S6fWHvCXkZg2IhS4RcVHxwuyVejPR7c+a4Go0xbQ9ps5kILa8viiYQgrM4gfTyeTjJ0ekgJH9gk/BawTpmkbZA== 514 + 515 + diff@^4.0.1: 516 + version "4.0.2" 517 + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" 518 + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== 519 + 520 + ee-first@1.1.1: 521 + version "1.1.1" 522 + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" 523 + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== 524 + 525 + encodeurl@~1.0.2: 526 + version "1.0.2" 527 + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" 528 + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== 529 + 530 + end-of-stream@^1.1.0, end-of-stream@^1.4.1: 531 + version "1.4.4" 532 + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" 533 + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== 534 + dependencies: 535 + once "^1.4.0" 536 + 537 + escape-html@~1.0.3: 538 + version "1.0.3" 539 + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 540 + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== 541 + 542 + etag@~1.8.1: 543 + version "1.8.1" 544 + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" 545 + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== 546 + 547 + event-target-shim@^5.0.0: 548 + version "5.0.1" 549 + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" 550 + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== 551 + 552 + events@^3.3.0: 553 + version "3.3.0" 554 + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" 555 + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== 556 + 557 + expand-template@^2.0.3: 558 + version "2.0.3" 559 + resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" 560 + integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== 561 + 562 + express@^4.17.2, express@^4.18.2: 563 + version "4.18.2" 564 + resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" 565 + integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== 566 + dependencies: 567 + accepts "~1.3.8" 568 + array-flatten "1.1.1" 569 + body-parser "1.20.1" 570 + content-disposition "0.5.4" 571 + content-type "~1.0.4" 572 + cookie "0.5.0" 573 + cookie-signature "1.0.6" 574 + debug "2.6.9" 575 + depd "2.0.0" 576 + encodeurl "~1.0.2" 577 + escape-html "~1.0.3" 578 + etag "~1.8.1" 579 + finalhandler "1.2.0" 580 + fresh "0.5.2" 581 + http-errors "2.0.0" 582 + merge-descriptors "1.0.1" 583 + methods "~1.1.2" 584 + on-finished "2.4.1" 585 + parseurl "~1.3.3" 586 + path-to-regexp "0.1.7" 587 + proxy-addr "~2.0.7" 588 + qs "6.11.0" 589 + range-parser "~1.2.1" 590 + safe-buffer "5.2.1" 591 + send "0.18.0" 592 + serve-static "1.15.0" 593 + setprototypeof "1.2.0" 594 + statuses "2.0.1" 595 + type-is "~1.6.18" 596 + utils-merge "1.0.1" 597 + vary "~1.1.2" 598 + 599 + fast-redact@^3.1.1: 600 + version "3.1.2" 601 + resolved "https://registry.yarnpkg.com/fast-redact/-/fast-redact-3.1.2.tgz#d58e69e9084ce9fa4c1a6fa98a3e1ecf5d7839aa" 602 + integrity sha512-+0em+Iya9fKGfEQGcd62Yv6onjBmmhV1uh86XVfOU8VwAe6kaFdQCWI9s0/Nnugx5Vd9tdbZ7e6gE2tR9dzXdw== 603 + 604 + file-uri-to-path@1.0.0: 605 + version "1.0.0" 606 + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" 607 + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== 608 + 609 + finalhandler@1.2.0: 610 + version "1.2.0" 611 + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" 612 + integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== 613 + dependencies: 614 + debug "2.6.9" 615 + encodeurl "~1.0.2" 616 + escape-html "~1.0.3" 617 + on-finished "2.4.1" 618 + parseurl "~1.3.3" 619 + statuses "2.0.1" 620 + unpipe "~1.0.0" 621 + 622 + follow-redirects@^1.14.4: 623 + version "1.15.2" 624 + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" 625 + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== 626 + 627 + forwarded@0.2.0: 628 + version "0.2.0" 629 + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" 630 + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== 631 + 632 + fresh@0.5.2: 633 + version "0.5.2" 634 + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" 635 + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== 636 + 637 + fs-constants@^1.0.0: 638 + version "1.0.0" 639 + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" 640 + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== 641 + 642 + function-bind@^1.1.1: 643 + version "1.1.1" 644 + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 645 + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 646 + 647 + get-intrinsic@^1.0.2: 648 + version "1.2.0" 649 + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f" 650 + integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q== 651 + dependencies: 652 + function-bind "^1.1.1" 653 + has "^1.0.3" 654 + has-symbols "^1.0.3" 655 + 656 + github-from-package@0.0.0: 657 + version "0.0.0" 658 + resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" 659 + integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== 660 + 661 + has-symbols@^1.0.3: 662 + version "1.0.3" 663 + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" 664 + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== 665 + 666 + has@^1.0.3: 667 + version "1.0.3" 668 + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 669 + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 670 + dependencies: 671 + function-bind "^1.1.1" 672 + 673 + http-errors@2.0.0, http-errors@^2.0.0: 674 + version "2.0.0" 675 + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" 676 + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== 677 + dependencies: 678 + depd "2.0.0" 679 + inherits "2.0.4" 680 + setprototypeof "1.2.0" 681 + statuses "2.0.1" 682 + toidentifier "1.0.1" 683 + 684 + iconv-lite@0.4.24: 685 + version "0.4.24" 686 + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 687 + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 688 + dependencies: 689 + safer-buffer ">= 2.1.2 < 3" 690 + 691 + ieee754@^1.1.13, ieee754@^1.2.1: 692 + version "1.2.1" 693 + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" 694 + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== 695 + 696 + inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4: 697 + version "2.0.4" 698 + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 699 + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 700 + 701 + ini@~1.3.0: 702 + version "1.3.8" 703 + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" 704 + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== 705 + 706 + ipaddr.js@1.9.1: 707 + version "1.9.1" 708 + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" 709 + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== 710 + 711 + iso-datestring-validator@^2.2.2: 712 + version "2.2.2" 713 + resolved "https://registry.yarnpkg.com/iso-datestring-validator/-/iso-datestring-validator-2.2.2.tgz#2daa80d2900b7a954f9f731d42f96ee0c19a6895" 714 + integrity sha512-yLEMkBbLZTlVQqOnQ4FiMujR6T4DEcCb1xizmvXS+OxuhwcbtynoosRzdMA69zZCShCNAbi+gJ71FxZBBXx1SA== 715 + 716 + kysely@^0.22.0: 717 + version "0.22.0" 718 + resolved "https://registry.yarnpkg.com/kysely/-/kysely-0.22.0.tgz#8aac53942da3cadc604d7d154a746d983fe8f7b9" 719 + integrity sha512-ZE3qWtnqLOalodzfK5QUEcm7AEulhxsPNuKaGFsC3XiqO92vMLm+mAHk/NnbSIOtC4RmGm0nsv700i8KDp1gfQ== 720 + 721 + lru-cache@^6.0.0: 722 + version "6.0.0" 723 + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 724 + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 725 + dependencies: 726 + yallist "^4.0.0" 727 + 728 + make-error@^1.1.1: 729 + version "1.3.6" 730 + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" 731 + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== 732 + 733 + media-typer@0.3.0: 734 + version "0.3.0" 735 + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" 736 + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== 737 + 738 + merge-descriptors@1.0.1: 739 + version "1.0.1" 740 + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" 741 + integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== 742 + 743 + methods@~1.1.2: 744 + version "1.1.2" 745 + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" 746 + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== 747 + 748 + mime-db@1.52.0: 749 + version "1.52.0" 750 + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" 751 + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== 752 + 753 + mime-types@^2.1.35, mime-types@~2.1.24, mime-types@~2.1.34: 754 + version "2.1.35" 755 + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" 756 + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== 757 + dependencies: 758 + mime-db "1.52.0" 759 + 760 + mime@1.6.0: 761 + version "1.6.0" 762 + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" 763 + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== 764 + 765 + mimic-response@^3.1.0: 766 + version "3.1.0" 767 + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" 768 + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== 769 + 770 + minimist@^1.2.0, minimist@^1.2.3: 771 + version "1.2.8" 772 + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" 773 + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== 774 + 775 + mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: 776 + version "0.5.3" 777 + resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" 778 + integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== 779 + 780 + ms@2.0.0: 781 + version "2.0.0" 782 + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 783 + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== 784 + 785 + ms@2.1.3: 786 + version "2.1.3" 787 + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 788 + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 789 + 790 + multiformats@^9.4.2, multiformats@^9.5.4, multiformats@^9.6.4: 791 + version "9.9.0" 792 + resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-9.9.0.tgz#c68354e7d21037a8f1f8833c8ccd68618e8f1d37" 793 + integrity sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg== 794 + 795 + napi-build-utils@^1.0.1: 796 + version "1.0.2" 797 + resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" 798 + integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== 799 + 800 + negotiator@0.6.3: 801 + version "0.6.3" 802 + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" 803 + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== 804 + 805 + node-abi@^3.3.0: 806 + version "3.40.0" 807 + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.40.0.tgz#51d8ed44534f70ff1357dfbc3a89717b1ceac1b4" 808 + integrity sha512-zNy02qivjjRosswoYmPi8hIKJRr8MpQyeKT6qlcq/OnOgA3Rhoae+IYOqsM9V5+JnHWmxKnWOT2GxvtqdtOCXA== 809 + dependencies: 810 + semver "^7.3.5" 811 + 812 + node-gyp-build-optional-packages@5.0.3: 813 + version "5.0.3" 814 + resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.3.tgz#92a89d400352c44ad3975010368072b41ad66c17" 815 + integrity sha512-k75jcVzk5wnnc/FMxsf4udAoTEUv2jY3ycfdSd3yWu6Cnd1oee6/CfZJApyscA4FJOmdoixWwiwOyf16RzD5JA== 816 + 817 + object-inspect@^1.9.0: 818 + version "1.12.3" 819 + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" 820 + integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== 821 + 822 + on-exit-leak-free@^2.1.0: 823 + version "2.1.0" 824 + resolved "https://registry.yarnpkg.com/on-exit-leak-free/-/on-exit-leak-free-2.1.0.tgz#5c703c968f7e7f851885f6459bf8a8a57edc9cc4" 825 + integrity sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w== 826 + 827 + on-finished@2.4.1: 828 + version "2.4.1" 829 + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" 830 + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== 831 + dependencies: 832 + ee-first "1.1.1" 833 + 834 + once@^1.3.1, once@^1.4.0: 835 + version "1.4.0" 836 + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 837 + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 838 + dependencies: 839 + wrappy "1" 840 + 841 + one-webcrypto@^1.0.3: 842 + version "1.0.3" 843 + resolved "https://registry.yarnpkg.com/one-webcrypto/-/one-webcrypto-1.0.3.tgz#f951243cde29b79b6745ad14966fc598a609997c" 844 + integrity sha512-fu9ywBVBPx0gS9K0etIROTiCkvI5S1TDjFsYFb3rC1ewFxeOqsbzq7aIMBHsYfrTHBcGXJaONXXjTl8B01cW1Q== 845 + 846 + parseurl@~1.3.3: 847 + version "1.3.3" 848 + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" 849 + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== 850 + 851 + path-to-regexp@0.1.7: 852 + version "0.1.7" 853 + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" 854 + integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== 855 + 856 + pino-abstract-transport@v1.0.0: 857 + version "1.0.0" 858 + resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-1.0.0.tgz#cc0d6955fffcadb91b7b49ef220a6cc111d48bb3" 859 + integrity sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA== 860 + dependencies: 861 + readable-stream "^4.0.0" 862 + split2 "^4.0.0" 863 + 864 + pino-std-serializers@^6.0.0: 865 + version "6.2.1" 866 + resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-6.2.1.tgz#369f4ae2a19eb6d769ddf2c88a2164b76879a284" 867 + integrity sha512-wHuWB+CvSVb2XqXM0W/WOYUkVSPbiJb9S5fNB7TBhd8s892Xq910bRxwHtC4l71hgztObTjXL6ZheZXFjhDrDQ== 868 + 869 + pino@^8.6.1: 870 + version "8.14.1" 871 + resolved "https://registry.yarnpkg.com/pino/-/pino-8.14.1.tgz#bb38dcda8b500dd90c1193b6c9171eb777a47ac8" 872 + integrity sha512-8LYNv7BKWXSfS+k6oEc6occy5La+q2sPwU3q2ljTX5AZk7v+5kND2o5W794FyRaqha6DJajmkNRsWtPpFyMUdw== 873 + dependencies: 874 + atomic-sleep "^1.0.0" 875 + fast-redact "^3.1.1" 876 + on-exit-leak-free "^2.1.0" 877 + pino-abstract-transport v1.0.0 878 + pino-std-serializers "^6.0.0" 879 + process-warning "^2.0.0" 880 + quick-format-unescaped "^4.0.3" 881 + real-require "^0.2.0" 882 + safe-stable-stringify "^2.3.1" 883 + sonic-boom "^3.1.0" 884 + thread-stream "^2.0.0" 885 + 886 + prebuild-install@^7.1.0: 887 + version "7.1.1" 888 + resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.1.tgz#de97d5b34a70a0c81334fd24641f2a1702352e45" 889 + integrity sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw== 890 + dependencies: 891 + detect-libc "^2.0.0" 892 + expand-template "^2.0.3" 893 + github-from-package "0.0.0" 894 + minimist "^1.2.3" 895 + mkdirp-classic "^0.5.3" 896 + napi-build-utils "^1.0.1" 897 + node-abi "^3.3.0" 898 + pump "^3.0.0" 899 + rc "^1.2.7" 900 + simple-get "^4.0.0" 901 + tar-fs "^2.0.0" 902 + tunnel-agent "^0.6.0" 903 + 904 + process-warning@^2.0.0: 905 + version "2.2.0" 906 + resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-2.2.0.tgz#008ec76b579820a8e5c35d81960525ca64feb626" 907 + integrity sha512-/1WZ8+VQjR6avWOgHeEPd7SDQmFQ1B5mC1eRXsCm5TarlNmx/wCsa5GEaxGm05BORRtyG/Ex/3xq3TuRvq57qg== 908 + 909 + process@^0.11.10: 910 + version "0.11.10" 911 + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" 912 + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== 913 + 914 + proxy-addr@~2.0.7: 915 + version "2.0.7" 916 + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" 917 + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== 918 + dependencies: 919 + forwarded "0.2.0" 920 + ipaddr.js "1.9.1" 921 + 922 + pump@^3.0.0: 923 + version "3.0.0" 924 + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" 925 + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== 926 + dependencies: 927 + end-of-stream "^1.1.0" 928 + once "^1.3.1" 929 + 930 + qs@6.11.0: 931 + version "6.11.0" 932 + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" 933 + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== 934 + dependencies: 935 + side-channel "^1.0.4" 936 + 937 + quick-format-unescaped@^4.0.3: 938 + version "4.0.4" 939 + resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz#93ef6dd8d3453cbc7970dd614fad4c5954d6b5a7" 940 + integrity sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg== 941 + 942 + range-parser@~1.2.1: 943 + version "1.2.1" 944 + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" 945 + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== 946 + 947 + raw-body@2.5.1: 948 + version "2.5.1" 949 + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" 950 + integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== 951 + dependencies: 952 + bytes "3.1.2" 953 + http-errors "2.0.0" 954 + iconv-lite "0.4.24" 955 + unpipe "1.0.0" 956 + 957 + rc@^1.2.7: 958 + version "1.2.8" 959 + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" 960 + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== 961 + dependencies: 962 + deep-extend "^0.6.0" 963 + ini "~1.3.0" 964 + minimist "^1.2.0" 965 + strip-json-comments "~2.0.1" 966 + 967 + readable-stream@^3.1.1, readable-stream@^3.4.0: 968 + version "3.6.2" 969 + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" 970 + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== 971 + dependencies: 972 + inherits "^2.0.3" 973 + string_decoder "^1.1.1" 974 + util-deprecate "^1.0.1" 975 + 976 + readable-stream@^4.0.0: 977 + version "4.4.0" 978 + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.4.0.tgz#55ce132d60a988c460d75c631e9ccf6a7229b468" 979 + integrity sha512-kDMOq0qLtxV9f/SQv522h8cxZBqNZXuXNyjyezmfAAuribMyVXziljpQ/uQhfE1XLg2/TLTW2DsnoE4VAi/krg== 980 + dependencies: 981 + abort-controller "^3.0.0" 982 + buffer "^6.0.3" 983 + events "^3.3.0" 984 + process "^0.11.10" 985 + 986 + real-require@^0.2.0: 987 + version "0.2.0" 988 + resolved "https://registry.yarnpkg.com/real-require/-/real-require-0.2.0.tgz#209632dea1810be2ae063a6ac084fee7e33fba78" 989 + integrity sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg== 990 + 991 + safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@~5.2.0: 992 + version "5.2.1" 993 + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 994 + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 995 + 996 + safe-stable-stringify@^2.3.1: 997 + version "2.4.3" 998 + resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz#138c84b6f6edb3db5f8ef3ef7115b8f55ccbf886" 999 + integrity sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g== 1000 + 1001 + "safer-buffer@>= 2.1.2 < 3": 1002 + version "2.1.2" 1003 + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 1004 + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 1005 + 1006 + semver@^7.3.5: 1007 + version "7.5.0" 1008 + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.0.tgz#ed8c5dc8efb6c629c88b23d41dc9bf40c1d96cd0" 1009 + integrity sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA== 1010 + dependencies: 1011 + lru-cache "^6.0.0" 1012 + 1013 + send@0.18.0: 1014 + version "0.18.0" 1015 + resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" 1016 + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== 1017 + dependencies: 1018 + debug "2.6.9" 1019 + depd "2.0.0" 1020 + destroy "1.2.0" 1021 + encodeurl "~1.0.2" 1022 + escape-html "~1.0.3" 1023 + etag "~1.8.1" 1024 + fresh "0.5.2" 1025 + http-errors "2.0.0" 1026 + mime "1.6.0" 1027 + ms "2.1.3" 1028 + on-finished "2.4.1" 1029 + range-parser "~1.2.1" 1030 + statuses "2.0.1" 1031 + 1032 + serve-static@1.15.0: 1033 + version "1.15.0" 1034 + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" 1035 + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== 1036 + dependencies: 1037 + encodeurl "~1.0.2" 1038 + escape-html "~1.0.3" 1039 + parseurl "~1.3.3" 1040 + send "0.18.0" 1041 + 1042 + setprototypeof@1.2.0: 1043 + version "1.2.0" 1044 + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" 1045 + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== 1046 + 1047 + side-channel@^1.0.4: 1048 + version "1.0.4" 1049 + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" 1050 + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== 1051 + dependencies: 1052 + call-bind "^1.0.0" 1053 + get-intrinsic "^1.0.2" 1054 + object-inspect "^1.9.0" 1055 + 1056 + simple-concat@^1.0.0: 1057 + version "1.0.1" 1058 + resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" 1059 + integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== 1060 + 1061 + simple-get@^4.0.0: 1062 + version "4.0.1" 1063 + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543" 1064 + integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA== 1065 + dependencies: 1066 + decompress-response "^6.0.0" 1067 + once "^1.3.1" 1068 + simple-concat "^1.0.0" 1069 + 1070 + sonic-boom@^3.1.0: 1071 + version "3.3.0" 1072 + resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-3.3.0.tgz#cffab6dafee3b2bcb88d08d589394198bee1838c" 1073 + integrity sha512-LYxp34KlZ1a2Jb8ZQgFCK3niIHzibdwtwNUWKg0qQRzsDoJ3Gfgkf8KdBTFU3SkejDEIlWwnSnpVdOZIhFMl/g== 1074 + dependencies: 1075 + atomic-sleep "^1.0.0" 1076 + 1077 + split2@^4.0.0: 1078 + version "4.2.0" 1079 + resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" 1080 + integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== 1081 + 1082 + statuses@2.0.1: 1083 + version "2.0.1" 1084 + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" 1085 + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== 1086 + 1087 + string_decoder@^1.1.1: 1088 + version "1.3.0" 1089 + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" 1090 + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== 1091 + dependencies: 1092 + safe-buffer "~5.2.0" 1093 + 1094 + strip-json-comments@~2.0.1: 1095 + version "2.0.1" 1096 + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 1097 + integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== 1098 + 1099 + tar-fs@^2.0.0: 1100 + version "2.1.1" 1101 + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" 1102 + integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== 1103 + dependencies: 1104 + chownr "^1.1.1" 1105 + mkdirp-classic "^0.5.2" 1106 + pump "^3.0.0" 1107 + tar-stream "^2.1.4" 1108 + 1109 + tar-stream@^2.1.4: 1110 + version "2.2.0" 1111 + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" 1112 + integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== 1113 + dependencies: 1114 + bl "^4.0.3" 1115 + end-of-stream "^1.4.1" 1116 + fs-constants "^1.0.0" 1117 + inherits "^2.0.3" 1118 + readable-stream "^3.1.1" 1119 + 1120 + thread-stream@^2.0.0: 1121 + version "2.3.0" 1122 + resolved "https://registry.yarnpkg.com/thread-stream/-/thread-stream-2.3.0.tgz#4fc07fb39eff32ae7bad803cb7dd9598349fed33" 1123 + integrity sha512-kaDqm1DET9pp3NXwR8382WHbnpXnRkN9xGN9dQt3B2+dmXiW8X1SOwmFOxAErEQ47ObhZ96J6yhZNXuyCOL7KA== 1124 + dependencies: 1125 + real-require "^0.2.0" 1126 + 1127 + toidentifier@1.0.1: 1128 + version "1.0.1" 1129 + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" 1130 + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== 1131 + 1132 + ts-node@^10.9.1: 1133 + version "10.9.1" 1134 + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" 1135 + integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== 1136 + dependencies: 1137 + "@cspotcode/source-map-support" "^0.8.0" 1138 + "@tsconfig/node10" "^1.0.7" 1139 + "@tsconfig/node12" "^1.0.7" 1140 + "@tsconfig/node14" "^1.0.0" 1141 + "@tsconfig/node16" "^1.0.2" 1142 + acorn "^8.4.1" 1143 + acorn-walk "^8.1.1" 1144 + arg "^4.1.0" 1145 + create-require "^1.1.0" 1146 + diff "^4.0.1" 1147 + make-error "^1.1.1" 1148 + v8-compile-cache-lib "^3.0.1" 1149 + yn "3.1.1" 1150 + 1151 + tunnel-agent@^0.6.0: 1152 + version "0.6.0" 1153 + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 1154 + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== 1155 + dependencies: 1156 + safe-buffer "^5.0.1" 1157 + 1158 + type-is@~1.6.18: 1159 + version "1.6.18" 1160 + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" 1161 + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== 1162 + dependencies: 1163 + media-typer "0.3.0" 1164 + mime-types "~2.1.24" 1165 + 1166 + typescript@^5.0.4: 1167 + version "5.0.4" 1168 + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.4.tgz#b217fd20119bd61a94d4011274e0ab369058da3b" 1169 + integrity sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw== 1170 + 1171 + uint8arrays@3.0.0: 1172 + version "3.0.0" 1173 + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.0.0.tgz#260869efb8422418b6f04e3fac73a3908175c63b" 1174 + integrity sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA== 1175 + dependencies: 1176 + multiformats "^9.4.2" 1177 + 1178 + unpipe@1.0.0, unpipe@~1.0.0: 1179 + version "1.0.0" 1180 + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 1181 + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== 1182 + 1183 + util-deprecate@^1.0.1: 1184 + version "1.0.2" 1185 + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1186 + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== 1187 + 1188 + utils-merge@1.0.1: 1189 + version "1.0.1" 1190 + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" 1191 + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== 1192 + 1193 + v8-compile-cache-lib@^3.0.1: 1194 + version "3.0.1" 1195 + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" 1196 + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== 1197 + 1198 + varint@^6.0.0: 1199 + version "6.0.0" 1200 + resolved "https://registry.yarnpkg.com/varint/-/varint-6.0.0.tgz#9881eb0ce8feaea6512439d19ddf84bf551661d0" 1201 + integrity sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg== 1202 + 1203 + vary@~1.1.2: 1204 + version "1.1.2" 1205 + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" 1206 + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== 1207 + 1208 + wrappy@1: 1209 + version "1.0.2" 1210 + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1211 + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 1212 + 1213 + ws@^8.12.0: 1214 + version "8.13.0" 1215 + resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" 1216 + integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== 1217 + 1218 + yallist@^4.0.0: 1219 + version "4.0.0" 1220 + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 1221 + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 1222 + 1223 + yn@3.1.1: 1224 + version "3.1.1" 1225 + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" 1226 + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== 1227 + 1228 + zod@^3.14.2: 1229 + version "3.21.4" 1230 + resolved "https://registry.yarnpkg.com/zod/-/zod-3.21.4.tgz#10882231d992519f0a10b5dd58a38c9dabbb64db" 1231 + integrity sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==