From 517a5f3ad6e48c59d17e06ffd1ef2cf249c84162 Mon Sep 17 00:00:00 2001 From: Evan Shortiss Date: Fri, 18 Nov 2016 13:59:19 -0800 Subject: [PATCH 1/7] update pino definition to facilitate returning loggers --- pino/pino.d.ts | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/pino/pino.d.ts b/pino/pino.d.ts index 9b4ec6d503..fb18c23e5e 100644 --- a/pino/pino.d.ts +++ b/pino/pino.d.ts @@ -5,9 +5,12 @@ /// -declare module 'pino' { +import stream = require('stream'); - import stream = require('stream') +declare function P(optionsOrStream?: P.LoggerOptions | stream.Writable | stream.Readable): P.Logger; +declare function P(options: P.LoggerOptions, stream: stream.Writable | stream.Readable): P.Logger; + +declare namespace P { type Level = 'fatal' | 'error' | 'warn' | 'info' | 'debug' | 'trace' | 'silent' type Headers = {[header: string]: string} @@ -79,8 +82,6 @@ declare module 'pino' { LOG_VERSION: number stdSerializers: Serializers } - - var p: Pino - export = p - } + +export = P; From b038daed0ef479be90b2fe535157befdc41d4335 Mon Sep 17 00:00:00 2001 From: Evan Shortiss Date: Mon, 21 Nov 2016 16:13:58 -0800 Subject: [PATCH 2/7] export pino namespace --- pino/pino.d.ts | 89 +++++++++++++++++++++++++++----------------------- 1 file changed, 48 insertions(+), 41 deletions(-) diff --git a/pino/pino.d.ts b/pino/pino.d.ts index fb18c23e5e..6f92f7cc84 100644 --- a/pino/pino.d.ts +++ b/pino/pino.d.ts @@ -12,75 +12,82 @@ declare function P(options: P.LoggerOptions, stream: stream.Writable | stream.Re declare namespace P { - type Level = 'fatal' | 'error' | 'warn' | 'info' | 'debug' | 'trace' | 'silent' - type Headers = {[header: string]: string} - type LevelLabelsToValues = {[level: string]: number} - type LevelValuesToLabels = {[level: number]: string} + type Level = 'fatal' | 'error' | 'warn' | 'info' | 'debug' | 'trace' | 'silent'; + interface Headers { + [header: string]: string; + } + + interface LevelLabelsToValues { + [level: string]: number; + } + + interface LevelValuesToLabels { + [level: number]: string; + } interface Serializers { - req?: (req: any) => any - res?: (res: any) => any - err?: (error: Error) => any + req?: (req: any) => any; + res?: (res: any) => any; + err?: (error: Error) => any; } interface LoggerOptions { // avoid error causes by circular references in the object tree, default true - safe?: boolean + safe?: boolean; // the name of the logger, default undefined - name?: string + name?: string; // an object containing functions for custom serialization of objects. // These functions should return an JSONifiable object and they should never throw - serializers?: Serializers + serializers?: Serializers; // Outputs ISO time stamps ('2016-03-09T15:18:53.889Z') instead of Epoch time stamps (1457536759176). // WARNING: This option carries a 25% performance drop, we recommend using default Epoch timestamps and transforming logs after if required. // The pino -t command will do this for you (see CLI). default false. - slowtime?: boolean + slowtime?: boolean; // Enables extreme mode, yields an additional 60% performance (from 250ms down to 100ms per 10000 ops). // There are trade-off's should be understood before usage. See Extreme mode explained. default false - extreme?: boolean + extreme?: boolean; // enables logging, defaults to true. - enabled?: boolean - level?: Level + enabled?: boolean; + level?: Level; } interface Pino { - (optionsOrStream?: LoggerOptions | stream.Writable | stream.Readable): Logger - (options: LoggerOptions, stream: stream.Writable | stream.Readable): Logger + (optionsOrStream?: LoggerOptions | stream.Writable | stream.Readable): Logger; + (options: LoggerOptions, stream: stream.Writable | stream.Readable): Logger; levels: { values: LevelLabelsToValues labels: LevelValuesToLabels - } - LOG_VERSION: number - pretty(opts?: {timeTransOnly?: boolean}): stream.Readable - + }; + LOG_VERSION: number; + pretty(opts?: {timeTransOnly?: boolean}): stream.Readable; } - type LevelChangeEventListener = (lvl: string, val: number, prevLvl: string, prevVal: number) => void - type LevelChangeEvent = 'level-change' + type LevelChangeEventListener = (lvl: string, val: number, prevLvl: string, prevVal: number) => void; + type LevelChangeEvent = 'level-change'; interface Logger { - child(bindings: {}): Logger - level: Level - levelVal: number - on(event: LevelChangeEvent, listener: LevelChangeEventListener): void - fatal(msg: string, ...args : any[]): void - fatal(obj: {}, msg?: string, ...args : any[]): void - error(msg: string, ...args : any[]): void - error(obj: {}, msg?: string, ...args : any[]): void - warn(msg: string, ...args : any[]): void - warn(obj: {}, msg?: string, ...args : any[]): void - info(msg: string, ...args : any[]): void - info(obj: {}, msg?: string, ...args : any[]): void - debug(msg: string, ...args : any[]): void - debug(obj: {}, msg?: string, ...args : any[]): void - trace(msg: string, ...args : any[]): void - trace(obj: {}, msg?: string, ...args : any[]): void + child(bindings: {}): Logger; + level: Level; + levelVal: number; + on(event: LevelChangeEvent, listener: LevelChangeEventListener): void; + fatal(msg: string, ...args: any[]): void; + fatal(obj: {}, msg?: string, ...args: any[]): void; + error(msg: string, ...args: any[]): void; + error(obj: {}, msg?: string, ...args: any[]): void; + warn(msg: string, ...args: any[]): void; + warn(obj: {}, msg?: string, ...args: any[]): void; + info(msg: string, ...args: any[]): void; + info(obj: {}, msg?: string, ...args: any[]): void; + debug(msg: string, ...args: any[]): void; + debug(obj: {}, msg?: string, ...args: any[]): void; + trace(msg: string, ...args: any[]): void; + trace(obj: {}, msg?: string, ...args: any[]): void; levels: { values: LevelLabelsToValues labels: LevelValuesToLabels - } - LOG_VERSION: number - stdSerializers: Serializers + }; + LOG_VERSION: number; + stdSerializers: Serializers; } } From ab13d240ae582522d50ccfe3bca33738aa9a77f8 Mon Sep 17 00:00:00 2001 From: Evan Shortiss Date: Mon, 21 Nov 2016 16:27:30 -0800 Subject: [PATCH 3/7] bump version --- pino/pino.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pino/pino.d.ts b/pino/pino.d.ts index 6f92f7cc84..7fa2489c3e 100644 --- a/pino/pino.d.ts +++ b/pino/pino.d.ts @@ -1,4 +1,4 @@ -// Type definitions for pino v1.0.1 +// Type definitions for pino v3.0.1 // Project: https://github.com/mcollina/pino.git // Definitions by: Peter Snider // Definitions: https://github.com/borisyankov/DefinitelyTyped From 12fb1ff4606a3d565c55a0e550fe9f1abe111740 Mon Sep 17 00:00:00 2001 From: Evan Shortiss Date: Mon, 21 Nov 2016 16:50:50 -0800 Subject: [PATCH 4/7] define pretty --- pino/index.d.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pino/index.d.ts b/pino/index.d.ts index 7fa2489c3e..2b3448a2bb 100644 --- a/pino/index.d.ts +++ b/pino/index.d.ts @@ -12,6 +12,8 @@ declare function P(options: P.LoggerOptions, stream: stream.Writable | stream.Re declare namespace P { + function pretty(opts?: {timeTransOnly?: boolean, levelFirst?: boolean, formatter?: (str: string) => void}): stream.Readable; + type Level = 'fatal' | 'error' | 'warn' | 'info' | 'debug' | 'trace' | 'silent'; interface Headers { [header: string]: string; @@ -59,7 +61,6 @@ declare namespace P { labels: LevelValuesToLabels }; LOG_VERSION: number; - pretty(opts?: {timeTransOnly?: boolean}): stream.Readable; } type LevelChangeEventListener = (lvl: string, val: number, prevLvl: string, prevVal: number) => void; From 1ae1263ddb8ad8f46c98a1666ac82444d6066eb7 Mon Sep 17 00:00:00 2001 From: Evan Shortiss Date: Tue, 22 Nov 2016 12:17:56 -0800 Subject: [PATCH 5/7] update stream typings --- pino/index.d.ts | 10 +++++----- pino/pino-tests.ts | 9 ++++++++- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/pino/index.d.ts b/pino/index.d.ts index 2b3448a2bb..8e8a09c2f9 100644 --- a/pino/index.d.ts +++ b/pino/index.d.ts @@ -7,12 +7,12 @@ import stream = require('stream'); -declare function P(optionsOrStream?: P.LoggerOptions | stream.Writable | stream.Readable): P.Logger; -declare function P(options: P.LoggerOptions, stream: stream.Writable | stream.Readable): P.Logger; +declare function P(optionsOrStream?: P.LoggerOptions | stream.Writable | stream.Duplex | stream.Transform): P.Logger; +declare function P(options: P.LoggerOptions, stream: stream.Writable | stream.Duplex | stream.Transform): P.Logger; declare namespace P { - function pretty(opts?: {timeTransOnly?: boolean, levelFirst?: boolean, formatter?: (str: string) => void}): stream.Readable; + function pretty(opts?: {timeTransOnly?: boolean, levelFirst?: boolean, formatter?: (str: string) => void}): stream.Transform; type Level = 'fatal' | 'error' | 'warn' | 'info' | 'debug' | 'trace' | 'silent'; interface Headers { @@ -54,8 +54,8 @@ declare namespace P { } interface Pino { - (optionsOrStream?: LoggerOptions | stream.Writable | stream.Readable): Logger; - (options: LoggerOptions, stream: stream.Writable | stream.Readable): Logger; + (optionsOrStream?: LoggerOptions | stream.Writable | stream.Duplex): Logger; + (options: LoggerOptions, stream: stream.Writable | stream.Duplex): Logger; levels: { values: LevelLabelsToValues labels: LevelValuesToLabels diff --git a/pino/pino-tests.ts b/pino/pino-tests.ts index f6c308a706..5a509067c3 100644 --- a/pino/pino-tests.ts +++ b/pino/pino-tests.ts @@ -1,6 +1,8 @@ // This contains all of the code from the docs on https://www.npmjs.com/package/pino -import PINO = require('pino') +import * as PINO from 'pino'; +import * as stream from 'stream'; + var pino = PINO() var info = pino.info var error = pino.error @@ -24,6 +26,11 @@ var instance = PINO({ } }) +let version:number = pino.LOG_VERSION; +let levels:Object = pino.levels; + +let pretty:stream.Transform = PINO.pretty(); + var pretty = PINO.pretty() var instance2 = PINO({ name: 'app', From 24ba781929c6b09f4a1465e30522d70528a57023 Mon Sep 17 00:00:00 2001 From: Evan Shortiss Date: Tue, 22 Nov 2016 12:30:12 -0800 Subject: [PATCH 6/7] tests --- pino/pino-tests.ts | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/pino/pino-tests.ts b/pino/pino-tests.ts index 5a509067c3..0785905fd2 100644 --- a/pino/pino-tests.ts +++ b/pino/pino-tests.ts @@ -16,8 +16,7 @@ info({ obj: { aa: 'bbb' } }, 'another') setImmediate(info, 'after setImmediate') error(new Error('an error')) - -var instance = PINO({ +let instance:PINO.Logger = PINO({ name: 'myapp', safe: true, serializers: { @@ -26,13 +25,12 @@ var instance = PINO({ } }) -let version:number = pino.LOG_VERSION; -let levels:Object = pino.levels; +let version:number = pino.LOG_VERSION +let levels:Object = pino.levels -let pretty:stream.Transform = PINO.pretty(); +let pretty:stream.Transform = PINO.pretty() -var pretty = PINO.pretty() -var instance2 = PINO({ +let logger2:PINO.Logger = PINO({ name: 'app', safe: true }, pretty) From 634854cb81797922f77a9464472b3800abf612ce Mon Sep 17 00:00:00 2001 From: Evan Shortiss Date: Wed, 30 Nov 2016 21:57:17 -0600 Subject: [PATCH 7/7] revert to commonjs import --- pino/pino-tests.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pino/pino-tests.ts b/pino/pino-tests.ts index 0785905fd2..2c9771ad9f 100644 --- a/pino/pino-tests.ts +++ b/pino/pino-tests.ts @@ -1,6 +1,6 @@ // This contains all of the code from the docs on https://www.npmjs.com/package/pino -import * as PINO from 'pino'; +import PINO = require('pino'); import * as stream from 'stream'; var pino = PINO()