@sapphire/plugin-logger
Version:
Plugin for @sapphire/framework to have pretty console output
1 lines • 3.07 kB
Source Map (JSON)
{"version":3,"sources":["../../../src/lib/LoggerLevel.ts"],"names":[],"mappings":";;;;AAOO,IAAM,YAAA,GAAN,MAAM,YAAY,CAAA;AAAA,EAmBjB,WAAA,CAAY,OAA8B,GAAA,EAAI,EAAA;AAdrD;AAAA;AAAA;AAAA;AAAA,IAAO,aAAA,CAAA,IAAA,EAAA,WAAA,CAAA;AAMP;AAAA;AAAA;AAAA;AAAA,IAAO,aAAA,CAAA,IAAA,EAAA,OAAA,CAAA;AAMP;AAAA;AAAA;AAAA;AAAA,IAAO,aAAA,CAAA,IAAA,EAAA,SAAA,CAAA;AAGN,IAAK,IAAA,CAAA,SAAA,GAAY,QAAQ,SAAc,KAAA,IAAA,GAAO,OAAO,IAAI,eAAA,CAAgB,QAAQ,SAAS,CAAA;AAC1F,IAAK,IAAA,CAAA,KAAA,GAAQ,QAAQ,KAAS,IAAA,EAAA;AAC9B,IAAK,IAAA,CAAA,OAAA,GAAU,QAAQ,OAAY,KAAA,IAAA,GAAO,OAAO,IAAI,WAAA,CAAY,QAAQ,OAAO,CAAA;AAAA;AACjF,EAEO,IAAI,OAAiB,EAAA;AAC3B,IAAA,MAAM,UAAU,IAAK,CAAA,SAAA,EAAW,GAAI,EAAA,IAAK,MAAM,IAAK,CAAA,KAAA;AAEpD,IAAA,IAAI,OAAO,MAAQ,EAAA;AAClB,MAAA,MAAM,SAAY,GAAA,IAAA,CAAK,OACpB,GAAA,CAAC,IAAiB,KAAA,MAAA,GAAS,IAAK,CAAA,OAAA,CAAS,GAAI,CAAA,IAAI,CACjD,GAAA,CAAC,SAAiB,MAAS,GAAA,IAAA;AAC9B,MAAO,OAAA,OAAA,CAAQ,MAAM,IAAI,CAAA,CAAE,IAAI,SAAS,CAAA,CAAE,KAAK,IAAI,CAAA;AAAA;AAGpD,IAAA,OAAO,KAAK,OAAU,GAAA,IAAA,CAAK,OAAQ,CAAA,GAAA,CAAI,OAAO,CAAI,GAAA,OAAA;AAAA;AAEpD,CAAA;AArCyB,MAAA,CAAA,YAAA,EAAA,aAAA,CAAA;AAAlB,IAAM,WAAN,GAAA","file":"LoggerLevel.mjs","sourcesContent":["import { LoggerStyle, type LoggerStyleResolvable } from './LoggerStyle';\nimport { LoggerTimestamp, type LoggerTimestampOptions } from './LoggerTimestamp';\n\n/**\n * Logger utility that stores and applies a full style into the message.\n * @since 1.0.0\n */\nexport class LoggerLevel {\n\t/**\n\t * The timestamp formatter.\n\t * @since 1.0.0\n\t */\n\tpublic timestamp: LoggerTimestamp | null;\n\n\t/**\n\t * The infix, added between the timestamp and the message.\n\t * @since 1.0.0\n\t */\n\tpublic infix: string;\n\n\t/**\n\t * The style formatter for the message.\n\t * @since 1.0.0\n\t */\n\tpublic message: LoggerStyle | null;\n\n\tpublic constructor(options: LoggerLevelOptions = {}) {\n\t\tthis.timestamp = options.timestamp === null ? null : new LoggerTimestamp(options.timestamp);\n\t\tthis.infix = options.infix ?? '';\n\t\tthis.message = options.message === null ? null : new LoggerStyle(options.message);\n\t}\n\n\tpublic run(content: string) {\n\t\tconst prefix = (this.timestamp?.run() ?? '') + this.infix;\n\n\t\tif (prefix.length) {\n\t\t\tconst formatter = this.message //\n\t\t\t\t? (line: string) => prefix + this.message!.run(line)\n\t\t\t\t: (line: string) => prefix + line;\n\t\t\treturn content.split('\\n').map(formatter).join('\\n');\n\t\t}\n\n\t\treturn this.message ? this.message.run(content) : content;\n\t}\n}\n\n/**\n * The options for {@link LoggerLevel}.\n * @since 1.0.0\n */\nexport interface LoggerLevelOptions {\n\t/**\n\t * The timestamp options. Set to `null` to disable timestamp parsing.\n\t * @since 1.0.0\n\t * @default {}\n\t */\n\ttimestamp?: LoggerTimestampOptions | null;\n\n\t/**\n\t * The infix to be included between the timestamp and the message.\n\t * @since 1.0.0\n\t * @default ''\n\t */\n\tinfix?: string;\n\n\t/**\n\t * The style options for the message.\n\t * @since 1.0.0\n\t * @default colorette.clear\n\t */\n\tmessage?: LoggerStyleResolvable | null;\n}\n"]}