From 414271c80430de766e89aff6b89efa2a19b3fac4 Mon Sep 17 00:00:00 2001 From: Jonathan Stewmon Date: Thu, 24 Jan 2019 10:20:31 -0600 Subject: [PATCH] update pino-http and koa-pino-logger signatures to match documented APIs --- types/koa-pino-logger/index.d.ts | 17 +++++------------ types/koa-pino-logger/koa-pino-logger-tests.ts | 4 ++++ types/pino-http/index.d.ts | 12 +++++++++--- types/pino-http/pino-http-tests.ts | 4 ++++ types/pino/index.d.ts | 5 +++-- 5 files changed, 25 insertions(+), 17 deletions(-) diff --git a/types/koa-pino-logger/index.d.ts b/types/koa-pino-logger/index.d.ts index 24f59b8925..04eea930ce 100644 --- a/types/koa-pino-logger/index.d.ts +++ b/types/koa-pino-logger/index.d.ts @@ -7,25 +7,18 @@ /// import { Middleware } from 'koa'; -import { LoggerOptions, Logger, Level } from 'pino'; +import { DestinationStream, LoggerOptions, Logger, Level } from 'pino'; +import { Options } from 'pino-http'; import * as stream from 'stream'; import * as http from 'http'; export = logger; declare function logger( - opts?: logger.HttpLoggerOptions, - stream?: stream.Writable | stream.Duplex | stream.Transform + opts?: Options, + stream?: DestinationStream ): Middleware; - -declare namespace logger { - interface HttpLoggerOptions extends LoggerOptions { - logger?: Logger; - genReqId?(req: http.IncomingMessage): number; - useLevel?: Level; - stream?: stream.Writable | stream.Duplex | stream.Transform; - } -} +declare function logger(stream?: DestinationStream): Middleware; declare module 'koa' { interface Context { diff --git a/types/koa-pino-logger/koa-pino-logger-tests.ts b/types/koa-pino-logger/koa-pino-logger-tests.ts index 5315ee5baa..e5b6514884 100644 --- a/types/koa-pino-logger/koa-pino-logger-tests.ts +++ b/types/koa-pino-logger/koa-pino-logger-tests.ts @@ -1,8 +1,12 @@ import koa = require('koa'); import logger = require('koa-pino-logger'); +import { Writable } from 'stream'; const app = new koa(); app.use(logger()); +app.use(logger(new Writable())); +app.use(logger({stream: new Writable()})); +app.use(logger({genReqId: () => 'foo'})); app.use((ctx) => { ctx.log.info('something else'); diff --git a/types/pino-http/index.d.ts b/types/pino-http/index.d.ts index a93abf406f..54ac4e9149 100644 --- a/types/pino-http/index.d.ts +++ b/types/pino-http/index.d.ts @@ -5,19 +5,25 @@ // TypeScript Version: 2.3 import { IncomingMessage, ServerResponse } from 'http'; -import { Level, Logger, LoggerOptions } from 'pino'; +import { DestinationStream, Level, Logger, LoggerOptions } from 'pino'; export = PinoHttp; -declare function PinoHttp(opts?: PinoHttp.Options): PinoHttp.HttpLogger; +declare function PinoHttp(opts?: PinoHttp.Options, stream?: DestinationStream): PinoHttp.HttpLogger; +declare function PinoHttp(stream?: DestinationStream): PinoHttp.HttpLogger; declare namespace PinoHttp { type HttpLogger = (req: IncomingMessage, res: ServerResponse) => void; interface Options extends LoggerOptions { logger?: Logger; - genReqId?: (req: IncomingMessage) => number; + genReqId?: GenReqId; useLevel?: Level; + stream?: DestinationStream; + } + + interface GenReqId { + (req: IncomingMessage): number | string | object; } } diff --git a/types/pino-http/pino-http-tests.ts b/types/pino-http/pino-http-tests.ts index 96207c8d9d..8a86bf08e8 100644 --- a/types/pino-http/pino-http-tests.ts +++ b/types/pino-http/pino-http-tests.ts @@ -1,6 +1,7 @@ import http = require('http'); import pino = require('pino'); import pinoHttp = require('pino-http'); +import { Writable } from 'stream'; const logger = pino(); const httpLogger = pinoHttp(); @@ -12,5 +13,8 @@ function handle(req: http.IncomingMessage, res: http.ServerResponse) { pinoHttp({ logger }); pinoHttp({ genReqId: (req) => req.statusCode || 200 }); +pinoHttp({ genReqId: (req) => 'foo' }); +pinoHttp({ genReqId: (req) => Buffer.allocUnsafe(16) }); pinoHttp({ useLevel: 'error' }); pinoHttp({ prettyPrint: true }); +pinoHttp(new Writable()); diff --git a/types/pino/index.d.ts b/types/pino/index.d.ts index 8efaa85d33..28a385cb35 100644 --- a/types/pino/index.d.ts +++ b/types/pino/index.d.ts @@ -23,7 +23,7 @@ export = P; * relative protocol is enabled. Default: process.stdout * @returns a new logger instance. */ -declare function P(optionsOrStream?: P.LoggerOptions | stream.Writable | stream.Duplex | stream.Transform | NodeJS.WritableStream | SonicBoom): P.Logger; +declare function P(optionsOrStream?: P.LoggerOptions | P.DestinationStream): P.Logger; /** * @param [options]: an options object @@ -31,7 +31,7 @@ declare function P(optionsOrStream?: P.LoggerOptions | stream.Writable | stream. * relative protocol is enabled. Default: process.stdout * @returns a new logger instance. */ -declare function P(options: P.LoggerOptions, stream: stream.Writable | stream.Duplex | stream.Transform | NodeJS.WritableStream | SonicBoom): P.Logger; +declare function P(options: P.LoggerOptions, stream: P.DestinationStream): P.Logger; declare namespace P { /** @@ -127,6 +127,7 @@ declare namespace P { labels: { [level: number]: string; }; } type TimeFn = () => string; + type DestinationStream = stream.Writable | stream.Duplex | stream.Transform | NodeJS.WritableStream | SonicBoom; interface LoggerOptions { /**