Skip to content

Commit

Permalink
Fix types for pino.multistream (#1152)
Browse files Browse the repository at this point in the history
  • Loading branch information
clemyan committed Oct 14, 2021
1 parent b38ea14 commit fc291b7
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 4 deletions.
9 changes: 5 additions & 4 deletions pino.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -232,21 +232,22 @@ declare namespace P {
}

interface StreamEntry {
stream: WriteStream
level: Level
stream: DestinationStream
level?: Level
}

interface MultiStreamRes {
write: (data: any) => void,
add: (dest: Record<string, any>) => MultiStreamRes,
flushSync: () => void,
minLevel: number,
streams: WriteStream[],
streams: ({ stream: DestinationStream, level: number, id: number })[],
clone(level: Level): MultiStreamRes,
}

function multistream(
streamsArray: StreamEntry[], opts: P.MultiStreamOptions
streamsArray: (DestinationStream | StreamEntry)[] | DestinationStream | StreamEntry,
opts?: P.MultiStreamOptions
): MultiStreamRes

/**
Expand Down
22 changes: 22 additions & 0 deletions test/types/pino-multistream.test-d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import { expectType } from 'tsd'

import { createWriteStream } from 'fs'

import pino from '../../pino'

const streams = [
{ stream: process.stdout },
{ stream: createWriteStream('') },
{ level: 'error' as const, stream: process.stderr },
{ level: 'fatal' as const, stream: createWriteStream('') }
]

expectType<pino.MultiStreamRes>(pino.multistream(process.stdout))
expectType<pino.MultiStreamRes>(pino.multistream([createWriteStream('')]))
expectType<pino.MultiStreamRes>(pino.multistream({ level: 'error' as const, stream: process.stderr }))
expectType<pino.MultiStreamRes>(pino.multistream([{ level: 'fatal' as const, stream: createWriteStream('') }]))

expectType<pino.MultiStreamRes>(pino.multistream(streams))
expectType<pino.MultiStreamRes>(pino.multistream(streams, {}))
expectType<pino.MultiStreamRes>(pino.multistream(streams, { levels: { 'info': 30 } }))
expectType<pino.MultiStreamRes>(pino.multistream(streams, { dedupe: true }))

0 comments on commit fc291b7

Please sign in to comment.