UNPKG

2.76 kBTypeScriptView Raw
1/// <reference types="node" />
2import type { AsyncLocalStorage } from 'async_hooks';
3export declare type JsonValue = JsonObject | JsonValue[] | boolean | number | string | null;
4export declare type JsonObject = {
5 [k: string]: JsonValue;
6};
7export declare type LogWriter = (message: string) => void;
8export declare type MessageContext<T = {}> = JsonObject & T;
9export declare type TopLevelAsyncLocalContext = {
10 messageContext: MessageContext;
11 transforms: ReadonlyArray<TransformMessageFunction<MessageContext>>;
12};
13export declare type NestedAsyncLocalContext = TopLevelAsyncLocalContext & {
14 sequence: number;
15 sequenceRoot: string;
16};
17export declare type AsyncLocalContext = NestedAsyncLocalContext | TopLevelAsyncLocalContext;
18export declare type MessageSerializer = (message: Message<MessageContext>) => string;
19export declare type RoarrGlobalState = {
20 asyncLocalStorage?: AsyncLocalStorage<AsyncLocalContext>;
21 sequence: number;
22 serializeMessage?: MessageSerializer;
23 versions: readonly string[];
24 write: LogWriter;
25};
26export declare type SprintfArgument = boolean | number | string | null;
27export declare type Message<T = MessageContext> = {
28 readonly context: T;
29 readonly message: string;
30 readonly sequence: string;
31 readonly time: number;
32 readonly version: string;
33};
34export declare type TransformMessageFunction<T> = (message: Message<T>) => Message<MessageContext>;
35export declare type LogMethod<Z> = {
36 <T extends string = string>(context: Z, message: T, c?: T extends `${string}%${string}` ? SprintfArgument : never, d?: SprintfArgument, e?: SprintfArgument, f?: SprintfArgument, g?: SprintfArgument, h?: SprintfArgument, i?: SprintfArgument, j?: SprintfArgument): void;
37 <T extends string = string>(message: T, b?: T extends `${string}%${string}` ? SprintfArgument : never, c?: SprintfArgument, d?: SprintfArgument, e?: SprintfArgument, f?: SprintfArgument, g?: SprintfArgument, h?: SprintfArgument, i?: SprintfArgument, j?: SprintfArgument): void;
38};
39declare type Child<Z> = {
40 <T = Z>(context: TransformMessageFunction<MessageContext<T>>): Logger<T | Z>;
41 (context: MessageContext): Logger<Z>;
42};
43export declare type Logger<Z = MessageContext> = LogMethod<Z> & {
44 adopt: <T>(routine: () => T, context?: MessageContext | TransformMessageFunction<MessageContext>) => Promise<T>;
45 child: Child<Z>;
46 debug: LogMethod<Z>;
47 error: LogMethod<Z>;
48 fatal: LogMethod<Z>;
49 getContext: () => MessageContext;
50 info: LogMethod<Z>;
51 trace: LogMethod<Z>;
52 warn: LogMethod<Z>;
53};
54export declare type MessageEventHandler = (message: Message<MessageContext>) => void;
55export declare type LogLevelName = 'trace' | 'debug' | 'info' | 'error' | 'fatal' | 'warn';
56export {};