halua 3.0.0 → 4.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.d.ts CHANGED
@@ -1,157 +1,232 @@
1
- declare enum Level {
2
- Trace = "TRACE",
3
- Debug = "DEBUG",
4
- Info = "INFO",
5
- Notice = "NOTICE",
6
- Warn = "WARN",
7
- Error = "ERROR",
8
- Fatal = "FATAL"
9
- }
10
- type LogLevel = string;
11
-
12
- interface HandlerExecuteMeta {
13
- timestamp: number;
14
- level: LogLevel;
15
- }
16
- interface Handler {
17
- /** indicates min level to log */
18
- level: LogLevel | undefined;
19
- /** indicates exact levels to log */
20
- exact: Array<LogLevel> | null;
21
- /** indicates if objects should contain spaces and tabs */
22
- spacing?: boolean;
23
- printTimestamp?: boolean;
24
- printLevel?: boolean;
25
- execute: (meta: HandlerExecuteMeta) => Generator<YieldMessage, void, NextMessage>;
26
- formatArg?: (value: any) => any;
27
- formatTimestamp?: (value: number) => string;
28
- }
29
- interface BaseHandlerOptions {
30
- level?: LogLevel;
31
- exact?: LogLevel | Array<LogLevel>;
32
- spacing?: boolean;
33
- printTimestamp?: boolean;
34
- printLevel?: boolean;
35
- }
36
- interface NextMessage {
37
- type: NextMessageType;
38
- value: any;
39
- prev?: string;
40
- }
41
- interface YieldMessage {
42
- type: YieldMessageType;
43
- }
44
- type YieldMessageType = "pass" | "done" | "init";
45
- type NextMessageType = "arg" | "done" | "init";
46
-
47
- interface HaluaLogger {
48
- create: {
49
- (handler: PassedHandler): HaluaLogger;
50
- (options: HaluaOptions): HaluaLogger;
51
- (arg1?: PassedHandler | HaluaOptions, options?: HaluaOptions): HaluaLogger;
52
- };
53
- child: (...args: any[]) => HaluaLogger;
54
- setHandlers: (handler: PassedHandler) => void;
55
- appendHandlers: (handler: PassedHandler) => void;
56
- logTo: (level: LogLevel, ...args: any[]) => void;
57
- trace: (...args: any[]) => void;
58
- debug: (...args: any[]) => void;
59
- info: (...args: any[]) => void;
60
- warn: (...args: any[]) => void;
61
- notice: (...args: any[]) => void;
62
- error: (...args: any[]) => void;
63
- fatal: (...args: any[]) => void;
64
- assert: (assertion: boolean, ...args: any[]) => void;
65
- }
66
- interface HaluaOptions {
67
- level?: LogLevel;
68
- withArgs?: Array<any>;
69
- }
70
- type PassedHandler = (() => Handler) | Array<() => Handler>;
71
-
72
- declare class Halua implements HaluaLogger {
73
- private options;
74
- private readonly passedHandlers;
75
- private handlers;
76
- private balancer;
77
- constructor(passed: PassedHandler, options?: HaluaOptions);
78
- create(arg1?: PassedHandler | HaluaOptions, arg2?: HaluaOptions | undefined): HaluaLogger;
79
- child(...args: any[]): HaluaLogger;
80
- setHandlers(handler: PassedHandler): void;
81
- appendHandlers(handler: PassedHandler): void;
82
- logTo(level: LogLevel, ...args: any[]): void;
83
- trace(...args: any[]): void;
84
- debug(...args: any[]): void;
85
- info(...args: any[]): void;
86
- warn(...args: any[]): void;
87
- notice(...args: any[]): void;
88
- error(...args: any[]): void;
89
- fatal(...args: any[]): void;
90
- assert(assertion: boolean, ...args: any[]): void;
91
- private updateBalancer;
92
- private sendToBalancer;
93
- private supposeIsHandler;
94
- private buildHandlers;
95
- private bindMethods;
96
- }
97
-
98
- type SendMethod = (data: string) => void;
99
-
100
- interface OutputConsole {
101
- debug: (...args: any[]) => void;
102
- info: (...args: any[]) => void;
103
- warn: (...args: any[]) => void;
104
- error: (...args: any[]) => void;
105
- }
106
- interface ConsoleHandlerOptions extends Omit<BaseHandlerOptions, "spacing"> {
107
- }
108
- declare function NewConsoleHandler(console: OutputConsole, options?: ConsoleHandlerOptions): () => {
109
- level: LogLevel | undefined;
110
- exact: Array<LogLevel> | null;
111
- readonly console: OutputConsole;
112
- readonly formatArg: (arg: any) => any;
113
- applyOptionalOptions(options: ConsoleHandlerOptions): void;
114
- execute(meta: {
115
- timestamp: number;
116
- level: string;
117
- }): Generator<YieldMessage, void, NextMessage>;
118
- sendMethod: SendMethod;
119
- printTimestamp: boolean;
120
- printLevel: boolean;
121
- formatTimestamp(t: number): string;
122
- };
123
-
124
- interface JSONLogHandlerOptions extends BaseHandlerOptions {
125
- }
126
- declare function NewJSONHandler(send: (data: string) => void, options?: JSONLogHandlerOptions): () => {
127
- level: LogLevel | undefined;
128
- exact: Array<LogLevel> | null;
129
- readonly formatArg: (arg: any) => string;
130
- execute(meta: HandlerExecuteMeta): Generator<YieldMessage, void, NextMessage>;
131
- formatTimestamp(t: number): string;
132
- applyOptionalOptions(options: JSONLogHandlerOptions): void;
133
- sendMethod: SendMethod;
134
- printTimestamp: boolean;
135
- printLevel: boolean;
136
- };
137
-
138
- interface TextLogHandlerOptions extends BaseHandlerOptions {
139
- }
140
- declare function NewTextHandler(send: (data: string) => void, options?: TextLogHandlerOptions): () => {
141
- level: LogLevel | undefined;
142
- exact: Array<LogLevel> | null;
143
- readonly formatArg: (value: any) => string;
144
- applyOptionalOptions(options: TextLogHandlerOptions): void;
145
- sendMethod: SendMethod;
146
- printTimestamp: boolean;
147
- printLevel: boolean;
148
- execute(meta: {
149
- timestamp: number;
150
- level: string;
151
- }): Generator<YieldMessage, void, NextMessage>;
152
- formatTimestamp(t: number): string;
153
- };
154
-
155
- declare const halua: Halua;
156
-
157
- export { type HaluaLogger, type Handler, Level, NewConsoleHandler, NewJSONHandler, NewTextHandler, halua };
1
+ declare interface Argument {
2
+ type: ArgumentType;
3
+ value: any;
4
+ }
5
+
6
+ declare type ArgumentType = "undefined" | "null" | "boolean" | "string" | "number" | "array" | "object" | "symbol" | "typedarray" | "arraybuffer" | "bigint" | "map" | "set" | "weakmap" | "weakset" | "date" | "nan" | "infinity" | "function" | "error";
7
+
8
+ declare interface BaseDispatcherOptions {
9
+ level?: LogLevel;
10
+ exact?: LogLevel | Array<LogLevel>;
11
+ spacing?: boolean;
12
+ printTimestamp?: boolean;
13
+ printLevel?: boolean;
14
+ /** RegExp for redacting sensitive data (keys in objs/maps + content matches in strings). Takes precedence over any logger-level redactDataRegExp. */
15
+ redactDataRegExp?: RegExp;
16
+ }
17
+
18
+ declare interface ConsoleDispatcherOptions extends Omit<BaseDispatcherOptions, "spacing"> {
19
+ }
20
+
21
+ export declare interface ConsoleLike {
22
+ debug: (...args: any[]) => void;
23
+ info: (...args: any[]) => void;
24
+ warn: (...args: any[]) => void;
25
+ error: (...args: any[]) => void;
26
+ }
27
+
28
+ /**
29
+ * Default RegExp for redacting sensitive data in logs.
30
+ * Matches common sensitive key names (e.g. password, apiKey, token, email, ssn)
31
+ * via substring (for camelCase/snake_case keys) and common sensitive value patterns
32
+ * (JWTs, emails, SSNs, credit cards, bearer tokens).
33
+ * Use with `redactDataRegExp` option on loggers or dispatchers.
34
+ */
35
+ export declare const DefaultRedactRegExp: RegExp;
36
+
37
+ export declare interface Dispatcher {
38
+ /** indicates min level to log */
39
+ level: LogLevel | undefined;
40
+ /** indicates exact levels to log */
41
+ exact: Array<LogLevel> | null;
42
+ /** indicates if objects should contain spaces and tabs */
43
+ spacing?: boolean;
44
+ printTimestamp?: boolean;
45
+ printLevel?: boolean;
46
+ /** RegExp for redacting sensitive data in this dispatcher's output (takes precedence over logger-level) */
47
+ redactDataRegExp?: RegExp;
48
+ /** primary dispatch: receives the execution meta, the primary log values (args), and optional errorMeta
49
+ * (only populated for calls that went through .error(err, meta) or .assert(cond, err, meta)).
50
+ * The errorMeta is deliberately kept separate from args so it does not pollute the "log values" list
51
+ * and can be rendered specially by Text/JSON/Console dispatchers (e.g. top-level "meta" field in JSON).
52
+ */
53
+ dispatch: (meta: DispatcherExecuteMeta, args: any[], errorMeta?: Record<string, any>) => void;
54
+ formatArg?: (value: any) => any;
55
+ formatTimestamp?: (value: number) => string;
56
+ }
57
+
58
+ export declare class DispatcherBase implements Dispatcher {
59
+ sendMethod: SendMethod;
60
+ formatArg: ((value: any) => any) | undefined;
61
+ level: LogLevel | undefined;
62
+ exact: Array<LogLevel> | null;
63
+ printTimestamp: boolean;
64
+ printLevel: boolean;
65
+ redactDataRegExp?: RegExp;
66
+ _lastTimestampSec: number;
67
+ _lastTimestampStr: string;
68
+ constructor(send?: SendMethod, options?: BaseDispatcherOptions);
69
+ dispatch(meta: DispatcherExecuteMeta, args: any[], errorMeta?: Record<string, any>): void;
70
+ formatTimestamp(t: number): string;
71
+ }
72
+
73
+ declare interface DispatcherExecuteMeta {
74
+ timestamp: number;
75
+ level: LogLevel;
76
+ /** optional default redact regexp from the logger instance (per-dispatcher options override it) */
77
+ redactDataRegExp?: RegExp;
78
+ }
79
+
80
+ export declare function format(arg: Argument, spacing?: boolean): string;
81
+
82
+ export declare function getType(arg: any): ArgumentType;
83
+
84
+ declare class Halua<ErrorMeta = Record<string, any>> implements HaluaLogger<ErrorMeta> {
85
+ private options;
86
+ private readonly passedDispatchers;
87
+ private dispatchers;
88
+ private balancer;
89
+ private stamps;
90
+ constructor(passed: PassedDispatcher, options?: HaluaOptions);
91
+ create<EM = ErrorMeta>(arg1?: PassedDispatcher | HaluaOptions, arg2?: HaluaOptions | undefined): HaluaLogger<EM>;
92
+ child(...args: any[]): HaluaLogger<ErrorMeta>;
93
+ setDispatchers(dispatcher: PassedDispatcher): void;
94
+ appendDispatchers(dispatcher: PassedDispatcher): void;
95
+ logTo(level: LogLevel, ...args: any[]): void;
96
+ trace(...args: any[]): void;
97
+ debug(...args: any[]): void;
98
+ info(...args: any[]): void;
99
+ warn(...args: any[]): void;
100
+ notice(...args: any[]): void;
101
+ error(error: unknown, meta?: ErrorMeta): void;
102
+ fatal(...args: any[]): void;
103
+ assert(assertion: boolean, error: unknown, meta?: ErrorMeta): void;
104
+ stamp(label: string, id?: any): () => void;
105
+ stampEnd(id: any): void;
106
+ private endStamp;
107
+ private updateBalancer;
108
+ private sendToBalancer;
109
+ private supposeIsDispatcher;
110
+ private isDispatcherSpec;
111
+ private buildDispatchers;
112
+ private bindMethods;
113
+ }
114
+
115
+ export declare const halua: Halua<Record<string, any>>;
116
+
117
+ export declare interface HaluaLogger<ErrorMeta = Record<string, any>> {
118
+ create: {
119
+ <EM = ErrorMeta>(dispatcher: PassedDispatcher): HaluaLogger<EM>;
120
+ <EM = ErrorMeta>(options: HaluaOptions): HaluaLogger<EM>;
121
+ <EM = ErrorMeta>(arg1?: PassedDispatcher | HaluaOptions, options?: HaluaOptions): HaluaLogger<EM>;
122
+ };
123
+ child: (...args: any[]) => HaluaLogger<ErrorMeta>;
124
+ setDispatchers: (dispatcher: PassedDispatcher) => void;
125
+ appendDispatchers: (dispatcher: PassedDispatcher) => void;
126
+ logTo: (level: LogLevel, ...args: any[]) => void;
127
+ trace: (...args: any[]) => void;
128
+ debug: (...args: any[]) => void;
129
+ info: (...args: any[]) => void;
130
+ warn: (...args: any[]) => void;
131
+ notice: (...args: any[]) => void;
132
+ error: (error: unknown, meta?: ErrorMeta) => void;
133
+ fatal: (...args: any[]) => void;
134
+ assert: (assertion: boolean, error: unknown, meta?: ErrorMeta) => void;
135
+ stamp: (label: string, id?: any) => () => void;
136
+ stampEnd: (id: any) => void;
137
+ }
138
+
139
+ declare interface HaluaOptions {
140
+ level?: LogLevel;
141
+ withArgs?: Array<any>;
142
+ /** RegExp used to redact sensitive data (keys in objects/maps, content in strings). Overrides per-dispatcher if set on dispatcher. */
143
+ redactDataRegExp?: RegExp;
144
+ }
145
+
146
+ export declare enum Level {
147
+ Trace = "TRACE",
148
+ Debug = "DEBUG",
149
+ Info = "INFO",
150
+ Notice = "NOTICE",
151
+ Warn = "WARN",
152
+ Error = "ERROR",
153
+ Fatal = "FATAL"
154
+ }
155
+
156
+ declare type LogLevel = string;
157
+
158
+ export declare function NewConsoleColoredDispatcher(console: ConsoleLike, options?: ConsoleDispatcherOptions): () => {
159
+ readonly console: ConsoleLike;
160
+ dispatch(meta: DispatcherExecuteMeta, rawArgs: any[], errorMeta?: Record<string, any>): void;
161
+ sendMethod: SendMethod;
162
+ formatArg: ((value: any) => any) | undefined;
163
+ level: LogLevel | undefined;
164
+ exact: Array< LogLevel> | null;
165
+ printTimestamp: boolean;
166
+ printLevel: boolean;
167
+ redactDataRegExp?: RegExp;
168
+ _lastTimestampSec: number;
169
+ _lastTimestampStr: string;
170
+ formatTimestamp(t: number): string;
171
+ };
172
+
173
+ export declare function NewConsoleDispatcher(console: ConsoleLike, options?: ConsoleDispatcherOptions): () => {
174
+ readonly console: ConsoleLike;
175
+ dispatch(meta: DispatcherExecuteMeta, rawArgs: any[], errorMeta?: Record<string, any>): void;
176
+ sendMethod: SendMethod;
177
+ formatArg: ((value: any) => any) | undefined;
178
+ level: LogLevel | undefined;
179
+ exact: Array< LogLevel> | null;
180
+ printTimestamp: boolean;
181
+ printLevel: boolean;
182
+ redactDataRegExp?: RegExp;
183
+ _lastTimestampSec: number;
184
+ _lastTimestampStr: string;
185
+ formatTimestamp(t: number): string;
186
+ };
187
+
188
+ export declare function NewJSONDispatcher(send: (data: string, errorMeta?: Record<string, any>) => void, options?: BaseDispatcherOptions): () => {
189
+ dispatch(meta: DispatcherExecuteMeta, rawArgs: any[], errorMeta?: Record<string, any>): void;
190
+ formatTimestamp(t: number): string;
191
+ sendMethod: SendMethod;
192
+ formatArg: ((value: any) => any) | undefined;
193
+ level: LogLevel | undefined;
194
+ exact: Array< LogLevel> | null;
195
+ printTimestamp: boolean;
196
+ printLevel: boolean;
197
+ redactDataRegExp?: RegExp;
198
+ _lastTimestampSec: number;
199
+ _lastTimestampStr: string;
200
+ };
201
+
202
+ export declare function NewTextDispatcher(send: (data: string, errorMeta?: Record<string, any>) => void, options?: BaseDispatcherOptions): () => {
203
+ sendMethod: SendMethod;
204
+ formatArg: ((value: any) => any) | undefined;
205
+ level: LogLevel | undefined;
206
+ exact: Array< LogLevel> | null;
207
+ printTimestamp: boolean;
208
+ printLevel: boolean;
209
+ redactDataRegExp?: RegExp;
210
+ _lastTimestampSec: number;
211
+ _lastTimestampStr: string;
212
+ dispatch(meta: DispatcherExecuteMeta, args: any[], errorMeta?: Record<string, any>): void;
213
+ formatTimestamp(t: number): string;
214
+ };
215
+
216
+ declare type PassedDispatcher = (() => Dispatcher) | Array<() => Dispatcher>;
217
+
218
+ /**
219
+ * Recursively redacts sensitive data from a value according to regexp.
220
+ * - Strings (and strings inside arrays): matched substrings replaced by "^_^"
221
+ * - Objects/Maps: if *key* matches regexp, the corresponding value is replaced by "^_^" entirely
222
+ * - Handles circulars safely (returns "[Circular]")
223
+ * - Also redacts inside Error messages
224
+ * - Other types passed through
225
+ */
226
+ export declare function redact(value: any, regexp?: RegExp): any;
227
+
228
+ declare type SendMethod = (data: string, errorMeta?: Record<string, any>) => void;
229
+
230
+ export declare function toJSONValue(value: any): any;
231
+
232
+ export { }