Skip to content

Commit

Permalink
Add libdefs for pinojs v4 (#1551)
Browse files Browse the repository at this point in the history
* Add libdefs for pinojs v4

* Fix Pino v3 tests
  • Loading branch information
taylon authored and gantoine committed Nov 26, 2017
1 parent 614bf49 commit 3d0a9ee
Show file tree
Hide file tree
Showing 4 changed files with 245 additions and 39 deletions.
Expand Up @@ -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 =
Expand All @@ -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?: {
Expand Down
4 changes: 3 additions & 1 deletion 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);
Expand Down
170 changes: 170 additions & 0 deletions 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;
}
34 changes: 34 additions & 0 deletions 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");

0 comments on commit 3d0a9ee

Please sign in to comment.