File size: 1,778 Bytes
cd8bd0a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
/**
 * SSE Logger β€” Thin wrapper around the shared Pino logger
 * for backward compatibility with existing SSE code.
 *
 * Migrated from direct console logging to structured Pino logging.
 */
import { createLogger, logger as rootLogger } from "@/shared/utils/logger";

const log = createLogger("sse");

export function debug(tag: string, message: string, data?: unknown) {
  log.debug({ tag, ...spreadData(data) }, message);
}

export function info(tag: string, message: string, data?: unknown) {
  log.info({ tag, ...spreadData(data) }, message);
}

export function warn(tag: string, message: string, data?: unknown) {
  log.warn({ tag, ...spreadData(data) }, message);
}

export function error(tag: string, message: string, data?: unknown) {
  log.error({ tag, ...spreadData(data) }, message);
}

export function request(method: string, path: string, extra?: unknown) {
  log.info({ tag: "HTTP", method, path, ...spreadData(extra) }, `πŸ“₯ ${method} ${path}`);
}

export function response(status: number, duration: number, extra?: unknown) {
  const level = status < 400 ? "info" : "error";
  log[level](
    { tag: "HTTP", status, duration, ...spreadData(extra) },
    `πŸ“€ ${status} (${duration}ms)`
  );
}

export function stream(event: string, data?: unknown) {
  log.debug({ tag: "STREAM", event, ...spreadData(data) }, `🌊 ${event}`);
}

// Mask sensitive data (kept for backward compat; prefer shared maskKey)
export { maskKey } from "@/shared/utils/formatting";

// Helper to spread data into structured fields
function spreadData(data: unknown): Record<string, unknown> {
  if (!data) return {};
  if (typeof data === "string") return { detail: data };
  if (typeof data === "object") return data as Record<string, unknown>;
  return { detail: String(data) };
}