Files
memecoin-botV2/.pnpm-store/v10/files/de/94bfbfcafbf67055022562aab1fa81de08641c1e3de7de6a1390187a3373e40328421d317ed8b578d511782bb07e3c514ffd5b56402650c2d76005188fcf3d

76 lines
2.2 KiB
Plaintext

import { expectAssignable, expectType, expectNotAssignable } from 'tsd'
import pino from '../../'
import type {
LevelWithSilent,
Logger,
LogFn,
DestinationStreamWithMetadata,
Level,
LevelOrString,
LevelWithSilentOrString,
LoggerExtras,
LoggerOptions,
} from '../../pino'
// NB: can also use `import * as pino`, but that form is callable as `pino()`
// under `esModuleInterop: false` or `pino.default()` under `esModuleInterop: true`.
const log = pino()
expectAssignable<LoggerExtras>(log)
expectType<Logger>(log)
expectType<LogFn>(log.info)
expectType<Parameters<typeof log.isLevelEnabled>>([log.level])
const level: Level = 'debug'
expectAssignable<string>(level)
const levelWithSilent: LevelWithSilent = 'silent'
expectAssignable<string>(levelWithSilent)
const levelOrString: LevelOrString = 'myCustomLevel'
expectAssignable<string>(levelOrString)
expectNotAssignable<pino.Level>(levelOrString)
expectNotAssignable<pino.LevelWithSilent>(levelOrString)
expectAssignable<pino.LevelWithSilentOrString>(levelOrString)
const levelWithSilentOrString: LevelWithSilentOrString = 'myCustomLevel'
expectAssignable<string>(levelWithSilentOrString)
expectNotAssignable<pino.Level>(levelWithSilentOrString)
expectNotAssignable<pino.LevelWithSilent>(levelWithSilentOrString)
expectAssignable<pino.LevelOrString>(levelWithSilentOrString)
function createStream (): DestinationStreamWithMetadata {
return { write () {} }
}
const stream = createStream()
// Argh. TypeScript doesn't seem to narrow unless we assign the symbol like so, and tsd seems to
// break without annotating the type explicitly
const needsMetadata: typeof pino.symbols.needsMetadataGsym = pino.symbols.needsMetadataGsym
if (stream[needsMetadata]) {
expectType<number>(stream.lastLevel)
}
const loggerOptions: LoggerOptions = {
browser: {
formatters: {
log (obj) {
return obj
},
level (label, number) {
return { label, number }
},
},
},
}
expectType<LoggerOptions>(loggerOptions)
// Reference: https://github.com/pinojs/pino/issues/2285
const someConst = 'test' as const
pino().error({}, someConst)
const someFunc = <T extends typeof someConst>(someConst: T) => {
pino().error({}, someConst)
}