UNPKG

@riddance/host

Version:

51 lines (50 loc) 1.68 kB
import { Context, Environment, Logger } from '../context.js'; import { FullConfiguration, Metadata } from './registry.js'; export type ClientInfo = { readonly operationId?: string; readonly clientId?: string; readonly clientIp?: string; readonly clientPort?: number; readonly userAgent?: string; }; export type EventMetadata = { topic: string; type: string; subject: string; id?: string; }; export type BufferedEvent = { eventTime: Date; meta: Omit<EventMetadata, 'topic'>; ids: ClientInfo; json?: string; }; export type EventTransport = { readonly publishRate: number; sendEvents(topic: string, events: BufferedEvent[], signal: AbortSignal): Promise<void>; }; export type LogLevel = 'trace' | 'debug' | 'info' | 'warning' | 'error' | 'fatal'; export type LogEntry = { readonly level: LogLevel; readonly timestamp: number; readonly message: string; readonly error: unknown; readonly json: string; }; export type LogTransport = { readonly publishRate?: number; sendEntries(entries: LogEntry[], signal: AbortSignal): Promise<void> | undefined; }; export type RootLogger = { enrichReserved(fields: object): RootLogger; flush(): Promise<void>; } & Logger; export declare function createContext(clientInfo: ClientInfo, loggers: LogTransport[], eventTransport: EventTransport, timeouts: { default: number; cap?: number; }, outerController: AbortController, config?: FullConfiguration, meta?: Metadata, environment?: Environment, now?: () => Date): { log: RootLogger; context: Omit<Context, 'log'>; success: () => Promise<unknown>; flush: () => Promise<void>; };