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 SocialGrainNotificationUpdateSeen from './types/social/grain/notification/updateSeen.ts'
13import * as SocialGrainNotificationGetNotifications from './types/social/grain/notification/getNotifications.ts'
14import * as SocialGrainCommentDeleteComment from './types/social/grain/comment/deleteComment.ts'
15import * as SocialGrainCommentCreateComment from './types/social/grain/comment/createComment.ts'
16import * as SocialGrainGalleryDeleteGallery from './types/social/grain/gallery/deleteGallery.ts'
17import * as SocialGrainGalleryCreateItem from './types/social/grain/gallery/createItem.ts'
18import * as SocialGrainGalleryCreateGallery from './types/social/grain/gallery/createGallery.ts'
19import * as SocialGrainGalleryDeleteItem from './types/social/grain/gallery/deleteItem.ts'
20import * as SocialGrainGalleryUpdateGallery from './types/social/grain/gallery/updateGallery.ts'
21import * as SocialGrainGalleryApplySort from './types/social/grain/gallery/applySort.ts'
22import * as SocialGrainGalleryGetGalleryThread from './types/social/grain/gallery/getGalleryThread.ts'
23import * as SocialGrainGalleryGetActorGalleries from './types/social/grain/gallery/getActorGalleries.ts'
24import * as SocialGrainGalleryGetGallery from './types/social/grain/gallery/getGallery.ts'
25import * as SocialGrainGraphDeleteFollow from './types/social/grain/graph/deleteFollow.ts'
26import * as SocialGrainGraphCreateFollow from './types/social/grain/graph/createFollow.ts'
27import * as SocialGrainGraphGetFollowers from './types/social/grain/graph/getFollowers.ts'
28import * as SocialGrainGraphGetFollows from './types/social/grain/graph/getFollows.ts'
29import * as SocialGrainDarkroomGetGalleryComposite from './types/social/grain/darkroom/getGalleryComposite.ts'
30import * as SocialGrainFavoriteDeleteFavorite from './types/social/grain/favorite/deleteFavorite.ts'
31import * as SocialGrainFavoriteCreateFavorite from './types/social/grain/favorite/createFavorite.ts'
32import * as SocialGrainFeedGetTimeline from './types/social/grain/feed/getTimeline.ts'
33import * as SocialGrainActorGetProfile from './types/social/grain/actor/getProfile.ts'
34import * as SocialGrainActorSearchActors from './types/social/grain/actor/searchActors.ts'
35import * as SocialGrainActorUpdateAvatar from './types/social/grain/actor/updateAvatar.ts'
36import * as SocialGrainActorGetActorFavs from './types/social/grain/actor/getActorFavs.ts'
37import * as SocialGrainActorUpdateProfile from './types/social/grain/actor/updateProfile.ts'
38import * as SocialGrainPhotoDeletePhoto from './types/social/grain/photo/deletePhoto.ts'
39import * as SocialGrainPhotoUploadPhoto from './types/social/grain/photo/uploadPhoto.ts'
40import * as SocialGrainPhotoCreateExif from './types/social/grain/photo/createExif.ts'
41import * as SocialGrainPhotoApplyAlts from './types/social/grain/photo/applyAlts.ts'
42import * as SocialGrainPhotoGetActorPhotos from './types/social/grain/photo/getActorPhotos.ts'
43
44export const APP_BSKY_GRAPH = {
45 DefsModlist: 'app.bsky.graph.defs#modlist',
46 DefsCuratelist: 'app.bsky.graph.defs#curatelist',
47 DefsReferencelist: 'app.bsky.graph.defs#referencelist',
48}
49export const APP_BSKY_FEED = {
50 DefsRequestLess: 'app.bsky.feed.defs#requestLess',
51 DefsRequestMore: 'app.bsky.feed.defs#requestMore',
52 DefsInteractionLike: 'app.bsky.feed.defs#interactionLike',
53 DefsInteractionSeen: 'app.bsky.feed.defs#interactionSeen',
54 DefsClickthroughItem: 'app.bsky.feed.defs#clickthroughItem',
55 DefsContentModeVideo: 'app.bsky.feed.defs#contentModeVideo',
56 DefsInteractionQuote: 'app.bsky.feed.defs#interactionQuote',
57 DefsInteractionReply: 'app.bsky.feed.defs#interactionReply',
58 DefsInteractionShare: 'app.bsky.feed.defs#interactionShare',
59 DefsClickthroughEmbed: 'app.bsky.feed.defs#clickthroughEmbed',
60 DefsInteractionRepost: 'app.bsky.feed.defs#interactionRepost',
61 DefsClickthroughAuthor: 'app.bsky.feed.defs#clickthroughAuthor',
62 DefsClickthroughReposter: 'app.bsky.feed.defs#clickthroughReposter',
63 DefsContentModeUnspecified: 'app.bsky.feed.defs#contentModeUnspecified',
64}
65export const COM_ATPROTO_MODERATION = {
66 DefsReasonRude: 'com.atproto.moderation.defs#reasonRude',
67 DefsReasonSpam: 'com.atproto.moderation.defs#reasonSpam',
68 DefsReasonOther: 'com.atproto.moderation.defs#reasonOther',
69 DefsReasonAppeal: 'com.atproto.moderation.defs#reasonAppeal',
70 DefsReasonSexual: 'com.atproto.moderation.defs#reasonSexual',
71 DefsReasonViolation: 'com.atproto.moderation.defs#reasonViolation',
72 DefsReasonMisleading: 'com.atproto.moderation.defs#reasonMisleading',
73}
74
75export function createServer(options?: XrpcOptions): Server {
76 return new Server(options)
77}
78
79export class Server {
80 xrpc: XrpcServer
81 app: AppNS
82 sh: ShNS
83 social: SocialNS
84 com: ComNS
85
86 constructor(options?: XrpcOptions) {
87 this.xrpc = createXrpcServer(schemas, options)
88 this.app = new AppNS(this)
89 this.sh = new ShNS(this)
90 this.social = new SocialNS(this)
91 this.com = new ComNS(this)
92 }
93}
94
95export class AppNS {
96 _server: Server
97 bsky: AppBskyNS
98
99 constructor(server: Server) {
100 this._server = server
101 this.bsky = new AppBskyNS(server)
102 }
103}
104
105export class AppBskyNS {
106 _server: Server
107 embed: AppBskyEmbedNS
108 graph: AppBskyGraphNS
109 feed: AppBskyFeedNS
110 richtext: AppBskyRichtextNS
111 actor: AppBskyActorNS
112
113 constructor(server: Server) {
114 this._server = server
115 this.embed = new AppBskyEmbedNS(server)
116 this.graph = new AppBskyGraphNS(server)
117 this.feed = new AppBskyFeedNS(server)
118 this.richtext = new AppBskyRichtextNS(server)
119 this.actor = new AppBskyActorNS(server)
120 }
121}
122
123export class AppBskyEmbedNS {
124 _server: Server
125
126 constructor(server: Server) {
127 this._server = server
128 }
129}
130
131export class AppBskyGraphNS {
132 _server: Server
133
134 constructor(server: Server) {
135 this._server = server
136 }
137}
138
139export class AppBskyFeedNS {
140 _server: Server
141
142 constructor(server: Server) {
143 this._server = server
144 }
145}
146
147export class AppBskyRichtextNS {
148 _server: Server
149
150 constructor(server: Server) {
151 this._server = server
152 }
153}
154
155export class AppBskyActorNS {
156 _server: Server
157
158 constructor(server: Server) {
159 this._server = server
160 }
161}
162
163export class ShNS {
164 _server: Server
165 tangled: ShTangledNS
166
167 constructor(server: Server) {
168 this._server = server
169 this.tangled = new ShTangledNS(server)
170 }
171}
172
173export class ShTangledNS {
174 _server: Server
175 graph: ShTangledGraphNS
176 actor: ShTangledActorNS
177
178 constructor(server: Server) {
179 this._server = server
180 this.graph = new ShTangledGraphNS(server)
181 this.actor = new ShTangledActorNS(server)
182 }
183}
184
185export class ShTangledGraphNS {
186 _server: Server
187
188 constructor(server: Server) {
189 this._server = server
190 }
191}
192
193export class ShTangledActorNS {
194 _server: Server
195
196 constructor(server: Server) {
197 this._server = server
198 }
199}
200
201export class SocialNS {
202 _server: Server
203 grain: SocialGrainNS
204
205 constructor(server: Server) {
206 this._server = server
207 this.grain = new SocialGrainNS(server)
208 }
209}
210
211export class SocialGrainNS {
212 _server: Server
213 notification: SocialGrainNotificationNS
214 comment: SocialGrainCommentNS
215 gallery: SocialGrainGalleryNS
216 graph: SocialGrainGraphNS
217 darkroom: SocialGrainDarkroomNS
218 favorite: SocialGrainFavoriteNS
219 labeler: SocialGrainLabelerNS
220 feed: SocialGrainFeedNS
221 actor: SocialGrainActorNS
222 photo: SocialGrainPhotoNS
223
224 constructor(server: Server) {
225 this._server = server
226 this.notification = new SocialGrainNotificationNS(server)
227 this.comment = new SocialGrainCommentNS(server)
228 this.gallery = new SocialGrainGalleryNS(server)
229 this.graph = new SocialGrainGraphNS(server)
230 this.darkroom = new SocialGrainDarkroomNS(server)
231 this.favorite = new SocialGrainFavoriteNS(server)
232 this.labeler = new SocialGrainLabelerNS(server)
233 this.feed = new SocialGrainFeedNS(server)
234 this.actor = new SocialGrainActorNS(server)
235 this.photo = new SocialGrainPhotoNS(server)
236 }
237}
238
239export class SocialGrainNotificationNS {
240 _server: Server
241
242 constructor(server: Server) {
243 this._server = server
244 }
245
246 updateSeen<AV extends AuthVerifier>(
247 cfg: ConfigOf<
248 AV,
249 SocialGrainNotificationUpdateSeen.Handler<ExtractAuth<AV>>,
250 SocialGrainNotificationUpdateSeen.HandlerReqCtx<ExtractAuth<AV>>
251 >,
252 ) {
253 const nsid = 'social.grain.notification.updateSeen' // @ts-ignore
254 return this._server.xrpc.method(nsid, cfg)
255 }
256
257 getNotifications<AV extends AuthVerifier>(
258 cfg: ConfigOf<
259 AV,
260 SocialGrainNotificationGetNotifications.Handler<ExtractAuth<AV>>,
261 SocialGrainNotificationGetNotifications.HandlerReqCtx<ExtractAuth<AV>>
262 >,
263 ) {
264 const nsid = 'social.grain.notification.getNotifications' // @ts-ignore
265 return this._server.xrpc.method(nsid, cfg)
266 }
267}
268
269export class SocialGrainCommentNS {
270 _server: Server
271
272 constructor(server: Server) {
273 this._server = server
274 }
275
276 deleteComment<AV extends AuthVerifier>(
277 cfg: ConfigOf<
278 AV,
279 SocialGrainCommentDeleteComment.Handler<ExtractAuth<AV>>,
280 SocialGrainCommentDeleteComment.HandlerReqCtx<ExtractAuth<AV>>
281 >,
282 ) {
283 const nsid = 'social.grain.comment.deleteComment' // @ts-ignore
284 return this._server.xrpc.method(nsid, cfg)
285 }
286
287 createComment<AV extends AuthVerifier>(
288 cfg: ConfigOf<
289 AV,
290 SocialGrainCommentCreateComment.Handler<ExtractAuth<AV>>,
291 SocialGrainCommentCreateComment.HandlerReqCtx<ExtractAuth<AV>>
292 >,
293 ) {
294 const nsid = 'social.grain.comment.createComment' // @ts-ignore
295 return this._server.xrpc.method(nsid, cfg)
296 }
297}
298
299export class SocialGrainGalleryNS {
300 _server: Server
301
302 constructor(server: Server) {
303 this._server = server
304 }
305
306 deleteGallery<AV extends AuthVerifier>(
307 cfg: ConfigOf<
308 AV,
309 SocialGrainGalleryDeleteGallery.Handler<ExtractAuth<AV>>,
310 SocialGrainGalleryDeleteGallery.HandlerReqCtx<ExtractAuth<AV>>
311 >,
312 ) {
313 const nsid = 'social.grain.gallery.deleteGallery' // @ts-ignore
314 return this._server.xrpc.method(nsid, cfg)
315 }
316
317 createItem<AV extends AuthVerifier>(
318 cfg: ConfigOf<
319 AV,
320 SocialGrainGalleryCreateItem.Handler<ExtractAuth<AV>>,
321 SocialGrainGalleryCreateItem.HandlerReqCtx<ExtractAuth<AV>>
322 >,
323 ) {
324 const nsid = 'social.grain.gallery.createItem' // @ts-ignore
325 return this._server.xrpc.method(nsid, cfg)
326 }
327
328 createGallery<AV extends AuthVerifier>(
329 cfg: ConfigOf<
330 AV,
331 SocialGrainGalleryCreateGallery.Handler<ExtractAuth<AV>>,
332 SocialGrainGalleryCreateGallery.HandlerReqCtx<ExtractAuth<AV>>
333 >,
334 ) {
335 const nsid = 'social.grain.gallery.createGallery' // @ts-ignore
336 return this._server.xrpc.method(nsid, cfg)
337 }
338
339 deleteItem<AV extends AuthVerifier>(
340 cfg: ConfigOf<
341 AV,
342 SocialGrainGalleryDeleteItem.Handler<ExtractAuth<AV>>,
343 SocialGrainGalleryDeleteItem.HandlerReqCtx<ExtractAuth<AV>>
344 >,
345 ) {
346 const nsid = 'social.grain.gallery.deleteItem' // @ts-ignore
347 return this._server.xrpc.method(nsid, cfg)
348 }
349
350 updateGallery<AV extends AuthVerifier>(
351 cfg: ConfigOf<
352 AV,
353 SocialGrainGalleryUpdateGallery.Handler<ExtractAuth<AV>>,
354 SocialGrainGalleryUpdateGallery.HandlerReqCtx<ExtractAuth<AV>>
355 >,
356 ) {
357 const nsid = 'social.grain.gallery.updateGallery' // @ts-ignore
358 return this._server.xrpc.method(nsid, cfg)
359 }
360
361 applySort<AV extends AuthVerifier>(
362 cfg: ConfigOf<
363 AV,
364 SocialGrainGalleryApplySort.Handler<ExtractAuth<AV>>,
365 SocialGrainGalleryApplySort.HandlerReqCtx<ExtractAuth<AV>>
366 >,
367 ) {
368 const nsid = 'social.grain.gallery.applySort' // @ts-ignore
369 return this._server.xrpc.method(nsid, cfg)
370 }
371
372 getGalleryThread<AV extends AuthVerifier>(
373 cfg: ConfigOf<
374 AV,
375 SocialGrainGalleryGetGalleryThread.Handler<ExtractAuth<AV>>,
376 SocialGrainGalleryGetGalleryThread.HandlerReqCtx<ExtractAuth<AV>>
377 >,
378 ) {
379 const nsid = 'social.grain.gallery.getGalleryThread' // @ts-ignore
380 return this._server.xrpc.method(nsid, cfg)
381 }
382
383 getActorGalleries<AV extends AuthVerifier>(
384 cfg: ConfigOf<
385 AV,
386 SocialGrainGalleryGetActorGalleries.Handler<ExtractAuth<AV>>,
387 SocialGrainGalleryGetActorGalleries.HandlerReqCtx<ExtractAuth<AV>>
388 >,
389 ) {
390 const nsid = 'social.grain.gallery.getActorGalleries' // @ts-ignore
391 return this._server.xrpc.method(nsid, cfg)
392 }
393
394 getGallery<AV extends AuthVerifier>(
395 cfg: ConfigOf<
396 AV,
397 SocialGrainGalleryGetGallery.Handler<ExtractAuth<AV>>,
398 SocialGrainGalleryGetGallery.HandlerReqCtx<ExtractAuth<AV>>
399 >,
400 ) {
401 const nsid = 'social.grain.gallery.getGallery' // @ts-ignore
402 return this._server.xrpc.method(nsid, cfg)
403 }
404}
405
406export class SocialGrainGraphNS {
407 _server: Server
408
409 constructor(server: Server) {
410 this._server = server
411 }
412
413 deleteFollow<AV extends AuthVerifier>(
414 cfg: ConfigOf<
415 AV,
416 SocialGrainGraphDeleteFollow.Handler<ExtractAuth<AV>>,
417 SocialGrainGraphDeleteFollow.HandlerReqCtx<ExtractAuth<AV>>
418 >,
419 ) {
420 const nsid = 'social.grain.graph.deleteFollow' // @ts-ignore
421 return this._server.xrpc.method(nsid, cfg)
422 }
423
424 createFollow<AV extends AuthVerifier>(
425 cfg: ConfigOf<
426 AV,
427 SocialGrainGraphCreateFollow.Handler<ExtractAuth<AV>>,
428 SocialGrainGraphCreateFollow.HandlerReqCtx<ExtractAuth<AV>>
429 >,
430 ) {
431 const nsid = 'social.grain.graph.createFollow' // @ts-ignore
432 return this._server.xrpc.method(nsid, cfg)
433 }
434
435 getFollowers<AV extends AuthVerifier>(
436 cfg: ConfigOf<
437 AV,
438 SocialGrainGraphGetFollowers.Handler<ExtractAuth<AV>>,
439 SocialGrainGraphGetFollowers.HandlerReqCtx<ExtractAuth<AV>>
440 >,
441 ) {
442 const nsid = 'social.grain.graph.getFollowers' // @ts-ignore
443 return this._server.xrpc.method(nsid, cfg)
444 }
445
446 getFollows<AV extends AuthVerifier>(
447 cfg: ConfigOf<
448 AV,
449 SocialGrainGraphGetFollows.Handler<ExtractAuth<AV>>,
450 SocialGrainGraphGetFollows.HandlerReqCtx<ExtractAuth<AV>>
451 >,
452 ) {
453 const nsid = 'social.grain.graph.getFollows' // @ts-ignore
454 return this._server.xrpc.method(nsid, cfg)
455 }
456}
457
458export class SocialGrainDarkroomNS {
459 _server: Server
460
461 constructor(server: Server) {
462 this._server = server
463 }
464
465 getGalleryComposite<AV extends AuthVerifier>(
466 cfg: ConfigOf<
467 AV,
468 SocialGrainDarkroomGetGalleryComposite.Handler<ExtractAuth<AV>>,
469 SocialGrainDarkroomGetGalleryComposite.HandlerReqCtx<ExtractAuth<AV>>
470 >,
471 ) {
472 const nsid = 'social.grain.darkroom.getGalleryComposite' // @ts-ignore
473 return this._server.xrpc.method(nsid, cfg)
474 }
475}
476
477export class SocialGrainFavoriteNS {
478 _server: Server
479
480 constructor(server: Server) {
481 this._server = server
482 }
483
484 deleteFavorite<AV extends AuthVerifier>(
485 cfg: ConfigOf<
486 AV,
487 SocialGrainFavoriteDeleteFavorite.Handler<ExtractAuth<AV>>,
488 SocialGrainFavoriteDeleteFavorite.HandlerReqCtx<ExtractAuth<AV>>
489 >,
490 ) {
491 const nsid = 'social.grain.favorite.deleteFavorite' // @ts-ignore
492 return this._server.xrpc.method(nsid, cfg)
493 }
494
495 createFavorite<AV extends AuthVerifier>(
496 cfg: ConfigOf<
497 AV,
498 SocialGrainFavoriteCreateFavorite.Handler<ExtractAuth<AV>>,
499 SocialGrainFavoriteCreateFavorite.HandlerReqCtx<ExtractAuth<AV>>
500 >,
501 ) {
502 const nsid = 'social.grain.favorite.createFavorite' // @ts-ignore
503 return this._server.xrpc.method(nsid, cfg)
504 }
505}
506
507export class SocialGrainLabelerNS {
508 _server: Server
509
510 constructor(server: Server) {
511 this._server = server
512 }
513}
514
515export class SocialGrainFeedNS {
516 _server: Server
517
518 constructor(server: Server) {
519 this._server = server
520 }
521
522 getTimeline<AV extends AuthVerifier>(
523 cfg: ConfigOf<
524 AV,
525 SocialGrainFeedGetTimeline.Handler<ExtractAuth<AV>>,
526 SocialGrainFeedGetTimeline.HandlerReqCtx<ExtractAuth<AV>>
527 >,
528 ) {
529 const nsid = 'social.grain.feed.getTimeline' // @ts-ignore
530 return this._server.xrpc.method(nsid, cfg)
531 }
532}
533
534export class SocialGrainActorNS {
535 _server: Server
536
537 constructor(server: Server) {
538 this._server = server
539 }
540
541 getProfile<AV extends AuthVerifier>(
542 cfg: ConfigOf<
543 AV,
544 SocialGrainActorGetProfile.Handler<ExtractAuth<AV>>,
545 SocialGrainActorGetProfile.HandlerReqCtx<ExtractAuth<AV>>
546 >,
547 ) {
548 const nsid = 'social.grain.actor.getProfile' // @ts-ignore
549 return this._server.xrpc.method(nsid, cfg)
550 }
551
552 searchActors<AV extends AuthVerifier>(
553 cfg: ConfigOf<
554 AV,
555 SocialGrainActorSearchActors.Handler<ExtractAuth<AV>>,
556 SocialGrainActorSearchActors.HandlerReqCtx<ExtractAuth<AV>>
557 >,
558 ) {
559 const nsid = 'social.grain.actor.searchActors' // @ts-ignore
560 return this._server.xrpc.method(nsid, cfg)
561 }
562
563 updateAvatar<AV extends AuthVerifier>(
564 cfg: ConfigOf<
565 AV,
566 SocialGrainActorUpdateAvatar.Handler<ExtractAuth<AV>>,
567 SocialGrainActorUpdateAvatar.HandlerReqCtx<ExtractAuth<AV>>
568 >,
569 ) {
570 const nsid = 'social.grain.actor.updateAvatar' // @ts-ignore
571 return this._server.xrpc.method(nsid, cfg)
572 }
573
574 getActorFavs<AV extends AuthVerifier>(
575 cfg: ConfigOf<
576 AV,
577 SocialGrainActorGetActorFavs.Handler<ExtractAuth<AV>>,
578 SocialGrainActorGetActorFavs.HandlerReqCtx<ExtractAuth<AV>>
579 >,
580 ) {
581 const nsid = 'social.grain.actor.getActorFavs' // @ts-ignore
582 return this._server.xrpc.method(nsid, cfg)
583 }
584
585 updateProfile<AV extends AuthVerifier>(
586 cfg: ConfigOf<
587 AV,
588 SocialGrainActorUpdateProfile.Handler<ExtractAuth<AV>>,
589 SocialGrainActorUpdateProfile.HandlerReqCtx<ExtractAuth<AV>>
590 >,
591 ) {
592 const nsid = 'social.grain.actor.updateProfile' // @ts-ignore
593 return this._server.xrpc.method(nsid, cfg)
594 }
595}
596
597export class SocialGrainPhotoNS {
598 _server: Server
599
600 constructor(server: Server) {
601 this._server = server
602 }
603
604 deletePhoto<AV extends AuthVerifier>(
605 cfg: ConfigOf<
606 AV,
607 SocialGrainPhotoDeletePhoto.Handler<ExtractAuth<AV>>,
608 SocialGrainPhotoDeletePhoto.HandlerReqCtx<ExtractAuth<AV>>
609 >,
610 ) {
611 const nsid = 'social.grain.photo.deletePhoto' // @ts-ignore
612 return this._server.xrpc.method(nsid, cfg)
613 }
614
615 uploadPhoto<AV extends AuthVerifier>(
616 cfg: ConfigOf<
617 AV,
618 SocialGrainPhotoUploadPhoto.Handler<ExtractAuth<AV>>,
619 SocialGrainPhotoUploadPhoto.HandlerReqCtx<ExtractAuth<AV>>
620 >,
621 ) {
622 const nsid = 'social.grain.photo.uploadPhoto' // @ts-ignore
623 return this._server.xrpc.method(nsid, cfg)
624 }
625
626 createExif<AV extends AuthVerifier>(
627 cfg: ConfigOf<
628 AV,
629 SocialGrainPhotoCreateExif.Handler<ExtractAuth<AV>>,
630 SocialGrainPhotoCreateExif.HandlerReqCtx<ExtractAuth<AV>>
631 >,
632 ) {
633 const nsid = 'social.grain.photo.createExif' // @ts-ignore
634 return this._server.xrpc.method(nsid, cfg)
635 }
636
637 applyAlts<AV extends AuthVerifier>(
638 cfg: ConfigOf<
639 AV,
640 SocialGrainPhotoApplyAlts.Handler<ExtractAuth<AV>>,
641 SocialGrainPhotoApplyAlts.HandlerReqCtx<ExtractAuth<AV>>
642 >,
643 ) {
644 const nsid = 'social.grain.photo.applyAlts' // @ts-ignore
645 return this._server.xrpc.method(nsid, cfg)
646 }
647
648 getActorPhotos<AV extends AuthVerifier>(
649 cfg: ConfigOf<
650 AV,
651 SocialGrainPhotoGetActorPhotos.Handler<ExtractAuth<AV>>,
652 SocialGrainPhotoGetActorPhotos.HandlerReqCtx<ExtractAuth<AV>>
653 >,
654 ) {
655 const nsid = 'social.grain.photo.getActorPhotos' // @ts-ignore
656 return this._server.xrpc.method(nsid, cfg)
657 }
658}
659
660export class ComNS {
661 _server: Server
662 atproto: ComAtprotoNS
663
664 constructor(server: Server) {
665 this._server = server
666 this.atproto = new ComAtprotoNS(server)
667 }
668}
669
670export class ComAtprotoNS {
671 _server: Server
672 repo: ComAtprotoRepoNS
673
674 constructor(server: Server) {
675 this._server = server
676 this.repo = new ComAtprotoRepoNS(server)
677 }
678}
679
680export class ComAtprotoRepoNS {
681 _server: Server
682
683 constructor(server: Server) {
684 this._server = server
685 }
686}
687
688type SharedRateLimitOpts<T> = {
689 name: string
690 calcKey?: (ctx: T) => string | null
691 calcPoints?: (ctx: T) => number
692}
693type RouteRateLimitOpts<T> = {
694 durationMs: number
695 points: number
696 calcKey?: (ctx: T) => string | null
697 calcPoints?: (ctx: T) => number
698}
699type HandlerOpts = { blobLimit?: number }
700type HandlerRateLimitOpts<T> = SharedRateLimitOpts<T> | RouteRateLimitOpts<T>
701type ConfigOf<Auth, Handler, ReqCtx> =
702 | Handler
703 | {
704 auth?: Auth
705 opts?: HandlerOpts
706 rateLimit?: HandlerRateLimitOpts<ReqCtx> | HandlerRateLimitOpts<ReqCtx>[]
707 handler: Handler
708 }
709type ExtractAuth<AV extends AuthVerifier | StreamAuthVerifier> = Extract<
710 Awaited<ReturnType<AV>>,
711 { credentials: unknown }
712>