Skip to content

Commit

Permalink
Add TypeScript type declarations
Browse files Browse the repository at this point in the history
Resolves #19
  • Loading branch information
jirutka committed Aug 27, 2019
1 parent d91a29a commit 8b29541
Show file tree
Hide file tree
Showing 2 changed files with 94 additions and 1 deletion.
5 changes: 4 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -61,5 +61,8 @@
"webpack-cli": "^3.1.2",
"webpack-dev-server": "^3.1.10"
},
"dependencies": {}
"dependencies": {},
"peerDependencies": {
"anylogger": "^0.18.0"
}
}
90 changes: 90 additions & 0 deletions ulog.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
import { BaseLevels, BaseLogger } from 'anylogger'

type ValueOf<T> = T[keyof T]

type LevelNames = BaseLevels & {
assert: 0
dir: 0
table: 0
time: 0
timeEnd: 0
verbose: 4
silly: 6
}

interface LevelConstants {
NONE: 0
ERROR: 1
WARN: 2
INFO: 3
LOG: 4
DEBUG: 5
TRACE: 6
}

export interface Logger extends BaseLogger<LevelNames>, LevelConstants {

readonly ulog: { version: string }

/**
* The log level of this logger.
*/
level: LogLevel

assert(...args: any[]): void
dir(...args: any[]): void
table(...args: any[]): void
time(...args: any[]): void
timeEnd(...args: any[]): void
verbose(message?: any, ...args: any[]): void
silly(message?: any, ...args: any[]): void
}

export type LogLevel = ValueOf<LevelConstants>

export type LogFormatter = (logger: Logger, method: keyof LevelNames, args: any[]) => void

export type LoggerExtender = (logger: Logger, parent: Logger) => void

export interface ULog extends LevelConstants {
/**
* Returns a logger with the specified name. If it doesn't exist yet,
* it will be created.
*/
(name: string): Logger

/**
* The default log level.
*/
level: LogLevel

/**
* Array of functions that will intercept calls to the logger functions to
* apply some formatting.
*/
formats: LogFormatter[]

/**
* Array of functions that will be called with each new logger.
*/
extends: LoggerExtender[]

/**
* Enables debug mode for the loggers listed in `names`.
*/
enable(names: string): void

/**
* Tests whether the named logger is currently in debug mode.
*/
enabled(name: string): true | undefined

/**
* Disables debug mode for all loggers.
*/
disable(): void
}

declare const ulog: ULog

export default ulog

0 comments on commit 8b29541

Please sign in to comment.