Scratch space for learning atproto app development
1import { NodeOAuthClient } from '@atproto/oauth-client-node' 2import { Firehose } from '@atproto/sync' 3import { pino } from 'pino' 4 5import { createOAuthClient } from '#/auth/client' 6import { Database } from '#/db' 7import { createDb } from '#/db' 8import { 9 BidirectionalResolver, 10 createBidirectionalResolver, 11 createIdResolver, 12} from '#/id-resolver' 13import { createIngester } from '#/ingester' 14 15/** 16 * Application state passed to the router and elsewhere 17 */ 18export type AppContext = { 19 db: Database 20 ingester: Firehose 21 logger: pino.Logger 22 oauthClient: NodeOAuthClient 23 resolver: BidirectionalResolver 24} 25 26export async function createAppContext(): Promise<AppContext> { 27 const logger = pino({ name: 'server start' }) 28 29 const db = await createDb() 30 const oauthClient = await createOAuthClient(db) 31 const baseIdResolver = createIdResolver() 32 const ingester = createIngester(db, baseIdResolver) 33 const resolver = createBidirectionalResolver(baseIdResolver) 34 35 return { 36 db, 37 ingester, 38 logger, 39 oauthClient, 40 resolver, 41 } 42}