colorful-chalk-logger
Advanced tools
Comparing version 0.3.2 to 0.4.1
import commander from 'commander'; | ||
import { Level } from './level'; | ||
import { Logger, Options } from './logger'; | ||
export { Level, DEBUG, INFO, VERBOSE, WARN, ERROR, FATAL } from './level'; | ||
export declare class ColorfulChalkLogger extends Logger { | ||
registerToCommander: typeof ColorfulChalkLogger.registerToCommander; | ||
constructor(name: string, options?: Options, args?: string[]); | ||
static registerToCommander(program: commander.Command): void; | ||
private static generateOptions; | ||
readonly registerToCommander: typeof ColorfulChalkLogger.registerToCommander; | ||
constructor(name: string, options?: Options, args?: string[]); | ||
setLevel(level: Level): void; | ||
} |
@@ -77,3 +77,6 @@ "use strict"; | ||
} | ||
setLevel(level) { | ||
this.level = level; | ||
} | ||
} | ||
exports.ColorfulChalkLogger = ColorfulChalkLogger; |
import { ColorfulChalk } from './color'; | ||
export declare class Level { | ||
static valueOf(levelName: string): Level | undefined; | ||
private static currentRank; | ||
private static readonly levels; | ||
static valueOf(levelName: string): Level | undefined; | ||
readonly rank: number; | ||
@@ -7,0 +7,0 @@ readonly name: string; |
@@ -14,3 +14,3 @@ "use strict"; | ||
static valueOf(levelName) { | ||
return Level.levels.get(levelName); | ||
return Level.levels.get(levelName.toLowerCase()); | ||
} | ||
@@ -22,3 +22,3 @@ } | ||
exports.DEBUG = new Level('debug', 'debug', new color_1.ColorfulChalk('#BCA21F'), new color_1.ColorfulChalk('#BCA21F')); | ||
exports.VERBOSE = new Level('verbose', 'verbose', new color_1.ColorfulChalk('#72C9CC'), new color_1.ColorfulChalk('#72C9CC')); | ||
exports.VERBOSE = new Level('verbose', 'verbo', new color_1.ColorfulChalk('#72C9CC'), new color_1.ColorfulChalk('#72C9CC')); | ||
exports.INFO = new Level('info', 'info ', new color_1.ColorfulChalk('#00FF00'), new color_1.ColorfulChalk('#00FF00')); | ||
@@ -25,0 +25,0 @@ exports.WARN = new Level('warn', 'warn ', new color_1.ColorfulChalk('#FFA195'), new color_1.ColorfulChalk('#FFA195')); |
@@ -5,2 +5,3 @@ import { Chalk } from 'chalk'; | ||
export interface Options { | ||
placeholderRegex?: RegExp; | ||
level?: Level; | ||
@@ -25,2 +26,3 @@ date?: boolean; | ||
readonly nameChalk: any; | ||
private readonly placeholderRegex; | ||
readonly flags: { | ||
@@ -35,9 +37,9 @@ date: boolean; | ||
formatSingleMessage(message: any): string; | ||
debug(messageFormat: string, ...messages: any[]): void; | ||
verbose(messageFormat: string, ...messages: any[]): void; | ||
info(messageFormat: string, ...messages: any[]): void; | ||
warn(messageFormat: string, ...messages: any[]): void; | ||
error(messageFormat: string, ...messages: any[]): void; | ||
fatal(messageFormat: string, ...messages: any[]): void; | ||
private log; | ||
debug(...messages: any[]): void; | ||
verbose(...messages: any[]): void; | ||
info(...messages: any[]): void; | ||
warn(...messages: any[]): void; | ||
error(...messages: any[]): void; | ||
fatal(...messages: any[]): void; | ||
} |
@@ -18,2 +18,3 @@ "use strict"; | ||
this.nameChalk = Logger.defaultNameChalk; | ||
this.placeholderRegex = /(?<!\\)\{\}/g; | ||
this.flags = { | ||
@@ -27,3 +28,3 @@ date: false, | ||
return; | ||
const { level, date, inline, colorful, write, filepath, encoding = 'utf-8', dateChalk, nameChalk } = options; | ||
const { level, date, inline, colorful, write, filepath, encoding = 'utf-8', dateChalk, nameChalk, placeholderRegex } = options; | ||
if (level) | ||
@@ -37,2 +38,8 @@ this.level = level; | ||
this.flags.colorful = colorful; | ||
if (placeholderRegex != null) { | ||
let flags = this.placeholderRegex.flags; | ||
if (!flags.includes('g')) | ||
flags += 'g'; | ||
this.placeholderRegex = new RegExp(placeholderRegex.source, `${flags}`); | ||
} | ||
if (write != null) | ||
@@ -79,3 +86,3 @@ this.write = write; | ||
return `[${header}]`; | ||
let dateString = moment_1.default(date).format('YYYY-MM-DD hh:mm:ss'); | ||
let dateString = moment_1.default(date).format('YYYY-MM-DD HH:mm:ss'); | ||
if (this.flags.colorful) | ||
@@ -110,9 +117,11 @@ dateString = dateChalk(dateString); | ||
text = text.replace(/\n\s*/g, ' '); | ||
if (!inline && text.indexOf('\n') > -1) | ||
text += '\n'; | ||
else | ||
text += ' '; | ||
return text; | ||
} | ||
log(level, ...messages) { | ||
debug(messageFormat, ...messages) { this.log(level_1.DEBUG, messageFormat, ...messages); } | ||
verbose(messageFormat, ...messages) { this.log(level_1.VERBOSE, messageFormat, ...messages); } | ||
info(messageFormat, ...messages) { this.log(level_1.INFO, messageFormat, ...messages); } | ||
warn(messageFormat, ...messages) { this.log(level_1.WARN, messageFormat, ...messages); } | ||
error(messageFormat, ...messages) { this.log(level_1.ERROR, messageFormat, ...messages); } | ||
fatal(messageFormat, ...messages) { this.log(level_1.FATAL, messageFormat, ...messages); } | ||
log(level, messageFormat, ...messages) { | ||
if (!level || level.rank < this.level.rank) | ||
@@ -122,7 +131,7 @@ return; | ||
let newline = false; | ||
let message = messages | ||
.map(message => { | ||
if (message == null) | ||
message = '' + message; | ||
let text = this.formatSingleMessage(message); | ||
let items = messages | ||
.map(msg => { | ||
if (msg == null) | ||
msg = '' + msg; | ||
let text = this.formatSingleMessage(msg); | ||
if (text.endsWith('\n')) { | ||
@@ -133,4 +142,7 @@ text = '\n' + text; | ||
return text; | ||
}) | ||
.join(''); | ||
}); | ||
let idx = 0; | ||
let message = messageFormat.replace(this.placeholderRegex, m => items[idx++] || m); | ||
if (idx < items.length) | ||
message += ' ' + items.slice(idx).join(' '); | ||
if (!newline && !message.endsWith('\n')) | ||
@@ -140,9 +152,3 @@ message += '\n'; | ||
} | ||
debug(...messages) { this.log(level_1.DEBUG, ...messages); } | ||
verbose(...messages) { this.log(level_1.VERBOSE, ...messages); } | ||
info(...messages) { this.log(level_1.INFO, ...messages); } | ||
warn(...messages) { this.log(level_1.WARN, ...messages); } | ||
error(...messages) { this.log(level_1.ERROR, ...messages); } | ||
fatal(...messages) { this.log(level_1.FATAL, ...messages); } | ||
} | ||
exports.Logger = Logger; |
{ | ||
"name": "colorful-chalk-logger", | ||
"version": "0.3.2", | ||
"version": "0.4.1", | ||
"description": "a colorful logger, support control output(format | level) through command-line options.", | ||
"main": "dist/index.js", | ||
"types": "dist/index.d.ts", | ||
"repository": "git@github.com:LittleClown/colorful-chalk-logger.git", | ||
"repository": "git@github.com:lemon-clown/colorful-chalk-logger.git", | ||
"author": "lemon-clown", | ||
"license": "MIT", | ||
"scripts": { | ||
"build": "tsc --declaration" | ||
"build": "tsc --declaration", | ||
"prepublishOnly": "yarn build" | ||
}, | ||
@@ -28,5 +29,5 @@ "keywords": [ | ||
"devDependencies": { | ||
"ts-node": "^7.0.1", | ||
"ts-node": "^8.3.0", | ||
"typescript": "^3.2.2" | ||
} | ||
} |
`colorful-chalk-logger` is a colorful logger tool based on [chalk](https://github.com/chalk/chalk)(so you can use a lot of colors) and [commander](https://github.com/tj/commander.js)(so you can use command line parameters to customized the logger's behavior). | ||
[](https://www.npmjs.com/package/colorful-chalk-logger) | ||
# Install | ||
@@ -43,3 +47,3 @@ you can use `colorful-chalk-logger` either in `typescript` or `javascript`. | ||
``` | ||
 | ||
 | ||
@@ -84,3 +88,3 @@ ## Custom output format: | ||
``` | ||
 | ||
 | ||
@@ -109,3 +113,3 @@ ```typescript | ||
``` | ||
 | ||
 | ||
@@ -139,3 +143,3 @@ ## output to file | ||
``` | ||
 | ||
 | ||
@@ -145,3 +149,3 @@ | ||
```typescript | ||
// demo/demo4.ts | ||
// demo/demo5.ts | ||
import chalk from 'chalk' | ||
@@ -181,2 +185,36 @@ import commander from 'Commander' | ||
``` | ||
 | ||
 | ||
## string format | ||
```typescript | ||
// demo/demo6.ts | ||
import { ColorfulChalkLogger, DEBUG } from '../src' | ||
let logger = new ColorfulChalkLogger('demo', { | ||
level: DEBUG, | ||
date: true, | ||
colorful: true, | ||
inline: true, | ||
}, process.argv) | ||
logger.verbose('user({})', { username: 'lemon-clown', avatar: 'https://avatars0.githubusercontent.com/u/42513619?s=400&u=d878f4532bb5749979e18f3696b8985b90e9f78b&v=4' }) | ||
logger.error('bad argument ({}). error({})', { username: 123 }, new Error('username is invalid')) | ||
let logger2 = new ColorfulChalkLogger('demo', { | ||
level: DEBUG, | ||
date: true, | ||
colorful: true, | ||
inline: true, | ||
placeholderRegex: /(?<!\\)\<\>/g // change placeholder of string format | ||
}, process.argv) | ||
logger2.verbose('user(<>)', { username: 'lemon-clown', avatar: 'https://avatars0.githubusercontent.com/u/42513619?s=400&u=d878f4532bb5749979e18f3696b8985b90e9f78b&v=4' }) | ||
logger2.error('bad argument (<>). error({})', { username: 123 }, new Error('username is invalid')) | ||
``` | ||
 | ||
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
No repository
Supply chain riskPackage does not have a linked source code repository. Without this field, a package will have no reference to the location of the source code use to generate the package.
Found 1 instance in 1 package
No repository
Supply chain riskPackage does not have a linked source code repository. Without this field, a package will have no reference to the location of the source code use to generate the package.
Found 1 instance in 1 package
374
215
23586
11
1