From 7a4e2598fab01f046337c6cc3c91c06adb183cdf Mon Sep 17 00:00:00 2001 From: Luke Grunau Date: Mon, 8 Nov 2021 11:37:25 +0100 Subject: [PATCH 1/8] Add type declarations --- index.d.ts | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 index.d.ts diff --git a/index.d.ts b/index.d.ts new file mode 100644 index 0000000..a1929aa --- /dev/null +++ b/index.d.ts @@ -0,0 +1,61 @@ +// Type definitions for hapi-pino 8.0 +// Project: https://github.com/pinojs/hapi-pino#readme +// Definitions by: Rodrigo Saboya +// Todd Bealmear +// Matt Jeanes +// Kyle Gray +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.8 + +/// + +import type { pino } from 'pino'; + +import { Plugin, Request } from '@hapi/hapi'; + +declare module '@hapi/hapi' { + interface Server { + logger: pino.Logger; + } + + interface Request { + logger: pino.Logger; + } +} + +declare namespace HapiPino { + interface Serializers { + [key: string]: pino.SerializerFn; + } + + interface Options { + timestamp?: boolean | (() => string) | undefined; + logQueryParams?: boolean | undefined; + logPayload?: boolean | undefined; + logRouteTags?: boolean | undefined; + logRequestStart?: boolean | ((req: Request) => boolean) | undefined; + logRequestComplete?: boolean | ((req: Request) => boolean) | undefined; + stream?: NodeJS.WriteStream | undefined; + prettyPrint?: boolean | pino.PrettyOptions | undefined; + tags?: { [key in pino.Level]?: string } | undefined; + allTags?: pino.Level | undefined; + serializers?: Serializers | undefined; + getChildBindings?: + | ((req: Request) => { + level?: pino.Level | string | undefined; + serializers?: Serializers | undefined; + [key: string]: any; + }) + | undefined; + instance?: pino.Logger | undefined; + logEvents?: string[] | false | null | undefined; + mergeHapiLogData?: boolean | undefined; + ignorePaths?: string[] | undefined; + level?: pino.Level | undefined; + redact?: string[] | pino.redactOptions | undefined; + } +} + +declare var HapiPino: Plugin; + +export = HapiPino; From 15626fd59c6b046134b9dac5776aca7154fc8973 Mon Sep 17 00:00:00 2001 From: Luke Grunau Date: Mon, 8 Nov 2021 12:00:01 +0100 Subject: [PATCH 2/8] Add types field in package.json --- index.d.ts | 2 +- package.json | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/index.d.ts b/index.d.ts index a1929aa..616aa4a 100644 --- a/index.d.ts +++ b/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for hapi-pino 8.0 +// Type definitions for hapi-pino 9.0 // Project: https://github.com/pinojs/hapi-pino#readme // Definitions by: Rodrigo Saboya // Todd Bealmear diff --git a/package.json b/package.json index b783dd1..d8b2f59 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "version": "9.0.0", "description": "Hapi plugin for the Pino logger ", "main": "index.js", + "types": "index.d.ts", "scripts": { "coverage": "lab test.js -c", "coverage:lcov": "lab test.js -r lcov -o coverage/lcov.info", From 1e17bb23df06451880910fe45b55b8328a8ce3f0 Mon Sep 17 00:00:00 2001 From: Luke Grunau Date: Mon, 8 Nov 2021 12:13:43 +0100 Subject: [PATCH 3/8] Remove DefinitelyTyped url --- index.d.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/index.d.ts b/index.d.ts index 616aa4a..e8f3705 100644 --- a/index.d.ts +++ b/index.d.ts @@ -1,10 +1,8 @@ // Type definitions for hapi-pino 9.0 -// Project: https://github.com/pinojs/hapi-pino#readme // Definitions by: Rodrigo Saboya // Todd Bealmear // Matt Jeanes // Kyle Gray -// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.8 /// From a1cc41e0f9d217bc863af923d9db4ec3ab8da5ca Mon Sep 17 00:00:00 2001 From: Luke Grunau Date: Mon, 8 Nov 2021 12:48:26 +0100 Subject: [PATCH 4/8] Add new options --- index.d.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/index.d.ts b/index.d.ts index e8f3705..c3fe877 100644 --- a/index.d.ts +++ b/index.d.ts @@ -51,6 +51,9 @@ declare namespace HapiPino { ignorePaths?: string[] | undefined; level?: pino.Level | undefined; redact?: string[] | pino.redactOptions | undefined; + ignoreTags?: string[] | undefined; + ignoreFunc?: ((options: Options, request: Request) => boolean) | undefined; + ignoredEventTags?: object[] | undefined; } } From f6b236826067f547a73d47b30790a5c88fd85a49 Mon Sep 17 00:00:00 2001 From: Luke Grunau Date: Mon, 8 Nov 2021 15:26:07 +0100 Subject: [PATCH 5/8] Adds test for types --- index.test-d.ts | 45 +++++++++++++++++++++++++++++++++++++++++++++ package.json | 7 +++++-- 2 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 index.test-d.ts diff --git a/index.test-d.ts b/index.test-d.ts new file mode 100644 index 0000000..2612435 --- /dev/null +++ b/index.test-d.ts @@ -0,0 +1,45 @@ +import { Request, Server } from '@hapi/hapi'; +import pino from 'pino'; +import * as HapiPino from '.'; +import { expectType } from 'tsd'; + +const pinoLogger = pino(); + +const server = new Server(); + +const options: HapiPino.Options = { + timestamp: () => `,"time":"${new Date(Date.now()).toISOString()}"`, + logQueryParams: false, + logPayload: false, + logRouteTags: false, + logRequestStart: false, + logRequestComplete: true, + stream: process.stdout, + prettyPrint: process.env.NODE_ENV !== 'PRODUCTION', + tags: { + trace: 'trace', + debug: 'debug', + info: 'info', + warn: 'warn', + error: 'error', + fatal: 'fatal', + }, + allTags: 'info', + serializers: { + req: (req: any) => console.log(req), + }, + getChildBindings: (req: Request) => ({ + 'x-request-id': req.headers['x-request-id'], + }), + instance: pinoLogger, + logEvents: false, + mergeHapiLogData: false, + ignorePaths: ['/testRoute'], + level: 'debug', + redact: ['test.property'], + ignoreTags: ['healthcheck'], + ignoreFunc: (options, request) => request.path.startsWith('/static'), + ignoredEventTags: [{ log: ['DEBUG', 'TEST'], request: ['DEBUG', 'TEST'] }], +}; + +expectType>(server.register({ plugin: HapiPino, options })); diff --git a/package.json b/package.json index d8b2f59..31df5b8 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,8 @@ "coverage": "lab test.js -c", "coverage:lcov": "lab test.js -r lcov -o coverage/lcov.info", "coveralls": "lab test.js -r lcov | coveralls", - "test": "standard && lab --timeout 100000 test.js" + "test": "standard && lab --timeout 100000 test.js", + "test-types": "tsd" }, "keywords": [ "hapi", @@ -28,10 +29,12 @@ "make-promises-safe": "^5.1.0", "pre-commit": "^1.2.2", "split2": "^3.1.1", - "standard": "^14.3.3" + "standard": "^14.3.3", + "tsd": "^0.18.0" }, "dependencies": { "@hapi/hoek": "^9.0.0", + "@types/hapi__hapi": "^20.0.9", "abstract-logging": "^2.0.0", "get-caller-file": "^2.0.5", "pino": "^7.0.0", From 4462d99030541042794731ce8571450e64ed1168 Mon Sep 17 00:00:00 2001 From: Luke Grunau Date: Mon, 8 Nov 2021 17:26:04 +0100 Subject: [PATCH 6/8] No need to redeclare module --- index.d.ts | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/index.d.ts b/index.d.ts index c3fe877..108fa8a 100644 --- a/index.d.ts +++ b/index.d.ts @@ -11,16 +11,6 @@ import type { pino } from 'pino'; import { Plugin, Request } from '@hapi/hapi'; -declare module '@hapi/hapi' { - interface Server { - logger: pino.Logger; - } - - interface Request { - logger: pino.Logger; - } -} - declare namespace HapiPino { interface Serializers { [key: string]: pino.SerializerFn; From 85a901b515913acca551a907131964fe60a68304 Mon Sep 17 00:00:00 2001 From: Luke Grunau Date: Mon, 8 Nov 2021 17:40:21 +0100 Subject: [PATCH 7/8] Revert "No need to redeclare module" This reverts commit 4462d99030541042794731ce8571450e64ed1168. --- index.d.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/index.d.ts b/index.d.ts index 108fa8a..c3fe877 100644 --- a/index.d.ts +++ b/index.d.ts @@ -11,6 +11,16 @@ import type { pino } from 'pino'; import { Plugin, Request } from '@hapi/hapi'; +declare module '@hapi/hapi' { + interface Server { + logger: pino.Logger; + } + + interface Request { + logger: pino.Logger; + } +} + declare namespace HapiPino { interface Serializers { [key: string]: pino.SerializerFn; From 1369e116328a4ef5d4114265ecbbbbe81b8f3591 Mon Sep 17 00:00:00 2001 From: Luke Grunau Date: Wed, 10 Nov 2021 14:51:30 +0100 Subject: [PATCH 8/8] Include types test in CI --- package.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/package.json b/package.json index 31df5b8..cfbfd8c 100644 --- a/package.json +++ b/package.json @@ -8,8 +8,7 @@ "coverage": "lab test.js -c", "coverage:lcov": "lab test.js -r lcov -o coverage/lcov.info", "coveralls": "lab test.js -r lcov | coveralls", - "test": "standard && lab --timeout 100000 test.js", - "test-types": "tsd" + "test": "standard && lab --timeout 100000 test.js && tsd" }, "keywords": [ "hapi",