grain.social is a photo sharing platform built on atproto.
1/**
2 * GENERATED CODE - DO NOT MODIFY
3 */
4import {
5 createServer as createXrpcServer,
6 Server as XrpcServer,
7 type Options as XrpcOptions,
8 type AuthVerifier,
9 type StreamAuthVerifier,
10} from "npm:@atproto/xrpc-server"
11import { schemas } from './lexicons.ts'
12import * as SocialGrainGalleryGetGalleryThread from './types/social/grain/gallery/getGalleryThread.ts'
13import * as SocialGrainGalleryGetActorGalleries from './types/social/grain/gallery/getActorGalleries.ts'
14import * as SocialGrainGalleryGetGallery from './types/social/grain/gallery/getGallery.ts'
15import * as SocialGrainFeedGetTimeline from './types/social/grain/feed/getTimeline.ts'
16import * as SocialGrainActorGetProfile from './types/social/grain/actor/getProfile.ts'
17
18export const APP_BSKY_GRAPH = {
19 DefsModlist: 'app.bsky.graph.defs#modlist',
20 DefsCuratelist: 'app.bsky.graph.defs#curatelist',
21 DefsReferencelist: 'app.bsky.graph.defs#referencelist',
22}
23export const APP_BSKY_FEED = {
24 DefsRequestLess: 'app.bsky.feed.defs#requestLess',
25 DefsRequestMore: 'app.bsky.feed.defs#requestMore',
26 DefsInteractionLike: 'app.bsky.feed.defs#interactionLike',
27 DefsInteractionSeen: 'app.bsky.feed.defs#interactionSeen',
28 DefsClickthroughItem: 'app.bsky.feed.defs#clickthroughItem',
29 DefsContentModeVideo: 'app.bsky.feed.defs#contentModeVideo',
30 DefsInteractionQuote: 'app.bsky.feed.defs#interactionQuote',
31 DefsInteractionReply: 'app.bsky.feed.defs#interactionReply',
32 DefsInteractionShare: 'app.bsky.feed.defs#interactionShare',
33 DefsClickthroughEmbed: 'app.bsky.feed.defs#clickthroughEmbed',
34 DefsInteractionRepost: 'app.bsky.feed.defs#interactionRepost',
35 DefsClickthroughAuthor: 'app.bsky.feed.defs#clickthroughAuthor',
36 DefsClickthroughReposter: 'app.bsky.feed.defs#clickthroughReposter',
37 DefsContentModeUnspecified: 'app.bsky.feed.defs#contentModeUnspecified',
38}
39export const COM_ATPROTO_MODERATION = {
40 DefsReasonRude: 'com.atproto.moderation.defs#reasonRude',
41 DefsReasonSpam: 'com.atproto.moderation.defs#reasonSpam',
42 DefsReasonOther: 'com.atproto.moderation.defs#reasonOther',
43 DefsReasonAppeal: 'com.atproto.moderation.defs#reasonAppeal',
44 DefsReasonSexual: 'com.atproto.moderation.defs#reasonSexual',
45 DefsReasonViolation: 'com.atproto.moderation.defs#reasonViolation',
46 DefsReasonMisleading: 'com.atproto.moderation.defs#reasonMisleading',
47}
48
49export function createServer(options?: XrpcOptions): Server {
50 return new Server(options)
51}
52
53export class Server {
54 xrpc: XrpcServer
55 app: AppNS
56 sh: ShNS
57 social: SocialNS
58 com: ComNS
59
60 constructor(options?: XrpcOptions) {
61 this.xrpc = createXrpcServer(schemas, options)
62 this.app = new AppNS(this)
63 this.sh = new ShNS(this)
64 this.social = new SocialNS(this)
65 this.com = new ComNS(this)
66 }
67}
68
69export class AppNS {
70 _server: Server
71 bsky: AppBskyNS
72
73 constructor(server: Server) {
74 this._server = server
75 this.bsky = new AppBskyNS(server)
76 }
77}
78
79export class AppBskyNS {
80 _server: Server
81 embed: AppBskyEmbedNS
82 graph: AppBskyGraphNS
83 feed: AppBskyFeedNS
84 richtext: AppBskyRichtextNS
85 actor: AppBskyActorNS
86
87 constructor(server: Server) {
88 this._server = server
89 this.embed = new AppBskyEmbedNS(server)
90 this.graph = new AppBskyGraphNS(server)
91 this.feed = new AppBskyFeedNS(server)
92 this.richtext = new AppBskyRichtextNS(server)
93 this.actor = new AppBskyActorNS(server)
94 }
95}
96
97export class AppBskyEmbedNS {
98 _server: Server
99
100 constructor(server: Server) {
101 this._server = server
102 }
103}
104
105export class AppBskyGraphNS {
106 _server: Server
107
108 constructor(server: Server) {
109 this._server = server
110 }
111}
112
113export class AppBskyFeedNS {
114 _server: Server
115
116 constructor(server: Server) {
117 this._server = server
118 }
119}
120
121export class AppBskyRichtextNS {
122 _server: Server
123
124 constructor(server: Server) {
125 this._server = server
126 }
127}
128
129export class AppBskyActorNS {
130 _server: Server
131
132 constructor(server: Server) {
133 this._server = server
134 }
135}
136
137export class ShNS {
138 _server: Server
139 tangled: ShTangledNS
140
141 constructor(server: Server) {
142 this._server = server
143 this.tangled = new ShTangledNS(server)
144 }
145}
146
147export class ShTangledNS {
148 _server: Server
149 graph: ShTangledGraphNS
150 actor: ShTangledActorNS
151
152 constructor(server: Server) {
153 this._server = server
154 this.graph = new ShTangledGraphNS(server)
155 this.actor = new ShTangledActorNS(server)
156 }
157}
158
159export class ShTangledGraphNS {
160 _server: Server
161
162 constructor(server: Server) {
163 this._server = server
164 }
165}
166
167export class ShTangledActorNS {
168 _server: Server
169
170 constructor(server: Server) {
171 this._server = server
172 }
173}
174
175export class SocialNS {
176 _server: Server
177 grain: SocialGrainNS
178
179 constructor(server: Server) {
180 this._server = server
181 this.grain = new SocialGrainNS(server)
182 }
183}
184
185export class SocialGrainNS {
186 _server: Server
187 gallery: SocialGrainGalleryNS
188 graph: SocialGrainGraphNS
189 labeler: SocialGrainLabelerNS
190 feed: SocialGrainFeedNS
191 actor: SocialGrainActorNS
192 photo: SocialGrainPhotoNS
193
194 constructor(server: Server) {
195 this._server = server
196 this.gallery = new SocialGrainGalleryNS(server)
197 this.graph = new SocialGrainGraphNS(server)
198 this.labeler = new SocialGrainLabelerNS(server)
199 this.feed = new SocialGrainFeedNS(server)
200 this.actor = new SocialGrainActorNS(server)
201 this.photo = new SocialGrainPhotoNS(server)
202 }
203}
204
205export class SocialGrainGalleryNS {
206 _server: Server
207
208 constructor(server: Server) {
209 this._server = server
210 }
211
212 getGalleryThread<AV extends AuthVerifier>(
213 cfg: ConfigOf<
214 AV,
215 SocialGrainGalleryGetGalleryThread.Handler<ExtractAuth<AV>>,
216 SocialGrainGalleryGetGalleryThread.HandlerReqCtx<ExtractAuth<AV>>
217 >,
218 ) {
219 const nsid = 'social.grain.gallery.getGalleryThread' // @ts-ignore
220 return this._server.xrpc.method(nsid, cfg)
221 }
222
223 getActorGalleries<AV extends AuthVerifier>(
224 cfg: ConfigOf<
225 AV,
226 SocialGrainGalleryGetActorGalleries.Handler<ExtractAuth<AV>>,
227 SocialGrainGalleryGetActorGalleries.HandlerReqCtx<ExtractAuth<AV>>
228 >,
229 ) {
230 const nsid = 'social.grain.gallery.getActorGalleries' // @ts-ignore
231 return this._server.xrpc.method(nsid, cfg)
232 }
233
234 getGallery<AV extends AuthVerifier>(
235 cfg: ConfigOf<
236 AV,
237 SocialGrainGalleryGetGallery.Handler<ExtractAuth<AV>>,
238 SocialGrainGalleryGetGallery.HandlerReqCtx<ExtractAuth<AV>>
239 >,
240 ) {
241 const nsid = 'social.grain.gallery.getGallery' // @ts-ignore
242 return this._server.xrpc.method(nsid, cfg)
243 }
244}
245
246export class SocialGrainGraphNS {
247 _server: Server
248
249 constructor(server: Server) {
250 this._server = server
251 }
252}
253
254export class SocialGrainLabelerNS {
255 _server: Server
256
257 constructor(server: Server) {
258 this._server = server
259 }
260}
261
262export class SocialGrainFeedNS {
263 _server: Server
264
265 constructor(server: Server) {
266 this._server = server
267 }
268
269 getTimeline<AV extends AuthVerifier>(
270 cfg: ConfigOf<
271 AV,
272 SocialGrainFeedGetTimeline.Handler<ExtractAuth<AV>>,
273 SocialGrainFeedGetTimeline.HandlerReqCtx<ExtractAuth<AV>>
274 >,
275 ) {
276 const nsid = 'social.grain.feed.getTimeline' // @ts-ignore
277 return this._server.xrpc.method(nsid, cfg)
278 }
279}
280
281export class SocialGrainActorNS {
282 _server: Server
283
284 constructor(server: Server) {
285 this._server = server
286 }
287
288 getProfile<AV extends AuthVerifier>(
289 cfg: ConfigOf<
290 AV,
291 SocialGrainActorGetProfile.Handler<ExtractAuth<AV>>,
292 SocialGrainActorGetProfile.HandlerReqCtx<ExtractAuth<AV>>
293 >,
294 ) {
295 const nsid = 'social.grain.actor.getProfile' // @ts-ignore
296 return this._server.xrpc.method(nsid, cfg)
297 }
298}
299
300export class SocialGrainPhotoNS {
301 _server: Server
302
303 constructor(server: Server) {
304 this._server = server
305 }
306}
307
308export class ComNS {
309 _server: Server
310 atproto: ComAtprotoNS
311
312 constructor(server: Server) {
313 this._server = server
314 this.atproto = new ComAtprotoNS(server)
315 }
316}
317
318export class ComAtprotoNS {
319 _server: Server
320 repo: ComAtprotoRepoNS
321
322 constructor(server: Server) {
323 this._server = server
324 this.repo = new ComAtprotoRepoNS(server)
325 }
326}
327
328export class ComAtprotoRepoNS {
329 _server: Server
330
331 constructor(server: Server) {
332 this._server = server
333 }
334}
335
336type SharedRateLimitOpts<T> = {
337 name: string
338 calcKey?: (ctx: T) => string | null
339 calcPoints?: (ctx: T) => number
340}
341type RouteRateLimitOpts<T> = {
342 durationMs: number
343 points: number
344 calcKey?: (ctx: T) => string | null
345 calcPoints?: (ctx: T) => number
346}
347type HandlerOpts = { blobLimit?: number }
348type HandlerRateLimitOpts<T> = SharedRateLimitOpts<T> | RouteRateLimitOpts<T>
349type ConfigOf<Auth, Handler, ReqCtx> =
350 | Handler
351 | {
352 auth?: Auth
353 opts?: HandlerOpts
354 rateLimit?: HandlerRateLimitOpts<ReqCtx> | HandlerRateLimitOpts<ReqCtx>[]
355 handler: Handler
356 }
357type ExtractAuth<AV extends AuthVerifier | StreamAuthVerifier> = Extract<
358 Awaited<ReturnType<AV>>,
359 { credentials: unknown }
360>