AppView in a box as a Vite plugin thing hatk.dev
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

feat: add structured emit logging to XRPC handler dispatch

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

+10 -2
+10 -2
packages/hatk/src/xrpc.ts
··· 20 20 */ 21 21 import { resolve, relative } from 'node:path' 22 22 import { readdirSync, statSync } from 'node:fs' 23 - import { log } from './logger.ts' 23 + import { log, emit, timer } from './logger.ts' 24 24 import { 25 25 querySQL, 26 26 runSQL, ··· 304 304 ): Promise<any | null> { 305 305 const handler = handlers.get(name) 306 306 if (!handler) return null 307 - return handler.execute(params, cursor, limit, viewer || null, input) 307 + const elapsed = timer() 308 + try { 309 + const result = await handler.execute(params, cursor, limit, viewer || null, input) 310 + emit('xrpc', name, { duration_ms: elapsed(), params, cursor, limit, viewer: viewer?.did }) 311 + return result 312 + } catch (err: any) { 313 + emit('xrpc', name, { duration_ms: elapsed(), params, cursor, limit, viewer: viewer?.did, error: err.message }) 314 + throw err 315 + } 308 316 } 309 317 310 318 /** Call a registered XRPC handler directly (no HTTP). For use in SSR renderers. */