mirror of
https://github.com/ClaytonWWilson/stokpile.git
synced 2025-12-15 23:18:50 +00:00
Add callback output
This commit is contained in:
parent
abb548f5ec
commit
e094dd16a3
20
src/outputs/Callback.ts
Normal file
20
src/outputs/Callback.ts
Normal file
@ -0,0 +1,20 @@
|
||||
import { LogContext, LogMeta } from "../types/logger";
|
||||
import { Loggable } from "../interface/output";
|
||||
import { CallbackOutputConfig } from "../types/output";
|
||||
|
||||
export default class Callback implements Loggable {
|
||||
private callback:
|
||||
| ((message: string, meta: LogMeta, context: LogContext) => void)
|
||||
| ((message: string, meta: LogMeta, context: LogContext) => Promise<void>)
|
||||
| undefined;
|
||||
enabled: boolean;
|
||||
constructor(config: CallbackOutputConfig) {
|
||||
this.enabled = config.enabled;
|
||||
this.callback = config.callback;
|
||||
}
|
||||
write(message: string, meta: LogMeta, context: LogContext): void {
|
||||
if (this.callback) {
|
||||
this.callback(message, meta, context);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,3 +1,5 @@
|
||||
import { z } from "zod";
|
||||
|
||||
export enum LogLevel {
|
||||
TRACE = 10,
|
||||
DEBUG = 20,
|
||||
@ -14,14 +16,16 @@ export enum LogLabel {
|
||||
FATAL = "fatal",
|
||||
}
|
||||
|
||||
export interface LogContext {
|
||||
[key: string]: any;
|
||||
}
|
||||
export const LogContext = z.record(z.any());
|
||||
|
||||
export interface LogMeta {
|
||||
level: LogLevel;
|
||||
time: Date;
|
||||
}
|
||||
export type LogContext = z.infer<typeof LogContext>;
|
||||
|
||||
export const LogMeta = z.object({
|
||||
level: z.nativeEnum(LogLevel),
|
||||
time: z.date(),
|
||||
});
|
||||
|
||||
export type LogMeta = z.infer<typeof LogMeta>;
|
||||
|
||||
export interface LogData {
|
||||
message: string;
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
import { LogContext, LogMeta } from "logger";
|
||||
import { z } from "zod";
|
||||
|
||||
export const ConsoleStyles = z
|
||||
@ -123,3 +124,11 @@ export interface TampermonkeyBucketInfo {
|
||||
size: number;
|
||||
createdAt: number;
|
||||
}
|
||||
|
||||
export interface CallbackOutputConfig {
|
||||
enabled: boolean;
|
||||
callback:
|
||||
| ((message: string, meta: LogMeta, context: LogContext) => void)
|
||||
| ((message: string, meta: LogMeta, context: LogContext) => Promise<void>)
|
||||
| undefined;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user