From 8b295411df4cfa555c06b4f31f364ef5e4a4d10f Mon Sep 17 00:00:00 2001 From: Jakub Jirutka Date: Tue, 27 Aug 2019 13:40:42 +0200 Subject: [PATCH] Add TypeScript type declarations Resolves #19 --- package.json | 5 ++- ulog.d.ts | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 94 insertions(+), 1 deletion(-) create mode 100644 ulog.d.ts diff --git a/package.json b/package.json index 61631b9..758f50f 100644 --- a/package.json +++ b/package.json @@ -61,5 +61,8 @@ "webpack-cli": "^3.1.2", "webpack-dev-server": "^3.1.10" }, - "dependencies": {} + "dependencies": {}, + "peerDependencies": { + "anylogger": "^0.18.0" + } } diff --git a/ulog.d.ts b/ulog.d.ts new file mode 100644 index 0000000..c44f182 --- /dev/null +++ b/ulog.d.ts @@ -0,0 +1,90 @@ +import { BaseLevels, BaseLogger } from 'anylogger' + +type ValueOf = 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, 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 + +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