Bluesky app fork with some witchin' additions 💫 forked from jollywhoppers.com/witchsky.app
Something went wrong. Try again.
TypeScript
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263import {Database, envToCfg, httpLogger, LinkService, readEnv} from './index.js'
async function main() { try { httpLogger.info('Starting blink service')
const env = readEnv() const cfg = envToCfg(env)
httpLogger.info( { port: cfg.service.port, safelinkEnabled: cfg.service.safelinkEnabled, hasDbUrl: !!cfg.db.url, hasDbMigrationUrl: !!cfg.db.migrationUrl, }, 'Configuration loaded', )
if (cfg.db.migrationUrl) { httpLogger.info('Running database migrations') const migrateDb = Database.postgres({ url: cfg.db.migrationUrl, schema: cfg.db.schema, }) await migrateDb.migrateToLatestOrThrow() await migrateDb.close() httpLogger.info('Database migrations completed') }
httpLogger.info('Creating LinkService') const link = await LinkService.create(cfg)
if (link.ctx.cfg.service.safelinkEnabled) { httpLogger.info('Starting Safelink client') link.ctx.safelinkClient.runFetchEvents() }
await link.start() httpLogger.info('Link service is running')
process.on('SIGTERM', async () => { httpLogger.info('Link service is stopping') await link.destroy() httpLogger.info('Link service is stopped') }) } catch (error) { httpLogger.error( { error: String(error), stack: error instanceof Error ? error.stack : undefined, }, 'Failed to start blink service', ) process.exit(1) }}
main().catch(error => { console.error('Unhandled startup error:', error) process.exit(1)})