@@ -28,18 +28,6 @@ export interface Message {
28
28
body : string
29
29
}
30
30
31
- export interface Exporter extends Exporter . Options {
32
- export ( message : Message ) : void
33
- }
34
-
35
- export namespace Exporter {
36
- export interface Options {
37
- colors ?: false | ColorSupportLevel
38
- maxLength ?: number
39
- levels ?: Record < string , number >
40
- }
41
- }
42
-
43
31
export interface Logger extends Record < Type , Method > { }
44
32
45
33
export const enum Level {
@@ -156,60 +144,72 @@ export class Factory {
156
144
}
157
145
}
158
146
159
- export interface ConsoleExporter extends ConsoleExporter . Options { }
147
+ export interface Exporter extends Exporter . Options {
148
+ export ( message : Message ) : void
149
+ }
160
150
161
- export class ConsoleExporter implements Exporter {
162
- constructor ( options ?: ConsoleExporter . Options ) {
163
- Object . assign ( this , {
164
- colors : supportsColor . stdout ? supportsColor . stdout . level : 0 ,
165
- showTime : 'yyyy-MM-dd hh:mm:ss' ,
166
- showDiff : false ,
167
- ...options ,
168
- } )
151
+ export namespace Exporter {
152
+ export interface Options {
153
+ colors ?: false | ColorSupportLevel
154
+ maxLength ?: number
155
+ levels ?: Record < string , number >
169
156
}
170
157
171
- export ( message : Message ) {
172
- console . log ( this . render ( message ) )
173
- }
158
+ export interface Console extends Console . Options { }
174
159
175
- render ( message : Message ) {
176
- const prefix = `[${ message . type [ 0 ] . toUpperCase ( ) } ]`
177
- const space = ' ' . repeat ( this . label ?. margin ?? 1 )
178
- let indent = 3 + space . length , output = ''
179
- if ( this . showTime ) {
180
- indent += this . showTime . length + space . length
181
- output += Logger . color ( this , 8 , Time . template ( this . showTime ) ) + space
160
+ export class Console implements Exporter {
161
+ constructor ( options ?: Console . Options ) {
162
+ Object . assign ( this , {
163
+ colors : supportsColor . stdout ? supportsColor . stdout . level : 0 ,
164
+ showTime : 'yyyy-MM-dd hh:mm:ss ' ,
165
+ showDiff : false ,
166
+ ...options ,
167
+ } )
182
168
}
183
- const code = Logger . code ( message . name , this )
184
- const label = Logger . color ( this , code , message . name , ';1' )
185
- const padLength = ( this . label ?. width ?? 0 ) + label . length - message . name . length
186
- if ( this . label ?. align === 'right' ) {
187
- output += label . padStart ( padLength ) + space + prefix + space
188
- indent += ( this . label . width ?? 0 ) + space . length
189
- } else {
190
- output += prefix + space + label . padEnd ( padLength ) + space
169
+
170
+ export ( message : Message ) {
171
+ console . log ( this . render ( message ) )
191
172
}
192
- output += message . body . replace ( / \n / g, '\n' + ' ' . repeat ( indent ) )
193
- if ( this . showDiff && this . timestamp ) {
194
- const diff = message . ts - this . timestamp
195
- output += Logger . color ( this , code , ' +' + Time . format ( diff ) )
173
+
174
+ render ( message : Message ) {
175
+ const prefix = `[${ message . type [ 0 ] . toUpperCase ( ) } ]`
176
+ const space = ' ' . repeat ( this . label ?. margin ?? 1 )
177
+ let indent = 3 + space . length , output = ''
178
+ if ( this . showTime ) {
179
+ indent += this . showTime . length
180
+ output += Logger . color ( this , 8 , Time . template ( this . showTime ) )
181
+ }
182
+ const code = Logger . code ( message . name , this )
183
+ const label = Logger . color ( this , code , message . name , ';1' )
184
+ const padLength = ( this . label ?. width ?? 0 ) + label . length - message . name . length
185
+ if ( this . label ?. align === 'right' ) {
186
+ output += label . padStart ( padLength ) + space + prefix + space
187
+ indent += ( this . label . width ?? 0 ) + space . length
188
+ } else {
189
+ output += prefix + space + label . padEnd ( padLength ) + space
190
+ }
191
+ output += message . body . replace ( / \n / g, '\n' + ' ' . repeat ( indent ) )
192
+ if ( this . showDiff && this . timestamp ) {
193
+ const diff = message . ts - this . timestamp
194
+ output += Logger . color ( this , code , ' +' + Time . format ( diff ) )
195
+ }
196
+ this . timestamp = message . ts
197
+ return output
196
198
}
197
- this . timestamp = message . ts
198
- return output
199
199
}
200
- }
201
200
202
- export namespace ConsoleExporter {
203
- export interface Options extends Exporter . Options {
204
- showDiff ?: boolean
205
- showTime ?: string
206
- label ?: LabelStyle
207
- timestamp ?: number
208
- }
201
+ export namespace Console {
202
+ export interface Options extends Exporter . Options {
203
+ showDiff ?: boolean
204
+ showTime ?: string
205
+ label ?: LabelStyle
206
+ timestamp ?: number
207
+ }
209
208
210
- export interface LabelStyle {
211
- width ?: number
212
- margin ?: number
213
- align ?: 'left' | 'right'
209
+ export interface LabelStyle {
210
+ width ?: number
211
+ margin ?: number
212
+ align ?: 'left' | 'right'
213
+ }
214
214
}
215
215
}
0 commit comments