index.d.ts
5.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
// Type definitions for signale 1.4
// Project: https://github.com/klaussinani/signale
// Definitions by: Resi Respati <https://github.com/resir014>
// Kingdaro <https://github.com/kingdaro>
// Joydip Roy <https://github.com/rjoydip>
// Simon Nußbaumer <https://github.com/lookapanda>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.7
/// <reference types="node" />
declare namespace signale {
type DefaultMethods =
| 'await'
| 'complete'
| 'error'
| 'debug'
| 'fatal'
| 'fav'
| 'info'
| 'note'
| 'pause'
| 'pending'
| 'star'
| 'start'
| 'success'
| 'warn'
| 'watch'
| 'log';
interface CommandType {
/** The icon corresponding to the logger. */
badge: string;
/**
* The color of the label, can be any of the foreground colors supported by
* [chalk](https://github.com/chalk/chalk#colors).
*/
color: string;
/** The label used to identify the type of the logger. */
label: string;
logLevel?: string;
stream?: NodeJS.WriteStream | NodeJS.WriteStream[];
}
interface SignaleConfig {
/** Display the scope name of the logger. */
displayScope?: boolean;
/** Display the badge of the logger. */
displayBadge?: boolean;
/** Display the current local date in `YYYY-MM-DD` format. */
displayDate?: boolean;
/** Display the name of the file that the logger is reporting from. */
displayFilename?: boolean;
/** Display the label of the logger. */
displayLabel?: boolean;
/** Display the current local time in `HH:MM:SS` format. */
displayTimestamp?: boolean;
/** Underline the logger label. */
underlineLabel?: boolean;
/** Underline the logger message. */
underlineMessage?: boolean;
underlinePrefix?: boolean;
underlineSuffix?: boolean;
uppercaseLabel?: boolean;
}
interface SignaleOptions<TTypes extends string = DefaultMethods> {
/** Sets the configuration of an instance overriding any existing global or local configuration. */
config?: SignaleConfig;
disabled?: boolean;
/**
* Name of the scope.
*/
scope?: string;
/**
* Holds the configuration of the custom and default loggers.
*/
types?: Partial<Record<TTypes, CommandType>>;
interactive?: boolean;
logLevel?: string;
timers?: Map<string, Date>;
/**
* Destination to which the data is written, can be any valid
* [Writable stream](https://nodejs.org/api/stream.html#stream_writable_streams).
*/
stream?: NodeJS.WriteStream | NodeJS.WriteStream[];
secrets?: Array<string | number>;
}
interface SignaleConstructor {
new <TTypes extends string = DefaultMethods>(options?: SignaleOptions<TTypes>): Signale<TTypes>;
}
interface SignaleBase<TTypes extends string = DefaultMethods> {
/**
* Sets the configuration of an instance overriding any existing global or local configuration.
*
* @param configObj Can hold any of the documented options.
*/
config(configObj: SignaleConfig): Signale<TTypes>;
/**
* Defines the scope name of the logger.
*
* @param name Can be one or more comma delimited strings.
*/
scope(...name: string[]): Signale<TTypes>;
/** Clears the scope name of the logger. */
unscope(): void;
/**
* Sets a timers and accepts an optional label. If none provided the timer will receive a unique label automatically.
*
* @param label Label corresponding to the timer. Each timer must have its own unique label.
* @returns a string corresponding to the timer label.
*/
time(label?: string): string;
/**
* Deactivates the timer to which the given label corresponds. If no label
* is provided the most recent timer, that was created without providing a
* label, will be deactivated.
*
* @param label Label corresponding to the timer, each timer has its own unique label.
* @param span Total running time.
*/
timeEnd(label?: string, span?: number): { label: string; span?: number };
/**
* Disables the logging functionality of all loggers belonging to a specific instance.
*/
disable(): void;
/**
* Enables the logging functionality of all loggers belonging to a specific instance.
*/
enable(): void;
/**
* Checks whether the logging functionality of a specific instance is enabled.
*
* @returns a boolean that describes whether or not the logger is enabled.
*/
isEnabled(): boolean;
/**
* Adds new secrets/sensitive-information to the targeted Signale instance.
*
* @param secrets Array holding the secrets/sensitive-information to be filtered out.
*/
addSecrets(secrets: string[] | number[]): void;
/**
* Removes all secrets/sensitive-information from the targeted Signale instance.
*/
clearSecrets(): void;
}
type LoggerFunc = (message?: any, ...optionalArgs: any[]) => void;
type Signale<TTypes extends string = DefaultMethods> = SignaleBase<TTypes> &
Record<TTypes, LoggerFunc> &
Record<DefaultMethods, LoggerFunc>;
}
declare const signale: signale.Signale<signale.DefaultMethods> & {
Signale: signale.SignaleConstructor;
SignaleConfig: signale.SignaleConfig;
SignaleOptions: signale.SignaleOptions;
DefaultMethods: signale.DefaultMethods;
};
export = signale;