Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | import type { format as FormatFunc, TransformFunction } from './type' /* * Displays a helpful message and the source of * the format when it is invalid. */ class InvalidFormatError extends Error { // eslint-disable-next-line ts/no-unsafe-function-type constructor(formatFn: Function) { super(`Format functions must be synchronous taking two arguments: (info, opts) Found: ${formatFn.toString().split('\n')[0]}\n`) Error.captureStackTrace(this, InvalidFormatError) } } /* * function format (formatFn) * Returns a create function for the `formatFn`. */ const format = function<T extends Record<any, any>>(formatFn: TransformFunction<T>) { if (formatFn.length > 2) { throw new InvalidFormatError(formatFn) } /* * function Format (options) * Base prototype which calls a `_format` * function and pushes the result. */ class Format { options?: T constructor(options: T = {} as T) { this.options = options } transform = formatFn } // // Create a function which returns new instances of // Format for simple syntax like: // // require('winston').formats.json(); // function createFormatWrap(opts?: T) { return new Format(opts) } // // Expose the Format through the create function // for testability. // createFormatWrap.Format = Format return createFormatWrap } export default format as unknown as FormatFunc |