import { type MutableObject } from "./common"; /** * 레이스 로거 생성을 위한 설정 속성 */ type CreateTraceProps = { xcToken: string | (() => string | Promise); /** NocoDB 서버의 기본 URL */ baseUrl: string; /** 로그를 저장할 NocoDB 테이블 ID */ tableId: string; /** 로그 엔트리를 구분하는 주제/태그 */ topic?: string; /** 로그 시간대 설정 (기본값: "Asia/Seoul") */ timezone?: string; }; /** * 레이스 로깅 중에 사용할 수 있는 유틸리티 함수들 */ type TraceUtils = { /** 표준 출력 메시지를 기록합니다 */ stdout: (...texts: (string | number | boolean)[]) => void; /** 오류 메시지를 기록합니다 */ stderr: (...texts: (string | number | boolean)[]) => void; /** 상세 정보 객체에 데이터를 추가합니다 */ assignDetail: (setObject: MutableObject) => MutableObject; /** 시작 시점부터 현재까지의 경과 시간을 밀리초 문자열로 반환합니다 */ get ms(): string; /** 시작 시점부터 현재까지의 경과 시간을 지정된 단위로 포맷하여 반환합니다 */ formatMs: (unit?: "ms" | "s" | "m" | "h") => string; }; /** * 트레이스 로거 함수 타입 - 실행 함수와 cloneWith 메서드를 포함 */ type TraceProc = { /** 주어진 함수를 실행하고 결과를 로깅합니다 */ (trace: (utils: TraceUtils) => any): Promise; /** 기존 설정을 기반으로 새로운 로거를 생성합니다 */ cloneWith: (overrides: Partial) => TraceProc; }; /** * NocoDB에 실행 로그를 기록하는 레이스 로거를 생성합니다. * * 이 함수는 API 엔드포인트나 비즈니스 로직의 실행 과정을 추적하고, * 실행 시간, 표준 출력, 오류, 상세 정보를 NocoDB 테이블에 자동으로 기록합니다. * * @param config - NocoDB 연결 및 로깅 설정 * @param config.xcToken - NocoDB 인증 토큰 (문자열) 또는 토큰을 반환하는 함수 * @param config.baseUrl - NocoDB 서버의 기본 URL (예: "https://nocodb.example.com") * @param config.tableId - 로그를 저장할 NocoDB 테이블 ID * @param config.topic - 로그 엔트리를 구분하는 주제/태그 * @param config.timezone - 로그 시간대 설정 (기본값: "Asia/Seoul") * * @returns TraceProc - 실행 가능한 로거 함수와 cloneWith 메서드를 포함한 객체 * * @example * ```typescript * // 기본 로거 생성 (UTC 타임존) * const logger = createTraceLoggerOnNocoDB({ * xcToken: "your-nocodb-token", * baseUrl: "https://nocodb.example.com", * tableId: "table_123", * topic: "user-api" * }); * * // 토큰을 함수로 제공하는 경우 * const dynamicLogger = createTraceLoggerOnNocoDB({ * xcToken: () => process.env.NOCODB_TOKEN || "fallback-token", * baseUrl: "https://nocodb.example.com", * tableId: "table_123", * topic: "user-api" * }); * * // 다른 타임존으로 로거 생성 * const utcLogger = createTraceLoggerOnNocoDB({ * xcToken: "your-nocodb-token", * baseUrl: "https://nocodb.example.com", * tableId: "table_123", * topic: "user-api", * timezone: "UTC" * }); * * // 사용법 * app.get("/users", async (c) => { * return logger(async (utils) => { * utils.stdout("사용자 목록 조회 시작", utils.ms); * const users = await getUserList(); * utils.assignDetail({ userCount: users.length }); * utils.stdout("조회 완료", utils.formatMs("ms")); * return c.json(users); * }); * }); * * // 다른 설정으로 복제 * const adminLogger = logger.cloneWith({ * topic: "admin-api", * timezone: "America/New_York" * }); * ``` * * @remarks * - 로깅 실패는 메인 로직을 중단시키지 않습니다 * - 기본 시간대는 Asia/Seoul이며, timezone 옵션으로 변경 가능합니다 * - NocoDB API 엔드포인트는 `/api/v2/tables/{tableId}/records` 형식을 사용합니다 */ export declare function createTraceLoggerOnNocoDB({ xcToken, baseUrl, tableId, topic, timezone }: CreateTraceProps): TraceProc; export {}; //# sourceMappingURL=createHook.d.ts.map