From 3d0a9ee4ea1904851a04af158e0f509398b3e990 Mon Sep 17 00:00:00 2001 From: Taylon Date: Sun, 26 Nov 2017 12:40:29 -0200 Subject: [PATCH] Add libdefs for pinojs v4 (#1551) * Add libdefs for pinojs v4 * Fix Pino v3 tests --- .../pino_v3.x.x.js | 76 ++++---- definitions/npm/pino_v3.x.x/test_pino_v3.js | 4 +- .../pino_v4.x.x/flow_v0.57.0-/pino_v4.x.x.js | 170 ++++++++++++++++++ definitions/npm/pino_v4.x.x/test_pino_v4.js | 34 ++++ 4 files changed, 245 insertions(+), 39 deletions(-) rename definitions/npm/pino_v3.x.x/{flow_v0.54.0- => flow_v0.57.0-}/pino_v3.x.x.js (50%) create mode 100644 definitions/npm/pino_v4.x.x/flow_v0.57.0-/pino_v4.x.x.js create mode 100644 definitions/npm/pino_v4.x.x/test_pino_v4.js diff --git a/definitions/npm/pino_v3.x.x/flow_v0.54.0-/pino_v3.x.x.js b/definitions/npm/pino_v3.x.x/flow_v0.57.0-/pino_v3.x.x.js similarity index 50% rename from definitions/npm/pino_v3.x.x/flow_v0.54.0-/pino_v3.x.x.js rename to definitions/npm/pino_v3.x.x/flow_v0.57.0-/pino_v3.x.x.js index 70d8a475a2..cdbf5d5dc2 100644 --- a/definitions/npm/pino_v3.x.x/flow_v0.54.0-/pino_v3.x.x.js +++ b/definitions/npm/pino_v3.x.x/flow_v0.57.0-/pino_v3.x.x.js @@ -2,12 +2,12 @@ declare module "pino" { declare interface IPinoLog { - pid: number, - hostname: string, - level: number, - time: string, - msg: string, - v: number + pid: number; + hostname: string; + level: number; + time: string; + msg: string; + v: number; } declare type Level = @@ -28,53 +28,53 @@ declare module "pino" { declare type LevelChangeEvent = "level-change"; declare interface LevelLabelsToValues { - [level: string]: number + [level: string]: number; } declare interface LevelValuesToLabels { - [level: number]: string + [level: number]: string; } declare 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; } declare interface LoggerOptions { - safe?: boolean, - name?: string, - serializers?: Serializers, - slowtime?: boolean, - extreme?: boolean, - enabled?: boolean, - level?: Level | string, - levelVal?: number + safe?: boolean; + name?: string; + serializers?: Serializers; + slowtime?: boolean; + extreme?: boolean; + enabled?: boolean; + level?: Level | string; + levelVal?: number; } declare 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; } declare function pretty(opts?: { diff --git a/definitions/npm/pino_v3.x.x/test_pino_v3.js b/definitions/npm/pino_v3.x.x/test_pino_v3.js index 6c67ab3dff..12e5e3376a 100644 --- a/definitions/npm/pino_v3.x.x/test_pino_v3.js +++ b/definitions/npm/pino_v3.x.x/test_pino_v3.js @@ -1,10 +1,12 @@ // @flow import pino from "pino"; +import type { Logger } from "pino"; (pino.LOG_VERSION: number); -const p: pino.Logger = pino(); +const p: Logger = pino(); + p.info("hello world"); p.error("this is at error level"); p.info("the answer is %d", 42); diff --git a/definitions/npm/pino_v4.x.x/flow_v0.57.0-/pino_v4.x.x.js b/definitions/npm/pino_v4.x.x/flow_v0.57.0-/pino_v4.x.x.js new file mode 100644 index 0000000000..ba86e2a198 --- /dev/null +++ b/definitions/npm/pino_v4.x.x/flow_v0.57.0-/pino_v4.x.x.js @@ -0,0 +1,170 @@ +// @flow + +declare module "pino" { + declare type Level = "fatal" | "error" | "warn" | "info" | "debug" | "trace"; + declare type LevelWithSilent = Level | "silent"; + declare type LevelChangeEvent = "level-change"; + declare type LevelChangeEventListener = ( + lvl: LevelWithSilent | string, + val: number, + prevLvl: LevelWithSilent | string, + prevVal: number + ) => void; + declare interface LevelMapping { + values: { [level: string]: number }; + labels: { [level: number]: string }; + } + + declare type SerializerFn = (value: any) => any; + declare type WriteFn = (o: {}) => void; + declare type TimeFn = () => string; + declare interface LogFn { + (msg: string, ...args: any[]): void; + (obj: {}, msg?: string, ...args: any[]): void; + } + + declare interface stdSerializers { + req( + req: http$IncomingMessage + ): { + method: string, + url: string, + headers: { + host: string, + connection: string + }, + remoteAddress: string, + remotePort: number + }; + + res( + res: http$ServerResponse + ): { + statusCode: number, + header: string + }; + + err( + err: Error + ): { + type: string, + message: string, + stack: string, + [key: string]: any + }; + } + + declare interface stdTimeFunctions { + epochTime: TimeFn; + unixTime: TimeFn; + slowTime: TimeFn; + nullTime: TimeFn; + } + + declare type Logger = BaseLogger & { [key: string]: LogFn }; + + declare interface BaseLogger { + +pino: string; + +LOG_VERSION: number; + + levels: LevelMapping; + level: LevelWithSilent | string; + levelVal: number; + + addLevel(name: string, lvl: number): boolean; + isLevelEnabled(logLevel: LevelWithSilent | string): boolean; + + on(event: LevelChangeEvent, listener: LevelChangeEventListener): void; + addListener( + event: LevelChangeEvent, + listener: LevelChangeEventListener + ): void; + once(event: LevelChangeEvent, listener: LevelChangeEventListener): void; + prependListener( + event: LevelChangeEvent, + listener: LevelChangeEventListener + ): void; + prependOnceListener( + event: LevelChangeEvent, + listener: LevelChangeEventListener + ): void; + removeListener( + event: LevelChangeEvent, + listener: LevelChangeEventListener + ): void; + + child(bindings: { + level?: Level | string, + serializers?: { [key: string]: SerializerFn }, + [key: string]: any + }): Logger; + + fatal: LogFn; + error: LogFn; + warn: LogFn; + info: LogFn; + debug: LogFn; + trace: LogFn; + + flush(): void; + } + + declare interface LoggerOptions { + safe?: boolean; + name?: string; + serializers?: { [key: string]: SerializerFn }; + timestamp?: TimeFn | false; + // @deprecated: This option is scheduled to be removed in Pino 5.0.0 + slowtime?: boolean; + extreme?: boolean; + level?: LevelWithSilent | string; + levelVal?: number; + messageKey?: string; + prettyPrint?: boolean | PrettyOptions; + onTerminated?: (eventName: string, err: any) => void; + enabled?: boolean; + base?: any; + crlf?: boolean; + + browser?: { + asObject?: boolean, + write?: WriteFn + }; + } + + declare interface LogDescriptor { + pid: number; + hostname: string; + level: number; + time: string; + msg: string; + v: number; + [key: string]: any; + } + + declare interface PrettyOptions { + timeTransOnly?: boolean; + formatter?: (log: LogDescriptor) => string; + levelFirst?: boolean; + messageKey?: string; + forceColor?: boolean; + crlf?: boolean; + } + + declare function pretty(options?: PrettyOptions): stream$Transform; + + declare function P( + options: LoggerOptions, + stream: stream$Writable | stream$Duplex | stream$Transform + ): Logger; + + declare function P( + optionsOrStream?: + | LoggerOptions + | stream$Writable + | stream$Duplex + | stream$Transform + ): Logger; + + declare module.exports: P; +} diff --git a/definitions/npm/pino_v4.x.x/test_pino_v4.js b/definitions/npm/pino_v4.x.x/test_pino_v4.js new file mode 100644 index 0000000000..2343cc0b5a --- /dev/null +++ b/definitions/npm/pino_v4.x.x/test_pino_v4.js @@ -0,0 +1,34 @@ +// @flow + +import pino from "pino"; +import type { Logger } from "pino"; + +const p: Logger = pino(); + +p.info("hello world"); +p.error("this is at error level"); +p.info("the answer is %d", 42); +p.info({ obj: 42 }, "hello world"); +p.info({ obj: 42, b: 2 }, "hello world"); +p.info({ obj: { aa: "bbb" } }, "another"); +setImmediate(p.info, "after setImmediate"); +p.error(new Error("an error")); + +// $ExpectError +p.LOG_VERSION = 10; + +// $ExpectError +p("no log level"); + +const pretty = pino.pretty(); +pretty.pipe(process.stdout); +const log = pino( + { + name: "app", + safe: true + }, + pretty +); + +log.child({ widget: "foo" }).info("hello"); +log.child({ widget: "bar" }).warn("hello 2");