@riddance/host
Version:
38 lines (37 loc) • 1.51 kB
TypeScript
import { Context, Environment, Logger, type JsonSafeObject } from '../context.js';
import type { FullConfiguration, Metadata } from './meta.js';
export type ClientInfo = {
readonly operationId?: string;
readonly clientId?: string;
readonly clientIp?: string;
readonly clientPort?: number;
readonly userAgent?: string;
};
export type EventTransport = {
sendEvent(topic: string, type: string, subject: string, data: JsonSafeObject | undefined, messageId: string | undefined, 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 | void;
};
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?: Partial<Environment>, now?: () => Date): {
log: RootLogger;
context: Omit<Context, 'log'>;
success: () => Promise<unknown>;
flush: () => Promise<void>;
};