Skip to content

Commit d83d9a2

Browse files
committed
refa: refactor to namespace
1 parent f5c18d6 commit d83d9a2

File tree

2 files changed

+58
-58
lines changed

2 files changed

+58
-58
lines changed

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "reggol",
33
"description": "Logger for professionals",
4-
"version": "1.7.1",
4+
"version": "2.0.0",
55
"sideEffects": false,
66
"type": "module",
77
"exports": {

src/shared.ts

+57-57
Original file line numberDiff line numberDiff line change
@@ -28,18 +28,6 @@ export interface Message {
2828
body: string
2929
}
3030

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-
4331
export interface Logger extends Record<Type, Method> {}
4432

4533
export const enum Level {
@@ -156,60 +144,72 @@ export class Factory {
156144
}
157145
}
158146

159-
export interface ConsoleExporter extends ConsoleExporter.Options {}
147+
export interface Exporter extends Exporter.Options {
148+
export(message: Message): void
149+
}
160150

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>
169156
}
170157

171-
export(message: Message) {
172-
console.log(this.render(message))
173-
}
158+
export interface Console extends Console.Options {}
174159

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+
})
182168
}
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))
191172
}
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
196198
}
197-
this.timestamp = message.ts
198-
return output
199199
}
200-
}
201200

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+
}
209208

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+
}
214214
}
215215
}

0 commit comments

Comments
 (0)