halua 1.0.0 → 2.0.0

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.cts CHANGED
@@ -1,18 +1,3 @@
1
- interface Handler {
2
- skipDeepCopyWhenSendingLog?: boolean;
3
- level?: LogLevel;
4
- exact?: Array<LogLevel>;
5
- log: (log: Log) => void;
6
- }
7
- interface Log {
8
- timestamp: number | string;
9
- level: LogLevel;
10
- leveling?: [Level, number];
11
- args: Array<any>;
12
- messageFormat?: string;
13
- assertion?: boolean;
14
- withArgs?: null | Array<any>;
15
- }
16
1
  declare enum Level {
17
2
  Trace = "TRACE",
18
3
  Debug = "DEBUG",
@@ -24,22 +9,50 @@ declare enum Level {
24
9
  }
25
10
  type LogLevel = string;
26
11
 
27
- interface HaluaOptions {
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 {
28
30
  level?: LogLevel;
29
- withArgs?: Array<any>;
30
- messageFormat?: string;
31
- errorPolicy?: "throw" | "pass";
31
+ exact?: LogLevel | Array<LogLevel>;
32
+ spacing?: boolean;
33
+ printTimestamp?: boolean;
34
+ printLevel?: boolean;
32
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
+
33
47
  interface HaluaLogger {
34
48
  New: {
35
49
  (handler: PassedHandler): HaluaLogger;
36
50
  (options: HaluaOptions): HaluaLogger;
37
- (arg1?: PassedHandler | HaluaOptions, arg2?: HaluaOptions): HaluaLogger;
51
+ (arg1?: PassedHandler | HaluaOptions, options?: HaluaOptions): HaluaLogger;
38
52
  };
39
53
  With: (...args: any[]) => HaluaLogger;
40
- withMessageFormat: (format: string) => HaluaLogger;
41
- setHandler: (handler: PassedHandler) => void;
42
- appendHandler: (handler: () => Handler) => void;
54
+ setHandlers: (handler: PassedHandler) => void;
55
+ appendHandlers: (handler: PassedHandler) => void;
43
56
  logTo: (level: LogLevel, ...args: any[]) => void;
44
57
  trace: (...args: any[]) => void;
45
58
  debug: (...args: any[]) => void;
@@ -50,19 +63,22 @@ interface HaluaLogger {
50
63
  fatal: (...args: any[]) => void;
51
64
  assert: (assertion: boolean, ...args: any[]) => void;
52
65
  }
66
+ interface HaluaOptions {
67
+ level?: LogLevel;
68
+ withArgs?: Array<any>;
69
+ }
53
70
  type PassedHandler = (() => Handler) | Array<() => Handler>;
54
71
 
55
72
  declare class Halua implements HaluaLogger {
56
73
  private options;
57
- private handlers;
58
74
  private readonly passedHandlers;
75
+ private handlers;
59
76
  private balancer;
60
77
  constructor(passed: PassedHandler, options?: HaluaOptions);
61
78
  New(arg1?: PassedHandler | HaluaOptions, arg2?: HaluaOptions | undefined): HaluaLogger;
62
79
  With(...args: any[]): HaluaLogger;
63
- withMessageFormat(f: string): HaluaLogger;
64
- setHandler(handler: PassedHandler): void;
65
- appendHandler(handler: () => Handler): void;
80
+ setHandlers(handler: PassedHandler): void;
81
+ appendHandlers(handler: PassedHandler): void;
66
82
  logTo(level: LogLevel, ...args: any[]): void;
67
83
  trace(...args: any[]): void;
68
84
  debug(...args: any[]): void;
@@ -73,74 +89,69 @@ declare class Halua implements HaluaLogger {
73
89
  fatal(...args: any[]): void;
74
90
  assert(assertion: boolean, ...args: any[]): void;
75
91
  private updateBalancer;
76
- private sendToHandler;
77
- private composeLog;
78
- private validateHandlers;
92
+ private sendToBalancer;
79
93
  private supposeIsHandler;
80
- private unlinkInheritance;
81
94
  private buildHandlers;
95
+ private bindMethods;
82
96
  }
83
97
 
84
- type ColorKey = "grey" | "green" | "blue" | "purple" | "orange" | "red";
85
- type Colors = Map<ColorKey, string>;
98
+ type SendMethod = (data: string) => void;
86
99
 
87
- interface WebConsoleLogHandler extends Handler {
88
- setDateGetter: (getter: (timestamp: number) => string) => void;
89
- messageFormat: Array<string>;
90
- }
91
- interface ConsoleLogHandlerConsole {
100
+ interface OutputConsole {
92
101
  debug: (...args: any[]) => void;
93
102
  info: (...args: any[]) => void;
94
103
  warn: (...args: any[]) => void;
95
104
  error: (...args: any[]) => void;
96
105
  }
97
- interface WebConsoleHandlerOptions {
98
- /** customize date output */
99
- dateGetter?: (timestamp: number) => string;
100
- /** turn prettification on, adds colors to console output */
101
- pretty?: boolean;
102
- linkArguments?: boolean;
103
- /** default: true, get browser theme with window.matchMedia */
104
- fetchBrowserThemeOnInstanceCreation?: boolean;
105
- /** provide custom colors map */
106
- customColors?: Colors;
107
- messageFormat?: string;
108
- useWarn?: boolean;
109
- useError?: boolean;
110
- level?: LogLevel;
111
- exact?: LogLevel | Array<LogLevel>;
106
+ interface ConsoleHandlerOptions extends Omit<BaseHandlerOptions, "spacing"> {
112
107
  }
113
- declare function NewWebConsoleHandler(c?: ConsoleLogHandlerConsole, options?: WebConsoleHandlerOptions): () => WebConsoleLogHandler;
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
+ };
114
123
 
115
- interface JSONLogHandler extends Handler {
116
- setDateGetter: (getter: (timestamp: number) => string) => void;
117
- }
118
- interface JSONLogHandlerOptions {
119
- /** change timestamp output */
120
- dateGetter?: (timestamp: number) => string;
121
- /** replace value during stringify, return null to fallback on JSONHandler replacer */
122
- replaceBeforeStringify?: (value: any) => any;
123
- stringifier?: (value: any, replace: (value: any) => any) => string;
124
- linkArguments?: boolean;
125
- level?: LogLevel;
126
- exact?: LogLevel | Array<LogLevel>;
124
+ interface JSONLogHandlerOptions extends BaseHandlerOptions {
127
125
  }
128
- declare function NewJSONHandler(send: (data: string) => void, options?: JSONLogHandlerOptions): () => JSONLogHandler;
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
+ };
129
137
 
130
- interface TextLogHandler extends Handler {
131
- }
132
- interface TextLogHandlerOptions {
133
- linkArguments?: boolean;
134
- messageFormat?: string;
135
- /** replace value during stringify, return null to fallback on JSONHandler replacer */
136
- replaceBeforeStringify?: (value: any) => any;
137
- /** func to stringify a value */
138
- stringifier?: (value: any) => string;
139
- level?: LogLevel;
140
- exact?: LogLevel | Array<LogLevel>;
138
+ interface TextLogHandlerOptions extends BaseHandlerOptions {
141
139
  }
142
- declare function NewTextHandler(send: (data: string) => void, options?: TextLogHandlerOptions): () => TextLogHandler;
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
+ };
143
154
 
144
155
  declare const halua: Halua;
145
156
 
146
- export { type HaluaLogger, type Handler, Level, type Log, NewJSONHandler, NewTextHandler, NewWebConsoleHandler, halua };
157
+ export { type HaluaLogger, type Handler, Level, NewConsoleHandler, NewJSONHandler, NewTextHandler, halua };
package/lib/index.d.ts CHANGED
@@ -1,18 +1,3 @@
1
- interface Handler {
2
- skipDeepCopyWhenSendingLog?: boolean;
3
- level?: LogLevel;
4
- exact?: Array<LogLevel>;
5
- log: (log: Log) => void;
6
- }
7
- interface Log {
8
- timestamp: number | string;
9
- level: LogLevel;
10
- leveling?: [Level, number];
11
- args: Array<any>;
12
- messageFormat?: string;
13
- assertion?: boolean;
14
- withArgs?: null | Array<any>;
15
- }
16
1
  declare enum Level {
17
2
  Trace = "TRACE",
18
3
  Debug = "DEBUG",
@@ -24,22 +9,50 @@ declare enum Level {
24
9
  }
25
10
  type LogLevel = string;
26
11
 
27
- interface HaluaOptions {
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 {
28
30
  level?: LogLevel;
29
- withArgs?: Array<any>;
30
- messageFormat?: string;
31
- errorPolicy?: "throw" | "pass";
31
+ exact?: LogLevel | Array<LogLevel>;
32
+ spacing?: boolean;
33
+ printTimestamp?: boolean;
34
+ printLevel?: boolean;
32
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
+
33
47
  interface HaluaLogger {
34
48
  New: {
35
49
  (handler: PassedHandler): HaluaLogger;
36
50
  (options: HaluaOptions): HaluaLogger;
37
- (arg1?: PassedHandler | HaluaOptions, arg2?: HaluaOptions): HaluaLogger;
51
+ (arg1?: PassedHandler | HaluaOptions, options?: HaluaOptions): HaluaLogger;
38
52
  };
39
53
  With: (...args: any[]) => HaluaLogger;
40
- withMessageFormat: (format: string) => HaluaLogger;
41
- setHandler: (handler: PassedHandler) => void;
42
- appendHandler: (handler: () => Handler) => void;
54
+ setHandlers: (handler: PassedHandler) => void;
55
+ appendHandlers: (handler: PassedHandler) => void;
43
56
  logTo: (level: LogLevel, ...args: any[]) => void;
44
57
  trace: (...args: any[]) => void;
45
58
  debug: (...args: any[]) => void;
@@ -50,19 +63,22 @@ interface HaluaLogger {
50
63
  fatal: (...args: any[]) => void;
51
64
  assert: (assertion: boolean, ...args: any[]) => void;
52
65
  }
66
+ interface HaluaOptions {
67
+ level?: LogLevel;
68
+ withArgs?: Array<any>;
69
+ }
53
70
  type PassedHandler = (() => Handler) | Array<() => Handler>;
54
71
 
55
72
  declare class Halua implements HaluaLogger {
56
73
  private options;
57
- private handlers;
58
74
  private readonly passedHandlers;
75
+ private handlers;
59
76
  private balancer;
60
77
  constructor(passed: PassedHandler, options?: HaluaOptions);
61
78
  New(arg1?: PassedHandler | HaluaOptions, arg2?: HaluaOptions | undefined): HaluaLogger;
62
79
  With(...args: any[]): HaluaLogger;
63
- withMessageFormat(f: string): HaluaLogger;
64
- setHandler(handler: PassedHandler): void;
65
- appendHandler(handler: () => Handler): void;
80
+ setHandlers(handler: PassedHandler): void;
81
+ appendHandlers(handler: PassedHandler): void;
66
82
  logTo(level: LogLevel, ...args: any[]): void;
67
83
  trace(...args: any[]): void;
68
84
  debug(...args: any[]): void;
@@ -73,74 +89,69 @@ declare class Halua implements HaluaLogger {
73
89
  fatal(...args: any[]): void;
74
90
  assert(assertion: boolean, ...args: any[]): void;
75
91
  private updateBalancer;
76
- private sendToHandler;
77
- private composeLog;
78
- private validateHandlers;
92
+ private sendToBalancer;
79
93
  private supposeIsHandler;
80
- private unlinkInheritance;
81
94
  private buildHandlers;
95
+ private bindMethods;
82
96
  }
83
97
 
84
- type ColorKey = "grey" | "green" | "blue" | "purple" | "orange" | "red";
85
- type Colors = Map<ColorKey, string>;
98
+ type SendMethod = (data: string) => void;
86
99
 
87
- interface WebConsoleLogHandler extends Handler {
88
- setDateGetter: (getter: (timestamp: number) => string) => void;
89
- messageFormat: Array<string>;
90
- }
91
- interface ConsoleLogHandlerConsole {
100
+ interface OutputConsole {
92
101
  debug: (...args: any[]) => void;
93
102
  info: (...args: any[]) => void;
94
103
  warn: (...args: any[]) => void;
95
104
  error: (...args: any[]) => void;
96
105
  }
97
- interface WebConsoleHandlerOptions {
98
- /** customize date output */
99
- dateGetter?: (timestamp: number) => string;
100
- /** turn prettification on, adds colors to console output */
101
- pretty?: boolean;
102
- linkArguments?: boolean;
103
- /** default: true, get browser theme with window.matchMedia */
104
- fetchBrowserThemeOnInstanceCreation?: boolean;
105
- /** provide custom colors map */
106
- customColors?: Colors;
107
- messageFormat?: string;
108
- useWarn?: boolean;
109
- useError?: boolean;
110
- level?: LogLevel;
111
- exact?: LogLevel | Array<LogLevel>;
106
+ interface ConsoleHandlerOptions extends Omit<BaseHandlerOptions, "spacing"> {
112
107
  }
113
- declare function NewWebConsoleHandler(c?: ConsoleLogHandlerConsole, options?: WebConsoleHandlerOptions): () => WebConsoleLogHandler;
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
+ };
114
123
 
115
- interface JSONLogHandler extends Handler {
116
- setDateGetter: (getter: (timestamp: number) => string) => void;
117
- }
118
- interface JSONLogHandlerOptions {
119
- /** change timestamp output */
120
- dateGetter?: (timestamp: number) => string;
121
- /** replace value during stringify, return null to fallback on JSONHandler replacer */
122
- replaceBeforeStringify?: (value: any) => any;
123
- stringifier?: (value: any, replace: (value: any) => any) => string;
124
- linkArguments?: boolean;
125
- level?: LogLevel;
126
- exact?: LogLevel | Array<LogLevel>;
124
+ interface JSONLogHandlerOptions extends BaseHandlerOptions {
127
125
  }
128
- declare function NewJSONHandler(send: (data: string) => void, options?: JSONLogHandlerOptions): () => JSONLogHandler;
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
+ };
129
137
 
130
- interface TextLogHandler extends Handler {
131
- }
132
- interface TextLogHandlerOptions {
133
- linkArguments?: boolean;
134
- messageFormat?: string;
135
- /** replace value during stringify, return null to fallback on JSONHandler replacer */
136
- replaceBeforeStringify?: (value: any) => any;
137
- /** func to stringify a value */
138
- stringifier?: (value: any) => string;
139
- level?: LogLevel;
140
- exact?: LogLevel | Array<LogLevel>;
138
+ interface TextLogHandlerOptions extends BaseHandlerOptions {
141
139
  }
142
- declare function NewTextHandler(send: (data: string) => void, options?: TextLogHandlerOptions): () => TextLogHandler;
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
+ };
143
154
 
144
155
  declare const halua: Halua;
145
156
 
146
- export { type HaluaLogger, type Handler, Level, type Log, NewJSONHandler, NewTextHandler, NewWebConsoleHandler, halua };
157
+ export { type HaluaLogger, type Handler, Level, NewConsoleHandler, NewJSONHandler, NewTextHandler, halua };