- Split llmModerationClient.ts (2170 lines) into 5 focused sub-modules - Split aiAnalyzer.ts (1282 lines) into 4 modular pipelines - Split messages.db.ts (826 lines) into 5 domain-specific modules - Moved shared schema to @bete/shared, eliminated backend duplication - Added createChildLogger to all voice-recording and AI moderation modules - Extracted tryCommandThenFallback, normalizeMediaState, DEFAULT_VOICE_STATUS - Created shared pagination.ts utility, eliminated 5+ cursor-pagination duplications - Created shared messageMapper.ts for row mapping - Standardized backend error handling with asyncHandler - Added frontend createLogger utility and useAsyncAction hook - Added structured logging to frontend hooks, socket, and API client Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
23 lines
790 B
TypeScript
23 lines
790 B
TypeScript
// ─── Client-side structured logger ────────────────────────────────────────
|
|
|
|
const LOG_PREFIX = "[Bete]";
|
|
|
|
export function createLogger(context: string) {
|
|
const prefix = `${LOG_PREFIX} [${context}]`;
|
|
|
|
return {
|
|
debug: (msg: string, data?: Record<string, unknown>) => {
|
|
if (import.meta.env.DEV) console.debug(prefix, msg, data ?? "");
|
|
},
|
|
info: (msg: string, data?: Record<string, unknown>) => {
|
|
console.info(prefix, msg, data ?? "");
|
|
},
|
|
warn: (msg: string, data?: Record<string, unknown>) => {
|
|
console.warn(prefix, msg, data ?? "");
|
|
},
|
|
error: (msg: string, data?: Record<string, unknown>) => {
|
|
console.error(prefix, msg, data ?? "");
|
|
},
|
|
};
|
|
}
|