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 { createDb, Database } from '#/db' 7import { createIngester } from '#/ingester' 8 9/** 10 * Application state passed to the router and elsewhere 11 */ 12export type AppContext = { 13 db: Database 14 ingester: Firehose 15 logger: pino.Logger 16 oauthClient: NodeOAuthClient 17 identityResolver: NodeOAuthClient['identityResolver'] 18} 19 20export async function createAppContext(): Promise<AppContext> { 21 const db = await createDb() 22 const oauthClient = await createOAuthClient(db) 23 const ingester = createIngester(db) 24 const logger = pino({ name: 'server' }) 25 26 return { 27 db, 28 ingester, 29 logger, 30 oauthClient, 31 identityResolver: oauthClient.identityResolver, 32 } 33}