123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 |
- // Type definitions for logform 2.x
- // Project: https://github.com/winstonjs/logform
- // Definitions by: DABH <https://github.com/DABH>
- // Definitions: https://github.com/winstonjs/logform
- // TypeScript Version: 2.2
- import {LEVEL, MESSAGE, SPLAT} from 'triple-beam'
- export interface TransformableInfo {
- level: string;
- message: any;
- [LEVEL]?: string;
- [MESSAGE]?: any;
- [SPLAT]?: any;
- [key: string | symbol]: any;
- }
- export type TransformFunction = (info: TransformableInfo, opts?: any) => TransformableInfo | boolean;
- export type Colors = { [key: string]: string | string[] }; // tslint:disable-line interface-over-type-literal
- export type FormatWrap = (opts?: any) => Format;
- export class Format {
- constructor(opts?: object);
- options?: object;
- transform: TransformFunction;
- }
- export class Colorizer extends Format {
- constructor(opts?: object);
- createColorize: (opts?: object) => Colorizer;
- addColors: (colors: Colors) => Colors;
- colorize: (level: string, message: string) => string;
- }
- export function format(transform: TransformFunction): FormatWrap;
- export function levels(config: object): object;
- export namespace format {
- function align(): Format;
- function cli(opts?: CliOptions): Format;
- function colorize(opts?: ColorizeOptions): Colorizer;
- function combine(...formats: Format[]): Format;
- function errors(opts?: object): Format;
- function json(opts?: JsonOptions): Format;
- function label(opts?: LabelOptions): Format;
- function logstash(): Format;
- function metadata(opts?: MetadataOptions): Format;
- function ms(): Format;
- function padLevels(opts?: PadLevelsOptions): Format;
- function prettyPrint(opts?: PrettyPrintOptions): Format;
- function printf(templateFunction: (info: TransformableInfo) => string): Format;
- function simple(): Format;
- function splat(): Format;
- function timestamp(opts?: TimestampOptions): Format;
- function uncolorize(opts?: UncolorizeOptions): Format;
- }
- export interface CliOptions extends ColorizeOptions, PadLevelsOptions { }
- export interface ColorizeOptions {
- /**
- * If set to `true` the color will be applied to the `level`.
- */
- level?: boolean;
- /**
- * If set to `true` the color will be applied to the `message` and `level`.
- */
- all?: boolean;
- /**
- * If set to `true` the color will be applied to the `message`.
- */
- message?: boolean;
- /**
- * An object containing the colors for the log levels. For example: `{ info: 'blue', error: 'red' }`.
- */
- colors?: Record<string, string>;
- }
- export interface JsonOptions {
- /**
- * A function that influences how the `info` is stringified.
- */
- replacer?: (this: any, key: string, value: any) => any;
- /**
- * The number of white space used to format the json.
- */
- space?: number;
- // The following options come from safe-stable-stringify
- // https://github.com/BridgeAR/safe-stable-stringify/blob/main/index.d.ts
- /**
- * If `true`, bigint values are converted to a number. Otherwise, they are ignored.
- * This option is ignored by default as Logform stringifies BigInt in the default replacer.
- * @default true
- */
- bigint?: boolean,
- /**
- * Defines the value for circular references.
- * Set to `undefined`, circular properties are not serialized (array entries are replaced with null).
- * Set to `Error`, to throw on circular references.
- * @default "[Circular]"
- */
- circularValue?: string | null | TypeErrorConstructor | ErrorConstructor,
- /**
- * If `true`, guarantee a deterministic key order instead of relying on the insertion order.
- * @default true
- */
- deterministic?: boolean,
- /**
- * Maximum number of entries to serialize per object (at least one).
- * The serialized output contains information about how many entries have not been serialized.
- * Ignored properties are counted as well (e.g., properties with symbol values).
- * Using the array replacer overrules this option.
- * @default Infinity
- */
- maximumBreadth?: number,
- /**
- * Maximum number of object nesting levels (at least 1) that will be serialized.
- * Objects at the maximum level are serialized as `"[Object]"` and arrays as `"[Array]"`.
- * @default Infinity
- */
- maximumDepth?: number,
- }
- export interface LabelOptions {
- /**
- * A label to be added before the message.
- */
- label?: string;
- /**
- * If set to `true` the `label` will be added to `info.message`. If set to `false` the `label`
- * will be added as `info.label`.
- */
- message?: boolean;
- }
- export interface MetadataOptions {
- /**
- * The name of the key used for the metadata object. Defaults to `metadata`.
- */
- key?: string;
- /**
- * An array of keys that should not be added to the metadata object.
- */
- fillExcept?: string[];
- /**
- * An array of keys that will be added to the metadata object.
- */
- fillWith?: string[];
- }
- export interface PadLevelsOptions {
- /**
- * Log levels. Defaults to `configs.npm.levels` from [triple-beam](https://github.com/winstonjs/triple-beam)
- * module.
- */
- levels?: Record<string, number>;
- }
- export interface PrettyPrintOptions {
- /**
- * A `number` that specifies the maximum depth of the `info` object being stringified by
- * `util.inspect`. Defaults to `2`.
- */
- depth?: number;
- /**
- * Colorizes the message if set to `true`. Defaults to `false`.
- */
- colorize?: boolean;
- }
- export interface TimestampOptions {
- /**
- * Either the format as a string accepted by the [fecha](https://github.com/taylorhakes/fecha)
- * module or a function that returns a formatted date. If no format is provided `new
- * Date().toISOString()` will be used.
- */
- format?: string | (() => string);
- /**
- * The name of an alias for the timestamp property, that will be added to the `info` object.
- */
- alias?: string;
- }
- export interface UncolorizeOptions {
- /**
- * Disables the uncolorize format for `info.level` if set to `false`.
- */
- level?: boolean;
- /**
- * Disables the uncolorize format for `info.message` if set to `false`.
- */
- message?: boolean;
- /**
- * Disables the uncolorize format for `info[MESSAGE]` if set to `false`.
- */
- raw?: boolean;
- }
|